From b544cf610f94819261cedde522c9a9b3e87ee0ec Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Tue, 6 May 2025 12:43:33 +0300 Subject: [PATCH 001/206] extend features flags config values --- config/config.devnet.yaml | 4 +- config/config.e2e.mainnet.yaml | 2 +- config/config.mainnet.yaml | 4 +- config/config.testnet.yaml | 4 +- src/common/api-config/api.config.service.ts | 4 +- .../network/entities/feature.configs.ts | 71 ++++++++++++++++++- src/endpoints/network/network.service.ts | 23 ++++++ 7 files changed, 103 insertions(+), 9 deletions(-) diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index b803ef587..440a096ea 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -51,7 +51,7 @@ features: serviceUrl: 'https://devnet-data-api.multiversx.com' assetsFetch: enabled: true - assetesUrl: 'https://tools.multiversx.com/assets-cdn' + assetsUrl: 'https://tools.multiversx.com/assets-cdn' mediaRedirect: enabled: false storageUrls: @@ -112,7 +112,7 @@ features: enabled: true serviceUrl: 'https://devnet-api.multiversx.com' tokensFetch: - enabled: true + enabled: false serviceUrl: 'https://devnet-api.multiversx.com' providersFetch: enabled: true diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index 93c9cbef2..d48cca200 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -116,7 +116,7 @@ features: serviceUrl: 'https://api.multiversx.com' assetsFetch: enabled: false - assetesUrl: 'https://tools.multiversx.com/assets-cdn' + asseteUrl: 'https://tools.multiversx.com/assets-cdn' image: width: 600 height: 600 diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index 5f24c6425..65b54f0c5 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -109,14 +109,14 @@ features: enabled: true serviceUrl: 'https://api.multiversx.com' tokensFetch: - enabled: true + enabled: false serviceUrl: 'https://api.multiversx.com' providersFetch: enabled: true serviceUrl: 'https://api.multiversx.com' assetsFetch: enabled: true - assetesUrl: 'https://tools.multiversx.com/assets-cdn' + assetsUrl: 'https://tools.multiversx.com/assets-cdn' mediaRedirect: enabled: false storageUrls: diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index 74522e9b8..7261a3200 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -108,14 +108,14 @@ features: enabled: true serviceUrl: 'https://testnet-api.multiversx.com' tokensFetch: - enabled: true + enabled: false serviceUrl: 'https://testnet-api.multiversx.com' providersFetch: enabled: true serviceUrl: 'https://testnet-api.multiversx.com' assetsFetch: enabled: true - assetesUrl: 'https://tools.multiversx.com/assets-cdn' + assetsUrl: 'https://tools.multiversx.com/assets-cdn' mediaRedirect: enabled: false storageUrls: diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index 99171e749..b06612bbf 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -893,7 +893,9 @@ export class ApiConfigService { } getAssetsCdnUrl(): string { - return this.configService.get('features.assetsFetch.assetesUrl') ?? 'https://tools.multiversx.com/assets-cdn'; + return this.configService.get('features.assetsFetch.assetsUrl') + ?? this.configService.get('features.assetsFetch.assetesUrl') + ?? 'https://tools.multiversx.com/assets-cdn'; } isTokensFetchFeatureEnabled(): boolean { diff --git a/src/endpoints/network/entities/feature.configs.ts b/src/endpoints/network/entities/feature.configs.ts index cbd9692c9..2eb25ac28 100644 --- a/src/endpoints/network/entities/feature.configs.ts +++ b/src/endpoints/network/entities/feature.configs.ts @@ -5,15 +5,84 @@ export class FeatureConfigs { Object.assign(this, init); } + @ApiProperty({ description: 'Events notifier flag activation value' }) + eventsNotifier: boolean = false; + + @ApiProperty({ description: 'Guest caching flag activation value' }) + guestCaching: boolean = false; + + @ApiProperty({ description: 'Transaction pool flag activation value' }) + transactionPool: boolean = false; + + @ApiProperty({ description: 'Transaction pool warmer flag activation value' }) + transactionPoolWarmer: boolean = false; + @ApiProperty({ description: 'Update Collection extra details flag activation value' }) updateCollectionExtraDetails: boolean = false; + @ApiProperty({ description: 'Accounts extra details update flag activation value' }) + updateAccountsExtraDetails: boolean = false; + @ApiProperty({ description: 'Marketplace flag activation value' }) marketplace: boolean = false; @ApiProperty({ description: 'Exchange flag activation value' }) exchange: boolean = false; - @ApiProperty({ description: 'DataApi flag activation value' }) + @ApiProperty({ description: 'Data API flag activation value' }) dataApi: boolean = false; + + @ApiProperty({ description: 'Authentication flag activation value' }) + auth: boolean = false; + + @ApiProperty({ description: 'Staking V4 flag activation value' }) + stakingV4: boolean = false; + + @ApiProperty({ description: 'Chain Andromeda flag activation value' }) + chainAndromeda: boolean = false; + + @ApiProperty({ description: 'Node epochs left flag activation value' }) + nodeEpochsLeft: boolean = false; + + @ApiProperty({ description: 'Transaction processor flag activation value' }) + transactionProcessor: boolean = false; + + @ApiProperty({ description: 'Transaction completed flag activation value' }) + transactionCompleted: boolean = false; + + @ApiProperty({ description: 'Transaction batch flag activation value' }) + transactionBatch: boolean = false; + + @ApiProperty({ description: 'Deep history flag activation value' }) + deepHistory: boolean = false; + + @ApiProperty({ description: 'Elastic circuit breaker flag activation value' }) + elasticCircuitBreaker: boolean = false; + + @ApiProperty({ description: 'Status checker flag activation value' }) + statusChecker: boolean = false; + + @ApiProperty({ description: 'NFT scam info flag activation value' }) + nftScamInfo: boolean = false; + + @ApiProperty({ description: 'NFT processing flag activation value' }) + processNfts: boolean = false; + + @ApiProperty({ description: 'TPS flag activation value' }) + tps: boolean = false; + + @ApiProperty({ description: 'Nodes fetch flag activation value' }) + nodesFetch: boolean = false; + + @ApiProperty({ description: 'Tokens fetch flag activation value' }) + tokensFetch: boolean = false; + + @ApiProperty({ description: 'Providers fetch flag activation value' }) + providersFetch: boolean = false; + + @ApiProperty({ description: 'Assets fetch flag activation value' }) + assetsFetch: boolean = false; + + @ApiProperty({ description: 'Media redirect flag activation value' }) + mediaRedirect: boolean = false; } diff --git a/src/endpoints/network/network.service.ts b/src/endpoints/network/network.service.ts index 91a30ca6e..1a6354a6b 100644 --- a/src/endpoints/network/network.service.ts +++ b/src/endpoints/network/network.service.ts @@ -312,10 +312,33 @@ export class NetworkService { } const features = new FeatureConfigs({ + eventsNotifier: this.apiConfigService.isEventsNotifierFeatureActive(), + guestCaching: this.apiConfigService.isGuestCacheFeatureActive(), + transactionPool: this.apiConfigService.isTransactionPoolEnabled(), + transactionPoolWarmer: this.apiConfigService.getIsCacheWarmerCronActive(), updateCollectionExtraDetails: this.apiConfigService.isUpdateCollectionExtraDetailsEnabled(), + updateAccountsExtraDetails: this.apiConfigService.isUpdateAccountExtraDetailsEnabled(), marketplace: this.apiConfigService.isMarketplaceFeatureEnabled(), exchange: this.apiConfigService.isExchangeEnabled(), dataApi: this.apiConfigService.isDataApiFeatureEnabled(), + auth: this.apiConfigService.getIsAuthActive(), + stakingV4: this.apiConfigService.isStakingV4Enabled(), + chainAndromeda: this.apiConfigService.isChainAndromedaEnabled(), + nodeEpochsLeft: this.apiConfigService.isNodeEpochsLeftEnabled(), + transactionProcessor: this.apiConfigService.getIsTransactionProcessorCronActive(), + transactionCompleted: this.apiConfigService.getIsTransactionCompletedCronActive(), + transactionBatch: this.apiConfigService.getIsTransactionBatchCronActive(), + deepHistory: this.apiConfigService.isDeepHistoryGatewayEnabled(), + elasticCircuitBreaker: this.apiConfigService.isElasticCircuitBreakerEnabled(), + statusChecker: this.apiConfigService.getIsApiStatusCheckerActive(), + nftScamInfo: this.apiConfigService.getIsNftScamInfoEnabled(), + processNfts: this.apiConfigService.getIsProcessNftsFlagActive(), + tps: this.apiConfigService.isTpsEnabled(), + nodesFetch: this.apiConfigService.isNodesFetchFeatureEnabled(), + tokensFetch: this.apiConfigService.isTokensFetchFeatureEnabled(), + providersFetch: this.apiConfigService.isProvidersFetchFeatureEnabled(), + assetsFetch: this.apiConfigService.isAssetsCdnFeatureEnabled(), + mediaRedirect: this.apiConfigService.isMediaRedirectFeatureEnabled(), }); let indexerVersion: string | undefined; From 07d9568db3b079cf109b7c45c5176ac2147be4f8 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Tue, 6 May 2025 12:51:44 +0300 Subject: [PATCH 002/206] fixes after review + test fix --- config/config.e2e.mainnet.yaml | 2 +- src/common/api-config/api.config.service.ts | 2 +- src/test/unit/controllers/network.controller.spec.ts | 7 +++++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index d48cca200..95bfe7003 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -116,7 +116,7 @@ features: serviceUrl: 'https://api.multiversx.com' assetsFetch: enabled: false - asseteUrl: 'https://tools.multiversx.com/assets-cdn' + assetsUrl: 'https://tools.multiversx.com/assets-cdn' image: width: 600 height: 600 diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index b06612bbf..fbedfd1f0 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -894,7 +894,7 @@ export class ApiConfigService { getAssetsCdnUrl(): string { return this.configService.get('features.assetsFetch.assetsUrl') - ?? this.configService.get('features.assetsFetch.assetesUrl') + ?? this.configService.get('features.assetsFetch.assetesUrl') // todo: remove this in the future ?? 'https://tools.multiversx.com/assets-cdn'; } diff --git a/src/test/unit/controllers/network.controller.spec.ts b/src/test/unit/controllers/network.controller.spec.ts index f902919a9..492684857 100644 --- a/src/test/unit/controllers/network.controller.spec.ts +++ b/src/test/unit/controllers/network.controller.spec.ts @@ -9,6 +9,7 @@ import request = require('supertest'); import { Economics } from "src/endpoints/network/entities/economics"; import { Stats } from "src/endpoints/network/entities/stats"; import { About } from "src/endpoints/network/entities/about"; +import { FeatureConfigs } from "../../../endpoints/network/entities/feature.configs"; describe("NetworkController", () => { let app: INestApplication; @@ -102,12 +103,14 @@ describe("NetworkController", () => { indexerVersion: "v1.4.19", gatewayVersion: "v1.1.44-0-g5282fa5", scamEngineVersion: "1.0.0", - features: { + features: new FeatureConfigs({ updateCollectionExtraDetails: true, marketplace: true, exchange: true, dataApi: true, - }, + tokensFetch: false, + providersFetch: true, + }), }; networkServiceMocks.getAbout.mockResolvedValue(mockAbout); From db8c4b1c62c305bb357884efbdb920d6a2d8a270 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 15 May 2025 15:25:33 +0300 Subject: [PATCH 003/206] set more default configs to false --- config/config.devnet.yaml | 4 ++-- config/config.mainnet.yaml | 4 ++-- config/config.testnet.yaml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index 440a096ea..1441a5f98 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -109,13 +109,13 @@ features: enabled: false maxLookBehindNonces: 100 nodesFetch: - enabled: true + enabled: false serviceUrl: 'https://devnet-api.multiversx.com' tokensFetch: enabled: false serviceUrl: 'https://devnet-api.multiversx.com' providersFetch: - enabled: true + enabled: false serviceUrl: 'https://devnet-api.multiversx.com' image: width: 600 diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index 65b54f0c5..ad30a143e 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -106,13 +106,13 @@ features: enabled: false maxLookBehindNonces: 100 nodesFetch: - enabled: true + enabled: false serviceUrl: 'https://api.multiversx.com' tokensFetch: enabled: false serviceUrl: 'https://api.multiversx.com' providersFetch: - enabled: true + enabled: false serviceUrl: 'https://api.multiversx.com' assetsFetch: enabled: true diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index 7261a3200..0ae184eae 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -105,13 +105,13 @@ features: enabled: false maxLookBehindNonces: 100 nodesFetch: - enabled: true + enabled: false serviceUrl: 'https://testnet-api.multiversx.com' tokensFetch: enabled: false serviceUrl: 'https://testnet-api.multiversx.com' providersFetch: - enabled: true + enabled: false serviceUrl: 'https://testnet-api.multiversx.com' assetsFetch: enabled: true From a89359d97cb5c7448af3ccbaabc84b26ebdf7c5c Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Fri, 11 Jul 2025 14:31:48 +0300 Subject: [PATCH 004/206] fixes after merge --- src/endpoints/network/entities/feature.configs.ts | 3 --- src/endpoints/network/network.service.ts | 1 - 2 files changed, 4 deletions(-) diff --git a/src/endpoints/network/entities/feature.configs.ts b/src/endpoints/network/entities/feature.configs.ts index 2eb25ac28..504061684 100644 --- a/src/endpoints/network/entities/feature.configs.ts +++ b/src/endpoints/network/entities/feature.configs.ts @@ -82,7 +82,4 @@ export class FeatureConfigs { @ApiProperty({ description: 'Assets fetch flag activation value' }) assetsFetch: boolean = false; - - @ApiProperty({ description: 'Media redirect flag activation value' }) - mediaRedirect: boolean = false; } diff --git a/src/endpoints/network/network.service.ts b/src/endpoints/network/network.service.ts index 1a6354a6b..3d3a606de 100644 --- a/src/endpoints/network/network.service.ts +++ b/src/endpoints/network/network.service.ts @@ -338,7 +338,6 @@ export class NetworkService { tokensFetch: this.apiConfigService.isTokensFetchFeatureEnabled(), providersFetch: this.apiConfigService.isProvidersFetchFeatureEnabled(), assetsFetch: this.apiConfigService.isAssetsCdnFeatureEnabled(), - mediaRedirect: this.apiConfigService.isMediaRedirectFeatureEnabled(), }); let indexerVersion: string | undefined; From b74ed09692a7a41ffd1681bff4ccf302fd6e7e6a Mon Sep 17 00:00:00 2001 From: Catalin Faur <52102171+cfaur09@users.noreply.github.com> Date: Wed, 15 Oct 2025 14:13:33 +0300 Subject: [PATCH 005/206] Enhance error handling in GatewayProxyController for block retrieval by hash (#1545) --- src/endpoints/proxy/gateway.proxy.controller.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/endpoints/proxy/gateway.proxy.controller.ts b/src/endpoints/proxy/gateway.proxy.controller.ts index 3b7e12c37..0d892488b 100644 --- a/src/endpoints/proxy/gateway.proxy.controller.ts +++ b/src/endpoints/proxy/gateway.proxy.controller.ts @@ -317,7 +317,15 @@ export class GatewayProxyController { @Param('hash') hash: number, @Query('withTxs') withTxs?: string, ) { - return await this.gatewayGet(`block/${shard}/by-hash/${hash}`, GatewayComponentRequest.blockByHash, { withTxs }); + // eslint-disable-next-line require-await + return await this.gatewayGet(`block/${shard}/by-hash/${hash}`, GatewayComponentRequest.blockByHash, { withTxs }, async (error) => { + const message = error.response?.data?.error; + if (message && (message.includes('key not found') || message.includes('getting block failed'))) { + throw error; + } + + return false; + }); } @Get('/block-atlas/:shard/:nonce') From fa1fe81c37ac398415d6fc2cf19da36f6557a76c Mon Sep 17 00:00:00 2001 From: Catalin Faur <52102171+cfaur09@users.noreply.github.com> Date: Wed, 15 Oct 2025 14:14:26 +0300 Subject: [PATCH 006/206] use EsdtType instead of hardcoded values (#1544) --- src/endpoints/tokens/token.transfer.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/endpoints/tokens/token.transfer.service.ts b/src/endpoints/tokens/token.transfer.service.ts index 78aff6e8b..3ae37d475 100644 --- a/src/endpoints/tokens/token.transfer.service.ts +++ b/src/endpoints/tokens/token.transfer.service.ts @@ -344,13 +344,13 @@ export class TokenTransferService { svgUrl: assets?.svgUrl ?? '', }; - if (properties.type === 'FungibleESDT') { + if (properties.type === EsdtType.FungibleESDT) { result.token = identifier; } else { result.collection = identifier; } - if (['FungibleESDT', 'MetaESDT'].includes(properties.type)) { + if ([EsdtType.FungibleESDT, EsdtType.MetaESDT].includes(properties.type)) { result.decimals = properties.decimals; } From 0bb0a62f054c284356ed054c58c61d0a1a89ff79 Mon Sep 17 00:00:00 2001 From: Catalin Faur <52102171+cfaur09@users.noreply.github.com> Date: Wed, 15 Oct 2025 14:18:23 +0300 Subject: [PATCH 007/206] token service improvements (#1543) * processes 50 tokens concurrently using ConcurrencyUtils * run all three batch operations in parallel with increased concurrency * add more logs * apply mex prices * add logs ( to be removed ) * increse cron time expression * set cron to 2 minutes --- .../cache.warmer/cache.warmer.service.ts | 2 +- src/endpoints/tokens/token.service.ts | 188 +++++++++++------- 2 files changed, 112 insertions(+), 78 deletions(-) diff --git a/src/crons/cache.warmer/cache.warmer.service.ts b/src/crons/cache.warmer/cache.warmer.service.ts index 7fbc17c04..f4cd9bdf2 100644 --- a/src/crons/cache.warmer/cache.warmer.service.ts +++ b/src/crons/cache.warmer/cache.warmer.service.ts @@ -156,7 +156,7 @@ export class CacheWarmerService { await this.invalidateKey(CacheInfo.TransactionPool.key, pool, this.apiConfigService.getTransactionPoolCacheWarmerTtlInSeconds()); } - @Cron(CronExpression.EVERY_MINUTE) + @Cron('*/2 * * * *') @Lock({ name: 'All Tokens invalidations', verbose: true }) async handleEsdtTokenInvalidations() { const tokens = await this.tokenService.getAllTokensRaw(); diff --git a/src/endpoints/tokens/token.service.ts b/src/endpoints/tokens/token.service.ts index 2677ba8fd..3de4fe3f9 100644 --- a/src/endpoints/tokens/token.service.ts +++ b/src/endpoints/tokens/token.service.ts @@ -21,6 +21,7 @@ import { TokenWithRoles } from "./entities/token.with.roles"; import { TokenWithRolesFilter } from "./entities/token.with.roles.filter"; import { AddressUtils, BinaryUtils, NumberUtils, TokenUtils } from "@multiversx/sdk-nestjs-common"; import { ApiService, ApiUtils } from "@multiversx/sdk-nestjs-http"; +import { ConcurrencyUtils } from "src/utils/concurrency.utils"; import { CacheService } from "@multiversx/sdk-nestjs-cache"; import { IndexerService } from "src/common/indexer/indexer.service"; import { OriginLogger } from "@multiversx/sdk-nestjs-common"; @@ -758,10 +759,10 @@ export class TokenService { } this.logger.log(`Starting to fetch all tokens`); + const startFungible = Date.now(); const tokensProperties = await this.esdtService.getAllFungibleTokenProperties(); let tokens = tokensProperties.map(properties => ApiUtils.mergeObjects(new TokenDetailed(), properties)); - - this.logger.log(`Fetched ${tokens.length} fungible tokens`); + this.logger.log(`Fetched ${tokens.length} fungible tokens in ${Date.now() - startFungible}ms`); const allAssets = await this.assetsService.getAllTokenAssets(); @@ -776,11 +777,8 @@ export class TokenService { } this.logger.log(`Starting to fetch all meta tokens`); - const collections = await this.collectionService.getNftCollections(new QueryPagination({ from: 0, size: 10000 }), { type: [NftType.MetaESDT] }); - this.logger.log(`Fetched ${collections.length} meta tokens`); - for (const collection of collections) { tokens.push(new TokenDetailed({ type: TokenType.MetaESDT, @@ -803,6 +801,8 @@ export class TokenService { await this.batchProcessTokens(tokens); const nonMetaEsdtTokens = tokens.filter(x => x.type !== TokenType.MetaESDT); + this.logger.log(`Applying MEX data for ${nonMetaEsdtTokens.length} non-meta tokens`); + await Promise.all([ this.applyMexLiquidity(nonMetaEsdtTokens), this.applyMexPrices(nonMetaEsdtTokens), @@ -810,39 +810,52 @@ export class TokenService { this.applyMexPairTradesCount(nonMetaEsdtTokens), ]); + this.logger.log(`Fetching assets for ${tokens.length} tokens`); await this.cachingService.batchApplyAll( tokens, token => CacheInfo.EsdtAssets(token.identifier).key, async token => await this.getTokenAssetsRaw(token.identifier), (token, assets) => token.assets = assets, CacheInfo.EsdtAssets('').ttl, + 50, ); - for (const token of tokens) { - const priceSourcetype = token.assets?.priceSource?.type; - - if (priceSourcetype === TokenAssetsPriceSourceType.dataApi) { - token.price = await this.dataApiService.getEsdtTokenPrice(token.identifier); - } else if (priceSourcetype === TokenAssetsPriceSourceType.customUrl && token.assets?.priceSource?.url) { - const pathToPrice = token.assets?.priceSource?.path ?? "0.usdPrice"; - const tokenData = await this.fetchTokenDataFromUrl(token.assets.priceSource.url, pathToPrice); - - if (tokenData) { - token.price = tokenData; - } - } + this.logger.log(`Processing price sources and supply for ${tokens.length} tokens`); + await ConcurrencyUtils.executeWithConcurrencyLimit( + tokens, + async (token) => { + try { + const priceSourcetype = token.assets?.priceSource?.type; + + if (priceSourcetype === TokenAssetsPriceSourceType.dataApi) { + token.price = await this.dataApiService.getEsdtTokenPrice(token.identifier); + } else if (priceSourcetype === TokenAssetsPriceSourceType.customUrl && token.assets?.priceSource?.url) { + const pathToPrice = token.assets?.priceSource?.path ?? "0.usdPrice"; + const tokenData = await this.fetchTokenDataFromUrl(token.assets.priceSource.url, pathToPrice); + + if (tokenData) { + token.price = tokenData; + } + } - if (token.price) { - const supply = await this.esdtService.getTokenSupply(token.identifier); - token.supply = supply.totalSupply; - token.circulatingSupply = supply.circulatingSupply; + if (token.price) { + const supply = await this.esdtService.getTokenSupply(token.identifier); + token.supply = supply.totalSupply; + token.circulatingSupply = supply.circulatingSupply; - if (token.circulatingSupply) { - token.marketCap = token.price * NumberUtils.denominateString(token.circulatingSupply, token.decimals); + if (token.circulatingSupply) { + token.marketCap = token.price * NumberUtils.denominateString(token.circulatingSupply, token.decimals); + } + } + } catch (error) { + this.logger.error(`Error processing price/supply for token ${token.identifier}: ${error}`); } - } - } + }, + 50, + 'Token prices and supply calculation' + ); + this.logger.log(`Sorting and finalizing ${tokens.length} tokens`); tokens = tokens.sortedDescending( token => token.assets ? 1 : 0, token => token.marketCap ? 1 : 0, @@ -864,6 +877,7 @@ export class TokenService { }); tokens = [...tokens, egldToken]; + this.logger.log(`Total tokens processed: ${tokens.length}`); return tokens; } @@ -926,41 +940,45 @@ export class TokenService { } private async batchProcessTokens(tokens: TokenDetailed[]) { - await this.cachingService.batchApplyAll( - tokens, - token => CacheInfo.TokenTransactions(token.identifier).key, - async token => await this.getTotalTransactions(token), - (token, result) => { - token.transactions = result?.count; - token.transactionsLastUpdatedAt = result?.lastUpdatedAt; - }, - CacheInfo.TokenTransactions('').ttl, - 10, - ); + this.logger.log(`Starting batch process for ${tokens.length} tokens`); - await this.cachingService.batchApplyAll( - tokens, - token => CacheInfo.TokenAccounts(token.identifier).key, - async token => await this.getTotalAccounts(token), - (token, result) => { - token.accounts = result?.count; - token.accountsLastUpdatedAt = result?.lastUpdatedAt; - }, - CacheInfo.TokenAccounts('').ttl, - 10, - ); + await Promise.all([ + this.cachingService.batchApplyAll( + tokens, + token => CacheInfo.TokenTransactions(token.identifier).key, + async token => await this.getTotalTransactions(token), + (token, result) => { + token.transactions = result?.count; + token.transactionsLastUpdatedAt = result?.lastUpdatedAt; + }, + CacheInfo.TokenTransactions('').ttl, + 50, + ), + this.cachingService.batchApplyAll( + tokens, + token => CacheInfo.TokenAccounts(token.identifier).key, + async token => await this.getTotalAccounts(token), + (token, result) => { + token.accounts = result?.count; + token.accountsLastUpdatedAt = result?.lastUpdatedAt; + }, + CacheInfo.TokenAccounts('').ttl, + 50, + ), + this.cachingService.batchApplyAll( + tokens, + token => CacheInfo.TokenTransfers(token.identifier).key, + async token => await this.getTotalTransfers(token), + (token, result) => { + token.transfers = result?.count; + token.transfersLastUpdatedAt = result?.lastUpdatedAt; + }, + CacheInfo.TokenTransfers('').ttl, + 50, + ), + ]); - await this.cachingService.batchApplyAll( - tokens, - token => CacheInfo.TokenTransfers(token.identifier).key, - async token => await this.getTotalTransfers(token), - (token, result) => { - token.transfers = result?.count; - token.transfersLastUpdatedAt = result?.lastUpdatedAt; - }, - CacheInfo.TokenTransfers('').ttl, - 10, - ); + this.logger.log(`Batch process for ${tokens.length} tokens finished`); } private async getAllTokensFromApi(): Promise { @@ -1046,29 +1064,45 @@ export class TokenService { try { const indexedTokens = await this.mexTokenService.getMexPricesRaw(); - for (const token of tokens) { - const price = indexedTokens[token.identifier]; - if (price) { - const supply = await this.esdtService.getTokenSupply(token.identifier); - if (token.assets && token.identifier.split('-')[0] === 'EGLDUSDC') { - price.price = price.price / (10 ** 12) * 2; - } + const tokensWithPrices = tokens.filter(token => indexedTokens[token.identifier]); - if (price.isToken) { - token.price = price.price; - token.marketCap = price.price * NumberUtils.denominateString(supply.circulatingSupply, token.decimals); + this.logger.log(`Applying MEX prices for ${tokensWithPrices.length} tokens with parallel supply fetching`); - if (token.totalLiquidity && token.marketCap && (token.totalLiquidity / token.marketCap < LOW_LIQUIDITY_THRESHOLD)) { - token.isLowLiquidity = true; - token.lowLiquidityThresholdPercent = LOW_LIQUIDITY_THRESHOLD * 100; + await ConcurrencyUtils.executeWithConcurrencyLimit( + tokensWithPrices, + async (token) => { + try { + const price = indexedTokens[token.identifier]; + if (!price) { + return; } - } - token.supply = supply.totalSupply; - token.circulatingSupply = supply.circulatingSupply; - } - } + const supply = await this.esdtService.getTokenSupply(token.identifier); + + if (token.assets && token.identifier.split('-')[0] === 'EGLDUSDC') { + price.price = price.price / (10 ** 12) * 2; + } + + if (price.isToken) { + token.price = price.price; + token.marketCap = price.price * NumberUtils.denominateString(supply.circulatingSupply, token.decimals); + + if (token.totalLiquidity && token.marketCap && (token.totalLiquidity / token.marketCap < LOW_LIQUIDITY_THRESHOLD)) { + token.isLowLiquidity = true; + token.lowLiquidityThresholdPercent = LOW_LIQUIDITY_THRESHOLD * 100; + } + } + + token.supply = supply.totalSupply; + token.circulatingSupply = supply.circulatingSupply; + } catch (error) { + this.logger.error(`Error applying MEX price for token ${token.identifier}: ${error}`); + } + }, + 50, + 'MEX prices and supply' + ); } catch (error) { this.logger.error('Could not apply mex tokens prices'); this.logger.error(error); From 2a9f59d579b430a315e2524d59f614d65d7d4d9a Mon Sep 17 00:00:00 2001 From: Gutica Stefan <123564494+stefangutica@users.noreply.github.com> Date: Thu, 16 Oct 2025 10:41:49 +0300 Subject: [PATCH 008/206] Websocket subscriptions (#1528) * add websockets for blocks and txs * add support for subscribe to stats * use websockets rooms * remove logs * add lock on crons * check stats room exists Signed-off-by: GuticaStefan * fix indent spaces * add validation pipes + filters * add try catch + class validator fixes * fix linter * add pool subscription + reduce filters combinations for subscriptions * lint * add support for events subscription * lint * separate subscription websocket into separate app * add config * add path * fix * add path for events + config default settings * temp logs * temp logs 2 * added missing configs + remove temp logs * enable andromeda in config * add metrics on subscription * remove async + reschedule * refresh metrics every second * set max listeners to 12 * add EOL * add count on update + parallel broadcast to rooms * lower ttl for blocks count cache * remove comments * remove comments * renaming --------- Signed-off-by: GuticaStefan Co-authored-by: bogdan-rosianu Co-authored-by: cfaur09 --- config/config.devnet.yaml | 7 +- config/config.e2e-mocked.mainnet.yaml | 3 + config/config.e2e.mainnet.yaml | 5 +- config/config.mainnet.yaml | 3 + config/config.testnet.yaml | 5 +- package-lock.json | 133 ++++++++++++++++++ package.json | 8 +- src/common/api-config/api.config.service.ts | 18 +++ src/common/metrics/api.metrics.service.ts | 16 +++ src/crons/websocket/blocks.gateway.ts | 70 +++++++++ src/crons/websocket/connection.handler.ts | 20 +++ src/crons/websocket/events.gateway.ts | 70 +++++++++ src/crons/websocket/network.gateway.ts | 33 +++++ src/crons/websocket/pool.gateway.ts | 72 ++++++++++ src/crons/websocket/transaction.gateway.ts | 123 ++++++++++++++++ src/crons/websocket/websocket.cron.service.ts | 72 ++++++++++ .../websocket.subscription.module.ts | 35 +++++ .../blocks/entities/block.subscribe.ts | 28 ++++ .../events/entities/events.subscribe.ts | 19 +++ src/endpoints/events/events.module.ts | 1 - src/endpoints/pool/entities/pool.subscribe.ts | 19 +++ .../entities/dtos/transaction.subscribe.ts | 70 +++++++++ src/main.ts | 10 ++ src/utils/cache.info.ts | 2 +- src/utils/metrics-events.constants.ts | 1 + src/utils/ws-exceptions.filter.ts | 20 +++ src/utils/ws-validation.pipe.ts | 15 ++ 27 files changed, 870 insertions(+), 8 deletions(-) create mode 100644 src/crons/websocket/blocks.gateway.ts create mode 100644 src/crons/websocket/connection.handler.ts create mode 100644 src/crons/websocket/events.gateway.ts create mode 100644 src/crons/websocket/network.gateway.ts create mode 100644 src/crons/websocket/pool.gateway.ts create mode 100644 src/crons/websocket/transaction.gateway.ts create mode 100644 src/crons/websocket/websocket.cron.service.ts create mode 100644 src/crons/websocket/websocket.subscription.module.ts create mode 100644 src/endpoints/blocks/entities/block.subscribe.ts create mode 100644 src/endpoints/events/entities/events.subscribe.ts create mode 100644 src/endpoints/pool/entities/pool.subscribe.ts create mode 100644 src/endpoints/transactions/entities/dtos/transaction.subscribe.ts create mode 100644 src/utils/ws-exceptions.filter.ts create mode 100644 src/utils/ws-validation.pipe.ts diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index 94a330119..de8480d00 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -8,7 +8,7 @@ api: websocket: true cron: cacheWarmer: true - fastWarm: true + fastWarm: false queueWorker: true elasticUpdater: false flags: @@ -20,6 +20,9 @@ flags: processNfts: true collectionPropertiesFromGateway: false features: + websocketSubscription: + enabled: false + port: 6002 eventsNotifier: enabled: false port: 5674 @@ -65,7 +68,7 @@ features: cronExpression: '*/5 * * * * *' activationEpoch: 1043 chainAndromeda: - enabled: false + enabled: true activationEpoch: 4 nodeEpochsLeft: enabled: false diff --git a/config/config.e2e-mocked.mainnet.yaml b/config/config.e2e-mocked.mainnet.yaml index ef1cd3eed..83d35ceac 100644 --- a/config/config.e2e-mocked.mainnet.yaml +++ b/config/config.e2e-mocked.mainnet.yaml @@ -5,6 +5,9 @@ api: private: true graphql: true features: + websocketSubscription: + enabled: false + port: 6002 dataApi: enabled: false serviceUrl: 'https://data-api.multiversx.com' diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index b4c431ec0..9cdb71bc6 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -20,6 +20,9 @@ flags: processNfts: true collectionPropertiesFromGateway: false features: + websocketSubscription: + enabled: false + port: 6002 eventsNotifier: enabled: false port: 5674 @@ -63,7 +66,7 @@ features: cronExpression: '*/5 * * * * *' activationEpoch: 1391 chainAndromeda: - enabled: false + enabled: true activationEpoch: 4 nodeEpochsLeft: enabled: false diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index 52b6cd891..9e9bc7250 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -20,6 +20,9 @@ flags: processNfts: true collectionPropertiesFromGateway: false features: + websocketSubscription: + enabled: false + port: 6002 eventsNotifier: enabled: false port: 5674 diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index 1f1887414..e0353f514 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -20,6 +20,9 @@ flags: processNfts: true collectionPropertiesFromGateway: false features: + websocketSubscription: + enabled: false + port: 6002 eventsNotifier: enabled: false port: 5674 @@ -62,7 +65,7 @@ features: cronExpression: '*/5 * * * * *' activationEpoch: 1043 chainAndromeda: - enabled: false + enabled: true activationEpoch: 4 nodeEpochsLeft: enabled: false diff --git a/package-lock.json b/package-lock.json index d8ed257b7..f964e0d74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,6 +43,8 @@ "apollo-server-core": "^3.13.0", "apollo-server-express": "3.13.0", "bignumber.js": "^9.0.2", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.2", "compression": "^1.8.0", "crypto-js": "^4.1.1", "dataloader": "^2.2.2", @@ -69,6 +71,8 @@ "rxjs": "^7.1.0", "sharp": "^0.34.2", "simple-git": "^3.16.0", + "socket.io": "^4.8.1", + "socket.io-client": "^4.8.1", "swagger-ui-express": "^4.3.0", "tiny-async-pool": "^1.2.0", "typeorm": "^0.3.25", @@ -6310,6 +6314,12 @@ "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", "license": "MIT" }, + "node_modules/@types/validator": { + "version": "13.15.2", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.2.tgz", + "integrity": "sha512-y7pa/oEJJ4iGYBxOpfAKn5b9+xuihvzDVnC/OSvlVnGxVg0pOqmjiMafiJ1KVNQEaPZf9HsEp5icEwGg8uIe5Q==", + "license": "MIT" + }, "node_modules/@types/webidl-conversions": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", @@ -8237,6 +8247,23 @@ "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "license": "MIT" }, + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", + "license": "MIT" + }, + "node_modules/class-validator": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.2.tgz", + "integrity": "sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==", + "license": "MIT", + "dependencies": { + "@types/validator": "^13.11.8", + "libphonenumber-js": "^1.11.1", + "validator": "^13.9.0" + } + }, "node_modules/cli-color": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", @@ -9287,6 +9314,57 @@ "node": ">=10.2.0" } }, + "node_modules/engine.io-client": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz", + "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.1.1" + } + }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/engine.io-parser": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", @@ -12367,6 +12445,12 @@ "node": ">= 0.8.0" } }, + "node_modules/libphonenumber-js": { + "version": "1.12.13", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.13.tgz", + "integrity": "sha512-QZXnR/OGiDcBjF4hGk0wwVrPcZvbSSyzlvkjXv5LFfktj7O2VZDrt4Xs8SgR/vOFco+qk1i8J43ikMXZoTrtPw==", + "license": "MIT" + }, "node_modules/limiter": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", @@ -14946,6 +15030,38 @@ } } }, + "node_modules/socket.io-client": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", + "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.6.1", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/socket.io-parser": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", @@ -16372,6 +16488,15 @@ "node": ">=10.12.0" } }, + "node_modules/validator": { + "version": "13.15.15", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz", + "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/value-or-promise": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz", @@ -16755,6 +16880,14 @@ } } }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", + "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/xss": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz", diff --git a/package.json b/package.json index d9bc0daf4..dbbad71f9 100644 --- a/package.json +++ b/package.json @@ -113,11 +113,13 @@ "@sendgrid/mail": "^8.1.5", "agentkeepalive": "^4.2.1", "amqp-connection-manager": "^4.1.3", - "anchorme": "^3.0.8", "amqplib": "^0.10.0", + "anchorme": "^3.0.8", "apollo-server-core": "^3.13.0", "apollo-server-express": "3.13.0", "bignumber.js": "^9.0.2", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.2", "compression": "^1.8.0", "crypto-js": "^4.1.1", "dataloader": "^2.2.2", @@ -144,6 +146,8 @@ "rxjs": "^7.1.0", "sharp": "^0.34.2", "simple-git": "^3.16.0", + "socket.io": "^4.8.1", + "socket.io-client": "^4.8.1", "swagger-ui-express": "^4.3.0", "tiny-async-pool": "^1.2.0", "typeorm": "^0.3.25", @@ -216,4 +220,4 @@ "node_modules" ] } -} \ No newline at end of file +} diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index 77c400332..e157c943a 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -954,4 +954,22 @@ export class ApiConfigService { getCompressionChunkSize(): number { return this.configService.get('compression.chunkSize') ?? 16384; } + + getIsWebsocketSubscriptionActive(): boolean { + const isWebsocketSubscriptionActive = this.configService.get('features.websocketSubscription.enabled'); + if (isWebsocketSubscriptionActive === undefined) { + throw new Error('No features.websocketSubscription.enabled flag present'); + } + + return isWebsocketSubscriptionActive; + } + + getWebsocketSubscriptionPort(): number { + const port = this.configService.get('features.websocketSubscription.port'); + if (port === undefined) { + throw new Error('No features.websocketSubscription.port present'); + } + + return port; + } } diff --git a/src/common/metrics/api.metrics.service.ts b/src/common/metrics/api.metrics.service.ts index eea34676a..ff2d24260 100644 --- a/src/common/metrics/api.metrics.service.ts +++ b/src/common/metrics/api.metrics.service.ts @@ -22,6 +22,7 @@ export class ApiMetricsService { private static transactionsCompletedCounter: Counter; private static transactionsPendingResultsCounter: Counter; private static batchUpdatesCounter: Counter; + private static subscriptionsConnectionsGauge: Gauge; constructor( private readonly apiConfigService: ApiConfigService, @@ -32,6 +33,13 @@ export class ApiMetricsService { private readonly metricsService: MetricsService, ) { + if (!ApiMetricsService.subscriptionsConnectionsGauge) { + ApiMetricsService.subscriptionsConnectionsGauge = new Gauge({ + name: 'websocket_subscriptions_connections', + help: 'Number of websocket connections for subscriptions', + }); + } + if (!ApiMetricsService.vmQueriesHistogram) { ApiMetricsService.vmQueriesHistogram = new Histogram({ name: 'vm_query', @@ -182,6 +190,14 @@ export class ApiMetricsService { ApiMetricsService.lastProcessedTransactionCompletedProcessorNonce.set({ shardId }, nonce); } + @OnEvent(MetricsEvents.SetWebsocketMetrics) + setWebsocketSubscriptionsMetrics(payload: { connectedClients: number }) { + const { connectedClients } = payload; + + ApiMetricsService.subscriptionsConnectionsGauge.set(connectedClients); + } + + @OnEvent(MetricsEvents.SetTransactionsCompleted) recordTransactionsCompleted(payload: { transactions: any[] }) { ApiMetricsService.transactionsCompletedCounter.inc(payload.transactions.length); diff --git a/src/crons/websocket/blocks.gateway.ts b/src/crons/websocket/blocks.gateway.ts new file mode 100644 index 000000000..40cfd5038 --- /dev/null +++ b/src/crons/websocket/blocks.gateway.ts @@ -0,0 +1,70 @@ +import { WebSocketGateway, WebSocketServer, SubscribeMessage, MessageBody, ConnectedSocket } from '@nestjs/websockets'; +import { Server, Socket } from 'socket.io'; +import { BlockService } from '../../endpoints/blocks/block.service'; +import { BlockFilter } from '../../endpoints/blocks/entities/block.filter'; +import { QueryPagination } from 'src/common/entities/query.pagination'; +import { BlockSubscribePayload } from '../../endpoints/blocks/entities/block.subscribe'; +import { UseFilters } from '@nestjs/common'; +import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; +import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; +import { OriginLogger } from '@multiversx/sdk-nestjs-common'; + +@UseFilters(WebsocketExceptionsFilter) +@WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) +export class BlocksGateway { + private readonly logger = new OriginLogger(BlocksGateway.name); + + @WebSocketServer() + server!: Server; + + constructor(private readonly blockService: BlockService) { } + + @SubscribeMessage('subscribeBlocks') + async handleSubscription( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: BlockSubscribePayload + ) { + const filterIdentifier = JSON.stringify(payload); + await client.join(`blocks-${filterIdentifier}`); + + return { status: 'success' }; + } + + async pushBlocksForRoom(roomName: string): Promise { + if (!roomName.startsWith("blocks-")) return; + + try { + const filterIdentifier = roomName.replace("blocks-", ""); + const filter: BlockSubscribePayload = JSON.parse(filterIdentifier); + + const blockFilter = new BlockFilter({ + shard: filter.shard, + order: filter.order, + }); + + const [blocks, blocksCount] = await Promise.all([ + this.blockService.getBlocks( + blockFilter, + new QueryPagination({ from: filter.from, size: filter.size }), + filter.withProposerIdentity, + ), + this.blockService.getBlocksCount(blockFilter), + ]); + + this.server.to(roomName).emit("blocksUpdate", { blocks, blocksCount }); + } catch (error) { + this.logger.error(error); + } + } + + async pushBlocks(): Promise { + const promises: Promise[] = []; + + for (const [roomName] of this.server.sockets.adapter.rooms) { + promises.push(this.pushBlocksForRoom(roomName)); + } + + await Promise.all(promises); + } +} + diff --git a/src/crons/websocket/connection.handler.ts b/src/crons/websocket/connection.handler.ts new file mode 100644 index 000000000..b8f50ed53 --- /dev/null +++ b/src/crons/websocket/connection.handler.ts @@ -0,0 +1,20 @@ +import { UseFilters } from "@nestjs/common"; +import { OnGatewayConnection, OnGatewayDisconnect, OnGatewayInit, WebSocketGateway, WebSocketServer } from "@nestjs/websockets"; +import { Socket, Server } from "socket.io"; +import { WebsocketExceptionsFilter } from "src/utils/ws-exceptions.filter"; + +@UseFilters(WebsocketExceptionsFilter) +@WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) +export class ConnectionHandler implements OnGatewayDisconnect, OnGatewayConnection, OnGatewayInit { + + @WebSocketServer() + server!: Server; + + afterInit(__server: Server) { } + + handleDisconnect(_client: Socket) { } + + handleConnection(client: Socket, ..._args: any[]) { + client.setMaxListeners(12); + } +} diff --git a/src/crons/websocket/events.gateway.ts b/src/crons/websocket/events.gateway.ts new file mode 100644 index 000000000..c95e982e0 --- /dev/null +++ b/src/crons/websocket/events.gateway.ts @@ -0,0 +1,70 @@ +import { WebSocketGateway, WebSocketServer, SubscribeMessage, MessageBody, ConnectedSocket } from '@nestjs/websockets'; +import { Server, Socket } from 'socket.io'; +import { UseFilters } from '@nestjs/common'; +import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; +import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; +import { OriginLogger } from '@multiversx/sdk-nestjs-common'; +import { EventsService } from '../../endpoints/events/events.service'; +import { EventsFilter } from '../../endpoints/events/entities/events.filter'; +import { EventsSubscribePayload } from '../../endpoints/events/entities/events.subscribe'; +import { QueryPagination } from 'src/common/entities/query.pagination'; + +@UseFilters(WebsocketExceptionsFilter) +@WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) +export class EventsGateway { + private readonly logger = new OriginLogger(EventsGateway.name); + + @WebSocketServer() + server!: Server; + + constructor(private readonly eventsService: EventsService) { } + + @SubscribeMessage('subscribeEvents') + async handleSubscription( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: EventsSubscribePayload, + ) { + const filterIdentifier = JSON.stringify(payload); + await client.join(`events-${filterIdentifier}`); + + return { status: 'success' }; + } + + async pushEventsForRoom(roomName: string): Promise { + if (!roomName.startsWith("events-")) return; + + try { + const filterIdentifier = roomName.replace("events-", ""); + const filter: EventsSubscribePayload = JSON.parse(filterIdentifier); + + const eventsFilter = new EventsFilter({ + shard: filter.shard, + }); + + const [events, eventsCount] = await Promise.all([ + this.eventsService.getEvents( + new QueryPagination({ + from: filter.from || 0, + size: filter.size || 25, + }), + eventsFilter, + ), + this.eventsService.getEventsCount(eventsFilter), + ]); + + this.server.to(roomName).emit("eventsUpdate", { events, eventsCount }); + } catch (error) { + this.logger.error(error); + } + } + + async pushEvents(): Promise { + const promises: Promise[] = []; + + for (const [roomName] of this.server.sockets.adapter.rooms) { + promises.push(this.pushEventsForRoom(roomName)); + } + + await Promise.all(promises); + } +} diff --git a/src/crons/websocket/network.gateway.ts b/src/crons/websocket/network.gateway.ts new file mode 100644 index 000000000..5618de162 --- /dev/null +++ b/src/crons/websocket/network.gateway.ts @@ -0,0 +1,33 @@ +import { WebSocketGateway, WebSocketServer, SubscribeMessage } from '@nestjs/websockets'; +import { Server, Socket } from 'socket.io'; +import { NetworkService } from '../../endpoints/network/network.service'; +import { UseFilters } from '@nestjs/common'; +import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; +import { OriginLogger } from '@multiversx/sdk-nestjs-common'; + +@UseFilters(WebsocketExceptionsFilter) +@WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) +export class NetworkGateway { + private readonly logger = new OriginLogger(NetworkGateway.name); + + @WebSocketServer() + server!: Server; + + constructor(private readonly networkService: NetworkService) { } + + @SubscribeMessage('subscribeStats') + async handleSubscription(client: Socket) { + await client.join('statsRoom'); + } + + async pushStats() { + if (this.server.sockets.adapter.rooms.has('statsRoom')) { + try { + const stats = await this.networkService.getStats(); + this.server.to('statsRoom').emit('statsUpdate', stats); + } catch (error) { + this.logger.error(error); + } + } + } +} diff --git a/src/crons/websocket/pool.gateway.ts b/src/crons/websocket/pool.gateway.ts new file mode 100644 index 000000000..426e14e10 --- /dev/null +++ b/src/crons/websocket/pool.gateway.ts @@ -0,0 +1,72 @@ +import { WebSocketGateway, WebSocketServer, SubscribeMessage, MessageBody, ConnectedSocket } from '@nestjs/websockets'; +import { Server, Socket } from 'socket.io'; +import { UseFilters } from '@nestjs/common'; +import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; +import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; +import { OriginLogger } from '@multiversx/sdk-nestjs-common'; + +import { PoolService } from '../../endpoints/pool/pool.service'; +import { PoolFilter } from '../../endpoints/pool/entities/pool.filter'; +import { QueryPagination } from 'src/common/entities/query.pagination'; +import { PoolSubscribePayload } from '../../endpoints/pool/entities/pool.subscribe'; + +@UseFilters(WebsocketExceptionsFilter) +@WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) +export class PoolGateway { + private readonly logger = new OriginLogger(PoolGateway.name); + + @WebSocketServer() + server!: Server; + + constructor(private readonly poolService: PoolService) { } + + @SubscribeMessage('subscribePool') + async handleSubscription( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: PoolSubscribePayload, + ) { + const filterIdentifier = JSON.stringify(payload); + await client.join(`pool-${filterIdentifier}`); + + return { status: 'success' }; + } + + async pushPoolForRoom(roomName: string): Promise { + if (!roomName.startsWith("pool-")) return; + + try { + const filterIdentifier = roomName.replace("pool-", ""); + const filter: PoolSubscribePayload = JSON.parse(filterIdentifier); + + const poolFilter = new PoolFilter({ + type: filter.type, + }); + + const [pool, poolCount] = await Promise.all([ + this.poolService.getPool( + new QueryPagination({ + from: filter.from, + size: filter.size, + }), + poolFilter, + ), + this.poolService.getPoolCount(poolFilter), + ]); + + this.server.to(roomName).emit("poolUpdate", { pool, poolCount }); + } catch (error) { + this.logger.error(error); + } + } + + async pushPool(): Promise { + const promises: Promise[] = []; + + for (const [roomName] of this.server.sockets.adapter.rooms) { + promises.push(this.pushPoolForRoom(roomName)); + } + + await Promise.all(promises); + } + +} diff --git a/src/crons/websocket/transaction.gateway.ts b/src/crons/websocket/transaction.gateway.ts new file mode 100644 index 000000000..85c3a76d1 --- /dev/null +++ b/src/crons/websocket/transaction.gateway.ts @@ -0,0 +1,123 @@ +import { WebSocketGateway, WebSocketServer, SubscribeMessage, ConnectedSocket, MessageBody } from '@nestjs/websockets'; +import { Server, Socket } from 'socket.io'; +import { TransactionService } from '../../endpoints/transactions/transaction.service'; +import { TransactionFilter } from '../../endpoints/transactions/entities/transaction.filter'; +import { QueryPagination } from 'src/common/entities/query.pagination'; +import { TransactionQueryOptions } from '../../endpoints/transactions/entities/transactions.query.options'; +import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; +import { TransactionSubscribePayload } from '../../endpoints/transactions/entities/dtos/transaction.subscribe'; +import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; +import { UseFilters } from '@nestjs/common'; +import { OriginLogger } from '@multiversx/sdk-nestjs-common'; + +@UseFilters(WebsocketExceptionsFilter) +@WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) +export class TransactionsGateway { + private readonly logger = new OriginLogger(TransactionsGateway.name); + + @WebSocketServer() + server!: Server; + + constructor(private readonly transactionService: TransactionService) { } + + @SubscribeMessage('subscribeTransactions') + async handleSubscription( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: TransactionSubscribePayload) { + // If one of these methods throw an exception then the subscription will not be successful + TransactionQueryOptions.applyDefaultOptions(payload.size || 25, { + withScResults: payload.withScResults, + withOperations: payload.withOperations, + withLogs: payload.withLogs, + withScamInfo: payload.withScamInfo, + withUsername: payload.withUsername, + withBlockInfo: payload.withBlockInfo, + withActionTransferValue: payload.withActionTransferValue, + }); + + const transactionFilter = new TransactionFilter({ + order: payload.order, + isRelayed: payload.isRelayed, + isScCall: payload.isScCall, + withRelayedScresults: payload.withRelayedScresults, + }); + + TransactionFilter.validate(transactionFilter, payload.size || 25); + + const filterIdentifier = JSON.stringify(payload); + await client.join(`tx-${filterIdentifier}`); + + return { status: 'success' }; + } + + async pushTransactionsForRoom(roomName: string): Promise { + if (!roomName.startsWith("tx-")) return; + + try { + const filterIdentifier = roomName.replace("tx-", ""); + const filter = JSON.parse(filterIdentifier); + + const options = TransactionQueryOptions.applyDefaultOptions( + filter.size || 25, + { + withScResults: filter.withScResults, + withOperations: filter.withOperations, + withLogs: filter.withLogs, + withScamInfo: filter.withScamInfo, + withUsername: filter.withUsername, + withBlockInfo: filter.withBlockInfo, + withActionTransferValue: filter.withActionTransferValue, + }, + ); + + const transactionFilter = new TransactionFilter({ + sender: filter.sender, + receivers: filter.receiver, + token: filter.token, + functions: filter.functions, + senderShard: filter.senderShard, + receiverShard: filter.receiverShard, + miniBlockHash: filter.miniBlockHash, + hashes: filter.hashes, + status: filter.status, + before: filter.before, + after: filter.after, + condition: filter.condition, + order: filter.order, + relayer: filter.relayer, + isRelayed: filter.isRelayed, + isScCall: filter.isScCall, + round: filter.round, + withRelayedScresults: filter.withRelayedScresults, + }); + + TransactionFilter.validate(transactionFilter, filter.size || 25); + + const [transactions, transactionsCount] = await Promise.all([ + this.transactionService.getTransactions( + transactionFilter, + new QueryPagination({ from: filter.from || 0, size: filter.size || 25 }), + options, + undefined, + filter.fields || [], + ), + this.transactionService.getTransactionCount(transactionFilter), + ]); + + this.server.to(roomName).emit("transactionUpdate", { transactions, transactionsCount }); + } catch (error) { + this.logger.error(error); + } + } + + async pushTransactions(): Promise { + const promises: Promise[] = []; + + for (const [roomName] of this.server.sockets.adapter.rooms) { + promises.push(this.pushTransactionsForRoom(roomName)); + } + + await Promise.all(promises); + } + +} diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts new file mode 100644 index 000000000..9aae69097 --- /dev/null +++ b/src/crons/websocket/websocket.cron.service.ts @@ -0,0 +1,72 @@ +import { Injectable } from '@nestjs/common'; +import { Cron } from '@nestjs/schedule'; +import { TransactionsGateway } from './transaction.gateway'; +import { BlocksGateway } from 'src/crons/websocket/blocks.gateway'; +import { NetworkGateway } from 'src/crons/websocket/network.gateway'; +import { Lock } from "@multiversx/sdk-nestjs-common"; +import { PoolGateway } from 'src/crons/websocket/pool.gateway'; +import { EventsGateway } from 'src/crons/websocket/events.gateway'; +import { WebSocketGateway, WebSocketServer } from '@nestjs/websockets'; +import { EventEmitter2 } from '@nestjs/event-emitter'; +import { MetricsEvents } from 'src/utils/metrics-events.constants'; +import { Server } from 'socket.io'; +@Injectable() +@WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) +export class WebsocketCronService { + @WebSocketServer() + server!: Server; + + constructor( + private readonly transactionsGateway: TransactionsGateway, + private readonly blocksGateway: BlocksGateway, + private readonly networkGateway: NetworkGateway, + private readonly poolGateway: PoolGateway, + private readonly eventsGateway: EventsGateway, + private readonly eventEmitter: EventEmitter2, + ) { } + + @Cron('*/1 * * * * *') + handleWebsocketMetrics() { + const connectedClients = this.server.sockets.sockets.size ?? 0; + // TODO: add more metrics in the future + // const subscriptions: Record = {}; + + // this.server.sockets.adapter.rooms.forEach((socketsSet, roomName) => { + // subscriptions[roomName] = socketsSet.size; + // }); + + this.eventEmitter.emit(MetricsEvents.SetWebsocketMetrics, { + connectedClients, + }); + } + + @Cron('*/6 * * * * *') + @Lock({ name: 'Push transactions to subscribers', verbose: true }) + async handleTransactionsUpdate() { + await this.transactionsGateway.pushTransactions(); + } + + @Cron('*/6 * * * * *') + @Lock({ name: 'Push blocks to subscribers', verbose: true }) + async handleBlocksUpdate() { + await this.blocksGateway.pushBlocks(); + } + + @Cron('*/6 * * * * *') + @Lock({ name: 'Push stats to subscribers', verbose: true }) + async handleStatsUpdate() { + await this.networkGateway.pushStats(); + } + + @Cron('*/6 * * * * *') + @Lock({ name: 'Push pool transactions to subscribers', verbose: true }) + async handlePoolTransactions() { + await this.poolGateway.pushPool(); + } + + @Cron('*/6 * * * * *') + @Lock({ name: 'Push events to subscribers', verbose: true }) + async handleEventsUpdate() { + await this.eventsGateway.pushEvents(); + } +} diff --git a/src/crons/websocket/websocket.subscription.module.ts b/src/crons/websocket/websocket.subscription.module.ts new file mode 100644 index 000000000..89276d50d --- /dev/null +++ b/src/crons/websocket/websocket.subscription.module.ts @@ -0,0 +1,35 @@ +import { Module } from '@nestjs/common'; +import { ScheduleModule } from '@nestjs/schedule'; +import { TransactionModule } from 'src/endpoints/transactions/transaction.module'; +import { WebsocketCronService } from './websocket.cron.service'; +import { BlockModule } from 'src/endpoints/blocks/block.module'; +import { NetworkModule } from 'src/endpoints/network/network.module'; +import { PoolModule } from 'src/endpoints/pool/pool.module'; +import { EventsModule } from 'src/endpoints/events/events.module'; +import { BlocksGateway } from './blocks.gateway'; +import { NetworkGateway } from './network.gateway'; +import { TransactionsGateway } from './transaction.gateway'; +import { PoolGateway } from './pool.gateway'; +import { EventsGateway } from './events.gateway'; +import { ConnectionHandler } from './connection.handler'; + +@Module({ + imports: [ + ScheduleModule.forRoot(), + TransactionModule, + BlockModule, + NetworkModule, + PoolModule, + EventsModule, + ], + providers: [ + WebsocketCronService, + ConnectionHandler, + BlocksGateway, + NetworkGateway, + TransactionsGateway, + PoolGateway, + EventsGateway, + ], +}) +export class WebsocketSubscriptionModule { } diff --git a/src/endpoints/blocks/entities/block.subscribe.ts b/src/endpoints/blocks/entities/block.subscribe.ts new file mode 100644 index 000000000..e60e9c8dc --- /dev/null +++ b/src/endpoints/blocks/entities/block.subscribe.ts @@ -0,0 +1,28 @@ +import { IsOptional, IsNumber, IsBoolean, Min, Max, IsEnum, IsIn } from 'class-validator'; +import { SortOrder } from 'src/common/entities/sort.order'; + +export class BlockSubscribePayload { + @IsOptional() + @IsNumber() + @Min(0) + shard?: number; + + @IsOptional() + @IsEnum(SortOrder) + order?: SortOrder; + + @IsOptional() + @IsNumber() + @IsIn([0], { message: 'from can only be 0' }) + from?: number = 0; + + @IsOptional() + @IsNumber() + @Min(1, { message: 'minimum size is 1' }) + @Max(50, { message: 'maximum size is 50' }) + size?: number = 25; + + @IsOptional() + @IsBoolean() + withProposerIdentity?: boolean; +} diff --git a/src/endpoints/events/entities/events.subscribe.ts b/src/endpoints/events/entities/events.subscribe.ts new file mode 100644 index 000000000..6adffbd67 --- /dev/null +++ b/src/endpoints/events/entities/events.subscribe.ts @@ -0,0 +1,19 @@ +import { IsOptional, IsNumber, Min, Max, IsIn } from 'class-validator'; + +export class EventsSubscribePayload { + @IsOptional() + @IsNumber() + @Min(0) + shard?: number; + + @IsOptional() + @IsNumber() + @IsIn([0], { message: 'from can only be 0' }) + from?: number = 0; + + @IsOptional() + @IsNumber() + @Min(1, { message: 'minimum size is 1' }) + @Max(50, { message: 'maximum size is 50' }) + size?: number = 25; +} diff --git a/src/endpoints/events/events.module.ts b/src/endpoints/events/events.module.ts index 9cdf3f729..4e7ae6221 100644 --- a/src/endpoints/events/events.module.ts +++ b/src/endpoints/events/events.module.ts @@ -1,6 +1,5 @@ import { Module } from '@nestjs/common'; import { EventsService } from './events.service'; - @Module({ providers: [EventsService], exports: [EventsService], diff --git a/src/endpoints/pool/entities/pool.subscribe.ts b/src/endpoints/pool/entities/pool.subscribe.ts new file mode 100644 index 000000000..e9ef35074 --- /dev/null +++ b/src/endpoints/pool/entities/pool.subscribe.ts @@ -0,0 +1,19 @@ +import { IsOptional, IsNumber, Min, Max, IsEnum, IsIn } from 'class-validator'; +import { TransactionType } from 'src/endpoints/transactions/entities/transaction.type'; + +export class PoolSubscribePayload { + @IsOptional() + @IsEnum(TransactionType) + type?: TransactionType; + + @IsOptional() + @IsNumber() + @IsIn([0], { message: 'from can only be 0' }) + from?: number = 0; + + @IsOptional() + @IsNumber() + @Min(1, { message: 'minimum size is 1' }) + @Max(50, { message: 'maximum size is 50' }) + size?: number = 25; +} diff --git a/src/endpoints/transactions/entities/dtos/transaction.subscribe.ts b/src/endpoints/transactions/entities/dtos/transaction.subscribe.ts new file mode 100644 index 000000000..3ea3c602c --- /dev/null +++ b/src/endpoints/transactions/entities/dtos/transaction.subscribe.ts @@ -0,0 +1,70 @@ +import { IsOptional, IsString, IsArray, IsBoolean, IsNumber, IsEnum, Min, Max, IsIn } from 'class-validator'; +import { TransactionStatus } from '../transaction.status'; +import { SortOrder } from 'src/common/entities/sort.order'; + +export class TransactionSubscribePayload { + @IsOptional() + @IsEnum(TransactionStatus) + status?: TransactionStatus; + + @IsOptional() + @IsEnum(SortOrder) + order?: SortOrder; + + @IsOptional() + @IsBoolean() + isRelayed?: boolean; + + @IsOptional() + @IsBoolean() + isScCall?: boolean; + + @IsOptional() + @IsBoolean() + withScResults?: boolean; + + @IsOptional() + @IsBoolean() + withRelayedScresults?: boolean; + + @IsOptional() + @IsBoolean() + withOperations?: boolean; + + @IsOptional() + @IsBoolean() + withLogs?: boolean; + + @IsOptional() + @IsBoolean() + withScamInfo?: boolean; + + @IsOptional() + @IsBoolean() + withUsername?: boolean; + + @IsOptional() + @IsBoolean() + withBlockInfo?: boolean; + + @IsOptional() + @IsBoolean() + withActionTransferValue?: boolean; + + @IsOptional() + @IsNumber() + @IsIn([0], { message: 'from can only be 0' }) + from?: number = 0; + + @IsOptional() + @IsNumber() + @Min(1, { message: 'minimum size is 1' }) + @Max(50, { message: 'maximum size is 50' }) + size?: number = 25; + + + @IsOptional() + @IsArray() + @IsString({ each: true }) + fields?: string[]; +} diff --git a/src/main.ts b/src/main.ts index 3ff1d98de..aca22383e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -36,6 +36,8 @@ import { NotWritableError } from './common/indexer/entities/not.writable.error'; import * as bodyParser from 'body-parser'; import * as requestIp from 'request-ip'; import compression from 'compression'; +import { IoAdapter } from '@nestjs/platform-socket.io'; +import { WebsocketSubscriptionModule } from './crons/websocket/websocket.subscription.module'; async function bootstrap() { const logger = new Logger('Bootstrapper'); @@ -87,6 +89,13 @@ async function bootstrap() { await processorApp.listen(5001); } + + if (apiConfigService.getIsWebsocketSubscriptionActive()) { + const websocketSubscriptionApp = await NestFactory.create(WebsocketSubscriptionModule); + websocketSubscriptionApp.useWebSocketAdapter(new IoAdapter(websocketSubscriptionApp)); + await websocketSubscriptionApp.listen(apiConfigService.getWebsocketSubscriptionPort()); + } + if (apiConfigService.getIsCacheWarmerCronActive()) { const cacheWarmerApp = await NestFactory.create(CacheWarmerModule); await configureCacheWarmerApp(cacheWarmerApp, apiConfigService); @@ -168,6 +177,7 @@ async function bootstrap() { logger.log(`Exchange feature active: ${apiConfigService.isExchangeEnabled()}`); logger.log(`Marketplace feature active: ${apiConfigService.isMarketplaceFeatureEnabled()}`); logger.log(`Auth active: ${apiConfigService.getIsAuthActive()}`); + logger.log(`WebSocket subscription active: ${apiConfigService.getIsWebsocketSubscriptionActive()}`); logger.log(`Use tracing: ${apiConfigService.getUseTracingFlag()}`); logger.log(`Process NFTs flag: ${apiConfigService.getIsProcessNftsFlagActive()}`); diff --git a/src/utils/cache.info.ts b/src/utils/cache.info.ts index 6ca7e69ac..00059ae49 100644 --- a/src/utils/cache.info.ts +++ b/src/utils/cache.info.ts @@ -469,7 +469,7 @@ export class CacheInfo { static BlocksCount(filter: BlockFilter): CacheInfo { return { key: `blocks:count:${JSON.stringify(filter)}`, - ttl: Constants.oneMinute(), + ttl: Constants.oneSecond() * 6, }; } diff --git a/src/utils/metrics-events.constants.ts b/src/utils/metrics-events.constants.ts index a2e480638..2a5cb12ba 100644 --- a/src/utils/metrics-events.constants.ts +++ b/src/utils/metrics-events.constants.ts @@ -10,4 +10,5 @@ export enum MetricsEvents { SetTransactionsCompleted = "setTransactionsCompleted", SetTransactionsPendingResults = "setTransactionsPendingResults", SetBatchUpdated = "setBatchUpdated", + SetWebsocketMetrics = "setWebsocketMetrics", } diff --git a/src/utils/ws-exceptions.filter.ts b/src/utils/ws-exceptions.filter.ts new file mode 100644 index 000000000..bb864231b --- /dev/null +++ b/src/utils/ws-exceptions.filter.ts @@ -0,0 +1,20 @@ +import { ArgumentsHost, Catch } from "@nestjs/common"; +import { BaseWsExceptionFilter, WsException } from "@nestjs/websockets"; +import { Socket } from "socket.io"; + +@Catch(WsException) +export class WebsocketExceptionsFilter extends BaseWsExceptionFilter { + catch(exception: WsException, host: ArgumentsHost) { + const client = host.switchToWs().getClient() as Socket; + + const pattern = host.switchToWs().getPattern(); + const data = host.switchToWs().getData(); + const error = exception.getError(); + + client.emit('error', { + pattern, + data, + error, + }); + } +} diff --git a/src/utils/ws-validation.pipe.ts b/src/utils/ws-validation.pipe.ts new file mode 100644 index 000000000..ddeb25994 --- /dev/null +++ b/src/utils/ws-validation.pipe.ts @@ -0,0 +1,15 @@ +import { Injectable, ValidationPipe, ValidationPipeOptions } from '@nestjs/common'; +import { WsException } from '@nestjs/websockets'; + +@Injectable() +export class WsValidationPipe extends ValidationPipe { + constructor(options?: ValidationPipeOptions) { + super({ + transform: true, + whitelist: true, + forbidNonWhitelisted: true, + exceptionFactory: (errors) => new WsException(errors), + ...options, + }); + } +} From 8e28b11b87468d98d223cd8c2549254c846d5a5e Mon Sep 17 00:00:00 2001 From: bogdan-rosianu <51945539+bogdan-rosianu@users.noreply.github.com> Date: Thu, 16 Oct 2025 13:52:29 +0300 Subject: [PATCH 009/206] log instead of error for invalid legacy delegation contract (#1542) --- src/endpoints/network/network.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/endpoints/network/network.service.ts b/src/endpoints/network/network.service.ts index 91a30ca6e..6388d5e04 100644 --- a/src/endpoints/network/network.service.ts +++ b/src/endpoints/network/network.service.ts @@ -186,7 +186,8 @@ export class NetworkService { ); if (!vmQueryResult || vmQueryResult.length < 2) { - throw new Error(`Could not fetch getTotalStakeByType from delegation contract address '${delegationContractAddress}'`); + this.logger.warn(`Could not fetch getTotalStakeByType from delegation contract address '${delegationContractAddress}'`); + return BigInt(0); } const totalWaitingStakeBase64 = vmQueryResult[1]; From a9f35befa21ae4177759b6ab482c88c097b51fa5 Mon Sep 17 00:00:00 2001 From: Catalin Faur <52102171+cfaur09@users.noreply.github.com> Date: Thu, 23 Oct 2025 10:52:32 +0300 Subject: [PATCH 010/206] implement event logAddress filter (#1548) * implement event logAddress filter * implement topics filter --- .../indexer/elastic/elastic.indexer.helper.ts | 10 +++++ .../events/entities/events.filter.ts | 2 + src/endpoints/events/events.controller.ts | 12 ++++- src/test/unit/services/events.spec.ts | 44 +++++++++++++++++++ 4 files changed, 66 insertions(+), 2 deletions(-) diff --git a/src/common/indexer/elastic/elastic.indexer.helper.ts b/src/common/indexer/elastic/elastic.indexer.helper.ts index 75c6d21ed..ad12c39f0 100644 --- a/src/common/indexer/elastic/elastic.indexer.helper.ts +++ b/src/common/indexer/elastic/elastic.indexer.helper.ts @@ -814,6 +814,16 @@ export class ElasticIndexerHelper { elasticQuery = elasticQuery.withCondition(QueryConditionOptions.must, QueryType.Match('order', filter.order)); } + if (filter.logAddress) { + elasticQuery = elasticQuery.withMustMatchCondition('logAddress', filter.logAddress); + } + + if (filter.topics && filter.topics.length > 0) { + for (const topic of filter.topics) { + elasticQuery = elasticQuery.withMustMatchCondition('topics', topic); + } + } + return elasticQuery; } } diff --git a/src/endpoints/events/entities/events.filter.ts b/src/endpoints/events/entities/events.filter.ts index 099a1ec45..2852a14d5 100644 --- a/src/endpoints/events/entities/events.filter.ts +++ b/src/endpoints/events/entities/events.filter.ts @@ -11,4 +11,6 @@ export class EventsFilter { before: number = 0; after: number = 0; order: number = 0; + logAddress: string = ''; + topics: string[] = []; } diff --git a/src/endpoints/events/events.controller.ts b/src/endpoints/events/events.controller.ts index ee18ec489..5c5fc9f08 100644 --- a/src/endpoints/events/events.controller.ts +++ b/src/endpoints/events/events.controller.ts @@ -20,26 +20,31 @@ export class EventsController { @ApiQuery({ name: 'from', description: 'Number of items to skip for the result set', required: false }) @ApiQuery({ name: 'size', description: 'Number of items to retrieve', required: false }) @ApiQuery({ name: 'address', description: 'Event address', required: false }) + @ApiQuery({ name: 'logAddress', description: 'Event log address', required: false }) @ApiQuery({ name: 'identifier', description: 'Event identifier', required: false }) @ApiQuery({ name: 'txHash', description: 'Event transaction hash', required: false }) @ApiQuery({ name: 'shard', description: 'Event shard id', required: false }) @ApiQuery({ name: 'before', description: 'Event before timestamp', required: false }) @ApiQuery({ name: 'after', description: 'Event after timestamp', required: false }) @ApiQuery({ name: 'order', description: 'Event order', required: false }) + @ApiQuery({ name: 'topics', description: 'Event topics to filter by', required: false, isArray: true }) async getEvents( @Query('from', new DefaultValuePipe(0), ParseIntPipe) from: number, @Query('size', new DefaultValuePipe(25), ParseIntPipe) size: number, @Query('address', ParseAddressPipe) address: string, + @Query('logAddress', ParseAddressPipe) logAddress: string, @Query('identifier') identifier: string, @Query('txHash') txHash: string, @Query('shard', ParseIntPipe) shard: number, @Query('before', ParseIntPipe) before: number, @Query('after', ParseIntPipe) after: number, @Query('order', ParseIntPipe) order: number, + @Query('topics') topics: string | string[], ): Promise { + const topicsArray = topics ? (Array.isArray(topics) ? topics : [topics]) : []; return await this.eventsService.getEvents( new QueryPagination({ from, size }), - new EventsFilter({ address, identifier, txHash, shard, after, before, order })); + new EventsFilter({ address, logAddress, identifier, txHash, shard, after, before, order, topics: topicsArray })); } @Get('/events/count') @@ -51,6 +56,7 @@ export class EventsController { @ApiQuery({ name: 'shard', description: 'Event shard id', required: false }) @ApiQuery({ name: 'before', description: 'Event before timestamp', required: false }) @ApiQuery({ name: 'after', description: 'Event after timestamp', required: false }) + @ApiQuery({ name: 'topics', description: 'Event topics to filter by', required: false, isArray: true }) async getEventsCount( @Query('address', ParseAddressPipe) address: string, @Query('identifier') identifier: string, @@ -58,9 +64,11 @@ export class EventsController { @Query('shard', ParseIntPipe) shard: number, @Query('before', ParseIntPipe) before: number, @Query('after', ParseIntPipe) after: number, + @Query('topics') topics: string | string[], ): Promise { + const topicsArray = topics ? (Array.isArray(topics) ? topics : [topics]) : []; return await this.eventsService.getEventsCount( - new EventsFilter({ address, identifier, txHash, shard, after, before })); + new EventsFilter({ address, identifier, txHash, shard, after, before, topics: topicsArray })); } @Get('/events/:txHash') diff --git a/src/test/unit/services/events.spec.ts b/src/test/unit/services/events.spec.ts index d8251fbcf..4af1100ac 100644 --- a/src/test/unit/services/events.spec.ts +++ b/src/test/unit/services/events.spec.ts @@ -137,6 +137,50 @@ describe('EventsService', () => { expect(result).toEqual(expectedEvents); expect(indexerService.getEvents).toHaveBeenCalledWith(pagination, filter); }); + + it('should return events filtered by log address', async () => { + const pagination: QueryPagination = { from: 0, size: 10 }; + const filter: EventsFilter = new EventsFilter({ logAddress: "erd1qqqqqqqqqqqqqpgq5lgsm8lsen2gv65gwtrs25js0ktx7ltgusrqeltmln" }); + + const mockElasticEvents = [ + generateMockEvent(), + ]; + + const expectedEvents = [ + createExpectedEvent("7e3faa2a4ea5cfe8667f2e13eb27076b0452742dbe01044871c8ea109f73ebed", "transferValueOnly"), + ]; + + mockIndexerService.getEvents.mockResolvedValue(mockElasticEvents); + + const result = await service.getEvents(pagination, filter); + + for (const event of result) { + expect(event.logAddress).toEqual("erd1qqqqqqqqqqqqqpgq5lgsm8lsen2gv65gwtrs25js0ktx7ltgusrqeltmln"); + } + + expect(result).toEqual(expectedEvents); + expect(indexerService.getEvents).toHaveBeenCalledWith(pagination, filter); + }); + + it('should return events filtered by topics', async () => { + const pagination: QueryPagination = { from: 0, size: 10 }; + const filter: EventsFilter = new EventsFilter({ topics: ["2386f26fc10000"] }); + + const mockElasticEvents = [ + generateMockEvent(), + ]; + + const expectedEvents = [ + createExpectedEvent("7e3faa2a4ea5cfe8667f2e13eb27076b0452742dbe01044871c8ea109f73ebed", "transferValueOnly"), + ]; + + mockIndexerService.getEvents.mockResolvedValue(mockElasticEvents); + + const result = await service.getEvents(pagination, filter); + + expect(result).toEqual(expectedEvents); + expect(indexerService.getEvents).toHaveBeenCalledWith(pagination, filter); + }); }); describe('getEventsCount', () => { From 2c4a6e8b2795cbbcb01f45f0e0648479947ba57a Mon Sep 17 00:00:00 2001 From: bogdan-rosianu <51945539+bogdan-rosianu@users.noreply.github.com> Date: Tue, 28 Oct 2025 11:44:36 +0200 Subject: [PATCH 011/206] Token market cap updates (#1550) * token mcap update * add logs * extend logs --- src/endpoints/tokens/token.service.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/endpoints/tokens/token.service.ts b/src/endpoints/tokens/token.service.ts index 3de4fe3f9..03a423367 100644 --- a/src/endpoints/tokens/token.service.ts +++ b/src/endpoints/tokens/token.service.ts @@ -50,6 +50,7 @@ export class TokenService { private readonly logger = new OriginLogger(TokenService.name); private readonly nftSubTypes = [NftSubType.DynamicNonFungibleESDT, NftSubType.DynamicMetaESDT, NftSubType.NonFungibleESDTv2, NftSubType.DynamicSemiFungibleESDT]; private readonly egldIdentifierInMultiTransfer = 'EGLD-000000'; + private readonly thresholdFaultyMarketCap = 10_000_000_000; constructor( private readonly esdtService: EsdtService, @@ -845,6 +846,11 @@ export class TokenService { if (token.circulatingSupply) { token.marketCap = token.price * NumberUtils.denominateString(token.circulatingSupply, token.decimals); + // TODO: update this by checking the token's liquidity collateral + if (token.marketCap > this.thresholdFaultyMarketCap) { + this.logger.log(`Setting token market cap to 0 due to possibly faulty market cap. Token: ${token.identifier}. Circulating supply: ${token.circulatingSupply}. Price: ${token.price}. Market cap: ${token.marketCap}`); + token.marketCap = 0; + } } } } catch (error) { @@ -1087,6 +1093,10 @@ export class TokenService { if (price.isToken) { token.price = price.price; token.marketCap = price.price * NumberUtils.denominateString(supply.circulatingSupply, token.decimals); + if (token.marketCap > this.thresholdFaultyMarketCap) { + this.logger.log(`Setting token market cap to 0 due to possibly faulty market cap. Token: ${token.identifier}. Circulating supply: ${supply.circulatingSupply}. Price: ${token.price}. Market cap: ${token.marketCap}`); + token.marketCap = 0; + } if (token.totalLiquidity && token.marketCap && (token.totalLiquidity / token.marketCap < LOW_LIQUIDITY_THRESHOLD)) { token.isLowLiquidity = true; From 99d935044413db185413860c616bc61ea18f89b8 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 28 Oct 2025 15:34:43 +0200 Subject: [PATCH 012/206] add support for timestampMs for account --- src/common/indexer/entities/account.ts | 1 + src/endpoints/accounts/account.service.ts | 3 +++ src/endpoints/accounts/entities/account.ts | 5 ++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/common/indexer/entities/account.ts b/src/common/indexer/entities/account.ts index 94963eb91..fc5ff3296 100644 --- a/src/common/indexer/entities/account.ts +++ b/src/common/indexer/entities/account.ts @@ -1,6 +1,7 @@ export interface Account { address: string; nonce: number; + timestampMs: number; timestamp: number; balance: string; balanceNum: number; diff --git a/src/endpoints/accounts/account.service.ts b/src/endpoints/accounts/account.service.ts index cde2c8564..104a1b5be 100644 --- a/src/endpoints/accounts/account.service.ts +++ b/src/endpoints/accounts/account.service.ts @@ -99,6 +99,9 @@ export class AccountService { if (options?.withTimestamp) { const elasticSearchAccount = await this.indexerService.getAccount(address); account.timestamp = elasticSearchAccount.timestamp; + if (elasticSearchAccount.timestampMs) { + account.timestampMs = elasticSearchAccount.timestampMs; + } } if (AddressUtils.isSmartContractAddress(address)) { diff --git a/src/endpoints/accounts/entities/account.ts b/src/endpoints/accounts/entities/account.ts index 6403d3cce..14df44e8a 100644 --- a/src/endpoints/accounts/entities/account.ts +++ b/src/endpoints/accounts/entities/account.ts @@ -16,7 +16,10 @@ export class Account { @ApiProperty({ type: Number, description: 'Account current nonce', example: 42 }) nonce: number = 0; - @ApiProperty({ type: Number, description: 'Timestamp of the block where the account was first indexed', example: 1676979360 }) + @ApiProperty({ type: Number, description: 'Timestamp in milliseconds of the block where the account was first indexed', example: 1676979360000 }) + timestampMs: number = 0; + + @ApiProperty({ type: Number, description: 'Timestamp in seconds of the block where the account was first indexed', example: 1676979360 }) timestamp: number = 0; @ApiProperty({ type: Number, description: 'The shard ID allocated to the account', example: 0 }) From f638668ecc60d9259c11e17c1db69da9c1665eea Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 28 Oct 2025 15:41:03 +0200 Subject: [PATCH 013/206] fix unit tests --- src/test/unit/services/accounts.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/unit/services/accounts.spec.ts b/src/test/unit/services/accounts.spec.ts index 7a7933537..96ae23554 100644 --- a/src/test/unit/services/accounts.spec.ts +++ b/src/test/unit/services/accounts.spec.ts @@ -283,6 +283,7 @@ describe('Account Service', () => { address: 'erd1qga7ze0l03chfgru0a32wxqf2226nzrxnyhzer9lmudqhjgy7ycqjjyknz', balance: '162486906126924046', nonce: 45, + timestampMs: 0, timestamp: 0, shard: 0, ownerAddress: '', From 4c6f79df7027cffabfd11042753f3a3d20e1a398 Mon Sep 17 00:00:00 2001 From: Catalin Faur <52102171+cfaur09@users.noreply.github.com> Date: Tue, 28 Oct 2025 15:50:31 +0200 Subject: [PATCH 014/206] improve token fetch price (#1549) * improve token fetch price * remove logger * update spec * fix lint error * add logs for error * add price --- src/endpoints/tokens/token.service.ts | 12 ++++++++++++ src/test/unit/services/tokens.spec.ts | 6 ++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/endpoints/tokens/token.service.ts b/src/endpoints/tokens/token.service.ts index 03a423367..09159b55a 100644 --- a/src/endpoints/tokens/token.service.ts +++ b/src/endpoints/tokens/token.service.ts @@ -839,6 +839,18 @@ export class TokenService { } } + if (!token.price && token.type === TokenType.FungibleESDT) { + try { + const dataApiPrice = await this.dataApiService.getEsdtTokenPrice(token.identifier); + if (dataApiPrice) { + token.price = dataApiPrice; + this.logger.log(`Applied dataAPI fallback for ${token.identifier} token with price ${dataApiPrice}`); + } + } catch (error) { + this.logger.error(`Error applying dataAPI fallback price for token ${token.identifier}: ${error}`); + } + } + if (token.price) { const supply = await this.esdtService.getTokenSupply(token.identifier); token.supply = supply.totalSupply; diff --git a/src/test/unit/services/tokens.spec.ts b/src/test/unit/services/tokens.spec.ts index 94d1a6ba6..75fb04e28 100644 --- a/src/test/unit/services/tokens.spec.ts +++ b/src/test/unit/services/tokens.spec.ts @@ -711,7 +711,7 @@ describe('Token Service', () => { jest.spyOn(tokenService as any, 'applyMexPairType').mockImplementation(() => Promise.resolve()); jest.spyOn(tokenService as any, 'applyMexPairTradesCount').mockImplementation(() => Promise.resolve()); jest.spyOn(cacheService as any, 'batchApplyAll').mockImplementation(() => Promise.resolve()); - jest.spyOn(dataApiService, 'getEsdtTokenPrice').mockResolvedValue(100); + jest.spyOn(dataApiService, 'getEsdtTokenPrice').mockResolvedValue(undefined); jest.spyOn(dataApiService, 'getEgldPrice').mockResolvedValue(100); jest.spyOn(tokenService as any, 'fetchTokenDataFromUrl').mockResolvedValue(100); jest.spyOn(esdtService, 'getTokenSupply').mockResolvedValue(mockTokenSupply as EsdtSupply); @@ -841,7 +841,9 @@ describe('Token Service', () => { jest.spyOn(tokenService['collectionService'], 'getNftCollections').mockResolvedValue([]); jest.spyOn(tokenService['dataApiService'], 'getEgldPrice').mockResolvedValue(0); - jest.spyOn(tokenService['dataApiService'], 'getEsdtTokenPrice').mockResolvedValue(1); + jest.spyOn(tokenService['dataApiService'], 'getEsdtTokenPrice').mockImplementation((identifier: string) => { + return Promise.resolve(identifier === 'token4' ? undefined : 1); + }); jest.spyOn(tokenService['esdtService'], 'getTokenSupply').mockResolvedValue({ minted: '1000000', initialMinted: '1000000', From e2fe91c8243df51cdc98a8613db3572cf36cc423 Mon Sep 17 00:00:00 2001 From: Catalin Faur <52102171+cfaur09@users.noreply.github.com> Date: Tue, 4 Nov 2025 09:30:04 +0200 Subject: [PATCH 015/206] Enhance NFT type support in cache warmer and collection services (#1552) --- src/crons/cache.warmer/cache.warmer.service.ts | 2 ++ src/endpoints/collections/collection.service.ts | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/crons/cache.warmer/cache.warmer.service.ts b/src/crons/cache.warmer/cache.warmer.service.ts index f4cd9bdf2..e50c8b391 100644 --- a/src/crons/cache.warmer/cache.warmer.service.ts +++ b/src/crons/cache.warmer/cache.warmer.service.ts @@ -324,9 +324,11 @@ export class CacheWarmerService { const nftTypes = [ NftType.NonFungibleESDT, NftType.SemiFungibleESDT, + NftType.MetaESDT, NftType.NonFungibleESDTv2, NftType.DynamicNonFungibleESDT, NftType.DynamicSemiFungibleESDT, + NftType.DynamicMetaESDT, ]; for (const key of Object.keys(allAssets)) { diff --git a/src/endpoints/collections/collection.service.ts b/src/endpoints/collections/collection.service.ts index 4c9b803f9..ce8378053 100644 --- a/src/endpoints/collections/collection.service.ts +++ b/src/endpoints/collections/collection.service.ts @@ -99,7 +99,7 @@ export class CollectionService { nftCollection.subType = indexedCollection.type as NftSubType; nftCollection.timestamp = indexedCollection.timestamp; - if (nftCollection.type.in(NftType.NonFungibleESDT, NftType.SemiFungibleESDT)) { + if (nftCollection.type.in(NftType.NonFungibleESDT, NftType.SemiFungibleESDT, NftType.MetaESDT)) { nftCollection.isVerified = indexedCollection.api_isVerified; nftCollection.nftCount = indexedCollection.api_nftCount; nftCollection.holderCount = indexedCollection.api_holderCount; From 0215714ed512af580a8489ea457f20992a6bdf01 Mon Sep 17 00:00:00 2001 From: Catalin Faur <52102171+cfaur09@users.noreply.github.com> Date: Wed, 5 Nov 2025 14:49:39 +0200 Subject: [PATCH 016/206] Refactor function filter application in ElasticIndexerHelper to enhance query conditions with AND operator and existence checks (#1554) --- src/common/indexer/elastic/elastic.indexer.helper.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/common/indexer/elastic/elastic.indexer.helper.ts b/src/common/indexer/elastic/elastic.indexer.helper.ts index ad12c39f0..96bd3ec13 100644 --- a/src/common/indexer/elastic/elastic.indexer.helper.ts +++ b/src/common/indexer/elastic/elastic.indexer.helper.ts @@ -777,8 +777,12 @@ export class ElasticIndexerHelper { public applyFunctionFilter(elasticQuery: ElasticQuery, functions: string[]) { const functionConditions = []; for (const field of functions) { - functionConditions.push(QueryType.Match('function', field)); - functionConditions.push(QueryType.Match('operation', field)); + functionConditions.push(QueryType.Match('function', field, QueryOperator.AND)); + + functionConditions.push(QueryType.Must( + [QueryType.Match('operation', field, QueryOperator.AND)], + [QueryType.Exists('function')] + )); } return elasticQuery.withMustCondition(QueryType.Should(functionConditions)); } From 1aa92d40d1e68addc8e44dcda2f3d9b3c4e1e1b0 Mon Sep 17 00:00:00 2001 From: Catalin Faur <52102171+cfaur09@users.noreply.github.com> Date: Thu, 13 Nov 2025 10:10:25 +0200 Subject: [PATCH 017/206] apply supply info for all tokens (#1558) * Refactor token market cap calculation to ensure price and circulating supply are checked before computation * add specs * fix lint --- src/endpoints/tokens/token.service.ts | 22 ++++----- src/test/unit/services/tokens.spec.ts | 69 ++++++++++++--------------- 2 files changed, 41 insertions(+), 50 deletions(-) diff --git a/src/endpoints/tokens/token.service.ts b/src/endpoints/tokens/token.service.ts index 09159b55a..0421bc4f4 100644 --- a/src/endpoints/tokens/token.service.ts +++ b/src/endpoints/tokens/token.service.ts @@ -851,18 +851,16 @@ export class TokenService { } } - if (token.price) { - const supply = await this.esdtService.getTokenSupply(token.identifier); - token.supply = supply.totalSupply; - token.circulatingSupply = supply.circulatingSupply; - - if (token.circulatingSupply) { - token.marketCap = token.price * NumberUtils.denominateString(token.circulatingSupply, token.decimals); - // TODO: update this by checking the token's liquidity collateral - if (token.marketCap > this.thresholdFaultyMarketCap) { - this.logger.log(`Setting token market cap to 0 due to possibly faulty market cap. Token: ${token.identifier}. Circulating supply: ${token.circulatingSupply}. Price: ${token.price}. Market cap: ${token.marketCap}`); - token.marketCap = 0; - } + const supply = await this.esdtService.getTokenSupply(token.identifier); + token.supply = supply.totalSupply; + token.circulatingSupply = supply.circulatingSupply; + + if (token.price && token.circulatingSupply) { + token.marketCap = token.price * NumberUtils.denominateString(token.circulatingSupply, token.decimals); + // TODO: update this by checking the token's liquidity collateral + if (token.marketCap > this.thresholdFaultyMarketCap) { + this.logger.log(`Setting token market cap to 0 due to possibly faulty market cap. Token: ${token.identifier}. Circulating supply: ${token.circulatingSupply}. Price: ${token.price}. Market cap: ${token.marketCap}`); + token.marketCap = 0; } } } catch (error) { diff --git a/src/test/unit/services/tokens.spec.ts b/src/test/unit/services/tokens.spec.ts index 75fb04e28..36cb6e424 100644 --- a/src/test/unit/services/tokens.spec.ts +++ b/src/test/unit/services/tokens.spec.ts @@ -30,7 +30,6 @@ import { Token } from "src/endpoints/tokens/entities/token"; import { NftCollection } from "src/endpoints/collections/entities/nft.collection"; import { EsdtSupply } from "src/endpoints/esdt/entities/esdt.supply"; import { TokenDetailed } from "src/endpoints/tokens/entities/token.detailed"; -import { NumberUtils } from "@multiversx/sdk-nestjs-common"; import { TokenAssetsPriceSourceType } from "../../../common/assets/entities/token.assets.price.source.type"; describe('Token Service', () => { @@ -694,7 +693,7 @@ describe('Token Service', () => { it('should return tokens from other sources when isTokensFetchFeatureEnabled is false', async () => { const mockTokenProperties: Partial[] = [{ identifier: 'mockIdentifier' }]; - let mockTokens: Partial[] = mockTokenProperties.map(properties => ApiUtils.mergeObjects(new TokenDetailed(), properties)); + const mockTokens: Partial[] = mockTokenProperties.map(properties => ApiUtils.mergeObjects(new TokenDetailed(), properties)); const mockTokenAssets: Partial = { name: 'mockName' }; const mockNftCollections: Partial[] = [{ collection: 'mockCollection' }]; const mockTokenSupply: Partial = { totalSupply: '1000000000000000000', circulatingSupply: '500000000000000000' }; @@ -754,13 +753,19 @@ describe('Token Service', () => { })); }); - expect((tokenService as any).batchProcessTokens).toHaveBeenCalledWith(mockTokens); - expect((tokenService as any).applyMexLiquidity).toHaveBeenCalledWith(mockTokens.filter(x => x.type !== TokenType.MetaESDT)); - expect((tokenService as any).applyMexPrices).toHaveBeenCalledWith(mockTokens.filter(x => x.type !== TokenType.MetaESDT)); - expect((tokenService as any).applyMexPairType).toHaveBeenCalledWith(mockTokens.filter(x => x.type !== TokenType.MetaESDT)); - expect((tokenService as any).applyMexPairTradesCount).toHaveBeenCalledWith(mockTokens.filter(x => x.type !== TokenType.MetaESDT)); + expect((tokenService as any).batchProcessTokens).toHaveBeenCalledTimes(1); + const batchProcessCall = ((tokenService as any).batchProcessTokens as jest.Mock).mock.calls[0][0]; + expect(batchProcessCall).toHaveLength(2); + expect(batchProcessCall.map((t: any) => t.identifier)).toContain('mockIdentifier'); + expect(batchProcessCall.map((t: any) => t.identifier)).toContain('mockCollection'); + + expect((tokenService as any).applyMexLiquidity).toHaveBeenCalledTimes(1); + expect((tokenService as any).applyMexPrices).toHaveBeenCalledTimes(1); + expect((tokenService as any).applyMexPairType).toHaveBeenCalledTimes(1); + expect((tokenService as any).applyMexPairTradesCount).toHaveBeenCalledTimes(1); expect((cacheService as any).batchApplyAll).toHaveBeenCalled(); - mockTokens.forEach(mockToken => { + + for (const mockToken of mockTokens) { const priceSourcetype = mockToken.assets?.priceSource?.type; if (priceSourcetype === 'dataApi') { expect(dataApiService.getEsdtTokenPrice).toHaveBeenCalledWith(mockToken.identifier); @@ -769,40 +774,28 @@ describe('Token Service', () => { expect((tokenService as any).fetchTokenDataFromUrl).toHaveBeenCalledWith(mockToken.assets?.priceSource?.url, pathToPrice); } - if (mockToken.price) { - expect(esdtService.getTokenSupply).toHaveBeenCalledWith(mockToken.identifier); - mockToken.supply = mockTokenSupply.totalSupply; + expect(esdtService.getTokenSupply).toHaveBeenCalledWith(mockToken.identifier); + } + + expect(result).toBeDefined(); + expect(Array.isArray(result)).toBe(true); + expect(result.length).toBe(3); - if (mockToken.circulatingSupply) { - mockToken.marketCap = mockToken.price * NumberUtils.denominateString(mockToken.circulatingSupply.toString(), mockToken.decimals); - } - } + const nonEgldTokens = result.filter(t => t.identifier !== 'EGLD-000000'); + nonEgldTokens.forEach(token => { + expect(token.supply).toBe(mockTokenSupply.totalSupply); + expect(token.circulatingSupply).toBe(mockTokenSupply.circulatingSupply); }); - mockTokens = mockTokens.sortedDescending( - token => token.assets ? 1 : 0, - token => token.isLowLiquidity ? 0 : (token.marketCap ?? 0), - token => token.transactions ?? 0, - ); - - mockTokens.push(new TokenDetailed({ - identifier: 'EGLD-000000', - name: 'EGLD', - canPause: false, - canUpgrade: false, - canWipe: false, - price: 100, - decimals: 18, - isLowLiquidity: false, - marketCap: 0, - circulatingSupply: '0', - supply: '0', - assets: { - name: 'mockName', - } as TokenAssets, - })); + expect(result.map(t => t.identifier)).toContain('mockIdentifier'); + expect(result.map(t => t.identifier)).toContain('mockCollection'); + expect(result.map(t => t.identifier)).toContain('EGLD-000000'); - expect(result).toEqual(mockTokens); + const egldToken = result.find(t => t.identifier === 'EGLD-000000'); + expect(egldToken).toBeDefined(); + expect(egldToken?.price).toBe(100); + expect(egldToken?.supply).toBe('0'); + expect(egldToken?.circulatingSupply).toBe('0'); }); }); From c4eb6f04f53776db005a1a80440b2b8c0a6955c9 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu <51945539+bogdan-rosianu@users.noreply.github.com> Date: Fri, 14 Nov 2025 11:03:18 +0200 Subject: [PATCH 018/206] added reserved field to blocks (#1560) --- src/endpoints/blocks/entities/block.ts | 3 +++ src/test/unit/services/blocks.spec.ts | 1 + 2 files changed, 4 insertions(+) diff --git a/src/endpoints/blocks/entities/block.ts b/src/endpoints/blocks/entities/block.ts index ed5dc51e7..aa6d63076 100644 --- a/src/endpoints/blocks/entities/block.ts +++ b/src/endpoints/blocks/entities/block.ts @@ -68,6 +68,9 @@ export class Block { @ApiProperty({ type: BlockProofDto, nullable: true, required: false }) previousHeaderProof: BlockProofDto | undefined = undefined; + @ApiProperty( { type: String }) + reserved: string = ''; + @ApiProperty({ type: BlockProofDto, nullable: true, required: false }) proof: BlockProofDto | undefined = undefined; diff --git a/src/test/unit/services/blocks.spec.ts b/src/test/unit/services/blocks.spec.ts index 5684f66ce..45f364dd6 100644 --- a/src/test/unit/services/blocks.spec.ts +++ b/src/test/unit/services/blocks.spec.ts @@ -136,6 +136,7 @@ describe('Block Service', () => { gasRefunded: 4932000, gasPenalized: 0, maxGasLimit: 15000000000, + reserved: '', scheduledRootHash: undefined, proof: undefined, previousHeaderProof: new BlockProofDto({ From e6425b97c534422266f17c9b58e1827e3fb2eb24 Mon Sep 17 00:00:00 2001 From: Catalin Faur <52102171+cfaur09@users.noreply.github.com> Date: Wed, 19 Nov 2025 10:41:58 +0200 Subject: [PATCH 019/206] add support for custom url custom headers (#1557) * Add custom URL headers support and enhance token data fetching * Enhance custom URL headers handling by adding JSON parsing and validation checks * add logs * fixes * remove app.hatom.com value * add EOL --- config/config.mainnet.yaml | 4 ++ src/common/api-config/api.config.service.ts | 63 ++++++++++++++++++++- src/endpoints/tokens/token.service.ts | 10 ++-- 3 files changed, 72 insertions(+), 5 deletions(-) diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index 9e9bc7250..2ab0a01a5 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -191,3 +191,7 @@ compression: level: 6 threshold: 1024 chunkSize: 16384 +customUrlHeaders: + - urlPattern: '' + headers: + x-custom-auth: '' diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index e157c943a..d1cd162f2 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -1,4 +1,4 @@ -import { Constants } from '@multiversx/sdk-nestjs-common'; +import { Constants, OriginLogger } from '@multiversx/sdk-nestjs-common'; import { Injectable } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { DatabaseConnectionOptions } from '../persistence/entities/connection.options'; @@ -7,6 +7,8 @@ import { LogTopic } from '@multiversx/sdk-transaction-processor/lib/types/log-to @Injectable() export class ApiConfigService { + private readonly logger = new OriginLogger(ApiConfigService.name); + constructor(private readonly configService: ConfigService) { } @@ -972,4 +974,63 @@ export class ApiConfigService { return port; } + + getHeadersForCustomUrl(url: string): Record | undefined { + let customUrlConfigs = this.configService.get('customUrlHeaders'); + + if (!customUrlConfigs) { + return undefined; + } + + if (typeof customUrlConfigs === 'string') { + try { + customUrlConfigs = JSON.parse(customUrlConfigs); + } catch (error) { + return undefined; + } + } + + if (!Array.isArray(customUrlConfigs) && typeof customUrlConfigs === 'object') { + let workingConfig = customUrlConfigs; + + while (workingConfig && workingConfig[''] && typeof workingConfig[''] === 'object') { + workingConfig = workingConfig['']; + } + + const arrayValues: any[] = []; + for (const key in workingConfig) { + if (!isNaN(Number(key))) { + let item = workingConfig[key]; + while (item && item[''] && typeof item[''] === 'object') { + item = item['']; + } + arrayValues[Number(key)] = item; + } + } + + if (arrayValues.length > 0) { + customUrlConfigs = arrayValues.filter(item => item !== undefined); + this.logger.log(`Loaded ${customUrlConfigs.length} custom URL header config(s)`); + } else { + return undefined; + } + } + + if (!Array.isArray(customUrlConfigs)) { + return undefined; + } + + for (const config of customUrlConfigs) { + if (config && config.urlPattern && url.includes(config.urlPattern)) { + let headers = config.headers; + if (headers && headers[''] && typeof headers[''] === 'object') { + headers = headers['']; + } + this.logger.log(`Found custom headers for URL pattern '${config.urlPattern}': ${JSON.stringify(headers)}`); + return headers; + } + } + + return undefined; + } } diff --git a/src/endpoints/tokens/token.service.ts b/src/endpoints/tokens/token.service.ts index 0421bc4f4..e4672b6d1 100644 --- a/src/endpoints/tokens/token.service.ts +++ b/src/endpoints/tokens/token.service.ts @@ -832,13 +832,13 @@ export class TokenService { token.price = await this.dataApiService.getEsdtTokenPrice(token.identifier); } else if (priceSourcetype === TokenAssetsPriceSourceType.customUrl && token.assets?.priceSource?.url) { const pathToPrice = token.assets?.priceSource?.path ?? "0.usdPrice"; - const tokenData = await this.fetchTokenDataFromUrl(token.assets.priceSource.url, pathToPrice); + const customHeaders = this.apiConfigService.getHeadersForCustomUrl(token.assets.priceSource.url); + const tokenData = await this.fetchTokenDataFromUrl(token.assets.priceSource.url, pathToPrice, customHeaders); if (tokenData) { token.price = tokenData; } } - if (!token.price && token.type === TokenType.FungibleESDT) { try { const dataApiPrice = await this.dataApiService.getEsdtTokenPrice(token.identifier); @@ -912,9 +912,11 @@ export class TokenService { return result; } - private async fetchTokenDataFromUrl(url: string, path: string): Promise { + private async fetchTokenDataFromUrl(url: string, path: string, customHeaders?: Record): Promise { try { - const result = await this.apiService.get(url); + + this.logger.log(`Fetching token data from URL: ${url} with custom headers: ${JSON.stringify(customHeaders)}`); + const result = await this.apiService.get(url, customHeaders ? { headers: customHeaders } : undefined); if (!result || !result.data) { this.logger.error(`Invalid response received from URL: ${url}`); From 261716717f681e74dc689d4ac0a0f550bd9b5f6f Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Wed, 19 Nov 2025 15:12:50 +0200 Subject: [PATCH 020/206] fix indentation --- src/endpoints/tokens/token.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/endpoints/tokens/token.service.ts b/src/endpoints/tokens/token.service.ts index 29e719fdb..e4672b6d1 100644 --- a/src/endpoints/tokens/token.service.ts +++ b/src/endpoints/tokens/token.service.ts @@ -851,7 +851,7 @@ export class TokenService { } } - const supply = await this.esdtService.getTokenSupply(token.identifier); + const supply = await this.esdtService.getTokenSupply(token.identifier); token.supply = supply.totalSupply; token.circulatingSupply = supply.circulatingSupply; From bd8247c3ff82b71a69135c64c46c8856df697bfa Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Wed, 19 Nov 2025 16:11:06 +0200 Subject: [PATCH 021/206] API-741: staking v5 support --- config/config.testnet.yaml | 8 +++++++- src/common/api-config/api.config.service.ts | 17 +++++++++++++++++ src/endpoints/network/network.service.ts | 13 ++++++++++--- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index e0353f514..303a7d4dd 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -61,12 +61,15 @@ features: - '' jwtSecret: '' stakingV4: - enabled: false + enabled: true cronExpression: '*/5 * * * * *' activationEpoch: 1043 chainAndromeda: enabled: true activationEpoch: 4 + stakingV5: + enabled: true + activationEpoch: 2517 nodeEpochsLeft: enabled: false transactionProcessor: @@ -182,6 +185,9 @@ inflation: - 1130177 - 924690 - 719203 +stakingV5Inflation: + - 930_117 +# november 2025 testnet supply: 21_242_828. first year rewards = 50% * (8.75% * supply) = 930117 nftProcess: parallelism: 1 maxRetries: 3 diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index d1cd162f2..e75dd50a5 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -592,6 +592,15 @@ export class ApiConfigService { return inflationAmounts; } + getStakingV5InflationAmounts(): number[] { + const inflationAmounts = this.configService.get('stakingV5Inflation'); + if (!inflationAmounts) { + throw new Error('No staking v5 inflation amounts present'); + } + + return inflationAmounts; + } + getMediaUrl(): string { const mediaUrl = this.configService.get('urls.media'); if (!mediaUrl) { @@ -890,6 +899,14 @@ export class ApiConfigService { return this.configService.get('features.chainAndromeda.activationEpoch') ?? 99999; } + isStakingV5Enabled(): boolean { + return this.configService.get('features.stakingV5.enabled') ?? false; + } + + getStakingV5ActivationEpoch(): number { + return this.configService.get('features.stakingV5.activationEpoch') ?? 99999; + } + isAssetsCdnFeatureEnabled(): boolean { return this.configService.get('features.assetsFetch.enabled') ?? false; } diff --git a/src/endpoints/network/network.service.ts b/src/endpoints/network/network.service.ts index 6388d5e04..bace4cb45 100644 --- a/src/endpoints/network/network.service.ts +++ b/src/endpoints/network/network.service.ts @@ -237,6 +237,10 @@ export class NetworkService { if (!stake) { throw new Error('Global stake not available'); } + const stakingV5Config = { + enabled: this.apiConfigService.isStakingV5Enabled() && stats.epoch >= this.apiConfigService.getStakingV5ActivationEpoch(), + activationEpoch: this.apiConfigService.getStakingV5ActivationEpoch(), + } const stakedBalance = await this.getAuctionContractBalance(); @@ -251,9 +255,12 @@ export class NetworkService { const secondsInYear = 365 * 24 * 3600; const epochsInYear = secondsInYear / epochDuration; - const yearIndex = Math.floor(stats.epoch / epochsInYear); - - const inflationAmounts = this.apiConfigService.getInflationAmounts(); + let yearIndex = Math.floor(stats.epoch / epochsInYear); + let inflationAmounts = this.apiConfigService.getInflationAmounts(); + if (stakingV5Config.enabled) { + yearIndex = Math.floor((stakingV5Config.activationEpoch - stats.epoch) / epochsInYear); + inflationAmounts = this.apiConfigService.getStakingV5InflationAmounts(); + } if (yearIndex >= inflationAmounts.length) { throw new Error(`There is no inflation information for year with index ${yearIndex}`,); From b2c41afe89de2238af9ea23a9c8bb780ed1257a6 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Wed, 19 Nov 2025 16:13:23 +0200 Subject: [PATCH 022/206] bugfix --- config/config.testnet.yaml | 2 +- src/endpoints/network/network.service.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index 303a7d4dd..423c492ee 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -69,7 +69,7 @@ features: activationEpoch: 4 stakingV5: enabled: true - activationEpoch: 2517 + activationEpoch: 2519 nodeEpochsLeft: enabled: false transactionProcessor: diff --git a/src/endpoints/network/network.service.ts b/src/endpoints/network/network.service.ts index bace4cb45..fbb8cc4be 100644 --- a/src/endpoints/network/network.service.ts +++ b/src/endpoints/network/network.service.ts @@ -258,7 +258,7 @@ export class NetworkService { let yearIndex = Math.floor(stats.epoch / epochsInYear); let inflationAmounts = this.apiConfigService.getInflationAmounts(); if (stakingV5Config.enabled) { - yearIndex = Math.floor((stakingV5Config.activationEpoch - stats.epoch) / epochsInYear); + yearIndex = Math.floor((stats.epoch - stakingV5Config.activationEpoch) / epochsInYear); inflationAmounts = this.apiConfigService.getStakingV5InflationAmounts(); } From 581fdfb772f293512f156f27fb78604745aad4a5 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Wed, 19 Nov 2025 16:16:17 +0200 Subject: [PATCH 023/206] fix lint --- src/endpoints/network/network.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/endpoints/network/network.service.ts b/src/endpoints/network/network.service.ts index fbb8cc4be..f7e630a47 100644 --- a/src/endpoints/network/network.service.ts +++ b/src/endpoints/network/network.service.ts @@ -240,7 +240,7 @@ export class NetworkService { const stakingV5Config = { enabled: this.apiConfigService.isStakingV5Enabled() && stats.epoch >= this.apiConfigService.getStakingV5ActivationEpoch(), activationEpoch: this.apiConfigService.getStakingV5ActivationEpoch(), - } + }; const stakedBalance = await this.getAuctionContractBalance(); From 24b2c2f2f9ba129ed5df462dc700c30802e8a681 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Wed, 19 Nov 2025 16:22:16 +0200 Subject: [PATCH 024/206] refactor --- src/endpoints/network/network.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/endpoints/network/network.service.ts b/src/endpoints/network/network.service.ts index f7e630a47..91e407574 100644 --- a/src/endpoints/network/network.service.ts +++ b/src/endpoints/network/network.service.ts @@ -240,6 +240,7 @@ export class NetworkService { const stakingV5Config = { enabled: this.apiConfigService.isStakingV5Enabled() && stats.epoch >= this.apiConfigService.getStakingV5ActivationEpoch(), activationEpoch: this.apiConfigService.getStakingV5ActivationEpoch(), + inflationAmounts: this.apiConfigService.getStakingV5InflationAmounts(), }; const stakedBalance = await this.getAuctionContractBalance(); @@ -259,7 +260,7 @@ export class NetworkService { let inflationAmounts = this.apiConfigService.getInflationAmounts(); if (stakingV5Config.enabled) { yearIndex = Math.floor((stats.epoch - stakingV5Config.activationEpoch) / epochsInYear); - inflationAmounts = this.apiConfigService.getStakingV5InflationAmounts(); + inflationAmounts = stakingV5Config.inflationAmounts; } if (yearIndex >= inflationAmounts.length) { From b6d900d8b5454ad7952e4601a27d21165399e9f4 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Wed, 19 Nov 2025 16:36:14 +0200 Subject: [PATCH 025/206] fixes --- config/config.testnet.yaml | 2 +- src/endpoints/network/entities/feature.configs.ts | 3 +++ src/endpoints/network/network.service.ts | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index 423c492ee..407a0be6b 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -186,7 +186,7 @@ inflation: - 924690 - 719203 stakingV5Inflation: - - 930_117 + - 930117 # november 2025 testnet supply: 21_242_828. first year rewards = 50% * (8.75% * supply) = 930117 nftProcess: parallelism: 1 diff --git a/src/endpoints/network/entities/feature.configs.ts b/src/endpoints/network/entities/feature.configs.ts index cbd9692c9..463239b8f 100644 --- a/src/endpoints/network/entities/feature.configs.ts +++ b/src/endpoints/network/entities/feature.configs.ts @@ -16,4 +16,7 @@ export class FeatureConfigs { @ApiProperty({ description: 'DataApi flag activation value' }) dataApi: boolean = false; + + @ApiProperty({ description: 'Staking v5 flag activation value' }) + stakingV5: boolean = false; } diff --git a/src/endpoints/network/network.service.ts b/src/endpoints/network/network.service.ts index 91e407574..7a6bd9b76 100644 --- a/src/endpoints/network/network.service.ts +++ b/src/endpoints/network/network.service.ts @@ -325,6 +325,7 @@ export class NetworkService { marketplace: this.apiConfigService.isMarketplaceFeatureEnabled(), exchange: this.apiConfigService.isExchangeEnabled(), dataApi: this.apiConfigService.isDataApiFeatureEnabled(), + stakingV5: this.apiConfigService.isStakingV5Enabled(), }); let indexerVersion: string | undefined; From ece9a625379410f587a59397c319cabab3262c9a Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 20 Nov 2025 08:35:45 +0200 Subject: [PATCH 026/206] try-catch for queue computing --- src/endpoints/nodes/node.service.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/endpoints/nodes/node.service.ts b/src/endpoints/nodes/node.service.ts index 2738011f4..5ebb45b7c 100644 --- a/src/endpoints/nodes/node.service.ts +++ b/src/endpoints/nodes/node.service.ts @@ -366,9 +366,14 @@ export class NodeService { async getHeartbeatValidatorsAndQueue(): Promise { const nodes = await this.getHeartbeatAndValidators(); - const queue = await this.getQueue(); + try { + const queue = await this.getQueue(); - this.processQueuedNodes(nodes, queue); + this.processQueuedNodes(nodes, queue); + } + catch(error) { + this.logger.error(error); + } return nodes; } From 25e915ed3aa9a7bcb2f34386f5ec3dfbace0f5f3 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 20 Nov 2025 08:51:30 +0200 Subject: [PATCH 027/206] hotfix disable snapshotless --- src/common/api-config/api.config.service.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index e75dd50a5..5f48fb3e4 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -56,7 +56,11 @@ export class ApiConfigService { } getSnapshotlessGatewayUrl(): string | undefined { - const gatewayUrls = this.configService.get('urls.snapshotlessGateway') ?? this.configService.get('urls.lightGateway'); + // const gatewayUrls = this.configService.get('urls.snapshotlessGateway') ?? this.configService.get('urls.lightGateway'); + // if (!gatewayUrls) { + // return undefined; + // } + const gatewayUrls = this.configService.get('urls.gateway'); if (!gatewayUrls) { return undefined; } From 3198adcb2f1c4ed987bdd034ec13ff2ff7e02ef8 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 20 Nov 2025 08:56:55 +0200 Subject: [PATCH 028/206] revert --- src/common/api-config/api.config.service.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index 5f48fb3e4..e75dd50a5 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -56,11 +56,7 @@ export class ApiConfigService { } getSnapshotlessGatewayUrl(): string | undefined { - // const gatewayUrls = this.configService.get('urls.snapshotlessGateway') ?? this.configService.get('urls.lightGateway'); - // if (!gatewayUrls) { - // return undefined; - // } - const gatewayUrls = this.configService.get('urls.gateway'); + const gatewayUrls = this.configService.get('urls.snapshotlessGateway') ?? this.configService.get('urls.lightGateway'); if (!gatewayUrls) { return undefined; } From d3d58b2da1dcb8e777bcd6ffbe0c987d71d3a45b Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 20 Nov 2025 09:24:43 +0200 Subject: [PATCH 029/206] add staking v5 activation epoch feature --- src/endpoints/network/entities/feature.configs.ts | 3 +++ src/endpoints/network/network.service.ts | 1 + src/test/unit/controllers/network.controller.spec.ts | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/endpoints/network/entities/feature.configs.ts b/src/endpoints/network/entities/feature.configs.ts index 463239b8f..3d02e68f5 100644 --- a/src/endpoints/network/entities/feature.configs.ts +++ b/src/endpoints/network/entities/feature.configs.ts @@ -19,4 +19,7 @@ export class FeatureConfigs { @ApiProperty({ description: 'Staking v5 flag activation value' }) stakingV5: boolean = false; + + @ApiProperty({ description: 'Staking v5 activation epoch' }) + stakingV5ActivationEpoch: number = 0; } diff --git a/src/endpoints/network/network.service.ts b/src/endpoints/network/network.service.ts index 7a6bd9b76..0a88aa1e8 100644 --- a/src/endpoints/network/network.service.ts +++ b/src/endpoints/network/network.service.ts @@ -326,6 +326,7 @@ export class NetworkService { exchange: this.apiConfigService.isExchangeEnabled(), dataApi: this.apiConfigService.isDataApiFeatureEnabled(), stakingV5: this.apiConfigService.isStakingV5Enabled(), + stakingV5ActivationEpoch: this.apiConfigService.getStakingV5ActivationEpoch(), }); let indexerVersion: string | undefined; diff --git a/src/test/unit/controllers/network.controller.spec.ts b/src/test/unit/controllers/network.controller.spec.ts index f902919a9..4528d1060 100644 --- a/src/test/unit/controllers/network.controller.spec.ts +++ b/src/test/unit/controllers/network.controller.spec.ts @@ -107,6 +107,8 @@ describe("NetworkController", () => { marketplace: true, exchange: true, dataApi: true, + stakingV5: true, + stakingV5ActivationEpoch: 37, }, }; networkServiceMocks.getAbout.mockResolvedValue(mockAbout); From 113c4683a08cac70131a81a508e2dc67a639acad Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Fri, 21 Nov 2025 15:39:52 +0200 Subject: [PATCH 030/206] added devnet config --- config/config.devnet.yaml | 8 +++++++- src/endpoints/nodes/node.service.ts | 9 ++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index de8480d00..c714482dd 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -64,12 +64,15 @@ features: - '' jwtSecret: '' stakingV4: - enabled: false + enabled: true cronExpression: '*/5 * * * * *' activationEpoch: 1043 chainAndromeda: enabled: true activationEpoch: 4 + stakingV5: + enabled: true + activationEpoch: 4817 nodeEpochsLeft: enabled: false transactionProcessor: @@ -179,6 +182,9 @@ inflation: - 1130177 - 924690 - 719203 +stakingV5Inflation: + - 1068950 +# november 2025 devnet supply: 24_433_152. first year rewards = 50% * (8.757% * supply) = 1_069_805 nftProcess: parallelism: 1 maxRetries: 3 diff --git a/src/endpoints/nodes/node.service.ts b/src/endpoints/nodes/node.service.ts index 5ebb45b7c..2738011f4 100644 --- a/src/endpoints/nodes/node.service.ts +++ b/src/endpoints/nodes/node.service.ts @@ -366,14 +366,9 @@ export class NodeService { async getHeartbeatValidatorsAndQueue(): Promise { const nodes = await this.getHeartbeatAndValidators(); - try { - const queue = await this.getQueue(); + const queue = await this.getQueue(); - this.processQueuedNodes(nodes, queue); - } - catch(error) { - this.logger.error(error); - } + this.processQueuedNodes(nodes, queue); return nodes; } From d66e071addd2fb2ea7f5f09d312000521251c378 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Fri, 21 Nov 2025 15:42:08 +0200 Subject: [PATCH 031/206] small fix --- config/config.devnet.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index c714482dd..a11e2693d 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -183,7 +183,7 @@ inflation: - 924690 - 719203 stakingV5Inflation: - - 1068950 + - 1069805 # november 2025 devnet supply: 24_433_152. first year rewards = 50% * (8.757% * supply) = 1_069_805 nftProcess: parallelism: 1 From f5d37c8c4eb940270ee5ad529c4504bd5f804550 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Mon, 24 Nov 2025 14:30:52 +0200 Subject: [PATCH 032/206] added mainnet config --- config/config.devnet.yaml | 1 + config/config.mainnet.yaml | 7 +++++++ config/config.testnet.yaml | 1 + 3 files changed, 9 insertions(+) diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index a11e2693d..dc19664ed 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -185,6 +185,7 @@ inflation: stakingV5Inflation: - 1069805 # november 2025 devnet supply: 24_433_152. first year rewards = 50% * (8.757% * supply) = 1_069_805 +# TODO: calculate the inflation for upcoming years based on the inflation decay nftProcess: parallelism: 1 maxRetries: 3 diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index 2ab0a01a5..4eeac0b48 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -68,6 +68,9 @@ features: chainAndromeda: enabled: true activationEpoch: 1763 + stakingV5: + enabled: true + activationEpoch: 1951 nodeEpochsLeft: enabled: false transactionProcessor: @@ -183,6 +186,10 @@ inflation: - 1130177 - 924690 - 719203 +stakingV5Inflation: + - 1262802 +# december 2025 mainnet supply: 28_840_981. first year rewards = 50% * (8.75% * supply) = 1262802 +# TODO: calculate the inflation for upcoming years based on the inflation decay nftProcess: parallelism: 1 maxRetries: 3 diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index 407a0be6b..c7da59b5e 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -188,6 +188,7 @@ inflation: stakingV5Inflation: - 930117 # november 2025 testnet supply: 21_242_828. first year rewards = 50% * (8.75% * supply) = 930117 +# TODO: calculate the inflation for upcoming years based on the inflation decay nftProcess: parallelism: 1 maxRetries: 3 From b9d865f37c66f93e6d6a948b18214221f2697cdb Mon Sep 17 00:00:00 2001 From: cfaur09 Date: Mon, 24 Nov 2025 14:50:44 +0200 Subject: [PATCH 033/206] add stakingv5 e2e configs --- config/config.e2e.mainnet.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index 9cdb71bc6..c0af3d572 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -68,6 +68,9 @@ features: chainAndromeda: enabled: true activationEpoch: 4 + stakingV5: + enabled: true + activationEpoch: 1951 nodeEpochsLeft: enabled: false transactionProcessor: @@ -183,6 +186,8 @@ inflation: - 1130177 - 924690 - 719203 +stakingV5Inflation: + - 1262802 nftProcess: parallelism: 1 maxRetries: 3 From f5d613f36630cb2d793c3a8b802edaf97da2deaf Mon Sep 17 00:00:00 2001 From: bogdan-rosianu <51945539+bogdan-rosianu@users.noreply.github.com> Date: Thu, 27 Nov 2025 11:08:05 +0200 Subject: [PATCH 034/206] Deprecate relayed v1/v2 (#1564) --- config/config.devnet.yaml | 3 ++ config/config.mainnet.yaml | 3 ++ config/config.testnet.yaml | 3 ++ src/common/api-config/api.config.service.ts | 17 +++++++++++ .../entities/transaction.action.category.ts | 1 + .../transactions/transaction.service.ts | 28 +++++++++++++++++-- 6 files changed, 52 insertions(+), 3 deletions(-) diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index dc19664ed..0fac8a9f3 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -73,6 +73,9 @@ features: stakingV5: enabled: true activationEpoch: 4817 + deprecatedRelayedV1V2: + enabled: true + activationEpoch: 4569 nodeEpochsLeft: enabled: false transactionProcessor: diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index 4eeac0b48..557f07092 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -71,6 +71,9 @@ features: stakingV5: enabled: true activationEpoch: 1951 + deprecatedRelayedV1V2: + enabled: true + activationEpoch: 1918 nodeEpochsLeft: enabled: false transactionProcessor: diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index c7da59b5e..1fd058c62 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -70,6 +70,9 @@ features: stakingV5: enabled: true activationEpoch: 2519 + deprecatedRelayedV1V2: + enabled: true + activationEpoch: 2038 nodeEpochsLeft: enabled: false transactionProcessor: diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index e75dd50a5..119a263c7 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -907,6 +907,23 @@ export class ApiConfigService { return this.configService.get('features.stakingV5.activationEpoch') ?? 99999; } + isDeprecatedRelayedV1V2Enabled(): boolean { + return this.configService.get('features.deprecatedRelayedV1V2.enabled') ?? false; + } + + getDeprecatedRelayedV1V2ActivationEpoch(): number { + return this.configService.get('features.deprecatedRelayedV1V2.activationEpoch') ?? 99999; + } + + shouldDeprecateRelayedV1V2(epoch: number): boolean { + const isEnabled = this.isDeprecatedRelayedV1V2Enabled(); + if (!isEnabled) { + return false; + } + + return epoch >= this.getDeprecatedRelayedV1V2ActivationEpoch(); + } + isAssetsCdnFeatureEnabled(): boolean { return this.configService.get('features.assetsFetch.enabled') ?? false; } diff --git a/src/endpoints/transactions/transaction-action/entities/transaction.action.category.ts b/src/endpoints/transactions/transaction-action/entities/transaction.action.category.ts index 67c106757..ae70f573c 100644 --- a/src/endpoints/transactions/transaction-action/entities/transaction.action.category.ts +++ b/src/endpoints/transactions/transaction-action/entities/transaction.action.category.ts @@ -4,4 +4,5 @@ export enum TransactionActionCategory { stake = 'stake', scCall = 'scCall', scDeploy = 'scDeploy', + deprecatedRelayedV1V2 = 'deprecatedRelayedV1V2', } diff --git a/src/endpoints/transactions/transaction.service.ts b/src/endpoints/transactions/transaction.service.ts index ae196d8df..44d72e73d 100644 --- a/src/endpoints/transactions/transaction.service.ts +++ b/src/endpoints/transactions/transaction.service.ts @@ -42,6 +42,8 @@ import { NetworkService } from 'src/endpoints/network/network.service'; import { TransactionWithPpu } from './entities/transaction.with.ppu'; import { GasBucket } from './entities/gas.bucket'; import { GasBucketConstants } from './constants/gas.bucket.constants'; +import { TransactionAction } from "./transaction-action/entities/transaction.action"; +import { TransactionActionCategory } from "./transaction-action/entities/transaction.action.category"; @Injectable() export class TransactionService { @@ -193,7 +195,6 @@ export class TransactionService { for (const transaction of transactions) { transaction.type = undefined; - transaction.relayedVersion = this.extractRelayedVersion(transaction); } await this.processTransactions(transactions, { @@ -202,6 +203,8 @@ export class TransactionService { withActionTransferValue: queryOptions?.withActionTransferValue ?? false, }); + this.processRelayedInfo(transactions); + return transactions; } @@ -225,9 +228,9 @@ export class TransactionService { if (transaction !== null) { transaction.price = await this.getTransactionPrice(transaction); - transaction.relayedVersion = this.extractRelayedVersion(transaction); await this.processTransactions([transaction], { withScamInfo: true, withUsername: true, withActionTransferValue }); + this.processRelayedInfo([transaction]); if (transaction.pendingResults === true && transaction.results) { for (const result of transaction.results) { @@ -347,6 +350,25 @@ export class TransactionService { } } + private processRelayedInfo(transactions: TransactionDetailed[]) { + for (const transaction of transactions) { + transaction.relayedVersion = this.extractRelayedVersion(transaction); + if (transaction.relayedVersion && ["v1", "v2"].includes(transaction.relayedVersion)) { + const shouldSkip = this.apiConfigService.shouldDeprecateRelayedV1V2(transaction.epoch ?? 0); + if (shouldSkip) { + transaction.action = new TransactionAction({ + category: TransactionActionCategory.deprecatedRelayedV1V2, + name: "Deprecated transaction action", + description: `Relayed v1/v2 transactions are deprecated`, + }); + } + } + if (!transaction.isRelayed) { + transaction.relayedVersion = undefined; + } + } + } + async processTransactions(transactions: Transaction[], options: { withScamInfo: boolean, withUsername: boolean, withActionTransferValue: boolean }): Promise { this.normalizeTimestampMs(transactions); @@ -587,7 +609,7 @@ export class TransactionService { } private extractRelayedVersion(transaction: TransactionDetailed): string | undefined { - if (transaction.isRelayed == true && transaction.data) { + if (transaction.data) { const decodedData = BinaryUtils.base64Decode(transaction.data); if (decodedData.startsWith('relayedTx@')) { From 961b50b43fdb70b2f7d4e8ea5214b40a2b77438f Mon Sep 17 00:00:00 2001 From: cfaur09 Date: Thu, 27 Nov 2025 13:31:30 +0200 Subject: [PATCH 035/206] Add transaction reordering by nonce for account sent transactions --- .../transactions/transaction.service.ts | 33 +++++++++++++++++++ src/endpoints/transfers/transfer.service.ts | 7 ++++ 2 files changed, 40 insertions(+) diff --git a/src/endpoints/transactions/transaction.service.ts b/src/endpoints/transactions/transaction.service.ts index 44d72e73d..d62a1855e 100644 --- a/src/endpoints/transactions/transaction.service.ts +++ b/src/endpoints/transactions/transaction.service.ts @@ -98,6 +98,32 @@ export class TransactionService { return await this.indexerService.getTransactionCount(filter, address); } + public reorderAccountSentTransactionsByNonce(transactions: TransactionDetailed[], accountAddress: string): TransactionDetailed[] { + const sentPositions: number[] = []; + const sentTransactions: TransactionDetailed[] = []; + + transactions.forEach((tx, index) => { + if (tx.sender === accountAddress) { + sentPositions.push(index); + sentTransactions.push(tx); + } + }); + + sentTransactions.sort((a, b) => { + const nonceA = a.nonce ?? 0; + const nonceB = b.nonce ?? 0; + return nonceB - nonceA; + }); + + const result = [...transactions]; + + sentPositions.forEach((position, index) => { + result[position] = sentTransactions[index]; + }); + + return result; + } + private getDistinctUserAddressesFromTransactions(transactions: Transaction[]): string[] { const allAddresses = []; for (const transaction of transactions) { @@ -171,6 +197,13 @@ export class TransactionService { let transactions: TransactionDetailed[] = []; transactions = elasticTransactions.map(x => ApiUtils.mergeObjects(new TransactionDetailed(), x)); + const hasSenderFilter = filter.sender || (filter.senders && filter.senders.length > 0); + const hasReceiverFilter = filter.receivers && filter.receivers.length > 0; + + if (address && !hasSenderFilter && !hasReceiverFilter) { + transactions = this.reorderAccountSentTransactionsByNonce(transactions, address); + } + if (filter.hashes) { const txHashes: string[] = filter.hashes; const elasticHashes = elasticTransactions.map(({ txHash }: any) => txHash); diff --git a/src/endpoints/transfers/transfer.service.ts b/src/endpoints/transfers/transfer.service.ts index fdf9baa20..f3d126d69 100644 --- a/src/endpoints/transfers/transfer.service.ts +++ b/src/endpoints/transfers/transfer.service.ts @@ -142,6 +142,13 @@ export class TransferService { transactions.push(transaction); } + const hasSenderFilter = filter.sender || (filter.senders && filter.senders.length > 0); + const hasReceiverFilter = filter.receivers && filter.receivers.length > 0; + + if (filter.address && !hasSenderFilter && !hasReceiverFilter) { + transactions = this.transactionService.reorderAccountSentTransactionsByNonce(transactions, filter.address); + } + if (queryOptions.withBlockInfo || (fields && fields.includesSome(['senderBlockHash', 'receiverBlockHash', 'senderBlockNonce', 'receiverBlockNonce']))) { await this.transactionService.applyBlockInfo(transactions); } From 389367ba83e73dc83492d23114c33a44f2326805 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 27 Nov 2025 13:49:45 +0200 Subject: [PATCH 036/206] add relayed deprecation to transfers as well --- src/endpoints/transactions/transaction.service.ts | 3 ++- src/endpoints/transfers/transfer.service.ts | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/endpoints/transactions/transaction.service.ts b/src/endpoints/transactions/transaction.service.ts index 44d72e73d..1074f2fc4 100644 --- a/src/endpoints/transactions/transaction.service.ts +++ b/src/endpoints/transactions/transaction.service.ts @@ -350,12 +350,13 @@ export class TransactionService { } } - private processRelayedInfo(transactions: TransactionDetailed[]) { + public processRelayedInfo(transactions: TransactionDetailed[]) { for (const transaction of transactions) { transaction.relayedVersion = this.extractRelayedVersion(transaction); if (transaction.relayedVersion && ["v1", "v2"].includes(transaction.relayedVersion)) { const shouldSkip = this.apiConfigService.shouldDeprecateRelayedV1V2(transaction.epoch ?? 0); if (shouldSkip) { + transaction.function = undefined; transaction.action = new TransactionAction({ category: TransactionActionCategory.deprecatedRelayedV1V2, name: "Deprecated transaction action", diff --git a/src/endpoints/transfers/transfer.service.ts b/src/endpoints/transfers/transfer.service.ts index fdf9baa20..25815e32c 100644 --- a/src/endpoints/transfers/transfer.service.ts +++ b/src/endpoints/transfers/transfer.service.ts @@ -157,6 +157,8 @@ export class TransferService { withActionTransferValue: queryOptions.withActionTransferValue ?? false, }); + this.transactionService.processRelayedInfo(transactions); + return transactions; } From 0da962c271087afd6f2447af0cf195f77bb395ab Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 28 Nov 2025 12:07:39 +0200 Subject: [PATCH 037/206] add custom subscriptions --- src/crons/websocket/blocks.gateway.ts | 4 +- src/crons/websocket/events.gateway.ts | 4 +- src/crons/websocket/network.gateway.ts | 4 +- src/crons/websocket/pool.gateway.ts | 4 +- src/crons/websocket/room.key.generator.ts | 85 +++++++++++++++++++ .../websocket/transaction.custom.gateway.ts | 75 ++++++++++++++++ src/crons/websocket/transaction.gateway.ts | 4 +- src/crons/websocket/websocket.cron.service.ts | 66 ++++++++++++++ .../websocket.subscription.module.ts | 4 + src/endpoints/rounds/entities/round.ts | 4 + .../dtos/transaction.custom.subscribe.ts | 15 ++++ src/utils/cache.info.ts | 7 ++ src/utils/ws.subscription.limiter.ts | 20 +++++ 13 files changed, 291 insertions(+), 5 deletions(-) create mode 100644 src/crons/websocket/room.key.generator.ts create mode 100644 src/crons/websocket/transaction.custom.gateway.ts create mode 100644 src/endpoints/transactions/entities/dtos/transaction.custom.subscribe.ts create mode 100644 src/utils/ws.subscription.limiter.ts diff --git a/src/crons/websocket/blocks.gateway.ts b/src/crons/websocket/blocks.gateway.ts index 40cfd5038..c196c0ea9 100644 --- a/src/crons/websocket/blocks.gateway.ts +++ b/src/crons/websocket/blocks.gateway.ts @@ -4,10 +4,11 @@ import { BlockService } from '../../endpoints/blocks/block.service'; import { BlockFilter } from '../../endpoints/blocks/entities/block.filter'; import { QueryPagination } from 'src/common/entities/query.pagination'; import { BlockSubscribePayload } from '../../endpoints/blocks/entities/block.subscribe'; -import { UseFilters } from '@nestjs/common'; +import { UseFilters, UseGuards } from '@nestjs/common'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; +import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -19,6 +20,7 @@ export class BlocksGateway { constructor(private readonly blockService: BlockService) { } + @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeBlocks') async handleSubscription( @ConnectedSocket() client: Socket, diff --git a/src/crons/websocket/events.gateway.ts b/src/crons/websocket/events.gateway.ts index c95e982e0..300725098 100644 --- a/src/crons/websocket/events.gateway.ts +++ b/src/crons/websocket/events.gateway.ts @@ -1,6 +1,6 @@ import { WebSocketGateway, WebSocketServer, SubscribeMessage, MessageBody, ConnectedSocket } from '@nestjs/websockets'; import { Server, Socket } from 'socket.io'; -import { UseFilters } from '@nestjs/common'; +import { UseFilters, UseGuards } from '@nestjs/common'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; @@ -8,6 +8,7 @@ import { EventsService } from '../../endpoints/events/events.service'; import { EventsFilter } from '../../endpoints/events/entities/events.filter'; import { EventsSubscribePayload } from '../../endpoints/events/entities/events.subscribe'; import { QueryPagination } from 'src/common/entities/query.pagination'; +import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -19,6 +20,7 @@ export class EventsGateway { constructor(private readonly eventsService: EventsService) { } + @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeEvents') async handleSubscription( @ConnectedSocket() client: Socket, diff --git a/src/crons/websocket/network.gateway.ts b/src/crons/websocket/network.gateway.ts index 5618de162..ef39a36a3 100644 --- a/src/crons/websocket/network.gateway.ts +++ b/src/crons/websocket/network.gateway.ts @@ -1,9 +1,10 @@ import { WebSocketGateway, WebSocketServer, SubscribeMessage } from '@nestjs/websockets'; import { Server, Socket } from 'socket.io'; import { NetworkService } from '../../endpoints/network/network.service'; -import { UseFilters } from '@nestjs/common'; +import { UseFilters, UseGuards } from '@nestjs/common'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; +import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -15,6 +16,7 @@ export class NetworkGateway { constructor(private readonly networkService: NetworkService) { } + @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeStats') async handleSubscription(client: Socket) { await client.join('statsRoom'); diff --git a/src/crons/websocket/pool.gateway.ts b/src/crons/websocket/pool.gateway.ts index 426e14e10..bc7b76715 100644 --- a/src/crons/websocket/pool.gateway.ts +++ b/src/crons/websocket/pool.gateway.ts @@ -1,6 +1,6 @@ import { WebSocketGateway, WebSocketServer, SubscribeMessage, MessageBody, ConnectedSocket } from '@nestjs/websockets'; import { Server, Socket } from 'socket.io'; -import { UseFilters } from '@nestjs/common'; +import { UseFilters, UseGuards } from '@nestjs/common'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; @@ -9,6 +9,7 @@ import { PoolService } from '../../endpoints/pool/pool.service'; import { PoolFilter } from '../../endpoints/pool/entities/pool.filter'; import { QueryPagination } from 'src/common/entities/query.pagination'; import { PoolSubscribePayload } from '../../endpoints/pool/entities/pool.subscribe'; +import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -20,6 +21,7 @@ export class PoolGateway { constructor(private readonly poolService: PoolService) { } + @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribePool') async handleSubscription( @ConnectedSocket() client: Socket, diff --git a/src/crons/websocket/room.key.generator.ts b/src/crons/websocket/room.key.generator.ts new file mode 100644 index 000000000..c04fa765a --- /dev/null +++ b/src/crons/websocket/room.key.generator.ts @@ -0,0 +1,85 @@ +import { getMetadataStorage } from 'class-validator'; + +export class RoomKeyGenerator { + // Cache to avoid reading class metadata on every transaction (Performance optimization) + private static keysCache = new Map(); + + public static generate( + prefix: string, + data: Record, + dtoClass: Function, + ): string[] { + // get allowed keys from DTO (with caching) + const allowedKeys = this.getOrExtractKeys(dtoClass); + + // extract only key-value pairs that exist in the data and are non-null + const activeFilters: { key: string; value: any }[] = []; + + for (const key of allowedKeys) { + const value = data[key]; + // Ignore null, undefined, and empty strings + if (value !== undefined && value !== null && value !== '') { + activeFilters.push({ key, value }); + } + } + + if (activeFilters.length === 0) { + return []; + } + + const rooms: string[] = []; + const subsetCount = 1 << activeFilters.length; // 2^N combinations + + // Generate combinatorics + // Start from 1 to ignore the empty set + for (let i = 1; i < subsetCount; i++) { + const currentSubset: Record = {}; + + for (let j = 0; j < activeFilters.length; j++) { + // Check the bit to decide whether to include the element in the subset + if ((i & (1 << j)) > 0) { + const item = activeFilters[j]; + currentSubset[item.key] = item.value; + } + } + + rooms.push(`${prefix}${this.deterministicStringify(currentSubset)}`); + } + + return rooms; + } + + static deterministicStringify(obj: Record): string { + return JSON.stringify( + Object.keys(obj) + .sort() + .reduce((result, key) => { + result[key] = obj[key]; + return result; + }, {} as Record), + ); + } + + private static getOrExtractKeys(targetClass: Function): string[] { + if (this.keysCache.has(targetClass)) { + return this.keysCache.get(targetClass)!; + } + + // Access class-validator storage to find decorated properties + const metadatas = getMetadataStorage().getTargetValidationMetadatas( + targetClass, + '', + false, + false, + ); + + const uniqueProperties = new Set( + metadatas.map((metadata) => metadata.propertyName), + ); + const keys = Array.from(uniqueProperties); + + // Save to cache + this.keysCache.set(targetClass, keys); + return keys; + } +} \ No newline at end of file diff --git a/src/crons/websocket/transaction.custom.gateway.ts b/src/crons/websocket/transaction.custom.gateway.ts new file mode 100644 index 000000000..31dd62966 --- /dev/null +++ b/src/crons/websocket/transaction.custom.gateway.ts @@ -0,0 +1,75 @@ +import { WebSocketGateway, WebSocketServer, SubscribeMessage, ConnectedSocket, MessageBody } from '@nestjs/websockets'; +import { Server, Socket } from 'socket.io'; +import { TransactionService } from '../../endpoints/transactions/transaction.service'; +import { TransactionFilter } from '../../endpoints/transactions/entities/transaction.filter'; +import { QueryPagination } from 'src/common/entities/query.pagination'; +import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; +import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; +import { UseFilters, UseGuards } from '@nestjs/common'; +import { OriginLogger } from '@multiversx/sdk-nestjs-common'; +import { TransactionCustomSubscribePayload } from 'src/endpoints/transactions/entities/dtos/transaction.custom.subscribe'; +import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; +import { RoomKeyGenerator } from './room.key.generator'; +import { Transaction } from 'src/endpoints/transactions/entities/transaction'; + +@UseFilters(WebsocketExceptionsFilter) +@WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) +export class TransactionsCustomGateway { + private readonly logger = new OriginLogger(TransactionsCustomGateway.name); + + @WebSocketServer() + server!: Server; + + constructor( + private readonly transactionService: TransactionService, + ) { } + + @UseGuards(WsSubscriptionLimiterGuard) + @SubscribeMessage('subscribeCustomTransactions') + async handleCustomSubscription( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: TransactionCustomSubscribePayload) { + + const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload) + await client.join(`custom-tx-${filterIdentifier}`); + + return { status: 'success' }; + } + + async pushTransactionsForTimestampMs(timestampMs: number): Promise { + try { + const timestamp = timestampMs / 1000; // TODO: add support for timestampMs + const allTransactions = await this.transactionService.getTransactions( + new TransactionFilter({ before: timestamp, after: timestamp }), + new QueryPagination({ size: 10000 }) // TODO: handle pagination with more than 10k txs + ); + + const txFilteredForBroadcast: Map = new Map(); + for (const transaction of allTransactions) { + const roomKeys = RoomKeyGenerator.generate( + 'custom-tx-', + transaction, + TransactionCustomSubscribePayload, + ); + + for (const roomKey of roomKeys) { + if (this.server.sockets.adapter.rooms.has(roomKey)) { + if (!txFilteredForBroadcast.has(roomKey)) { + txFilteredForBroadcast.set(roomKey, []); + } + txFilteredForBroadcast.get(roomKey)!.push(transaction); + } + } + } + + for (const [roomName] of this.server.sockets.adapter.rooms) { + if (txFilteredForBroadcast.has(roomName)) { + this.server.to(roomName).emit("customTransactionUpdate", { transactions: txFilteredForBroadcast.get(roomName), timestampMs }); + } + } + } catch (error) { + this.logger.error(error); + } + } + +} diff --git a/src/crons/websocket/transaction.gateway.ts b/src/crons/websocket/transaction.gateway.ts index 85c3a76d1..6f6f9aca1 100644 --- a/src/crons/websocket/transaction.gateway.ts +++ b/src/crons/websocket/transaction.gateway.ts @@ -7,8 +7,9 @@ import { TransactionQueryOptions } from '../../endpoints/transactions/entities/t import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; import { TransactionSubscribePayload } from '../../endpoints/transactions/entities/dtos/transaction.subscribe'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; -import { UseFilters } from '@nestjs/common'; +import { UseFilters, UseGuards } from '@nestjs/common'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; +import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -20,6 +21,7 @@ export class TransactionsGateway { constructor(private readonly transactionService: TransactionService) { } + @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeTransactions') async handleSubscription( @ConnectedSocket() client: Socket, diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 9aae69097..421efb265 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -10,6 +10,15 @@ import { WebSocketGateway, WebSocketServer } from '@nestjs/websockets'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { MetricsEvents } from 'src/utils/metrics-events.constants'; import { Server } from 'socket.io'; +import { CacheService } from '@multiversx/sdk-nestjs-cache'; +import { CacheInfo } from 'src/utils/cache.info'; +import { RoundService } from 'src/endpoints/rounds/round.service'; +import { RoundFilter } from 'src/endpoints/rounds/entities/round.filter'; +import { ElasticQuery, ElasticService, QueryType } from '@multiversx/sdk-nestjs-elastic'; +import { NetworkService } from 'src/endpoints/network/network.service'; +import { Stats } from 'src/endpoints/network/entities/stats'; +import { TransactionsCustomGateway } from './transaction.custom.gateway'; + @Injectable() @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) export class WebsocketCronService { @@ -23,6 +32,11 @@ export class WebsocketCronService { private readonly poolGateway: PoolGateway, private readonly eventsGateway: EventsGateway, private readonly eventEmitter: EventEmitter2, + private readonly cacheService: CacheService, + private readonly roundService: RoundService, + private readonly elasticService: ElasticService, + private readonly networkService: NetworkService, + private readonly transactionsCustomGateway: TransactionsCustomGateway, ) { } @Cron('*/1 * * * * *') @@ -69,4 +83,56 @@ export class WebsocketCronService { async handleEventsUpdate() { await this.eventsGateway.pushEvents(); } + + @Cron('*/3 * * * * *') + @Lock({ name: 'Push custom transactions to subscribers', verbose: true }) + async handleCustomTransactionsUpdate() { + const latestRoundOnChainData = await this.getLatestRoundOnChainData(); + + let roundToProcessTimestampMs = await this.cacheService.getOrSetLocal( + CacheInfo.WsTimestampMsToProcess().key, + async () => latestRoundOnChainData.timestampMs ?? latestRoundOnChainData.timestamp * 1000, + CacheInfo.WsTimestampMsToProcess().ttl, + ); + + const stats = await this.networkService.getStats(); + + const pollingDelay = stats.refreshRate / 2; + const pollingMaxAttempts = 10; + while (roundToProcessTimestampMs <= latestRoundOnChainData.timestampMs) { + await this.pollUntil(async () => this.isElasticDataAvailableForTimestampMs(roundToProcessTimestampMs, stats), pollingDelay, pollingMaxAttempts); + + // call gateways to process logic for custom subscriptions + await this.transactionsCustomGateway.pushTransactionsForTimestampMs(roundToProcessTimestampMs); + roundToProcessTimestampMs += stats.refreshRate; + } + this.cacheService.setLocal( + CacheInfo.WsTimestampMsToProcess().key, + roundToProcessTimestampMs, + CacheInfo.WsTimestampMsToProcess().ttl, + ); + } + + private async getLatestRoundOnChainData() { + const rounds = await this.roundService.getRounds(new RoundFilter({ size: 1 })); + return rounds[0]; + } + + private async isElasticDataAvailableForTimestampMs(timestampMs: number, networkStats: Stats) { + const nextRoundTimestampMs = timestampMs + networkStats.refreshRate; + const rounds = await this.elasticService.getCount( + 'rounds', + ElasticQuery.create().withMustCondition(QueryType.Match('timestampMs', nextRoundTimestampMs)) + ); + + return rounds === networkStats.shards + 1; // +1 for metachain + } + + async pollUntil(conditionFn: () => Promise, intervalMs = 1000, maxAttempts = 30) { + let attempts = 0; + while (!await conditionFn()) { + if (++attempts >= maxAttempts) throw new Error('Polling timeout exceeded'); + await new Promise(r => setTimeout(r, intervalMs)); + } + } } diff --git a/src/crons/websocket/websocket.subscription.module.ts b/src/crons/websocket/websocket.subscription.module.ts index 89276d50d..5cdd245a5 100644 --- a/src/crons/websocket/websocket.subscription.module.ts +++ b/src/crons/websocket/websocket.subscription.module.ts @@ -12,6 +12,8 @@ import { TransactionsGateway } from './transaction.gateway'; import { PoolGateway } from './pool.gateway'; import { EventsGateway } from './events.gateway'; import { ConnectionHandler } from './connection.handler'; +import { RoundModule } from 'src/endpoints/rounds/round.module'; +import { TransactionsCustomGateway } from './transaction.custom.gateway'; @Module({ imports: [ @@ -21,6 +23,7 @@ import { ConnectionHandler } from './connection.handler'; NetworkModule, PoolModule, EventsModule, + RoundModule, ], providers: [ WebsocketCronService, @@ -30,6 +33,7 @@ import { ConnectionHandler } from './connection.handler'; TransactionsGateway, PoolGateway, EventsGateway, + TransactionsCustomGateway, ], }) export class WebsocketSubscriptionModule { } diff --git a/src/endpoints/rounds/entities/round.ts b/src/endpoints/rounds/entities/round.ts index 9f09616d0..fd96c726d 100644 --- a/src/endpoints/rounds/entities/round.ts +++ b/src/endpoints/rounds/entities/round.ts @@ -19,4 +19,8 @@ export class Round { @ApiProperty({ type: Number, example: 1651148112 }) timestamp: number = 0; + + // only available for rounds after Barnard protocol upgrade + @ApiProperty({ type: Number, example: 1651148112000 }) + timestampMs: number = 0; } diff --git a/src/endpoints/transactions/entities/dtos/transaction.custom.subscribe.ts b/src/endpoints/transactions/entities/dtos/transaction.custom.subscribe.ts new file mode 100644 index 000000000..897f4b06d --- /dev/null +++ b/src/endpoints/transactions/entities/dtos/transaction.custom.subscribe.ts @@ -0,0 +1,15 @@ +import { IsOptional, IsString } from 'class-validator'; + +export class TransactionCustomSubscribePayload { + @IsOptional() + @IsString() + sender?: string; + + @IsOptional() + @IsString() + receiver?: string; + + @IsOptional() + @IsString() + function?: string; +} diff --git a/src/utils/cache.info.ts b/src/utils/cache.info.ts index 00059ae49..6a008e4b1 100644 --- a/src/utils/cache.info.ts +++ b/src/utils/cache.info.ts @@ -710,4 +710,11 @@ export class CacheInfo { ttl: Constants.oneSecond() * 30, }; } + + static WsTimestampMsToProcess(): CacheInfo { + return { + key: `wsLastProcessedTimestampMs`, + ttl: Constants.oneMinute(), + }; + } } diff --git a/src/utils/ws.subscription.limiter.ts b/src/utils/ws.subscription.limiter.ts new file mode 100644 index 000000000..2be46ee47 --- /dev/null +++ b/src/utils/ws.subscription.limiter.ts @@ -0,0 +1,20 @@ + +import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; +import { Socket } from 'socket.io'; +import { WsException } from '@nestjs/websockets'; + +@Injectable() +export class WsSubscriptionLimiterGuard implements CanActivate { + static MAX_ROOMS = 5; // TODO: adjust limit + + canActivate(context: ExecutionContext): boolean { + const client: Socket = context.switchToWs().getClient(); + + //TODO: check for ip, not for each socket + if (client.rooms.size >= WsSubscriptionLimiterGuard.MAX_ROOMS) { + throw new WsException(`Maximum number of ${WsSubscriptionLimiterGuard.MAX_ROOMS} subscriptions reached!`); + } + + return true; + } +} \ No newline at end of file From b2ba2a9352fcb24ae3261dd6f527189b9d0a79c8 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 28 Nov 2025 12:08:50 +0200 Subject: [PATCH 038/206] fix lint --- src/crons/websocket/room.key.generator.ts | 2 +- src/crons/websocket/transaction.custom.gateway.ts | 2 +- src/utils/ws.subscription.limiter.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/crons/websocket/room.key.generator.ts b/src/crons/websocket/room.key.generator.ts index c04fa765a..c30442db3 100644 --- a/src/crons/websocket/room.key.generator.ts +++ b/src/crons/websocket/room.key.generator.ts @@ -82,4 +82,4 @@ export class RoomKeyGenerator { this.keysCache.set(targetClass, keys); return keys; } -} \ No newline at end of file +} diff --git a/src/crons/websocket/transaction.custom.gateway.ts b/src/crons/websocket/transaction.custom.gateway.ts index 31dd62966..62b7bba26 100644 --- a/src/crons/websocket/transaction.custom.gateway.ts +++ b/src/crons/websocket/transaction.custom.gateway.ts @@ -30,7 +30,7 @@ export class TransactionsCustomGateway { @ConnectedSocket() client: Socket, @MessageBody(new WsValidationPipe()) payload: TransactionCustomSubscribePayload) { - const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload) + const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload); await client.join(`custom-tx-${filterIdentifier}`); return { status: 'success' }; diff --git a/src/utils/ws.subscription.limiter.ts b/src/utils/ws.subscription.limiter.ts index 2be46ee47..1eed046eb 100644 --- a/src/utils/ws.subscription.limiter.ts +++ b/src/utils/ws.subscription.limiter.ts @@ -17,4 +17,4 @@ export class WsSubscriptionLimiterGuard implements CanActivate { return true; } -} \ No newline at end of file +} From 9a7a160f03c2105dd187782cbbbfab44f7150758 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 28 Nov 2025 12:23:29 +0200 Subject: [PATCH 039/206] fix lint & unit tests --- src/crons/websocket/websocket.cron.service.ts | 6 ++++-- src/endpoints/rounds/entities/round.ts | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 421efb265..14016ea33 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -88,10 +88,11 @@ export class WebsocketCronService { @Lock({ name: 'Push custom transactions to subscribers', verbose: true }) async handleCustomTransactionsUpdate() { const latestRoundOnChainData = await this.getLatestRoundOnChainData(); + latestRoundOnChainData.timestampMs = latestRoundOnChainData.timestampMs ?? latestRoundOnChainData.timestamp * 1000; let roundToProcessTimestampMs = await this.cacheService.getOrSetLocal( CacheInfo.WsTimestampMsToProcess().key, - async () => latestRoundOnChainData.timestampMs ?? latestRoundOnChainData.timestamp * 1000, + async () => await Promise.resolve(latestRoundOnChainData.timestampMs ?? latestRoundOnChainData.timestamp * 1000), CacheInfo.WsTimestampMsToProcess().ttl, ); @@ -100,7 +101,8 @@ export class WebsocketCronService { const pollingDelay = stats.refreshRate / 2; const pollingMaxAttempts = 10; while (roundToProcessTimestampMs <= latestRoundOnChainData.timestampMs) { - await this.pollUntil(async () => this.isElasticDataAvailableForTimestampMs(roundToProcessTimestampMs, stats), pollingDelay, pollingMaxAttempts); + + await this.pollUntil(async () => await this.isElasticDataAvailableForTimestampMs(roundToProcessTimestampMs, stats), pollingDelay, pollingMaxAttempts); // call gateways to process logic for custom subscriptions await this.transactionsCustomGateway.pushTransactionsForTimestampMs(roundToProcessTimestampMs); diff --git a/src/endpoints/rounds/entities/round.ts b/src/endpoints/rounds/entities/round.ts index fd96c726d..3183bc39d 100644 --- a/src/endpoints/rounds/entities/round.ts +++ b/src/endpoints/rounds/entities/round.ts @@ -21,6 +21,6 @@ export class Round { timestamp: number = 0; // only available for rounds after Barnard protocol upgrade - @ApiProperty({ type: Number, example: 1651148112000 }) - timestampMs: number = 0; + @ApiProperty({ type: Number, example: 1651148112000, required: false }) + timestampMs?: number; } From ad97aba2a78221f7f6f0196c2dcc40475fe64fc9 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 28 Nov 2025 14:43:40 +0200 Subject: [PATCH 040/206] hardcode class fields --- src/crons/websocket/room.key.generator.ts | 34 ++++++----------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/src/crons/websocket/room.key.generator.ts b/src/crons/websocket/room.key.generator.ts index c30442db3..88c4651e4 100644 --- a/src/crons/websocket/room.key.generator.ts +++ b/src/crons/websocket/room.key.generator.ts @@ -1,16 +1,13 @@ -import { getMetadataStorage } from 'class-validator'; +import { TransactionCustomSubscribePayload } from 'src/endpoints/transactions/entities/dtos/transaction.custom.subscribe'; export class RoomKeyGenerator { - // Cache to avoid reading class metadata on every transaction (Performance optimization) - private static keysCache = new Map(); - public static generate( prefix: string, data: Record, dtoClass: Function, ): string[] { // get allowed keys from DTO (with caching) - const allowedKeys = this.getOrExtractKeys(dtoClass); + const allowedKeys = this.getKeys(dtoClass); // extract only key-value pairs that exist in the data and are non-null const activeFilters: { key: string; value: any }[] = []; @@ -60,26 +57,13 @@ export class RoomKeyGenerator { ); } - private static getOrExtractKeys(targetClass: Function): string[] { - if (this.keysCache.has(targetClass)) { - return this.keysCache.get(targetClass)!; + private static getKeys(targetClass: Function): string[] { + switch (targetClass) { + case TransactionCustomSubscribePayload: + return ['function', 'receiver', 'sender']; + default: + console.warn(`RoomKeyGenerator: No manual key mapping found for class ${targetClass.name}`); + return [] } - - // Access class-validator storage to find decorated properties - const metadatas = getMetadataStorage().getTargetValidationMetadatas( - targetClass, - '', - false, - false, - ); - - const uniqueProperties = new Set( - metadatas.map((metadata) => metadata.propertyName), - ); - const keys = Array.from(uniqueProperties); - - // Save to cache - this.keysCache.set(targetClass, keys); - return keys; } } From 19443b5b0e87a0a420aecf88e367fbb408792a68 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 28 Nov 2025 14:46:26 +0200 Subject: [PATCH 041/206] lint --- src/crons/websocket/room.key.generator.ts | 2 +- src/crons/websocket/websocket.cron.service.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/crons/websocket/room.key.generator.ts b/src/crons/websocket/room.key.generator.ts index 88c4651e4..b05e7f46f 100644 --- a/src/crons/websocket/room.key.generator.ts +++ b/src/crons/websocket/room.key.generator.ts @@ -63,7 +63,7 @@ export class RoomKeyGenerator { return ['function', 'receiver', 'sender']; default: console.warn(`RoomKeyGenerator: No manual key mapping found for class ${targetClass.name}`); - return [] + return []; } } } diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 14016ea33..8b460d128 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -101,7 +101,6 @@ export class WebsocketCronService { const pollingDelay = stats.refreshRate / 2; const pollingMaxAttempts = 10; while (roundToProcessTimestampMs <= latestRoundOnChainData.timestampMs) { - await this.pollUntil(async () => await this.isElasticDataAvailableForTimestampMs(roundToProcessTimestampMs, stats), pollingDelay, pollingMaxAttempts); // call gateways to process logic for custom subscriptions From 0caaeca6af05fff9f350b5d7f2f5152eecedafb7 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 28 Nov 2025 14:48:22 +0200 Subject: [PATCH 042/206] refactor --- src/crons/websocket/room.key.generator.ts | 2 +- .../entities/dtos/transaction.custom.subscribe.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/crons/websocket/room.key.generator.ts b/src/crons/websocket/room.key.generator.ts index b05e7f46f..4ccdeb94b 100644 --- a/src/crons/websocket/room.key.generator.ts +++ b/src/crons/websocket/room.key.generator.ts @@ -60,7 +60,7 @@ export class RoomKeyGenerator { private static getKeys(targetClass: Function): string[] { switch (targetClass) { case TransactionCustomSubscribePayload: - return ['function', 'receiver', 'sender']; + return TransactionCustomSubscribePayload.getClassFields(); default: console.warn(`RoomKeyGenerator: No manual key mapping found for class ${targetClass.name}`); return []; diff --git a/src/endpoints/transactions/entities/dtos/transaction.custom.subscribe.ts b/src/endpoints/transactions/entities/dtos/transaction.custom.subscribe.ts index 897f4b06d..81efb7c42 100644 --- a/src/endpoints/transactions/entities/dtos/transaction.custom.subscribe.ts +++ b/src/endpoints/transactions/entities/dtos/transaction.custom.subscribe.ts @@ -12,4 +12,8 @@ export class TransactionCustomSubscribePayload { @IsOptional() @IsString() function?: string; + + public static getClassFields(): string[] { + return ['function', 'receiver', 'sender']; + } } From cb8c107382003d1ddce0b01f9c24ded00df0bef5 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Fri, 28 Nov 2025 15:02:55 +0200 Subject: [PATCH 043/206] add tests for room key generator --- .../websocket/room.key.generator.spec.ts | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 src/test/unit/crons/websocket/room.key.generator.spec.ts diff --git a/src/test/unit/crons/websocket/room.key.generator.spec.ts b/src/test/unit/crons/websocket/room.key.generator.spec.ts new file mode 100644 index 000000000..85a0ca4a6 --- /dev/null +++ b/src/test/unit/crons/websocket/room.key.generator.spec.ts @@ -0,0 +1,102 @@ +import { RoomKeyGenerator } from 'src/crons/websocket/room.key.generator'; +import { TransactionCustomSubscribePayload } from 'src/endpoints/transactions/entities/dtos/transaction.custom.subscribe'; + +describe('RoomKeyGenerator', () => { + describe('deterministicStringify', () => { + it('sorts object keys alphabetically', () => { + const input = { b: 2, a: 1, c: 3 } as Record; + const result = RoomKeyGenerator.deterministicStringify(input); + expect(result).toBe('{"a":1,"b":2,"c":3}'); + }); + }); + + describe('generate', () => { + it('returns empty array when no active filters', () => { + expect( + RoomKeyGenerator.generate('', {}, TransactionCustomSubscribePayload), + ).toEqual([]); + + expect( + RoomKeyGenerator.generate( + '', + { sender: undefined, receiver: null, function: '' }, + TransactionCustomSubscribePayload, + ), + ).toEqual([]); + }); + + it('ignores keys not present in DTO', () => { + const data = { + sender: 'alice', + receiver: 'bob', + function: 'transfer', + other: 123, // should be ignored + } as Record; + + const rooms = RoomKeyGenerator.generate('', data, TransactionCustomSubscribePayload); + // with 3 active fields, we expect 2^3 - 1 = 7 rooms + expect(rooms.length).toBe(7); + // None of the room strings should include the ignored key + expect(rooms.every((r) => !r.includes('other'))).toBe(true); + }); + + it('generates all combinations for provided filters', () => { + const data = { + sender: 'alice', + receiver: 'bob', + function: 'transfer', + } as Record; + + const rooms = RoomKeyGenerator.generate('', data, TransactionCustomSubscribePayload); + // 3 active fields -> 7 combinations + expect(rooms).toHaveLength(7); + + // Build the expected set of JSON payloads (without prefix) + const expectedPayloads = [ + { function: 'transfer' }, + { receiver: 'bob' }, + { sender: 'alice' }, + { function: 'transfer', receiver: 'bob' }, + { function: 'transfer', sender: 'alice' }, + { receiver: 'bob', sender: 'alice' }, + { function: 'transfer', receiver: 'bob', sender: 'alice' }, + ].map((obj) => RoomKeyGenerator.deterministicStringify(obj)); + + // Sort and compare as sets to avoid order sensitivity + const sortedRooms = [...rooms].sort(); + const sortedExpected = [...expectedPayloads].sort(); + + expect(sortedRooms).toEqual(sortedExpected); + }); + + it('applies custom prefix consistently vs no prefix', () => { + const data = { + sender: 'alice', + receiver: 'bob', + function: 'transfer', + } as Record; + + const prefix = 'custom:'; + const withPrefix = RoomKeyGenerator.generate(prefix, data, TransactionCustomSubscribePayload).sort(); + const withoutPrefix = RoomKeyGenerator.generate('', data, TransactionCustomSubscribePayload).sort(); + + expect(withPrefix.length).toBe(withoutPrefix.length); + for (let i = 0; i < withPrefix.length; i++) { + expect(withPrefix[i]).toBe(prefix + withoutPrefix[i]); + } + }); + + it('filters out null/undefined/empty string values', () => { + const data = { + sender: 'alice', + receiver: '', // should be ignored + function: undefined, // should be ignored + } as Record; + + const rooms = RoomKeyGenerator.generate('', data, TransactionCustomSubscribePayload); + // Only one active key (sender) -> 1 combination + expect(rooms).toHaveLength(1); + expect(rooms[0]).toBe('{"sender":"alice"}'); + }); + }); +}); From 967c108582e7439915b21801f3ec282d03a4d0ed Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 28 Nov 2025 16:50:09 +0200 Subject: [PATCH 044/206] iterate over round only if there are active subscriptions --- src/crons/websocket/connection.handler.ts | 17 ++++++++++++++++- src/crons/websocket/websocket.cron.service.ts | 8 ++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/crons/websocket/connection.handler.ts b/src/crons/websocket/connection.handler.ts index b8f50ed53..94d8c1bf0 100644 --- a/src/crons/websocket/connection.handler.ts +++ b/src/crons/websocket/connection.handler.ts @@ -17,4 +17,19 @@ export class ConnectionHandler implements OnGatewayDisconnect, OnGatewayConnecti handleConnection(client: Socket, ..._args: any[]) { client.setMaxListeners(12); } -} + + //TODO: add support for multiple key prefixes + countSubscriptionsByPrefix(prefix: string): number { + let count = 0; + + const rooms = this.server.sockets.adapter.rooms; + + for (const roomName of rooms.keys()) { + if (roomName.startsWith(prefix)) { + count++; + } + } + + return count; + } +} \ No newline at end of file diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 8b460d128..c6cbb30c8 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -18,6 +18,7 @@ import { ElasticQuery, ElasticService, QueryType } from '@multiversx/sdk-nestjs- import { NetworkService } from 'src/endpoints/network/network.service'; import { Stats } from 'src/endpoints/network/entities/stats'; import { TransactionsCustomGateway } from './transaction.custom.gateway'; +import { ConnectionHandler } from './connection.handler'; @Injectable() @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -37,6 +38,7 @@ export class WebsocketCronService { private readonly elasticService: ElasticService, private readonly networkService: NetworkService, private readonly transactionsCustomGateway: TransactionsCustomGateway, + private readonly connectionHandler: ConnectionHandler, ) { } @Cron('*/1 * * * * *') @@ -87,6 +89,12 @@ export class WebsocketCronService { @Cron('*/3 * * * * *') @Lock({ name: 'Push custom transactions to subscribers', verbose: true }) async handleCustomTransactionsUpdate() { + // TODO: add support for multiple key prefixes + if (this.connectionHandler.countSubscriptionsByPrefix('custom-tx-') === 0) { + this.cacheService.deleteLocal(CacheInfo.WsTimestampMsToProcess().key); + return; + } + const latestRoundOnChainData = await this.getLatestRoundOnChainData(); latestRoundOnChainData.timestampMs = latestRoundOnChainData.timestampMs ?? latestRoundOnChainData.timestamp * 1000; From 23011d7d8e1221454554de7e159630f947edc381 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 2 Dec 2025 14:08:06 +0200 Subject: [PATCH 045/206] improvements --- src/crons/websocket/connection.handler.ts | 11 +++---- .../websocket/transaction.custom.gateway.ts | 30 ++++++++++++++----- src/crons/websocket/websocket.cron.service.ts | 3 +- 3 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/crons/websocket/connection.handler.ts b/src/crons/websocket/connection.handler.ts index 94d8c1bf0..c8eb343e8 100644 --- a/src/crons/websocket/connection.handler.ts +++ b/src/crons/websocket/connection.handler.ts @@ -18,18 +18,15 @@ export class ConnectionHandler implements OnGatewayDisconnect, OnGatewayConnecti client.setMaxListeners(12); } - //TODO: add support for multiple key prefixes - countSubscriptionsByPrefix(prefix: string): number { - let count = 0; - + hasSubscriptionsWithPrefixes(prefixes: string[]): boolean { const rooms = this.server.sockets.adapter.rooms; for (const roomName of rooms.keys()) { - if (roomName.startsWith(prefix)) { - count++; + if (prefixes.some(prefix => roomName.startsWith(prefix))) { + return true; } } - return count; + return false; } } \ No newline at end of file diff --git a/src/crons/websocket/transaction.custom.gateway.ts b/src/crons/websocket/transaction.custom.gateway.ts index 62b7bba26..3a6290491 100644 --- a/src/crons/websocket/transaction.custom.gateway.ts +++ b/src/crons/websocket/transaction.custom.gateway.ts @@ -16,7 +16,7 @@ import { Transaction } from 'src/endpoints/transactions/entities/transaction'; @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) export class TransactionsCustomGateway { private readonly logger = new OriginLogger(TransactionsCustomGateway.name); - + static keyPrefix = 'custom-tx-'; @WebSocketServer() server!: Server; @@ -31,11 +31,27 @@ export class TransactionsCustomGateway { @MessageBody(new WsValidationPipe()) payload: TransactionCustomSubscribePayload) { const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload); - await client.join(`custom-tx-${filterIdentifier}`); - + if (!client.rooms.has(`${TransactionsCustomGateway.keyPrefix}${filterIdentifier}`)) { + await client.join(`${TransactionsCustomGateway.keyPrefix}${filterIdentifier}`); + } return { status: 'success' }; } + @SubscribeMessage('unsubscribeCustomTransactions') + async handleCustomUnsubscribe( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: TransactionCustomSubscribePayload + ) { + const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload); + const roomName = `${TransactionsCustomGateway.keyPrefix}${filterIdentifier}`; + + if (client.rooms.has(roomName)) { + await client.leave(roomName); + } + + return { status: 'unsubscribed' }; + } + async pushTransactionsForTimestampMs(timestampMs: number): Promise { try { const timestamp = timestampMs / 1000; // TODO: add support for timestampMs @@ -47,7 +63,7 @@ export class TransactionsCustomGateway { const txFilteredForBroadcast: Map = new Map(); for (const transaction of allTransactions) { const roomKeys = RoomKeyGenerator.generate( - 'custom-tx-', + TransactionsCustomGateway.keyPrefix, transaction, TransactionCustomSubscribePayload, ); @@ -62,10 +78,8 @@ export class TransactionsCustomGateway { } } - for (const [roomName] of this.server.sockets.adapter.rooms) { - if (txFilteredForBroadcast.has(roomName)) { - this.server.to(roomName).emit("customTransactionUpdate", { transactions: txFilteredForBroadcast.get(roomName), timestampMs }); - } + for (const [roomName] of txFilteredForBroadcast) { + this.server.to(roomName).emit("customTransactionUpdate", { transactions: txFilteredForBroadcast.get(roomName), timestampMs }); } } catch (error) { this.logger.error(error); diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index c6cbb30c8..653fad128 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -89,8 +89,7 @@ export class WebsocketCronService { @Cron('*/3 * * * * *') @Lock({ name: 'Push custom transactions to subscribers', verbose: true }) async handleCustomTransactionsUpdate() { - // TODO: add support for multiple key prefixes - if (this.connectionHandler.countSubscriptionsByPrefix('custom-tx-') === 0) { + if (this.connectionHandler.hasSubscriptionsWithPrefixes([TransactionsCustomGateway.keyPrefix]) === false) { this.cacheService.deleteLocal(CacheInfo.WsTimestampMsToProcess().key); return; } From e85afe6fc18b115111b03891ba0a6c931acf8323 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 2 Dec 2025 14:17:06 +0200 Subject: [PATCH 046/206] add support for unsubscribe --- src/crons/websocket/blocks.gateway.ts | 26 ++++++++++++++++++--- src/crons/websocket/events.gateway.ts | 23 +++++++++++++++++- src/crons/websocket/network.gateway.ts | 11 ++++++++- src/crons/websocket/pool.gateway.ts | 24 +++++++++++++++++-- src/crons/websocket/transaction.gateway.ts | 27 +++++++++++++++++++--- 5 files changed, 101 insertions(+), 10 deletions(-) diff --git a/src/crons/websocket/blocks.gateway.ts b/src/crons/websocket/blocks.gateway.ts index c196c0ea9..68cc7fc02 100644 --- a/src/crons/websocket/blocks.gateway.ts +++ b/src/crons/websocket/blocks.gateway.ts @@ -14,6 +14,7 @@ import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) export class BlocksGateway { private readonly logger = new OriginLogger(BlocksGateway.name); + static readonly keyPrefix = 'blocks-'; @WebSocketServer() server!: Server; @@ -27,16 +28,35 @@ export class BlocksGateway { @MessageBody(new WsValidationPipe()) payload: BlockSubscribePayload ) { const filterIdentifier = JSON.stringify(payload); - await client.join(`blocks-${filterIdentifier}`); + const roomName = `${BlocksGateway.keyPrefix}${filterIdentifier}`; + + if (!client.rooms.has(roomName)) { + await client.join(roomName); + } return { status: 'success' }; } + @SubscribeMessage('unsubscribeBlocks') + async handleUnsubscribe( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: BlockSubscribePayload + ) { + const filterIdentifier = JSON.stringify(payload); + const roomName = `${BlocksGateway.keyPrefix}${filterIdentifier}`; + + if (client.rooms.has(roomName)) { + await client.leave(roomName); + } + + return { status: 'unsubscribed' }; + } + async pushBlocksForRoom(roomName: string): Promise { - if (!roomName.startsWith("blocks-")) return; + if (!roomName.startsWith(BlocksGateway.keyPrefix)) return; try { - const filterIdentifier = roomName.replace("blocks-", ""); + const filterIdentifier = roomName.replace(BlocksGateway.keyPrefix, ""); const filter: BlockSubscribePayload = JSON.parse(filterIdentifier); const blockFilter = new BlockFilter({ diff --git a/src/crons/websocket/events.gateway.ts b/src/crons/websocket/events.gateway.ts index 300725098..a7c43fb46 100644 --- a/src/crons/websocket/events.gateway.ts +++ b/src/crons/websocket/events.gateway.ts @@ -9,11 +9,13 @@ import { EventsFilter } from '../../endpoints/events/entities/events.filter'; import { EventsSubscribePayload } from '../../endpoints/events/entities/events.subscribe'; import { QueryPagination } from 'src/common/entities/query.pagination'; import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; +import { RoomKeyGenerator } from './room.key.generator'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) export class EventsGateway { private readonly logger = new OriginLogger(EventsGateway.name); + static readonly keyPrefix = 'events-'; @WebSocketServer() server!: Server; @@ -27,11 +29,30 @@ export class EventsGateway { @MessageBody(new WsValidationPipe()) payload: EventsSubscribePayload, ) { const filterIdentifier = JSON.stringify(payload); - await client.join(`events-${filterIdentifier}`); + const roomName = `${EventsGateway.keyPrefix}${filterIdentifier}`; + if (!client.rooms.has(roomName)) { + await client.join(roomName); + } return { status: 'success' }; } + @SubscribeMessage('unsubscribeEvents') + async handleUnsubscribe( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: EventsSubscribePayload + ) { + const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload); + const roomName = `${EventsGateway.keyPrefix}${filterIdentifier}`; + + if (client.rooms.has(roomName)) { + await client.leave(roomName); + } + + return { status: 'unsubscribed' }; + } + + async pushEventsForRoom(roomName: string): Promise { if (!roomName.startsWith("events-")) return; diff --git a/src/crons/websocket/network.gateway.ts b/src/crons/websocket/network.gateway.ts index ef39a36a3..8c9ffa30d 100644 --- a/src/crons/websocket/network.gateway.ts +++ b/src/crons/websocket/network.gateway.ts @@ -19,7 +19,16 @@ export class NetworkGateway { @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeStats') async handleSubscription(client: Socket) { - await client.join('statsRoom'); + if (!client.rooms.has('statsRoom')) { + await client.join('statsRoom'); + } + } + + @SubscribeMessage('unsubscribeStats') + async handleUnsubscribe(client: Socket) { + if (client.rooms.has('statsRoom')) { + await client.leave('statsRoom'); + } } async pushStats() { diff --git a/src/crons/websocket/pool.gateway.ts b/src/crons/websocket/pool.gateway.ts index bc7b76715..79df56589 100644 --- a/src/crons/websocket/pool.gateway.ts +++ b/src/crons/websocket/pool.gateway.ts @@ -10,11 +10,13 @@ import { PoolFilter } from '../../endpoints/pool/entities/pool.filter'; import { QueryPagination } from 'src/common/entities/query.pagination'; import { PoolSubscribePayload } from '../../endpoints/pool/entities/pool.subscribe'; import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; +import { RoomKeyGenerator } from './room.key.generator'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) export class PoolGateway { private readonly logger = new OriginLogger(PoolGateway.name); + static readonly keyPrefix = 'pool-'; @WebSocketServer() server!: Server; @@ -27,12 +29,30 @@ export class PoolGateway { @ConnectedSocket() client: Socket, @MessageBody(new WsValidationPipe()) payload: PoolSubscribePayload, ) { - const filterIdentifier = JSON.stringify(payload); - await client.join(`pool-${filterIdentifier}`); + const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload); + const roomName = `${PoolGateway.keyPrefix}${filterIdentifier}`; + if (!client.rooms.has(roomName)) { + await client.join(roomName); + } return { status: 'success' }; } + @SubscribeMessage('unsubscribePool') + async handleUnsubscribe( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: PoolSubscribePayload + ) { + const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload); + const roomName = `${PoolGateway.keyPrefix}${filterIdentifier}`; + + if (client.rooms.has(roomName)) { + await client.leave(roomName); + } + + return { status: 'unsubscribed' }; + } + async pushPoolForRoom(roomName: string): Promise { if (!roomName.startsWith("pool-")) return; diff --git a/src/crons/websocket/transaction.gateway.ts b/src/crons/websocket/transaction.gateway.ts index 6f6f9aca1..ae22c3370 100644 --- a/src/crons/websocket/transaction.gateway.ts +++ b/src/crons/websocket/transaction.gateway.ts @@ -10,11 +10,13 @@ import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; import { UseFilters, UseGuards } from '@nestjs/common'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; +import { RoomKeyGenerator } from './room.key.generator'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) export class TransactionsGateway { private readonly logger = new OriginLogger(TransactionsGateway.name); + static readonly keyPrefix = 'tx-'; @WebSocketServer() server!: Server; @@ -47,16 +49,35 @@ export class TransactionsGateway { TransactionFilter.validate(transactionFilter, payload.size || 25); const filterIdentifier = JSON.stringify(payload); - await client.join(`tx-${filterIdentifier}`); + const roomName = `${TransactionsGateway.keyPrefix}${filterIdentifier}`; + + if (!client.rooms.has(roomName)) { + await client.join(roomName); + } return { status: 'success' }; } + @SubscribeMessage('unsubscribeTransactions') + async handleUnsubscribe( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: TransactionSubscribePayload + ) { + const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload); + const roomName = `${TransactionsGateway.keyPrefix}${filterIdentifier}`; + + if (client.rooms.has(roomName)) { + await client.leave(roomName); + } + + return { status: 'unsubscribed' }; + } + async pushTransactionsForRoom(roomName: string): Promise { - if (!roomName.startsWith("tx-")) return; + if (!roomName.startsWith(TransactionsGateway.keyPrefix)) return; try { - const filterIdentifier = roomName.replace("tx-", ""); + const filterIdentifier = roomName.replace(TransactionsGateway.keyPrefix, ""); const filter = JSON.parse(filterIdentifier); const options = TransactionQueryOptions.applyDefaultOptions( From e8b6dc98a7a8a157c5763969cb013ba29d53f47d Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 2 Dec 2025 14:18:39 +0200 Subject: [PATCH 047/206] lint --- src/crons/websocket/connection.handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crons/websocket/connection.handler.ts b/src/crons/websocket/connection.handler.ts index c8eb343e8..081ffc6fc 100644 --- a/src/crons/websocket/connection.handler.ts +++ b/src/crons/websocket/connection.handler.ts @@ -29,4 +29,4 @@ export class ConnectionHandler implements OnGatewayDisconnect, OnGatewayConnecti return false; } -} \ No newline at end of file +} From 391a74b8fdb555e5df31962210fde2703dc5adba Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 2 Dec 2025 15:20:44 +0200 Subject: [PATCH 048/206] add support for events --- src/crons/websocket/events.custom.gateway.ts | 101 ++++++++++++++++++ src/crons/websocket/room.key.generator.ts | 3 + src/crons/websocket/websocket.cron.service.ts | 7 +- .../websocket.subscription.module.ts | 2 + .../entities/events.custom.subscribe.ts | 19 ++++ 5 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 src/crons/websocket/events.custom.gateway.ts create mode 100644 src/endpoints/events/entities/events.custom.subscribe.ts diff --git a/src/crons/websocket/events.custom.gateway.ts b/src/crons/websocket/events.custom.gateway.ts new file mode 100644 index 000000000..47cefe63f --- /dev/null +++ b/src/crons/websocket/events.custom.gateway.ts @@ -0,0 +1,101 @@ +import { WebSocketGateway, WebSocketServer, SubscribeMessage, ConnectedSocket, MessageBody } from '@nestjs/websockets'; +import { Server, Socket } from 'socket.io'; +import { UseFilters, UseGuards } from '@nestjs/common'; +import { OriginLogger } from '@multiversx/sdk-nestjs-common'; + +import { QueryPagination } from 'src/common/entities/query.pagination'; +import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; +import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; +import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; +import { RoomKeyGenerator } from './room.key.generator'; +import { EventsService } from 'src/endpoints/events/events.service'; +import { EventsCustomSubscribePayload } from 'src/endpoints/events/entities/events.custom.subscribe'; +import { EventsFilter } from 'src/endpoints/events/entities/events.filter'; +import { Events } from 'src/endpoints/events/entities/events'; + + +@UseFilters(WebsocketExceptionsFilter) +@WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) +export class EventsCustomGateway { + private readonly logger = new OriginLogger(EventsCustomGateway.name); + + // Prefix distinct pentru camerele de evenimente pentru a nu se suprapune cu txs + static keyPrefix = 'custom-events-'; + + @WebSocketServer() + server!: Server; + + constructor( + private readonly eventsService: EventsService, + ) { } + + @UseGuards(WsSubscriptionLimiterGuard) + @SubscribeMessage('subscribeCustomEvents') + async handleCustomSubscription( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: EventsCustomSubscribePayload + ) { + const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload); + const roomName = `${EventsCustomGateway.keyPrefix}${filterIdentifier}`; + + if (!client.rooms.has(roomName)) { + await client.join(roomName); + } + + return { status: 'success' }; + } + + @SubscribeMessage('unsubscribeCustomEvents') + async handleCustomUnsubscribe( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: EventsCustomSubscribePayload + ) { + const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload); + const roomName = `${EventsCustomGateway.keyPrefix}${filterIdentifier}`; + + if (client.rooms.has(roomName)) { + await client.leave(roomName); + } + + return { status: 'unsubscribed' }; + } + + async pushEventsForTimestampMs(timestampMs: number): Promise { + try { + const timestamp = timestampMs / 1000; + + const allEvents = await this.eventsService.getEvents( + new QueryPagination({ size: 10000 }), + new EventsFilter({ before: timestamp, after: timestamp }), + ); + + const eventsFilteredForBroadcast: Map = new Map(); + + for (const event of allEvents) { + const roomKeys = RoomKeyGenerator.generate( + EventsCustomGateway.keyPrefix, + event, + EventsCustomSubscribePayload, + ); + + for (const roomKey of roomKeys) { + if (this.server.sockets.adapter.rooms.has(roomKey)) { + if (!eventsFilteredForBroadcast.has(roomKey)) { + eventsFilteredForBroadcast.set(roomKey, []); + } + eventsFilteredForBroadcast.get(roomKey)!.push(event); + } + } + } + + for (const [roomName] of eventsFilteredForBroadcast) { + this.server.to(roomName).emit("customEventUpdate", { + events: eventsFilteredForBroadcast.get(roomName), + timestampMs + }); + } + } catch (error) { + this.logger.error(error); + } + } +} \ No newline at end of file diff --git a/src/crons/websocket/room.key.generator.ts b/src/crons/websocket/room.key.generator.ts index 4ccdeb94b..02a8a3aae 100644 --- a/src/crons/websocket/room.key.generator.ts +++ b/src/crons/websocket/room.key.generator.ts @@ -1,3 +1,4 @@ +import { EventsCustomSubscribePayload } from 'src/endpoints/events/entities/events.custom.subscribe'; import { TransactionCustomSubscribePayload } from 'src/endpoints/transactions/entities/dtos/transaction.custom.subscribe'; export class RoomKeyGenerator { @@ -61,6 +62,8 @@ export class RoomKeyGenerator { switch (targetClass) { case TransactionCustomSubscribePayload: return TransactionCustomSubscribePayload.getClassFields(); + case EventsCustomSubscribePayload: + return EventsCustomSubscribePayload.getClassFields(); default: console.warn(`RoomKeyGenerator: No manual key mapping found for class ${targetClass.name}`); return []; diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 653fad128..e5f53a7f4 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -19,6 +19,7 @@ import { NetworkService } from 'src/endpoints/network/network.service'; import { Stats } from 'src/endpoints/network/entities/stats'; import { TransactionsCustomGateway } from './transaction.custom.gateway'; import { ConnectionHandler } from './connection.handler'; +import { EventsCustomGateway } from './events.custom.gateway'; @Injectable() @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -38,6 +39,7 @@ export class WebsocketCronService { private readonly elasticService: ElasticService, private readonly networkService: NetworkService, private readonly transactionsCustomGateway: TransactionsCustomGateway, + private readonly eventsCustomGateway: EventsCustomGateway, private readonly connectionHandler: ConnectionHandler, ) { } @@ -111,7 +113,10 @@ export class WebsocketCronService { await this.pollUntil(async () => await this.isElasticDataAvailableForTimestampMs(roundToProcessTimestampMs, stats), pollingDelay, pollingMaxAttempts); // call gateways to process logic for custom subscriptions - await this.transactionsCustomGateway.pushTransactionsForTimestampMs(roundToProcessTimestampMs); + await Promise.all([ + this.transactionsCustomGateway.pushTransactionsForTimestampMs(roundToProcessTimestampMs), + this.eventsCustomGateway.pushEventsForTimestampMs(roundToProcessTimestampMs) + ]); roundToProcessTimestampMs += stats.refreshRate; } this.cacheService.setLocal( diff --git a/src/crons/websocket/websocket.subscription.module.ts b/src/crons/websocket/websocket.subscription.module.ts index 5cdd245a5..860daf58a 100644 --- a/src/crons/websocket/websocket.subscription.module.ts +++ b/src/crons/websocket/websocket.subscription.module.ts @@ -14,6 +14,7 @@ import { EventsGateway } from './events.gateway'; import { ConnectionHandler } from './connection.handler'; import { RoundModule } from 'src/endpoints/rounds/round.module'; import { TransactionsCustomGateway } from './transaction.custom.gateway'; +import { EventsCustomGateway } from './events.custom.gateway'; @Module({ imports: [ @@ -34,6 +35,7 @@ import { TransactionsCustomGateway } from './transaction.custom.gateway'; PoolGateway, EventsGateway, TransactionsCustomGateway, + EventsCustomGateway, ], }) export class WebsocketSubscriptionModule { } diff --git a/src/endpoints/events/entities/events.custom.subscribe.ts b/src/endpoints/events/entities/events.custom.subscribe.ts new file mode 100644 index 000000000..8a9c80ba4 --- /dev/null +++ b/src/endpoints/events/entities/events.custom.subscribe.ts @@ -0,0 +1,19 @@ +import { IsOptional, IsString } from 'class-validator'; + +export class EventsCustomSubscribePayload { + @IsOptional() + @IsString() + address?: string; + + @IsOptional() + @IsString() + identifier?: string; + + @IsOptional() + @IsString() + logAddress?: string; + + public static getClassFields(): string[] { + return ['address', 'identifier', 'logAddress']; + } +} From e6a532c812710f6f404818f9a033692dac2192bc Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 3 Dec 2025 12:06:47 +0200 Subject: [PATCH 049/206] add support for timestampMs in ES --- config/config.devnet-old.yaml | 4 + config/config.devnet.yaml | 6 +- config/config.e2e-mocked.mainnet.yaml | 4 + config/config.e2e.mainnet.yaml | 4 + config/config.mainnet.yaml | 4 + config/config.testnet.yaml | 4 + src/common/api-config/api.config.service.ts | 20 ++++- .../indexer/elastic/elastic.indexer.helper.ts | 59 ++++++++++--- .../elastic/elastic.indexer.service.ts | 4 +- src/common/indexer/entities/block.ts | 1 + src/common/indexer/entities/events.ts | 1 + src/common/indexer/entities/miniblock.ts | 1 + .../indexer/entities/provider.delegators.ts | 1 + src/common/indexer/entities/round.ts | 3 +- src/common/indexer/entities/sc.deploy.ts | 1 + src/common/indexer/entities/sc.result.ts | 1 + src/endpoints/accounts/account.controller.ts | 85 ++++++++++--------- .../applications/application.controller.ts | 13 +-- src/endpoints/blocks/entities/block.ts | 5 +- .../collections/collection.controller.ts | 53 ++++++------ .../collections/entities/nft.collection.ts | 3 + src/endpoints/events/entities/events.ts | 3 + src/endpoints/events/events.controller.ts | 17 ++-- src/endpoints/nfts/nft.controller.ts | 53 ++++++------ src/endpoints/tokens/token.controller.ts | 37 ++++---- .../transactions/transaction.controller.ts | 21 ++--- .../transfers/transfer.controller.ts | 21 ++--- src/utils/time.utils.ts | 5 ++ src/utils/timestamp.parse.pipe.ts | 29 +++++++ 29 files changed, 300 insertions(+), 163 deletions(-) create mode 100644 src/utils/time.utils.ts create mode 100644 src/utils/timestamp.parse.pipe.ts diff --git a/config/config.devnet-old.yaml b/config/config.devnet-old.yaml index 9bc4134b8..43703a63b 100644 --- a/config/config.devnet-old.yaml +++ b/config/config.devnet-old.yaml @@ -125,3 +125,7 @@ inflation: nftProcess: parallelism: 1 maxRetries: 3 +supernova: + activation: + epoch: 2030 + timestamp: 1764749472 diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index 0fac8a9f3..a66c94859 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -196,4 +196,8 @@ compression: enabled: true level: 6 threshold: 1024 - chunkSize: 16384 \ No newline at end of file + chunkSize: 16384 +supernova: + activation: + epoch: 2030 + timestamp: 1764749472 \ No newline at end of file diff --git a/config/config.e2e-mocked.mainnet.yaml b/config/config.e2e-mocked.mainnet.yaml index 83d35ceac..ed52b3e10 100644 --- a/config/config.e2e-mocked.mainnet.yaml +++ b/config/config.e2e-mocked.mainnet.yaml @@ -79,3 +79,7 @@ test: transaction-action: mex: microServiceUrl: 'https://graph.xexchange.com/graphql' +supernova: + activation: + epoch: 2030 + timestamp: 1764749472 diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index c0af3d572..ac322b69f 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -191,3 +191,7 @@ stakingV5Inflation: nftProcess: parallelism: 1 maxRetries: 3 +supernova: + activation: + epoch: 2030 + timestamp: 1764749472 \ No newline at end of file diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index 557f07092..dcfb48fec 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -205,3 +205,7 @@ customUrlHeaders: - urlPattern: '' headers: x-custom-auth: '' +supernova: + activation: + epoch: 2030 + timestamp: 1764749472 diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index 1fd058c62..fbb5702db 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -200,3 +200,7 @@ compression: level: 6 threshold: 1024 chunkSize: 16384 +supernova: + activation: + epoch: 2030 + timestamp: 1764749472 diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index 119a263c7..adb75d36e 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -1067,4 +1067,22 @@ export class ApiConfigService { return undefined; } -} + + getSupernovaActivationEpoch(): number { + const epoch = this.configService.get('supernova.activation.epoch'); + if (epoch == null) { + throw new Error('No supernova.activation.epoch present'); + } + + return epoch; + } + + getSupernovaActivationTimestamp(): number { + const timestamp = this.configService.get('supernova.activation.timestamp'); + if (timestamp == null) { + throw new Error('No supernova.activation.timestamp present'); + } + + return timestamp; + } +} \ No newline at end of file diff --git a/src/common/indexer/elastic/elastic.indexer.helper.ts b/src/common/indexer/elastic/elastic.indexer.helper.ts index 96bd3ec13..d2173b4db 100644 --- a/src/common/indexer/elastic/elastic.indexer.helper.ts +++ b/src/common/indexer/elastic/elastic.indexer.helper.ts @@ -19,6 +19,7 @@ import { ApplicationFilter } from "src/endpoints/applications/entities/applicati import { NftType } from "../entities/nft.type"; import { EventsFilter } from "src/endpoints/events/entities/events.filter"; import { ScriptQuery } from "./script.query"; +import { TimeUtils } from "src/utils/time.utils"; @Injectable() export class ElasticIndexerHelper { @@ -99,7 +100,14 @@ export class ElasticIndexerHelper { } if (filter.before || filter.after) { - elasticQuery = elasticQuery.withDateRangeFilter('timestamp', filter.before, filter.after); + if (filter.before) { + const timestampBeforeIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampBeforeIdentifier, new RangeLowerThanOrEqual(filter.before)); + } + if (filter.after) { + const timestampAfterIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampAfterIdentifier, new RangeGreaterThanOrEqual(filter.after)); + } } if (filter.canCreate !== undefined) { @@ -278,8 +286,13 @@ export class ElasticIndexerHelper { } } - if (filter.before || filter.after) { - elasticQuery = elasticQuery.withDateRangeFilter('timestamp', filter.before, filter.after); + if (filter.before) { + const timestampBeforeIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampBeforeIdentifier, new RangeLowerThanOrEqual(filter.before)); + } + if (filter.after) { + const timestampAfterIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampAfterIdentifier, new RangeGreaterThanOrEqual(filter.after)); } if (filter.nonceBefore) { @@ -408,8 +421,13 @@ export class ElasticIndexerHelper { elasticQuery = elasticQuery.withCondition(QueryConditionOptions.must, QueryType.Match('status', filter.status)); } - if (filter.before || filter.after) { - elasticQuery = elasticQuery.withDateRangeFilter('timestamp', filter.before, filter.after); + if (filter.before) { + const timestampBeforeIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampBeforeIdentifier, new RangeLowerThanOrEqual(filter.before)); + } + if (filter.after) { + const timestampAfterIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampAfterIdentifier, new RangeGreaterThanOrEqual(filter.after)); } if (filter.senderOrReceiver) { @@ -553,7 +571,15 @@ export class ElasticIndexerHelper { .withMustMultiShouldCondition(filter.hashes, hash => QueryType.Match('_id', hash)) .withMustMatchCondition('status', filter.status) .withMustMultiShouldCondition(filter.tokens, token => QueryType.Match('tokens', token, QueryOperator.AND)) - .withDateRangeFilter('timestamp', filter.before, filter.after); + + if (filter.before) { + const timestampBeforeIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampBeforeIdentifier, new RangeLowerThanOrEqual(filter.before)); + } + if (filter.after) { + const timestampAfterIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampAfterIdentifier, new RangeGreaterThanOrEqual(filter.after)); + } if (filter.functions && filter.functions.length > 0) { if (filter.functions.length === 1 && filter.functions[0] === '') { @@ -658,8 +684,13 @@ export class ElasticIndexerHelper { let elasticQuery = ElasticQuery.create().withCondition(QueryConditionOptions.must, mustQueries); - if (filter && (filter.before || filter.after)) { - elasticQuery = elasticQuery.withDateRangeFilter('timestamp', filter.before, filter.after); + if (filter && filter.before) { + const timestampBeforeIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampBeforeIdentifier, new RangeLowerThanOrEqual(filter.before)); + } + if (filter && filter.after) { + const timestampAfterIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampAfterIdentifier, new RangeGreaterThanOrEqual(filter.after)); } if (filter && filter.identifiers) { @@ -764,11 +795,13 @@ export class ElasticIndexerHelper { let elasticQuery = ElasticQuery.create(); if (filter.after) { - elasticQuery = elasticQuery.withRangeFilter('timestamp', new RangeGreaterThanOrEqual(filter.after)); + const timestampIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampIdentifier, new RangeGreaterThanOrEqual(filter.after)); } if (filter.before) { - elasticQuery = elasticQuery.withRangeFilter('timestamp', new RangeLowerThanOrEqual(filter.before)); + const timestampIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampIdentifier, new RangeLowerThanOrEqual(filter.before)); } return elasticQuery; @@ -791,11 +824,13 @@ export class ElasticIndexerHelper { let elasticQuery = ElasticQuery.create(); if (filter.before) { - elasticQuery = elasticQuery.withRangeFilter('timestamp', new RangeLowerThanOrEqual(filter.before)); + const timestampIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampIdentifier, new RangeLowerThanOrEqual(filter.before)); } if (filter.after) { - elasticQuery = elasticQuery.withRangeFilter('timestamp', new RangeGreaterThanOrEqual(filter.after)); + const timestampIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; + elasticQuery = elasticQuery.withRangeFilter(timestampIdentifier, new RangeGreaterThanOrEqual(filter.after)); } if (filter.identifier) { diff --git a/src/common/indexer/elastic/elastic.indexer.service.ts b/src/common/indexer/elastic/elastic.indexer.service.ts index d7f0af8b4..6ed6d2558 100644 --- a/src/common/indexer/elastic/elastic.indexer.service.ts +++ b/src/common/indexer/elastic/elastic.indexer.service.ts @@ -30,6 +30,7 @@ import { NftType } from "../entities/nft.type"; import { EventsFilter } from "src/endpoints/events/entities/events.filter"; import { Events } from "../entities/events"; import { EsCircuitBreakerProxy } from "./circuit-breaker/circuit.breaker.proxy.service"; +import { TimeUtils } from "src/utils/time.utils"; @Injectable() export class ElasticIndexerService implements IndexerInterface { @@ -1031,8 +1032,9 @@ export class ElasticIndexerService implements IndexerInterface { } async getBlockByTimestampAndShardId(timestamp: number, shardId: number): Promise { + const timestampIdentifier = TimeUtils.isTimestampInSeconds(timestamp) ? 'timestamp' : 'timestampMs'; const elasticQuery = ElasticQuery.create() - .withRangeFilter('timestamp', new RangeGreaterThanOrEqual(timestamp)) + .withRangeFilter(timestampIdentifier, new RangeGreaterThanOrEqual(timestamp)) .withCondition(QueryConditionOptions.must, [QueryType.Match('shardId', shardId, QueryOperator.AND)]) .withSort([{ name: 'timestamp', order: ElasticSortOrder.ascending }]); diff --git a/src/common/indexer/entities/block.ts b/src/common/indexer/entities/block.ts index e552caf36..ebfd4aef1 100644 --- a/src/common/indexer/entities/block.ts +++ b/src/common/indexer/entities/block.ts @@ -12,6 +12,7 @@ export interface Block { size: number; sizeTxs: number; timestamp: number; + timestampMs?: number; stateRootHash: string; prevHash: string; shardId: number; diff --git a/src/common/indexer/entities/events.ts b/src/common/indexer/entities/events.ts index 1d67492f8..add007142 100644 --- a/src/common/indexer/entities/events.ts +++ b/src/common/indexer/entities/events.ts @@ -10,4 +10,5 @@ export class Events { txOrder: number = 0; order: number = 0; timestamp: number = 0; + timestampMs?: number; } diff --git a/src/common/indexer/entities/miniblock.ts b/src/common/indexer/entities/miniblock.ts index 123662905..71e086355 100644 --- a/src/common/indexer/entities/miniblock.ts +++ b/src/common/indexer/entities/miniblock.ts @@ -7,6 +7,7 @@ export interface MiniBlock { type: string; procTypeD: string; timestamp: number; + timestampMs?: number; procTypeS: string; senderBlockNonce: string; receiverBlockNonce: string; diff --git a/src/common/indexer/entities/provider.delegators.ts b/src/common/indexer/entities/provider.delegators.ts index 4afda5f9b..b4f27bbe5 100644 --- a/src/common/indexer/entities/provider.delegators.ts +++ b/src/common/indexer/entities/provider.delegators.ts @@ -4,4 +4,5 @@ export class ProviderDelegators { activeStake: string = ''; activeStakeNum: number = 0; timestamp: number = 0; + timestampMs?: number; } diff --git a/src/common/indexer/entities/round.ts b/src/common/indexer/entities/round.ts index 301553e63..867c67d47 100644 --- a/src/common/indexer/entities/round.ts +++ b/src/common/indexer/entities/round.ts @@ -4,5 +4,6 @@ export interface Round { blockWasProposed: boolean, shardId: number, epoch: number, - timestamp: number + timestamp: number, + timestampMs?: number, } diff --git a/src/common/indexer/entities/sc.deploy.ts b/src/common/indexer/entities/sc.deploy.ts index 38a5ea424..0233d0e72 100644 --- a/src/common/indexer/entities/sc.deploy.ts +++ b/src/common/indexer/entities/sc.deploy.ts @@ -5,6 +5,7 @@ export interface ScDeploy { initialCodeHash: string; deployer: string; timestamp: number; + timestampMs?: number; upgrades: ScDeployUpgrade[]; } diff --git a/src/common/indexer/entities/sc.result.ts b/src/common/indexer/entities/sc.result.ts index 039e2b682..882898b59 100644 --- a/src/common/indexer/entities/sc.result.ts +++ b/src/common/indexer/entities/sc.result.ts @@ -13,6 +13,7 @@ export interface ScResult { originalTxHash: string; callType: string; timestamp: number; + timestampMs?: number; tokens: string[]; esdtValues: string[]; operation: string; diff --git a/src/endpoints/accounts/account.controller.ts b/src/endpoints/accounts/account.controller.ts index 0c23f88e4..40910e8a7 100644 --- a/src/endpoints/accounts/account.controller.ts +++ b/src/endpoints/accounts/account.controller.ts @@ -59,6 +59,7 @@ import { MexPairType } from '../mex/entities/mex.pair.type'; import { NftSubType } from '../nfts/entities/nft.sub.type'; import { AccountContract } from './entities/account.contract'; import { AccountFetchOptions } from './entities/account.fetch.options'; +import { TimestampParsePipe } from 'src/utils/timestamp.parse.pipe'; @Controller() @ApiTags('accounts') @@ -881,8 +882,8 @@ export class AccountController { @ApiQuery({ name: 'function', description: 'Filter transactions by function name', required: false }) @ApiQuery({ name: 'order', description: 'Sort order (asc/desc)', required: false, enum: SortOrder }) @ApiQuery({ name: 'fields', description: 'List of fields to filter by', required: false, isArray: true, style: 'form', explode: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Round number', required: false }) @ApiQuery({ name: 'withScResults', description: 'Return scResults for transactions. When "withScresults" parameter is applied, complexity estimation is 200', required: false }) @ApiQuery({ name: 'withOperations', description: 'Return operations for transactions. When "withOperations" parameter is applied, complexity estimation is 200', required: false }) @@ -909,8 +910,8 @@ export class AccountController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('order', new ParseEnumPipe(SortOrder)) order?: SortOrder, @Query('fields', ParseArrayPipe) fields?: string[], @@ -963,8 +964,8 @@ export class AccountController { @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transaction hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transactions by function name', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Round number', required: false }) @ApiQuery({ name: 'senderOrReceiver', description: 'One address that current address interacted with', required: false }) @ApiQuery({ name: 'isRelayed', description: 'Returns isRelayed transactions details', required: false, type: Boolean }) @@ -981,8 +982,8 @@ export class AccountController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('senderOrReceiver', ParseAddressPipe) senderOrReceiver?: string, @Query('isRelayed', ParseBoolPipe) isRelayed?: boolean, @@ -1027,8 +1028,8 @@ export class AccountController { @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transactions by function name', required: false }) @ApiQuery({ name: 'order', description: 'Sort order (asc/desc)', required: false, enum: SortOrder }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Round number', required: false }) @ApiQuery({ name: 'fields', description: 'List of fields to filter by', required: false, isArray: true, style: 'form', explode: false }) @ApiQuery({ name: 'relayer', description: 'Address of the relayer', required: false }) @@ -1055,8 +1056,8 @@ export class AccountController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('fields', ParseArrayPipe) fields?: string[], @Query('order', new ParseEnumPipe(SortOrder)) order?: SortOrder, @@ -1114,8 +1115,8 @@ export class AccountController { @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transfer hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transfers by function name', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Round number', required: false }) @ApiQuery({ name: 'isScCall', description: 'Returns sc call transactions details', required: false, type: Boolean }) @ApiQuery({ name: 'senderOrReceiver', description: 'One address that current address interacted with', required: false }) @@ -1132,8 +1133,8 @@ export class AccountController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('senderOrReceiver', ParseAddressPipe) senderOrReceiver?: string, @Query('isScCall', ParseBoolPipe) isScCall?: boolean, @@ -1174,8 +1175,8 @@ export class AccountController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('senderOrReceiver', ParseAddressPipe) senderOrReceiver?: string, @Query('withRefunds', ParseBoolPipe) withRefunds?: boolean, @@ -1309,15 +1310,15 @@ export class AccountController { @ApiOperation({ summary: 'Account history', description: 'Return account EGLD balance history' }) @ApiQuery({ name: 'from', description: 'Number of items to skip for the result set', required: false }) @ApiQuery({ name: 'size', description: 'Number of items to retrieve', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiOkResponse({ type: [AccountHistory] }) getAccountHistory( @Param('address', ParseAddressPipe) address: string, @Query('from', new DefaultValuePipe(0), ParseIntPipe) from: number, @Query('size', new DefaultValuePipe(25), ParseIntPipe) size: number, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, ): Promise { return this.accountService.getAccountHistory( address, @@ -1327,13 +1328,13 @@ export class AccountController { @Get("/accounts/:address/history/count") @ApiOperation({ summary: 'Account history count', description: 'Return account EGLD balance history count' }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiOkResponse({ type: Number }) getAccountHistoryCount( @Param('address', ParseAddressPipe) address: string, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, ): Promise { return this.accountService.getAccountHistoryCount( address, @@ -1342,14 +1343,14 @@ export class AccountController { @Get("/accounts/:address/history/:tokenIdentifier/count") @ApiOperation({ summary: 'Account token history count', description: 'Return account token balance history count' }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiOkResponse({ type: Number }) async getAccountTokenHistoryCount( @Param('address', ParseAddressPipe) address: string, @Param('tokenIdentifier', ParseTokenOrNftPipe) tokenIdentifier: string, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, ): Promise { const isToken = await this.tokenService.isToken(tokenIdentifier) || await this.collectionService.isCollection(tokenIdentifier) || await this.nftService.isNft(tokenIdentifier); if (!isToken) { @@ -1365,8 +1366,8 @@ export class AccountController { @ApiOperation({ summary: 'Account esdts history', description: 'Returns account esdts balance history' }) @ApiQuery({ name: 'from', description: 'Number of items to skip for the result set', required: false }) @ApiQuery({ name: 'size', description: 'Number of items to retrieve', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'identifier', description: 'Filter by multiple esdt identifiers, comma-separated', required: false }) @ApiQuery({ name: 'token', description: 'Token identifier', required: false }) @ApiOkResponse({ type: [AccountEsdtHistory] }) @@ -1374,8 +1375,8 @@ export class AccountController { @Param('address', ParseAddressPipe) address: string, @Query('from', new DefaultValuePipe(0), ParseIntPipe) from: number, @Query('size', new DefaultValuePipe(25), ParseIntPipe) size: number, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('identifier', ParseArrayPipe) identifier?: string[], @Query('token', ParseTokenPipe) token?: string, ): Promise { @@ -1387,14 +1388,14 @@ export class AccountController { @Get("/accounts/:address/esdthistory/count") @ApiOperation({ summary: 'Account esdts history count', description: 'Returns account esdts balance history count' }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'identifier', description: 'Filter by multiple esdt identifiers, comma-separated', required: false }) @ApiQuery({ name: 'token', description: 'Token identifier', required: false }) async getAccountEsdtHistoryCount( @Param('address', ParseAddressPipe) address: string, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('identifier', ParseArrayPipe) identifier?: string[], @Query('token', ParseTokenPipe) token?: string, ): Promise { @@ -1407,16 +1408,16 @@ export class AccountController { @ApiOperation({ summary: 'Account token history', description: 'Returns account token balance history' }) @ApiQuery({ name: 'from', description: 'Number of items to skip for the result set', required: false }) @ApiQuery({ name: 'size', description: 'Number of items to retrieve', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiOkResponse({ type: [AccountEsdtHistory] }) async getAccountTokenHistory( @Param('address', ParseAddressPipe) address: string, @Param('tokenIdentifier', ParseTokenOrNftPipe) tokenIdentifier: string, @Query('from', new DefaultValuePipe(0), ParseIntPipe) from: number, @Query('size', new DefaultValuePipe(25), ParseIntPipe) size: number, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, ): Promise { const isToken = await this.tokenService.isToken(tokenIdentifier) || await this.collectionService.isCollection(tokenIdentifier) || await this.nftService.isNft(tokenIdentifier); if (!isToken) { diff --git a/src/endpoints/applications/application.controller.ts b/src/endpoints/applications/application.controller.ts index dd444f1cd..e9fcbd0bc 100644 --- a/src/endpoints/applications/application.controller.ts +++ b/src/endpoints/applications/application.controller.ts @@ -5,6 +5,7 @@ import { QueryPagination } from "src/common/entities/query.pagination"; import { ApplicationFilter } from "./entities/application.filter"; import { ParseIntPipe, ParseBoolPipe, ParseAddressPipe } from "@multiversx/sdk-nestjs-common"; import { Application } from "./entities/application"; +import { TimestampParsePipe } from "src/utils/timestamp.parse.pipe"; @Controller() @ApiTags('applications') @@ -18,14 +19,14 @@ export class ApplicationController { @ApiOkResponse({ type: [Application] }) @ApiQuery({ name: 'from', description: 'Number of items to skip for the result set', required: false }) @ApiQuery({ name: 'size', description: 'Number of items to retrieve', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'withTxCount', description: 'Include transaction count', required: false, type: Boolean }) async getApplications( @Query('from', new DefaultValuePipe(0), ParseIntPipe) from: number, @Query("size", new DefaultValuePipe(25), ParseIntPipe) size: number, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('withTxCount', new ParseBoolPipe()) withTxCount?: boolean, ): Promise { const applicationFilter = new ApplicationFilter({ before, after, withTxCount }); @@ -41,8 +42,8 @@ export class ApplicationController { @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) async getApplicationsCount( - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, ): Promise { const filter = new ApplicationFilter({ before, after }); diff --git a/src/endpoints/blocks/entities/block.ts b/src/endpoints/blocks/entities/block.ts index aa6d63076..9728799e6 100644 --- a/src/endpoints/blocks/entities/block.ts +++ b/src/endpoints/blocks/entities/block.ts @@ -47,6 +47,9 @@ export class Block { @ApiProperty({ type: Number }) timestamp: number = 0; + @ApiProperty({ type: Number, nullable: true, required: false }) + timestampMs?: number; + @ApiProperty({ type: Number }) txCount: number = 0; @@ -68,7 +71,7 @@ export class Block { @ApiProperty({ type: BlockProofDto, nullable: true, required: false }) previousHeaderProof: BlockProofDto | undefined = undefined; - @ApiProperty( { type: String }) + @ApiProperty({ type: String }) reserved: string = ''; @ApiProperty({ type: BlockProofDto, nullable: true, required: false }) diff --git a/src/endpoints/collections/collection.controller.ts b/src/endpoints/collections/collection.controller.ts index a0700007b..a49f6483c 100644 --- a/src/endpoints/collections/collection.controller.ts +++ b/src/endpoints/collections/collection.controller.ts @@ -26,6 +26,7 @@ import { SortCollections } from "./entities/sort.collections"; import { ParseArrayPipeOptions } from "@multiversx/sdk-nestjs-common/lib/pipes/entities/parse.array.options"; import { TransferService } from "../transfers/transfer.service"; import { NftSubType } from "../nfts/entities/nft.sub.type"; +import { TimestampParsePipe } from "src/utils/timestamp.parse.pipe"; @Controller() @ApiTags('collections') @@ -47,8 +48,8 @@ export class CollectionController { @ApiQuery({ name: 'type', description: 'Filter by type (NonFungibleESDT/SemiFungibleESDT/MetaESDT)', required: false }) @ApiQuery({ name: 'subType', description: 'Filter by type (NonFungibleESDTv2/DynamicNonFungibleESDT/DynamicSemiFungibleESDT)', required: false }) @ApiQuery({ name: 'creator', description: 'Filter collections where the given address has a creator role', required: false, deprecated: true }) - @ApiQuery({ name: 'before', description: 'Return all collections before given timestamp', required: false, type: Number }) - @ApiQuery({ name: 'after', description: 'Return all collections after given timestamp', required: false, type: Number }) + @ApiQuery({ name: 'before', description: 'Return all collections before given timestamp or timestampMs', required: false, type: Number }) + @ApiQuery({ name: 'after', description: 'Return all collections after given timestamp or timestampMs', required: false, type: Number }) @ApiQuery({ name: 'canCreate', description: 'Filter by address with canCreate role', required: false }) @ApiQuery({ name: 'canBurn', description: 'Filter by address with canBurn role', required: false }) @ApiQuery({ name: 'canAddQuantity', description: 'Filter by address with canAddQuantity role', required: false }) @@ -66,8 +67,8 @@ export class CollectionController { @Query('type', new ParseEnumArrayPipe(NftType)) type?: NftType[], @Query('subType', new ParseEnumArrayPipe(NftSubType)) subType?: NftSubType[], @Query('creator', ParseAddressPipe) creator?: string, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('canCreate', ParseAddressPipe) canCreate?: string, @Query('canBurn', ParseAddressPipe) canBurn?: string, @Query('canAddQuantity', ParseAddressPipe) canAddQuantity?: string, @@ -102,8 +103,8 @@ export class CollectionController { @ApiQuery({ name: 'search', description: 'Search by collection identifier', required: false }) @ApiQuery({ name: 'type', description: 'Filter by type (NonFungibleESDT/SemiFungibleESDT/MetaESDT)', required: false }) @ApiQuery({ name: 'creator', description: 'Filter collections where the given address has a creator role', required: false, deprecated: true }) - @ApiQuery({ name: 'before', description: 'Return all collections before given timestamp', required: false, type: Number }) - @ApiQuery({ name: 'after', description: 'Return all collections after given timestamp', required: false, type: Number }) + @ApiQuery({ name: 'before', description: 'Return all collections before given timestamp or timestampMs', required: false, type: Number }) + @ApiQuery({ name: 'after', description: 'Return all collections after given timestamp or timestampMs', required: false, type: Number }) @ApiQuery({ name: 'canCreate', description: 'Filter by address with canCreate role', required: false }) @ApiQuery({ name: 'canBurn', description: 'Filter by address with canBurn role', required: false }) @ApiQuery({ name: 'canAddQuantity', description: 'Filter by address with canAddQuantity role', required: false }) @@ -118,8 +119,8 @@ export class CollectionController { @Query('type', new ParseEnumArrayPipe(NftType)) type?: NftType[], @Query('subType', new ParseEnumArrayPipe(NftSubType)) subType?: NftSubType[], @Query('creator', ParseAddressPipe) creator?: string, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('canCreate', ParseAddressPipe) canCreate?: string, @Query('canBurn', ParseAddressPipe) canBurn?: string, @Query('canAddQuantity', ParseAddressPipe) canAddQuantity?: string, @@ -150,8 +151,8 @@ export class CollectionController { @Query('search') search?: string, @Query('type', new ParseEnumArrayPipe(NftType)) type?: NftType[], @Query('creator', ParseAddressPipe) creator?: string, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('canCreate', ParseAddressPipe) canCreate?: string, @Query('canBurn', ParseAddressPipe) canBurn?: string, @Query('canAddQuantity', ParseAddressPipe) canAddQuantity?: string, @@ -328,8 +329,8 @@ export class CollectionController { @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transaction hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transactions by function name', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Filter by round number', required: false }) @ApiQuery({ name: 'order', description: 'Sort order (asc/desc)', required: false, enum: SortOrder }) @ApiQuery({ name: 'from', description: 'Number of items to skip for the result set', required: false }) @@ -352,8 +353,8 @@ export class CollectionController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('order', new ParseEnumPipe(SortOrder)) order?: SortOrder, @Query('withScResults', ParseBoolPipe) withScResults?: boolean, @@ -402,8 +403,8 @@ export class CollectionController { @ApiQuery({ name: 'miniBlockHash', description: 'Filter by miniblock hash', required: false }) @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transaction hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Filter by round number', required: false }) @ApiQuery({ name: 'withRelayedScresults', description: 'If set to true, will include smart contract results that resemble relayed transactions', required: false, type: Boolean }) async getCollectionTransactionsCount( @@ -415,8 +416,8 @@ export class CollectionController { @Query('miniBlockHash', ParseBlockHashPipe) miniBlockHash?: string, @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('withRelayedScresults', ParseBoolPipe) withRelayedScresults?: boolean, ) { @@ -454,8 +455,8 @@ export class CollectionController { @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transaction hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transactions by function name', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Filter by round number', required: false }) @ApiQuery({ name: 'order', description: 'Sort order (asc/desc)', required: false, enum: SortOrder }) @ApiQuery({ name: 'from', description: 'Number of items to skip for the result set', required: false }) @@ -477,8 +478,8 @@ export class CollectionController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('order', new ParseEnumPipe(SortOrder)) order?: SortOrder, @Query('withScResults', ParseBoolPipe) withScResults?: boolean, @@ -523,8 +524,8 @@ export class CollectionController { @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transfer hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transfer (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transfers by function name', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Filter by round number', required: false }) async getCollectionTransfersCount( @Param('collection', ParseCollectionPipe) identifier: string, @@ -536,8 +537,8 @@ export class CollectionController { @Query('miniBlockHash', ParseBlockHashPipe) miniBlockHash?: string, @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, ) { const isCollection = await this.collectionService.isCollection(identifier); diff --git a/src/endpoints/collections/entities/nft.collection.ts b/src/endpoints/collections/entities/nft.collection.ts index da03e0c7a..5d77e2228 100644 --- a/src/endpoints/collections/entities/nft.collection.ts +++ b/src/endpoints/collections/entities/nft.collection.ts @@ -32,6 +32,9 @@ export class NftCollection { @ApiProperty({ type: Number }) timestamp: number = 0; + @ApiProperty({ type: Number, nullable: true, required: false }) + timestampMs?: number; + @ApiProperty({ type: Boolean, default: false }) canFreeze: boolean = false; diff --git a/src/endpoints/events/entities/events.ts b/src/endpoints/events/entities/events.ts index 00d5909b1..1bc7720f5 100644 --- a/src/endpoints/events/entities/events.ts +++ b/src/endpoints/events/entities/events.ts @@ -39,4 +39,7 @@ export class Events { @ApiProperty({ description: "Event timestamp." }) timestamp: number = 0; + + @ApiProperty({ description: "Event timestamp in milliseconds.", nullable: true, required: false }) + timestampMs?: number; } diff --git a/src/endpoints/events/events.controller.ts b/src/endpoints/events/events.controller.ts index 5c5fc9f08..dc7ce3a0a 100644 --- a/src/endpoints/events/events.controller.ts +++ b/src/endpoints/events/events.controller.ts @@ -6,6 +6,7 @@ import { ParseAddressPipe, ParseIntPipe } from '@multiversx/sdk-nestjs-common'; import { Events } from './entities/events'; import { EventsFilter } from './entities/events.filter'; +import { TimestampParsePipe } from 'src/utils/timestamp.parse.pipe'; @Controller() @ApiTags('events') @@ -24,8 +25,8 @@ export class EventsController { @ApiQuery({ name: 'identifier', description: 'Event identifier', required: false }) @ApiQuery({ name: 'txHash', description: 'Event transaction hash', required: false }) @ApiQuery({ name: 'shard', description: 'Event shard id', required: false }) - @ApiQuery({ name: 'before', description: 'Event before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'Event after timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Event before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'Event after timestamp or timestampMs', required: false }) @ApiQuery({ name: 'order', description: 'Event order', required: false }) @ApiQuery({ name: 'topics', description: 'Event topics to filter by', required: false, isArray: true }) async getEvents( @@ -36,8 +37,8 @@ export class EventsController { @Query('identifier') identifier: string, @Query('txHash') txHash: string, @Query('shard', ParseIntPipe) shard: number, - @Query('before', ParseIntPipe) before: number, - @Query('after', ParseIntPipe) after: number, + @Query('before', TimestampParsePipe) before: number, + @Query('after', TimestampParsePipe) after: number, @Query('order', ParseIntPipe) order: number, @Query('topics') topics: string | string[], ): Promise { @@ -54,16 +55,16 @@ export class EventsController { @ApiQuery({ name: 'identifier', description: 'Event identifier', required: false }) @ApiQuery({ name: 'txHash', description: 'Event transaction hash', required: false }) @ApiQuery({ name: 'shard', description: 'Event shard id', required: false }) - @ApiQuery({ name: 'before', description: 'Event before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'Event after timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Event before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'Event after timestamp or timestampMs', required: false }) @ApiQuery({ name: 'topics', description: 'Event topics to filter by', required: false, isArray: true }) async getEventsCount( @Query('address', ParseAddressPipe) address: string, @Query('identifier') identifier: string, @Query('txHash') txHash: string, @Query('shard', ParseIntPipe) shard: number, - @Query('before', ParseIntPipe) before: number, - @Query('after', ParseIntPipe) after: number, + @Query('before', TimestampParsePipe) before: number, + @Query('after', TimestampParsePipe) after: number, @Query('topics') topics: string | string[], ): Promise { const topicsArray = topics ? (Array.isArray(topics) ? topics : [topics]) : []; diff --git a/src/endpoints/nfts/nft.controller.ts b/src/endpoints/nfts/nft.controller.ts index 50a495d24..3c04ea1e8 100644 --- a/src/endpoints/nfts/nft.controller.ts +++ b/src/endpoints/nfts/nft.controller.ts @@ -20,6 +20,7 @@ import { Transaction } from '../transactions/entities/transaction'; import { ScamType } from 'src/common/entities/scam-type.enum'; import { TransferService } from '../transfers/transfer.service'; import { NftSubType } from './entities/nft.sub.type'; +import { TimestampParsePipe } from 'src/utils/timestamp.parse.pipe'; @Controller() @ApiTags('nfts') @@ -52,8 +53,8 @@ export class NftController { @ApiQuery({ name: 'isScam', description: 'Filter by scam status', required: false, type: Boolean }) @ApiQuery({ name: 'scamType', description: 'Filter by type (scam/potentialScam)', required: false }) @ApiQuery({ name: 'traits', description: 'Filter NFTs by traits. Key-value format (:;:)', required: false, type: Boolean }) - @ApiQuery({ name: 'before', description: 'Return all NFTs before given timestamp', required: false, type: Number }) - @ApiQuery({ name: 'after', description: 'Return all NFTs after given timestamp', required: false, type: Number }) + @ApiQuery({ name: 'before', description: 'Return all NFTs before given timestamp or timestampMs', required: false, type: Number }) + @ApiQuery({ name: 'after', description: 'Return all NFTs after given timestamp or timestampMs', required: false, type: Number }) @ApiQuery({ name: 'withOwner', description: 'Return owner where type = NonFungibleESDT', required: false, type: Boolean }) @ApiQuery({ name: 'withSupply', description: 'Return supply where type = SemiFungibleESDT', required: false, type: Boolean }) async getNfts( @@ -74,8 +75,8 @@ export class NftController { @Query('isScam', ParseBoolPipe) isScam?: boolean, @Query('scamType', new ParseEnumPipe(ScamType)) scamType?: ScamType, @Query('traits', ParseRecordPipe) traits?: Record, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('withOwner', ParseBoolPipe) withOwner?: boolean, @Query('withSupply', ParseBoolPipe) withSupply?: boolean, ): Promise { @@ -120,8 +121,8 @@ export class NftController { @ApiQuery({ name: 'hasUris', description: 'Return all NFTs that have one or more uris', required: false, type: Boolean }) @ApiQuery({ name: 'isNsfw', description: 'Filter by NSFW status', required: false, type: Boolean }) @ApiQuery({ name: 'traits', description: 'Filter NFTs by traits. Key-value format (:;:)', required: false, type: Boolean }) - @ApiQuery({ name: 'before', description: 'Return all NFTs before given timestamp', required: false, type: Number }) - @ApiQuery({ name: 'after', description: 'Return all NFTs after given timestamp', required: false, type: Number }) + @ApiQuery({ name: 'before', description: 'Return all NFTs before given timestamp or timestampMs', required: false, type: Number }) + @ApiQuery({ name: 'after', description: 'Return all NFTs after given timestamp or timestampMs', required: false, type: Number }) @ApiQuery({ name: 'isScam', description: 'Filter by scam status', required: false, type: Boolean }) @ApiQuery({ name: 'scamType', description: 'Filter by type (scam/potentialScam)', required: false }) async getNftCount( @@ -138,8 +139,8 @@ export class NftController { @Query('hasUris', ParseBoolPipe) hasUris?: boolean, @Query('isNsfw', ParseBoolPipe) isNsfw?: boolean, @Query('traits', ParseRecordPipe) traits?: Record, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('isScam', ParseBoolPipe) isScam?: boolean, @Query('scamType', new ParseEnumPipe(ScamType)) scamType?: ScamType, ): Promise { @@ -181,8 +182,8 @@ export class NftController { @Query('hasUris', ParseBoolPipe) hasUris?: boolean, @Query('isNsfw', ParseBoolPipe) isNsfw?: boolean, @Query('traits', ParseRecordPipe) traits?: Record, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('isScam', ParseBoolPipe) isScam?: boolean, @Query('scamType', new ParseEnumPipe(ScamType)) scamType?: ScamType, ): Promise { @@ -287,8 +288,8 @@ export class NftController { @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transaction hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transactions by function name', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'order', description: 'Sort order (asc/desc)', required: false, enum: SortOrder }) @ApiQuery({ name: 'from', description: 'Number of items to skip for the result set', required: false }) @ApiQuery({ name: 'size', description: 'Number of items to retrieve', required: false }) @@ -310,8 +311,8 @@ export class NftController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', ParseArrayPipe) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('order', new ParseEnumPipe(SortOrder)) order?: SortOrder, @Query('withScResults', ParseBoolPipe) withScResults?: boolean, @@ -354,8 +355,8 @@ export class NftController { @ApiQuery({ name: 'miniBlockHash', description: 'Filter by miniblock hash', required: false }) @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transaction hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'withRelayedScresults', description: 'If set to true, will include smart contract results that resemble relayed transactions', required: false, type: Boolean }) async getNftTransactionsCount( @Param('identifier', ParseNftPipe) identifier: string, @@ -366,8 +367,8 @@ export class NftController { @Query('miniBlockHash', ParseBlockHashPipe) miniBlockHash?: string, @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('withRelayedScresults', ParseBoolPipe) withRelayedScresults?: boolean, ) { @@ -399,8 +400,8 @@ export class NftController { @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transfer hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transfer (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transfers by function name', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'order', description: 'Sort order (asc/desc)', required: false, enum: SortOrder }) @ApiQuery({ name: 'from', description: 'Number of items to skip for the result set', required: false }) @ApiQuery({ name: 'size', description: 'Number of items to retrieve', required: false }) @@ -421,8 +422,8 @@ export class NftController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', ParseArrayPipe) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('order', new ParseEnumPipe(SortOrder)) order?: SortOrder, @Query('withScResults', ParseBoolPipe) withScResults?: boolean, @Query('withOperations', ParseBoolPipe) withOperations?: boolean, @@ -459,8 +460,8 @@ export class NftController { @ApiQuery({ name: 'miniBlockHash', description: 'Filter by miniblock hash', required: false }) @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transfers hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transfers (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) async getNftTransfersCount( @Param('identifier', ParseNftPipe) identifier: string, @Query('sender', ParseAddressPipe) sender?: string, @@ -470,8 +471,8 @@ export class NftController { @Query('miniBlockHash', ParseBlockHashPipe) miniBlockHash?: string, @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, ) { return await this.transferService.getTransfersCount(new TransactionFilter({ diff --git a/src/endpoints/tokens/token.controller.ts b/src/endpoints/tokens/token.controller.ts index f3bdc113f..ca67cb242 100644 --- a/src/endpoints/tokens/token.controller.ts +++ b/src/endpoints/tokens/token.controller.ts @@ -24,6 +24,7 @@ import { TokenType } from "src/common/indexer/entities"; import { ParseArrayPipeOptions } from "@multiversx/sdk-nestjs-common/lib/pipes/entities/parse.array.options"; import { MexPairType } from "../mex/entities/mex.pair.type"; import { TokenAssetsPriceSourceType } from "src/common/assets/entities/token.assets.price.source.type"; +import { TimestampParsePipe } from "src/utils/timestamp.parse.pipe"; @Controller() @ApiTags('tokens') @@ -206,8 +207,8 @@ export class TokenController { @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transaction hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transactions by function name', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Filter by round number', required: false }) @ApiQuery({ name: 'order', description: 'Sort order (asc/desc)', required: false, enum: SortOrder }) @ApiQuery({ name: 'from', description: 'Number of items to skip for the result set', required: false }) @@ -233,8 +234,8 @@ export class TokenController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('order', new ParseEnumPipe(SortOrder)) order?: SortOrder, @Query('fields', ParseArrayPipe) fields?: string[], @@ -294,8 +295,8 @@ export class TokenController { @ApiQuery({ name: 'miniBlockHash', description: 'Filter by miniblock hash', required: false }) @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transaction hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Filter by round number', required: false }) @ApiQuery({ name: 'isScCall', description: 'Returns sc call transactions details', required: false, type: Boolean }) @ApiQuery({ name: 'withRelayedScresults', description: 'If set to true, will include smart contract results that resemble relayed transactions', required: false, type: Boolean }) @@ -308,8 +309,8 @@ export class TokenController { @Query('miniBlockHash', ParseBlockHashPipe) miniBlockHash?: string, @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('withRelayedScresults', ParseBoolPipe) withRelayedScresults?: boolean, @Query('isScCall', ParseBoolPipe) isScCall?: boolean, @@ -392,8 +393,8 @@ export class TokenController { @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transfers by function name', required: false }) @ApiQuery({ name: 'order', description: 'Sort order (asc/desc)', required: false, enum: SortOrder }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Filter by round number', required: false }) @ApiQuery({ name: 'fields', description: 'List of fields to filter by', required: false, isArray: true, style: 'form', explode: false }) @ApiQuery({ name: 'isScCall', description: 'Returns sc call transactions details', required: false, type: Boolean }) @@ -413,8 +414,8 @@ export class TokenController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('fields', ParseArrayPipe) fields?: string[], @Query('order', new ParseEnumPipe(SortOrder)) order?: SortOrder, @@ -464,8 +465,8 @@ export class TokenController { @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transfer hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transfers by function name', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Filter by round number', required: false }) @ApiQuery({ name: 'isScCall', description: 'Returns sc call transactions details', required: false, type: Boolean }) async getTokenTransfersCount( @@ -478,8 +479,8 @@ export class TokenController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('isScCall', ParseBoolPipe) isScCall?: boolean, ): Promise { @@ -517,8 +518,8 @@ export class TokenController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('isScCall', ParseBoolPipe) isScCall?: boolean, ): Promise { diff --git a/src/endpoints/transactions/transaction.controller.ts b/src/endpoints/transactions/transaction.controller.ts index 9d653a5e7..a3829b949 100644 --- a/src/endpoints/transactions/transaction.controller.ts +++ b/src/endpoints/transactions/transaction.controller.ts @@ -15,6 +15,7 @@ import { TransactionQueryOptions } from './entities/transactions.query.options'; import { TransactionService } from './transaction.service'; import { ParseArrayPipeOptions } from '@multiversx/sdk-nestjs-common/lib/pipes/entities/parse.array.options'; import { PpuMetadata } from './entities/ppu.metadata'; +import { TimestampParsePipe } from 'src/utils/timestamp.parse.pipe'; @Controller() @ApiTags('transactions') @@ -34,8 +35,8 @@ export class TransactionController { @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transaction hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transactions by function name', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Round number', required: false }) @ApiQuery({ name: 'order', description: 'Sort order (asc/desc)', required: false, enum: SortOrder }) @ApiQuery({ name: 'fields', description: 'List of fields to filter by', required: false, isArray: true, style: 'form', explode: false }) @@ -67,8 +68,8 @@ export class TransactionController { @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], @Query('condition') condition?: QueryConditionOptions, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('order', new ParseEnumPipe(SortOrder)) order?: SortOrder, @Query('fields', ParseArrayPipe) fields?: string[], @@ -127,8 +128,8 @@ export class TransactionController { @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'condition', description: 'Condition for elastic search queries', required: false, deprecated: true }) @ApiQuery({ name: 'function', description: 'Filter transactions by function name', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Round number', required: false }) @ApiQuery({ name: 'isRelayed', description: 'Returns relayed transactions details', required: false, type: Boolean }) @ApiQuery({ name: 'isScCall', description: 'Returns sc call transactions details', required: false, type: Boolean }) @@ -145,8 +146,8 @@ export class TransactionController { @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], @Query('condition') condition?: QueryConditionOptions, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('relayer', ParseAddressPipe) relayer?: string, @Query('isRelayed', ParseBoolPipe) isRelayed?: boolean, @@ -187,8 +188,8 @@ export class TransactionController { @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], @Query('condition') condition?: QueryConditionOptions, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('relayer', ParseAddressPipe) relayer?: string, @Query('isRelayed', ParseBoolPipe) isRelayed?: boolean, diff --git a/src/endpoints/transfers/transfer.controller.ts b/src/endpoints/transfers/transfer.controller.ts index 7cd6094fe..8e02225fd 100644 --- a/src/endpoints/transfers/transfer.controller.ts +++ b/src/endpoints/transfers/transfer.controller.ts @@ -10,6 +10,7 @@ import { TransactionStatus } from "../transactions/entities/transaction.status"; import { TransactionQueryOptions } from "../transactions/entities/transactions.query.options"; import { TransferService } from "./transfer.service"; import { ParseArrayPipeOptions } from "@multiversx/sdk-nestjs-common/lib/pipes/entities/parse.array.options"; +import { TimestampParsePipe } from "src/utils/timestamp.parse.pipe"; @Controller() @ApiTags('transfers') @@ -34,8 +35,8 @@ export class TransferController { @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'order', description: 'Sort order (asc/desc)', required: false, enum: SortOrder }) @ApiQuery({ name: 'fields', description: 'List of fields to filter by', required: false, isArray: true, style: 'form', explode: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Round number', required: false }) @ApiQuery({ name: 'function', description: 'Filter transfers by function name', required: false }) @ApiQuery({ name: 'relayer', description: 'Filter by relayer address', required: false }) @@ -61,8 +62,8 @@ export class TransferController { @Query('miniBlockHash', ParseBlockHashPipe) miniBlockHash?: string, @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('order', new ParseEnumPipe(SortOrder)) order?: SortOrder, @Query('fields', ParseArrayPipe) fields?: string[], @@ -119,8 +120,8 @@ export class TransferController { @ApiQuery({ name: 'hashes', description: 'Filter by a comma-separated list of transfer hashes', required: false }) @ApiQuery({ name: 'status', description: 'Status of the transaction (success / pending / invalid / fail)', required: false, enum: TransactionStatus }) @ApiQuery({ name: 'function', description: 'Filter transfers by function name', required: false }) - @ApiQuery({ name: 'before', description: 'Before timestamp', required: false }) - @ApiQuery({ name: 'after', description: 'After timestamp', required: false }) + @ApiQuery({ name: 'before', description: 'Before timestamp or timestampMs', required: false }) + @ApiQuery({ name: 'after', description: 'After timestamp or timestampMs', required: false }) @ApiQuery({ name: 'round', description: 'Round number', required: false }) @ApiQuery({ name: 'relayer', description: 'Filter by the relayer address', required: false }) @ApiQuery({ name: 'isRelayed', description: 'Returns relayed transactions details', required: false, type: Boolean }) @@ -136,8 +137,8 @@ export class TransferController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('relayer', ParseAddressPipe) relayer?: string, @Query('isRelayed', ParseBoolPipe) isRelayed?: boolean, @@ -176,8 +177,8 @@ export class TransferController { @Query('hashes', ParseArrayPipe) hashes?: string[], @Query('status', new ParseEnumPipe(TransactionStatus)) status?: TransactionStatus, @Query('function', new ParseArrayPipe(new ParseArrayPipeOptions({ allowEmptyString: true }))) functions?: string[], - @Query('before', ParseIntPipe) before?: number, - @Query('after', ParseIntPipe) after?: number, + @Query('before', TimestampParsePipe) before?: number, + @Query('after', TimestampParsePipe) after?: number, @Query('round', ParseIntPipe) round?: number, @Query('relayer', ParseAddressPipe) relayer?: string, @Query('isRelayed', ParseBoolPipe) isRelayed?: boolean, diff --git a/src/utils/time.utils.ts b/src/utils/time.utils.ts new file mode 100644 index 000000000..24a4ea646 --- /dev/null +++ b/src/utils/time.utils.ts @@ -0,0 +1,5 @@ +export class TimeUtils { + static isTimestampInSeconds(input: number): boolean { + return input < 100_000_000_000; + } +} \ No newline at end of file diff --git a/src/utils/timestamp.parse.pipe.ts b/src/utils/timestamp.parse.pipe.ts new file mode 100644 index 000000000..4abddaf15 --- /dev/null +++ b/src/utils/timestamp.parse.pipe.ts @@ -0,0 +1,29 @@ +import { PipeTransform, Injectable, BadRequestException } from '@nestjs/common'; +import { ApiConfigService } from 'src/common/api-config/api.config.service'; +import { TimeUtils } from './time.utils'; + +@Injectable() +export class TimestampParsePipe implements PipeTransform { + constructor( + private readonly apiConfigService: ApiConfigService, + ) { } + + transform(value: any): number | undefined { + if (value === undefined || value === null) return undefined; + + const valNumber = parseInt(value, 10); + if (isNaN(valNumber)) { + throw new BadRequestException('Timestamp must be a number'); + } + + const normalizedInputMs = TimeUtils.isTimestampInSeconds(valNumber) ? valNumber * 1000 : valNumber; + + const supernovaActivationTimestampMs = this.apiConfigService.getSupernovaActivationTimestamp() * 1000; + + if (normalizedInputMs < supernovaActivationTimestampMs) { + return Math.floor(normalizedInputMs / 1000); + } else { + return normalizedInputMs; + } + } +} \ No newline at end of file From 310ba1463b93ad72b18ecdd87c461dc47bf47ee0 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 3 Dec 2025 12:13:15 +0200 Subject: [PATCH 050/206] lint --- src/common/api-config/api.config.service.ts | 2 +- src/common/indexer/elastic/elastic.indexer.helper.ts | 2 +- src/utils/time.utils.ts | 2 +- src/utils/timestamp.parse.pipe.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index adb75d36e..032330606 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -1085,4 +1085,4 @@ export class ApiConfigService { return timestamp; } -} \ No newline at end of file +} diff --git a/src/common/indexer/elastic/elastic.indexer.helper.ts b/src/common/indexer/elastic/elastic.indexer.helper.ts index d2173b4db..753598acb 100644 --- a/src/common/indexer/elastic/elastic.indexer.helper.ts +++ b/src/common/indexer/elastic/elastic.indexer.helper.ts @@ -570,7 +570,7 @@ export class ElasticIndexerHelper { .withMustMatchCondition('miniBlockHash', filter.miniBlockHash) .withMustMultiShouldCondition(filter.hashes, hash => QueryType.Match('_id', hash)) .withMustMatchCondition('status', filter.status) - .withMustMultiShouldCondition(filter.tokens, token => QueryType.Match('tokens', token, QueryOperator.AND)) + .withMustMultiShouldCondition(filter.tokens, token => QueryType.Match('tokens', token, QueryOperator.AND)); if (filter.before) { const timestampBeforeIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; diff --git a/src/utils/time.utils.ts b/src/utils/time.utils.ts index 24a4ea646..b036093f1 100644 --- a/src/utils/time.utils.ts +++ b/src/utils/time.utils.ts @@ -2,4 +2,4 @@ export class TimeUtils { static isTimestampInSeconds(input: number): boolean { return input < 100_000_000_000; } -} \ No newline at end of file +} diff --git a/src/utils/timestamp.parse.pipe.ts b/src/utils/timestamp.parse.pipe.ts index 4abddaf15..503c64192 100644 --- a/src/utils/timestamp.parse.pipe.ts +++ b/src/utils/timestamp.parse.pipe.ts @@ -26,4 +26,4 @@ export class TimestampParsePipe implements PipeTransform { return normalizedInputMs; } } -} \ No newline at end of file +} From e4977be03e54ed26c5cc531a2a9a0f43e9f40000 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 3 Dec 2025 14:01:05 +0200 Subject: [PATCH 051/206] hardcode timestamp supernova in the future --- config/config.devnet-old.yaml | 2 +- config/config.devnet.yaml | 2 +- config/config.e2e-mocked.mainnet.yaml | 2 +- config/config.e2e.mainnet.yaml | 2 +- config/config.mainnet.yaml | 2 +- config/config.testnet.yaml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/config.devnet-old.yaml b/config/config.devnet-old.yaml index 43703a63b..a0248e02b 100644 --- a/config/config.devnet-old.yaml +++ b/config/config.devnet-old.yaml @@ -128,4 +128,4 @@ nftProcess: supernova: activation: epoch: 2030 - timestamp: 1764749472 + timestamp: 1864749472 diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index a66c94859..75d7f4026 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -200,4 +200,4 @@ compression: supernova: activation: epoch: 2030 - timestamp: 1764749472 \ No newline at end of file + timestamp: 1864749472 \ No newline at end of file diff --git a/config/config.e2e-mocked.mainnet.yaml b/config/config.e2e-mocked.mainnet.yaml index ed52b3e10..20deb173e 100644 --- a/config/config.e2e-mocked.mainnet.yaml +++ b/config/config.e2e-mocked.mainnet.yaml @@ -82,4 +82,4 @@ transaction-action: supernova: activation: epoch: 2030 - timestamp: 1764749472 + timestamp: 1864749472 diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index ac322b69f..4b462437b 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -194,4 +194,4 @@ nftProcess: supernova: activation: epoch: 2030 - timestamp: 1764749472 \ No newline at end of file + timestamp: 1864749472 \ No newline at end of file diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index dcfb48fec..ab0848fd1 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -208,4 +208,4 @@ customUrlHeaders: supernova: activation: epoch: 2030 - timestamp: 1764749472 + timestamp: 1864749472 diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index fbb5702db..741458817 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -203,4 +203,4 @@ compression: supernova: activation: epoch: 2030 - timestamp: 1764749472 + timestamp: 1864749472 From 3f11983550aac4a118f2d157332cbc6100411950 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 3 Dec 2025 14:04:45 +0200 Subject: [PATCH 052/206] extra checks + clean code --- src/utils/time.utils.ts | 3 ++- src/utils/timestamp.parse.pipe.ts | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/utils/time.utils.ts b/src/utils/time.utils.ts index b036093f1..81a13b552 100644 --- a/src/utils/time.utils.ts +++ b/src/utils/time.utils.ts @@ -1,5 +1,6 @@ export class TimeUtils { + static readonly TIMESTAMP_IN_SECONDS_THRESHOLD = 100_000_000_000; static isTimestampInSeconds(input: number): boolean { - return input < 100_000_000_000; + return input < TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD; } } diff --git a/src/utils/timestamp.parse.pipe.ts b/src/utils/timestamp.parse.pipe.ts index 503c64192..7f88694ef 100644 --- a/src/utils/timestamp.parse.pipe.ts +++ b/src/utils/timestamp.parse.pipe.ts @@ -16,6 +16,10 @@ export class TimestampParsePipe implements PipeTransform { throw new BadRequestException('Timestamp must be a number'); } + if (valNumber <= 0) { + throw new BadRequestException('Timestamp must be a positive number'); + } + const normalizedInputMs = TimeUtils.isTimestampInSeconds(valNumber) ? valNumber * 1000 : valNumber; const supernovaActivationTimestampMs = this.apiConfigService.getSupernovaActivationTimestamp() * 1000; From 07699fe95a3afcd2464386158a9b45f630f2d37f Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 3 Dec 2025 14:57:07 +0200 Subject: [PATCH 053/206] fixes --- config/config.devnet-old.yaml | 8 ++++---- config/config.devnet.yaml | 8 ++++---- config/config.e2e-mocked.mainnet.yaml | 8 ++++---- config/config.e2e.mainnet.yaml | 10 +++++----- config/config.mainnet.yaml | 8 ++++---- config/config.testnet.yaml | 8 ++++---- src/common/api-config/api.config.service.ts | 19 +++++++++++++++---- 7 files changed, 40 insertions(+), 29 deletions(-) diff --git a/config/config.devnet-old.yaml b/config/config.devnet-old.yaml index a0248e02b..82bb1dec2 100644 --- a/config/config.devnet-old.yaml +++ b/config/config.devnet-old.yaml @@ -61,6 +61,10 @@ features: jwtSecret: '' nodeEpochsLeft: enabled: false + chainSupernova: + enabled: false + activationEpoch: 2030 + activationTimestamp: 1864749472 image: width: 600 height: 600 @@ -125,7 +129,3 @@ inflation: nftProcess: parallelism: 1 maxRetries: 3 -supernova: - activation: - epoch: 2030 - timestamp: 1864749472 diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index 75d7f4026..7bdeb26fd 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -73,6 +73,10 @@ features: stakingV5: enabled: true activationEpoch: 4817 + chainSupernova: + enabled: false + activationEpoch: 2030 + activationTimestamp: 1864749472 deprecatedRelayedV1V2: enabled: true activationEpoch: 4569 @@ -197,7 +201,3 @@ compression: level: 6 threshold: 1024 chunkSize: 16384 -supernova: - activation: - epoch: 2030 - timestamp: 1864749472 \ No newline at end of file diff --git a/config/config.e2e-mocked.mainnet.yaml b/config/config.e2e-mocked.mainnet.yaml index 20deb173e..79cef548f 100644 --- a/config/config.e2e-mocked.mainnet.yaml +++ b/config/config.e2e-mocked.mainnet.yaml @@ -16,6 +16,10 @@ features: maxExpirySeconds: 86400 acceptedOrigins: - '' + chainSupernova: + enabled: false + activationEpoch: 2030 + activationTimestamp: 1864749472 cron: transactionProcessor: false transactionProcessorMaxLookBehind: 1000 @@ -79,7 +83,3 @@ test: transaction-action: mex: microServiceUrl: 'https://graph.xexchange.com/graphql' -supernova: - activation: - epoch: 2030 - timestamp: 1864749472 diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index 4b462437b..10f451798 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -71,6 +71,10 @@ features: stakingV5: enabled: true activationEpoch: 1951 + chainSupernova: + enabled: false + activationEpoch: 2030 + activationTimestamp: 1864749472 nodeEpochsLeft: enabled: false transactionProcessor: @@ -190,8 +194,4 @@ stakingV5Inflation: - 1262802 nftProcess: parallelism: 1 - maxRetries: 3 -supernova: - activation: - epoch: 2030 - timestamp: 1864749472 \ No newline at end of file + maxRetries: 3 \ No newline at end of file diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index ab0848fd1..3ddf8d04e 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -71,6 +71,10 @@ features: stakingV5: enabled: true activationEpoch: 1951 + chainSupernova: + enabled: false + activationEpoch: 2030 + activationTimestamp: 1864749472 deprecatedRelayedV1V2: enabled: true activationEpoch: 1918 @@ -205,7 +209,3 @@ customUrlHeaders: - urlPattern: '' headers: x-custom-auth: '' -supernova: - activation: - epoch: 2030 - timestamp: 1864749472 diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index 741458817..67480ae6a 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -70,6 +70,10 @@ features: stakingV5: enabled: true activationEpoch: 2519 + chainSupernova: + enabled: false + activationEpoch: 2030 + activationTimestamp: 1864749472 deprecatedRelayedV1V2: enabled: true activationEpoch: 2038 @@ -200,7 +204,3 @@ compression: level: 6 threshold: 1024 chunkSize: 16384 -supernova: - activation: - epoch: 2030 - timestamp: 1864749472 diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index 032330606..f50166a8e 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -4,6 +4,7 @@ import { ConfigService } from '@nestjs/config'; import { DatabaseConnectionOptions } from '../persistence/entities/connection.options'; import { StatusCheckerThresholds } from './entities/status-checker-thresholds'; import { LogTopic } from '@multiversx/sdk-transaction-processor/lib/types/log-topic'; +import { TimeUtils } from 'src/utils/time.utils'; @Injectable() export class ApiConfigService { @@ -1068,19 +1069,29 @@ export class ApiConfigService { return undefined; } + isChainSupernovaEnabled(): boolean { + return this.configService.get('features.chainSupernova.enabled') ?? false; + } + getSupernovaActivationEpoch(): number { - const epoch = this.configService.get('supernova.activation.epoch'); + if (!this.isChainSupernovaEnabled()) { + return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; + } + const epoch = this.configService.get('features.chainSupernova.activation.epoch'); if (epoch == null) { - throw new Error('No supernova.activation.epoch present'); + return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; } return epoch; } getSupernovaActivationTimestamp(): number { - const timestamp = this.configService.get('supernova.activation.timestamp'); + if (!this.isChainSupernovaEnabled()) { + return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; + } + const timestamp = this.configService.get('features.chainSupernova.activation.timestamp'); if (timestamp == null) { - throw new Error('No supernova.activation.timestamp present'); + return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; } return timestamp; From c1c71138927559e3e43815f7cd198433c0227b29 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 3 Dec 2025 15:12:58 +0200 Subject: [PATCH 054/206] fixes --- src/common/api-config/api.config.service.ts | 6 ------ src/utils/timestamp.parse.pipe.ts | 3 +++ 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index f50166a8e..eb465543b 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -1074,9 +1074,6 @@ export class ApiConfigService { } getSupernovaActivationEpoch(): number { - if (!this.isChainSupernovaEnabled()) { - return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; - } const epoch = this.configService.get('features.chainSupernova.activation.epoch'); if (epoch == null) { return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; @@ -1086,9 +1083,6 @@ export class ApiConfigService { } getSupernovaActivationTimestamp(): number { - if (!this.isChainSupernovaEnabled()) { - return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; - } const timestamp = this.configService.get('features.chainSupernova.activation.timestamp'); if (timestamp == null) { return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; diff --git a/src/utils/timestamp.parse.pipe.ts b/src/utils/timestamp.parse.pipe.ts index 7f88694ef..2a58acc00 100644 --- a/src/utils/timestamp.parse.pipe.ts +++ b/src/utils/timestamp.parse.pipe.ts @@ -21,6 +21,9 @@ export class TimestampParsePipe implements PipeTransform { } const normalizedInputMs = TimeUtils.isTimestampInSeconds(valNumber) ? valNumber * 1000 : valNumber; + if (!this.apiConfigService.isChainSupernovaEnabled()) { + return Math.floor(normalizedInputMs / 1000); + } const supernovaActivationTimestampMs = this.apiConfigService.getSupernovaActivationTimestamp() * 1000; From 5e520d415927895caa38898d9967145fd4eaed1c Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 4 Dec 2025 11:24:32 +0200 Subject: [PATCH 055/206] typo --- src/common/api-config/api.config.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index eb465543b..b27e382e9 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -1074,7 +1074,7 @@ export class ApiConfigService { } getSupernovaActivationEpoch(): number { - const epoch = this.configService.get('features.chainSupernova.activation.epoch'); + const epoch = this.configService.get('features.chainSupernova.activationEpoch'); if (epoch == null) { return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; } @@ -1083,7 +1083,7 @@ export class ApiConfigService { } getSupernovaActivationTimestamp(): number { - const timestamp = this.configService.get('features.chainSupernova.activation.timestamp'); + const timestamp = this.configService.get('features.chainSupernova.activationTimestamp'); if (timestamp == null) { return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; } From ed46948aaf39a3072f83d3c1b7d256a18a0f0246 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 4 Dec 2025 16:53:07 +0200 Subject: [PATCH 056/206] use latest chainsim --- src/test/chain-simulator/docker/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/chain-simulator/docker/docker-compose.yml b/src/test/chain-simulator/docker/docker-compose.yml index 69e37abe4..fcd3325d4 100644 --- a/src/test/chain-simulator/docker/docker-compose.yml +++ b/src/test/chain-simulator/docker/docker-compose.yml @@ -20,7 +20,7 @@ services: chainsimulator: container_name: chainsimulator - image: multiversx/chainsimulator:v1.8.4-barnard-test2 + image: multiversx/chainsimulator:latest command: ["--node-override-config", "./overridable-config.toml"] volumes: - ./overridable-config.toml:/multiversx/overridable-config.toml From aaacda73ea094776fbef1686e5dd6ac72e486e44 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 4 Dec 2025 17:09:58 +0200 Subject: [PATCH 057/206] fix --- src/utils/ws.subscription.limiter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/ws.subscription.limiter.ts b/src/utils/ws.subscription.limiter.ts index 1eed046eb..e43961602 100644 --- a/src/utils/ws.subscription.limiter.ts +++ b/src/utils/ws.subscription.limiter.ts @@ -5,7 +5,7 @@ import { WsException } from '@nestjs/websockets'; @Injectable() export class WsSubscriptionLimiterGuard implements CanActivate { - static MAX_ROOMS = 5; // TODO: adjust limit + static MAX_ROOMS = 5 + 1; // TODO: adjust limit (5 subscriptions + 1 default room client id) canActivate(context: ExecutionContext): boolean { const client: Socket = context.switchToWs().getClient(); From 610683063156cfd8721efe51cae2b12ca3dee8da Mon Sep 17 00:00:00 2001 From: Catalin Faur <52102171+cfaur09@users.noreply.github.com> Date: Fri, 5 Dec 2025 13:05:55 +0200 Subject: [PATCH 058/206] add unit tests for transaction reordering by nonce for account sent transactions (#1572) --- src/test/unit/services/transactions.spec.ts | 231 ++++++++++++++++++++ 1 file changed, 231 insertions(+) diff --git a/src/test/unit/services/transactions.spec.ts b/src/test/unit/services/transactions.spec.ts index 962ac2da1..6a6b0c358 100644 --- a/src/test/unit/services/transactions.spec.ts +++ b/src/test/unit/services/transactions.spec.ts @@ -294,5 +294,236 @@ describe('TransactionService', () => { expect(service.applyBlockInfo).toHaveBeenCalledWith(expect.any(Array)); }); + + it('should reorder transactions sent by account address by nonce when address is provided', async () => { + const accountAddress = 'erd10v2kud9534x8resv7j2zleunakq2xkjdd8craelhjjksw6y2w36qfs8w8p'; + const filter = new TransactionFilter(); + const pagination = new QueryPagination(); + + const mockTransactions: Transaction[] = [ + { + hash: 'd5a81dcf6f93c69d29d19c0db0d497839cae9ebdf45b0d6341d5e7d7b36afc41', + miniBlockHash: 'c30138148f350bcb1cafacfc8bcca601bd55b5c5eec21e322cbf5cf162d0bdd8', + nonce: 11, + round: 28011213, + value: '100000000000000000', + receiver: 'erd1qga7ze0l03chfgru0a32wxqf2226nzrxnyhzer9lmudqhjgy7ycqjjyknz', + receiverUserName: '', + receiverUsername: '', + sender: accountAddress, + senderUserName: '', + senderUsername: '', + receiverShard: 2, + senderShard: 0, + gasPrice: '1000000200', + gasLimit: '75000', + gasUsed: '69500', + fee: '69500013900000', + data: 'WW9pbmsuIEhlaGVoZQ==', + signature: 'f61f3950c151f032185fe8d7780b19d74f99dfd050969b4202966ce4d7252c6c2810439a9b9f290d21e83927e337be72361b275b3cbdc9fe09db6401c459fb07', + timestamp: 1764184878, + status: 'success', + searchOrder: 0, + hasScResults: false, + hasOperations: false, + tokens: [], + esdtValues: [], + receivers: [], + receiversShardIDs: [], + operation: 'transfer', + scResults: [], + relayerAddr: '', + version: 1, + relayer: '', + isRelayed: false, + isScCall: false, + relayerSignature: '', + timestampMs: 1764184878000, + }, + { + hash: 'd5a81dcf6f93c69d29d19c0db0d497839cae9ebdf45b0d6341d5e7d7b36afc40', + miniBlockHash: '2d28a4dd003b166794707b374611c3fed119e997c8fc9b162e34a378e2aee366', + nonce: 12, + round: 28011212, + value: '100000000000000000', + receiver: 'erd1qga7ze0l03chfgru0a32wxqf2226nzrxnyhzer9lmudqhjgy7ycqjjyknz', + receiverUserName: '', + receiverUsername: '', + sender: accountAddress, + senderUserName: '', + senderUsername: '', + receiverShard: 2, + senderShard: 0, + gasPrice: '1000000200', + gasLimit: '75000', + gasUsed: '75000', + fee: '69555013911000', + data: 'WW9pbmsuIEhlaGVoZQ==', + signature: '3212d61815bcc09cb7513aaf53a668259ea0d33fba76f769068a727154837845f05379c3a7fdc7d6b6b5edfe90f61cac8a65dc0de6d84244235ff4fad021e50e', + timestamp: 1764184872, + status: 'invalid', + searchOrder: 0, + hasScResults: false, + hasOperations: false, + tokens: [], + esdtValues: [], + receivers: [], + receiversShardIDs: [], + operation: 'transfer', + scResults: [], + relayerAddr: '', + version: 1, + relayer: '', + isRelayed: false, + isScCall: false, + relayerSignature: '', + timestampMs: 1764184872000, + }, + { + hash: 'abc123def456', + miniBlockHash: 'mini123', + nonce: 100, + round: 28011210, + value: '50000000000000000', + receiver: accountAddress, + receiverUserName: '', + receiverUsername: '', + sender: 'erd1qqqqqqqqqqqqqpgq7rwhny4mx6dhuzcsymrhdsv2vmvarecgh4vq687aqr', + senderUserName: '', + senderUsername: '', + receiverShard: 0, + senderShard: 1, + gasPrice: '1000000000', + gasLimit: '50000', + gasUsed: '50000', + fee: '50000000000000', + data: '', + signature: 'sig123', + timestamp: 1764184875, + status: 'success', + searchOrder: 0, + hasScResults: false, + hasOperations: false, + tokens: [], + esdtValues: [], + receivers: [], + receiversShardIDs: [], + operation: 'transfer', + scResults: [], + relayerAddr: '', + version: 1, + relayer: '', + isRelayed: false, + isScCall: false, + relayerSignature: '', + timestampMs: 1764184875000, + }, + ]; + + jest.spyOn(indexerService, 'getTransactions').mockResolvedValue(mockTransactions); + jest.spyOn(assetsService, 'getAllAccountAssets').mockResolvedValue({}); + + const results = await service.getTransactions(filter, pagination, undefined, accountAddress); + + const accountSentTxs = results.filter(tx => tx.sender === accountAddress); + expect(accountSentTxs).toHaveLength(2); + expect(accountSentTxs[0].nonce).toBe(12); + expect(accountSentTxs[1].nonce).toBe(11); + }); + + it('should not reorder transactions when sender or receiver filter is applied', async () => { + const accountAddress = 'erd10v2kud9534x8resv7j2zleunakq2xkjdd8craelhjjksw6y2w36qfs8w8p'; + const filter = new TransactionFilter({ sender: accountAddress }); + const pagination = new QueryPagination(); + + const mockTransactions: Transaction[] = [ + { + hash: 'tx1hash', + miniBlockHash: 'mini1', + nonce: 11, + round: 1000, + value: '1000000', + receiver: 'erd1receiver', + receiverUserName: '', + receiverUsername: '', + sender: accountAddress, + senderUserName: '', + senderUsername: '', + receiverShard: 0, + senderShard: 0, + gasPrice: '1000000000', + gasLimit: '50000', + gasUsed: '50000', + fee: '50000000000000', + data: '', + signature: 'sig1', + timestamp: 1764184878, + status: 'success', + searchOrder: 0, + hasScResults: false, + hasOperations: false, + tokens: [], + esdtValues: [], + receivers: [], + receiversShardIDs: [], + operation: 'transfer', + scResults: [], + relayerAddr: '', + version: 1, + relayer: '', + isRelayed: false, + isScCall: false, + relayerSignature: '', + timestampMs: 1764184878000, + }, + { + hash: 'tx2hash', + miniBlockHash: 'mini2', + nonce: 12, + round: 999, + value: '1000000', + receiver: 'erd1receiver', + receiverUserName: '', + receiverUsername: '', + sender: accountAddress, + senderUserName: '', + senderUsername: '', + receiverShard: 0, + senderShard: 0, + gasPrice: '1000000000', + gasLimit: '50000', + gasUsed: '50000', + fee: '50000000000000', + data: '', + signature: 'sig2', + timestamp: 1764184872, + status: 'success', + searchOrder: 0, + hasScResults: false, + hasOperations: false, + tokens: [], + esdtValues: [], + receivers: [], + receiversShardIDs: [], + operation: 'transfer', + scResults: [], + relayerAddr: '', + version: 1, + relayer: '', + isRelayed: false, + isScCall: false, + relayerSignature: '', + timestampMs: 1764184872000, + }, + ]; + + jest.spyOn(indexerService, 'getTransactions').mockResolvedValue(mockTransactions); + jest.spyOn(assetsService, 'getAllAccountAssets').mockResolvedValue({}); + + const results = await service.getTransactions(filter, pagination, undefined, accountAddress); + + expect(results[0].nonce).toBe(11); + expect(results[1].nonce).toBe(12); + }); }); }); From 6527c10a94ec852a7dd58b462d95fcc8ce616374 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 5 Dec 2025 16:35:48 +0200 Subject: [PATCH 059/206] add chain simulator e2e tests --- src/crons/websocket/websocket.cron.service.ts | 14 +- .../websocket.subscription.module.ts | 2 + src/test/chain-simulator/config/.env.example | 1 + src/test/chain-simulator/config/env.config.ts | 1 + .../docker/overridable-config.toml | 1 + .../utils/chain.simulator.operations.ts | 27 ++++ .../websocket.subscriptions.cs-e2e.ts | 146 ++++++++++++++++++ 7 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index e5f53a7f4..47cd392a7 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -20,6 +20,7 @@ import { Stats } from 'src/endpoints/network/entities/stats'; import { TransactionsCustomGateway } from './transaction.custom.gateway'; import { ConnectionHandler } from './connection.handler'; import { EventsCustomGateway } from './events.custom.gateway'; +import { ApiConfigService } from 'src/common/api-config/api.config.service'; @Injectable() @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -41,6 +42,7 @@ export class WebsocketCronService { private readonly transactionsCustomGateway: TransactionsCustomGateway, private readonly eventsCustomGateway: EventsCustomGateway, private readonly connectionHandler: ConnectionHandler, + private readonly apiConfigService: ApiConfigService, ) { } @Cron('*/1 * * * * *') @@ -132,10 +134,18 @@ export class WebsocketCronService { } private async isElasticDataAvailableForTimestampMs(timestampMs: number, networkStats: Stats) { - const nextRoundTimestampMs = timestampMs + networkStats.refreshRate; + let nextRoundTimestampMs = timestampMs + networkStats.refreshRate; + let searchField = 'timestampMs'; + + // todo: remove after timestampMs is supported on chain simulator + if (this.apiConfigService.getNetwork() === 'chain') { + searchField = 'timestamp'; + nextRoundTimestampMs = Math.ceil(nextRoundTimestampMs / 1000); + } + const rounds = await this.elasticService.getCount( 'rounds', - ElasticQuery.create().withMustCondition(QueryType.Match('timestampMs', nextRoundTimestampMs)) + ElasticQuery.create().withMustCondition(QueryType.Match(searchField, nextRoundTimestampMs)) ); return rounds === networkStats.shards + 1; // +1 for metachain diff --git a/src/crons/websocket/websocket.subscription.module.ts b/src/crons/websocket/websocket.subscription.module.ts index 860daf58a..7ee08c0f7 100644 --- a/src/crons/websocket/websocket.subscription.module.ts +++ b/src/crons/websocket/websocket.subscription.module.ts @@ -15,6 +15,7 @@ import { ConnectionHandler } from './connection.handler'; import { RoundModule } from 'src/endpoints/rounds/round.module'; import { TransactionsCustomGateway } from './transaction.custom.gateway'; import { EventsCustomGateway } from './events.custom.gateway'; +import { ApiConfigModule } from 'src/common/api-config/api.config.module'; @Module({ imports: [ @@ -25,6 +26,7 @@ import { EventsCustomGateway } from './events.custom.gateway'; PoolModule, EventsModule, RoundModule, + ApiConfigModule, ], providers: [ WebsocketCronService, diff --git a/src/test/chain-simulator/config/.env.example b/src/test/chain-simulator/config/.env.example index dcb650fc6..dc915101f 100644 --- a/src/test/chain-simulator/config/.env.example +++ b/src/test/chain-simulator/config/.env.example @@ -1,4 +1,5 @@ CHAIN_SIMULATOR_URL=http://localhost:8085 API_SERVICE_URL=http://localhost:3001 +SUBSCRIPTIONS_SERIVCE_URL=http://localhost:6002 ALICE_ADDRESS=erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th BOB_ADDRESS=erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx diff --git a/src/test/chain-simulator/config/env.config.ts b/src/test/chain-simulator/config/env.config.ts index d52a5f1ef..70f0a1c35 100644 --- a/src/test/chain-simulator/config/env.config.ts +++ b/src/test/chain-simulator/config/env.config.ts @@ -8,6 +8,7 @@ dotenv.config({ export const config = { chainSimulatorUrl: process.env.CHAIN_SIMULATOR_URL || 'http://localhost:8085', apiServiceUrl: process.env.API_SERVICE_URL || 'http://localhost:3001', + subscriptionsServiceUrl: process.env.SUBSCRIPTIONS_SERVICE_URL || 'http://localhost:6002', aliceAddress: process.env.ALICE_ADDRESS || 'erd1qyu5wthldzr8wx5c9ucg8kjagg0jfs53s8nr3zpz3hypefsdd8ssycr6th', bobAddress: process.env.BOB_ADDRESS || 'erd1spyavw0956vq68xj8y4tenjpq2wd5a9p2c6j8gsz7ztyrnpxrruqzu66jx', }; diff --git a/src/test/chain-simulator/docker/overridable-config.toml b/src/test/chain-simulator/docker/overridable-config.toml index 50141f850..f6b513ea3 100644 --- a/src/test/chain-simulator/docker/overridable-config.toml +++ b/src/test/chain-simulator/docker/overridable-config.toml @@ -5,4 +5,5 @@ OverridableConfigTomlValues = [ { File = "systemSmartContractsConfig.toml", Path = "ESDTSystemSCConfig.BaseIssuingCost", Value = "50000000000000000" }, # (0.05 EGLD) { File = "config.toml", Path = "Debug.Process.Enabled", Value = false }, { File = "config.toml", Path = "WebServerAntiflood.WebServerAntifloodEnabled", Value = false} + { File = "config.toml", Path = "network", Value = "chain"} ] diff --git a/src/test/chain-simulator/utils/chain.simulator.operations.ts b/src/test/chain-simulator/utils/chain.simulator.operations.ts index 683b32110..2c30ec4f6 100644 --- a/src/test/chain-simulator/utils/chain.simulator.operations.ts +++ b/src/test/chain-simulator/utils/chain.simulator.operations.ts @@ -623,3 +623,30 @@ export async function transferNftFromTo( console.log(`NFT transfer completed. Transaction hash: ${txHash}`); return txHash; } + +export async function transferEgld( + chainSimulatorUrl: string, + senderAddress: string, + receiverAddress: string, + amountInEgldNominated: number +): Promise { + const amountInEgldNominatedStr = amountInEgldNominated.toString(); + const egldDecimals = '0'.repeat(18); + console.log(`Transferring ${amountInEgldNominated} EGLD from ${senderAddress} to ${receiverAddress}`); + + const txHash = await sendTransaction( + new SendTransactionArgs({ + chainSimulatorUrl, + sender: senderAddress, + receiver: receiverAddress, + value: (amountInEgldNominatedStr.concat(egldDecimals)), + dataField: '', + }), + ); + + console.log(`EGLD transfer completed. Transaction hash: ${txHash}`); + await axios.post( + `${chainSimulatorUrl}/simulator/generate-blocks-until-transaction-processed/${txHash}`, + ); + return txHash; +} diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts new file mode 100644 index 000000000..5549a1900 --- /dev/null +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -0,0 +1,146 @@ +import axios from "axios"; +import { config } from "./config/env.config"; +import { fundAddress, transferEgld } from "./utils/chain.simulator.operations"; +import { io, Socket } from "socket.io-client"; + +const WS_SERVER_URL = `${config.subscriptionsServiceUrl}`; + +const subscriptionsResponses: Map = new Map(); + +const filters = { + CLIENT_1: { sender: config.aliceAddress }, + CLIENT_2: { sender: config.bobAddress }, + CLIENT_3: { sender: config.aliceAddress, receiver: config.bobAddress } +}; + +const filterKeys = { + CLIENT_1: JSON.stringify(filters.CLIENT_1), + CLIENT_2: JSON.stringify(filters.CLIENT_2), + CLIENT_3: JSON.stringify(filters.CLIENT_3) +} + +const filterMap = [ + { key: filterKeys.CLIENT_1, filter: filters.CLIENT_1, clientId: "client1" }, + { key: filterKeys.CLIENT_2, filter: filters.CLIENT_2, clientId: "client2" }, + { key: filterKeys.CLIENT_3, filter: filters.CLIENT_3, clientId: "client3" } +]; + + +describe('Websocket subscriptions e2e tests with chain simulator', () => { + jest.setTimeout(100000); + + const clients: Socket[] = []; + + const connectAndSubscribe = (filterKey: string, filter: any, clientId: string) => { + const clientLabel = clientId; + const receivedTxs: any[] = []; + + subscriptionsResponses.set(filterKey, receivedTxs); + + const client: Socket = io(WS_SERVER_URL, { + path: '/ws/subscription' + }); + clients.push(client); + + + + client.on("connect_error", (err) => { + throw new Error(`${clientLabel} connection failed: ${err.message}`); + }); + + client.on("error", (err) => { + throw new Error(`Error for ${clientLabel}: ${err.message}`); + }); + + client.on("customTransactionUpdate", (data: { transactions: any[] }) => { + console.log(`\n💸 ${clientLabel} received ${data.transactions.length} txs`); + receivedTxs.push(...data.transactions); + }); + + client.on("connect", () => { + console.log(`\n ${clientLabel} subscribing to TXs:`, JSON.stringify(filter)); + + client.emit("subscribeCustomTransactions", filter, (ack: any) => { + console.log('ACK Response:', ack); + }); + }); + + }; + + beforeAll(async () => { + console.log("--- Executing beforeAll (Setup) ---"); + + try { + // 1. Setup Chain Simulator + await fundAddress(config.chainSimulatorUrl, config.aliceAddress); + await fundAddress(config.chainSimulatorUrl, config.bobAddress); + await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/1`); + + for (const item of filterMap) { + connectAndSubscribe(item.key, item.filter, item.clientId); + } + + // await for clients to connect + console.log(`Awaiting for clients to connect...`) + await new Promise(resolve => setTimeout(resolve, 5000)); + + console.log("\n--- Starting Transactions ---"); + + await transferEgld(config.chainSimulatorUrl, config.aliceAddress, config.bobAddress, 1); + await transferEgld(config.chainSimulatorUrl, config.bobAddress, config.aliceAddress, 2); + + console.log("--- Generating Block and waiting for WS responses ---"); + await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/10`); + + await new Promise(resolve => setTimeout(resolve, 15000)); + + console.log("--- Setup Complete ---"); + + } catch (e: any) { + console.error("An error occured in beforeAll:", e.message); + + throw e; + } + }); + + afterAll(() => { + clients.forEach(client => client.connected && client.disconnect()); + console.log("\n--- All clients disconnected ---"); + }); + + // --- TESTE SEPARATE (itShould...) --- + + it('should receive only the transaction sent by Alice (Tx 1: Alice -> Bob) when filtering by CLIENT_1', () => { + const filterKey = filterKeys.CLIENT_1; + const aliceTxs = subscriptionsResponses.get(filterKey); + console.log(`\nRunning test for ${filterMap.find(f => f.key === filterKey)?.clientId}`); + + expect(aliceTxs?.length).toBe(1); + const tx = aliceTxs?.[0]; + expect(tx.sender).toEqual(config.aliceAddress); + expect(tx.sender).not.toEqual(config.bobAddress); + }); + + it('should receive only the transaction sent by Bob (Tx 2: Bob -> Alice) when filtering by CLIENT_2', () => { + const filterKey = filterKeys.CLIENT_2; + const bobTxs = subscriptionsResponses.get(filterKey); + console.log(`\nRunning test for ${filterMap.find(f => f.key === filterKey)?.clientId}`); + + expect(bobTxs?.length).toBe(1); + const tx = bobTxs?.[0]; + expect(tx.sender).toEqual(config.bobAddress); + expect(tx.receiver).toEqual(config.aliceAddress); + expect(tx.sender).not.toEqual(config.aliceAddress); + }); + + it('should receive only the transaction sent by Alice to Bob (Tx 1) when filtering by CLIENT_3', () => { + const filterKey = filterKeys.CLIENT_3; + const aliceToBobTxs = subscriptionsResponses.get(filterKey); + console.log(`\nRunning test for ${filterMap.find(f => f.key === filterKey)?.clientId}`); + + expect(aliceToBobTxs?.length).toBe(1); + const tx = aliceToBobTxs?.[0]; + expect(tx.sender).toEqual(config.aliceAddress); + expect(tx.receiver).toEqual(config.bobAddress); + }); +}); \ No newline at end of file From f1a992a76565a6a71673b2b92f5408fe751cb712 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 5 Dec 2025 16:37:50 +0200 Subject: [PATCH 060/206] lint --- src/crons/websocket/events.custom.gateway.ts | 4 ++-- .../websocket.subscriptions.cs-e2e.ts | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/crons/websocket/events.custom.gateway.ts b/src/crons/websocket/events.custom.gateway.ts index 47cefe63f..9337eed6d 100644 --- a/src/crons/websocket/events.custom.gateway.ts +++ b/src/crons/websocket/events.custom.gateway.ts @@ -91,11 +91,11 @@ export class EventsCustomGateway { for (const [roomName] of eventsFilteredForBroadcast) { this.server.to(roomName).emit("customEventUpdate", { events: eventsFilteredForBroadcast.get(roomName), - timestampMs + timestampMs, }); } } catch (error) { this.logger.error(error); } } -} \ No newline at end of file +} diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index 5549a1900..98fca6720 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -10,19 +10,19 @@ const subscriptionsResponses: Map = new Map(); const filters = { CLIENT_1: { sender: config.aliceAddress }, CLIENT_2: { sender: config.bobAddress }, - CLIENT_3: { sender: config.aliceAddress, receiver: config.bobAddress } + CLIENT_3: { sender: config.aliceAddress, receiver: config.bobAddress }, }; const filterKeys = { CLIENT_1: JSON.stringify(filters.CLIENT_1), CLIENT_2: JSON.stringify(filters.CLIENT_2), - CLIENT_3: JSON.stringify(filters.CLIENT_3) -} + CLIENT_3: JSON.stringify(filters.CLIENT_3), +}; const filterMap = [ { key: filterKeys.CLIENT_1, filter: filters.CLIENT_1, clientId: "client1" }, { key: filterKeys.CLIENT_2, filter: filters.CLIENT_2, clientId: "client2" }, - { key: filterKeys.CLIENT_3, filter: filters.CLIENT_3, clientId: "client3" } + { key: filterKeys.CLIENT_3, filter: filters.CLIENT_3, clientId: "client3" }, ]; @@ -38,7 +38,7 @@ describe('Websocket subscriptions e2e tests with chain simulator', () => { subscriptionsResponses.set(filterKey, receivedTxs); const client: Socket = io(WS_SERVER_URL, { - path: '/ws/subscription' + path: '/ws/subscription', }); clients.push(client); @@ -71,7 +71,6 @@ describe('Websocket subscriptions e2e tests with chain simulator', () => { console.log("--- Executing beforeAll (Setup) ---"); try { - // 1. Setup Chain Simulator await fundAddress(config.chainSimulatorUrl, config.aliceAddress); await fundAddress(config.chainSimulatorUrl, config.bobAddress); await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/1`); @@ -81,7 +80,7 @@ describe('Websocket subscriptions e2e tests with chain simulator', () => { } // await for clients to connect - console.log(`Awaiting for clients to connect...`) + console.log(`Awaiting for clients to connect...`); await new Promise(resolve => setTimeout(resolve, 5000)); console.log("\n--- Starting Transactions ---"); @@ -143,4 +142,4 @@ describe('Websocket subscriptions e2e tests with chain simulator', () => { expect(tx.sender).toEqual(config.aliceAddress); expect(tx.receiver).toEqual(config.bobAddress); }); -}); \ No newline at end of file +}); From 3d37b85372bec449e59cf64bfdcf9f0340524053 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 5 Dec 2025 16:50:54 +0200 Subject: [PATCH 061/206] fix --- src/test/chain-simulator/docker/overridable-config.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/chain-simulator/docker/overridable-config.toml b/src/test/chain-simulator/docker/overridable-config.toml index f6b513ea3..50141f850 100644 --- a/src/test/chain-simulator/docker/overridable-config.toml +++ b/src/test/chain-simulator/docker/overridable-config.toml @@ -5,5 +5,4 @@ OverridableConfigTomlValues = [ { File = "systemSmartContractsConfig.toml", Path = "ESDTSystemSCConfig.BaseIssuingCost", Value = "50000000000000000" }, # (0.05 EGLD) { File = "config.toml", Path = "Debug.Process.Enabled", Value = false }, { File = "config.toml", Path = "WebServerAntiflood.WebServerAntifloodEnabled", Value = false} - { File = "config.toml", Path = "network", Value = "chain"} ] From aef1ca8d2c89d4a6a8146d9735321e9276459a3d Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 5 Dec 2025 16:52:21 +0200 Subject: [PATCH 062/206] missing comma --- src/crons/websocket/websocket.cron.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 47cd392a7..643a450b5 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -117,7 +117,7 @@ export class WebsocketCronService { // call gateways to process logic for custom subscriptions await Promise.all([ this.transactionsCustomGateway.pushTransactionsForTimestampMs(roundToProcessTimestampMs), - this.eventsCustomGateway.pushEventsForTimestampMs(roundToProcessTimestampMs) + this.eventsCustomGateway.pushEventsForTimestampMs(roundToProcessTimestampMs), ]); roundToProcessTimestampMs += stats.refreshRate; } From aae0fbf56a61fd00ba6df46b3029fea9928ef997 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 5 Dec 2025 16:58:28 +0200 Subject: [PATCH 063/206] fix --- config/config.e2e.mainnet.yaml | 4 ++-- src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index c0af3d572..3655c8de1 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -5,7 +5,7 @@ api: publicPort: 3001 private: true privatePort: 4001 - websocket: true + websocket: false cron: cacheWarmer: true fastWarm: false @@ -21,7 +21,7 @@ flags: collectionPropertiesFromGateway: false features: websocketSubscription: - enabled: false + enabled: true port: 6002 eventsNotifier: enabled: false diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index 98fca6720..5d19650a1 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -27,8 +27,6 @@ const filterMap = [ describe('Websocket subscriptions e2e tests with chain simulator', () => { - jest.setTimeout(100000); - const clients: Socket[] = []; const connectAndSubscribe = (filterKey: string, filter: any, clientId: string) => { From 36a79c501340b4b60920522f3a8903803a65c706 Mon Sep 17 00:00:00 2001 From: cfaur09 Date: Mon, 8 Dec 2025 10:26:26 +0200 Subject: [PATCH 064/206] Refactor account, NFT, and transaction services to improve concurrency and caching --- src/endpoints/accounts/account.service.ts | 54 ++++--- src/endpoints/nfts/nft.service.ts | 76 ++++++++-- .../transactions/transaction.service.ts | 139 +++++++++++++----- src/utils/cache.info.ts | 24 +++ 4 files changed, 225 insertions(+), 68 deletions(-) diff --git a/src/endpoints/accounts/account.service.ts b/src/endpoints/accounts/account.service.ts index 104a1b5be..5724cee62 100644 --- a/src/endpoints/accounts/account.service.ts +++ b/src/endpoints/accounts/account.service.ts @@ -22,6 +22,7 @@ import { GatewayService } from 'src/common/gateway/gateway.service'; import { IndexerService } from "src/common/indexer/indexer.service"; import { AccountAssets } from 'src/common/assets/entities/account.assets'; import { CacheInfo } from 'src/utils/cache.info'; +import { ConcurrencyUtils } from 'src/utils/concurrency.utils'; import { UsernameService } from '../usernames/username.service'; import { ContractUpgrades } from './entities/contract.upgrades'; import { AccountVerification } from './entities/account.verification'; @@ -356,36 +357,41 @@ export class AccountService { } } - for (const account of accounts) { - account.shard = AddressUtils.computeShard(AddressUtils.bech32Decode(account.address), shardCount); - account.assets = assets[account.address]; + await ConcurrencyUtils.executeWithConcurrencyLimit( + accounts, + async (account) => { + account.shard = AddressUtils.computeShard(AddressUtils.bech32Decode(account.address), shardCount); + account.assets = assets[account.address]; - if (options.withDeployInfo && AddressUtils.isSmartContractAddress(account.address)) { - const [deployedAt, deployTxHash] = await Promise.all([ - this.getAccountDeployedAt(account.address), - this.getAccountDeployedTxHash(account.address), - ]); + if (options.withDeployInfo && AddressUtils.isSmartContractAddress(account.address)) { + const [deployedAt, deployTxHash] = await Promise.all([ + this.getAccountDeployedAt(account.address), + this.getAccountDeployedTxHash(account.address), + ]); - account.deployedAt = deployedAt; - account.deployTxHash = deployTxHash; - } + account.deployedAt = deployedAt; + account.deployTxHash = deployTxHash; + } - if (options.withTxCount) { - account.txCount = await this.getAccountTxCount(account.address); - } + if (options.withTxCount) { + account.txCount = await this.getAccountTxCount(account.address); + } - if (options.withScrCount) { - account.scrCount = await this.getAccountScResults(account.address); - } + if (options.withScrCount) { + account.scrCount = await this.getAccountScResults(account.address); + } - if (options.withOwnerAssets && account.ownerAddress) { - account.ownerAssets = assets[account.ownerAddress]; - } + if (options.withOwnerAssets && account.ownerAddress) { + account.ownerAssets = assets[account.ownerAddress]; + } - if (verifiedAccounts && verifiedAccounts.includes(account.address)) { - account.isVerified = true; - } - } + if (verifiedAccounts && verifiedAccounts.includes(account.address)) { + account.isVerified = true; + } + }, + 6, + 'AccountService.getAccountsRaw', + ); return accounts; } diff --git a/src/endpoints/nfts/nft.service.ts b/src/endpoints/nfts/nft.service.ts index b4a5192db..7e64f5166 100644 --- a/src/endpoints/nfts/nft.service.ts +++ b/src/endpoints/nfts/nft.service.ts @@ -65,20 +65,33 @@ export class NftService { } async getNfts(queryPagination: QueryPagination, filter: NftFilter, queryOptions?: NftQueryOptions): Promise { - const { from, size } = queryPagination; + const executeGetNfts = async (): Promise => { + const { from, size } = queryPagination; - const nfts = await this.getNftsInternal({ from, size }, filter); + const nfts = await this.getNftsInternal({ from, size }, filter); - await Promise.all([ - this.conditionallyApplyAssetsAndTicker(nfts, undefined, queryOptions), - this.conditionallyApplyOwners(nfts, queryOptions), - this.conditionallyApplySupply(nfts, queryOptions), - this.batchProcessNfts(nfts), - ]); + await Promise.all([ + this.conditionallyApplyAssetsAndTicker(nfts, undefined, queryOptions), + this.conditionallyApplyOwners(nfts, queryOptions), + this.conditionallyApplySupply(nfts, queryOptions), + this.batchProcessNfts(nfts), + ]); - await this.batchApplyUnlockFields(nfts); + await this.batchApplyUnlockFields(nfts); - return nfts; + return nfts; + }; + + if (this.isCacheableNftList(filter, queryOptions)) { + const cacheInfo = CacheInfo.Nfts(queryPagination); + return await this.cachingService.getOrSet( + cacheInfo.key, + executeGetNfts, + cacheInfo.ttl, + ); + } + + return await executeGetNfts(); } private async batchProcessNfts(nfts: Nft[], fields?: string[]) { @@ -501,6 +514,14 @@ export class NftService { } async getNftCount(filter: NftFilter): Promise { + if (this.isCacheableNftCount(filter)) { + return await this.cachingService.getOrSet( + CacheInfo.NftsCount.key, + async () => await this.indexerService.getNftCount(filter), + CacheInfo.NftsCount.ttl, + ); + } + return await this.indexerService.getNftCount(filter); } @@ -730,4 +751,39 @@ export class NftService { this.logger.error(error); } } + + private isDefaultNftFilter(filter: NftFilter): boolean { + return !filter.search && + !(filter.identifiers && filter.identifiers.length > 0) && + !(filter.type && filter.type.length > 0) && + !(filter.subType && filter.subType.length > 0) && + !filter.collection && + !(filter.collections && filter.collections.length > 0) && + !(filter.tags && filter.tags.length > 0) && + !filter.name && + !filter.creator && + filter.hasUris === undefined && + filter.includeFlagged === undefined && + filter.before === undefined && + filter.after === undefined && + filter.nonceBefore === undefined && + filter.nonceAfter === undefined && + filter.isWhitelistedStorage === undefined && + filter.isNsfw === undefined && + filter.isScam === undefined && + filter.scamType === undefined && + !filter.traits && + filter.excludeMetaESDT === undefined && + filter.sort === undefined && + filter.order === undefined; + } + + private isCacheableNftList(filter: NftFilter, queryOptions?: NftQueryOptions): boolean { + const hasHeavyOptions = queryOptions?.withOwner || queryOptions?.withSupply; + return !hasHeavyOptions && this.isDefaultNftFilter(filter); + } + + private isCacheableNftCount(filter: NftFilter): boolean { + return this.isDefaultNftFilter(filter); + } } diff --git a/src/endpoints/transactions/transaction.service.ts b/src/endpoints/transactions/transaction.service.ts index e2aa7523c..be7220d02 100644 --- a/src/endpoints/transactions/transaction.service.ts +++ b/src/endpoints/transactions/transaction.service.ts @@ -95,6 +95,15 @@ export class TransactionService { return this.getTransactionCountForAddress(filter.sender ?? ''); } + if (this.isCacheableTransactionCount(filter, address)) { + return await this.cachingService.getOrSet( + CacheInfo.TransactionsCount.key, + async () => await this.indexerService.getTransactionCount(filter, address), + CacheInfo.TransactionsCount.ttl, + Constants.oneSecond(), + ); + } + return await this.indexerService.getTransactionCount(filter, address); } @@ -192,53 +201,67 @@ export class TransactionService { } async getTransactions(filter: TransactionFilter, pagination: QueryPagination, queryOptions?: TransactionQueryOptions, address?: string, fields?: string[]): Promise { - const elasticTransactions = await this.indexerService.getTransactions(filter, pagination, address); + const computeTransactions = async (): Promise => { + const elasticTransactions = await this.indexerService.getTransactions(filter, pagination, address); - let transactions: TransactionDetailed[] = []; - transactions = elasticTransactions.map(x => ApiUtils.mergeObjects(new TransactionDetailed(), x)); + let transactions: TransactionDetailed[] = []; + transactions = elasticTransactions.map(x => ApiUtils.mergeObjects(new TransactionDetailed(), x)); - const hasSenderFilter = filter.sender || (filter.senders && filter.senders.length > 0); - const hasReceiverFilter = filter.receivers && filter.receivers.length > 0; + const hasSenderFilter = filter.sender || (filter.senders && filter.senders.length > 0); + const hasReceiverFilter = filter.receivers && filter.receivers.length > 0; - if (address && !hasSenderFilter && !hasReceiverFilter) { - transactions = this.reorderAccountSentTransactionsByNonce(transactions, address); - } + if (address && !hasSenderFilter && !hasReceiverFilter) { + transactions = this.reorderAccountSentTransactionsByNonce(transactions, address); + } - if (filter.hashes) { - const txHashes: string[] = filter.hashes; - const elasticHashes = elasticTransactions.map(({ txHash }: any) => txHash); - const missingHashes: string[] = txHashes.except(elasticHashes); + if (filter.hashes) { + const txHashes: string[] = filter.hashes; + const elasticHashes = elasticTransactions.map(({ txHash }: any) => txHash); + const missingHashes: string[] = txHashes.except(elasticHashes); - const gatewayTransactions = await Promise.all(missingHashes.map((txHash) => this.transactionGetService.tryGetTransactionFromGatewayForList(txHash))); - for (const gatewayTransaction of gatewayTransactions) { - if (gatewayTransaction) { - transactions.push(ApiUtils.mergeObjects(new TransactionDetailed(), gatewayTransaction)); + const gatewayTransactions = await Promise.all(missingHashes.map((txHash) => this.transactionGetService.tryGetTransactionFromGatewayForList(txHash))); + for (const gatewayTransaction of gatewayTransactions) { + if (gatewayTransaction) { + transactions.push(ApiUtils.mergeObjects(new TransactionDetailed(), gatewayTransaction)); + } } } - } - if ((queryOptions && queryOptions.withBlockInfo) || (fields && fields.includesSome(['senderBlockHash', 'receiverBlockHash', 'senderBlockNonce', 'receiverBlockNonce']))) { - await this.applyBlockInfo(transactions); - } + if ((queryOptions && queryOptions.withBlockInfo) || (fields && fields.includesSome(['senderBlockHash', 'receiverBlockHash', 'senderBlockNonce', 'receiverBlockNonce']))) { + await this.applyBlockInfo(transactions); + } - if (queryOptions && (queryOptions.withScResults || queryOptions.withOperations || queryOptions.withLogs)) { - queryOptions.withScResultLogs = queryOptions.withLogs; - transactions = await this.getExtraDetailsForTransactions(elasticTransactions, transactions, queryOptions); - } + if (queryOptions && (queryOptions.withScResults || queryOptions.withOperations || queryOptions.withLogs)) { + queryOptions.withScResultLogs = queryOptions.withLogs; + transactions = await this.getExtraDetailsForTransactions(elasticTransactions, transactions, queryOptions); + } - for (const transaction of transactions) { - transaction.type = undefined; - } + for (const transaction of transactions) { + transaction.type = undefined; + } - await this.processTransactions(transactions, { - withScamInfo: queryOptions?.withScamInfo ?? false, - withUsername: queryOptions?.withUsername ?? false, - withActionTransferValue: queryOptions?.withActionTransferValue ?? false, - }); + await this.processTransactions(transactions, { + withScamInfo: queryOptions?.withScamInfo ?? false, + withUsername: queryOptions?.withUsername ?? false, + withActionTransferValue: queryOptions?.withActionTransferValue ?? false, + }); + + this.processRelayedInfo(transactions); + + return transactions; + }; - this.processRelayedInfo(transactions); + if (this.isCacheableTransactionList(filter, queryOptions, fields, address)) { + const cacheInfo = CacheInfo.Transactions(pagination); + return await this.cachingService.getOrSet( + cacheInfo.key, + computeTransactions, + cacheInfo.ttl, + Constants.oneSecond(), + ); + } - return transactions; + return await computeTransactions(); } private getAssetsFromUsername(username: string | null | undefined): AccountAssets | undefined { @@ -820,4 +843,52 @@ export class TransactionService { return buckets; } + + private isEmptyTransactionFilter(filter: TransactionFilter): boolean { + return !filter.address && + !filter.sender && + !(filter.senders && filter.senders.length > 0) && + !(filter.receivers && filter.receivers.length > 0) && + !filter.token && + !(filter.tokens && filter.tokens.length > 0) && + !(filter.functions && filter.functions.length > 0) && + filter.senderShard === undefined && + filter.receiverShard === undefined && + !filter.miniBlockHash && + !(filter.hashes && filter.hashes.length > 0) && + filter.status === undefined && + filter.before === undefined && + filter.after === undefined && + filter.condition === undefined && + filter.order === undefined && + filter.senderOrReceiver === undefined && + filter.isScCall === undefined && + filter.isRelayed === undefined && + filter.relayer === undefined && + filter.round === undefined && + filter.withRefunds === undefined && + filter.withRelayedScresults === undefined && + filter.withTxsRelayedByAddress === undefined; + } + + private isCacheableTransactionList(filter: TransactionFilter, queryOptions?: TransactionQueryOptions, fields?: string[], address?: string): boolean { + const hasFieldSelection = Array.isArray(fields) && fields.length > 0; + if (address || hasFieldSelection || !this.isEmptyTransactionFilter(filter) || !queryOptions) { + return false; + } + + const hasNonDefaultOptions = queryOptions.withScResults || + queryOptions.withBlockInfo || + queryOptions.withActionTransferValue || + queryOptions.withUsername || + queryOptions.withTxsOrder || + queryOptions.withOperations === false || + queryOptions.withLogs === false; + + return !hasNonDefaultOptions; + } + + private isCacheableTransactionCount(filter: TransactionFilter, address?: string): boolean { + return !address && this.isEmptyTransactionFilter(filter); + } } diff --git a/src/utils/cache.info.ts b/src/utils/cache.info.ts index 00059ae49..d2bd54b6d 100644 --- a/src/utils/cache.info.ts +++ b/src/utils/cache.info.ts @@ -105,6 +105,18 @@ export class CacheInfo { }; } + static Transactions(queryPagination: QueryPagination): CacheInfo { + return { + key: `transactions:${queryPagination.from}:${queryPagination.size}`, + ttl: Constants.oneSecond() * 6, + }; + } + + static TransactionsCount: CacheInfo = { + key: 'transactions:count', + ttl: Constants.oneSecond() * 6, + }; + static IdentityProfilesKeybases: CacheInfo = { key: 'identityProfilesKeybases', ttl: Constants.oneHour(), @@ -174,6 +186,18 @@ export class CacheInfo { ttl: Constants.oneDay(), }; + static Nfts(queryPagination: QueryPagination): CacheInfo { + return { + key: `nfts:${queryPagination.from}:${queryPagination.size}`, + ttl: Constants.oneSecond() * 6, + }; + } + + static NftsCount: CacheInfo = { + key: 'nfts:count', + ttl: Constants.oneSecond() * 6, + }; + static CollectionRanks: CacheInfo = { key: 'collectionRanks', ttl: Constants.oneDay(), From c8c7235dbf788abe729379c0330dd32ad5de093f Mon Sep 17 00:00:00 2001 From: cfaur09 Date: Mon, 8 Dec 2025 11:23:47 +0200 Subject: [PATCH 065/206] improve NFT bulk fetch + applyOwner --- src/endpoints/nfts/nft.service.ts | 57 +++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 18 deletions(-) diff --git a/src/endpoints/nfts/nft.service.ts b/src/endpoints/nfts/nft.service.ts index 7e64f5166..30ee180eb 100644 --- a/src/endpoints/nfts/nft.service.ts +++ b/src/endpoints/nfts/nft.service.ts @@ -31,6 +31,7 @@ import { SortCollectionNfts } from "../collections/entities/sort.collection.nfts import { TokenAssets } from "src/common/assets/entities/token.assets"; import { ScamInfo } from "src/common/entities/scam-info.dto"; import { NftSubType } from "./entities/nft.sub.type"; +import { ConcurrencyUtils } from "src/utils/concurrency.utils"; @Injectable() export class NftService { @@ -127,21 +128,15 @@ export class NftService { return; } - const nftsIdentifiers = nfts.filter(x => x.type === NftType.NonFungibleESDT).map(x => x.identifier); + const nftsIdentifiers = nfts + .filter(x => x.type === NftType.NonFungibleESDT) + .map(x => x.identifier); if (nftsIdentifiers.length === 0) { return; } - const accountsEsdts = await this.getAccountEsdtByIdentifiers(nftsIdentifiers, { - from: 0, - size: nftsIdentifiers.length, - }); - - const ownerMap = accountsEsdts.reduce((acc: Record, accountEsdt: any) => { - acc[accountEsdt.identifier] = accountEsdt.address; - return acc; - }, {}); + const ownerMap = await this.getOwnersBulk(nftsIdentifiers); for (const nft of nfts) { if (nft.type === NftType.NonFungibleESDT && ownerMap[nft.identifier]) { @@ -195,6 +190,29 @@ export class NftService { ); } + private async getOwnersBulk(identifiers: string[], chunkSize: number = 512, concurrencyLimit: number = 4): Promise> { + if (identifiers.length === 0) { + return {}; + } + + const chunks = BatchUtils.splitArrayIntoChunks(identifiers.distinct(), chunkSize); + const results = await ConcurrencyUtils.executeWithConcurrencyLimit( + chunks, + async (chunk) => await this.getAccountEsdtByIdentifiers(chunk, { from: 0, size: chunk.length }), + concurrencyLimit, + 'NftService.getOwnersBulk' + ); + + const ownerMap: Record = {}; + for (const chunkResult of results) { + for (const accountEsdt of chunkResult ?? []) { + ownerMap[accountEsdt.identifier] = accountEsdt.address; + } + } + + return ownerMap; + } + private async batchApplyMedia(nfts: Nft[], fields?: string[]) { if (fields && !fields.includes('media')) { return; @@ -570,15 +588,18 @@ export class NftService { } private async getNftsInternalByIdentifiers(identifiers: string[]): Promise { - const chunks = BatchUtils.splitArrayIntoChunks(identifiers, 1024); - const result: Nft[] = []; - for (const identifiers of chunks) { - const internalNfts = await this.getNftsInternal(new QueryPagination({ from: 0, size: identifiers.length }), new NftFilter({ identifiers })); - - result.push(...internalNfts); - } + const chunks = BatchUtils.splitArrayIntoChunks(identifiers, 512); + const results = await ConcurrencyUtils.executeWithConcurrencyLimit( + chunks, + async (chunk) => await this.getNftsInternal( + new QueryPagination({ from: 0, size: chunk.length }), + new NftFilter({ identifiers: chunk }) + ), + 4, + 'NftService.getNftsInternalByIdentifiers' + ); - return result; + return results.flat(); } private async applyPriceUsd(nft: NftAccount, fields?: string[]) { From afa40b07e0aca798ff18a0db7cc6c1092e412377 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 8 Dec 2025 13:32:21 +0200 Subject: [PATCH 066/206] add no empty payload validator for custom subscriptions --- .../entities/events.custom.subscribe.ts | 2 + .../dtos/transaction.custom.subscribe.ts | 2 + src/utils/no.empty.payload.validator.ts | 39 +++++++++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 src/utils/no.empty.payload.validator.ts diff --git a/src/endpoints/events/entities/events.custom.subscribe.ts b/src/endpoints/events/entities/events.custom.subscribe.ts index 8a9c80ba4..21b448f2e 100644 --- a/src/endpoints/events/entities/events.custom.subscribe.ts +++ b/src/endpoints/events/entities/events.custom.subscribe.ts @@ -1,5 +1,7 @@ import { IsOptional, IsString } from 'class-validator'; +import { NoEmptyPayload } from 'src/utils/no.empty.payload.validator'; +@NoEmptyPayload({ message: `You must add at least one filter from ${EventsCustomSubscribePayload.getClassFields()}` }) export class EventsCustomSubscribePayload { @IsOptional() @IsString() diff --git a/src/endpoints/transactions/entities/dtos/transaction.custom.subscribe.ts b/src/endpoints/transactions/entities/dtos/transaction.custom.subscribe.ts index 81efb7c42..6fd2baef5 100644 --- a/src/endpoints/transactions/entities/dtos/transaction.custom.subscribe.ts +++ b/src/endpoints/transactions/entities/dtos/transaction.custom.subscribe.ts @@ -1,5 +1,7 @@ import { IsOptional, IsString } from 'class-validator'; +import { NoEmptyPayload } from 'src/utils/no.empty.payload.validator'; +@NoEmptyPayload({ message: `You must add at least one filter from ${TransactionCustomSubscribePayload.getClassFields()}` }) export class TransactionCustomSubscribePayload { @IsOptional() @IsString() diff --git a/src/utils/no.empty.payload.validator.ts b/src/utils/no.empty.payload.validator.ts new file mode 100644 index 000000000..144000733 --- /dev/null +++ b/src/utils/no.empty.payload.validator.ts @@ -0,0 +1,39 @@ +import { + registerDecorator, + ValidationOptions, + ValidatorConstraint, + ValidatorConstraintInterface, + ValidationArguments, +} from 'class-validator'; + +@ValidatorConstraint({ async: false }) +export class NoEmptyPayloadConstraint implements ValidatorConstraintInterface { + validate(_value: any, args: ValidationArguments) { + const object = args.object as any; + + if (!object) { + return false; + } + + return Object.keys(object).some((key) => { + const propertyValue = object[key]; + return propertyValue !== undefined && propertyValue !== null; + }); + } + + defaultMessage(_args: ValidationArguments) { + return 'Payload cannot be empty. At least one property must be provided.'; + } +} + +export function NoEmptyPayload(validationOptions?: ValidationOptions) { + return function (target: Function) { + registerDecorator({ + target: target, + propertyName: '', + options: validationOptions, + constraints: [], + validator: NoEmptyPayloadConstraint, + }); + }; +} \ No newline at end of file From 6b8194038bae78c891e8650f4d2d83ac83d58348 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 8 Dec 2025 13:48:20 +0200 Subject: [PATCH 067/206] add global subscription limiter --- src/utils/ws.subscription.limiter.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/utils/ws.subscription.limiter.ts b/src/utils/ws.subscription.limiter.ts index e43961602..b6f14351b 100644 --- a/src/utils/ws.subscription.limiter.ts +++ b/src/utils/ws.subscription.limiter.ts @@ -5,14 +5,19 @@ import { WsException } from '@nestjs/websockets'; @Injectable() export class WsSubscriptionLimiterGuard implements CanActivate { - static MAX_ROOMS = 5 + 1; // TODO: adjust limit (5 subscriptions + 1 default room client id) + static MAX_ROOMS_PER_CLIENT = 5 + 1; // TODO: adjust limit (5 subscriptions + 1 default room client id) + static MAX_ROOMS_GLOBAL = 10_000; // TODO: adjust canActivate(context: ExecutionContext): boolean { const client: Socket = context.switchToWs().getClient(); + const totalRoomsGlobal = client.nsp.server.sockets.adapter.rooms.size; + const totalClientRooms = client.rooms.size; + if (totalRoomsGlobal >= WsSubscriptionLimiterGuard.MAX_ROOMS_GLOBAL) { + throw new WsException(`Maximum number of ${WsSubscriptionLimiterGuard.MAX_ROOMS_GLOBAL} global subscriptions accepted by server reached!`); + } - //TODO: check for ip, not for each socket - if (client.rooms.size >= WsSubscriptionLimiterGuard.MAX_ROOMS) { - throw new WsException(`Maximum number of ${WsSubscriptionLimiterGuard.MAX_ROOMS} subscriptions reached!`); + if (totalClientRooms >= WsSubscriptionLimiterGuard.MAX_ROOMS_PER_CLIENT) { + throw new WsException(`Maximum number of ${WsSubscriptionLimiterGuard.MAX_ROOMS_PER_CLIENT} subscriptions per client reached!`); } return true; From 0b0e99e100dbdf60b08ac487ffb909a3de39cda1 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 8 Dec 2025 13:48:33 +0200 Subject: [PATCH 068/206] remove log --- src/crons/websocket/events.custom.gateway.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/crons/websocket/events.custom.gateway.ts b/src/crons/websocket/events.custom.gateway.ts index 9337eed6d..2506ffaaa 100644 --- a/src/crons/websocket/events.custom.gateway.ts +++ b/src/crons/websocket/events.custom.gateway.ts @@ -19,7 +19,6 @@ import { Events } from 'src/endpoints/events/entities/events'; export class EventsCustomGateway { private readonly logger = new OriginLogger(EventsCustomGateway.name); - // Prefix distinct pentru camerele de evenimente pentru a nu se suprapune cu txs static keyPrefix = 'custom-events-'; @WebSocketServer() From 18d31515eb0279ac8fb0a4ab2bd1e534e8b0b604 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 8 Dec 2025 16:21:51 +0200 Subject: [PATCH 069/206] add e2e tests for events --- src/test/chain-simulator/utils/test.utils.ts | 21 ++- .../websocket.subscriptions.cs-e2e.ts | 156 +++++++++++------- 2 files changed, 113 insertions(+), 64 deletions(-) diff --git a/src/test/chain-simulator/utils/test.utils.ts b/src/test/chain-simulator/utils/test.utils.ts index 41e20f9fa..02cac1a91 100644 --- a/src/test/chain-simulator/utils/test.utils.ts +++ b/src/test/chain-simulator/utils/test.utils.ts @@ -1,6 +1,6 @@ import axios from 'axios'; import { config } from '../config/env.config'; -import { DeployScArgs } from './chain.simulator.operations'; +import { DeployScArgs, sendTransaction, SendTransactionArgs } from './chain.simulator.operations'; import { fundAddress } from './chain.simulator.operations'; import { deploySc } from './chain.simulator.operations'; import fs from 'fs'; @@ -96,4 +96,23 @@ export class ChainSimulatorUtils { throw error; } } + + public static async pingContract(sender: string, scAddress: string) { + await sendTransaction(new SendTransactionArgs({ + chainSimulatorUrl: config.chainSimulatorUrl, + sender, + receiver: scAddress, + value: '1000000000000000000', + dataField: 'ping', + })); + } + + public static async pongContract(sender: string, scAddress: string) { + await sendTransaction(new SendTransactionArgs({ + chainSimulatorUrl: config.chainSimulatorUrl, + sender, + receiver: scAddress, + dataField: 'pong', + })); + } } diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index 5d19650a1..896506136 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -2,142 +2,172 @@ import axios from "axios"; import { config } from "./config/env.config"; import { fundAddress, transferEgld } from "./utils/chain.simulator.operations"; import { io, Socket } from "socket.io-client"; +import { ChainSimulatorUtils } from "./utils/test.utils"; const WS_SERVER_URL = `${config.subscriptionsServiceUrl}`; -const subscriptionsResponses: Map = new Map(); +const txResponses: Map = new Map(); +const eventResponses: Map = new Map(); -const filters = { +const txFilters = { CLIENT_1: { sender: config.aliceAddress }, CLIENT_2: { sender: config.bobAddress }, CLIENT_3: { sender: config.aliceAddress, receiver: config.bobAddress }, }; +const eventFilters = { + CLIENT_1: { identifier: 'pong' }, + CLIENT_2: { address: '' }, // added dinamically after deploy sc + CLIENT_3: { identifier: 'completedTxEvent', address: '' }, // added dinamically after deploy sc +}; + const filterKeys = { - CLIENT_1: JSON.stringify(filters.CLIENT_1), - CLIENT_2: JSON.stringify(filters.CLIENT_2), - CLIENT_3: JSON.stringify(filters.CLIENT_3), + CLIENT_1: "KEY_CLIENT_1", + CLIENT_2: "KEY_CLIENT_2", + CLIENT_3: "KEY_CLIENT_3", }; const filterMap = [ - { key: filterKeys.CLIENT_1, filter: filters.CLIENT_1, clientId: "client1" }, - { key: filterKeys.CLIENT_2, filter: filters.CLIENT_2, clientId: "client2" }, - { key: filterKeys.CLIENT_3, filter: filters.CLIENT_3, clientId: "client3" }, + { key: filterKeys.CLIENT_1, txFilter: txFilters.CLIENT_1, eventFilter: eventFilters.CLIENT_1, clientId: "client1" }, + { key: filterKeys.CLIENT_2, txFilter: txFilters.CLIENT_2, eventFilter: eventFilters.CLIENT_2, clientId: "client2" }, + { key: filterKeys.CLIENT_3, txFilter: txFilters.CLIENT_3, eventFilter: eventFilters.CLIENT_3, clientId: "client3" }, ]; +let pingPongScAddress = ''; -describe('Websocket subscriptions e2e tests with chain simulator', () => { +describe('Websocket subscriptions e2e tests (Txs and Events)', () => { const clients: Socket[] = []; - const connectAndSubscribe = (filterKey: string, filter: any, clientId: string) => { - const clientLabel = clientId; + const connectAndSubscribe = (filterKey: string, txFilter: any, eventFilter: any, clientId: string) => { const receivedTxs: any[] = []; + const receivedEvents: any[] = []; - subscriptionsResponses.set(filterKey, receivedTxs); + txResponses.set(filterKey, receivedTxs); + eventResponses.set(filterKey, receivedEvents); const client: Socket = io(WS_SERVER_URL, { path: '/ws/subscription', }); clients.push(client); - - client.on("connect_error", (err) => { - throw new Error(`${clientLabel} connection failed: ${err.message}`); - }); - - client.on("error", (err) => { - throw new Error(`Error for ${clientLabel}: ${err.message}`); + throw new Error(`${clientId} connection failed: ${err.message}`); }); client.on("customTransactionUpdate", (data: { transactions: any[] }) => { - console.log(`\n💸 ${clientLabel} received ${data.transactions.length} txs`); + console.log(`\n💸 ${clientId} received ${data.transactions.length} txs`); receivedTxs.push(...data.transactions); }); + client.on("customEventUpdate", (data: { events: any[] }) => { + console.log(`\n🔔 ${clientId} received ${data.events.length} events`); + receivedEvents.push(...data.events); + }); + client.on("connect", () => { - console.log(`\n ${clientLabel} subscribing to TXs:`, JSON.stringify(filter)); + console.log(`\n ${clientId} connected.`); - client.emit("subscribeCustomTransactions", filter, (ack: any) => { - console.log('ACK Response:', ack); + client.emit("subscribeCustomTransactions", txFilter, (ack: any) => { + console.log(` ACK TXs ${clientId}:`, ack); }); - }); + client.emit("subscribeCustomEvents", eventFilter, (ack: any) => { + console.log(` ACK Events ${clientId}:`, ack); + }); + }); }; beforeAll(async () => { - console.log("--- Executing beforeAll (Setup) ---"); - try { await fundAddress(config.chainSimulatorUrl, config.aliceAddress); await fundAddress(config.chainSimulatorUrl, config.bobAddress); await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/1`); + pingPongScAddress = await ChainSimulatorUtils.deployPingPongSc(config.bobAddress); + eventFilters.CLIENT_2.address = pingPongScAddress; + eventFilters.CLIENT_3.address = pingPongScAddress; + for (const item of filterMap) { - connectAndSubscribe(item.key, item.filter, item.clientId); + connectAndSubscribe(item.key, item.txFilter, item.eventFilter, item.clientId); } - // await for clients to connect - console.log(`Awaiting for clients to connect...`); await new Promise(resolve => setTimeout(resolve, 5000)); - console.log("\n--- Starting Transactions ---"); + console.log("\n--- Starting Operations ---"); await transferEgld(config.chainSimulatorUrl, config.aliceAddress, config.bobAddress, 1); await transferEgld(config.chainSimulatorUrl, config.bobAddress, config.aliceAddress, 2); - console.log("--- Generating Block and waiting for WS responses ---"); + + await ChainSimulatorUtils.pingContract(config.aliceAddress, pingPongScAddress); + await ChainSimulatorUtils.pongContract(config.aliceAddress, pingPongScAddress); + await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/10`); await new Promise(resolve => setTimeout(resolve, 15000)); - console.log("--- Setup Complete ---"); - } catch (e: any) { - console.error("An error occured in beforeAll:", e.message); - + console.error("Error in beforeAll:", e.message); throw e; } }); afterAll(() => { clients.forEach(client => client.connected && client.disconnect()); - console.log("\n--- All clients disconnected ---"); }); - // --- TESTE SEPARATE (itShould...) --- + it('should receive TXs sent by Alice for Client 1', () => { + const txs = txResponses.get(filterKeys.CLIENT_1); + expect(txs?.length).toBe(3); + + txs?.forEach((tx) => { + expect(tx.sender).toEqual(config.aliceAddress); + }); + }); - it('should receive only the transaction sent by Alice (Tx 1: Alice -> Bob) when filtering by CLIENT_1', () => { - const filterKey = filterKeys.CLIENT_1; - const aliceTxs = subscriptionsResponses.get(filterKey); - console.log(`\nRunning test for ${filterMap.find(f => f.key === filterKey)?.clientId}`); + it('should receive Events with identifier "pong" for Client 1', () => { + const events = eventResponses.get(filterKeys.CLIENT_1); + expect(events?.length).toBe(1); - expect(aliceTxs?.length).toBe(1); - const tx = aliceTxs?.[0]; - expect(tx.sender).toEqual(config.aliceAddress); - expect(tx.sender).not.toEqual(config.bobAddress); + events?.forEach((evt) => { + expect(evt.identifier).toEqual('pong'); + }); }); - it('should receive only the transaction sent by Bob (Tx 2: Bob -> Alice) when filtering by CLIENT_2', () => { - const filterKey = filterKeys.CLIENT_2; - const bobTxs = subscriptionsResponses.get(filterKey); - console.log(`\nRunning test for ${filterMap.find(f => f.key === filterKey)?.clientId}`); + it('should receive TXs sent by Bob for Client 2', () => { + const txs = txResponses.get(filterKeys.CLIENT_2); + expect(txs?.length).toBe(2); - expect(bobTxs?.length).toBe(1); - const tx = bobTxs?.[0]; - expect(tx.sender).toEqual(config.bobAddress); - expect(tx.receiver).toEqual(config.aliceAddress); - expect(tx.sender).not.toEqual(config.aliceAddress); + txs?.forEach((tx) => { + expect(tx.sender).toEqual(config.bobAddress); + }); }); - it('should receive only the transaction sent by Alice to Bob (Tx 1) when filtering by CLIENT_3', () => { - const filterKey = filterKeys.CLIENT_3; - const aliceToBobTxs = subscriptionsResponses.get(filterKey); - console.log(`\nRunning test for ${filterMap.find(f => f.key === filterKey)?.clientId}`); + it('should receive Events generated by PingPong contract (address) for Client 2', () => { + const events = eventResponses.get(filterKeys.CLIENT_2); + expect(events?.length).toBe(7); - expect(aliceToBobTxs?.length).toBe(1); - const tx = aliceToBobTxs?.[0]; - expect(tx.sender).toEqual(config.aliceAddress); - expect(tx.receiver).toEqual(config.bobAddress); + events?.forEach((evt) => { + expect(evt.address).toEqual(pingPongScAddress); + }); + }); + + it('should receive specific Alice-to-Bob TXs for Client 3', () => { + const txs = txResponses.get(filterKeys.CLIENT_3); + expect(txs?.length).toBeGreaterThanOrEqual(1); + + txs?.forEach((tx) => { + expect(tx.sender).toEqual(config.aliceAddress); + expect(tx.receiver).toEqual(config.bobAddress); + }); + }); + + it('should receive Events with identifier "completedTxEvent" and from Ping Pong sc address for Client 3', () => { + const events = eventResponses.get(filterKeys.CLIENT_3); + expect(events?.length).toBe(2); + + events?.forEach((evt) => { + expect(evt.identifier).toEqual('completedTxEvent'); + }); }); -}); +}); \ No newline at end of file From bd08586ecfa4e9bb9c51824783573e4816bb003e Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 8 Dec 2025 16:22:33 +0200 Subject: [PATCH 070/206] lint --- src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts | 2 +- src/utils/no.empty.payload.validator.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index 896506136..db5bcf154 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -170,4 +170,4 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { expect(evt.identifier).toEqual('completedTxEvent'); }); }); -}); \ No newline at end of file +}); diff --git a/src/utils/no.empty.payload.validator.ts b/src/utils/no.empty.payload.validator.ts index 144000733..8a3a7ee40 100644 --- a/src/utils/no.empty.payload.validator.ts +++ b/src/utils/no.empty.payload.validator.ts @@ -36,4 +36,4 @@ export function NoEmptyPayload(validationOptions?: ValidationOptions) { validator: NoEmptyPayloadConstraint, }); }; -} \ No newline at end of file +} From de8f7cdf76290fbaa908f073f404c3805a504000 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Mon, 8 Dec 2025 16:28:30 +0200 Subject: [PATCH 071/206] added metric per topics --- src/common/metrics/api.metrics.service.ts | 19 +++++++- src/crons/websocket/websocket.cron.service.ts | 47 +++++++++++++++++-- 2 files changed, 59 insertions(+), 7 deletions(-) diff --git a/src/common/metrics/api.metrics.service.ts b/src/common/metrics/api.metrics.service.ts index ff2d24260..5f78bfb24 100644 --- a/src/common/metrics/api.metrics.service.ts +++ b/src/common/metrics/api.metrics.service.ts @@ -23,6 +23,7 @@ export class ApiMetricsService { private static transactionsPendingResultsCounter: Counter; private static batchUpdatesCounter: Counter; private static subscriptionsConnectionsGauge: Gauge; + private static subscriptionsTopicConnectionsGauge: Gauge; constructor( private readonly apiConfigService: ApiConfigService, @@ -40,6 +41,14 @@ export class ApiMetricsService { }); } + if (!ApiMetricsService.subscriptionsTopicConnectionsGauge) { + ApiMetricsService.subscriptionsTopicConnectionsGauge = new Gauge({ + name: 'websocket_subscriptions_topic_connections', + help: 'Unique websocket clients per topic', + labelNames: ['topic'], + }); + } + if (!ApiMetricsService.vmQueriesHistogram) { ApiMetricsService.vmQueriesHistogram = new Histogram({ name: 'vm_query', @@ -191,10 +200,16 @@ export class ApiMetricsService { } @OnEvent(MetricsEvents.SetWebsocketMetrics) - setWebsocketSubscriptionsMetrics(payload: { connectedClients: number }) { - const { connectedClients } = payload; + setWebsocketSubscriptionsMetrics(payload: { connectedClients: number; topics?: Record }) { + const { connectedClients, topics } = payload; ApiMetricsService.subscriptionsConnectionsGauge.set(connectedClients); + + if (topics) { + for (const [topic, count] of Object.entries(topics)) { + ApiMetricsService.subscriptionsTopicConnectionsGauge.set({ topic }, count); + } + } } diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 643a450b5..9f85435e6 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -48,15 +48,52 @@ export class WebsocketCronService { @Cron('*/1 * * * * *') handleWebsocketMetrics() { const connectedClients = this.server.sockets.sockets.size ?? 0; - // TODO: add more metrics in the future - // const subscriptions: Record = {}; - // this.server.sockets.adapter.rooms.forEach((socketsSet, roomName) => { - // subscriptions[roomName] = socketsSet.size; - // }); + // Efficient unique-listener counts per topic + const adapter = this.server.sockets.adapter as any; + const sids: Map> = adapter?.sids ?? new Map(); + + const topicPrefixes: Array<{ key: string; prefix?: string; room?: string }> = [ + { key: 'tx', prefix: TransactionsGateway.keyPrefix }, + { key: 'customTx', prefix: TransactionsCustomGateway.keyPrefix }, + { key: 'events', prefix: EventsGateway.keyPrefix }, + { key: 'customEvents', prefix: EventsCustomGateway.keyPrefix }, + { key: 'blocks', prefix: BlocksGateway.keyPrefix }, + { key: 'pool', prefix: PoolGateway.keyPrefix }, + { key: 'stats', room: 'statsRoom' }, + ]; + + const topics: Record = {}; + for (const { key } of topicPrefixes) topics[key] = 0; + + // Count unique sockets per prefix-based topic by scanning socket -> rooms map once + if (sids && sids.size > 0) { + for (const [, rooms] of sids) { + // Track whether this socket has been counted for a given topic key + const matched: Record = {}; + + for (const roomName of rooms) { + for (const { key, prefix } of topicPrefixes) { + if (!prefix || matched[key]) continue; + if (roomName.startsWith(prefix)) { + topics[key] += 1; + matched[key] = true; + } + } + } + } + } + + // Handle exact-room topics (like statsRoom) directly from rooms map + const rooms: Map> = adapter?.rooms ?? new Map(); + const statsRoomSet = rooms.get('statsRoom'); + if (statsRoomSet) { + topics['stats'] = statsRoomSet.size; + } this.eventEmitter.emit(MetricsEvents.SetWebsocketMetrics, { connectedClients, + topics, }); } From 820466f751023c6b731060cb4365c2912bfc4b68 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Mon, 8 Dec 2025 16:46:37 +0200 Subject: [PATCH 072/206] updates --- src/crons/websocket/connection.handler.ts | 2 +- src/crons/websocket/websocket.cron.service.ts | 105 +++++++++--------- 2 files changed, 54 insertions(+), 53 deletions(-) diff --git a/src/crons/websocket/connection.handler.ts b/src/crons/websocket/connection.handler.ts index 081ffc6fc..ae1f74a08 100644 --- a/src/crons/websocket/connection.handler.ts +++ b/src/crons/websocket/connection.handler.ts @@ -15,7 +15,7 @@ export class ConnectionHandler implements OnGatewayDisconnect, OnGatewayConnecti handleDisconnect(_client: Socket) { } handleConnection(client: Socket, ..._args: any[]) { - client.setMaxListeners(12); + client.setMaxListeners(16); } hasSubscriptionsWithPrefixes(prefixes: string[]): boolean { diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 9f85435e6..51d16008d 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -45,58 +45,6 @@ export class WebsocketCronService { private readonly apiConfigService: ApiConfigService, ) { } - @Cron('*/1 * * * * *') - handleWebsocketMetrics() { - const connectedClients = this.server.sockets.sockets.size ?? 0; - - // Efficient unique-listener counts per topic - const adapter = this.server.sockets.adapter as any; - const sids: Map> = adapter?.sids ?? new Map(); - - const topicPrefixes: Array<{ key: string; prefix?: string; room?: string }> = [ - { key: 'tx', prefix: TransactionsGateway.keyPrefix }, - { key: 'customTx', prefix: TransactionsCustomGateway.keyPrefix }, - { key: 'events', prefix: EventsGateway.keyPrefix }, - { key: 'customEvents', prefix: EventsCustomGateway.keyPrefix }, - { key: 'blocks', prefix: BlocksGateway.keyPrefix }, - { key: 'pool', prefix: PoolGateway.keyPrefix }, - { key: 'stats', room: 'statsRoom' }, - ]; - - const topics: Record = {}; - for (const { key } of topicPrefixes) topics[key] = 0; - - // Count unique sockets per prefix-based topic by scanning socket -> rooms map once - if (sids && sids.size > 0) { - for (const [, rooms] of sids) { - // Track whether this socket has been counted for a given topic key - const matched: Record = {}; - - for (const roomName of rooms) { - for (const { key, prefix } of topicPrefixes) { - if (!prefix || matched[key]) continue; - if (roomName.startsWith(prefix)) { - topics[key] += 1; - matched[key] = true; - } - } - } - } - } - - // Handle exact-room topics (like statsRoom) directly from rooms map - const rooms: Map> = adapter?.rooms ?? new Map(); - const statsRoomSet = rooms.get('statsRoom'); - if (statsRoomSet) { - topics['stats'] = statsRoomSet.size; - } - - this.eventEmitter.emit(MetricsEvents.SetWebsocketMetrics, { - connectedClients, - topics, - }); - } - @Cron('*/6 * * * * *') @Lock({ name: 'Push transactions to subscribers', verbose: true }) async handleTransactionsUpdate() { @@ -165,6 +113,59 @@ export class WebsocketCronService { ); } + @Cron('*/10 * * * * *') + @Lock({ name: 'Push websocket subscriptions metrics', verbose: true }) + handleWebsocketMetrics() { + const connectedClients = this.server.sockets.sockets.size ?? 0; + + // Efficient unique-listener counts per topic + const adapter = this.server.sockets.adapter as any; + const sids: Map> = adapter?.sids ?? new Map(); + + const topicPrefixes: Array<{ key: string; prefix?: string; room?: string }> = [ + { key: 'tx', prefix: TransactionsGateway.keyPrefix }, + { key: 'customTx', prefix: TransactionsCustomGateway.keyPrefix }, + { key: 'events', prefix: EventsGateway.keyPrefix }, + { key: 'customEvents', prefix: EventsCustomGateway.keyPrefix }, + { key: 'blocks', prefix: BlocksGateway.keyPrefix }, + { key: 'pool', prefix: PoolGateway.keyPrefix }, + { key: 'stats', room: 'statsRoom' }, + ]; + + const topics: Record = {}; + for (const { key } of topicPrefixes) topics[key] = 0; + + // Count unique sockets per prefix-based topic by scanning socket -> rooms map once + if (sids && sids.size > 0) { + for (const [, rooms] of sids) { + // Track whether this socket has been counted for a given topic key + const matched: Record = {}; + + for (const roomName of rooms) { + for (const { key, prefix } of topicPrefixes) { + if (!prefix || matched[key]) continue; + if (roomName.startsWith(prefix)) { + topics[key] += 1; + matched[key] = true; + } + } + } + } + } + + // Handle exact-room topics (like statsRoom) directly from rooms map + const rooms: Map> = adapter?.rooms ?? new Map(); + const statsRoomSet = rooms.get('statsRoom'); + if (statsRoomSet) { + topics['stats'] = statsRoomSet.size; + } + + this.eventEmitter.emit(MetricsEvents.SetWebsocketMetrics, { + connectedClients, + topics, + }); + } + private async getLatestRoundOnChainData() { const rounds = await this.roundService.getRounds(new RoundFilter({ size: 1 })); return rounds[0]; From cc700f4972803886ba603a75ecfa67fc5e502480 Mon Sep 17 00:00:00 2001 From: cfaur09 Date: Mon, 8 Dec 2025 22:03:58 +0200 Subject: [PATCH 073/206] implement ConcurrencyUtils in collection service --- .../collections/collection.service.ts | 89 +++++++++++++++---- src/utils/cache.info.ts | 21 +++++ 2 files changed, 95 insertions(+), 15 deletions(-) diff --git a/src/endpoints/collections/collection.service.ts b/src/endpoints/collections/collection.service.ts index ce8378053..ca0b1ce68 100644 --- a/src/endpoints/collections/collection.service.ts +++ b/src/endpoints/collections/collection.service.ts @@ -29,6 +29,7 @@ import { CollectionLogo } from "./entities/collection.logo"; import { ScamInfo } from "src/common/entities/scam-info.dto"; import { NftType as ElasticNftType } from "src/common/indexer/entities/nft.type"; import { NftSubType } from "../nfts/entities/nft.sub.type"; +import { ConcurrencyUtils } from "src/utils/concurrency.utils"; @Injectable() export class CollectionService { @@ -159,24 +160,46 @@ export class CollectionService { } async batchGetCollectionsProperties(identifiers: string[]): Promise<{ [key: string]: TokenProperties | undefined }> { - if (this.apiConfigService.getCollectionPropertiesFromGateway()) { - return await this.getCollectionProperties(identifiers); + const result: { [key: string]: TokenProperties | undefined } = {}; + const chunks = this.splitIntoChunks(identifiers, 300); + + const chunkResults = await ConcurrencyUtils.executeWithConcurrencyLimit( + chunks, + async (chunk) => { + if (this.apiConfigService.getCollectionPropertiesFromGateway()) { + return await this.getCollectionProperties(chunk); + } + return await this.getEsdtProperties(chunk); + }, + 4, + 'CollectionService.batchGetCollectionsProperties' + ); + + for (const chunkResult of chunkResults) { + Object.assign(result, chunkResult); } - return await this.getEsdtProperties(identifiers); + return result; } async batchGetCollectionsAssets(identifiers: string[]): Promise<{ [key: string]: TokenAssets | undefined }> { const collectionsAssets: { [key: string]: TokenAssets | undefined } = {}; - const allAssets = await this.assetsService.getAllTokenAssets(); - - await this.cachingService.batchApplyAll( - identifiers, - identifier => CacheInfo.EsdtAssets(identifier).key, - identifier => Promise.resolve(allAssets[identifier]), - (identifier, properties) => collectionsAssets[identifier] = properties, - CacheInfo.EsdtAssets('').ttl + const chunks = this.splitIntoChunks(identifiers, 300); + + await ConcurrencyUtils.executeWithConcurrencyLimit( + chunks, + async (chunk) => { + await this.cachingService.batchApplyAll( + chunk, + identifier => CacheInfo.EsdtAssets(identifier).key, + identifier => Promise.resolve(allAssets[identifier]), + (identifier, properties) => collectionsAssets[identifier] = properties, + CacheInfo.EsdtAssets('').ttl + ); + }, + 4, + 'CollectionService.batchGetCollectionsAssets' ); return collectionsAssets; @@ -230,7 +253,7 @@ export class CollectionService { this.applyPropertiesToCollectionFromElasticSearch(collectionDetailed, elasticCollection); - collectionDetailed.traits = await this.persistenceService.getCollectionTraits(identifier) ?? []; + collectionDetailed.traits = await this.getCollectionTraitsCached(identifier); await this.applyCollectionRoles(collectionDetailed, elasticCollection); @@ -238,7 +261,7 @@ export class CollectionService { } async applyCollectionRoles(collection: NftCollectionDetailed | TokenDetailed, elasticCollection: any) { - collection.roles = await this.getNftCollectionRolesFromGateway(elasticCollection); + collection.roles = await this.getCollectionRolesCached(elasticCollection.token, elasticCollection); const isTransferProhibitedByDefault = collection.roles?.some(x => x.canTransfer === true) === true; collection.canTransfer = !isTransferProhibitedByDefault; if (collection.canTransfer) { @@ -383,7 +406,7 @@ export class CollectionService { } async getLogoPng(identifier: string): Promise { - const collectionLogo = await this.getCollectionLogo(identifier); + const collectionLogo = await this.getCollectionLogoCached(identifier); if (!collectionLogo) { return; } @@ -392,7 +415,7 @@ export class CollectionService { } async getLogoSvg(identifier: string): Promise { - const collectionLogo = await this.getCollectionLogo(identifier); + const collectionLogo = await this.getCollectionLogoCached(identifier); if (!collectionLogo) { return; } @@ -427,4 +450,40 @@ export class CollectionService { return collectionsProperties; } + + private splitIntoChunks(items: T[], chunkSize: number): T[][] { + if (chunkSize <= 0) { + return [items]; + } + + const chunks: T[][] = []; + for (let i = 0; i < items.length; i += chunkSize) { + chunks.push(items.slice(i, i + chunkSize)); + } + return chunks; + } + + private async getCollectionTraitsCached(identifier: string): Promise { + return await this.cachingService.getOrSet( + CacheInfo.CollectionTraits(identifier).key, + async () => await this.persistenceService.getCollectionTraits(identifier) ?? [], + CacheInfo.CollectionTraits(identifier).ttl, + ); + } + + private async getCollectionRolesCached(identifier: string, elasticCollection: any): Promise { + return await this.cachingService.getOrSet( + CacheInfo.CollectionRoles(identifier).key, + async () => await this.getNftCollectionRolesFromGateway(elasticCollection), + CacheInfo.CollectionRoles(identifier).ttl, + ); + } + + private async getCollectionLogoCached(identifier: string): Promise { + return await this.cachingService.getOrSet( + CacheInfo.CollectionLogo(identifier).key, + async () => await this.getCollectionLogo(identifier), + CacheInfo.CollectionLogo(identifier).ttl, + ); + } } diff --git a/src/utils/cache.info.ts b/src/utils/cache.info.ts index d2bd54b6d..37610717b 100644 --- a/src/utils/cache.info.ts +++ b/src/utils/cache.info.ts @@ -244,6 +244,27 @@ export class CacheInfo { }; } + static CollectionTraits(identifier: string): CacheInfo { + return { + key: `collectionTraits:${identifier}`, + ttl: Constants.oneMinute() * 10, + }; + } + + static CollectionRoles(identifier: string): CacheInfo { + return { + key: `collectionRoles:${identifier}`, + ttl: Constants.oneMinute() * 5, + }; + } + + static CollectionLogo(identifier: string): CacheInfo { + return { + key: `collectionLogo:${identifier}`, + ttl: Constants.oneHour(), + }; + } + static EsdtAddressesRoles(identifier: string): CacheInfo { return { key: `esdt:roles:${identifier}`, From d8106d9224dea6ad4ab604c5723b00b2c0e3928d Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 9 Dec 2025 11:55:20 +0200 Subject: [PATCH 074/206] add tests for general subscriptions --- .../websocket.subscriptions.cs-e2e.ts | 80 ++++++++++++++++++- 1 file changed, 76 insertions(+), 4 deletions(-) diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index db5bcf154..72e571bac 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -6,9 +6,26 @@ import { ChainSimulatorUtils } from "./utils/test.utils"; const WS_SERVER_URL = `${config.subscriptionsServiceUrl}`; +// --- Client 4 Configuration (Editable) --- +const client4SubscriptionConfig = { + pool: { from: 0, size: 25 }, + events: { from: 0, size: 25, shard: 1 }, + transactions: { from: 0, size: 25, status: 'success' }, + blocks: { from: 0, size: 25, shard: 1 }, +}; +// ----------------------------------------- + const txResponses: Map = new Map(); const eventResponses: Map = new Map(); +const generalResponses = { + pool: [] as any[], + events: [] as any[], + transactions: [] as any[], + blocks: [] as any[], + stats: [] as any[], +}; + const txFilters = { CLIENT_1: { sender: config.aliceAddress }, CLIENT_2: { sender: config.bobAddress }, @@ -17,8 +34,8 @@ const txFilters = { const eventFilters = { CLIENT_1: { identifier: 'pong' }, - CLIENT_2: { address: '' }, // added dinamically after deploy sc - CLIENT_3: { identifier: 'completedTxEvent', address: '' }, // added dinamically after deploy sc + CLIENT_2: { address: '' }, + CLIENT_3: { identifier: 'completedTxEvent', address: '' }, }; const filterKeys = { @@ -77,6 +94,35 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { }); }; + const connectAndSubscribeGeneral = (clientId: string, subConfig: typeof client4SubscriptionConfig) => { + const client: Socket = io(WS_SERVER_URL, { + path: '/ws/subscription', + }); + clients.push(client); + + client.on("connect_error", (err) => { + throw new Error(`${clientId} connection failed: ${err.message}`); + }); + + client.on("poolUpdate", (data: any) => generalResponses.pool.push(data)); + client.on("eventsUpdate", (data: any) => generalResponses.events.push(data)); + client.on("transactionUpdate", (data: any) => generalResponses.transactions.push(data)); + client.on("blocksUpdate", (data: any) => generalResponses.blocks.push(data)); + client.on("statsUpdate", (data: any) => generalResponses.stats.push(data)); + + client.on("connect", () => { + console.log(`\n ${clientId} connected with specific configs.`); + + // Max 5 subscriptions per client + client.emit("subscribePool", subConfig.pool, (ack: any) => console.log(`ACK Pool ${clientId}:`, ack)); + client.emit("subscribeEvents", subConfig.events, (ack: any) => console.log(`ACK Events ${clientId}:`, ack)); + client.emit("subscribeTransactions", subConfig.transactions, (ack: any) => console.log(`ACK Txs ${clientId}:`, ack)); + client.emit("subscribeBlocks", subConfig.blocks, (ack: any) => console.log(`ACK Blocks ${clientId}:`, ack)); + + client.emit("subscribeStats", (ack: any) => console.log(`ACK Stats ${clientId}:`, ack)); + }); + }; + beforeAll(async () => { try { await fundAddress(config.chainSimulatorUrl, config.aliceAddress); @@ -91,6 +137,9 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { connectAndSubscribe(item.key, item.txFilter, item.eventFilter, item.clientId); } + // Initialize General Client (Client 4) using the top-level config + connectAndSubscribeGeneral("client4", client4SubscriptionConfig); + await new Promise(resolve => setTimeout(resolve, 5000)); console.log("\n--- Starting Operations ---"); @@ -98,7 +147,6 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { await transferEgld(config.chainSimulatorUrl, config.aliceAddress, config.bobAddress, 1); await transferEgld(config.chainSimulatorUrl, config.bobAddress, config.aliceAddress, 2); - await ChainSimulatorUtils.pingContract(config.aliceAddress, pingPongScAddress); await ChainSimulatorUtils.pongContract(config.aliceAddress, pingPongScAddress); @@ -116,6 +164,8 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { clients.forEach(client => client.connected && client.disconnect()); }); + // --- Tests for Clients 1, 2, 3 (Custom Filters) --- + it('should receive TXs sent by Alice for Client 1', () => { const txs = txResponses.get(filterKeys.CLIENT_1); expect(txs?.length).toBe(3); @@ -170,4 +220,26 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { expect(evt.identifier).toEqual('completedTxEvent'); }); }); -}); + + // --- Tests for Client 4 (Pagination & Stats) --- + + it('should receive Blocks updates for Client 4', () => { + expect(generalResponses.blocks.length).toBeGreaterThan(0); + }); + + it('should receive Transactions updates for Client 4', () => { + expect(generalResponses.transactions.length).toBeGreaterThan(0); + }); + + it('should receive Events updates for Client 4', () => { + expect(generalResponses.events.length).toBeGreaterThan(0); + }); + + it('should receive Stats updates for Client 4', () => { + expect(generalResponses.stats.length).toBeGreaterThan(0); + }); + + it('should have valid subscription structure for Pool updates', () => { + expect(Array.isArray(generalResponses.pool)).toBe(true); + }); +}); \ No newline at end of file From f5a598ca6903ea28b8ba5fdb3cbe9700d6bd4924 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 9 Dec 2025 11:59:22 +0200 Subject: [PATCH 075/206] add newline --- src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index 72e571bac..b6ed4aa42 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -242,4 +242,4 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { it('should have valid subscription structure for Pool updates', () => { expect(Array.isArray(generalResponses.pool)).toBe(true); }); -}); \ No newline at end of file +}); From f7a780350340bcdca1c7e61c923281c408f42e80 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 9 Dec 2025 13:37:13 +0200 Subject: [PATCH 076/206] use timestampMs --- src/crons/websocket/events.custom.gateway.ts | 4 +--- src/crons/websocket/transaction.custom.gateway.ts | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/crons/websocket/events.custom.gateway.ts b/src/crons/websocket/events.custom.gateway.ts index 2506ffaaa..eaa50bb0d 100644 --- a/src/crons/websocket/events.custom.gateway.ts +++ b/src/crons/websocket/events.custom.gateway.ts @@ -61,11 +61,9 @@ export class EventsCustomGateway { async pushEventsForTimestampMs(timestampMs: number): Promise { try { - const timestamp = timestampMs / 1000; - const allEvents = await this.eventsService.getEvents( new QueryPagination({ size: 10000 }), - new EventsFilter({ before: timestamp, after: timestamp }), + new EventsFilter({ before: timestampMs, after: timestampMs }), ); const eventsFilteredForBroadcast: Map = new Map(); diff --git a/src/crons/websocket/transaction.custom.gateway.ts b/src/crons/websocket/transaction.custom.gateway.ts index 3a6290491..f7a6f072b 100644 --- a/src/crons/websocket/transaction.custom.gateway.ts +++ b/src/crons/websocket/transaction.custom.gateway.ts @@ -54,9 +54,8 @@ export class TransactionsCustomGateway { async pushTransactionsForTimestampMs(timestampMs: number): Promise { try { - const timestamp = timestampMs / 1000; // TODO: add support for timestampMs const allTransactions = await this.transactionService.getTransactions( - new TransactionFilter({ before: timestamp, after: timestamp }), + new TransactionFilter({ before: timestampMs, after: timestampMs }), new QueryPagination({ size: 10000 }) // TODO: handle pagination with more than 10k txs ); From de556b8fd5fbadee6e12dec3aeb63d260b1adfc1 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 9 Dec 2025 13:54:20 +0200 Subject: [PATCH 077/206] revert e2e mainnet config --- config/config.e2e.mainnet.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index d7c4dc2d7..7a03cbf63 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -5,7 +5,7 @@ api: publicPort: 3001 private: true privatePort: 4001 - websocket: false + websocket: true cron: cacheWarmer: true fastWarm: false From df9c5a52c239658cbe1d96f455517ae42056bcca Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 9 Dec 2025 14:25:32 +0200 Subject: [PATCH 078/206] custom verbose --- .../websocket.subscriptions.cs-e2e.ts | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index b6ed4aa42..3c9f4f518 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -6,14 +6,22 @@ import { ChainSimulatorUtils } from "./utils/test.utils"; const WS_SERVER_URL = `${config.subscriptionsServiceUrl}`; -// --- Client 4 Configuration (Editable) --- +// --- Test Configuration --- +const verbose = false; // Set to true to see console logs + const client4SubscriptionConfig = { pool: { from: 0, size: 25 }, events: { from: 0, size: 25, shard: 1 }, transactions: { from: 0, size: 25, status: 'success' }, blocks: { from: 0, size: 25, shard: 1 }, }; -// ----------------------------------------- +// -------------------------- + +const log = (...args: any[]) => { + if (verbose) { + console.log(...args); + } +}; const txResponses: Map = new Map(); const eventResponses: Map = new Map(); @@ -72,24 +80,24 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { }); client.on("customTransactionUpdate", (data: { transactions: any[] }) => { - console.log(`\n💸 ${clientId} received ${data.transactions.length} txs`); + log(`\n💸 ${clientId} received ${data.transactions.length} txs`); receivedTxs.push(...data.transactions); }); client.on("customEventUpdate", (data: { events: any[] }) => { - console.log(`\n🔔 ${clientId} received ${data.events.length} events`); + log(`\n🔔 ${clientId} received ${data.events.length} events`); receivedEvents.push(...data.events); }); client.on("connect", () => { - console.log(`\n ${clientId} connected.`); + log(`\n ${clientId} connected.`); client.emit("subscribeCustomTransactions", txFilter, (ack: any) => { - console.log(` ACK TXs ${clientId}:`, ack); + log(` ACK TXs ${clientId}:`, ack); }); client.emit("subscribeCustomEvents", eventFilter, (ack: any) => { - console.log(` ACK Events ${clientId}:`, ack); + log(` ACK Events ${clientId}:`, ack); }); }); }; @@ -111,15 +119,14 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { client.on("statsUpdate", (data: any) => generalResponses.stats.push(data)); client.on("connect", () => { - console.log(`\n ${clientId} connected with specific configs.`); + log(`\n ${clientId} connected with specific configs.`); - // Max 5 subscriptions per client - client.emit("subscribePool", subConfig.pool, (ack: any) => console.log(`ACK Pool ${clientId}:`, ack)); - client.emit("subscribeEvents", subConfig.events, (ack: any) => console.log(`ACK Events ${clientId}:`, ack)); - client.emit("subscribeTransactions", subConfig.transactions, (ack: any) => console.log(`ACK Txs ${clientId}:`, ack)); - client.emit("subscribeBlocks", subConfig.blocks, (ack: any) => console.log(`ACK Blocks ${clientId}:`, ack)); + client.emit("subscribePool", subConfig.pool, (ack: any) => log(`ACK Pool ${clientId}:`, ack)); + client.emit("subscribeEvents", subConfig.events, (ack: any) => log(`ACK Events ${clientId}:`, ack)); + client.emit("subscribeTransactions", subConfig.transactions, (ack: any) => log(`ACK Txs ${clientId}:`, ack)); + client.emit("subscribeBlocks", subConfig.blocks, (ack: any) => log(`ACK Blocks ${clientId}:`, ack)); - client.emit("subscribeStats", (ack: any) => console.log(`ACK Stats ${clientId}:`, ack)); + client.emit("subscribeStats", (ack: any) => log(`ACK Stats ${clientId}:`, ack)); }); }; @@ -137,12 +144,11 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { connectAndSubscribe(item.key, item.txFilter, item.eventFilter, item.clientId); } - // Initialize General Client (Client 4) using the top-level config connectAndSubscribeGeneral("client4", client4SubscriptionConfig); await new Promise(resolve => setTimeout(resolve, 5000)); - console.log("\n--- Starting Operations ---"); + log("\n--- Starting Operations ---"); await transferEgld(config.chainSimulatorUrl, config.aliceAddress, config.bobAddress, 1); await transferEgld(config.chainSimulatorUrl, config.bobAddress, config.aliceAddress, 2); From d4d0f42972d9a58fd8d3462b7b7724bbb03b195f Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 10 Dec 2025 10:24:01 +0200 Subject: [PATCH 079/206] use timestampMs on chain sim network --- src/crons/websocket/websocket.cron.service.ts | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 51d16008d..5292be886 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -20,7 +20,6 @@ import { Stats } from 'src/endpoints/network/entities/stats'; import { TransactionsCustomGateway } from './transaction.custom.gateway'; import { ConnectionHandler } from './connection.handler'; import { EventsCustomGateway } from './events.custom.gateway'; -import { ApiConfigService } from 'src/common/api-config/api.config.service'; @Injectable() @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -42,7 +41,6 @@ export class WebsocketCronService { private readonly transactionsCustomGateway: TransactionsCustomGateway, private readonly eventsCustomGateway: EventsCustomGateway, private readonly connectionHandler: ConnectionHandler, - private readonly apiConfigService: ApiConfigService, ) { } @Cron('*/6 * * * * *') @@ -172,18 +170,11 @@ export class WebsocketCronService { } private async isElasticDataAvailableForTimestampMs(timestampMs: number, networkStats: Stats) { - let nextRoundTimestampMs = timestampMs + networkStats.refreshRate; - let searchField = 'timestampMs'; - - // todo: remove after timestampMs is supported on chain simulator - if (this.apiConfigService.getNetwork() === 'chain') { - searchField = 'timestamp'; - nextRoundTimestampMs = Math.ceil(nextRoundTimestampMs / 1000); - } + const nextRoundTimestampMs = timestampMs + networkStats.refreshRate; const rounds = await this.elasticService.getCount( 'rounds', - ElasticQuery.create().withMustCondition(QueryType.Match(searchField, nextRoundTimestampMs)) + ElasticQuery.create().withMustCondition(QueryType.Match('timestampMs', nextRoundTimestampMs)) ); return rounds === networkStats.shards + 1; // +1 for metachain From 6e35ee91ec897da44be5a4488ee5ff80b86111b4 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 10 Dec 2025 10:32:56 +0200 Subject: [PATCH 080/206] add subscription limits to config --- config/config.devnet.yaml | 2 ++ config/config.e2e-mocked.mainnet.yaml | 2 ++ config/config.e2e.mainnet.yaml | 2 ++ config/config.mainnet.yaml | 2 ++ config/config.testnet.yaml | 2 ++ src/common/api-config/api.config.service.ts | 8 ++++++++ src/utils/ws.subscription.limiter.ts | 15 +++++++++------ 7 files changed, 27 insertions(+), 6 deletions(-) diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index 7bdeb26fd..d793c50ab 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -23,6 +23,8 @@ features: websocketSubscription: enabled: false port: 6002 + maxSubscriptionsPerInstance: 10000 + maxSubscriptionsPerClient: 5 eventsNotifier: enabled: false port: 5674 diff --git a/config/config.e2e-mocked.mainnet.yaml b/config/config.e2e-mocked.mainnet.yaml index 79cef548f..58eeb82d8 100644 --- a/config/config.e2e-mocked.mainnet.yaml +++ b/config/config.e2e-mocked.mainnet.yaml @@ -8,6 +8,8 @@ features: websocketSubscription: enabled: false port: 6002 + maxSubscriptionsPerInstance: 10000 + maxSubscriptionsPerClient: 5 dataApi: enabled: false serviceUrl: 'https://data-api.multiversx.com' diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index 7a03cbf63..4ffc7e90f 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -23,6 +23,8 @@ features: websocketSubscription: enabled: true port: 6002 + maxSubscriptionsPerInstance: 10000 + maxSubscriptionsPerClient: 5 eventsNotifier: enabled: false port: 5674 diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index 3ddf8d04e..7f78cdd43 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -23,6 +23,8 @@ features: websocketSubscription: enabled: false port: 6002 + maxSubscriptionsPerInstance: 10000 + maxSubscriptionsPerClient: 5 eventsNotifier: enabled: false port: 5674 diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index 67480ae6a..ed13a9a46 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -23,6 +23,8 @@ features: websocketSubscription: enabled: false port: 6002 + maxSubscriptionsPerInstance: 10000 + maxSubscriptionsPerClient: 5 eventsNotifier: enabled: false port: 5674 diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index b27e382e9..a11256dfe 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -1010,6 +1010,14 @@ export class ApiConfigService { return port; } + getWebsocketMaxSubscriptionsPerInstance(): number { + return this.configService.get('features.websocketSubscription.maxSubscriptionsPerInstance') ?? 10_000; + } + + getWebsocketMaxSubscriptionsPerClient(): number { + return this.configService.get('features.websocketSubscription.maxSubscriptionsPerClient') ?? 5; + } + getHeadersForCustomUrl(url: string): Record | undefined { let customUrlConfigs = this.configService.get('customUrlHeaders'); diff --git a/src/utils/ws.subscription.limiter.ts b/src/utils/ws.subscription.limiter.ts index b6f14351b..ec4ba94c7 100644 --- a/src/utils/ws.subscription.limiter.ts +++ b/src/utils/ws.subscription.limiter.ts @@ -2,22 +2,25 @@ import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; import { Socket } from 'socket.io'; import { WsException } from '@nestjs/websockets'; +import { ApiConfigService } from 'src/common/api-config/api.config.service'; @Injectable() export class WsSubscriptionLimiterGuard implements CanActivate { - static MAX_ROOMS_PER_CLIENT = 5 + 1; // TODO: adjust limit (5 subscriptions + 1 default room client id) - static MAX_ROOMS_GLOBAL = 10_000; // TODO: adjust + constructor( + private readonly apiConfigService: ApiConfigService, + ) { } canActivate(context: ExecutionContext): boolean { const client: Socket = context.switchToWs().getClient(); const totalRoomsGlobal = client.nsp.server.sockets.adapter.rooms.size; const totalClientRooms = client.rooms.size; - if (totalRoomsGlobal >= WsSubscriptionLimiterGuard.MAX_ROOMS_GLOBAL) { - throw new WsException(`Maximum number of ${WsSubscriptionLimiterGuard.MAX_ROOMS_GLOBAL} global subscriptions accepted by server reached!`); + + if (totalRoomsGlobal >= this.apiConfigService.getWebsocketMaxSubscriptionsPerInstance()) { + throw new WsException(`Maximum number of ${this.apiConfigService.getWebsocketMaxSubscriptionsPerInstance()} global subscriptions accepted by server reached!`); } - if (totalClientRooms >= WsSubscriptionLimiterGuard.MAX_ROOMS_PER_CLIENT) { - throw new WsException(`Maximum number of ${WsSubscriptionLimiterGuard.MAX_ROOMS_PER_CLIENT} subscriptions per client reached!`); + if (totalClientRooms >= this.apiConfigService.getWebsocketMaxSubscriptionsPerClient()) { + throw new WsException(`Maximum number of ${this.apiConfigService.getWebsocketMaxSubscriptionsPerClient()} subscriptions per client reached!`); } return true; From 7b992d79566cb5c82f1f8bf1feae1e520d444c7b Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 10 Dec 2025 10:39:29 +0200 Subject: [PATCH 081/206] fix --- src/utils/ws.subscription.limiter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/ws.subscription.limiter.ts b/src/utils/ws.subscription.limiter.ts index ec4ba94c7..0ce24aeff 100644 --- a/src/utils/ws.subscription.limiter.ts +++ b/src/utils/ws.subscription.limiter.ts @@ -19,7 +19,7 @@ export class WsSubscriptionLimiterGuard implements CanActivate { throw new WsException(`Maximum number of ${this.apiConfigService.getWebsocketMaxSubscriptionsPerInstance()} global subscriptions accepted by server reached!`); } - if (totalClientRooms >= this.apiConfigService.getWebsocketMaxSubscriptionsPerClient()) { + if (totalClientRooms >= this.apiConfigService.getWebsocketMaxSubscriptionsPerClient() + 1) { // 1 default room with client id throw new WsException(`Maximum number of ${this.apiConfigService.getWebsocketMaxSubscriptionsPerClient()} subscriptions per client reached!`); } From 54643fe1e894c54bab9477af257e456d874934c8 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 10 Dec 2025 13:56:32 +0200 Subject: [PATCH 082/206] update configs --- config/config.devnet-old.yaml | 4 ++-- config/config.devnet.yaml | 6 +++--- config/config.e2e-mocked.mainnet.yaml | 6 +++--- config/config.e2e.mainnet.yaml | 6 +++--- config/config.mainnet.yaml | 6 +++--- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/config/config.devnet-old.yaml b/config/config.devnet-old.yaml index 82bb1dec2..8ebf8c473 100644 --- a/config/config.devnet-old.yaml +++ b/config/config.devnet-old.yaml @@ -63,8 +63,8 @@ features: enabled: false chainSupernova: enabled: false - activationEpoch: 2030 - activationTimestamp: 1864749472 + activationEpoch: 3964 + activationTimestamp: 1751460236 image: width: 600 height: 600 diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index d793c50ab..937ae0e38 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -76,9 +76,9 @@ features: enabled: true activationEpoch: 4817 chainSupernova: - enabled: false - activationEpoch: 2030 - activationTimestamp: 1864749472 + enabled: true + activationEpoch: 3964 + activationTimestamp: 1751460236 deprecatedRelayedV1V2: enabled: true activationEpoch: 4569 diff --git a/config/config.e2e-mocked.mainnet.yaml b/config/config.e2e-mocked.mainnet.yaml index 58eeb82d8..5b3e87589 100644 --- a/config/config.e2e-mocked.mainnet.yaml +++ b/config/config.e2e-mocked.mainnet.yaml @@ -19,9 +19,9 @@ features: acceptedOrigins: - '' chainSupernova: - enabled: false - activationEpoch: 2030 - activationTimestamp: 1864749472 + enabled: true + activationEpoch: 1820 + activationTimestamp: 1753376544 cron: transactionProcessor: false transactionProcessorMaxLookBehind: 1000 diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index 4ffc7e90f..2d20bc703 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -74,9 +74,9 @@ features: enabled: true activationEpoch: 1951 chainSupernova: - enabled: false - activationEpoch: 2030 - activationTimestamp: 1864749472 + enabled: true + activationEpoch: 1820 + activationTimestamp: 1753376544 nodeEpochsLeft: enabled: false transactionProcessor: diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index 7f78cdd43..10ce56c36 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -74,9 +74,9 @@ features: enabled: true activationEpoch: 1951 chainSupernova: - enabled: false - activationEpoch: 2030 - activationTimestamp: 1864749472 + enabled: true + activationEpoch: 1820 + activationTimestamp: 1753376544 deprecatedRelayedV1V2: enabled: true activationEpoch: 1918 From fa06f52caefc1fa21d441b8c254356778726db41 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 10 Dec 2025 14:14:11 +0200 Subject: [PATCH 083/206] use barnard config --- config/config.devnet-old.yaml | 2 +- config/config.devnet.yaml | 2 +- config/config.e2e-mocked.mainnet.yaml | 2 +- config/config.e2e.mainnet.yaml | 2 +- config/config.mainnet.yaml | 2 +- config/config.testnet.yaml | 2 +- src/common/api-config/api.config.service.ts | 12 ++++++------ src/utils/timestamp.parse.pipe.ts | 4 ++-- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/config/config.devnet-old.yaml b/config/config.devnet-old.yaml index 8ebf8c473..8f61aac89 100644 --- a/config/config.devnet-old.yaml +++ b/config/config.devnet-old.yaml @@ -61,7 +61,7 @@ features: jwtSecret: '' nodeEpochsLeft: enabled: false - chainSupernova: + chainBarnard: enabled: false activationEpoch: 3964 activationTimestamp: 1751460236 diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index 937ae0e38..233c3444a 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -75,7 +75,7 @@ features: stakingV5: enabled: true activationEpoch: 4817 - chainSupernova: + chainBarnard: enabled: true activationEpoch: 3964 activationTimestamp: 1751460236 diff --git a/config/config.e2e-mocked.mainnet.yaml b/config/config.e2e-mocked.mainnet.yaml index 5b3e87589..d2ed9aca6 100644 --- a/config/config.e2e-mocked.mainnet.yaml +++ b/config/config.e2e-mocked.mainnet.yaml @@ -18,7 +18,7 @@ features: maxExpirySeconds: 86400 acceptedOrigins: - '' - chainSupernova: + chainBarnard: enabled: true activationEpoch: 1820 activationTimestamp: 1753376544 diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index 2d20bc703..95bd511d3 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -73,7 +73,7 @@ features: stakingV5: enabled: true activationEpoch: 1951 - chainSupernova: + chainBarnard: enabled: true activationEpoch: 1820 activationTimestamp: 1753376544 diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index 10ce56c36..7291ef680 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -73,7 +73,7 @@ features: stakingV5: enabled: true activationEpoch: 1951 - chainSupernova: + chainBarnard: enabled: true activationEpoch: 1820 activationTimestamp: 1753376544 diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index ed13a9a46..5501bc54f 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -72,7 +72,7 @@ features: stakingV5: enabled: true activationEpoch: 2519 - chainSupernova: + chainBarnard: enabled: false activationEpoch: 2030 activationTimestamp: 1864749472 diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index a11256dfe..fc246155f 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -1077,12 +1077,12 @@ export class ApiConfigService { return undefined; } - isChainSupernovaEnabled(): boolean { - return this.configService.get('features.chainSupernova.enabled') ?? false; + isChainBarnardEnabled(): boolean { + return this.configService.get('features.chainBarnard.enabled') ?? false; } - getSupernovaActivationEpoch(): number { - const epoch = this.configService.get('features.chainSupernova.activationEpoch'); + getChainBarnardActivationEpoch(): number { + const epoch = this.configService.get('features.chainBarnard.activationEpoch'); if (epoch == null) { return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; } @@ -1090,8 +1090,8 @@ export class ApiConfigService { return epoch; } - getSupernovaActivationTimestamp(): number { - const timestamp = this.configService.get('features.chainSupernova.activationTimestamp'); + geChainBarnardActivationTimestamp(): number { + const timestamp = this.configService.get('features.chainBarnard.activationTimestamp'); if (timestamp == null) { return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; } diff --git a/src/utils/timestamp.parse.pipe.ts b/src/utils/timestamp.parse.pipe.ts index 2a58acc00..4b5ca6754 100644 --- a/src/utils/timestamp.parse.pipe.ts +++ b/src/utils/timestamp.parse.pipe.ts @@ -21,11 +21,11 @@ export class TimestampParsePipe implements PipeTransform { } const normalizedInputMs = TimeUtils.isTimestampInSeconds(valNumber) ? valNumber * 1000 : valNumber; - if (!this.apiConfigService.isChainSupernovaEnabled()) { + if (!this.apiConfigService.isChainBarnardEnabled()) { return Math.floor(normalizedInputMs / 1000); } - const supernovaActivationTimestampMs = this.apiConfigService.getSupernovaActivationTimestamp() * 1000; + const supernovaActivationTimestampMs = this.apiConfigService.getChainBarnardActivationEpoch() * 1000; if (normalizedInputMs < supernovaActivationTimestampMs) { return Math.floor(normalizedInputMs / 1000); From 40511c202d0abd1b82c304574df50a8f91cc392a Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 10 Dec 2025 14:25:36 +0200 Subject: [PATCH 084/206] typo --- src/utils/timestamp.parse.pipe.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/timestamp.parse.pipe.ts b/src/utils/timestamp.parse.pipe.ts index 4b5ca6754..96d3301c1 100644 --- a/src/utils/timestamp.parse.pipe.ts +++ b/src/utils/timestamp.parse.pipe.ts @@ -25,9 +25,9 @@ export class TimestampParsePipe implements PipeTransform { return Math.floor(normalizedInputMs / 1000); } - const supernovaActivationTimestampMs = this.apiConfigService.getChainBarnardActivationEpoch() * 1000; + const barnardActivationTimestamp = this.apiConfigService.getChainBarnardActivationEpoch() * 1000; - if (normalizedInputMs < supernovaActivationTimestampMs) { + if (normalizedInputMs < barnardActivationTimestamp) { return Math.floor(normalizedInputMs / 1000); } else { return normalizedInputMs; From 4e92ce471dd573c2b1ca30b31a5f5053fdab0af8 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Wed, 10 Dec 2025 14:25:36 +0200 Subject: [PATCH 085/206] added readme --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index fbaff0a55..63f1dba62 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,9 @@ It depends on the following optional external systems: - events notifier rabbitmq: queue that pushes logs & events which are handled internally e.g. to trigger NFT media fetch - data: provides EGLD price information for transactions - xexchange: provides price information regarding various tokens listed on the xExchange +- nodes provider: fetch nodes data instead of self-computing (config: `features.nodesFetch`) +- staking providers fetcher: fetch staking providers data instead of self-computing (config: `features.providersFetch`) +- tokens provider: fetch tokens data instead of self-computing (config: `features.tokensFetch`) - ipfs: ipfs gateway for fetching mainly NFT metadata & media files - media: ipfs gateway which will be used as prefix for NFT media & metadata returned in the NFT details - media internal: caching layer for ipfs data to fetch from a centralized system such as S3 for performance reasons From 86c5b9142a1f432dcb78b673372745f001e94484 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 10 Dec 2025 14:33:29 +0200 Subject: [PATCH 086/206] typo --- src/common/api-config/api.config.service.ts | 2 +- src/utils/timestamp.parse.pipe.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index fc246155f..0ddad5092 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -1090,7 +1090,7 @@ export class ApiConfigService { return epoch; } - geChainBarnardActivationTimestamp(): number { + getChainBarnardActivationTimestamp(): number { const timestamp = this.configService.get('features.chainBarnard.activationTimestamp'); if (timestamp == null) { return TimeUtils.TIMESTAMP_IN_SECONDS_THRESHOLD + 1; diff --git a/src/utils/timestamp.parse.pipe.ts b/src/utils/timestamp.parse.pipe.ts index 96d3301c1..ff88184c9 100644 --- a/src/utils/timestamp.parse.pipe.ts +++ b/src/utils/timestamp.parse.pipe.ts @@ -25,7 +25,7 @@ export class TimestampParsePipe implements PipeTransform { return Math.floor(normalizedInputMs / 1000); } - const barnardActivationTimestamp = this.apiConfigService.getChainBarnardActivationEpoch() * 1000; + const barnardActivationTimestamp = this.apiConfigService.getChainBarnardActivationTimestamp() * 1000; if (normalizedInputMs < barnardActivationTimestamp) { return Math.floor(normalizedInputMs / 1000); From 9184c8931f946aec3779fa314ddbd4cba202d88d Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 11 Dec 2025 12:12:05 +0200 Subject: [PATCH 087/206] add lock on subscriptions --- src/crons/websocket/blocks.gateway.ts | 2 ++ src/crons/websocket/events.custom.gateway.ts | 3 ++- src/crons/websocket/events.gateway.ts | 2 ++ src/crons/websocket/network.gateway.ts | 2 ++ src/crons/websocket/pool.gateway.ts | 2 ++ src/crons/websocket/transaction.custom.gateway.ts | 2 ++ src/crons/websocket/transaction.gateway.ts | 3 ++- 7 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/crons/websocket/blocks.gateway.ts b/src/crons/websocket/blocks.gateway.ts index 68cc7fc02..1e0f34a76 100644 --- a/src/crons/websocket/blocks.gateway.ts +++ b/src/crons/websocket/blocks.gateway.ts @@ -9,6 +9,7 @@ import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; +import { Lock } from '@multiversx/sdk-nestjs-common'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -21,6 +22,7 @@ export class BlocksGateway { constructor(private readonly blockService: BlockService) { } + @Lock({ name: 'Subscribe Blocks Lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeBlocks') async handleSubscription( diff --git a/src/crons/websocket/events.custom.gateway.ts b/src/crons/websocket/events.custom.gateway.ts index eaa50bb0d..86db512ee 100644 --- a/src/crons/websocket/events.custom.gateway.ts +++ b/src/crons/websocket/events.custom.gateway.ts @@ -12,7 +12,7 @@ import { EventsService } from 'src/endpoints/events/events.service'; import { EventsCustomSubscribePayload } from 'src/endpoints/events/entities/events.custom.subscribe'; import { EventsFilter } from 'src/endpoints/events/entities/events.filter'; import { Events } from 'src/endpoints/events/entities/events'; - +import { Lock } from '@multiversx/sdk-nestjs-common'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -28,6 +28,7 @@ export class EventsCustomGateway { private readonly eventsService: EventsService, ) { } + @Lock({ name: 'Subscribe Custom Events Lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeCustomEvents') async handleCustomSubscription( diff --git a/src/crons/websocket/events.gateway.ts b/src/crons/websocket/events.gateway.ts index a7c43fb46..bcde656e4 100644 --- a/src/crons/websocket/events.gateway.ts +++ b/src/crons/websocket/events.gateway.ts @@ -10,6 +10,7 @@ import { EventsSubscribePayload } from '../../endpoints/events/entities/events.s import { QueryPagination } from 'src/common/entities/query.pagination'; import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; import { RoomKeyGenerator } from './room.key.generator'; +import { Lock } from '@multiversx/sdk-nestjs-common'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -22,6 +23,7 @@ export class EventsGateway { constructor(private readonly eventsService: EventsService) { } + @Lock({ name: 'Subscribe Events Lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeEvents') async handleSubscription( diff --git a/src/crons/websocket/network.gateway.ts b/src/crons/websocket/network.gateway.ts index 8c9ffa30d..d0e281167 100644 --- a/src/crons/websocket/network.gateway.ts +++ b/src/crons/websocket/network.gateway.ts @@ -5,6 +5,7 @@ import { UseFilters, UseGuards } from '@nestjs/common'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; +import { Lock } from '@multiversx/sdk-nestjs-common'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -16,6 +17,7 @@ export class NetworkGateway { constructor(private readonly networkService: NetworkService) { } + @Lock({ name: 'Subscribe Stats Lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeStats') async handleSubscription(client: Socket) { diff --git a/src/crons/websocket/pool.gateway.ts b/src/crons/websocket/pool.gateway.ts index 79df56589..0732579ae 100644 --- a/src/crons/websocket/pool.gateway.ts +++ b/src/crons/websocket/pool.gateway.ts @@ -11,6 +11,7 @@ import { QueryPagination } from 'src/common/entities/query.pagination'; import { PoolSubscribePayload } from '../../endpoints/pool/entities/pool.subscribe'; import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; import { RoomKeyGenerator } from './room.key.generator'; +import { Lock } from '@multiversx/sdk-nestjs-common'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -23,6 +24,7 @@ export class PoolGateway { constructor(private readonly poolService: PoolService) { } + @Lock({ name: 'Subscribe Pool Lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribePool') async handleSubscription( diff --git a/src/crons/websocket/transaction.custom.gateway.ts b/src/crons/websocket/transaction.custom.gateway.ts index f7a6f072b..94bc17786 100644 --- a/src/crons/websocket/transaction.custom.gateway.ts +++ b/src/crons/websocket/transaction.custom.gateway.ts @@ -11,6 +11,7 @@ import { TransactionCustomSubscribePayload } from 'src/endpoints/transactions/en import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; import { RoomKeyGenerator } from './room.key.generator'; import { Transaction } from 'src/endpoints/transactions/entities/transaction'; +import { Lock } from '@multiversx/sdk-nestjs-common'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -24,6 +25,7 @@ export class TransactionsCustomGateway { private readonly transactionService: TransactionService, ) { } + @Lock({ name: 'Subscribe Custom Transactions Lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeCustomTransactions') async handleCustomSubscription( diff --git a/src/crons/websocket/transaction.gateway.ts b/src/crons/websocket/transaction.gateway.ts index ae22c3370..eecbd57cc 100644 --- a/src/crons/websocket/transaction.gateway.ts +++ b/src/crons/websocket/transaction.gateway.ts @@ -11,7 +11,7 @@ import { UseFilters, UseGuards } from '@nestjs/common'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; import { RoomKeyGenerator } from './room.key.generator'; - +import { Lock } from '@multiversx/sdk-nestjs-common'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) export class TransactionsGateway { @@ -23,6 +23,7 @@ export class TransactionsGateway { constructor(private readonly transactionService: TransactionService) { } + @Lock({ name: 'Subscribe Transactions Lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeTransactions') async handleSubscription( From edf38a930c320ff55577a7b3c4a40c1eae2d94ac Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 11 Dec 2025 13:50:53 +0200 Subject: [PATCH 088/206] use same key for lock --- src/crons/websocket/blocks.gateway.ts | 2 +- src/crons/websocket/events.custom.gateway.ts | 2 +- src/crons/websocket/events.gateway.ts | 2 +- src/crons/websocket/network.gateway.ts | 2 +- src/crons/websocket/pool.gateway.ts | 2 +- src/crons/websocket/transaction.custom.gateway.ts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/crons/websocket/blocks.gateway.ts b/src/crons/websocket/blocks.gateway.ts index 1e0f34a76..21cb884cb 100644 --- a/src/crons/websocket/blocks.gateway.ts +++ b/src/crons/websocket/blocks.gateway.ts @@ -22,7 +22,7 @@ export class BlocksGateway { constructor(private readonly blockService: BlockService) { } - @Lock({ name: 'Subscribe Blocks Lock', verbose: true }) + @Lock({ name: 'Subscription lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeBlocks') async handleSubscription( diff --git a/src/crons/websocket/events.custom.gateway.ts b/src/crons/websocket/events.custom.gateway.ts index 86db512ee..56fe7d841 100644 --- a/src/crons/websocket/events.custom.gateway.ts +++ b/src/crons/websocket/events.custom.gateway.ts @@ -28,7 +28,7 @@ export class EventsCustomGateway { private readonly eventsService: EventsService, ) { } - @Lock({ name: 'Subscribe Custom Events Lock', verbose: true }) + @Lock({ name: 'Subscription lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeCustomEvents') async handleCustomSubscription( diff --git a/src/crons/websocket/events.gateway.ts b/src/crons/websocket/events.gateway.ts index bcde656e4..1f25fc98b 100644 --- a/src/crons/websocket/events.gateway.ts +++ b/src/crons/websocket/events.gateway.ts @@ -23,7 +23,7 @@ export class EventsGateway { constructor(private readonly eventsService: EventsService) { } - @Lock({ name: 'Subscribe Events Lock', verbose: true }) + @Lock({ name: 'Subscription lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeEvents') async handleSubscription( diff --git a/src/crons/websocket/network.gateway.ts b/src/crons/websocket/network.gateway.ts index d0e281167..21fdc486a 100644 --- a/src/crons/websocket/network.gateway.ts +++ b/src/crons/websocket/network.gateway.ts @@ -17,7 +17,7 @@ export class NetworkGateway { constructor(private readonly networkService: NetworkService) { } - @Lock({ name: 'Subscribe Stats Lock', verbose: true }) + @Lock({ name: 'Subscription lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeStats') async handleSubscription(client: Socket) { diff --git a/src/crons/websocket/pool.gateway.ts b/src/crons/websocket/pool.gateway.ts index 0732579ae..3fb91e879 100644 --- a/src/crons/websocket/pool.gateway.ts +++ b/src/crons/websocket/pool.gateway.ts @@ -24,7 +24,7 @@ export class PoolGateway { constructor(private readonly poolService: PoolService) { } - @Lock({ name: 'Subscribe Pool Lock', verbose: true }) + @Lock({ name: 'Subscription lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribePool') async handleSubscription( diff --git a/src/crons/websocket/transaction.custom.gateway.ts b/src/crons/websocket/transaction.custom.gateway.ts index 94bc17786..83109ad64 100644 --- a/src/crons/websocket/transaction.custom.gateway.ts +++ b/src/crons/websocket/transaction.custom.gateway.ts @@ -25,7 +25,7 @@ export class TransactionsCustomGateway { private readonly transactionService: TransactionService, ) { } - @Lock({ name: 'Subscribe Custom Transactions Lock', verbose: true }) + @Lock({ name: 'Subscription lock', verbose: true }) @UseGuards(WsSubscriptionLimiterGuard) @SubscribeMessage('subscribeCustomTransactions') async handleCustomSubscription( From f15eec0211f0b2b60a303095733238506d0be847 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 11 Dec 2025 14:49:26 +0200 Subject: [PATCH 089/206] fix --- src/crons/websocket/blocks.gateway.ts | 8 +-- src/crons/websocket/events.custom.gateway.ts | 9 +-- src/crons/websocket/events.gateway.ts | 8 +-- src/crons/websocket/network.gateway.ts | 8 +-- src/crons/websocket/pool.gateway.ts | 9 +-- .../websocket/transaction.custom.gateway.ts | 8 +-- src/crons/websocket/transaction.gateway.ts | 8 +-- src/utils/locking.guard.interceptor.ts | 70 +++++++++++++++++++ src/utils/ws.subscription.limiter.ts | 28 -------- 9 files changed, 91 insertions(+), 65 deletions(-) create mode 100644 src/utils/locking.guard.interceptor.ts delete mode 100644 src/utils/ws.subscription.limiter.ts diff --git a/src/crons/websocket/blocks.gateway.ts b/src/crons/websocket/blocks.gateway.ts index 21cb884cb..a7df06b7d 100644 --- a/src/crons/websocket/blocks.gateway.ts +++ b/src/crons/websocket/blocks.gateway.ts @@ -4,12 +4,11 @@ import { BlockService } from '../../endpoints/blocks/block.service'; import { BlockFilter } from '../../endpoints/blocks/entities/block.filter'; import { QueryPagination } from 'src/common/entities/query.pagination'; import { BlockSubscribePayload } from '../../endpoints/blocks/entities/block.subscribe'; -import { UseFilters, UseGuards } from '@nestjs/common'; +import { UseFilters, UseInterceptors } from '@nestjs/common'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; -import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; -import { Lock } from '@multiversx/sdk-nestjs-common'; +import { LockingGuardInterceptor } from 'src/utils/locking.guard.interceptor'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -22,8 +21,7 @@ export class BlocksGateway { constructor(private readonly blockService: BlockService) { } - @Lock({ name: 'Subscription lock', verbose: true }) - @UseGuards(WsSubscriptionLimiterGuard) + @UseInterceptors(LockingGuardInterceptor) @SubscribeMessage('subscribeBlocks') async handleSubscription( @ConnectedSocket() client: Socket, diff --git a/src/crons/websocket/events.custom.gateway.ts b/src/crons/websocket/events.custom.gateway.ts index 56fe7d841..cf1272385 100644 --- a/src/crons/websocket/events.custom.gateway.ts +++ b/src/crons/websocket/events.custom.gateway.ts @@ -1,18 +1,16 @@ import { WebSocketGateway, WebSocketServer, SubscribeMessage, ConnectedSocket, MessageBody } from '@nestjs/websockets'; import { Server, Socket } from 'socket.io'; -import { UseFilters, UseGuards } from '@nestjs/common'; +import { UseFilters, UseInterceptors } from '@nestjs/common'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; - import { QueryPagination } from 'src/common/entities/query.pagination'; import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; -import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; import { RoomKeyGenerator } from './room.key.generator'; import { EventsService } from 'src/endpoints/events/events.service'; import { EventsCustomSubscribePayload } from 'src/endpoints/events/entities/events.custom.subscribe'; import { EventsFilter } from 'src/endpoints/events/entities/events.filter'; import { Events } from 'src/endpoints/events/entities/events'; -import { Lock } from '@multiversx/sdk-nestjs-common'; +import { LockingGuardInterceptor } from 'src/utils/locking.guard.interceptor'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -28,8 +26,7 @@ export class EventsCustomGateway { private readonly eventsService: EventsService, ) { } - @Lock({ name: 'Subscription lock', verbose: true }) - @UseGuards(WsSubscriptionLimiterGuard) + @UseInterceptors(LockingGuardInterceptor) @SubscribeMessage('subscribeCustomEvents') async handleCustomSubscription( @ConnectedSocket() client: Socket, diff --git a/src/crons/websocket/events.gateway.ts b/src/crons/websocket/events.gateway.ts index 1f25fc98b..bb7e8b2d3 100644 --- a/src/crons/websocket/events.gateway.ts +++ b/src/crons/websocket/events.gateway.ts @@ -1,6 +1,6 @@ import { WebSocketGateway, WebSocketServer, SubscribeMessage, MessageBody, ConnectedSocket } from '@nestjs/websockets'; import { Server, Socket } from 'socket.io'; -import { UseFilters, UseGuards } from '@nestjs/common'; +import { UseFilters, UseInterceptors } from '@nestjs/common'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; @@ -8,9 +8,8 @@ import { EventsService } from '../../endpoints/events/events.service'; import { EventsFilter } from '../../endpoints/events/entities/events.filter'; import { EventsSubscribePayload } from '../../endpoints/events/entities/events.subscribe'; import { QueryPagination } from 'src/common/entities/query.pagination'; -import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; import { RoomKeyGenerator } from './room.key.generator'; -import { Lock } from '@multiversx/sdk-nestjs-common'; +import { LockingGuardInterceptor } from 'src/utils/locking.guard.interceptor'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -23,8 +22,7 @@ export class EventsGateway { constructor(private readonly eventsService: EventsService) { } - @Lock({ name: 'Subscription lock', verbose: true }) - @UseGuards(WsSubscriptionLimiterGuard) + @UseInterceptors(LockingGuardInterceptor) @SubscribeMessage('subscribeEvents') async handleSubscription( @ConnectedSocket() client: Socket, diff --git a/src/crons/websocket/network.gateway.ts b/src/crons/websocket/network.gateway.ts index 21fdc486a..02945b335 100644 --- a/src/crons/websocket/network.gateway.ts +++ b/src/crons/websocket/network.gateway.ts @@ -1,11 +1,10 @@ import { WebSocketGateway, WebSocketServer, SubscribeMessage } from '@nestjs/websockets'; import { Server, Socket } from 'socket.io'; import { NetworkService } from '../../endpoints/network/network.service'; -import { UseFilters, UseGuards } from '@nestjs/common'; +import { UseFilters, UseInterceptors } from '@nestjs/common'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; -import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; -import { Lock } from '@multiversx/sdk-nestjs-common'; +import { LockingGuardInterceptor } from 'src/utils/locking.guard.interceptor'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -17,8 +16,7 @@ export class NetworkGateway { constructor(private readonly networkService: NetworkService) { } - @Lock({ name: 'Subscription lock', verbose: true }) - @UseGuards(WsSubscriptionLimiterGuard) + @UseInterceptors(LockingGuardInterceptor) @SubscribeMessage('subscribeStats') async handleSubscription(client: Socket) { if (!client.rooms.has('statsRoom')) { diff --git a/src/crons/websocket/pool.gateway.ts b/src/crons/websocket/pool.gateway.ts index 3fb91e879..722466a9e 100644 --- a/src/crons/websocket/pool.gateway.ts +++ b/src/crons/websocket/pool.gateway.ts @@ -1,17 +1,15 @@ import { WebSocketGateway, WebSocketServer, SubscribeMessage, MessageBody, ConnectedSocket } from '@nestjs/websockets'; import { Server, Socket } from 'socket.io'; -import { UseFilters, UseGuards } from '@nestjs/common'; +import { UseFilters, UseInterceptors } from '@nestjs/common'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; - import { PoolService } from '../../endpoints/pool/pool.service'; import { PoolFilter } from '../../endpoints/pool/entities/pool.filter'; import { QueryPagination } from 'src/common/entities/query.pagination'; import { PoolSubscribePayload } from '../../endpoints/pool/entities/pool.subscribe'; -import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; import { RoomKeyGenerator } from './room.key.generator'; -import { Lock } from '@multiversx/sdk-nestjs-common'; +import { LockingGuardInterceptor } from 'src/utils/locking.guard.interceptor'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -24,8 +22,7 @@ export class PoolGateway { constructor(private readonly poolService: PoolService) { } - @Lock({ name: 'Subscription lock', verbose: true }) - @UseGuards(WsSubscriptionLimiterGuard) + @UseInterceptors(LockingGuardInterceptor) @SubscribeMessage('subscribePool') async handleSubscription( @ConnectedSocket() client: Socket, diff --git a/src/crons/websocket/transaction.custom.gateway.ts b/src/crons/websocket/transaction.custom.gateway.ts index 83109ad64..5971a4185 100644 --- a/src/crons/websocket/transaction.custom.gateway.ts +++ b/src/crons/websocket/transaction.custom.gateway.ts @@ -5,13 +5,12 @@ import { TransactionFilter } from '../../endpoints/transactions/entities/transac import { QueryPagination } from 'src/common/entities/query.pagination'; import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; -import { UseFilters, UseGuards } from '@nestjs/common'; +import { UseFilters, UseInterceptors } from '@nestjs/common'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; import { TransactionCustomSubscribePayload } from 'src/endpoints/transactions/entities/dtos/transaction.custom.subscribe'; -import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; import { RoomKeyGenerator } from './room.key.generator'; import { Transaction } from 'src/endpoints/transactions/entities/transaction'; -import { Lock } from '@multiversx/sdk-nestjs-common'; +import { LockingGuardInterceptor } from 'src/utils/locking.guard.interceptor'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -25,8 +24,7 @@ export class TransactionsCustomGateway { private readonly transactionService: TransactionService, ) { } - @Lock({ name: 'Subscription lock', verbose: true }) - @UseGuards(WsSubscriptionLimiterGuard) + @UseInterceptors(LockingGuardInterceptor) @SubscribeMessage('subscribeCustomTransactions') async handleCustomSubscription( @ConnectedSocket() client: Socket, diff --git a/src/crons/websocket/transaction.gateway.ts b/src/crons/websocket/transaction.gateway.ts index eecbd57cc..016e6db86 100644 --- a/src/crons/websocket/transaction.gateway.ts +++ b/src/crons/websocket/transaction.gateway.ts @@ -7,11 +7,10 @@ import { TransactionQueryOptions } from '../../endpoints/transactions/entities/t import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; import { TransactionSubscribePayload } from '../../endpoints/transactions/entities/dtos/transaction.subscribe'; import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; -import { UseFilters, UseGuards } from '@nestjs/common'; +import { UseFilters, UseInterceptors } from '@nestjs/common'; import { OriginLogger } from '@multiversx/sdk-nestjs-common'; -import { WsSubscriptionLimiterGuard } from 'src/utils/ws.subscription.limiter'; import { RoomKeyGenerator } from './room.key.generator'; -import { Lock } from '@multiversx/sdk-nestjs-common'; +import { LockingGuardInterceptor } from 'src/utils/locking.guard.interceptor'; @UseFilters(WebsocketExceptionsFilter) @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) export class TransactionsGateway { @@ -23,8 +22,7 @@ export class TransactionsGateway { constructor(private readonly transactionService: TransactionService) { } - @Lock({ name: 'Subscribe Transactions Lock', verbose: true }) - @UseGuards(WsSubscriptionLimiterGuard) + @UseInterceptors(LockingGuardInterceptor) @SubscribeMessage('subscribeTransactions') async handleSubscription( @ConnectedSocket() client: Socket, diff --git a/src/utils/locking.guard.interceptor.ts b/src/utils/locking.guard.interceptor.ts new file mode 100644 index 000000000..cec62ba09 --- /dev/null +++ b/src/utils/locking.guard.interceptor.ts @@ -0,0 +1,70 @@ +import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common'; +import { Observable, from, throwError } from 'rxjs'; +import { switchMap, finalize } from 'rxjs/operators'; +import { Mutex } from 'async-mutex'; +import { WsException } from '@nestjs/websockets'; +import { ApiConfigService } from 'src/common/api-config/api.config.service'; +import { Socket } from 'socket.io'; + +@Injectable() +export class LockingGuardInterceptor implements NestInterceptor { + private readonly locks = new Map(); + + constructor( + private readonly apiConfigService: ApiConfigService + ) { } + + intercept(context: ExecutionContext, next: CallHandler): Observable { + const client: Socket = context.switchToWs().getClient(); + const clientId = client?.id; + + if (!clientId) { + return next.handle(); + } + + let tempMutex = this.locks.get(clientId); + + if (!tempMutex) { + tempMutex = new Mutex(); + this.locks.set(clientId, tempMutex); + } + + const mutex = tempMutex; + + return from(mutex.acquire()).pipe( + switchMap((release) => { + try { + const totalRoomsGlobal = client.nsp.server.sockets.adapter.rooms.size; + const totalClientRooms = client.rooms.size; + const maxGlobal = this.apiConfigService.getWebsocketMaxSubscriptionsPerInstance(); + const maxClient = this.apiConfigService.getWebsocketMaxSubscriptionsPerClient(); + + if (totalRoomsGlobal >= maxGlobal) { + throw new WsException(`Max global subscriptions (${maxGlobal}) reached!`); + } + + if (totalClientRooms >= maxClient + 1) { + throw new WsException(`Max client subscriptions (${maxClient}) reached!`); + } + + return next.handle().pipe( + finalize(() => { + release(); + if (!mutex.isLocked()) { + this.locks.delete(clientId); + } + }) + ); + + } catch (err) { + release(); + + if (!mutex.isLocked()) { + this.locks.delete(clientId); + } + return throwError(() => err); + } + }), + ); + } +} \ No newline at end of file diff --git a/src/utils/ws.subscription.limiter.ts b/src/utils/ws.subscription.limiter.ts deleted file mode 100644 index 0ce24aeff..000000000 --- a/src/utils/ws.subscription.limiter.ts +++ /dev/null @@ -1,28 +0,0 @@ - -import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; -import { Socket } from 'socket.io'; -import { WsException } from '@nestjs/websockets'; -import { ApiConfigService } from 'src/common/api-config/api.config.service'; - -@Injectable() -export class WsSubscriptionLimiterGuard implements CanActivate { - constructor( - private readonly apiConfigService: ApiConfigService, - ) { } - - canActivate(context: ExecutionContext): boolean { - const client: Socket = context.switchToWs().getClient(); - const totalRoomsGlobal = client.nsp.server.sockets.adapter.rooms.size; - const totalClientRooms = client.rooms.size; - - if (totalRoomsGlobal >= this.apiConfigService.getWebsocketMaxSubscriptionsPerInstance()) { - throw new WsException(`Maximum number of ${this.apiConfigService.getWebsocketMaxSubscriptionsPerInstance()} global subscriptions accepted by server reached!`); - } - - if (totalClientRooms >= this.apiConfigService.getWebsocketMaxSubscriptionsPerClient() + 1) { // 1 default room with client id - throw new WsException(`Maximum number of ${this.apiConfigService.getWebsocketMaxSubscriptionsPerClient()} subscriptions per client reached!`); - } - - return true; - } -} From 848e0db8c6c222f0baaf8da463d4a8f18bc8a8c1 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 11 Dec 2025 14:50:23 +0200 Subject: [PATCH 090/206] add async mutex --- package-lock.json | 10 ++++++++++ package.json | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index f964e0d74..74dba9da3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,6 +42,7 @@ "anchorme": "^3.0.8", "apollo-server-core": "^3.13.0", "apollo-server-express": "3.13.0", + "async-mutex": "^0.5.0", "bignumber.js": "^9.0.2", "class-transformer": "^0.5.1", "class-validator": "^0.14.2", @@ -7503,6 +7504,15 @@ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" }, + "node_modules/async-mutex": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/async-retry": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", diff --git a/package.json b/package.json index dbbad71f9..dbd1c1ecd 100644 --- a/package.json +++ b/package.json @@ -117,6 +117,7 @@ "anchorme": "^3.0.8", "apollo-server-core": "^3.13.0", "apollo-server-express": "3.13.0", + "async-mutex": "^0.5.0", "bignumber.js": "^9.0.2", "class-transformer": "^0.5.1", "class-validator": "^0.14.2", @@ -220,4 +221,4 @@ "node_modules" ] } -} +} \ No newline at end of file From e3253270ef8c659ebac4fbfc6f555b14b7fbd713 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 11 Dec 2025 15:08:10 +0200 Subject: [PATCH 091/206] lint --- src/utils/locking.guard.interceptor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/locking.guard.interceptor.ts b/src/utils/locking.guard.interceptor.ts index cec62ba09..75e980504 100644 --- a/src/utils/locking.guard.interceptor.ts +++ b/src/utils/locking.guard.interceptor.ts @@ -67,4 +67,4 @@ export class LockingGuardInterceptor implements NestInterceptor { }), ); } -} \ No newline at end of file +} From 02163ad41ee7dc3a03bb55199ccb36d7b8c31924 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 11 Dec 2025 15:37:35 +0200 Subject: [PATCH 092/206] return success status on stats --- src/crons/websocket/network.gateway.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/crons/websocket/network.gateway.ts b/src/crons/websocket/network.gateway.ts index 02945b335..fdf1453de 100644 --- a/src/crons/websocket/network.gateway.ts +++ b/src/crons/websocket/network.gateway.ts @@ -22,6 +22,8 @@ export class NetworkGateway { if (!client.rooms.has('statsRoom')) { await client.join('statsRoom'); } + + return { status: 'success' }; } @SubscribeMessage('unsubscribeStats') From 29eda0418bccef70cbbbfd4a832b12a3545d2a70 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 11 Dec 2025 15:39:20 +0200 Subject: [PATCH 093/206] return unsubscribed status on stats --- src/crons/websocket/network.gateway.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/crons/websocket/network.gateway.ts b/src/crons/websocket/network.gateway.ts index fdf1453de..183520e7d 100644 --- a/src/crons/websocket/network.gateway.ts +++ b/src/crons/websocket/network.gateway.ts @@ -31,6 +31,8 @@ export class NetworkGateway { if (client.rooms.has('statsRoom')) { await client.leave('statsRoom'); } + + return { status: 'unsubscribed' }; } async pushStats() { From 209debe4c48d1656bafb7ed7c6cdd71b43e0e5c0 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 11 Dec 2025 15:44:56 +0200 Subject: [PATCH 094/206] config update --- config/config.devnet.yaml | 2 +- config/config.e2e-mocked.mainnet.yaml | 2 +- config/config.e2e.mainnet.yaml | 2 +- config/config.mainnet.yaml | 2 +- config/config.testnet.yaml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index 0c4df4a9e..ca4881403 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -24,7 +24,7 @@ features: enabled: false port: 6002 maxSubscriptionsPerInstance: 10000 - maxSubscriptionsPerClient: 5 + maxSubscriptionsPerClient: 10 eventsNotifier: enabled: false port: 5674 diff --git a/config/config.e2e-mocked.mainnet.yaml b/config/config.e2e-mocked.mainnet.yaml index d2ed9aca6..a0c52d290 100644 --- a/config/config.e2e-mocked.mainnet.yaml +++ b/config/config.e2e-mocked.mainnet.yaml @@ -9,7 +9,7 @@ features: enabled: false port: 6002 maxSubscriptionsPerInstance: 10000 - maxSubscriptionsPerClient: 5 + maxSubscriptionsPerClient: 10 dataApi: enabled: false serviceUrl: 'https://data-api.multiversx.com' diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index 9cb9ba807..187ea0809 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -24,7 +24,7 @@ features: enabled: true port: 6002 maxSubscriptionsPerInstance: 10000 - maxSubscriptionsPerClient: 5 + maxSubscriptionsPerClient: 10 eventsNotifier: enabled: false port: 5674 diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index a7f1ebf79..f7401a4f3 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -24,7 +24,7 @@ features: enabled: false port: 6002 maxSubscriptionsPerInstance: 10000 - maxSubscriptionsPerClient: 5 + maxSubscriptionsPerClient: 10 eventsNotifier: enabled: false port: 5674 diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index 98df5515b..06f04705c 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -24,7 +24,7 @@ features: enabled: false port: 6002 maxSubscriptionsPerInstance: 10000 - maxSubscriptionsPerClient: 5 + maxSubscriptionsPerClient: 10 eventsNotifier: enabled: false port: 5674 From 999b183f21662009aa0fabd808d02886b1ae131d Mon Sep 17 00:00:00 2001 From: cfaur09 Date: Thu, 11 Dec 2025 17:23:10 +0200 Subject: [PATCH 095/206] collection service improvments --- .../collections/collection.service.ts | 96 +++++++++++++++---- src/utils/cache.info.ts | 43 ++++++++- 2 files changed, 118 insertions(+), 21 deletions(-) diff --git a/src/endpoints/collections/collection.service.ts b/src/endpoints/collections/collection.service.ts index ca0b1ce68..3b946ca4b 100644 --- a/src/endpoints/collections/collection.service.ts +++ b/src/endpoints/collections/collection.service.ts @@ -51,8 +51,40 @@ export class CollectionService { } async getNftCollections(pagination: QueryPagination, filter: CollectionFilter): Promise { - const tokenCollections = await this.indexerService.getNftCollections(pagination, filter); - return await this.processNftCollections(tokenCollections); + const executeGetCollections = async (): Promise => { + const tokenCollections = await this.indexerService.getNftCollections(pagination, filter); + return await this.processNftCollections(tokenCollections); + }; + + if (this.isCacheableCollectionFilter(filter)) { + return await this.cachingService.getOrSet( + CacheInfo.Collections(pagination).key, + executeGetCollections, + CacheInfo.Collections(pagination).ttl, + ); + } + + return await executeGetCollections(); + } + + private isCacheableCollectionFilter(filter: CollectionFilter): boolean { + return !filter.collection && + !(filter.identifiers && filter.identifiers.length > 0) && + !(filter.type && filter.type.length > 0) && + !(filter.subType && filter.subType.length > 0) && + !filter.search && + !filter.owner && + filter.before === undefined && + filter.after === undefined && + filter.canCreate === undefined && + filter.canBurn === undefined && + filter.canAddQuantity === undefined && + filter.canUpdateAttributes === undefined && + filter.canAddUri === undefined && + filter.canTransferRole === undefined && + filter.excludeMetaESDT === undefined && + filter.sort === undefined && + filter.order === undefined; } async getNftCollectionsByIds(identifiers: Array): Promise { @@ -206,6 +238,14 @@ export class CollectionService { } async getNftCollectionCount(filter: CollectionFilter): Promise { + if (this.isCacheableCollectionFilter(filter)) { + return await this.cachingService.getOrSet( + CacheInfo.CollectionsCount.key, + async () => await this.indexerService.getNftCollectionCount(filter), + CacheInfo.CollectionsCount.ttl, + ); + } + return await this.indexerService.getNftCollectionCount(filter); } @@ -224,7 +264,11 @@ export class CollectionService { return undefined; } - return await this.assetsService.getCollectionRanks(identifier); + return await this.cachingService.getOrSet( + CacheInfo.CollectionRanksForIdentifier(identifier).key, + async () => await this.assetsService.getCollectionRanks(identifier), + CacheInfo.CollectionRanksForIdentifier(identifier).ttl, + ); } async getNftCollection(identifier: string): Promise { @@ -353,9 +397,15 @@ export class CollectionService { } async getCollectionCountForAddress(address: string, filter: CollectionFilter): Promise { - const collections = await this.getCollectionsForAddress(address, filter, new QueryPagination({ from: 0, size: 10000 })); - - return collections.length; + const filterKey = JSON.stringify(filter ?? {}); + return await this.cachingService.getOrSet( + CacheInfo.CollectionCountForAddress(address, filterKey).key, + async () => { + const collections = await this.getCollectionsForAddress(address, filter, new QueryPagination({ from: 0, size: 10000 })); + return collections.length; + }, + CacheInfo.CollectionCountForAddress(address, filterKey).ttl, + ); } async getCollectionForAddress(address: string, identifier: string): Promise { @@ -376,16 +426,25 @@ export class CollectionService { async getCollectionsForAddress(address: string, filter: CollectionFilter, pagination: QueryPagination): Promise { const collectionsRaw = await this.indexerService.getCollectionsForAddress(address, filter, pagination); - const collections = await this.getNftCollections( - new QueryPagination({ from: 0, size: collectionsRaw.length }), - new CollectionFilter({ identifiers: collectionsRaw.map((x: any) => x.collection) }) - ); - const accountCollections = collections.map(collection => ApiUtils.mergeObjects(new NftCollectionAccount(), collection)); + if (collectionsRaw.length === 0) { + return []; + } - for (const collection of accountCollections) { - const item = collectionsRaw.find(x => x.collection === collection.collection); - if (item) { - collection.count = item.count; + const identifiers = collectionsRaw.map((x: any) => x.collection); + const collections = await this.getNftCollectionsByIds(identifiers); + + const collectionMap = new Map(); + for (const collection of collections) { + collectionMap.set(collection.collection, collection); + } + + const accountCollections: NftCollectionAccount[] = []; + for (const raw of collectionsRaw) { + const collection = collectionMap.get(raw.collection); + if (collection) { + const accountCollection = ApiUtils.mergeObjects(new NftCollectionAccount(), collection); + accountCollection.count = raw.count; + accountCollections.push(accountCollection); } } @@ -393,7 +452,12 @@ export class CollectionService { } async getCollectionCountForAddressWithRoles(address: string, filter: CollectionFilter): Promise { - return await this.esdtAddressService.getCollectionCountForAddressFromElastic(address, filter); + const filterKey = JSON.stringify(filter ?? {}); + return await this.cachingService.getOrSet( + CacheInfo.CollectionRolesCountForAddress(address, filterKey).key, + async () => await this.esdtAddressService.getCollectionCountForAddressFromElastic(address, filter), + CacheInfo.CollectionRolesCountForAddress(address, filterKey).ttl, + ); } private async getCollectionLogo(identifier: string): Promise { diff --git a/src/utils/cache.info.ts b/src/utils/cache.info.ts index d9bae11c0..310661ada 100644 --- a/src/utils/cache.info.ts +++ b/src/utils/cache.info.ts @@ -198,11 +198,6 @@ export class CacheInfo { ttl: Constants.oneSecond() * 6, }; - static CollectionRanks: CacheInfo = { - key: 'collectionRanks', - ttl: Constants.oneDay(), - }; - static AccountAssets: CacheInfo = { key: 'accountLabels', ttl: Constants.oneDay(), @@ -265,6 +260,44 @@ export class CacheInfo { }; } + static CollectionRanks: CacheInfo = { + key: 'collectionRanks', + ttl: Constants.oneDay(), + }; + + static CollectionRanksForIdentifier(identifier: string): CacheInfo { + return { + key: `collectionRanks:${identifier}`, + ttl: Constants.oneMinute() * 10, + }; + } + + static CollectionCountForAddress(address: string, filterKey: string): CacheInfo { + return { + key: `collectionCount:${address}:${filterKey}`, + ttl: Constants.oneMinute(), + }; + } + + static CollectionRolesCountForAddress(address: string, filterKey: string): CacheInfo { + return { + key: `collectionRolesCount:${address}:${filterKey}`, + ttl: Constants.oneMinute(), + }; + } + + static Collections(pagination: QueryPagination): CacheInfo { + return { + key: `collections:${pagination.from}:${pagination.size}`, + ttl: Constants.oneSecond() * 6, + }; + } + + static CollectionsCount: CacheInfo = { + key: 'collectionsCount', + ttl: Constants.oneSecond() * 6, + }; + static EsdtAddressesRoles(identifier: string): CacheInfo { return { key: `esdt:roles:${identifier}`, From 0b417360a8d72ad994c634289dc560a0dc2520f1 Mon Sep 17 00:00:00 2001 From: cfaur09 Date: Thu, 11 Dec 2025 17:35:27 +0200 Subject: [PATCH 096/206] fix spec --- src/test/unit/services/collections.spec.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/test/unit/services/collections.spec.ts b/src/test/unit/services/collections.spec.ts index 30c7243fb..163a5441c 100644 --- a/src/test/unit/services/collections.spec.ts +++ b/src/test/unit/services/collections.spec.ts @@ -107,7 +107,9 @@ describe('CollectionService', () => { provide: CacheService, useValue: { get: jest.fn(), - getOrSet: jest.fn(), + getOrSet: jest.fn().mockImplementation(async (_key: string, getter: () => Promise, _ttl: number) => { + return await getter(); + }), batchGetAll: jest.fn(), batchApplyAll: jest.fn(), }, @@ -252,6 +254,7 @@ describe('CollectionService', () => { jest.spyOn(indexerService, 'getCollection').mockResolvedValue(indexerCollectionMock); jest.spyOn(service, 'applyPropertiesToCollections').mockResolvedValue([propertiesToCollectionsMock]); + jest.spyOn(service, 'getNftCollectionRolesFromGateway').mockResolvedValue([]); const result = await service.getNftCollection(identifier); @@ -304,9 +307,10 @@ describe('CollectionService', () => { }); it('should process the collection details fully', async () => { - const identifier = 'XDAY23TEAM'; + const identifier = 'XDAY23TEAM-f7a346'; jest.spyOn(indexerService, 'getCollection').mockResolvedValue(indexerCollectionMock); jest.spyOn(service, 'applyPropertiesToCollections').mockResolvedValue([propertiesToCollectionsMock]); + jest.spyOn(service, 'getNftCollectionRolesFromGateway').mockResolvedValue([]); const result = await service.getNftCollection(identifier); expect(result).toBeInstanceOf(NftCollectionDetailed); From 9e220abe9a928b861bececc2b145dad7fe0545ef Mon Sep 17 00:00:00 2001 From: cfaur09 Date: Thu, 11 Dec 2025 17:44:44 +0200 Subject: [PATCH 097/206] fixes --- .../collections/collection.service.ts | 97 ++++++++++++------- src/endpoints/nfts/nft.service.ts | 9 +- src/utils/cache.info.ts | 15 ++- 3 files changed, 79 insertions(+), 42 deletions(-) diff --git a/src/endpoints/collections/collection.service.ts b/src/endpoints/collections/collection.service.ts index 3b946ca4b..369831f62 100644 --- a/src/endpoints/collections/collection.service.ts +++ b/src/endpoints/collections/collection.service.ts @@ -397,15 +397,20 @@ export class CollectionService { } async getCollectionCountForAddress(address: string, filter: CollectionFilter): Promise { - const filterKey = JSON.stringify(filter ?? {}); - return await this.cachingService.getOrSet( - CacheInfo.CollectionCountForAddress(address, filterKey).key, - async () => { - const collections = await this.getCollectionsForAddress(address, filter, new QueryPagination({ from: 0, size: 10000 })); - return collections.length; - }, - CacheInfo.CollectionCountForAddress(address, filterKey).ttl, - ); + const executeCount = async () => { + const collections = await this.getCollectionsForAddress(address, filter, new QueryPagination({ from: 0, size: 10000 })); + return collections.length; + }; + + if (this.isDefaultAddressCollectionFilter(filter)) { + return await this.cachingService.getOrSet( + CacheInfo.CollectionCountForAddress(address).key, + executeCount, + CacheInfo.CollectionCountForAddress(address).ttl, + ); + } + + return await executeCount(); } async getCollectionForAddress(address: string, identifier: string): Promise { @@ -424,40 +429,66 @@ export class CollectionService { } async getCollectionsForAddress(address: string, filter: CollectionFilter, pagination: QueryPagination): Promise { - const collectionsRaw = await this.indexerService.getCollectionsForAddress(address, filter, pagination); + const executeGetCollections = async (): Promise => { + const collectionsRaw = await this.indexerService.getCollectionsForAddress(address, filter, pagination); - if (collectionsRaw.length === 0) { - return []; - } + if (collectionsRaw.length === 0) { + return []; + } - const identifiers = collectionsRaw.map((x: any) => x.collection); - const collections = await this.getNftCollectionsByIds(identifiers); + const identifiers = collectionsRaw.map((x: any) => x.collection); + const collections = await this.getNftCollectionsByIds(identifiers); - const collectionMap = new Map(); - for (const collection of collections) { - collectionMap.set(collection.collection, collection); - } + const collectionMap = new Map(); + for (const collection of collections) { + collectionMap.set(collection.collection, collection); + } - const accountCollections: NftCollectionAccount[] = []; - for (const raw of collectionsRaw) { - const collection = collectionMap.get(raw.collection); - if (collection) { - const accountCollection = ApiUtils.mergeObjects(new NftCollectionAccount(), collection); - accountCollection.count = raw.count; - accountCollections.push(accountCollection); + const accountCollections: NftCollectionAccount[] = []; + for (const raw of collectionsRaw) { + const collection = collectionMap.get(raw.collection); + if (collection) { + const accountCollection = ApiUtils.mergeObjects(new NftCollectionAccount(), collection); + accountCollection.count = raw.count; + accountCollections.push(accountCollection); + } } + + return accountCollections; + }; + + if (this.isDefaultAddressCollectionFilter(filter)) { + const cacheInfo = CacheInfo.CollectionsForAddress(address, pagination); + return await this.cachingService.getOrSet( + cacheInfo.key, + executeGetCollections, + cacheInfo.ttl, + ); } - return accountCollections; + return await executeGetCollections(); + } + + private isDefaultAddressCollectionFilter(filter: CollectionFilter): boolean { + return !filter.search && + !(filter.type && filter.type.length > 0) && + !(filter.subType && filter.subType.length > 0) && + !filter.excludeMetaESDT && + !filter.collection; } async getCollectionCountForAddressWithRoles(address: string, filter: CollectionFilter): Promise { - const filterKey = JSON.stringify(filter ?? {}); - return await this.cachingService.getOrSet( - CacheInfo.CollectionRolesCountForAddress(address, filterKey).key, - async () => await this.esdtAddressService.getCollectionCountForAddressFromElastic(address, filter), - CacheInfo.CollectionRolesCountForAddress(address, filterKey).ttl, - ); + const executeCount = async () => await this.esdtAddressService.getCollectionCountForAddressFromElastic(address, filter); + + if (this.isDefaultAddressCollectionFilter(filter)) { + return await this.cachingService.getOrSet( + CacheInfo.CollectionRolesCountForAddress(address).key, + executeCount, + CacheInfo.CollectionRolesCountForAddress(address).ttl, + ); + } + + return await executeCount(); } private async getCollectionLogo(identifier: string): Promise { diff --git a/src/endpoints/nfts/nft.service.ts b/src/endpoints/nfts/nft.service.ts index 30ee180eb..d81bb7268 100644 --- a/src/endpoints/nfts/nft.service.ts +++ b/src/endpoints/nfts/nft.service.ts @@ -545,10 +545,11 @@ export class NftService { async getNftsForAddress(address: string, queryPagination: QueryPagination, filter: NftFilter, fields?: string[], queryOptions?: NftQueryOptions, source?: EsdtDataSource): Promise { let nfts = await this.esdtAddressService.getNftsForAddress(address, filter, queryPagination, source, queryOptions); - for (const nft of nfts) { + + await Promise.all(nfts.map(async (nft) => { await this.applyAssetsAndTicker(nft, fields); await this.applyPriceUsd(nft, fields); - } + })); if (queryOptions && queryOptions.withSupply) { const supplyNfts = nfts.filter(nft => nft.type.in(NftType.SemiFungibleESDT, NftType.MetaESDT)); @@ -580,9 +581,7 @@ export class NftService { nfts = this.applyScamFilter(nfts, filter); - for (const nft of nfts) { - await this.applyUnlockFields(nft, fields); - } + await Promise.all(nfts.map(nft => this.applyUnlockFields(nft, fields))); return nfts; } diff --git a/src/utils/cache.info.ts b/src/utils/cache.info.ts index 310661ada..7c119fdfa 100644 --- a/src/utils/cache.info.ts +++ b/src/utils/cache.info.ts @@ -272,16 +272,16 @@ export class CacheInfo { }; } - static CollectionCountForAddress(address: string, filterKey: string): CacheInfo { + static CollectionCountForAddress(address: string): CacheInfo { return { - key: `collectionCount:${address}:${filterKey}`, + key: `collectionCount:${address}`, ttl: Constants.oneMinute(), }; } - static CollectionRolesCountForAddress(address: string, filterKey: string): CacheInfo { + static CollectionRolesCountForAddress(address: string): CacheInfo { return { - key: `collectionRolesCount:${address}:${filterKey}`, + key: `collectionRolesCount:${address}`, ttl: Constants.oneMinute(), }; } @@ -298,6 +298,13 @@ export class CacheInfo { ttl: Constants.oneSecond() * 6, }; + static CollectionsForAddress(address: string, pagination: QueryPagination): CacheInfo { + return { + key: `collectionsForAddress:${address}:${pagination.from}:${pagination.size}`, + ttl: Constants.oneSecond() * 6, + }; + } + static EsdtAddressesRoles(identifier: string): CacheInfo { return { key: `esdt:roles:${identifier}`, From d19f27a49aa78300061f1632ac5a170099b6edfa Mon Sep 17 00:00:00 2001 From: cfaur09 Date: Thu, 11 Dec 2025 18:34:28 +0200 Subject: [PATCH 098/206] fixes --- src/common/indexer/entities/collection.ts | 15 ++++++ .../collections/collection.service.ts | 53 +++++++++++++------ src/endpoints/esdt/esdt.address.service.ts | 3 +- 3 files changed, 54 insertions(+), 17 deletions(-) diff --git a/src/common/indexer/entities/collection.ts b/src/common/indexer/entities/collection.ts index e6a8f12dc..5190e17f6 100644 --- a/src/common/indexer/entities/collection.ts +++ b/src/common/indexer/entities/collection.ts @@ -1,3 +1,16 @@ +export interface CollectionProperties { + canMint?: boolean; + canBurn?: boolean; + canUpgrade?: boolean; + canTransferNFTCreateRole?: boolean; + canAddSpecialRoles?: boolean; + canPause?: boolean; + canFreeze?: boolean; + canWipe?: boolean; + canChangeOwner?: boolean; + canCreateMultiShard?: boolean; +} + export interface Collection { _id: string; name: string; @@ -5,9 +18,11 @@ export interface Collection { token: string; issuer: string; currentOwner: string; + numDecimals?: number; type: string; timestamp: number; ownersHistory: { address: string, timestamp: number }[]; + properties?: CollectionProperties; api_isVerified?: boolean; api_nftCount?: number; api_holderCount?: number; diff --git a/src/endpoints/collections/collection.service.ts b/src/endpoints/collections/collection.service.ts index 369831f62..30181666d 100644 --- a/src/endpoints/collections/collection.service.ts +++ b/src/endpoints/collections/collection.service.ts @@ -95,18 +95,41 @@ export class CollectionService { private async processNftCollections(tokenCollections: Collection[]): Promise { const collectionsIdentifiers = tokenCollections.map((collection) => collection.token); - const indexedCollections = new Map(); - for (const collection of tokenCollections) { - indexedCollections.set(collection.token, collection); - } + const collectionsAssets = await this.batchGetCollectionsAssets(collectionsIdentifiers); - const nftCollections: NftCollection[] = await this.applyPropertiesToCollections(collectionsIdentifiers); + const nftCollections: NftCollection[] = []; - for (const nftCollection of nftCollections) { - const indexedCollection = indexedCollections.get(nftCollection.collection); - if (indexedCollection) { - this.applyPropertiesToCollectionFromElasticSearch(nftCollection, indexedCollection); - } + for (const esCollection of tokenCollections) { + const identifierParts = esCollection.token.split('-'); + const ticker = identifierParts[0]; + const collectionBase = identifierParts.slice(0, 2).join('-'); + const assets = collectionsAssets[esCollection.token]; + const props = esCollection.properties; + + const isMetaESDT = esCollection.type === ElasticNftType.MetaESDT || esCollection.type === ElasticNftType.DynamicMetaESDT; + + const nftCollection = new NftCollection({ + name: esCollection.name, + collection: collectionBase, + ticker: ticker, + owner: esCollection.currentOwner, + assets: assets, + canFreeze: props?.canFreeze, + canWipe: props?.canWipe, + canPause: props?.canPause, + canTransferNftCreateRole: props?.canTransferNFTCreateRole, + canChangeOwner: props?.canChangeOwner, + canUpgrade: props?.canUpgrade, + canAddSpecialRoles: props?.canAddSpecialRoles, + decimals: isMetaESDT ? esCollection.numDecimals : undefined, + }); + + nftCollection.ticker = nftCollection.assets ? ticker : nftCollection.collection; + + // Apply additional ES fields (type, timestamp, counts, scamInfo) + this.applyPropertiesToCollectionFromElasticSearch(nftCollection, esCollection); + + nftCollections.push(nftCollection); } return nftCollections; @@ -146,6 +169,10 @@ export class CollectionService { } } + async buildCollectionsFromElasticData(esCollections: Collection[]): Promise { + return await this.processNftCollections(esCollections); + } + async applyPropertiesToCollections(collectionsIdentifiers: string[]): Promise { const nftCollections: NftCollection[] = []; @@ -285,17 +312,13 @@ export class CollectionService { return undefined; } - const [collection] = await this.applyPropertiesToCollections([identifier]); + const [collection] = await this.buildCollectionsFromElasticData([elasticCollection]); if (!collection) { return undefined; } const collectionDetailed = ApiUtils.mergeObjects(new NftCollectionDetailed(), collection); - collectionDetailed.type = elasticCollection.type as NftType; - collectionDetailed.timestamp = elasticCollection.timestamp; - - this.applyPropertiesToCollectionFromElasticSearch(collectionDetailed, elasticCollection); collectionDetailed.traits = await this.getCollectionTraitsCached(identifier); diff --git a/src/endpoints/esdt/esdt.address.service.ts b/src/endpoints/esdt/esdt.address.service.ts index 34ea3dc94..c0b751505 100644 --- a/src/endpoints/esdt/esdt.address.service.ts +++ b/src/endpoints/esdt/esdt.address.service.ts @@ -101,14 +101,13 @@ export class EsdtAddressService { async getCollectionsForAddress(address: string, filter: CollectionFilter, pagination: QueryPagination): Promise { const tokenCollections = await this.indexerService.getNftCollections(pagination, filter, address); - const collectionsIdentifiers = tokenCollections.map((collection) => collection.token); const indexedCollections: Record = {}; for (const collection of tokenCollections) { indexedCollections[collection.token] = collection; } - const accountCollections = await this.collectionService.applyPropertiesToCollections(collectionsIdentifiers); + const accountCollections = await this.collectionService.buildCollectionsFromElasticData(tokenCollections); const collectionsWithRoles: NftCollectionWithRoles[] = []; From 4e743ce783616405c1f53c6b95d2fdcd3a3090fb Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 15 Dec 2025 14:25:39 +0200 Subject: [PATCH 099/206] add support for transfers subscription --- src/crons/websocket/room.key.generator.ts | 4 +- .../websocket/transfers.custom.gateway.ts | 112 ++++++++++++++++++ src/crons/websocket/websocket.cron.service.ts | 5 +- .../websocket.subscription.module.ts | 4 + .../entities/transfers.custom.payload.ts | 41 +++++++ .../mutual.exclusive.fields.constraint.ts | 74 ++++++++++++ 6 files changed, 238 insertions(+), 2 deletions(-) create mode 100644 src/crons/websocket/transfers.custom.gateway.ts create mode 100644 src/endpoints/websocket/entities/transfers.custom.payload.ts create mode 100644 src/utils/mutual.exclusive.fields.constraint.ts diff --git a/src/crons/websocket/room.key.generator.ts b/src/crons/websocket/room.key.generator.ts index 02a8a3aae..967783f1d 100644 --- a/src/crons/websocket/room.key.generator.ts +++ b/src/crons/websocket/room.key.generator.ts @@ -1,5 +1,6 @@ import { EventsCustomSubscribePayload } from 'src/endpoints/events/entities/events.custom.subscribe'; import { TransactionCustomSubscribePayload } from 'src/endpoints/transactions/entities/dtos/transaction.custom.subscribe'; +import { TransferCustomSubscribePayload } from 'src/endpoints/websocket/entities/transfers.custom.payload'; export class RoomKeyGenerator { public static generate( @@ -7,7 +8,6 @@ export class RoomKeyGenerator { data: Record, dtoClass: Function, ): string[] { - // get allowed keys from DTO (with caching) const allowedKeys = this.getKeys(dtoClass); // extract only key-value pairs that exist in the data and are non-null @@ -64,6 +64,8 @@ export class RoomKeyGenerator { return TransactionCustomSubscribePayload.getClassFields(); case EventsCustomSubscribePayload: return EventsCustomSubscribePayload.getClassFields(); + case TransferCustomSubscribePayload: + return TransferCustomSubscribePayload.getClassFields(); default: console.warn(`RoomKeyGenerator: No manual key mapping found for class ${targetClass.name}`); return []; diff --git a/src/crons/websocket/transfers.custom.gateway.ts b/src/crons/websocket/transfers.custom.gateway.ts new file mode 100644 index 000000000..ec3ba1d74 --- /dev/null +++ b/src/crons/websocket/transfers.custom.gateway.ts @@ -0,0 +1,112 @@ +import { WebSocketGateway, WebSocketServer, SubscribeMessage, ConnectedSocket, MessageBody } from '@nestjs/websockets'; +import { Server, Socket } from 'socket.io'; +import { TransactionFilter } from '../../endpoints/transactions/entities/transaction.filter'; +import { QueryPagination } from 'src/common/entities/query.pagination'; +import { WsValidationPipe } from 'src/utils/ws-validation.pipe'; +import { WebsocketExceptionsFilter } from 'src/utils/ws-exceptions.filter'; +import { UseFilters, UseInterceptors } from '@nestjs/common'; +import { OriginLogger } from '@multiversx/sdk-nestjs-common'; +import { RoomKeyGenerator } from './room.key.generator'; +import { Transaction } from 'src/endpoints/transactions/entities/transaction'; +import { LockingGuardInterceptor } from 'src/utils/locking.guard.interceptor'; +import { TransferService } from 'src/endpoints/transfers/transfer.service'; +import { TransferCustomSubscribePayload } from 'src/endpoints/websocket/entities/transfers.custom.payload'; +import { TransactionQueryOptions } from 'src/endpoints/transactions/entities/transactions.query.options'; + +@UseFilters(WebsocketExceptionsFilter) +@WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) +export class TransfersCustomGateway { + private readonly logger = new OriginLogger(TransfersCustomGateway.name); + static keyPrefix = 'custom-transfer-'; + @WebSocketServer() + server!: Server; + + constructor( + private readonly transferService: TransferService, + ) { } + + @UseInterceptors(LockingGuardInterceptor) + @SubscribeMessage('subscribeCustomTransfers') + async handleCustomSubscription( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: TransferCustomSubscribePayload) { + + const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload); + if (!client.rooms.has(`${TransfersCustomGateway.keyPrefix}${filterIdentifier}`)) { + await client.join(`${TransfersCustomGateway.keyPrefix}${filterIdentifier}`); + } + return { status: 'success' }; + } + + @SubscribeMessage('unsubscribeCustomTransfers') + async handleCustomUnsubscribe( + @ConnectedSocket() client: Socket, + @MessageBody(new WsValidationPipe()) payload: TransferCustomSubscribePayload + ) { + const filterIdentifier = RoomKeyGenerator.deterministicStringify(payload); + const roomName = `${TransfersCustomGateway.keyPrefix}${filterIdentifier}`; + + if (client.rooms.has(roomName)) { + await client.leave(roomName); + } + + return { status: 'unsubscribed' }; + } + + async pushTransfersForTimestampMs(timestampMs: number): Promise { + try { + const options = new TransactionQueryOptions({ withScamInfo: false, withUsername: true, withBlockInfo: false, withLogs: false, withOperations: false, withActionTransferValue: false, withTxsOrder: false }); + const allTransfers = await this.transferService.getTransfers( + new TransactionFilter({ before: timestampMs, after: timestampMs, withTxsRelayedByAddress: true }), + new QueryPagination({ size: 10000 }), // TODO: handle pagination with more than 10k txs + options, + ); + + const transfersFilteredForBroadcast: Map = new Map(); + for (const transfer of allTransfers) { + const roomKeys = RoomKeyGenerator.generate( + TransfersCustomGateway.keyPrefix, + transfer, + TransferCustomSubscribePayload, + ); + + for (const roomKey of roomKeys) { + const substitutions = TransferCustomSubscribePayload.getFieldsSubstitutions(); + for (const [key, substituteFields] of Object.entries(substitutions)) { + for (const substituteField of substituteFields) { + const substituteRoomKey = roomKey.replace(`"${substituteField}":`, `"${key}":`); + if (this.server.sockets.adapter.rooms.has(substituteRoomKey)) { + if (!transfersFilteredForBroadcast.has(substituteRoomKey)) { + transfersFilteredForBroadcast.set(substituteRoomKey, []); + } + transfersFilteredForBroadcast.get(substituteRoomKey)!.push(transfer); + } + } + + } + if (this.server.sockets.adapter.rooms.has(roomKey)) { + if (!transfersFilteredForBroadcast.has(roomKey)) { + transfersFilteredForBroadcast.set(roomKey, []); + } + transfersFilteredForBroadcast.get(roomKey)!.push(transfer); + } + + if (this.server.sockets.adapter.rooms.has(roomKey)) { + if (!transfersFilteredForBroadcast.has(roomKey)) { + transfersFilteredForBroadcast.set(roomKey, []); + } + transfersFilteredForBroadcast.get(roomKey)!.push(transfer); + } + } + } + + + for (const [roomName] of transfersFilteredForBroadcast) { + this.server.to(roomName).emit("customTransferUpdate", { transfers: transfersFilteredForBroadcast.get(roomName)?.distinct(), timestampMs }); + } + } catch (error) { + this.logger.error(error); + } + } + +} diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 5292be886..7cf8992d6 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -20,6 +20,7 @@ import { Stats } from 'src/endpoints/network/entities/stats'; import { TransactionsCustomGateway } from './transaction.custom.gateway'; import { ConnectionHandler } from './connection.handler'; import { EventsCustomGateway } from './events.custom.gateway'; +import { TransfersCustomGateway } from './transfers.custom.gateway'; @Injectable() @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) @@ -41,6 +42,7 @@ export class WebsocketCronService { private readonly transactionsCustomGateway: TransactionsCustomGateway, private readonly eventsCustomGateway: EventsCustomGateway, private readonly connectionHandler: ConnectionHandler, + private readonly transfersCustomGateway: TransfersCustomGateway, ) { } @Cron('*/6 * * * * *') @@ -74,7 +76,7 @@ export class WebsocketCronService { } @Cron('*/3 * * * * *') - @Lock({ name: 'Push custom transactions to subscribers', verbose: true }) + @Lock({ name: 'Push custom data to subscribers', verbose: true }) async handleCustomTransactionsUpdate() { if (this.connectionHandler.hasSubscriptionsWithPrefixes([TransactionsCustomGateway.keyPrefix]) === false) { this.cacheService.deleteLocal(CacheInfo.WsTimestampMsToProcess().key); @@ -101,6 +103,7 @@ export class WebsocketCronService { await Promise.all([ this.transactionsCustomGateway.pushTransactionsForTimestampMs(roundToProcessTimestampMs), this.eventsCustomGateway.pushEventsForTimestampMs(roundToProcessTimestampMs), + this.transfersCustomGateway.pushTransfersForTimestampMs(roundToProcessTimestampMs), ]); roundToProcessTimestampMs += stats.refreshRate; } diff --git a/src/crons/websocket/websocket.subscription.module.ts b/src/crons/websocket/websocket.subscription.module.ts index 7ee08c0f7..750cccfd9 100644 --- a/src/crons/websocket/websocket.subscription.module.ts +++ b/src/crons/websocket/websocket.subscription.module.ts @@ -16,6 +16,8 @@ import { RoundModule } from 'src/endpoints/rounds/round.module'; import { TransactionsCustomGateway } from './transaction.custom.gateway'; import { EventsCustomGateway } from './events.custom.gateway'; import { ApiConfigModule } from 'src/common/api-config/api.config.module'; +import { TransfersCustomGateway } from './transfers.custom.gateway'; +import { TransferModule } from 'src/endpoints/transfers/transfer.module'; @Module({ imports: [ @@ -26,6 +28,7 @@ import { ApiConfigModule } from 'src/common/api-config/api.config.module'; PoolModule, EventsModule, RoundModule, + TransferModule, ApiConfigModule, ], providers: [ @@ -38,6 +41,7 @@ import { ApiConfigModule } from 'src/common/api-config/api.config.module'; EventsGateway, TransactionsCustomGateway, EventsCustomGateway, + TransfersCustomGateway, ], }) export class WebsocketSubscriptionModule { } diff --git a/src/endpoints/websocket/entities/transfers.custom.payload.ts b/src/endpoints/websocket/entities/transfers.custom.payload.ts new file mode 100644 index 000000000..5d00036b1 --- /dev/null +++ b/src/endpoints/websocket/entities/transfers.custom.payload.ts @@ -0,0 +1,41 @@ +import { IsOptional, IsString } from 'class-validator'; +import { MutualExclusiveFields } from 'src/utils/mutual.exclusive.fields.constraint'; +import { NoEmptyPayload } from 'src/utils/no.empty.payload.validator'; + +@NoEmptyPayload({ message: `You must add at least one filter from ${TransferCustomSubscribePayload.getClassFields()}` }) +@MutualExclusiveFields() +export class TransferCustomSubscribePayload { + @IsOptional() + @IsString() + sender?: string; + + @IsOptional() + @IsString() + receiver?: string; + + @IsOptional() + @IsString() + relayer?: string; + + @IsOptional() + @IsString() + function?: string; + + @IsOptional() + @IsString() + address?: string; // sender OR receiver OR relayer. throw error if sender, receiver or relayer is already set + + @IsOptional() + @IsString() + token?: string; + + public static getClassFields(): string[] { + return ['function', 'receiver', 'sender', 'relayer', 'address', 'token']; + } + + public static getFieldsSubstitutions(): Record { + return { + address: ['sender', 'receiver', 'relayer'], + }; + } +} \ No newline at end of file diff --git a/src/utils/mutual.exclusive.fields.constraint.ts b/src/utils/mutual.exclusive.fields.constraint.ts new file mode 100644 index 000000000..5362c3906 --- /dev/null +++ b/src/utils/mutual.exclusive.fields.constraint.ts @@ -0,0 +1,74 @@ +import { + ValidatorConstraint, + ValidatorConstraintInterface, + ValidationArguments, + ValidationOptions, + registerDecorator, +} from 'class-validator'; + +@ValidatorConstraint({ name: 'mutualExclusiveFields', async: false }) +export class MutualExclusiveFieldsConstraint + implements ValidatorConstraintInterface { + validate(_value: any, args: ValidationArguments) { + // When used as a class validator, 'value' is usually the instance itself + // However, sometimes 'value' is undefined for class validators, so we rely on args.object + const object = args.object as any; + + if (typeof object.constructor.getFieldsSubstitutions !== 'function') { + return true; + } + + const substitutions = object.constructor.getFieldsSubstitutions() as Record; + + for (const [mainField, conflictingFields] of Object.entries(substitutions)) { + if (object[mainField] !== undefined && object[mainField] !== null) { + const hasConflict = conflictingFields.some( + (field) => object[field] !== undefined && object[field] !== null + ); + + if (hasConflict) { + return false; + } + } + } + + return true; + } + + defaultMessage(args: ValidationArguments) { + const object = args.object as any; + // Safety check in case the method is missing + if (typeof object.constructor.getFieldsSubstitutions !== 'function') { + return 'Validation error'; + } + + const substitutions = object.constructor.getFieldsSubstitutions(); + for (const [mainField, conflictingFields] of Object.entries(substitutions)) { + if (object[mainField]) { + const conflicts = (conflictingFields as string[]).filter( + (field) => object[field] !== undefined && object[field] !== null + ); + + if (conflicts.length > 0) { + return `You cannot provide '${mainField}' simultaneously with: ${conflicts.join(', ')}.`; + } + } + } + + return 'Mutual exclusivity validation failed.'; + } +} + + +export function MutualExclusiveFields(validationOptions?: ValidationOptions) { + return function (target: Function) { + registerDecorator({ + name: 'mutualExclusiveFields', + target: target as Function, + propertyName: '', + options: validationOptions, + constraints: [], + validator: MutualExclusiveFieldsConstraint, + }); + }; +} \ No newline at end of file From c20b71a7a9ef79a6394c394e241a49dddfcff596 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 15 Dec 2025 16:29:17 +0200 Subject: [PATCH 100/206] add support for token transfers subscriptions --- src/crons/websocket/room.key.generator.ts | 22 +++++++++++++++---- .../websocket/transfers.custom.gateway.ts | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/crons/websocket/room.key.generator.ts b/src/crons/websocket/room.key.generator.ts index 967783f1d..e837127ef 100644 --- a/src/crons/websocket/room.key.generator.ts +++ b/src/crons/websocket/room.key.generator.ts @@ -14,10 +14,24 @@ export class RoomKeyGenerator { const activeFilters: { key: string; value: any }[] = []; for (const key of allowedKeys) { - const value = data[key]; - // Ignore null, undefined, and empty strings - if (value !== undefined && value !== null && value !== '') { - activeFilters.push({ key, value }); + if (key === 'token') { + if (data['value'] != null && data['value'] !== '' && data['value'] !== '0') { + activeFilters.push({ key: 'token', value: 'EGLD' }); + } + const transfers = data?.action?.arguments?.transfers; + if (Array.isArray(transfers)) { + for (const transfer of transfers) { + if (transfer.token) { + activeFilters.push({ key: 'token', value: transfer.token }); + } + } + } + } else { + const value = data[key]; + // Ignore null, undefined, and empty strings + if (value !== undefined && value !== null && value !== '') { + activeFilters.push({ key, value }); + } } } diff --git a/src/crons/websocket/transfers.custom.gateway.ts b/src/crons/websocket/transfers.custom.gateway.ts index ec3ba1d74..51e09a077 100644 --- a/src/crons/websocket/transfers.custom.gateway.ts +++ b/src/crons/websocket/transfers.custom.gateway.ts @@ -82,8 +82,8 @@ export class TransfersCustomGateway { transfersFilteredForBroadcast.get(substituteRoomKey)!.push(transfer); } } - } + if (this.server.sockets.adapter.rooms.has(roomKey)) { if (!transfersFilteredForBroadcast.has(roomKey)) { transfersFilteredForBroadcast.set(roomKey, []); From 0db59c1eb00bc30d76a7171bf34e626b23367d00 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 16 Dec 2025 11:22:02 +0200 Subject: [PATCH 101/206] add ws transfers e2e tests --- .../entities/transfers.custom.payload.ts | 2 +- .../utils/chain.simulator.operations.ts | 12 +- .../websocket.subscriptions.cs-e2e.ts | 144 +++++++++++++----- .../mutual.exclusive.fields.constraint.ts | 2 +- 4 files changed, 119 insertions(+), 41 deletions(-) diff --git a/src/endpoints/websocket/entities/transfers.custom.payload.ts b/src/endpoints/websocket/entities/transfers.custom.payload.ts index 5d00036b1..a1a8931d9 100644 --- a/src/endpoints/websocket/entities/transfers.custom.payload.ts +++ b/src/endpoints/websocket/entities/transfers.custom.payload.ts @@ -38,4 +38,4 @@ export class TransferCustomSubscribePayload { address: ['sender', 'receiver', 'relayer'], }; } -} \ No newline at end of file +} diff --git a/src/test/chain-simulator/utils/chain.simulator.operations.ts b/src/test/chain-simulator/utils/chain.simulator.operations.ts index 2c30ec4f6..87050fe53 100644 --- a/src/test/chain-simulator/utils/chain.simulator.operations.ts +++ b/src/test/chain-simulator/utils/chain.simulator.operations.ts @@ -97,17 +97,25 @@ export async function issueEsdt(args: IssueEsdtArgs) { export async function transferEsdt(args: TransferEsdtArgs) { const transferValue = args.plainAmountOfTokens * 10 ** 18; - return await sendTransaction( + console.log(`Transferring ${args.plainAmountOfTokens} ${args.tokenIdentifier} from ${args.sender} to ${args.receiver}`); + let hexAmountOfTokens = transferValue.toString(16); + + if (hexAmountOfTokens.length % 2 !== 0) { + hexAmountOfTokens = '0' + hexAmountOfTokens; + } + const txHash = await sendTransaction( new SendTransactionArgs({ chainSimulatorUrl: args.chainSimulatorUrl, sender: args.sender, receiver: args.receiver, dataField: `ESDTTransfer@${Buffer.from(args.tokenIdentifier).toString( 'hex', - )}@${transferValue.toString(16)}`, + )}@${hexAmountOfTokens}`, value: '0', }), ); + console.log(`ESDT transfer completed. Transaction hash: ${txHash}`); + return txHash; } export async function sendTransaction( diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index 3c9f4f518..7d014bc70 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -1,13 +1,13 @@ import axios from "axios"; import { config } from "./config/env.config"; -import { fundAddress, transferEgld } from "./utils/chain.simulator.operations"; +import { fundAddress, issueMultipleEsdts, transferEgld, transferEsdt } from "./utils/chain.simulator.operations"; import { io, Socket } from "socket.io-client"; import { ChainSimulatorUtils } from "./utils/test.utils"; const WS_SERVER_URL = `${config.subscriptionsServiceUrl}`; // --- Test Configuration --- -const verbose = false; // Set to true to see console logs +const verbose = false; // Set true for debugging logs const client4SubscriptionConfig = { pool: { from: 0, size: 25 }, @@ -25,6 +25,7 @@ const log = (...args: any[]) => { const txResponses: Map = new Map(); const eventResponses: Map = new Map(); +const transferResponses: Map = new Map(); // New: Store transfers const generalResponses = { pool: [] as any[], @@ -46,29 +47,55 @@ const eventFilters = { CLIENT_3: { identifier: 'completedTxEvent', address: '' }, }; +const transferFilters = { + CLIENT_5: { address: config.aliceAddress }, // Filter by Address (Sender or Receiver) + CLIENT_6: { token: 'EGLD', address: config.aliceAddress }, // Filter by EGLD only + CLIENT_7: { token: '' }, // Filter by specific ESDT (populated later) +}; + const filterKeys = { CLIENT_1: "KEY_CLIENT_1", CLIENT_2: "KEY_CLIENT_2", CLIENT_3: "KEY_CLIENT_3", + CLIENT_5: "KEY_CLIENT_5_ADDR", + CLIENT_6: "KEY_CLIENT_6_EGLD", + CLIENT_7: "KEY_CLIENT_7_ESDT", }; +// Map configuration to clients const filterMap = [ - { key: filterKeys.CLIENT_1, txFilter: txFilters.CLIENT_1, eventFilter: eventFilters.CLIENT_1, clientId: "client1" }, - { key: filterKeys.CLIENT_2, txFilter: txFilters.CLIENT_2, eventFilter: eventFilters.CLIENT_2, clientId: "client2" }, - { key: filterKeys.CLIENT_3, txFilter: txFilters.CLIENT_3, eventFilter: eventFilters.CLIENT_3, clientId: "client3" }, + // TX & Event Clients + { key: filterKeys.CLIENT_1, txFilter: txFilters.CLIENT_1, eventFilter: eventFilters.CLIENT_1, transferFilter: null, clientId: "client1" }, + { key: filterKeys.CLIENT_2, txFilter: txFilters.CLIENT_2, eventFilter: eventFilters.CLIENT_2, transferFilter: null, clientId: "client2" }, + { key: filterKeys.CLIENT_3, txFilter: txFilters.CLIENT_3, eventFilter: eventFilters.CLIENT_3, transferFilter: null, clientId: "client3" }, + + // Transfer Clients + { key: filterKeys.CLIENT_5, txFilter: null, eventFilter: null, transferFilter: transferFilters.CLIENT_5, clientId: "client5_addr" }, + { key: filterKeys.CLIENT_6, txFilter: null, eventFilter: null, transferFilter: transferFilters.CLIENT_6, clientId: "client6_egld" }, + { key: filterKeys.CLIENT_7, txFilter: null, eventFilter: null, transferFilter: transferFilters.CLIENT_7, clientId: "client7_esdt" }, ]; let pingPongScAddress = ''; +const aliceEsdts: string[] = []; -describe('Websocket subscriptions e2e tests (Txs and Events)', () => { +describe('Websocket subscriptions e2e tests', () => { const clients: Socket[] = []; - const connectAndSubscribe = (filterKey: string, txFilter: any, eventFilter: any, clientId: string) => { + // --- Connect Helper --- + const connectAndSubscribe = ( + filterKey: string, + txFilter: any, + eventFilter: any, + transferFilter: any, + clientId: string + ) => { const receivedTxs: any[] = []; const receivedEvents: any[] = []; + const receivedTransfers: any[] = []; txResponses.set(filterKey, receivedTxs); eventResponses.set(filterKey, receivedEvents); + transferResponses.set(filterKey, receivedTransfers); const client: Socket = io(WS_SERVER_URL, { path: '/ws/subscription', @@ -89,16 +116,23 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { receivedEvents.push(...data.events); }); + client.on("customTransferUpdate", (data: { transfers: any[] }) => { + log(`\n💎 ${clientId} received ${data.transfers.length} transfers`); + receivedTransfers.push(...data.transfers); + }); + client.on("connect", () => { log(`\n ${clientId} connected.`); - client.emit("subscribeCustomTransactions", txFilter, (ack: any) => { - log(` ACK TXs ${clientId}:`, ack); - }); - - client.emit("subscribeCustomEvents", eventFilter, (ack: any) => { - log(` ACK Events ${clientId}:`, ack); - }); + if (txFilter) { + client.emit("subscribeCustomTransactions", txFilter, (ack: any) => log(` ACK TXs ${clientId}:`, ack)); + } + if (eventFilter) { + client.emit("subscribeCustomEvents", eventFilter, (ack: any) => log(` ACK Events ${clientId}:`, ack)); + } + if (transferFilter) { + client.emit("subscribeCustomTransfers", transferFilter, (ack: any) => log(` ACK Transfers ${clientId}:`, ack)); + } }); }; @@ -108,9 +142,7 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { }); clients.push(client); - client.on("connect_error", (err) => { - throw new Error(`${clientId} connection failed: ${err.message}`); - }); + client.on("connect_error", (err) => { throw new Error(`${clientId} connection failed: ${err.message}`); }); client.on("poolUpdate", (data: any) => generalResponses.pool.push(data)); client.on("eventsUpdate", (data: any) => generalResponses.events.push(data)); @@ -120,12 +152,10 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { client.on("connect", () => { log(`\n ${clientId} connected with specific configs.`); - client.emit("subscribePool", subConfig.pool, (ack: any) => log(`ACK Pool ${clientId}:`, ack)); client.emit("subscribeEvents", subConfig.events, (ack: any) => log(`ACK Events ${clientId}:`, ack)); client.emit("subscribeTransactions", subConfig.transactions, (ack: any) => log(`ACK Txs ${clientId}:`, ack)); client.emit("subscribeBlocks", subConfig.blocks, (ack: any) => log(`ACK Blocks ${clientId}:`, ack)); - client.emit("subscribeStats", (ack: any) => log(`ACK Stats ${clientId}:`, ack)); }); }; @@ -140,8 +170,17 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { eventFilters.CLIENT_2.address = pingPongScAddress; eventFilters.CLIENT_3.address = pingPongScAddress; + log("Issuing ESDT Token..."); + const newAliceEsdts = await issueMultipleEsdts(config.chainSimulatorUrl, config.aliceAddress, 1); + aliceEsdts.push(...newAliceEsdts); + + await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/1`); + for (const item of filterMap) { - connectAndSubscribe(item.key, item.txFilter, item.eventFilter, item.clientId); + if (item.key === filterKeys.CLIENT_7) { + item.transferFilter = { token: aliceEsdts[0] }; + } + connectAndSubscribe(item.key, item.txFilter, item.eventFilter, item.transferFilter, item.clientId); } connectAndSubscribeGeneral("client4", client4SubscriptionConfig); @@ -150,15 +189,25 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { log("\n--- Starting Operations ---"); + await transferEgld(config.chainSimulatorUrl, config.aliceAddress, config.bobAddress, 1); await transferEgld(config.chainSimulatorUrl, config.bobAddress, config.aliceAddress, 2); await ChainSimulatorUtils.pingContract(config.aliceAddress, pingPongScAddress); await ChainSimulatorUtils.pongContract(config.aliceAddress, pingPongScAddress); + await transferEsdt({ + chainSimulatorUrl: config.chainSimulatorUrl, + sender: config.aliceAddress, + receiver: config.bobAddress, + tokenIdentifier: aliceEsdts[0], + plainAmountOfTokens: 1, + }); + await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/10`); - await new Promise(resolve => setTimeout(resolve, 15000)); + log("Waiting for WS messages..."); + await new Promise(resolve => setTimeout(resolve, 20000)); } catch (e: any) { console.error("Error in beforeAll:", e.message); @@ -170,11 +219,9 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { clients.forEach(client => client.connected && client.disconnect()); }); - // --- Tests for Clients 1, 2, 3 (Custom Filters) --- - it('should receive TXs sent by Alice for Client 1', () => { const txs = txResponses.get(filterKeys.CLIENT_1); - expect(txs?.length).toBe(3); + expect(txs?.length).toBe(4); txs?.forEach((tx) => { expect(tx.sender).toEqual(config.aliceAddress); @@ -192,7 +239,7 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { it('should receive TXs sent by Bob for Client 2', () => { const txs = txResponses.get(filterKeys.CLIENT_2); - expect(txs?.length).toBe(2); + expect(txs?.length).toBe(1); txs?.forEach((tx) => { expect(tx.sender).toEqual(config.bobAddress); @@ -201,7 +248,7 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { it('should receive Events generated by PingPong contract (address) for Client 2', () => { const events = eventResponses.get(filterKeys.CLIENT_2); - expect(events?.length).toBe(7); + expect(events?.length).toBe(6); events?.forEach((evt) => { expect(evt.address).toEqual(pingPongScAddress); @@ -211,40 +258,63 @@ describe('Websocket subscriptions e2e tests (Txs and Events)', () => { it('should receive specific Alice-to-Bob TXs for Client 3', () => { const txs = txResponses.get(filterKeys.CLIENT_3); expect(txs?.length).toBeGreaterThanOrEqual(1); - txs?.forEach((tx) => { expect(tx.sender).toEqual(config.aliceAddress); expect(tx.receiver).toEqual(config.bobAddress); }); }); - it('should receive Events with identifier "completedTxEvent" and from Ping Pong sc address for Client 3', () => { - const events = eventResponses.get(filterKeys.CLIENT_3); - expect(events?.length).toBe(2); + it('should receive ANY transfer involving Alice (Client 5 - Address Filter)', () => { + const transfers = transferResponses.get(filterKeys.CLIENT_5); + expect(transfers?.length).toBeGreaterThan(0); - events?.forEach((evt) => { - expect(evt.identifier).toEqual('completedTxEvent'); + transfers?.forEach(t => { + const isAliceInvolved = t.sender === config.aliceAddress || t.receiver === config.aliceAddress; + expect(isAliceInvolved).toBe(true); + }); + }); + + it('should receive ONLY EGLD transfers where ALICE is involved (Client 6 - Token EGLD Filter)', () => { + const transfers = transferResponses.get(filterKeys.CLIENT_6); + expect(transfers?.length).toBeGreaterThan(0); + + transfers?.forEach(t => { + const val1 = `1${'0'.repeat(18)}`; + const val2 = `2${'0'.repeat(18)}`; + expect([val1, val2]).toContain(t.value); + + const isAliceInvolved = + t.sender === config.aliceAddress || + t.receiver === config.aliceAddress || + t.relayer === config.aliceAddress; + + expect(isAliceInvolved).toBe(true); }); }); - // --- Tests for Client 4 (Pagination & Stats) --- + it('should receive ONLY specific ESDT transfers (Client 7 - Dynamic Token Filter)', () => { + const transfers = transferResponses.get(filterKeys.CLIENT_7); + expect(transfers?.length).toBeGreaterThan(0); + + transfers?.forEach(t => { + const esdtTransfers = t.action?.arguments?.transfers; + const containsAliceEsdt = esdtTransfers.filter((et: any) => et.token === aliceEsdts[0]).length > 0; + expect(containsAliceEsdt).toBe(true); + }); + }); it('should receive Blocks updates for Client 4', () => { expect(generalResponses.blocks.length).toBeGreaterThan(0); }); - it('should receive Transactions updates for Client 4', () => { expect(generalResponses.transactions.length).toBeGreaterThan(0); }); - it('should receive Events updates for Client 4', () => { expect(generalResponses.events.length).toBeGreaterThan(0); }); - it('should receive Stats updates for Client 4', () => { expect(generalResponses.stats.length).toBeGreaterThan(0); }); - it('should have valid subscription structure for Pool updates', () => { expect(Array.isArray(generalResponses.pool)).toBe(true); }); diff --git a/src/utils/mutual.exclusive.fields.constraint.ts b/src/utils/mutual.exclusive.fields.constraint.ts index 5362c3906..8ce1b263d 100644 --- a/src/utils/mutual.exclusive.fields.constraint.ts +++ b/src/utils/mutual.exclusive.fields.constraint.ts @@ -71,4 +71,4 @@ export function MutualExclusiveFields(validationOptions?: ValidationOptions) { validator: MutualExclusiveFieldsConstraint, }); }; -} \ No newline at end of file +} From edbf00762f0482bac9069cad963094cf43b7fdc0 Mon Sep 17 00:00:00 2001 From: cfaur09 Date: Wed, 17 Dec 2025 08:49:43 +0200 Subject: [PATCH 102/206] fix unit tests --- src/test/unit/services/collections.spec.ts | 55 +++------------------ src/test/unit/services/transactions.spec.ts | 4 +- 2 files changed, 11 insertions(+), 48 deletions(-) diff --git a/src/test/unit/services/collections.spec.ts b/src/test/unit/services/collections.spec.ts index 163a5441c..3d47d0e4f 100644 --- a/src/test/unit/services/collections.spec.ts +++ b/src/test/unit/services/collections.spec.ts @@ -8,11 +8,9 @@ import { PersistenceService } from "src/common/persistence/persistence.service"; import { PluginService } from "src/common/plugins/plugin.service"; import { CollectionService } from "src/endpoints/collections/collection.service"; import { CollectionFilter } from "src/endpoints/collections/entities/collection.filter"; -import { NftCollection } from "src/endpoints/collections/entities/nft.collection"; import { NftCollectionDetailed } from "src/endpoints/collections/entities/nft.collection.detailed"; import { EsdtAddressService } from "src/endpoints/esdt/esdt.address.service"; import { EsdtService } from "src/endpoints/esdt/esdt.service"; -import { NftType } from "src/endpoints/nfts/entities/nft.type"; import { CollectionRoles } from "src/endpoints/tokens/entities/collection.roles"; import { TokenAssetStatus } from "src/endpoints/tokens/entities/token.asset.status"; import { VmQueryService } from "src/endpoints/vm.query/vm.query.service"; @@ -135,6 +133,7 @@ describe('CollectionService', () => { { getTokenAssets: jest.fn(), getCollectionRanks: jest.fn(), + getAllTokenAssets: jest.fn().mockResolvedValue({}), }, }, { @@ -211,49 +210,10 @@ describe('CollectionService', () => { }); describe('getCollection', () => { - const propertiesToCollectionsMock: NftCollection = { - collection: 'XDAY23TEAM-f7a346', - type: NftType.NonFungibleESDT, - subType: undefined, - name: 'xPortalAchievements', - ticker: 'XDAY23TEAM', - owner: 'erd1lpc6wjh2hav6q50p8y6a44r2lhtnseqksygakjfgep6c9uduchkqphzu6t', - timestamp: 0, - canFreeze: true, - canWipe: true, - canPause: true, - canTransferNftCreateRole: true, - canChangeOwner: false, - canUpgrade: false, - canAddSpecialRoles: false, - decimals: undefined, - assets: { - website: 'https://xday.com', - description: - 'Test description.', - status: TokenAssetStatus.active, - pngUrl: 'https://media.elrond.com/tokens/asset/XDAY23TEAM-f7a346/logo.png', - name: '', - svgUrl: 'https://media.elrond.com/tokens/asset/XDAY23TEAM-f7a346/logo.svg', - extraTokens: [''], - ledgerSignature: '', - priceSource: undefined, - preferredRankAlgorithm: undefined, - lockedAccounts: undefined, - }, - scamInfo: undefined, - traits: [], - auctionStats: undefined, - isVerified: undefined, - holderCount: undefined, - nftCount: undefined, - }; - it('should return collection details for a given collection identifier', async () => { const identifier = 'XDAY23TEAM-f7a346'; jest.spyOn(indexerService, 'getCollection').mockResolvedValue(indexerCollectionMock); - jest.spyOn(service, 'applyPropertiesToCollections').mockResolvedValue([propertiesToCollectionsMock]); jest.spyOn(service, 'getNftCollectionRolesFromGateway').mockResolvedValue([]); const result = await service.getNftCollection(identifier); @@ -261,7 +221,6 @@ describe('CollectionService', () => { expect(result).toBeInstanceOf(Object); expect(indexerService.getCollection).toHaveBeenCalledTimes(1); expect(indexerService.getCollection).toHaveBeenCalledWith(identifier); - expect(service.applyPropertiesToCollections).toHaveBeenCalledWith([identifier]); }); it('should return undefined if the collection is not found', async () => { @@ -296,24 +255,26 @@ describe('CollectionService', () => { expect(result).toBeUndefined(); }); - it('should return undefined if no additional properties are applied to the collection', async () => { - const identifier = 'XDAY23TEAM'; + it('should return collection when ES data is available', async () => { + const identifier = 'XDAY23TEAM-f7a346'; jest.spyOn(indexerService, 'getCollection').mockResolvedValue(indexerCollectionMock); - jest.spyOn(service, 'applyPropertiesToCollections').mockResolvedValue([]); + jest.spyOn(service, 'getNftCollectionRolesFromGateway').mockResolvedValue([]); const result = await service.getNftCollection(identifier); - expect(result).toBeUndefined(); + expect(result).toBeDefined(); + expect(result?.collection).toBe('XDAY23TEAM-f7a346'); }); it('should process the collection details fully', async () => { const identifier = 'XDAY23TEAM-f7a346'; jest.spyOn(indexerService, 'getCollection').mockResolvedValue(indexerCollectionMock); - jest.spyOn(service, 'applyPropertiesToCollections').mockResolvedValue([propertiesToCollectionsMock]); jest.spyOn(service, 'getNftCollectionRolesFromGateway').mockResolvedValue([]); const result = await service.getNftCollection(identifier); expect(result).toBeInstanceOf(NftCollectionDetailed); + expect(result?.name).toBe(indexerCollectionMock.name); + expect(result?.owner).toBe(indexerCollectionMock.currentOwner); }); }); diff --git a/src/test/unit/services/transactions.spec.ts b/src/test/unit/services/transactions.spec.ts index 6a6b0c358..31f0b589c 100644 --- a/src/test/unit/services/transactions.spec.ts +++ b/src/test/unit/services/transactions.spec.ts @@ -67,7 +67,9 @@ describe('TransactionService', () => { provide: CacheService, useValue: { get: jest.fn(), - getOrSet: jest.fn(), + getOrSet: jest.fn().mockImplementation(async (_key: string, getter: () => Promise, _ttl: number) => { + return await getter(); + }), batchGetAll: jest.fn(), }, }, From c8e746a7d70b084f78a2b664f4eca532a724946e Mon Sep 17 00:00:00 2001 From: cfaur09 Date: Wed, 17 Dec 2025 10:02:23 +0200 Subject: [PATCH 103/206] fix transction filters cache --- src/endpoints/transactions/transaction.service.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/endpoints/transactions/transaction.service.ts b/src/endpoints/transactions/transaction.service.ts index be7220d02..1ca50ad62 100644 --- a/src/endpoints/transactions/transaction.service.ts +++ b/src/endpoints/transactions/transaction.service.ts @@ -877,15 +877,15 @@ export class TransactionService { return false; } - const hasNonDefaultOptions = queryOptions.withScResults || + const hasAnyEnrichmentOption = queryOptions.withScResults || queryOptions.withBlockInfo || queryOptions.withActionTransferValue || queryOptions.withUsername || queryOptions.withTxsOrder || - queryOptions.withOperations === false || - queryOptions.withLogs === false; + queryOptions.withOperations !== undefined || + queryOptions.withLogs !== undefined; - return !hasNonDefaultOptions; + return !hasAnyEnrichmentOption; } private isCacheableTransactionCount(filter: TransactionFilter, address?: string): boolean { From df774df18816f0b4a8b611f4bb5f21407724dd9a Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 17 Dec 2025 10:31:11 +0200 Subject: [PATCH 104/206] remove duplicate code --- src/crons/websocket/transfers.custom.gateway.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/crons/websocket/transfers.custom.gateway.ts b/src/crons/websocket/transfers.custom.gateway.ts index 51e09a077..fae6f5a4f 100644 --- a/src/crons/websocket/transfers.custom.gateway.ts +++ b/src/crons/websocket/transfers.custom.gateway.ts @@ -90,17 +90,9 @@ export class TransfersCustomGateway { } transfersFilteredForBroadcast.get(roomKey)!.push(transfer); } - - if (this.server.sockets.adapter.rooms.has(roomKey)) { - if (!transfersFilteredForBroadcast.has(roomKey)) { - transfersFilteredForBroadcast.set(roomKey, []); - } - transfersFilteredForBroadcast.get(roomKey)!.push(transfer); - } } } - for (const [roomName] of transfersFilteredForBroadcast) { this.server.to(roomName).emit("customTransferUpdate", { transfers: transfersFilteredForBroadcast.get(roomName)?.distinct(), timestampMs }); } From 375b47c6ad77e2a47af3a8dcea50608c18a343c5 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 17 Dec 2025 10:31:48 +0200 Subject: [PATCH 105/206] add new line --- src/crons/websocket/transfers.custom.gateway.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/crons/websocket/transfers.custom.gateway.ts b/src/crons/websocket/transfers.custom.gateway.ts index fae6f5a4f..3e9f64223 100644 --- a/src/crons/websocket/transfers.custom.gateway.ts +++ b/src/crons/websocket/transfers.custom.gateway.ts @@ -63,6 +63,7 @@ export class TransfersCustomGateway { ); const transfersFilteredForBroadcast: Map = new Map(); + for (const transfer of allTransfers) { const roomKeys = RoomKeyGenerator.generate( TransfersCustomGateway.keyPrefix, From 63464201298746e0471e8defe16732aceda4e18f Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 17 Dec 2025 10:33:28 +0200 Subject: [PATCH 106/206] encapsulate into variable --- src/crons/websocket/room.key.generator.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/crons/websocket/room.key.generator.ts b/src/crons/websocket/room.key.generator.ts index e837127ef..1eb21a14b 100644 --- a/src/crons/websocket/room.key.generator.ts +++ b/src/crons/websocket/room.key.generator.ts @@ -15,7 +15,8 @@ export class RoomKeyGenerator { for (const key of allowedKeys) { if (key === 'token') { - if (data['value'] != null && data['value'] !== '' && data['value'] !== '0') { + const value = data['value']; + if (value != null && value !== '' && value !== '0') { activeFilters.push({ key: 'token', value: 'EGLD' }); } const transfers = data?.action?.arguments?.transfers; From d2f13c85ef62e71d8f2647702b41c023a0f02189 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 17 Dec 2025 10:36:11 +0200 Subject: [PATCH 107/206] renaming --- .../websocket/entities/transfers.custom.payload.ts | 4 ++-- ....ts => disallowed.field.combination.constraint.ts} | 11 +++++------ 2 files changed, 7 insertions(+), 8 deletions(-) rename src/utils/{mutual.exclusive.fields.constraint.ts => disallowed.field.combination.constraint.ts} (87%) diff --git a/src/endpoints/websocket/entities/transfers.custom.payload.ts b/src/endpoints/websocket/entities/transfers.custom.payload.ts index a1a8931d9..0c46df93f 100644 --- a/src/endpoints/websocket/entities/transfers.custom.payload.ts +++ b/src/endpoints/websocket/entities/transfers.custom.payload.ts @@ -1,9 +1,9 @@ import { IsOptional, IsString } from 'class-validator'; -import { MutualExclusiveFields } from 'src/utils/mutual.exclusive.fields.constraint'; +import { DisallowedFieldCombination } from 'src/utils/disallowed.field.combination.constraint'; import { NoEmptyPayload } from 'src/utils/no.empty.payload.validator'; @NoEmptyPayload({ message: `You must add at least one filter from ${TransferCustomSubscribePayload.getClassFields()}` }) -@MutualExclusiveFields() +@DisallowedFieldCombination() export class TransferCustomSubscribePayload { @IsOptional() @IsString() diff --git a/src/utils/mutual.exclusive.fields.constraint.ts b/src/utils/disallowed.field.combination.constraint.ts similarity index 87% rename from src/utils/mutual.exclusive.fields.constraint.ts rename to src/utils/disallowed.field.combination.constraint.ts index 8ce1b263d..5cbc62c13 100644 --- a/src/utils/mutual.exclusive.fields.constraint.ts +++ b/src/utils/disallowed.field.combination.constraint.ts @@ -6,8 +6,8 @@ import { registerDecorator, } from 'class-validator'; -@ValidatorConstraint({ name: 'mutualExclusiveFields', async: false }) -export class MutualExclusiveFieldsConstraint +@ValidatorConstraint({ name: 'disallowedFieldCombination', async: false }) +export class DisallowedFieldCombinationConstraint implements ValidatorConstraintInterface { validate(_value: any, args: ValidationArguments) { // When used as a class validator, 'value' is usually the instance itself @@ -59,16 +59,15 @@ export class MutualExclusiveFieldsConstraint } } - -export function MutualExclusiveFields(validationOptions?: ValidationOptions) { +export function DisallowedFieldCombination(validationOptions?: ValidationOptions) { return function (target: Function) { registerDecorator({ - name: 'mutualExclusiveFields', + name: 'disallowedFieldCombination', target: target as Function, propertyName: '', options: validationOptions, constraints: [], - validator: MutualExclusiveFieldsConstraint, + validator: DisallowedFieldCombinationConstraint, }); }; } From 3de2020999b47d006d554708613fb9383fc25316 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 17 Dec 2025 10:43:16 +0200 Subject: [PATCH 108/206] refactoring + skip unneeded iterations for duplicate keys --- src/crons/websocket/room.key.generator.ts | 80 +++++++++++++++-------- 1 file changed, 52 insertions(+), 28 deletions(-) diff --git a/src/crons/websocket/room.key.generator.ts b/src/crons/websocket/room.key.generator.ts index 1eb21a14b..f9a6e4c1b 100644 --- a/src/crons/websocket/room.key.generator.ts +++ b/src/crons/websocket/room.key.generator.ts @@ -9,54 +9,78 @@ export class RoomKeyGenerator { dtoClass: Function, ): string[] { const allowedKeys = this.getKeys(dtoClass); + const activeFilters = this.collectActiveFilters(allowedKeys, data); - // extract only key-value pairs that exist in the data and are non-null + if (activeFilters.length === 0) { + return []; + } + + return this.buildRoomKeys(prefix, activeFilters); + } + + private static collectActiveFilters(allowedKeys: string[], data: Record) { const activeFilters: { key: string; value: any }[] = []; for (const key of allowedKeys) { if (key === 'token') { - const value = data['value']; - if (value != null && value !== '' && value !== '0') { - activeFilters.push({ key: 'token', value: 'EGLD' }); - } - const transfers = data?.action?.arguments?.transfers; - if (Array.isArray(transfers)) { - for (const transfer of transfers) { - if (transfer.token) { - activeFilters.push({ key: 'token', value: transfer.token }); - } - } - } - } else { - const value = data[key]; - // Ignore null, undefined, and empty strings - if (value !== undefined && value !== null && value !== '') { - activeFilters.push({ key, value }); - } + this.addTokenFilters(activeFilters, data); + continue; + } + + const value = data[key]; + if (this.isValidFilterValue(value)) { + activeFilters.push({ key, value }); } } - if (activeFilters.length === 0) { - return []; + return activeFilters; + } + + private static addTokenFilters(activeFilters: { key: string; value: any }[], data: Record) { + const value = data['value']; + if (this.isValidFilterValue(value) && value !== '0') { + activeFilters.push({ key: 'token', value: 'EGLD' }); + } + + const transfers = data?.action?.arguments?.transfers; + if (!Array.isArray(transfers)) { + return; } + for (const transfer of transfers) { + if (this.isValidFilterValue(transfer?.token)) { + activeFilters.push({ key: 'token', value: transfer.token }); + } + } + } + + private static isValidFilterValue(value: any) { + return value !== undefined && value !== null && value !== ''; + } + + private static buildRoomKeys(prefix: string, activeFilters: { key: string; value: any }[]) { const rooms: string[] = []; const subsetCount = 1 << activeFilters.length; // 2^N combinations - // Generate combinatorics // Start from 1 to ignore the empty set - for (let i = 1; i < subsetCount; i++) { + for (let mask = 1; mask < subsetCount; mask++) { const currentSubset: Record = {}; + let skipIteration = false; - for (let j = 0; j < activeFilters.length; j++) { + for (let bit = 0; bit < activeFilters.length; bit++) { // Check the bit to decide whether to include the element in the subset - if ((i & (1 << j)) > 0) { - const item = activeFilters[j]; + if ((mask & (1 << bit)) > 0) { + if (currentSubset.hasOwnProperty(activeFilters[bit].key)) { + skipIteration = true; + continue; // Skip duplicate keys + } + const item = activeFilters[bit]; currentSubset[item.key] = item.value; } } - - rooms.push(`${prefix}${this.deterministicStringify(currentSubset)}`); + if (!skipIteration) { + rooms.push(`${prefix}${this.deterministicStringify(currentSubset)}`); + } } return rooms; From 308bdb2cc93e6ea88d431f9a6955cc79f4db5def Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 17 Dec 2025 10:44:47 +0200 Subject: [PATCH 109/206] explanation comments --- src/crons/websocket/room.key.generator.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/crons/websocket/room.key.generator.ts b/src/crons/websocket/room.key.generator.ts index f9a6e4c1b..84c95d77a 100644 --- a/src/crons/websocket/room.key.generator.ts +++ b/src/crons/websocket/room.key.generator.ts @@ -9,12 +9,14 @@ export class RoomKeyGenerator { dtoClass: Function, ): string[] { const allowedKeys = this.getKeys(dtoClass); + // Collect active filters based on allowed keys and provided data const activeFilters = this.collectActiveFilters(allowedKeys, data); if (activeFilters.length === 0) { return []; } + // Generate all combinations of room keys based on active filters return this.buildRoomKeys(prefix, activeFilters); } From 2bd74761457df491e8bb28aefd5289a9208b4e1a Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 17 Dec 2025 11:01:39 +0200 Subject: [PATCH 110/206] add unit test for disallowed field comb constraint --- ...lowed.field.combination.constraint.spec.ts | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/test/unit/utils/disallowed.field.combination.constraint.spec.ts diff --git a/src/test/unit/utils/disallowed.field.combination.constraint.spec.ts b/src/test/unit/utils/disallowed.field.combination.constraint.spec.ts new file mode 100644 index 000000000..0c4d0aa36 --- /dev/null +++ b/src/test/unit/utils/disallowed.field.combination.constraint.spec.ts @@ -0,0 +1,77 @@ +import 'reflect-metadata'; +import { validateSync } from 'class-validator'; +import { DisallowedFieldCombination } from '../../../utils/disallowed.field.combination.constraint'; + +@DisallowedFieldCombination() +class TestDto { + // Fields used by the constraint + address?: string; + sender?: string; + receiver?: string; + relayer?: string; + + static getFieldsSubstitutions() { + return { + address: ['sender', 'receiver', 'relayer'], + } as Record; + } +} + +@DisallowedFieldCombination() +class NoMappingDto { + // Intentionally no getFieldsSubstitutions() + foo?: string; +} + +describe('DisallowedFieldCombinationConstraint', () => { + it('is valid when only main field is provided', () => { + const dto = new TestDto(); + dto.address = 'erd1...'; + + const errors = validateSync(dto); + expect(errors).toHaveLength(0); + }); + + it('is valid when only conflicting fields are provided (no main field)', () => { + const dto = new TestDto(); + dto.sender = 'erd1...'; + + const errors = validateSync(dto); + expect(errors).toHaveLength(0); + }); + + it('is invalid when main field and one conflicting field are provided', () => { + const dto = new TestDto(); + dto.address = 'erd1...'; + dto.sender = 'erd1...'; + + const errors = validateSync(dto); + expect(errors).toHaveLength(1); + const constraintMsg = errors[0].constraints?.['disallowedFieldCombination']; + expect(constraintMsg).toBeDefined(); + expect(constraintMsg).toContain("You cannot provide 'address' simultaneously with: sender"); + }); + + it('is invalid and reports all conflicting fields that are present', () => { + const dto = new TestDto(); + dto.address = 'erd1...'; + dto.sender = 'erd1...'; + dto.receiver = 'erd1...'; + + const errors = validateSync(dto); + expect(errors).toHaveLength(1); + const constraintMsg = errors[0].constraints?.['disallowedFieldCombination'] as string; + expect(constraintMsg).toBeDefined(); + expect(constraintMsg).toContain("You cannot provide 'address' simultaneously with:"); + expect(constraintMsg).toContain('sender'); + expect(constraintMsg).toContain('receiver'); + }); + + it('is valid when class does not expose mapping function', () => { + const dto = new NoMappingDto(); + dto.foo = 'bar'; + + const errors = validateSync(dto); + expect(errors).toHaveLength(0); + }); +}); From 2bafe6acb228927a0dec22f894b8f70b4fecc3e2 Mon Sep 17 00:00:00 2001 From: cfaur09 Date: Thu, 18 Dec 2025 13:35:59 +0200 Subject: [PATCH 111/206] fixes after review --- .../collections/collection.service.ts | 94 +++++++++---------- src/endpoints/nfts/nft.service.ts | 38 ++++---- .../transactions/transaction.service.ts | 94 +++++++++---------- 3 files changed, 112 insertions(+), 114 deletions(-) diff --git a/src/endpoints/collections/collection.service.ts b/src/endpoints/collections/collection.service.ts index 30181666d..11cbc2098 100644 --- a/src/endpoints/collections/collection.service.ts +++ b/src/endpoints/collections/collection.service.ts @@ -51,20 +51,20 @@ export class CollectionService { } async getNftCollections(pagination: QueryPagination, filter: CollectionFilter): Promise { - const executeGetCollections = async (): Promise => { - const tokenCollections = await this.indexerService.getNftCollections(pagination, filter); - return await this.processNftCollections(tokenCollections); - }; - if (this.isCacheableCollectionFilter(filter)) { return await this.cachingService.getOrSet( CacheInfo.Collections(pagination).key, - executeGetCollections, + () => this.fetchAndProcessCollections(pagination, filter), CacheInfo.Collections(pagination).ttl, ); } - return await executeGetCollections(); + return await this.fetchAndProcessCollections(pagination, filter); + } + + private async fetchAndProcessCollections(pagination: QueryPagination, filter: CollectionFilter): Promise { + const tokenCollections = await this.indexerService.getNftCollections(pagination, filter); + return await this.processNftCollections(tokenCollections); } private isCacheableCollectionFilter(filter: CollectionFilter): boolean { @@ -420,20 +420,20 @@ export class CollectionService { } async getCollectionCountForAddress(address: string, filter: CollectionFilter): Promise { - const executeCount = async () => { - const collections = await this.getCollectionsForAddress(address, filter, new QueryPagination({ from: 0, size: 10000 })); - return collections.length; - }; - if (this.isDefaultAddressCollectionFilter(filter)) { return await this.cachingService.getOrSet( CacheInfo.CollectionCountForAddress(address).key, - executeCount, + () => this.computeCollectionCountForAddress(address, filter), CacheInfo.CollectionCountForAddress(address).ttl, ); } - return await executeCount(); + return await this.computeCollectionCountForAddress(address, filter); + } + + private async computeCollectionCountForAddress(address: string, filter: CollectionFilter): Promise { + const collections = await this.getCollectionsForAddress(address, filter, new QueryPagination({ from: 0, size: 10000 })); + return collections.length; } async getCollectionForAddress(address: string, identifier: string): Promise { @@ -452,44 +452,44 @@ export class CollectionService { } async getCollectionsForAddress(address: string, filter: CollectionFilter, pagination: QueryPagination): Promise { - const executeGetCollections = async (): Promise => { - const collectionsRaw = await this.indexerService.getCollectionsForAddress(address, filter, pagination); - - if (collectionsRaw.length === 0) { - return []; - } - - const identifiers = collectionsRaw.map((x: any) => x.collection); - const collections = await this.getNftCollectionsByIds(identifiers); - - const collectionMap = new Map(); - for (const collection of collections) { - collectionMap.set(collection.collection, collection); - } - - const accountCollections: NftCollectionAccount[] = []; - for (const raw of collectionsRaw) { - const collection = collectionMap.get(raw.collection); - if (collection) { - const accountCollection = ApiUtils.mergeObjects(new NftCollectionAccount(), collection); - accountCollection.count = raw.count; - accountCollections.push(accountCollection); - } - } - - return accountCollections; - }; - if (this.isDefaultAddressCollectionFilter(filter)) { const cacheInfo = CacheInfo.CollectionsForAddress(address, pagination); return await this.cachingService.getOrSet( cacheInfo.key, - executeGetCollections, + () => this.fetchCollectionsForAddress(address, filter, pagination), cacheInfo.ttl, ); } - return await executeGetCollections(); + return await this.fetchCollectionsForAddress(address, filter, pagination); + } + + private async fetchCollectionsForAddress(address: string, filter: CollectionFilter, pagination: QueryPagination): Promise { + const collectionsRaw = await this.indexerService.getCollectionsForAddress(address, filter, pagination); + + if (collectionsRaw.length === 0) { + return []; + } + + const identifiers = collectionsRaw.map((x: any) => x.collection); + const collections = await this.getNftCollectionsByIds(identifiers); + + const collectionMap = new Map(); + for (const collection of collections) { + collectionMap.set(collection.collection, collection); + } + + const accountCollections: NftCollectionAccount[] = []; + for (const raw of collectionsRaw) { + const collection = collectionMap.get(raw.collection); + if (collection) { + const accountCollection = ApiUtils.mergeObjects(new NftCollectionAccount(), collection); + accountCollection.count = raw.count; + accountCollections.push(accountCollection); + } + } + + return accountCollections; } private isDefaultAddressCollectionFilter(filter: CollectionFilter): boolean { @@ -501,17 +501,15 @@ export class CollectionService { } async getCollectionCountForAddressWithRoles(address: string, filter: CollectionFilter): Promise { - const executeCount = async () => await this.esdtAddressService.getCollectionCountForAddressFromElastic(address, filter); - if (this.isDefaultAddressCollectionFilter(filter)) { return await this.cachingService.getOrSet( CacheInfo.CollectionRolesCountForAddress(address).key, - executeCount, + () => this.esdtAddressService.getCollectionCountForAddressFromElastic(address, filter), CacheInfo.CollectionRolesCountForAddress(address).ttl, ); } - return await executeCount(); + return await this.esdtAddressService.getCollectionCountForAddressFromElastic(address, filter); } private async getCollectionLogo(identifier: string): Promise { diff --git a/src/endpoints/nfts/nft.service.ts b/src/endpoints/nfts/nft.service.ts index d81bb7268..595721878 100644 --- a/src/endpoints/nfts/nft.service.ts +++ b/src/endpoints/nfts/nft.service.ts @@ -66,33 +66,33 @@ export class NftService { } async getNfts(queryPagination: QueryPagination, filter: NftFilter, queryOptions?: NftQueryOptions): Promise { - const executeGetNfts = async (): Promise => { - const { from, size } = queryPagination; - - const nfts = await this.getNftsInternal({ from, size }, filter); - - await Promise.all([ - this.conditionallyApplyAssetsAndTicker(nfts, undefined, queryOptions), - this.conditionallyApplyOwners(nfts, queryOptions), - this.conditionallyApplySupply(nfts, queryOptions), - this.batchProcessNfts(nfts), - ]); - - await this.batchApplyUnlockFields(nfts); - - return nfts; - }; - if (this.isCacheableNftList(filter, queryOptions)) { const cacheInfo = CacheInfo.Nfts(queryPagination); return await this.cachingService.getOrSet( cacheInfo.key, - executeGetNfts, + () => this.fetchAndProcessNfts(queryPagination, filter, queryOptions), cacheInfo.ttl, ); } - return await executeGetNfts(); + return await this.fetchAndProcessNfts(queryPagination, filter, queryOptions); + } + + private async fetchAndProcessNfts(queryPagination: QueryPagination, filter: NftFilter, queryOptions?: NftQueryOptions): Promise { + const { from, size } = queryPagination; + + const nfts = await this.getNftsInternal({ from, size }, filter); + + await Promise.all([ + this.conditionallyApplyAssetsAndTicker(nfts, undefined, queryOptions), + this.conditionallyApplyOwners(nfts, queryOptions), + this.conditionallyApplySupply(nfts, queryOptions), + this.batchProcessNfts(nfts), + ]); + + await this.batchApplyUnlockFields(nfts); + + return nfts; } private async batchProcessNfts(nfts: Nft[], fields?: string[]) { diff --git a/src/endpoints/transactions/transaction.service.ts b/src/endpoints/transactions/transaction.service.ts index 1ca50ad62..765b9429e 100644 --- a/src/endpoints/transactions/transaction.service.ts +++ b/src/endpoints/transactions/transaction.service.ts @@ -201,67 +201,67 @@ export class TransactionService { } async getTransactions(filter: TransactionFilter, pagination: QueryPagination, queryOptions?: TransactionQueryOptions, address?: string, fields?: string[]): Promise { - const computeTransactions = async (): Promise => { - const elasticTransactions = await this.indexerService.getTransactions(filter, pagination, address); + if (this.isCacheableTransactionList(filter, queryOptions, fields, address)) { + const cacheInfo = CacheInfo.Transactions(pagination); + return await this.cachingService.getOrSet( + cacheInfo.key, + () => this.computeTransactions(filter, pagination, queryOptions, address, fields), + cacheInfo.ttl, + Constants.oneSecond(), + ); + } - let transactions: TransactionDetailed[] = []; - transactions = elasticTransactions.map(x => ApiUtils.mergeObjects(new TransactionDetailed(), x)); + return await this.computeTransactions(filter, pagination, queryOptions, address, fields); + } - const hasSenderFilter = filter.sender || (filter.senders && filter.senders.length > 0); - const hasReceiverFilter = filter.receivers && filter.receivers.length > 0; + private async computeTransactions(filter: TransactionFilter, pagination: QueryPagination, queryOptions?: TransactionQueryOptions, address?: string, fields?: string[]): Promise { + const elasticTransactions = await this.indexerService.getTransactions(filter, pagination, address); - if (address && !hasSenderFilter && !hasReceiverFilter) { - transactions = this.reorderAccountSentTransactionsByNonce(transactions, address); - } + let transactions: TransactionDetailed[] = []; + transactions = elasticTransactions.map(x => ApiUtils.mergeObjects(new TransactionDetailed(), x)); - if (filter.hashes) { - const txHashes: string[] = filter.hashes; - const elasticHashes = elasticTransactions.map(({ txHash }: any) => txHash); - const missingHashes: string[] = txHashes.except(elasticHashes); + const hasSenderFilter = filter.sender || (filter.senders && filter.senders.length > 0); + const hasReceiverFilter = filter.receivers && filter.receivers.length > 0; - const gatewayTransactions = await Promise.all(missingHashes.map((txHash) => this.transactionGetService.tryGetTransactionFromGatewayForList(txHash))); - for (const gatewayTransaction of gatewayTransactions) { - if (gatewayTransaction) { - transactions.push(ApiUtils.mergeObjects(new TransactionDetailed(), gatewayTransaction)); - } - } - } + if (address && !hasSenderFilter && !hasReceiverFilter) { + transactions = this.reorderAccountSentTransactionsByNonce(transactions, address); + } - if ((queryOptions && queryOptions.withBlockInfo) || (fields && fields.includesSome(['senderBlockHash', 'receiverBlockHash', 'senderBlockNonce', 'receiverBlockNonce']))) { - await this.applyBlockInfo(transactions); - } + if (filter.hashes) { + const txHashes: string[] = filter.hashes; + const elasticHashes = elasticTransactions.map(({ txHash }: any) => txHash); + const missingHashes: string[] = txHashes.except(elasticHashes); - if (queryOptions && (queryOptions.withScResults || queryOptions.withOperations || queryOptions.withLogs)) { - queryOptions.withScResultLogs = queryOptions.withLogs; - transactions = await this.getExtraDetailsForTransactions(elasticTransactions, transactions, queryOptions); + const gatewayTransactions = await Promise.all(missingHashes.map((txHash) => this.transactionGetService.tryGetTransactionFromGatewayForList(txHash))); + for (const gatewayTransaction of gatewayTransactions) { + if (gatewayTransaction) { + transactions.push(ApiUtils.mergeObjects(new TransactionDetailed(), gatewayTransaction)); + } } + } - for (const transaction of transactions) { - transaction.type = undefined; - } + if ((queryOptions && queryOptions.withBlockInfo) || (fields && fields.includesSome(['senderBlockHash', 'receiverBlockHash', 'senderBlockNonce', 'receiverBlockNonce']))) { + await this.applyBlockInfo(transactions); + } - await this.processTransactions(transactions, { - withScamInfo: queryOptions?.withScamInfo ?? false, - withUsername: queryOptions?.withUsername ?? false, - withActionTransferValue: queryOptions?.withActionTransferValue ?? false, - }); + if (queryOptions && (queryOptions.withScResults || queryOptions.withOperations || queryOptions.withLogs)) { + queryOptions.withScResultLogs = queryOptions.withLogs; + transactions = await this.getExtraDetailsForTransactions(elasticTransactions, transactions, queryOptions); + } - this.processRelayedInfo(transactions); + for (const transaction of transactions) { + transaction.type = undefined; + } - return transactions; - }; + await this.processTransactions(transactions, { + withScamInfo: queryOptions?.withScamInfo ?? false, + withUsername: queryOptions?.withUsername ?? false, + withActionTransferValue: queryOptions?.withActionTransferValue ?? false, + }); - if (this.isCacheableTransactionList(filter, queryOptions, fields, address)) { - const cacheInfo = CacheInfo.Transactions(pagination); - return await this.cachingService.getOrSet( - cacheInfo.key, - computeTransactions, - cacheInfo.ttl, - Constants.oneSecond(), - ); - } + this.processRelayedInfo(transactions); - return await computeTransactions(); + return transactions; } private getAssetsFromUsername(username: string | null | undefined): AccountAssets | undefined { From 62777536d0a1ebf68089e066f6d34fa16e8bc3b9 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 19 Dec 2025 11:00:35 +0200 Subject: [PATCH 112/206] add configurable broadcast interval --- config/config.devnet.yaml | 1 + config/config.e2e-mocked.mainnet.yaml | 1 + config/config.e2e.mainnet.yaml | 1 + config/config.mainnet.yaml | 1 + config/config.testnet.yaml | 1 + src/common/api-config/api.config.service.ts | 4 + src/crons/websocket/websocket.cron.service.ts | 87 +++++++++++++++---- 7 files changed, 78 insertions(+), 18 deletions(-) diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index ca4881403..8d76292b7 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -25,6 +25,7 @@ features: port: 6002 maxSubscriptionsPerInstance: 10000 maxSubscriptionsPerClient: 10 + broadcastIntervalMs: 6000 eventsNotifier: enabled: false port: 5674 diff --git a/config/config.e2e-mocked.mainnet.yaml b/config/config.e2e-mocked.mainnet.yaml index a0c52d290..f65f05065 100644 --- a/config/config.e2e-mocked.mainnet.yaml +++ b/config/config.e2e-mocked.mainnet.yaml @@ -10,6 +10,7 @@ features: port: 6002 maxSubscriptionsPerInstance: 10000 maxSubscriptionsPerClient: 10 + broadcastIntervalMs: 6000 dataApi: enabled: false serviceUrl: 'https://data-api.multiversx.com' diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index 187ea0809..50da09bff 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -25,6 +25,7 @@ features: port: 6002 maxSubscriptionsPerInstance: 10000 maxSubscriptionsPerClient: 10 + broadcastIntervalMs: 6000 eventsNotifier: enabled: false port: 5674 diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index f7401a4f3..a90823e54 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -25,6 +25,7 @@ features: port: 6002 maxSubscriptionsPerInstance: 10000 maxSubscriptionsPerClient: 10 + broadcastIntervalMs: 6000 eventsNotifier: enabled: false port: 5674 diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index 06f04705c..c897aa17b 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -25,6 +25,7 @@ features: port: 6002 maxSubscriptionsPerInstance: 10000 maxSubscriptionsPerClient: 10 + broadcastIntervalMs: 6000 eventsNotifier: enabled: false port: 5674 diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index 3515c88a8..6496eafbd 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -1012,6 +1012,10 @@ export class ApiConfigService { return port; } + getWebsocketSubscriptionBroadcastIntervalMs(): number { + return this.configService.get('features.websocketSubscription.broadcastIntervalMs') ?? 6000; + } + getWebsocketMaxSubscriptionsPerInstance(): number { return this.configService.get('features.websocketSubscription.maxSubscriptionsPerInstance') ?? 10_000; } diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 7cf8992d6..fe2ec0e2b 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -1,9 +1,9 @@ -import { Injectable } from '@nestjs/common'; -import { Cron } from '@nestjs/schedule'; +import { Injectable, OnModuleInit } from '@nestjs/common'; +import { Cron, SchedulerRegistry } from '@nestjs/schedule'; import { TransactionsGateway } from './transaction.gateway'; import { BlocksGateway } from 'src/crons/websocket/blocks.gateway'; import { NetworkGateway } from 'src/crons/websocket/network.gateway'; -import { Lock } from "@multiversx/sdk-nestjs-common"; +import { Lock, Locker } from "@multiversx/sdk-nestjs-common"; import { PoolGateway } from 'src/crons/websocket/pool.gateway'; import { EventsGateway } from 'src/crons/websocket/events.gateway'; import { WebSocketGateway, WebSocketServer } from '@nestjs/websockets'; @@ -21,10 +21,11 @@ import { TransactionsCustomGateway } from './transaction.custom.gateway'; import { ConnectionHandler } from './connection.handler'; import { EventsCustomGateway } from './events.custom.gateway'; import { TransfersCustomGateway } from './transfers.custom.gateway'; +import { ApiConfigService } from 'src/common/api-config/api.config.service'; @Injectable() @WebSocketGateway({ cors: { origin: '*' }, path: '/ws/subscription' }) -export class WebsocketCronService { +export class WebsocketCronService implements OnModuleInit { @WebSocketServer() server!: Server; @@ -43,41 +44,91 @@ export class WebsocketCronService { private readonly eventsCustomGateway: EventsCustomGateway, private readonly connectionHandler: ConnectionHandler, private readonly transfersCustomGateway: TransfersCustomGateway, + private readonly apiConfigService: ApiConfigService, + private readonly schedulerRegistry: SchedulerRegistry, ) { } - @Cron('*/6 * * * * *') - @Lock({ name: 'Push transactions to subscribers', verbose: true }) + + onModuleInit() { + const intervalMs = this.apiConfigService.getWebsocketSubscriptionBroadcastIntervalMs(); + + this.registerDynamicInterval( + 'push-transactions', + intervalMs, + 'Push transactions to subscribers', + async () => await this.handleTransactionsUpdate() + ); + + this.registerDynamicInterval( + 'push-blocks', + intervalMs, + 'Push blocks to subscribers', + async () => await this.handleBlocksUpdate() + ); + + this.registerDynamicInterval( + 'push-stats', + intervalMs, + 'Push stats to subscribers', + async () => await this.handleStatsUpdate() + ); + + this.registerDynamicInterval( + 'push-pool', + intervalMs, + 'Push pool transactions to subscribers', + async () => await this.handlePoolUpdate() + ); + + this.registerDynamicInterval( + 'push-events', + intervalMs, + 'Push events to subscribers', + async () => await this.handleEventsUpdate() + ); + + this.registerDynamicInterval( + 'push-custom-data', + intervalMs, + 'Push custom data to subscribers', + async () => await this.handleCustomDataUpdate() + ); + + + } + + private registerDynamicInterval(name: string, ms: number, lockMessage: string, callback: () => Promise) { + const interval = setInterval(async () => { + await Locker.lock(lockMessage, async () => { + await callback(); + }, true); + }, ms); + + this.schedulerRegistry.addInterval(name, interval); + } + async handleTransactionsUpdate() { await this.transactionsGateway.pushTransactions(); } - @Cron('*/6 * * * * *') - @Lock({ name: 'Push blocks to subscribers', verbose: true }) async handleBlocksUpdate() { await this.blocksGateway.pushBlocks(); } - @Cron('*/6 * * * * *') - @Lock({ name: 'Push stats to subscribers', verbose: true }) async handleStatsUpdate() { await this.networkGateway.pushStats(); } - @Cron('*/6 * * * * *') - @Lock({ name: 'Push pool transactions to subscribers', verbose: true }) - async handlePoolTransactions() { + async handlePoolUpdate() { await this.poolGateway.pushPool(); } - @Cron('*/6 * * * * *') - @Lock({ name: 'Push events to subscribers', verbose: true }) + async handleEventsUpdate() { await this.eventsGateway.pushEvents(); } - @Cron('*/3 * * * * *') - @Lock({ name: 'Push custom data to subscribers', verbose: true }) - async handleCustomTransactionsUpdate() { + async handleCustomDataUpdate() { if (this.connectionHandler.hasSubscriptionsWithPrefixes([TransactionsCustomGateway.keyPrefix]) === false) { this.cacheService.deleteLocal(CacheInfo.WsTimestampMsToProcess().key); return; From 1c0f6d2a2351027d399741ecab9fcadec8216f54 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 19 Dec 2025 11:05:23 +0200 Subject: [PATCH 113/206] add check keys present for transfers + events filtered --- src/crons/websocket/websocket.cron.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index fe2ec0e2b..93dd4cf1c 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -129,7 +129,7 @@ export class WebsocketCronService implements OnModuleInit { } async handleCustomDataUpdate() { - if (this.connectionHandler.hasSubscriptionsWithPrefixes([TransactionsCustomGateway.keyPrefix]) === false) { + if (this.connectionHandler.hasSubscriptionsWithPrefixes([TransactionsCustomGateway.keyPrefix, TransfersCustomGateway.keyPrefix, EventsCustomGateway.keyPrefix]) === false) { this.cacheService.deleteLocal(CacheInfo.WsTimestampMsToProcess().key); return; } From 90530646f6dcc2adb1abc5ffd4f478e2cb1b059d Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 19 Dec 2025 14:33:28 +0200 Subject: [PATCH 114/206] remove async await --- src/crons/websocket/websocket.cron.service.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 93dd4cf1c..582469f0d 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -56,42 +56,42 @@ export class WebsocketCronService implements OnModuleInit { 'push-transactions', intervalMs, 'Push transactions to subscribers', - async () => await this.handleTransactionsUpdate() + () => this.handleTransactionsUpdate() ); this.registerDynamicInterval( 'push-blocks', intervalMs, 'Push blocks to subscribers', - async () => await this.handleBlocksUpdate() + () => this.handleBlocksUpdate() ); this.registerDynamicInterval( 'push-stats', intervalMs, 'Push stats to subscribers', - async () => await this.handleStatsUpdate() + () => this.handleStatsUpdate() ); this.registerDynamicInterval( 'push-pool', intervalMs, 'Push pool transactions to subscribers', - async () => await this.handlePoolUpdate() + () => this.handlePoolUpdate() ); this.registerDynamicInterval( 'push-events', intervalMs, 'Push events to subscribers', - async () => await this.handleEventsUpdate() + () => this.handleEventsUpdate() ); this.registerDynamicInterval( 'push-custom-data', intervalMs, 'Push custom data to subscribers', - async () => await this.handleCustomDataUpdate() + () => this.handleCustomDataUpdate() ); From 0734a7aefa11d668e96d25aed3c0c64ac0de84ab Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 19 Dec 2025 15:52:02 +0200 Subject: [PATCH 115/206] fix --- src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index 7d014bc70..e67eb167c 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -174,7 +174,7 @@ describe('Websocket subscriptions e2e tests', () => { const newAliceEsdts = await issueMultipleEsdts(config.chainSimulatorUrl, config.aliceAddress, 1); aliceEsdts.push(...newAliceEsdts); - await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/1`); + await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/10`); for (const item of filterMap) { if (item.key === filterKeys.CLIENT_7) { @@ -185,7 +185,7 @@ describe('Websocket subscriptions e2e tests', () => { connectAndSubscribeGeneral("client4", client4SubscriptionConfig); - await new Promise(resolve => setTimeout(resolve, 5000)); + await new Promise(resolve => setTimeout(resolve, 10000)); log("\n--- Starting Operations ---"); From 073b6c2421cd8a20dc75d9c014090d0f4135b04b Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 8 Jan 2026 15:53:27 +0200 Subject: [PATCH 116/206] fix nft attributes source --- src/endpoints/nfts/nft.service.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/endpoints/nfts/nft.service.ts b/src/endpoints/nfts/nft.service.ts index b4a5192db..3b9f4185a 100644 --- a/src/endpoints/nfts/nft.service.ts +++ b/src/endpoints/nfts/nft.service.ts @@ -324,12 +324,20 @@ export class NftService { return; } - const nftsForAddress = await this.esdtAddressService.getNftsForAddress(nft.owner, new NftFilter({ identifiers: [nft.identifier] }), new QueryPagination({ from: 0, size: 1 })); - if (nftsForAddress.length === 0) { - return; + let attributes = nft.attributes; + if (!attributes || attributes.length === 0) { + const nftsForAddress = await this.esdtAddressService.getNftsForAddress(nft.owner, new NftFilter({identifiers: [nft.identifier]}), new QueryPagination({ + from: 0, + size: 1 + })); + if (nftsForAddress.length === 0) { + return; + } + + attributes = nftsForAddress[0].attributes; } - nft.attributes = nftsForAddress[0].attributes; + nft.attributes = attributes; } private async applyMedia(nft: Nft) { From cb7d4be8f3f06917cc6d2f53475baeaef270f54b Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 8 Jan 2026 15:58:53 +0200 Subject: [PATCH 117/206] fix lint --- src/endpoints/nfts/nft.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/endpoints/nfts/nft.service.ts b/src/endpoints/nfts/nft.service.ts index 3b9f4185a..a9e8a3416 100644 --- a/src/endpoints/nfts/nft.service.ts +++ b/src/endpoints/nfts/nft.service.ts @@ -328,7 +328,7 @@ export class NftService { if (!attributes || attributes.length === 0) { const nftsForAddress = await this.esdtAddressService.getNftsForAddress(nft.owner, new NftFilter({identifiers: [nft.identifier]}), new QueryPagination({ from: 0, - size: 1 + size: 1, })); if (nftsForAddress.length === 0) { return; From 6d453e5d88852ac266e5ac96e31a9c5d4a728d54 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 8 Jan 2026 16:53:30 +0200 Subject: [PATCH 118/206] allow admins to trigger nft updates --- src/endpoints/process-nfts/process.nfts.service.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/endpoints/process-nfts/process.nfts.service.ts b/src/endpoints/process-nfts/process.nfts.service.ts index 2a9f75c8a..10a185a06 100644 --- a/src/endpoints/process-nfts/process.nfts.service.ts +++ b/src/endpoints/process-nfts/process.nfts.service.ts @@ -97,6 +97,9 @@ export class ProcessNftsService { } private async isCollectionOwner(address: string, collection: string): Promise { + if (this.apiConfigService.getSecurityAdmins().includes(address)) { + return true; + } const collectionOwner = await this.getCollectionNonScOwner(collection); return address === collectionOwner; From 5b69e81f72d221d029147bf813362134162b9150 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 8 Jan 2026 17:23:28 +0200 Subject: [PATCH 119/206] print --- src/common/api-config/mxnest-config-service-impl.service.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/common/api-config/mxnest-config-service-impl.service.ts b/src/common/api-config/mxnest-config-service-impl.service.ts index 47515f380..1494ae33d 100644 --- a/src/common/api-config/mxnest-config-service-impl.service.ts +++ b/src/common/api-config/mxnest-config-service-impl.service.ts @@ -25,6 +25,9 @@ export class MxnestConfigServiceImpl implements MxnestConfigService { } getNativeAuthAcceptedOrigins(): string[] { - return this.apiConfigService.getNativeAuthAcceptedOrigins(); + const acceptedOrigins = this.apiConfigService.getNativeAuthAcceptedOrigins(); + console.log(`Accepted origins are: ${acceptedOrigins}`); + + return acceptedOrigins; } } From dc044aaee99bc152ecf8cea04f5190ac6f0bdcb9 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 8 Jan 2026 17:32:44 +0200 Subject: [PATCH 120/206] revert log --- src/common/api-config/mxnest-config-service-impl.service.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/common/api-config/mxnest-config-service-impl.service.ts b/src/common/api-config/mxnest-config-service-impl.service.ts index 1494ae33d..47515f380 100644 --- a/src/common/api-config/mxnest-config-service-impl.service.ts +++ b/src/common/api-config/mxnest-config-service-impl.service.ts @@ -25,9 +25,6 @@ export class MxnestConfigServiceImpl implements MxnestConfigService { } getNativeAuthAcceptedOrigins(): string[] { - const acceptedOrigins = this.apiConfigService.getNativeAuthAcceptedOrigins(); - console.log(`Accepted origins are: ${acceptedOrigins}`); - - return acceptedOrigins; + return this.apiConfigService.getNativeAuthAcceptedOrigins(); } } From dc412afda11fa17893a7880048ab690d1989c146 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 15 Jan 2026 11:02:01 +0200 Subject: [PATCH 121/206] add support for custom transfers metrics --- src/crons/websocket/websocket.cron.service.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/crons/websocket/websocket.cron.service.ts b/src/crons/websocket/websocket.cron.service.ts index 582469f0d..3e5eafb7c 100644 --- a/src/crons/websocket/websocket.cron.service.ts +++ b/src/crons/websocket/websocket.cron.service.ts @@ -179,6 +179,7 @@ export class WebsocketCronService implements OnModuleInit { { key: 'customTx', prefix: TransactionsCustomGateway.keyPrefix }, { key: 'events', prefix: EventsGateway.keyPrefix }, { key: 'customEvents', prefix: EventsCustomGateway.keyPrefix }, + { key: 'customTransfers', prefix: TransfersCustomGateway.keyPrefix }, { key: 'blocks', prefix: BlocksGateway.keyPrefix }, { key: 'pool', prefix: PoolGateway.keyPrefix }, { key: 'stats', room: 'statsRoom' }, From 38f2e2f8e7356c12725330fd5a9c2580ac5fe7bd Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 15 Jan 2026 16:01:31 +0200 Subject: [PATCH 122/206] increase-max-listeners --- src/crons/websocket/connection.handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crons/websocket/connection.handler.ts b/src/crons/websocket/connection.handler.ts index ae1f74a08..c430eab29 100644 --- a/src/crons/websocket/connection.handler.ts +++ b/src/crons/websocket/connection.handler.ts @@ -15,7 +15,7 @@ export class ConnectionHandler implements OnGatewayDisconnect, OnGatewayConnecti handleDisconnect(_client: Socket) { } handleConnection(client: Socket, ..._args: any[]) { - client.setMaxListeners(16); + client.setMaxListeners(17); } hasSubscriptionsWithPrefixes(prefixes: string[]): boolean { From 1bcbc0ce9b4e8eab8333fa30f635cc51a53103f9 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 15 Jan 2026 16:03:39 +0200 Subject: [PATCH 123/206] increase max listeners --- src/crons/websocket/connection.handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crons/websocket/connection.handler.ts b/src/crons/websocket/connection.handler.ts index c430eab29..b5c5f23ee 100644 --- a/src/crons/websocket/connection.handler.ts +++ b/src/crons/websocket/connection.handler.ts @@ -15,7 +15,7 @@ export class ConnectionHandler implements OnGatewayDisconnect, OnGatewayConnecti handleDisconnect(_client: Socket) { } handleConnection(client: Socket, ..._args: any[]) { - client.setMaxListeners(17); + client.setMaxListeners(20); } hasSubscriptionsWithPrefixes(prefixes: string[]): boolean { From 24722fee38d20ba7221db247eef7af10dd20e591 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Wed, 21 Jan 2026 15:40:47 +0200 Subject: [PATCH 124/206] fetch miniblocks from execution results --- .../indexer/elastic/elastic.indexer.service.ts | 4 ++++ src/common/indexer/indexer.interface.ts | 2 ++ src/common/indexer/indexer.service.ts | 5 +++++ src/endpoints/blocks/block.service.ts | 16 +++++++++++++++- 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/common/indexer/elastic/elastic.indexer.service.ts b/src/common/indexer/elastic/elastic.indexer.service.ts index 6ed6d2558..e8d12fd6d 100644 --- a/src/common/indexer/elastic/elastic.indexer.service.ts +++ b/src/common/indexer/elastic/elastic.indexer.service.ts @@ -251,6 +251,10 @@ export class ElasticIndexerService implements IndexerInterface { return await this.elasticService.getItem('blocks', 'hash', hash); } + async getExecutionResults(hash: string): Promise { + return await this.elasticService.getItem('executionresults', 'hash', hash); + } + async getBlockByMiniBlockHash(miniBlockHash: string): Promise { const elasticQuery = ElasticQuery.create() .withCondition(QueryConditionOptions.must, [QueryType.Match('miniBlocksHashes', miniBlockHash)]) diff --git a/src/common/indexer/indexer.interface.ts b/src/common/indexer/indexer.interface.ts index 8ede69e50..19e1d3cef 100644 --- a/src/common/indexer/indexer.interface.ts +++ b/src/common/indexer/indexer.interface.ts @@ -74,6 +74,8 @@ export interface IndexerInterface { getBlock(hash: string): Promise + getExecutionResults(hash: string): Promise + getBlockByMiniBlockHash(miniBlockHash: string): Promise getMiniBlock(miniBlockHash: string): Promise diff --git a/src/common/indexer/indexer.service.ts b/src/common/indexer/indexer.service.ts index 3798f604e..80d0f801b 100644 --- a/src/common/indexer/indexer.service.ts +++ b/src/common/indexer/indexer.service.ts @@ -166,6 +166,11 @@ export class IndexerService implements IndexerInterface { return await this.indexerInterface.getBlock(hash); } + @LogPerformanceAsync(MetricsEvents.SetIndexerDuration) + async getExecutionResults(hash: string): Promise { + return await this.indexerInterface.getBlock(hash); + } + @LogPerformanceAsync(MetricsEvents.SetIndexerDuration) async getBlockByMiniBlockHash(miniBlockHash: string): Promise { return await this.indexerInterface.getBlockByMiniBlockHash(miniBlockHash); diff --git a/src/endpoints/blocks/block.service.ts b/src/endpoints/blocks/block.service.ts index d7ef41d71..e8fd9f7f0 100644 --- a/src/endpoints/blocks/block.service.ts +++ b/src/endpoints/blocks/block.service.ts @@ -11,6 +11,7 @@ import { NodeService } from "../nodes/node.service"; import { IdentitiesService } from "../identities/identities.service"; import { ApiConfigService } from "../../common/api-config/api.config.service"; import { ConcurrencyUtils } from "src/utils/concurrency.utils"; +import { ApiUtils } from "@multiversx/sdk-nestjs-http"; @Injectable() export class BlockService { @@ -109,11 +110,19 @@ export class BlockService { } async getBlock(hash: string): Promise { - const result = await this.indexerService.getBlock(hash) as any; + let result = await this.indexerService.getBlock(hash) as any; const isChainAndromedaEnabled = this.apiConfigService.isChainAndromedaEnabled() && result.epoch >= this.apiConfigService.getChainAndromedaActivationEpoch(); + const isSupernovaEnabled = result.epoch >= await this.getSupernovaEnableEpoch(); + if (isSupernovaEnabled) { + const executionResults = await this.indexerService.getExecutionResults(hash); + if (executionResults) { + result = ApiUtils.mergeObjects(result, executionResults); + } + } + if (result.round > 0) { const publicKeys = await this.blsService.getPublicKeys(result.shardId, result.epoch); if (result.proposerBlsKey) { @@ -161,4 +170,9 @@ export class BlockService { } return blocks[0]; } + + async getSupernovaEnableEpoch(): Promise { + // TODO: fetch it from proxy /network/enable-epochs -> erd_supernova_enable_epoch + return await Promise.resolve(2); + } } From 2fddce223c6738eaeaee0b2693008beab9ed6b59 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Wed, 21 Jan 2026 16:06:13 +0200 Subject: [PATCH 125/206] fix --- src/common/indexer/indexer.service.ts | 2 +- src/endpoints/blocks/block.service.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/indexer/indexer.service.ts b/src/common/indexer/indexer.service.ts index 80d0f801b..b0dd2e11d 100644 --- a/src/common/indexer/indexer.service.ts +++ b/src/common/indexer/indexer.service.ts @@ -168,7 +168,7 @@ export class IndexerService implements IndexerInterface { @LogPerformanceAsync(MetricsEvents.SetIndexerDuration) async getExecutionResults(hash: string): Promise { - return await this.indexerInterface.getBlock(hash); + return await this.indexerInterface.getExecutionResults(hash); } @LogPerformanceAsync(MetricsEvents.SetIndexerDuration) diff --git a/src/endpoints/blocks/block.service.ts b/src/endpoints/blocks/block.service.ts index e8fd9f7f0..0473239e5 100644 --- a/src/endpoints/blocks/block.service.ts +++ b/src/endpoints/blocks/block.service.ts @@ -131,7 +131,7 @@ export class BlockService { result.proposer = publicKeys[result.proposer]; } if (!isChainAndromedaEnabled) { - result.validators = result.validators.map((validator: number) => publicKeys[validator]); + result.validators = result.validators?.map((validator: number) => publicKeys[validator]); } else { result.validators = publicKeys; } From 321bee212f39db78bb59a7165cff144e300e4120 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Wed, 21 Jan 2026 16:56:59 +0200 Subject: [PATCH 126/206] use network enable epochs --- .../entities/gateway.component.request.ts | 2 ++ src/common/gateway/gateway.service.ts | 10 ++++++++++ src/endpoints/blocks/block.service.ts | 17 ++++++++++++++--- src/endpoints/proxy/gateway.proxy.controller.ts | 10 ++++++++++ src/utils/cache.info.ts | 5 +++++ 5 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/common/gateway/entities/gateway.component.request.ts b/src/common/gateway/entities/gateway.component.request.ts index 066b06904..57d1174ee 100644 --- a/src/common/gateway/entities/gateway.component.request.ts +++ b/src/common/gateway/entities/gateway.component.request.ts @@ -1,5 +1,7 @@ export enum GatewayComponentRequest { networkConfig = 'networkConfig', + networkEnableEpochs = 'networkEnableEpochs', + networkEnableEpochsV2 = 'networkEnableEpochsV2', networkStatus = 'networkStatus', networkEsdt = 'networkEsdt', networkEconomics = 'networkEconomics', diff --git a/src/common/gateway/gateway.service.ts b/src/common/gateway/gateway.service.ts index 45d5c827d..755fd8638 100644 --- a/src/common/gateway/gateway.service.ts +++ b/src/common/gateway/gateway.service.ts @@ -91,6 +91,16 @@ export class GatewayService { }); } + async getNetworkEnableEpochs(): Promise> { + const result = await this.get(`network/enable-epochs`, GatewayComponentRequest.networkEnableEpochs); + return result.enableEpochs; + } + + async getNetworkEnableEpochsV2(): Promise> { + const result = await this.get(`network/enable-epochs-v2`, GatewayComponentRequest.networkEnableEpochsV2); + return result.enableEpochs; + } + async getAddressDetails(address: string): Promise { const result = await this.get(`address/${address}`, GatewayComponentRequest.addressDetails); return result; diff --git a/src/endpoints/blocks/block.service.ts b/src/endpoints/blocks/block.service.ts index 0473239e5..7a508a1d0 100644 --- a/src/endpoints/blocks/block.service.ts +++ b/src/endpoints/blocks/block.service.ts @@ -12,6 +12,7 @@ import { IdentitiesService } from "../identities/identities.service"; import { ApiConfigService } from "../../common/api-config/api.config.service"; import { ConcurrencyUtils } from "src/utils/concurrency.utils"; import { ApiUtils } from "@multiversx/sdk-nestjs-http"; +import { GatewayService } from "../../common/gateway/gateway.service"; @Injectable() export class BlockService { @@ -24,6 +25,7 @@ export class BlockService { @Inject(forwardRef(() => IdentitiesService)) private readonly identitiesService: IdentitiesService, private readonly apiConfigService: ApiConfigService, + private readonly gatewayService: GatewayService, ) { } async getBlocksCount(filter: BlockFilter): Promise { @@ -115,7 +117,8 @@ export class BlockService { const isChainAndromedaEnabled = this.apiConfigService.isChainAndromedaEnabled() && result.epoch >= this.apiConfigService.getChainAndromedaActivationEpoch(); - const isSupernovaEnabled = result.epoch >= await this.getSupernovaEnableEpoch(); + const supernovaEnableEpoch = await this.getSupernovaEnableEpoch(); + const isSupernovaEnabled = supernovaEnableEpoch !== -1 && result.epoch >= supernovaEnableEpoch; if (isSupernovaEnabled) { const executionResults = await this.indexerService.getExecutionResults(hash); if (executionResults) { @@ -172,7 +175,15 @@ export class BlockService { } async getSupernovaEnableEpoch(): Promise { - // TODO: fetch it from proxy /network/enable-epochs -> erd_supernova_enable_epoch - return await Promise.resolve(2); + const enableEpochs = await this.getNetworkEnableEpochs(); + return enableEpochs["erd_supernova_enable_epoch"] ?? -1; + } + + async getNetworkEnableEpochs(): Promise> { + return await this.cachingService.getOrSet( + CacheInfo.NetworkEnableEpochs.key, + async () => this.gatewayService.getNetworkEnableEpochs(), + CacheInfo.NetworkEnableEpochs.ttl, + ) } } diff --git a/src/endpoints/proxy/gateway.proxy.controller.ts b/src/endpoints/proxy/gateway.proxy.controller.ts index 0d892488b..e09257a60 100644 --- a/src/endpoints/proxy/gateway.proxy.controller.ts +++ b/src/endpoints/proxy/gateway.proxy.controller.ts @@ -233,6 +233,16 @@ export class GatewayProxyController { return await this.gatewayGet('network/config', GatewayComponentRequest.networkConfig); } + @Get('/network/enable-epochs') + async getNetworkEnableEpochs() { + return await this.gatewayGet('network/enable-epochs', GatewayComponentRequest.networkEnableEpochs); + } + + @Get('/network/enable-epochs-v2') + async getNetworkEnabledEpochsV2() { + return await this.gatewayGet('network/enable-epochs-v2', GatewayComponentRequest.networkEnableEpochsV2); + } + @Get('/network/economics') async getNetworkEconomics() { return await this.gatewayGet('network/economics', GatewayComponentRequest.networkEconomics); diff --git a/src/utils/cache.info.ts b/src/utils/cache.info.ts index 7c119fdfa..967f20f4b 100644 --- a/src/utils/cache.info.ts +++ b/src/utils/cache.info.ts @@ -418,6 +418,11 @@ export class CacheInfo { ttl: Constants.oneMinute() * 10, }; + static NetworkEnableEpochs: CacheInfo = { + key: "networkEnableEpochs", + ttl: Constants.oneHour() * 10, + }; + static MexPairs: CacheInfo = { key: "mexPairs", ttl: Constants.oneMinute() * 10, From 4a10a9cfcae3c94c3b5ba6c4ea2651c3b12bd6c2 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 22 Jan 2026 10:48:46 +0200 Subject: [PATCH 127/206] fix tests and lint --- src/endpoints/blocks/block.service.ts | 4 ++-- src/test/unit/services/blocks.spec.ts | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/endpoints/blocks/block.service.ts b/src/endpoints/blocks/block.service.ts index 7a508a1d0..26f6421ef 100644 --- a/src/endpoints/blocks/block.service.ts +++ b/src/endpoints/blocks/block.service.ts @@ -182,8 +182,8 @@ export class BlockService { async getNetworkEnableEpochs(): Promise> { return await this.cachingService.getOrSet( CacheInfo.NetworkEnableEpochs.key, - async () => this.gatewayService.getNetworkEnableEpochs(), + async () => await this.gatewayService.getNetworkEnableEpochs(), CacheInfo.NetworkEnableEpochs.ttl, - ) + ); } } diff --git a/src/test/unit/services/blocks.spec.ts b/src/test/unit/services/blocks.spec.ts index 45f364dd6..cabe23d17 100644 --- a/src/test/unit/services/blocks.spec.ts +++ b/src/test/unit/services/blocks.spec.ts @@ -11,6 +11,7 @@ import { NodeService } from "src/endpoints/nodes/node.service"; import { CacheInfo } from "src/utils/cache.info"; import { BlockProofDto } from "../../../endpoints/blocks/entities/block.proof"; import { ApiConfigService } from "../../../common/api-config/api.config.service"; +import { GatewayService } from "../../../common/gateway/gateway.service"; describe('Block Service', () => { let blockService: BlockService; @@ -65,6 +66,12 @@ describe('Block Service', () => { getChainAndromedaActivationEpoch: jest.fn(), }, }, + { + provide: GatewayService, + useValue: { + getNetworkEnableEpochs: jest.fn(), + }, + }, ], }).compile(); From c88c3d091bcba353f7329af6ab889c6efc9e27c9 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 23 Jan 2026 16:53:12 +0200 Subject: [PATCH 128/206] catch stats error --- src/endpoints/network/network.controller.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/endpoints/network/network.controller.ts b/src/endpoints/network/network.controller.ts index 8226fff36..f1fb81f55 100644 --- a/src/endpoints/network/network.controller.ts +++ b/src/endpoints/network/network.controller.ts @@ -1,14 +1,16 @@ -import { Controller, Get } from '@nestjs/common'; +import { Controller, Get, InternalServerErrorException } from '@nestjs/common'; import { ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger'; import { NetworkConstants } from './entities/constants'; import { Economics } from './entities/economics'; import { NetworkService } from './network.service'; import { Stats } from 'src/endpoints/network/entities/stats'; import { About } from './entities/about'; +import { OriginLogger } from '@multiversx/sdk-nestjs-common'; @Controller() @ApiTags('network') export class NetworkController { + private readonly logger = new OriginLogger(NetworkController.name); constructor( private readonly networkService: NetworkService ) { } @@ -31,9 +33,15 @@ export class NetworkController { @ApiOperation({ summary: 'Network statistics', description: 'Returns general network statistics' }) @ApiOkResponse({ type: Stats }) async getStats(): Promise { - return await this.networkService.getStats(); + try { + return await this.networkService.getStats(); + } catch (error) { + this.logger.error('Error fetching network stats', error); + throw new InternalServerErrorException('Failed to fetch network statistics'); + } } + @Get("/about") @ApiOperation({ summary: 'About', description: 'Returns general information about API deployment' }) @ApiOkResponse({ type: About }) From 856f9296cba7a6ee3e7601d190c301e3f105ae79 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Mon, 2 Feb 2026 16:21:41 +0200 Subject: [PATCH 129/206] paginated filtered pairs --- src/endpoints/mex/graphql/settings.query.ts | 27 +++++++--- src/endpoints/mex/mex.settings.service.ts | 58 +++++++++++++++------ 2 files changed, 60 insertions(+), 25 deletions(-) diff --git a/src/endpoints/mex/graphql/settings.query.ts b/src/endpoints/mex/graphql/settings.query.ts index 66401c089..935639f08 100644 --- a/src/endpoints/mex/graphql/settings.query.ts +++ b/src/endpoints/mex/graphql/settings.query.ts @@ -1,14 +1,8 @@ import { gql } from "graphql-request"; -export const settingsQuery = (pairLimitCount: number) => gql` +// Base settings query without pairs to avoid heavy responses per page. +export const settingsBaseQuery = gql` query { - filteredPairs(pagination: {first: ${pairLimitCount}}, filters: {state: ["Active"]}) { - edges { - node { - address - } - } - } proxy { address lockedAssetTokens { @@ -58,3 +52,20 @@ query { } } `; + +// Minimal paginated pairs query for addresses only. +export const paginatedPairsAddressesQuery = gql` + query paginatedPairs($pagination: ConnectionArgs!, $filters: PairsFilter!) { + filteredPairs(pagination: $pagination, filters: $filters) { + edges { + cursor + node { + address + } + } + pageInfo { + hasNextPage + } + } + } +`; diff --git a/src/endpoints/mex/mex.settings.service.ts b/src/endpoints/mex/mex.settings.service.ts index faf14bfa4..527ba994f 100644 --- a/src/endpoints/mex/mex.settings.service.ts +++ b/src/endpoints/mex/mex.settings.service.ts @@ -7,8 +7,7 @@ import { TransactionMetadata } from "../transactions/transaction-action/entities import { TransactionMetadataTransfer } from "../transactions/transaction-action/entities/transaction.metadata.transfer"; import { MexSettings } from "./entities/mex.settings"; import { ApiConfigService } from "src/common/api-config/api.config.service"; -import { settingsQuery } from "./graphql/settings.query"; -import { pairCountQuery } from "./graphql/pairs.count.query"; +import { paginatedPairsAddressesQuery, settingsBaseQuery } from "./graphql/settings.query"; @Injectable() export class MexSettingsService { @@ -88,17 +87,49 @@ export class MexSettingsService { } public async getSettingsRaw(): Promise { - const pairLimitCount = await this.getPairLimitCount(); - const response = await this.graphQlService.getExchangeServiceData(settingsQuery(pairLimitCount)); - if (!response) { + // Fetch base settings (non-paginated parts) + const base = await this.graphQlService.getExchangeServiceData(settingsBaseQuery); + if (!base) { return null; } + // Page through pairs to avoid one heavy query + const pageSize = 50; + let cursor: string | undefined = undefined; + let hasNext = true; + const pairs: { address: string }[] = []; + + while (hasNext) { + const variables = { + pagination: cursor ? { first: pageSize, after: cursor } : { first: pageSize }, + filters: { state: ["Active"] }, + }; + + const page = await this.graphQlService.getExchangeServiceData( + paginatedPairsAddressesQuery, + variables, + ); + + if (!page || !page.filteredPairs) { + break; + } + + const edges: Array<{ cursor: string; node: { address: string } }> = page.filteredPairs.edges || []; + for (const edge of edges) { + pairs.push({ address: edge.node.address }); + } + + hasNext = page.filteredPairs.pageInfo?.hasNextPage === true; + cursor = edges.length > 0 ? edges[edges.length - 1].cursor : cursor; + + if (!hasNext) { + break; + } + } + const transformedResponse = { - ...response, - pairs: response.filteredPairs.edges.map((edge: { node: { address: string } }) => ({ - address: edge.node.address, - })), + ...base, + pairs, }; const settings = MexSettings.fromQueryResponse(transformedResponse); @@ -109,12 +140,5 @@ export class MexSettingsService { return this.wegldId; } - private async getPairLimitCount(): Promise { - const response = await this.graphQlService.getExchangeServiceData(pairCountQuery); - if (!response) { - return 500; - } - - return response.factory.pairCount; - } + // Pair count no longer needed; pagination uses fixed page size. } From 8e46377ad2f5b068af89d713109887f0ea396a5c Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Tue, 3 Feb 2026 13:59:17 +0200 Subject: [PATCH 130/206] only enable mex crons if cachewarmer is enabled --- src/endpoints/mex/mex.module.ts | 4 ++- src/endpoints/mex/mex.warmer.service.ts | 39 +++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/endpoints/mex/mex.module.ts b/src/endpoints/mex/mex.module.ts index cce2e0a0a..74d8b1e86 100644 --- a/src/endpoints/mex/mex.module.ts +++ b/src/endpoints/mex/mex.module.ts @@ -24,7 +24,9 @@ export class MexModule { ]; const isExchangeEnabled = configuration().features?.exchange?.enabled ?? false; - if (isExchangeEnabled) { + const isCacheWarmerEnabled = configuration().cron?.cacheWarmer ?? false; + // Enable MEX cron only when both Exchange and CacheWarmer flags are enabled + if (isExchangeEnabled && isCacheWarmerEnabled) { providers.push(MexWarmerService); } diff --git a/src/endpoints/mex/mex.warmer.service.ts b/src/endpoints/mex/mex.warmer.service.ts index b32a00d95..02ffb6325 100644 --- a/src/endpoints/mex/mex.warmer.service.ts +++ b/src/endpoints/mex/mex.warmer.service.ts @@ -9,6 +9,7 @@ import { MexTokenService } from "src/endpoints/mex/mex.token.service"; import { MexFarmService } from "src/endpoints/mex/mex.farm.service"; import { Lock, Locker } from "@multiversx/sdk-nestjs-common"; import { CacheService } from "@multiversx/sdk-nestjs-cache"; +import { ApiConfigService } from "src/common/api-config/api.config.service"; @Injectable() export class MexWarmerService { @@ -20,37 +21,68 @@ export class MexWarmerService { private readonly mexTokensService: MexTokenService, private readonly mexSettingsService: MexSettingsService, private readonly mexFarmsService: MexFarmService, + private readonly apiConfigService: ApiConfigService, ) { } @Cron(CronExpression.EVERY_MINUTE) async handleMexInvalidations() { + // Run only when both Exchange and CacheWarmer are enabled + if (!this.apiConfigService.isExchangeEnabled() || !this.apiConfigService.getIsCacheWarmerCronActive()) { + return; + } await Locker.lock('Refreshing mex pairs', async () => { await this.mexPairsService.refreshMexPairs(); + this.emitDeleteLocal([ + CacheInfo.MexPairs.key, + CacheInfo.MexPairsWithFarms.key, + ]); }, true); await Locker.lock('Refreshing mex economics', async () => { await this.mexEconomicsService.refreshMexEconomics(); + this.emitDeleteLocal([ + CacheInfo.MexEconomics.key, + ]); }, true); await Locker.lock('Refreshing mex tokens', async () => { await this.mexTokensService.refreshMexTokens(); + this.emitDeleteLocal([ + CacheInfo.MexTokens.key, + CacheInfo.MexTokenTypes.key, + CacheInfo.MexTokensIndexed.key, + CacheInfo.MexPrices.key, + ]); }, true); await Locker.lock('Refreshing mex farms', async () => { await this.mexFarmsService.refreshMexFarms(); + this.emitDeleteLocal([ + CacheInfo.MexFarms.key, + ]); }, true); await Locker.lock('Refreshing mex settings', async () => { await this.mexSettingsService.refreshSettings(); + this.emitDeleteLocal([ + CacheInfo.MexSettings.key, + CacheInfo.MexContracts.key, + ]); }, true); } @Cron(CronExpression.EVERY_10_MINUTES) @Lock({ name: 'Mex settings invalidations' }) async handleMexSettings() { + if (!this.apiConfigService.isExchangeEnabled() || !this.apiConfigService.getIsCacheWarmerCronActive()) { + return; + } const settings = await this.mexSettingsService.getSettingsRaw(); if (settings) { await this.invalidateKey(CacheInfo.MexSettings.key, settings, CacheInfo.MexSettings.ttl); + this.emitDeleteLocal([ + CacheInfo.MexSettings.key, + ]); } } @@ -62,4 +94,11 @@ export class MexWarmerService { private refreshCacheKey(key: string, ttl: number) { this.clientProxy.emit('refreshCacheKey', { key, ttl }); } + + private emitDeleteLocal(keys: string[]) { + if (!keys || keys.length === 0) { + return; + } + this.clientProxy.emit('deleteCacheKeys', keys); + } } From 8aeb0c18e2fa87930705de5e2521a9d609f9b61c Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 5 Feb 2026 13:34:22 +0200 Subject: [PATCH 131/206] add new supernova fields --- src/endpoints/blocks/entities/block.ts | 6 ++++++ src/test/unit/services/blocks.spec.ts | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/endpoints/blocks/entities/block.ts b/src/endpoints/blocks/entities/block.ts index 9728799e6..2d5137726 100644 --- a/src/endpoints/blocks/entities/block.ts +++ b/src/endpoints/blocks/entities/block.ts @@ -74,6 +74,12 @@ export class Block { @ApiProperty({ type: String }) reserved: string = ''; + @ApiProperty({ type: String }) + lastExecutionResultHash: string = ''; + + @ApiProperty({ type: Number }) + lastExecutionResultNonce: number = 0; + @ApiProperty({ type: BlockProofDto, nullable: true, required: false }) proof: BlockProofDto | undefined = undefined; diff --git a/src/test/unit/services/blocks.spec.ts b/src/test/unit/services/blocks.spec.ts index cabe23d17..572f5e47c 100644 --- a/src/test/unit/services/blocks.spec.ts +++ b/src/test/unit/services/blocks.spec.ts @@ -146,6 +146,8 @@ describe('Block Service', () => { reserved: '', scheduledRootHash: undefined, proof: undefined, + lastExecutionResultHash: '414d526161587ae9f53453aa0392971272c48dbb3cc54a33448972d388e0deeb', + lastExecutionResultNonce: 14553814, previousHeaderProof: new BlockProofDto({ pubKeysBitmap: '7702', aggregatedSignature: '50224d66a42a019991d16f25dba375b581f279d4394d4c254876c1484f61bed90fb20456f8af107c54e4eed1763e2a92', From 14805d51c875769e602dcaf68028b0c9b5cefa1d Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Mon, 9 Feb 2026 16:12:57 +0200 Subject: [PATCH 132/206] added executionresults index queries for blocks list --- .../elastic/elastic.indexer.service.ts | 13 +++++ src/common/indexer/indexer.interface.ts | 2 + src/common/indexer/indexer.service.ts | 5 ++ src/endpoints/blocks/block.service.ts | 53 ++++++++++++++++++- 4 files changed, 72 insertions(+), 1 deletion(-) diff --git a/src/common/indexer/elastic/elastic.indexer.service.ts b/src/common/indexer/elastic/elastic.indexer.service.ts index e8d12fd6d..f4a7689a4 100644 --- a/src/common/indexer/elastic/elastic.indexer.service.ts +++ b/src/common/indexer/elastic/elastic.indexer.service.ts @@ -255,6 +255,19 @@ export class ElasticIndexerService implements IndexerInterface { return await this.elasticService.getItem('executionresults', 'hash', hash); } + async getExecutionResultsForHashes(hashes: string[]): Promise { + if (!hashes || hashes.length === 0) { + return []; + } + + const elasticQuery = ElasticQuery.create() + .withPagination({ from: 0, size: hashes.length + 1 }) + .withShouldCondition(hashes.map(h => QueryType.Match('_id', h))); + + // Map _id into "hash" on the response objects for easy joining + return await this.elasticService.getList('executionresults', 'hash', elasticQuery); + } + async getBlockByMiniBlockHash(miniBlockHash: string): Promise { const elasticQuery = ElasticQuery.create() .withCondition(QueryConditionOptions.must, [QueryType.Match('miniBlocksHashes', miniBlockHash)]) diff --git a/src/common/indexer/indexer.interface.ts b/src/common/indexer/indexer.interface.ts index 19e1d3cef..5511e8a8e 100644 --- a/src/common/indexer/indexer.interface.ts +++ b/src/common/indexer/indexer.interface.ts @@ -76,6 +76,8 @@ export interface IndexerInterface { getExecutionResults(hash: string): Promise + getExecutionResultsForHashes(hashes: string[]): Promise + getBlockByMiniBlockHash(miniBlockHash: string): Promise getMiniBlock(miniBlockHash: string): Promise diff --git a/src/common/indexer/indexer.service.ts b/src/common/indexer/indexer.service.ts index b0dd2e11d..05bf39d9f 100644 --- a/src/common/indexer/indexer.service.ts +++ b/src/common/indexer/indexer.service.ts @@ -171,6 +171,11 @@ export class IndexerService implements IndexerInterface { return await this.indexerInterface.getExecutionResults(hash); } + @LogPerformanceAsync(MetricsEvents.SetIndexerDuration) + async getExecutionResultsForHashes(hashes: string[]): Promise { + return await this.indexerInterface.getExecutionResultsForHashes(hashes); + } + @LogPerformanceAsync(MetricsEvents.SetIndexerDuration) async getBlockByMiniBlockHash(miniBlockHash: string): Promise { return await this.indexerInterface.getBlockByMiniBlockHash(miniBlockHash); diff --git a/src/endpoints/blocks/block.service.ts b/src/endpoints/blocks/block.service.ts index 26f6421ef..2cd83a2c5 100644 --- a/src/endpoints/blocks/block.service.ts +++ b/src/endpoints/blocks/block.service.ts @@ -12,10 +12,13 @@ import { IdentitiesService } from "../identities/identities.service"; import { ApiConfigService } from "../../common/api-config/api.config.service"; import { ConcurrencyUtils } from "src/utils/concurrency.utils"; import { ApiUtils } from "@multiversx/sdk-nestjs-http"; +import { OriginLogger } from "@multiversx/sdk-nestjs-common"; import { GatewayService } from "../../common/gateway/gateway.service"; @Injectable() export class BlockService { + private readonly logger = new OriginLogger(BlockService.name); + constructor( private readonly indexerService: IndexerService, private readonly cachingService: CacheService, @@ -39,6 +42,17 @@ export class BlockService { async getBlocks(filter: BlockFilter, queryPagination: QueryPagination, withProposerIdentity?: boolean): Promise { const result = await this.indexerService.getBlocks(filter, queryPagination); + // If Supernova is enabled for any of these blocks, bulk fetch execution results and merge them + const execMap = await this.fetchExecutionResultsForBlocks(result as any[]); + if (execMap.size > 0) { + for (const item of result as any[]) { + const er = execMap.get(item.hash); + if (er) { + ApiUtils.mergeObjects(item, er); + } + } + } + const blocks = await Promise.all(result.map(async (item) => { const blockRaw = await this.computeProposerAndValidators(item); @@ -58,6 +72,43 @@ export class BlockService { return blocks; } + private async fetchExecutionResultsForBlocks(items: any[]): Promise> { + const map = new Map(); + if (!items || items.length === 0) { + return map; + } + + const supernovaEnableEpoch = await this.getSupernovaEnableEpoch(); + if (supernovaEnableEpoch === -1) { + return map; + } + + const eligible = items.filter((r: any) => (r?.epoch ?? -1) >= supernovaEnableEpoch); + if (eligible.length === 0) { + return map; + } + + const hashes = eligible.map((r: any) => r.hash).filter(Boolean); + if (hashes.length === 0) { + return map; + } + + try { + const executionResults = await this.indexerService.getExecutionResultsForHashes(hashes); + for (const er of executionResults as any[]) { + if (er?.hash) { + map.set(er.hash, er); + } + } + this.logger.log(`Applied executionresults for ${map.size} blocks out of ${eligible.length}.`); + } catch { + // Keep endpoint resilient if executionresults index is unavailable + return map; + } + + return map; + } + private async applyProposerIdentity(blocks: Block[]): Promise { const proposerBlses = blocks.map(x => x.proposer); @@ -176,7 +227,7 @@ export class BlockService { async getSupernovaEnableEpoch(): Promise { const enableEpochs = await this.getNetworkEnableEpochs(); - return enableEpochs["erd_supernova_enable_epoch"] ?? -1; + return enableEpochs?.["erd_supernova_enable_epoch"] ?? -1; } async getNetworkEnableEpochs(): Promise> { From 79315dff0fef33b5c04f3733166754929859068a Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Mon, 9 Feb 2026 16:28:10 +0200 Subject: [PATCH 133/206] remove comments + renames --- .../indexer/elastic/elastic.indexer.service.ts | 1 - src/endpoints/blocks/block.service.ts | 12 +++++------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/common/indexer/elastic/elastic.indexer.service.ts b/src/common/indexer/elastic/elastic.indexer.service.ts index f4a7689a4..b11bdc238 100644 --- a/src/common/indexer/elastic/elastic.indexer.service.ts +++ b/src/common/indexer/elastic/elastic.indexer.service.ts @@ -264,7 +264,6 @@ export class ElasticIndexerService implements IndexerInterface { .withPagination({ from: 0, size: hashes.length + 1 }) .withShouldCondition(hashes.map(h => QueryType.Match('_id', h))); - // Map _id into "hash" on the response objects for easy joining return await this.elasticService.getList('executionresults', 'hash', elasticQuery); } diff --git a/src/endpoints/blocks/block.service.ts b/src/endpoints/blocks/block.service.ts index 2cd83a2c5..7eab2d8e2 100644 --- a/src/endpoints/blocks/block.service.ts +++ b/src/endpoints/blocks/block.service.ts @@ -42,13 +42,12 @@ export class BlockService { async getBlocks(filter: BlockFilter, queryPagination: QueryPagination, withProposerIdentity?: boolean): Promise { const result = await this.indexerService.getBlocks(filter, queryPagination); - // If Supernova is enabled for any of these blocks, bulk fetch execution results and merge them - const execMap = await this.fetchExecutionResultsForBlocks(result as any[]); - if (execMap.size > 0) { + const executionResultsMap = await this.fetchExecutionResultsForBlocks(result as any[]); + if (executionResultsMap.size > 0) { for (const item of result as any[]) { - const er = execMap.get(item.hash); - if (er) { - ApiUtils.mergeObjects(item, er); + const executionResult = executionResultsMap.get(item.hash); + if (executionResult) { + ApiUtils.mergeObjects(item, executionResult); } } } @@ -102,7 +101,6 @@ export class BlockService { } this.logger.log(`Applied executionresults for ${map.size} blocks out of ${eligible.length}.`); } catch { - // Keep endpoint resilient if executionresults index is unavailable return map; } From 9088a57f5facc050480047cce030c8361fbb2660 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Mon, 9 Feb 2026 16:36:39 +0200 Subject: [PATCH 134/206] remove log --- src/endpoints/blocks/block.service.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/endpoints/blocks/block.service.ts b/src/endpoints/blocks/block.service.ts index 7eab2d8e2..cc3214f90 100644 --- a/src/endpoints/blocks/block.service.ts +++ b/src/endpoints/blocks/block.service.ts @@ -12,13 +12,10 @@ import { IdentitiesService } from "../identities/identities.service"; import { ApiConfigService } from "../../common/api-config/api.config.service"; import { ConcurrencyUtils } from "src/utils/concurrency.utils"; import { ApiUtils } from "@multiversx/sdk-nestjs-http"; -import { OriginLogger } from "@multiversx/sdk-nestjs-common"; import { GatewayService } from "../../common/gateway/gateway.service"; @Injectable() export class BlockService { - private readonly logger = new OriginLogger(BlockService.name); - constructor( private readonly indexerService: IndexerService, private readonly cachingService: CacheService, @@ -99,7 +96,6 @@ export class BlockService { map.set(er.hash, er); } } - this.logger.log(`Applied executionresults for ${map.size} blocks out of ${eligible.length}.`); } catch { return map; } From 68241b1bc52960dadadd0e4e93965f14ec2bee73 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 20 Feb 2026 11:58:15 +0200 Subject: [PATCH 135/206] adjust cache --- src/utils/cache.info.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/utils/cache.info.ts b/src/utils/cache.info.ts index 967f20f4b..ab89332eb 100644 --- a/src/utils/cache.info.ts +++ b/src/utils/cache.info.ts @@ -54,7 +54,7 @@ export class CacheInfo { static TransactionPool: CacheInfo = { key: 'txpool', - ttl: Constants.oneSecond() * 6, + ttl: Constants.oneSecond() * 1, }; static ApplicationMostUsed: CacheInfo = { @@ -108,13 +108,13 @@ export class CacheInfo { static Transactions(queryPagination: QueryPagination): CacheInfo { return { key: `transactions:${queryPagination.from}:${queryPagination.size}`, - ttl: Constants.oneSecond() * 6, + ttl: Constants.oneSecond() * 1, }; } static TransactionsCount: CacheInfo = { key: 'transactions:count', - ttl: Constants.oneSecond() * 6, + ttl: Constants.oneSecond() * 1, }; static IdentityProfilesKeybases: CacheInfo = { @@ -289,19 +289,19 @@ export class CacheInfo { static Collections(pagination: QueryPagination): CacheInfo { return { key: `collections:${pagination.from}:${pagination.size}`, - ttl: Constants.oneSecond() * 6, + ttl: Constants.oneSecond() * 1, }; } static CollectionsCount: CacheInfo = { key: 'collectionsCount', - ttl: Constants.oneSecond() * 6, + ttl: Constants.oneSecond() * 1, }; static CollectionsForAddress(address: string, pagination: QueryPagination): CacheInfo { return { key: `collectionsForAddress:${address}:${pagination.from}:${pagination.size}`, - ttl: Constants.oneSecond() * 6, + ttl: Constants.oneSecond() * 1, }; } @@ -559,7 +559,7 @@ export class CacheInfo { static BlocksCount(filter: BlockFilter): CacheInfo { return { key: `blocks:count:${JSON.stringify(filter)}`, - ttl: Constants.oneSecond() * 6, + ttl: Constants.oneSecond() * 1, }; } From d794c67925d4ef056f8ed35ff7f3548e755b1899 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 20 Feb 2026 12:10:18 +0200 Subject: [PATCH 136/206] adjustments --- src/utils/cache.info.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/utils/cache.info.ts b/src/utils/cache.info.ts index ab89332eb..e33833136 100644 --- a/src/utils/cache.info.ts +++ b/src/utils/cache.info.ts @@ -5,7 +5,7 @@ import { TpsInterval } from "src/endpoints/tps/entities/tps.interval"; export class CacheInfo { key: string = ""; - ttl: number = Constants.oneSecond() * 6; + ttl: number = Constants.oneSecond() * 1; static About: CacheInfo = { key: 'about', @@ -54,7 +54,7 @@ export class CacheInfo { static TransactionPool: CacheInfo = { key: 'txpool', - ttl: Constants.oneSecond() * 1, + ttl: Constants.oneSecond(), }; static ApplicationMostUsed: CacheInfo = { @@ -108,13 +108,13 @@ export class CacheInfo { static Transactions(queryPagination: QueryPagination): CacheInfo { return { key: `transactions:${queryPagination.from}:${queryPagination.size}`, - ttl: Constants.oneSecond() * 1, + ttl: Constants.oneSecond(), }; } static TransactionsCount: CacheInfo = { key: 'transactions:count', - ttl: Constants.oneSecond() * 1, + ttl: Constants.oneSecond(), }; static IdentityProfilesKeybases: CacheInfo = { @@ -189,13 +189,13 @@ export class CacheInfo { static Nfts(queryPagination: QueryPagination): CacheInfo { return { key: `nfts:${queryPagination.from}:${queryPagination.size}`, - ttl: Constants.oneSecond() * 6, + ttl: Constants.oneSecond(), }; } static NftsCount: CacheInfo = { key: 'nfts:count', - ttl: Constants.oneSecond() * 6, + ttl: Constants.oneSecond(), }; static AccountAssets: CacheInfo = { @@ -289,19 +289,19 @@ export class CacheInfo { static Collections(pagination: QueryPagination): CacheInfo { return { key: `collections:${pagination.from}:${pagination.size}`, - ttl: Constants.oneSecond() * 1, + ttl: Constants.oneSecond(), }; } static CollectionsCount: CacheInfo = { key: 'collectionsCount', - ttl: Constants.oneSecond() * 1, + ttl: Constants.oneSecond(), }; static CollectionsForAddress(address: string, pagination: QueryPagination): CacheInfo { return { key: `collectionsForAddress:${address}:${pagination.from}:${pagination.size}`, - ttl: Constants.oneSecond() * 1, + ttl: Constants.oneSecond(), }; } @@ -559,7 +559,7 @@ export class CacheInfo { static BlocksCount(filter: BlockFilter): CacheInfo { return { key: `blocks:count:${JSON.stringify(filter)}`, - ttl: Constants.oneSecond() * 1, + ttl: Constants.oneSecond(), }; } From e329c1fd93b3f00642325c43be8f25fd06ee8594 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 20 Feb 2026 12:17:19 +0200 Subject: [PATCH 137/206] more adjustments --- src/utils/cache.info.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils/cache.info.ts b/src/utils/cache.info.ts index e33833136..b45efce6c 100644 --- a/src/utils/cache.info.ts +++ b/src/utils/cache.info.ts @@ -5,7 +5,7 @@ import { TpsInterval } from "src/endpoints/tps/entities/tps.interval"; export class CacheInfo { key: string = ""; - ttl: number = Constants.oneSecond() * 1; + ttl: number = Constants.oneSecond(); static About: CacheInfo = { key: 'about', @@ -101,7 +101,7 @@ export class CacheInfo { static TxCount(address: string): CacheInfo { return { key: `txCount:${address}`, - ttl: Constants.oneSecond() * 30, + ttl: Constants.oneSecond() * 5, }; } @@ -574,7 +574,7 @@ export class CacheInfo { private static computeBlocksLatestTtl(ttl?: number): number { if (ttl === undefined || ttl <= Constants.oneMinute() * 5) { - return Constants.oneSecond() * 12; + return Constants.oneSecond() * 2; } if (ttl <= Constants.oneHour()) { From 5cdc0a1597e394d3ad33d404c279c4b84c3e584e Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 20 Feb 2026 13:42:08 +0200 Subject: [PATCH 138/206] fixes after review --- src/utils/cache.info.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/utils/cache.info.ts b/src/utils/cache.info.ts index b45efce6c..39b5803d3 100644 --- a/src/utils/cache.info.ts +++ b/src/utils/cache.info.ts @@ -189,13 +189,13 @@ export class CacheInfo { static Nfts(queryPagination: QueryPagination): CacheInfo { return { key: `nfts:${queryPagination.from}:${queryPagination.size}`, - ttl: Constants.oneSecond(), + ttl: Constants.oneSecond() * 6, }; } static NftsCount: CacheInfo = { key: 'nfts:count', - ttl: Constants.oneSecond(), + ttl: Constants.oneSecond() * 6, }; static AccountAssets: CacheInfo = { @@ -289,19 +289,19 @@ export class CacheInfo { static Collections(pagination: QueryPagination): CacheInfo { return { key: `collections:${pagination.from}:${pagination.size}`, - ttl: Constants.oneSecond(), + ttl: Constants.oneSecond() * 6, }; } static CollectionsCount: CacheInfo = { key: 'collectionsCount', - ttl: Constants.oneSecond(), + ttl: Constants.oneSecond() * 6, }; static CollectionsForAddress(address: string, pagination: QueryPagination): CacheInfo { return { key: `collectionsForAddress:${address}:${pagination.from}:${pagination.size}`, - ttl: Constants.oneSecond(), + ttl: Constants.oneSecond() * 6, }; } From 710dbceb3b482429d870152ce608343fcd114447 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Mon, 23 Feb 2026 14:47:06 +0200 Subject: [PATCH 139/206] update cache for network enable epochs --- src/utils/cache.info.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/cache.info.ts b/src/utils/cache.info.ts index 967f20f4b..a8c899a5c 100644 --- a/src/utils/cache.info.ts +++ b/src/utils/cache.info.ts @@ -419,8 +419,8 @@ export class CacheInfo { }; static NetworkEnableEpochs: CacheInfo = { - key: "networkEnableEpochs", - ttl: Constants.oneHour() * 10, + key: "gatewayNetworkEnableEpochs", + ttl: Constants.oneMinute() * 5, }; static MexPairs: CacheInfo = { From 0e663d46ff6a28e57172cc869159cb1880de43a1 Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 26 Feb 2026 16:43:54 +0200 Subject: [PATCH 140/206] override dapp config chain id from network config --- .../dapp-config/dapp.config.service.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/endpoints/dapp-config/dapp.config.service.ts b/src/endpoints/dapp-config/dapp.config.service.ts index 1e6a00712..85337f017 100644 --- a/src/endpoints/dapp-config/dapp.config.service.ts +++ b/src/endpoints/dapp-config/dapp.config.service.ts @@ -22,15 +22,20 @@ export class DappConfigService { const networkConfig = await this.gatewayService.getNetworkConfig(); const refreshRate = networkConfig.erd_round_duration; + const chainId = networkConfig.erd_chain_id; - if (refreshRate) { - return { - ...this.dappConfig, - refreshRate, - }; + const overrides: Partial = {}; + if (refreshRate !== undefined && refreshRate !== null) { + overrides.refreshRate = refreshRate; + } + if (chainId) { + overrides.chainId = chainId; } - return this.dappConfig; + return { + ...this.dappConfig, + ...overrides, + }; } getDappConfigurationRaw(): DappConfig | undefined { From 6ae86f157a74d0a7d393b4ec4689e5b81e87832c Mon Sep 17 00:00:00 2001 From: bogdan-rosianu Date: Thu, 26 Feb 2026 16:56:48 +0200 Subject: [PATCH 141/206] fix after review --- src/endpoints/dapp-config/dapp.config.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/endpoints/dapp-config/dapp.config.service.ts b/src/endpoints/dapp-config/dapp.config.service.ts index 85337f017..88db605cf 100644 --- a/src/endpoints/dapp-config/dapp.config.service.ts +++ b/src/endpoints/dapp-config/dapp.config.service.ts @@ -25,10 +25,10 @@ export class DappConfigService { const chainId = networkConfig.erd_chain_id; const overrides: Partial = {}; - if (refreshRate !== undefined && refreshRate !== null) { + if (refreshRate != null) { overrides.refreshRate = refreshRate; } - if (chainId) { + if (chainId != null) { overrides.chainId = chainId; } From 9dde19dc30ec8e5a542b06ca4686f49ed111fcca Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 2 Mar 2026 11:51:44 +0200 Subject: [PATCH 142/206] hardcode bon dapp config --- src/endpoints/dapp-config/dapp.config.service.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/endpoints/dapp-config/dapp.config.service.ts b/src/endpoints/dapp-config/dapp.config.service.ts index 88db605cf..0e19832e8 100644 --- a/src/endpoints/dapp-config/dapp.config.service.ts +++ b/src/endpoints/dapp-config/dapp.config.service.ts @@ -25,6 +25,16 @@ export class DappConfigService { const chainId = networkConfig.erd_chain_id; const overrides: Partial = {}; + + //TODO: remove after battle of nodes + if (chainId === 'B') { + overrides.walletAddress = "https://bon-wallet.multiversx.com"; + overrides.apiAddress = "https://api.battleofnodes.com"; + overrides.explorerAddress = "https://bon-explorer.multiversx.com"; + overrides.id = "bon"; + overrides.name = "BattleOfNodes"; + } + if (refreshRate != null) { overrides.refreshRate = refreshRate; } From a427706765eb53939a5f6ff0593e2a463393211c Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 18 Mar 2026 19:32:55 +0200 Subject: [PATCH 143/206] fix elastic searching --- .../indexer/elastic/elastic.indexer.helper.ts | 99 ++++++++----------- .../elastic/elastic.indexer.service.ts | 21 +++- 2 files changed, 57 insertions(+), 63 deletions(-) diff --git a/src/common/indexer/elastic/elastic.indexer.helper.ts b/src/common/indexer/elastic/elastic.indexer.helper.ts index 753598acb..c0509b9ec 100644 --- a/src/common/indexer/elastic/elastic.indexer.helper.ts +++ b/src/common/indexer/elastic/elastic.indexer.helper.ts @@ -99,16 +99,7 @@ export class ElasticIndexerHelper { )); } - if (filter.before || filter.after) { - if (filter.before) { - const timestampBeforeIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampBeforeIdentifier, new RangeLowerThanOrEqual(filter.before)); - } - if (filter.after) { - const timestampAfterIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampAfterIdentifier, new RangeGreaterThanOrEqual(filter.after)); - } - } + elasticQuery = this.applyTimestampRangeFilter(elasticQuery, filter.before, filter.after); if (filter.canCreate !== undefined) { elasticQuery = this.getRoleCondition(elasticQuery, 'ESDTRoleNFTCreate', address, filter.canCreate); @@ -177,6 +168,38 @@ export class ElasticIndexerHelper { return query.withCondition(condition, QueryType.Nested('roles', [new MatchQuery(`roles.${name}`, targetAddress)])); } + private applyTimestampRangeFilter(query: ElasticQuery, before?: number, after?: number): ElasticQuery { + if (before === undefined && after === undefined) { + return query; + } + + const legacyMustQueries: AbstractQuery[] = []; + const modernMustQueries: AbstractQuery[] = [QueryType.Exists('timestampMs')]; + + if (before !== undefined) { + legacyMustQueries.push(QueryType.Range('timestamp', new RangeLowerThanOrEqual(this.toTimestampSeconds(before)))); + modernMustQueries.push(QueryType.Range('timestampMs', new RangeLowerThanOrEqual(this.toTimestampMilliseconds(before)))); + } + + if (after !== undefined) { + legacyMustQueries.push(QueryType.Range('timestamp', new RangeGreaterThanOrEqual(this.toTimestampSeconds(after)))); + modernMustQueries.push(QueryType.Range('timestampMs', new RangeGreaterThanOrEqual(this.toTimestampMilliseconds(after)))); + } + + return query.withMustCondition(QueryType.Should([ + QueryType.Must(modernMustQueries), + QueryType.Must(legacyMustQueries, [QueryType.Exists('timestampMs')]), + ])); + } + + private toTimestampSeconds(value: number): number { + return TimeUtils.isTimestampInSeconds(value) ? value : Math.floor(value / 1000); + } + + private toTimestampMilliseconds(value: number): number { + return TimeUtils.isTimestampInSeconds(value) ? value * 1000 : value; + } + public buildElasticNftFilter(filter: NftFilter, identifier?: string, address?: string): ElasticQuery { let elasticQuery = ElasticQuery.create() .withCondition(QueryConditionOptions.must, QueryType.Exists('identifier')); @@ -286,14 +309,7 @@ export class ElasticIndexerHelper { } } - if (filter.before) { - const timestampBeforeIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampBeforeIdentifier, new RangeLowerThanOrEqual(filter.before)); - } - if (filter.after) { - const timestampAfterIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampAfterIdentifier, new RangeGreaterThanOrEqual(filter.after)); - } + elasticQuery = this.applyTimestampRangeFilter(elasticQuery, filter.before, filter.after); if (filter.nonceBefore) { elasticQuery = elasticQuery.withRangeFilter('nonce', new RangeLowerThanOrEqual(filter.nonceBefore)); @@ -421,14 +437,7 @@ export class ElasticIndexerHelper { elasticQuery = elasticQuery.withCondition(QueryConditionOptions.must, QueryType.Match('status', filter.status)); } - if (filter.before) { - const timestampBeforeIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampBeforeIdentifier, new RangeLowerThanOrEqual(filter.before)); - } - if (filter.after) { - const timestampAfterIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampAfterIdentifier, new RangeGreaterThanOrEqual(filter.after)); - } + elasticQuery = this.applyTimestampRangeFilter(elasticQuery, filter.before, filter.after); if (filter.senderOrReceiver) { elasticQuery = elasticQuery @@ -572,14 +581,7 @@ export class ElasticIndexerHelper { .withMustMatchCondition('status', filter.status) .withMustMultiShouldCondition(filter.tokens, token => QueryType.Match('tokens', token, QueryOperator.AND)); - if (filter.before) { - const timestampBeforeIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampBeforeIdentifier, new RangeLowerThanOrEqual(filter.before)); - } - if (filter.after) { - const timestampAfterIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampAfterIdentifier, new RangeGreaterThanOrEqual(filter.after)); - } + elasticQuery = this.applyTimestampRangeFilter(elasticQuery, filter.before, filter.after); if (filter.functions && filter.functions.length > 0) { if (filter.functions.length === 1 && filter.functions[0] === '') { @@ -684,14 +686,7 @@ export class ElasticIndexerHelper { let elasticQuery = ElasticQuery.create().withCondition(QueryConditionOptions.must, mustQueries); - if (filter && filter.before) { - const timestampBeforeIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampBeforeIdentifier, new RangeLowerThanOrEqual(filter.before)); - } - if (filter && filter.after) { - const timestampAfterIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampAfterIdentifier, new RangeGreaterThanOrEqual(filter.after)); - } + elasticQuery = this.applyTimestampRangeFilter(elasticQuery, filter?.before, filter?.after); if (filter && filter.identifiers) { elasticQuery = elasticQuery.withMustCondition(QueryType.Should( @@ -794,15 +789,7 @@ export class ElasticIndexerHelper { buildApplicationFilter(filter: ApplicationFilter): ElasticQuery { let elasticQuery = ElasticQuery.create(); - if (filter.after) { - const timestampIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampIdentifier, new RangeGreaterThanOrEqual(filter.after)); - } - - if (filter.before) { - const timestampIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampIdentifier, new RangeLowerThanOrEqual(filter.before)); - } + elasticQuery = this.applyTimestampRangeFilter(elasticQuery, filter.before, filter.after); return elasticQuery; } @@ -823,15 +810,7 @@ export class ElasticIndexerHelper { public buildEventsFilter(filter: EventsFilter): ElasticQuery { let elasticQuery = ElasticQuery.create(); - if (filter.before) { - const timestampIdentifier = TimeUtils.isTimestampInSeconds(filter.before) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampIdentifier, new RangeLowerThanOrEqual(filter.before)); - } - - if (filter.after) { - const timestampIdentifier = TimeUtils.isTimestampInSeconds(filter.after) ? 'timestamp' : 'timestampMs'; - elasticQuery = elasticQuery.withRangeFilter(timestampIdentifier, new RangeGreaterThanOrEqual(filter.after)); - } + elasticQuery = this.applyTimestampRangeFilter(elasticQuery, filter.before, filter.after); if (filter.identifier) { elasticQuery = elasticQuery.withMustMatchCondition('identifier', filter.identifier); diff --git a/src/common/indexer/elastic/elastic.indexer.service.ts b/src/common/indexer/elastic/elastic.indexer.service.ts index b11bdc238..713365694 100644 --- a/src/common/indexer/elastic/elastic.indexer.service.ts +++ b/src/common/indexer/elastic/elastic.indexer.service.ts @@ -1048,11 +1048,26 @@ export class ElasticIndexerService implements IndexerInterface { } async getBlockByTimestampAndShardId(timestamp: number, shardId: number): Promise { - const timestampIdentifier = TimeUtils.isTimestampInSeconds(timestamp) ? 'timestamp' : 'timestampMs'; + const timestampInSeconds = TimeUtils.isTimestampInSeconds(timestamp) ? timestamp : Math.floor(timestamp / 1000); + const timestampInMilliseconds = TimeUtils.isTimestampInSeconds(timestamp) ? timestamp * 1000 : timestamp; + + const timestampQuery = QueryType.Should([ + QueryType.Must([ + QueryType.Exists('timestampMs'), + QueryType.Range('timestampMs', new RangeGreaterThanOrEqual(timestampInMilliseconds)), + ]), + QueryType.Must([ + QueryType.Range('timestamp', new RangeGreaterThanOrEqual(timestampInSeconds)), + ], [QueryType.Exists('timestampMs')]), + ]); + const elasticQuery = ElasticQuery.create() - .withRangeFilter(timestampIdentifier, new RangeGreaterThanOrEqual(timestamp)) + .withMustCondition(timestampQuery) .withCondition(QueryConditionOptions.must, [QueryType.Match('shardId', shardId, QueryOperator.AND)]) - .withSort([{ name: 'timestamp', order: ElasticSortOrder.ascending }]); + .withSort([ + { name: 'timestampMs', order: ElasticSortOrder.ascending }, + { name: 'timestamp', order: ElasticSortOrder.ascending }, + ]); const blocks: Block[] = await this.elasticService.getList('blocks', '_search', elasticQuery); From d9020a5ae9b80133547d6899d4b006387cd4a543 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 18 Mar 2026 19:43:50 +0200 Subject: [PATCH 144/206] firt sorting criteria in seconds --- src/common/indexer/elastic/elastic.indexer.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/indexer/elastic/elastic.indexer.service.ts b/src/common/indexer/elastic/elastic.indexer.service.ts index 713365694..c3189b334 100644 --- a/src/common/indexer/elastic/elastic.indexer.service.ts +++ b/src/common/indexer/elastic/elastic.indexer.service.ts @@ -1065,8 +1065,8 @@ export class ElasticIndexerService implements IndexerInterface { .withMustCondition(timestampQuery) .withCondition(QueryConditionOptions.must, [QueryType.Match('shardId', shardId, QueryOperator.AND)]) .withSort([ - { name: 'timestampMs', order: ElasticSortOrder.ascending }, { name: 'timestamp', order: ElasticSortOrder.ascending }, + { name: 'timestampMs', order: ElasticSortOrder.ascending }, ]); const blocks: Block[] = await this.elasticService.getList('blocks', '_search', elasticQuery); From 9f19a4431efbd6abd7ae7bcf04ce428101ebef25 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 2 Apr 2026 15:57:36 +0300 Subject: [PATCH 145/206] upgrade elastic version --- src/test/chain-simulator/docker/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/chain-simulator/docker/docker-compose.yml b/src/test/chain-simulator/docker/docker-compose.yml index fcd3325d4..71d59fe30 100644 --- a/src/test/chain-simulator/docker/docker-compose.yml +++ b/src/test/chain-simulator/docker/docker-compose.yml @@ -3,7 +3,7 @@ services: ports: - "9200:9200" container_name: es-container - image: docker.elastic.co/elasticsearch/elasticsearch:7.16.1 + image: docker.elastic.co/elasticsearch/elasticsearch:7.17.18 environment: - "discovery.type=single-node" - "xpack.security.enabled=false" From 4503a487dd476971f3a776bc445919475750f29b Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 2 Apr 2026 16:01:14 +0300 Subject: [PATCH 146/206] add extra logs if cs docker fails --- .github/workflows/chain-simulator-e2e-tests.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/chain-simulator-e2e-tests.yml b/.github/workflows/chain-simulator-e2e-tests.yml index b93ea059f..f924cb849 100644 --- a/.github/workflows/chain-simulator-e2e-tests.yml +++ b/.github/workflows/chain-simulator-e2e-tests.yml @@ -25,6 +25,10 @@ jobs: - name: Build and start chain simulator run: npm run start-chain-simulator + - name: Show logs if chain simulator fails to start + if: failure() + run: docker logs es-container && docker logs chainsimulator + - name: Wait for services to be ready run: | echo "Waiting for services to be healthy..." From 780ea473f0f95959c4277a129f07fd2ed7299c6c Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 2 Apr 2026 16:07:45 +0300 Subject: [PATCH 147/206] increase ws messages waiting time --- src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index e67eb167c..579125423 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -207,7 +207,7 @@ describe('Websocket subscriptions e2e tests', () => { await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/10`); log("Waiting for WS messages..."); - await new Promise(resolve => setTimeout(resolve, 20000)); + await new Promise(resolve => setTimeout(resolve, 30000)); } catch (e: any) { console.error("Error in beforeAll:", e.message); From 3fbd0c1ea7d64477d885112bf1304272ccdba7fd Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 3 Apr 2026 12:59:48 +0300 Subject: [PATCH 148/206] decrease default broadcast interval --- src/common/api-config/api.config.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index 6496eafbd..f84ad3aa0 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -1013,7 +1013,7 @@ export class ApiConfigService { } getWebsocketSubscriptionBroadcastIntervalMs(): number { - return this.configService.get('features.websocketSubscription.broadcastIntervalMs') ?? 6000; + return this.configService.get('features.websocketSubscription.broadcastIntervalMs') ?? 1000; } getWebsocketMaxSubscriptionsPerInstance(): number { From dd1a9dd15eae664d4104d40d0301558bc03b0083 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 3 Apr 2026 13:04:43 +0300 Subject: [PATCH 149/206] brocadcast interval --- config/config.testnet.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index c897aa17b..802f4b574 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -25,7 +25,7 @@ features: port: 6002 maxSubscriptionsPerInstance: 10000 maxSubscriptionsPerClient: 10 - broadcastIntervalMs: 6000 + broadcastIntervalMs: 1000 eventsNotifier: enabled: false port: 5674 From fe56d579a9b331663a215eada71321e28222b7d7 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 27 Apr 2026 11:40:30 +0300 Subject: [PATCH 150/206] block swagger routes --- config/config.custom.cs-e2e.yaml | 217 ++++++++++++++++++++ config/config.devnet-old.yaml | 5 + config/config.devnet.yaml | 5 + config/config.e2e-mocked.mainnet.yaml | 5 + config/config.e2e.mainnet.yaml | 7 +- config/config.mainnet.yaml | 6 + config/config.testnet.yaml | 5 + src/common/api-config/api.config.service.ts | 8 + src/main.ts | 8 + src/utils/restricted.routes.middleware.ts | 17 ++ 10 files changed, 282 insertions(+), 1 deletion(-) create mode 100644 config/config.custom.cs-e2e.yaml create mode 100644 src/utils/restricted.routes.middleware.ts diff --git a/config/config.custom.cs-e2e.yaml b/config/config.custom.cs-e2e.yaml new file mode 100644 index 000000000..372bacaea --- /dev/null +++ b/config/config.custom.cs-e2e.yaml @@ -0,0 +1,217 @@ +network: 'chain' +metaChainShardId: 4294967295 +api: + public: true + publicPort: 3001 + private: true + privatePort: 4001 + websocket: true +cron: + cacheWarmer: false + fastWarm: false + queueWorker: false + elasticUpdater: false +flags: + useRequestCaching: true + useKeepAliveAgent: true + useTracing: false + useRequestLogging: false + useVmQueryTracing: false + processNfts: true + collectionPropertiesFromGateway: false +features: + websocketSubscription: + enabled: true + port: 6002 + maxSubscriptionsPerInstance: 10000 + maxSubscriptionsPerClient: 10 + broadcastIntervalMs: 6000 + stateChanges: + enabled: false + port: 5675 + rabbitUrl: 'amqp://guest:guest@157.245.73.214:5672' + exchange: 'state_accesses' + queueName: 'api_state_accesses_queue-test' + deadLetterExchange: 'api_state_accesses_queue_dlx' + esdtEnabled: true + eventsNotifier: + enabled: false + port: 5674 + url: 'amqp://guest:guest@127.0.0.1:5673' + exchange: 'all_events' + queue: 'api-process-logs-and-events' + guestCaching: + enabled: false + hitsThreshold: 100 + ttl: 12 + transactionPool: + enabled: true + transactionPoolWarmer: + enabled: false + cronExpression: '*/5 * * * * *' + ttlInSeconds: 60 + updateCollectionExtraDetails: + enabled: false + updateAccountExtraDetails: + enabled: false + marketplace: + enabled: false + serviceUrl: 'https://devnet-nfts-graph.multiversx.com/graphql' + exchange: + enabled: false + serviceUrl: 'https://devnet-graph.xexchange.com/graphql' + dataApi: + enabled: false + serviceUrl: 'https://devnet-data-api.multiversx.com' + assetsFetch: + enabled: false + assetesUrl: 'https://tools.multiversx.com/assets-cdn' + auth: + enabled: false + maxExpirySeconds: 86400 + acceptedOrigins: + - '' + admins: + - '' + jwtSecret: '' + stakingV4: + enabled: false + cronExpression: '*/5 * * * * *' + activationEpoch: 1043 + stakingV5: + enabled: true + activationEpoch: 4817 + chainBarnard: + enabled: true + activationEpoch: 1820 + activationTimestamp: 1753376544 + chainAndromeda: + enabled: true + activationEpoch: 4 + nodeEpochsLeft: + enabled: false + transactionProcessor: + enabled: false + maxLookBehind: 100 + transactionCompleted: + enabled: false + maxLookBehind: 100 + logLevel: 'Error' + transactionBatch: + enabled: false + maxLookBehind: 100 + elasticCircuitBreaker: + enabled: false + durationThresholdMs: 5000 + failureCountThreshold: 5 + resetTimeoutMs: 30000 + elasticMigratedIndices: + logs: 'events' + statusChecker: + enabled: false + thresholds: + tokens: 500 + nodes: 3000 + providers: 10 + tokenSupplyCount: 20 + tokenAssets: 20 + tokenAccounts: 500 + tokenTransactions: 500 + nodeValidators: 300 + nftScamInfo: + enabled: false + processNfts: + enabled: false + nftQueueName: 'api-process-nfts' + deadLetterQueueName: 'api-process-nfts-dlq' + tps: + enabled: false + maxLookBehindNonces: 100 + nodesFetch: + enabled: true + serviceUrl: 'https://devnet-api.multiversx.com' + tokensFetch: + enabled: true + serviceUrl: 'https://devnet-api.multiversx.com' + providersFetch: + enabled: true + serviceUrl: 'https://devnet-api.multiversx.com' +image: + width: 600 + height: 600 + type: 'png' +aws: + s3KeyId: '' + s3Secret: '' + s3Bucket: 'devnet-media.elrond.com' + s3Region: '' + s3Endpoint: '' +urls: + self: 'https://devnet-api.multiversx.com' + elastic: + - 'http://localhost:9200' + gateway: + - 'http://localhost:8085' + verifier: 'https://play-api.multiversx.com' + redis: '127.0.0.1' + rabbitmq: 'amqp://127.0.0.1:5672' + providers: 'https://devnet-delegation-api.multiversx.com/providers' + delegation: 'https://devnet-delegation-api.multiversx.com' + media: 'https://devnet-media.elrond.com' + tmp: '/tmp' + ipfs: 'https://ipfs.io/ipfs' + socket: 'devnet-socket-api.multiversx.com' + maiarId: 'https://devnet-id-api.multiversx.com' +indexer: + type: 'elastic' + maxPagination: 10000 +database: + enabled: true + url: 'mongodb://root:secret@127.0.0.1:27017/api?authSource=admin' + tls: false + type: 'mysql' + host: 'localhost' + port: 3306 + username: 'root' + password: 'root' + database: 'api' +caching: + cacheTtl: 6 + processTtl: 600 + poolLimit: 50 + cacheDuration: 3 +keepAliveTimeout: + downstream: 61000 + upstream: 60000 +contracts: + esdt: 'erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u' + auction: 'erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqplllst77y4l' + staking: 'erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqllls0lczs7' + delegationManager: 'erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqylllslmq6y6' + delegation: 'erd1qqqqqqqqqqqqqpgq97wezxw6l7lgg7k9rxvycrz66vn92ksh2tssxwf7ep' + metabonding: 'erd1qqqqqqqqqqqqqpgqkg7we73j769ew5we4yyx7uyvnn0nefqgd8ssm6vjc2' +inflation: + - 1952123 + - 1746637 + - 1541150 + - 1335663 + - 1130177 + - 924690 + - 719203 +stakingV5Inflation: + - 1069805 +nftProcess: + parallelism: 1 + maxRetries: 3 +compression: + enabled: true + level: 6 + threshold: 1024 + chunkSize: 16384 +pubSubListener: + enabled: false +restrictedRoutes: + enabled: true + routes: + - '/package.json' + - '/docs/package.json' diff --git a/config/config.devnet-old.yaml b/config/config.devnet-old.yaml index 8f61aac89..3cfa0a2d9 100644 --- a/config/config.devnet-old.yaml +++ b/config/config.devnet-old.yaml @@ -129,3 +129,8 @@ inflation: nftProcess: parallelism: 1 maxRetries: 3 +restrictedRoutes: + enabled: true + routes: + - '/package.json' + - '/docs/package.json' diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index 8d76292b7..71c7dd14c 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -204,3 +204,8 @@ compression: level: 6 threshold: 1024 chunkSize: 16384 +restrictedRoutes: + enabled: true + routes: + - '/package.json' + - '/docs/package.json' diff --git a/config/config.e2e-mocked.mainnet.yaml b/config/config.e2e-mocked.mainnet.yaml index f65f05065..4cf36ee31 100644 --- a/config/config.e2e-mocked.mainnet.yaml +++ b/config/config.e2e-mocked.mainnet.yaml @@ -86,3 +86,8 @@ test: transaction-action: mex: microServiceUrl: 'https://graph.xexchange.com/graphql' +restrictedRoutes: + enabled: true + routes: + - '/package.json' + - '/docs/package.json' diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index 50da09bff..b37db057a 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -197,4 +197,9 @@ stakingV5Inflation: - 1262802 nftProcess: parallelism: 1 - maxRetries: 3 \ No newline at end of file + maxRetries: 3 +restrictedRoutes: + enabled: true + routes: + - '/package.json' + - '/docs/package.json' diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index a90823e54..ffa6a3134 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -212,3 +212,9 @@ customUrlHeaders: - urlPattern: '' headers: x-custom-auth: '' +restrictedRoutes: + enabled: true + routes: + - '/package.json' + - '/docs/package.json' + diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index 802f4b574..a1966bc3e 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -207,3 +207,8 @@ compression: level: 6 threshold: 1024 chunkSize: 16384 +restrictedRoutes: + enabled: true + routes: + - '/package.json' + - '/docs/package.json' diff --git a/src/common/api-config/api.config.service.ts b/src/common/api-config/api.config.service.ts index f84ad3aa0..9a4e376d9 100644 --- a/src/common/api-config/api.config.service.ts +++ b/src/common/api-config/api.config.service.ts @@ -1104,4 +1104,12 @@ export class ApiConfigService { return timestamp; } + + isRestrictedRoutesEnabled(): boolean { + return this.configService.get('restrictedRoutes.enabled') ?? false; + } + + getRestrictedRoutes(): string[] { + return this.configService.get('restrictedRoutes.routes') ?? []; + } } diff --git a/src/main.ts b/src/main.ts index aca22383e..9dc78ad12 100644 --- a/src/main.ts +++ b/src/main.ts @@ -38,6 +38,7 @@ import * as requestIp from 'request-ip'; import compression from 'compression'; import { IoAdapter } from '@nestjs/platform-socket.io'; import { WebsocketSubscriptionModule } from './crons/websocket/websocket.subscription.module'; +import { RestrictedRoutesMiddleware } from './utils/restricted.routes.middleware'; async function bootstrap() { const logger = new Logger('Bootstrapper'); @@ -186,9 +187,16 @@ async function bootstrap() { logger.log(`Guest caching enabled: ${apiConfigService.isGuestCacheFeatureActive()}`); logger.log(`Transaction pool enabled: ${apiConfigService.isTransactionPoolEnabled()}`); logger.log(`Transaction pool cache warmer enabled: ${apiConfigService.isTransactionPoolCacheWarmerEnabled()}`); + + logger.log('Restricted routes enabled: ' + apiConfigService.isRestrictedRoutesEnabled()); } async function configurePublicApp(publicApp: NestExpressApplication, apiConfigService: ApiConfigService) { + if (apiConfigService.isRestrictedRoutesEnabled()) { + const restrictedRoutesMiddleware = new RestrictedRoutesMiddleware(apiConfigService); + publicApp.use(restrictedRoutesMiddleware.use.bind(restrictedRoutesMiddleware)); + } + if (apiConfigService.getCompressionEnabled()) { publicApp.use(compression({ filter: (req: any, res: any) => { diff --git a/src/utils/restricted.routes.middleware.ts b/src/utils/restricted.routes.middleware.ts new file mode 100644 index 000000000..1bc554e19 --- /dev/null +++ b/src/utils/restricted.routes.middleware.ts @@ -0,0 +1,17 @@ +import { NestMiddleware, NotFoundException } from '@nestjs/common'; +import { Request, Response, NextFunction } from 'express'; +import { ApiConfigService } from 'src/common/api-config/api.config.service'; + +export class RestrictedRoutesMiddleware implements NestMiddleware { + constructor( + private readonly apiConfigService: ApiConfigService, + ) { } + use(req: Request, _res: Response, next: NextFunction) { + const restrictedRoutes = this.apiConfigService.getRestrictedRoutes(); + if (restrictedRoutes.includes(req.path)) { + throw new NotFoundException(`Cannot GET ${req.path}`); + } + + next(); + } +} \ No newline at end of file From 3ad88aee251bd772fde0d3c225f7678946cf09ed Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 27 Apr 2026 11:46:58 +0300 Subject: [PATCH 151/206] lint + remove custom config --- config/config.custom.cs-e2e.yaml | 217 ---------------------- src/utils/restricted.routes.middleware.ts | 2 +- 2 files changed, 1 insertion(+), 218 deletions(-) delete mode 100644 config/config.custom.cs-e2e.yaml diff --git a/config/config.custom.cs-e2e.yaml b/config/config.custom.cs-e2e.yaml deleted file mode 100644 index 372bacaea..000000000 --- a/config/config.custom.cs-e2e.yaml +++ /dev/null @@ -1,217 +0,0 @@ -network: 'chain' -metaChainShardId: 4294967295 -api: - public: true - publicPort: 3001 - private: true - privatePort: 4001 - websocket: true -cron: - cacheWarmer: false - fastWarm: false - queueWorker: false - elasticUpdater: false -flags: - useRequestCaching: true - useKeepAliveAgent: true - useTracing: false - useRequestLogging: false - useVmQueryTracing: false - processNfts: true - collectionPropertiesFromGateway: false -features: - websocketSubscription: - enabled: true - port: 6002 - maxSubscriptionsPerInstance: 10000 - maxSubscriptionsPerClient: 10 - broadcastIntervalMs: 6000 - stateChanges: - enabled: false - port: 5675 - rabbitUrl: 'amqp://guest:guest@157.245.73.214:5672' - exchange: 'state_accesses' - queueName: 'api_state_accesses_queue-test' - deadLetterExchange: 'api_state_accesses_queue_dlx' - esdtEnabled: true - eventsNotifier: - enabled: false - port: 5674 - url: 'amqp://guest:guest@127.0.0.1:5673' - exchange: 'all_events' - queue: 'api-process-logs-and-events' - guestCaching: - enabled: false - hitsThreshold: 100 - ttl: 12 - transactionPool: - enabled: true - transactionPoolWarmer: - enabled: false - cronExpression: '*/5 * * * * *' - ttlInSeconds: 60 - updateCollectionExtraDetails: - enabled: false - updateAccountExtraDetails: - enabled: false - marketplace: - enabled: false - serviceUrl: 'https://devnet-nfts-graph.multiversx.com/graphql' - exchange: - enabled: false - serviceUrl: 'https://devnet-graph.xexchange.com/graphql' - dataApi: - enabled: false - serviceUrl: 'https://devnet-data-api.multiversx.com' - assetsFetch: - enabled: false - assetesUrl: 'https://tools.multiversx.com/assets-cdn' - auth: - enabled: false - maxExpirySeconds: 86400 - acceptedOrigins: - - '' - admins: - - '' - jwtSecret: '' - stakingV4: - enabled: false - cronExpression: '*/5 * * * * *' - activationEpoch: 1043 - stakingV5: - enabled: true - activationEpoch: 4817 - chainBarnard: - enabled: true - activationEpoch: 1820 - activationTimestamp: 1753376544 - chainAndromeda: - enabled: true - activationEpoch: 4 - nodeEpochsLeft: - enabled: false - transactionProcessor: - enabled: false - maxLookBehind: 100 - transactionCompleted: - enabled: false - maxLookBehind: 100 - logLevel: 'Error' - transactionBatch: - enabled: false - maxLookBehind: 100 - elasticCircuitBreaker: - enabled: false - durationThresholdMs: 5000 - failureCountThreshold: 5 - resetTimeoutMs: 30000 - elasticMigratedIndices: - logs: 'events' - statusChecker: - enabled: false - thresholds: - tokens: 500 - nodes: 3000 - providers: 10 - tokenSupplyCount: 20 - tokenAssets: 20 - tokenAccounts: 500 - tokenTransactions: 500 - nodeValidators: 300 - nftScamInfo: - enabled: false - processNfts: - enabled: false - nftQueueName: 'api-process-nfts' - deadLetterQueueName: 'api-process-nfts-dlq' - tps: - enabled: false - maxLookBehindNonces: 100 - nodesFetch: - enabled: true - serviceUrl: 'https://devnet-api.multiversx.com' - tokensFetch: - enabled: true - serviceUrl: 'https://devnet-api.multiversx.com' - providersFetch: - enabled: true - serviceUrl: 'https://devnet-api.multiversx.com' -image: - width: 600 - height: 600 - type: 'png' -aws: - s3KeyId: '' - s3Secret: '' - s3Bucket: 'devnet-media.elrond.com' - s3Region: '' - s3Endpoint: '' -urls: - self: 'https://devnet-api.multiversx.com' - elastic: - - 'http://localhost:9200' - gateway: - - 'http://localhost:8085' - verifier: 'https://play-api.multiversx.com' - redis: '127.0.0.1' - rabbitmq: 'amqp://127.0.0.1:5672' - providers: 'https://devnet-delegation-api.multiversx.com/providers' - delegation: 'https://devnet-delegation-api.multiversx.com' - media: 'https://devnet-media.elrond.com' - tmp: '/tmp' - ipfs: 'https://ipfs.io/ipfs' - socket: 'devnet-socket-api.multiversx.com' - maiarId: 'https://devnet-id-api.multiversx.com' -indexer: - type: 'elastic' - maxPagination: 10000 -database: - enabled: true - url: 'mongodb://root:secret@127.0.0.1:27017/api?authSource=admin' - tls: false - type: 'mysql' - host: 'localhost' - port: 3306 - username: 'root' - password: 'root' - database: 'api' -caching: - cacheTtl: 6 - processTtl: 600 - poolLimit: 50 - cacheDuration: 3 -keepAliveTimeout: - downstream: 61000 - upstream: 60000 -contracts: - esdt: 'erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzllls8a5w6u' - auction: 'erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqplllst77y4l' - staking: 'erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqllls0lczs7' - delegationManager: 'erd1qqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqylllslmq6y6' - delegation: 'erd1qqqqqqqqqqqqqpgq97wezxw6l7lgg7k9rxvycrz66vn92ksh2tssxwf7ep' - metabonding: 'erd1qqqqqqqqqqqqqpgqkg7we73j769ew5we4yyx7uyvnn0nefqgd8ssm6vjc2' -inflation: - - 1952123 - - 1746637 - - 1541150 - - 1335663 - - 1130177 - - 924690 - - 719203 -stakingV5Inflation: - - 1069805 -nftProcess: - parallelism: 1 - maxRetries: 3 -compression: - enabled: true - level: 6 - threshold: 1024 - chunkSize: 16384 -pubSubListener: - enabled: false -restrictedRoutes: - enabled: true - routes: - - '/package.json' - - '/docs/package.json' diff --git a/src/utils/restricted.routes.middleware.ts b/src/utils/restricted.routes.middleware.ts index 1bc554e19..e82fefdea 100644 --- a/src/utils/restricted.routes.middleware.ts +++ b/src/utils/restricted.routes.middleware.ts @@ -14,4 +14,4 @@ export class RestrictedRoutesMiddleware implements NestMiddleware { next(); } -} \ No newline at end of file +} From aa704422bb898c6663cc3648debc9e5cd2407a71 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 27 Apr 2026 16:50:08 +0300 Subject: [PATCH 152/206] fixes after review --- src/main.ts | 4 +- src/public.app.module.ts | 2 + .../restricted.routes.middleware.spec.ts | 45 +++++++++++++++++++ src/utils/restricted.routes.middleware.ts | 4 +- 4 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 src/test/unit/utils/restricted.routes.middleware.spec.ts diff --git a/src/main.ts b/src/main.ts index 9dc78ad12..339a60fc2 100644 --- a/src/main.ts +++ b/src/main.ts @@ -188,12 +188,12 @@ async function bootstrap() { logger.log(`Transaction pool enabled: ${apiConfigService.isTransactionPoolEnabled()}`); logger.log(`Transaction pool cache warmer enabled: ${apiConfigService.isTransactionPoolCacheWarmerEnabled()}`); - logger.log('Restricted routes enabled: ' + apiConfigService.isRestrictedRoutesEnabled()); + logger.log(`Restricted routes enabled: ${apiConfigService.isRestrictedRoutesEnabled()}`); } async function configurePublicApp(publicApp: NestExpressApplication, apiConfigService: ApiConfigService) { if (apiConfigService.isRestrictedRoutesEnabled()) { - const restrictedRoutesMiddleware = new RestrictedRoutesMiddleware(apiConfigService); + const restrictedRoutesMiddleware = publicApp.get(RestrictedRoutesMiddleware); publicApp.use(restrictedRoutesMiddleware.use.bind(restrictedRoutesMiddleware)); } diff --git a/src/public.app.module.ts b/src/public.app.module.ts index 426717e6d..5c48e6f81 100644 --- a/src/public.app.module.ts +++ b/src/public.app.module.ts @@ -9,6 +9,7 @@ import { GuestCacheService } from '@multiversx/sdk-nestjs-cache'; import { LoggingModule } from '@multiversx/sdk-nestjs-common'; import { DynamicModuleUtils } from './utils/dynamic.module.utils'; import { LocalCacheController } from './endpoints/caching/local.cache.controller'; +import { RestrictedRoutesMiddleware } from './utils/restricted.routes.middleware'; @Module({ imports: [ @@ -23,6 +24,7 @@ import { LocalCacheController } from './endpoints/caching/local.cache.controller providers: [ DynamicModuleUtils.getNestJsApiConfigService(), GuestCacheService, + RestrictedRoutesMiddleware, ], exports: [ EndpointsServicesModule, diff --git a/src/test/unit/utils/restricted.routes.middleware.spec.ts b/src/test/unit/utils/restricted.routes.middleware.spec.ts new file mode 100644 index 000000000..4fdca0b5b --- /dev/null +++ b/src/test/unit/utils/restricted.routes.middleware.spec.ts @@ -0,0 +1,45 @@ +import { NotFoundException } from '@nestjs/common'; +import { Request, Response } from 'express'; +import { ApiConfigService } from 'src/common/api-config/api.config.service'; +import { RestrictedRoutesMiddleware } from 'src/utils/restricted.routes.middleware'; + +describe('RestrictedRoutesMiddleware', () => { + let middleware: RestrictedRoutesMiddleware; + let apiConfigService: jest.Mocked; + + beforeEach(() => { + apiConfigService = { + getRestrictedRoutes: jest.fn(), + } as unknown as jest.Mocked; + + middleware = new RestrictedRoutesMiddleware(apiConfigService); + }); + + it('should throw NotFoundException when route is restricted', () => { + apiConfigService.getRestrictedRoutes.mockReturnValue(['/blocked']); + + const req = { + path: '/blocked', + } as Request; + const res = {} as Response; + const next = jest.fn(); + + expect(() => middleware.use(req, res, next)).toThrow(NotFoundException); + expect(() => middleware.use(req, res, next)).toThrow('Cannot GET /blocked'); + expect(next).not.toHaveBeenCalled(); + }); + + it('should call next when route is not restricted', () => { + apiConfigService.getRestrictedRoutes.mockReturnValue(['/blocked']); + + const req = { + path: '/allowed', + } as Request; + const res = {} as Response; + const next = jest.fn(); + + middleware.use(req, res, next); + + expect(next).toHaveBeenCalledTimes(1); + }); +}); diff --git a/src/utils/restricted.routes.middleware.ts b/src/utils/restricted.routes.middleware.ts index e82fefdea..e8f92cb44 100644 --- a/src/utils/restricted.routes.middleware.ts +++ b/src/utils/restricted.routes.middleware.ts @@ -1,11 +1,13 @@ -import { NestMiddleware, NotFoundException } from '@nestjs/common'; +import { Injectable, NestMiddleware, NotFoundException } from '@nestjs/common'; import { Request, Response, NextFunction } from 'express'; import { ApiConfigService } from 'src/common/api-config/api.config.service'; +@Injectable() export class RestrictedRoutesMiddleware implements NestMiddleware { constructor( private readonly apiConfigService: ApiConfigService, ) { } + use(req: Request, _res: Response, next: NextFunction) { const restrictedRoutes = this.apiConfigService.getRestrictedRoutes(); if (restrictedRoutes.includes(req.path)) { From 0315c445cc6d7747f6209d8602c5022fa3298b8f Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 4 May 2026 13:49:27 +0300 Subject: [PATCH 153/206] upgrade packages --- .gitignore | 1 + Dockerfile | 4 +- package-lock.json | 9508 ++++++++--------- package.json | 77 +- src/common/protocol/protocol.service.ts | 2 +- src/common/rabbitmq/rabbitmq.module.ts | 2 +- src/endpoints/mex/mex.module.ts | 52 +- src/endpoints/nfts/nft.module.ts | 2 +- src/endpoints/tokens/token.module.ts | 2 +- .../transactions.batch.service.ts | 30 +- tsconfig.json | 2 +- 11 files changed, 4768 insertions(+), 4914 deletions(-) diff --git a/.gitignore b/.gitignore index 0bee3489d..3006a9c0c 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ /config/config.custom.devnet.yaml /config/config.custom.testnet.yaml /config/config.custom.mainnet.yaml +/config/config.custom.cs-e2e.yaml __snapshots__ # Logs diff --git a/Dockerfile b/Dockerfile index 5a7810721..46f44d2f4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:18.19-alpine AS build +FROM node:25-alpine AS build WORKDIR /app RUN chown -R node:node /app @@ -11,7 +11,7 @@ RUN npm install RUN npm run init RUN npm run build -FROM node:18.19-alpine +FROM node:25-alpine ENV PYTHONUNBUFFERED=1 RUN apk add --no-cache python3 py3-pip py3-ruamel.yaml diff --git a/package-lock.json b/package-lock.json index 74dba9da3..9d941bf83 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,39 +9,38 @@ "version": "0.0.1", "license": "UNLICENSED", "dependencies": { - "@aws-sdk/client-s3": "^3.54.0", - "@golevelup/nestjs-rabbitmq": "^4.0.0", - "@multiversx/sdk-core": "^13.2.2", - "@multiversx/sdk-exchange": "^0.2.21", - "@multiversx/sdk-nestjs-auth": "6.0.0", - "@multiversx/sdk-nestjs-cache": "6.0.0", - "@multiversx/sdk-nestjs-common": "6.0.0", - "@multiversx/sdk-nestjs-elastic": "6.0.0", - "@multiversx/sdk-nestjs-http": "6.0.0", - "@multiversx/sdk-nestjs-monitoring": "6.0.0", - "@multiversx/sdk-nestjs-rabbitmq": "6.0.0", - "@multiversx/sdk-nestjs-redis": "6.0.0", + "@apollo/server": "^5.5.0", + "@aws-sdk/client-s3": "^3.1035.0", + "@golevelup/nestjs-rabbitmq": "^9.0.0", + "@multiversx/sdk-core": "^15.4.0", + "@multiversx/sdk-exchange": "^0.2.24", + "@multiversx/sdk-nestjs-auth": "7.0.0", + "@multiversx/sdk-nestjs-cache": "7.0.0", + "@multiversx/sdk-nestjs-common": "7.0.0", + "@multiversx/sdk-nestjs-elastic": "7.0.0", + "@multiversx/sdk-nestjs-http": "7.0.0", + "@multiversx/sdk-nestjs-monitoring": "7.0.0", + "@multiversx/sdk-nestjs-rabbitmq": "7.0.0", + "@multiversx/sdk-nestjs-redis": "7.0.0", "@multiversx/sdk-transaction-processor": "^0.1.35", - "@nestjs/apollo": "12.0.11", - "@nestjs/common": "^10.2.0", - "@nestjs/config": "3.0.1", - "@nestjs/core": "10.4.2", - "@nestjs/event-emitter": "^2.0.3", - "@nestjs/graphql": "^12.0.11", - "@nestjs/microservices": "10.2.4", - "@nestjs/platform-express": "10.4.19", - "@nestjs/platform-socket.io": "^10.2.4", - "@nestjs/schedule": "3.0.3", - "@nestjs/swagger": "7.4.2", - "@nestjs/typeorm": "10.0.0", - "@nestjs/websockets": "^10.2.8", + "@nestjs/apollo": "^13.3.0", + "@nestjs/common": "^11.1.19", + "@nestjs/config": "^4.0.4", + "@nestjs/core": "^11.1.19", + "@nestjs/event-emitter": "^3.0.1", + "@nestjs/graphql": "^13.3.0", + "@nestjs/microservices": "^11.1.19", + "@nestjs/platform-express": "^11.1.19", + "@nestjs/platform-socket.io": "^11.1.19", + "@nestjs/schedule": "^6.1.3", + "@nestjs/swagger": "^11.4.1", + "@nestjs/typeorm": "^11.0.1", + "@nestjs/websockets": "^11.1.19", "@sendgrid/mail": "^8.1.5", "agentkeepalive": "^4.2.1", "amqp-connection-manager": "^4.1.3", "amqplib": "^0.10.0", "anchorme": "^3.0.8", - "apollo-server-core": "^3.13.0", - "apollo-server-express": "3.13.0", "async-mutex": "^0.5.0", "bignumber.js": "^9.0.2", "class-transformer": "^0.5.1", @@ -51,12 +50,12 @@ "dataloader": "^2.2.2", "dd-trace": "5.56.0", "fluent-ffmpeg": "^2.1.2", - "graphql": "^16.8.1", + "graphql": "^16.11.0", "graphql-fields-list": "^2.2.4", "graphql-request": "^4.2.0", "graphql-type-json": "^0.3.2", "ioredis": "^5.2.3", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "json-diff": "^0.7.1", "mongodb": "^6.17.0", "mysql2": "^3.9.8", @@ -66,17 +65,17 @@ "pg": "^8.7.3", "prom-client": "^14.0.1", "redis": "^3.1.2", - "reflect-metadata": "^0.1.13", + "reflect-metadata": "^0.2.2", "request-ip": "^3.3.0", "rimraf": "^5.0.0", - "rxjs": "^7.1.0", + "rxjs": "^7.8.1", "sharp": "^0.34.2", "simple-git": "^3.16.0", "socket.io": "^4.8.1", "socket.io-client": "^4.8.1", "swagger-ui-express": "^4.3.0", "tiny-async-pool": "^1.2.0", - "typeorm": "^0.3.25", + "typeorm": "^0.3.28", "winston": "^3.6.0", "winston-daily-rotate-file": "^4.7.1", "yup": "^0.32.11" @@ -85,9 +84,9 @@ "@automock/adapters.nestjs": "^2.1.0", "@automock/jest": "^2.1.0", "@jest/test-sequencer": "^29.7.0", - "@nestjs/cli": "10.4.9", - "@nestjs/schematics": "10.0.2", - "@nestjs/testing": "10.2.4", + "@nestjs/cli": "^11.0.21", + "@nestjs/schematics": "^11.1.0", + "@nestjs/testing": "^11.1.19", "@testing-library/jest-dom": "6.1.4", "@types/compression": "^1.8.1", "@types/cron": "^1.7.3", @@ -98,7 +97,8 @@ "@types/js-yaml": "^4.0.5", "@types/json-diff": "^0.7.0", "@types/jsonwebtoken": "^8.5.8", - "@types/node": "^17.0.21", + "@types/node": "^25.0.0", + "@types/node-fetch": "^2.6.13", "@types/redis": "^2.8.32", "@types/request-ip": "0.0.37", "@types/sharp": "^0.28.3", @@ -110,7 +110,7 @@ "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", "jest": "29.5.0", - "prettier": "^2.5.1", + "prettier": "^3.5.3", "run-script-os": "^1.1.6", "supertest": "^6.2.2", "ts-jest": "^29.0.5", @@ -119,50 +119,39 @@ "tsconfig-paths": "^4.0.0", "typescript": "^4.6.2", "webpack": "^5.73.0" + }, + "engines": { + "node": ">=25 <26" } }, "node_modules/@adobe/css-tools": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.3.tgz", - "integrity": "sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==", + "version": "4.4.4", + "resolved": "http://localhost:4873/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", "dev": true, "license": "MIT" }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@angular-devkit/core": { - "version": "17.3.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.11.tgz", - "integrity": "sha512-vTNDYNsLIWpYk2I969LMQFH29GTsLzxNk/0cLw5q56ARF0v5sIWfHYwGTS88jdDqIpuuettcSczbxeA7EuAmqQ==", + "version": "19.2.24", + "resolved": "http://localhost:4873/@angular-devkit/core/-/core-19.2.24.tgz", + "integrity": "sha512-Kd49warf6U/EyWe5BszF/eebN3zQ3bk7tgfEljAw8q/rX95UUtriJubWvp6pgzHfzBA4jwq8f+QiNZB8eBEXPA==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.1", - "picomatch": "4.0.1", + "ajv": "8.18.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.4", "rxjs": "7.8.1", "source-map": "0.7.4" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "peerDependencies": { - "chokidar": "^3.5.2" + "chokidar": "^4.0.0" }, "peerDependenciesMeta": { "chokidar": { @@ -172,7 +161,7 @@ }, "node_modules/@angular-devkit/core/node_modules/rxjs": { "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "resolved": "http://localhost:4873/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, "license": "Apache-2.0", @@ -181,35 +170,35 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "17.3.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.11.tgz", - "integrity": "sha512-I5wviiIqiFwar9Pdk30Lujk8FczEEc18i22A5c6Z9lbmhPQdTroDnEQdsfXjy404wPe8H62s0I15o4pmMGfTYQ==", + "version": "19.2.24", + "resolved": "http://localhost:4873/@angular-devkit/schematics/-/schematics-19.2.24.tgz", + "integrity": "sha512-lnw+ZM1Io+cJAkReC0NPDjqObL8NtKzKIkdgEEKC8CUmkhurYhedbicN8Y8NYHgG1uLd2GozW3+/QqPRZaN+Lw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.11", - "jsonc-parser": "3.2.1", - "magic-string": "0.30.8", + "@angular-devkit/core": "19.2.24", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", "ora": "5.4.1", "rxjs": "7.8.1" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } }, "node_modules/@angular-devkit/schematics-cli": { - "version": "17.3.11", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-17.3.11.tgz", - "integrity": "sha512-kcOMqp+PHAKkqRad7Zd7PbpqJ0LqLaNZdY1+k66lLWmkEBozgq8v4ASn/puPWf9Bo0HpCiK+EzLf0VHE8Z/y6Q==", + "version": "19.2.24", + "resolved": "http://localhost:4873/@angular-devkit/schematics-cli/-/schematics-cli-19.2.24.tgz", + "integrity": "sha512-bsStZQG67J1HBqTmWxtIcobvgrn32L4UOdL7hGyOru5VxDWPNA8pRnDYavT3hnJeBkJYPoQIw8u7Dm0ecoQprw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.11", - "@angular-devkit/schematics": "17.3.11", + "@angular-devkit/core": "19.2.24", + "@angular-devkit/schematics": "19.2.24", + "@inquirer/prompts": "7.3.2", "ansi-colors": "4.1.3", - "inquirer": "9.2.15", "symbol-observable": "4.0.0", "yargs-parser": "21.1.1" }, @@ -217,84 +206,44 @@ "schematics": "bin/schematics.js" }, "engines": { - "node": "^18.13.0 || >=20.9.0", + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/schematics-cli/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/inquirer": { - "version": "9.2.15", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", - "integrity": "sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==", + "node_modules/@angular-devkit/schematics-cli/node_modules/@inquirer/prompts": { + "version": "7.3.2", + "resolved": "http://localhost:4873/@inquirer/prompts/-/prompts-7.3.2.tgz", + "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", "dev": true, "license": "MIT", "dependencies": { - "@ljharb/through": "^2.3.12", - "ansi-escapes": "^4.3.2", - "chalk": "^5.3.0", - "cli-cursor": "^3.1.0", - "cli-width": "^4.1.0", - "external-editor": "^3.1.0", - "figures": "^3.2.0", - "lodash": "^4.17.21", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" + "@inquirer/checkbox": "^4.1.2", + "@inquirer/confirm": "^5.1.6", + "@inquirer/editor": "^4.2.7", + "@inquirer/expand": "^4.0.9", + "@inquirer/input": "^4.1.6", + "@inquirer/number": "^3.0.9", + "@inquirer/password": "^4.0.9", + "@inquirer/rawlist": "^4.0.9", + "@inquirer/search": "^3.0.9", + "@inquirer/select": "^4.0.9" }, "engines": { "node": ">=18" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@angular-devkit/schematics/node_modules/rxjs": { "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "resolved": "http://localhost:4873/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, "license": "Apache-2.0", @@ -304,17 +253,16 @@ }, "node_modules/@apollo/cache-control-types": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@apollo/cache-control-types/-/cache-control-types-1.0.3.tgz", + "resolved": "http://localhost:4873/@apollo/cache-control-types/-/cache-control-types-1.0.3.tgz", "integrity": "sha512-F17/vCp7QVwom9eG7ToauIKdAxpSoadsJnqIfyryLFSkLSOEqu+eC5Z3N8OXcUVStuOMcNHlyraRsA6rRICu4g==", "license": "MIT", - "peer": true, "peerDependencies": { "graphql": "14.x || 15.x || 16.x" } }, "node_modules/@apollo/protobufjs": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.7.tgz", + "resolved": "http://localhost:4873/@apollo/protobufjs/-/protobufjs-1.2.7.tgz", "integrity": "sha512-Lahx5zntHPZia35myYDBRuF58tlwPskwHc5CWBZC/4bMKB6siTBWwtMrkqXcsNwQiFSzSx5hKdRPUmemrEp3Gg==", "hasInstallScript": true, "license": "BSD-3-Clause", @@ -338,64 +286,59 @@ } }, "node_modules/@apollo/server": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@apollo/server/-/server-4.12.2.tgz", - "integrity": "sha512-jKRlf+sBMMdKYrjMoiWKne42Eb6paBfDOr08KJnUaeaiyWFj+/040FjVPQI7YGLfdwnYIsl1NUUqS2UdgezJDg==", + "version": "5.5.0", + "resolved": "http://localhost:4873/@apollo/server/-/server-5.5.0.tgz", + "integrity": "sha512-vWtodBOK/SZwBTJzItECOmLfL8E8pn/IdvP7pnxN5g2tny9iW4+9sxdajE798wV1H2+PYp/rRcl/soSHIBKMPw==", "license": "MIT", - "peer": true, "dependencies": { "@apollo/cache-control-types": "^1.0.3", - "@apollo/server-gateway-interface": "^1.1.1", + "@apollo/server-gateway-interface": "^2.0.0", "@apollo/usage-reporting-protobuf": "^4.1.1", - "@apollo/utils.createhash": "^2.0.2", - "@apollo/utils.fetcher": "^2.0.0", - "@apollo/utils.isnodelike": "^2.0.0", - "@apollo/utils.keyvaluecache": "^2.1.0", - "@apollo/utils.logger": "^2.0.0", + "@apollo/utils.createhash": "^3.0.0", + "@apollo/utils.fetcher": "^3.0.0", + "@apollo/utils.isnodelike": "^3.0.0", + "@apollo/utils.keyvaluecache": "^4.0.0", + "@apollo/utils.logger": "^3.0.0", "@apollo/utils.usagereporting": "^2.1.0", - "@apollo/utils.withrequired": "^2.0.0", - "@graphql-tools/schema": "^9.0.0", - "@types/express": "^4.17.13", - "@types/express-serve-static-core": "^4.17.30", - "@types/node-fetch": "^2.6.1", + "@apollo/utils.withrequired": "^3.0.0", + "@graphql-tools/schema": "^10.0.0", "async-retry": "^1.2.1", + "body-parser": "^2.2.2", + "content-type": "^1.0.5", "cors": "^2.8.5", - "express": "^4.21.1", + "finalhandler": "^2.1.0", "loglevel": "^1.6.8", - "lru-cache": "^7.10.1", - "negotiator": "^0.6.3", - "node-abort-controller": "^3.1.1", - "node-fetch": "^2.6.7", - "uuid": "^9.0.0", - "whatwg-mimetype": "^3.0.0" + "lru-cache": "^11.1.0", + "negotiator": "^1.0.0", + "uuid": "^11.1.0", + "whatwg-mimetype": "^4.0.0" }, "engines": { - "node": ">=14.16.0" + "node": ">=20" }, "peerDependencies": { - "graphql": "^16.6.0" + "graphql": "^16.11.0" } }, "node_modules/@apollo/server-gateway-interface": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@apollo/server-gateway-interface/-/server-gateway-interface-1.1.1.tgz", - "integrity": "sha512-pGwCl/po6+rxRmDMFgozKQo2pbsSwE91TpsDBAOgf74CRDPXHHtM88wbwjab0wMMZh95QfR45GGyDIdhY24bkQ==", + "version": "2.0.0", + "resolved": "http://localhost:4873/@apollo/server-gateway-interface/-/server-gateway-interface-2.0.0.tgz", + "integrity": "sha512-3HEMD6fSantG2My3jWkb9dvfkF9vJ4BDLRjMgsnD790VINtuPaEp+h3Hg9HOHiWkML6QsOhnaRqZ+gvhp3y8Nw==", "license": "MIT", - "peer": true, "dependencies": { "@apollo/usage-reporting-protobuf": "^4.1.1", - "@apollo/utils.fetcher": "^2.0.0", - "@apollo/utils.keyvaluecache": "^2.1.0", - "@apollo/utils.logger": "^2.0.0" + "@apollo/utils.fetcher": "^3.0.0", + "@apollo/utils.keyvaluecache": "^4.0.0", + "@apollo/utils.logger": "^3.0.0" }, "peerDependencies": { "graphql": "14.x || 15.x || 16.x" } }, "node_modules/@apollo/server-plugin-landing-page-graphql-playground": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@apollo/server-plugin-landing-page-graphql-playground/-/server-plugin-landing-page-graphql-playground-4.0.0.tgz", - "integrity": "sha512-PBDtKI/chJ+hHeoJUUH9Kuqu58txQl00vUGuxqiC9XcReulIg7RjsyD0G1u3drX4V709bxkL5S0nTeXfRHD0qA==", + "version": "4.0.1", + "resolved": "http://localhost:4873/@apollo/server-plugin-landing-page-graphql-playground/-/server-plugin-landing-page-graphql-playground-4.0.1.tgz", + "integrity": "sha512-tWhQzD7DtiTO/wfbGvasryz7eJSuEh9XJHgRTMZI7+Wu/omylG5gH6K6ksg1Vccg8/Xuglfi2f1M5Nm/IlBBGw==", "deprecated": "The use of GraphQL Playground in Apollo Server was supported in previous versions, but this is no longer the case as of December 31, 2022. This package exists for v4 migration purposes only. We do not intend to resolve security issues or other bugs with this package if they arise, so please migrate away from this to [Apollo Server's default Explorer](https://www.apollographql.com/docs/apollo-server/api/plugin/landing-pages) as soon as possible.", "license": "MIT", "dependencies": { @@ -410,7 +353,7 @@ }, "node_modules/@apollo/usage-reporting-protobuf": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.1.tgz", + "resolved": "http://localhost:4873/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.1.tgz", "integrity": "sha512-u40dIUePHaSKVshcedO7Wp+mPiZsaU6xjv9J+VyxpoU/zL6Jle+9zWeG98tr/+SZ0nZ4OXhrbb8SNr0rAPpIDA==", "license": "MIT", "dependencies": { @@ -418,25 +361,23 @@ } }, "node_modules/@apollo/utils.createhash": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-2.0.2.tgz", - "integrity": "sha512-UkS3xqnVFLZ3JFpEmU/2cM2iKJotQXMoSTgxXsfQgXLC5gR1WaepoXagmYnPSA7Q/2cmnyTYK5OgAgoC4RULPg==", + "version": "3.0.1", + "resolved": "http://localhost:4873/@apollo/utils.createhash/-/utils.createhash-3.0.1.tgz", + "integrity": "sha512-CKrlySj4eQYftBE5MJ8IzKwIibQnftDT7yGfsJy5KSEEnLlPASX0UTpbKqkjlVEwPPd4mEwI7WOM7XNxEuO05A==", "license": "MIT", - "peer": true, "dependencies": { - "@apollo/utils.isnodelike": "^2.0.1", + "@apollo/utils.isnodelike": "^3.0.0", "sha.js": "^2.4.11" }, "engines": { - "node": ">=14" + "node": ">=16" } }, "node_modules/@apollo/utils.dropunuseddefinitions": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-2.0.1.tgz", + "resolved": "http://localhost:4873/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-2.0.1.tgz", "integrity": "sha512-EsPIBqsSt2BwDsv8Wu76LK5R1KtsVkNoO4b0M5aK0hx+dGg9xJXuqlr7Fo34Dl+y83jmzn+UvEW+t1/GP2melA==", "license": "MIT", - "peer": true, "engines": { "node": ">=14" }, @@ -445,55 +386,50 @@ } }, "node_modules/@apollo/utils.fetcher": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.fetcher/-/utils.fetcher-2.0.1.tgz", - "integrity": "sha512-jvvon885hEyWXd4H6zpWeN3tl88QcWnHp5gWF5OPF34uhvoR+DFqcNxs9vrRaBBSY3qda3Qe0bdud7tz2zGx1A==", + "version": "3.1.0", + "resolved": "http://localhost:4873/@apollo/utils.fetcher/-/utils.fetcher-3.1.0.tgz", + "integrity": "sha512-Z3QAyrsQkvrdTuHAFwWDNd+0l50guwoQUoaDQssLOjkmnmVuvXlJykqlEJolio+4rFwBnWdoY1ByFdKaQEcm7A==", "license": "MIT", - "peer": true, "engines": { - "node": ">=14" + "node": ">=16" } }, "node_modules/@apollo/utils.isnodelike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-2.0.1.tgz", - "integrity": "sha512-w41XyepR+jBEuVpoRM715N2ZD0xMD413UiJx8w5xnAZD2ZkSJnMJBoIzauK83kJpSgNuR6ywbV29jG9NmxjK0Q==", + "version": "3.0.0", + "resolved": "http://localhost:4873/@apollo/utils.isnodelike/-/utils.isnodelike-3.0.0.tgz", + "integrity": "sha512-xrjyjfkzunZ0DeF6xkHaK5IKR8F1FBq6qV+uZ+h9worIF/2YSzA0uoBxGv6tbTeo9QoIQnRW4PVFzGix5E7n/g==", "license": "MIT", - "peer": true, "engines": { - "node": ">=14" + "node": ">=16" } }, "node_modules/@apollo/utils.keyvaluecache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-2.1.1.tgz", - "integrity": "sha512-qVo5PvUUMD8oB9oYvq4ViCjYAMWnZ5zZwEjNF37L2m1u528x5mueMlU+Cr1UinupCgdB78g+egA1G98rbJ03Vw==", + "version": "4.0.0", + "resolved": "http://localhost:4873/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-4.0.0.tgz", + "integrity": "sha512-mKw1myRUkQsGPNB+9bglAuhviodJ2L2MRYLTafCMw5BIo7nbvCPNCkLnIHjZ1NOzH7SnMAr5c9LmXiqsgYqLZw==", "license": "MIT", - "peer": true, "dependencies": { - "@apollo/utils.logger": "^2.0.1", - "lru-cache": "^7.14.1" + "@apollo/utils.logger": "^3.0.0", + "lru-cache": "^11.0.0" }, "engines": { - "node": ">=14" + "node": ">=20" } }, "node_modules/@apollo/utils.logger": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-2.0.1.tgz", - "integrity": "sha512-YuplwLHaHf1oviidB7MxnCXAdHp3IqYV8n0momZ3JfLniae92eYqMIx+j5qJFX6WKJPs6q7bczmV4lXIsTu5Pg==", + "version": "3.0.0", + "resolved": "http://localhost:4873/@apollo/utils.logger/-/utils.logger-3.0.0.tgz", + "integrity": "sha512-M8V8JOTH0F2qEi+ktPfw4RL7MvUycDfKp7aEap2eWXfL5SqWHN6jTLbj5f5fj1cceHpyaUSOZlvlaaryaxZAmg==", "license": "MIT", - "peer": true, "engines": { - "node": ">=14" + "node": ">=16" } }, "node_modules/@apollo/utils.printwithreducedwhitespace": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-2.0.1.tgz", + "resolved": "http://localhost:4873/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-2.0.1.tgz", "integrity": "sha512-9M4LUXV/fQBh8vZWlLvb/HyyhjJ77/I5ZKu+NBWV/BmYGyRmoEP9EVAy7LCVoY3t8BDcyCAGfxJaLFCSuQkPUg==", "license": "MIT", - "peer": true, "engines": { "node": ">=14" }, @@ -503,10 +439,9 @@ }, "node_modules/@apollo/utils.removealiases": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-2.0.1.tgz", + "resolved": "http://localhost:4873/@apollo/utils.removealiases/-/utils.removealiases-2.0.1.tgz", "integrity": "sha512-0joRc2HBO4u594Op1nev+mUF6yRnxoUH64xw8x3bX7n8QBDYdeYgY4tF0vJReTy+zdn2xv6fMsquATSgC722FA==", "license": "MIT", - "peer": true, "engines": { "node": ">=14" }, @@ -516,10 +451,9 @@ }, "node_modules/@apollo/utils.sortast": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-2.0.1.tgz", + "resolved": "http://localhost:4873/@apollo/utils.sortast/-/utils.sortast-2.0.1.tgz", "integrity": "sha512-eciIavsWpJ09za1pn37wpsCGrQNXUhM0TktnZmHwO+Zy9O4fu/WdB4+5BvVhFiZYOXvfjzJUcc+hsIV8RUOtMw==", "license": "MIT", - "peer": true, "dependencies": { "lodash.sortby": "^4.7.0" }, @@ -532,10 +466,9 @@ }, "node_modules/@apollo/utils.stripsensitiveliterals": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-2.0.1.tgz", + "resolved": "http://localhost:4873/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-2.0.1.tgz", "integrity": "sha512-QJs7HtzXS/JIPMKWimFnUMK7VjkGQTzqD9bKD1h3iuPAqLsxd0mUNVbkYOPTsDhUKgcvUOfOqOJWYohAKMvcSA==", "license": "MIT", - "peer": true, "engines": { "node": ">=14" }, @@ -545,10 +478,9 @@ }, "node_modules/@apollo/utils.usagereporting": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-2.1.0.tgz", + "resolved": "http://localhost:4873/@apollo/utils.usagereporting/-/utils.usagereporting-2.1.0.tgz", "integrity": "sha512-LPSlBrn+S17oBy5eWkrRSGb98sWmnEzo3DPTZgp8IQc8sJe0prDgDuppGq4NeQlpoqEHz0hQeYHAOA0Z3aQsxQ==", "license": "MIT", - "peer": true, "dependencies": { "@apollo/usage-reporting-protobuf": "^4.1.0", "@apollo/utils.dropunuseddefinitions": "^2.0.1", @@ -565,31 +497,17 @@ } }, "node_modules/@apollo/utils.withrequired": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.withrequired/-/utils.withrequired-2.0.1.tgz", - "integrity": "sha512-YBDiuAX9i1lLc6GeTy1m7DGLFn/gMnvXqlalOIMjM7DeOgIacEjjfwPqb0M1CQ2v11HhR15d1NmxJoRCfrNqcA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@apollographql/apollo-tools": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz", - "integrity": "sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw==", + "version": "3.0.0", + "resolved": "http://localhost:4873/@apollo/utils.withrequired/-/utils.withrequired-3.0.0.tgz", + "integrity": "sha512-aaxeavfJ+RHboh7c2ofO5HHtQobGX4AgUujXP4CXpREHp9fQ9jPi6K9T1jrAKe7HIipoP0OJ1gd6JamSkFIpvA==", "license": "MIT", "engines": { - "node": ">=8", - "npm": ">=6" - }, - "peerDependencies": { - "graphql": "^14.2.1 || ^15.0.0 || ^16.0.0" + "node": ">=16" } }, "node_modules/@apollographql/graphql-playground-html": { "version": "1.6.29", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", + "resolved": "http://localhost:4873/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", "license": "MIT", "dependencies": { @@ -598,7 +516,7 @@ }, "node_modules/@automock/adapters.nestjs": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@automock/adapters.nestjs/-/adapters.nestjs-2.1.0.tgz", + "resolved": "http://localhost:4873/@automock/adapters.nestjs/-/adapters.nestjs-2.1.0.tgz", "integrity": "sha512-cwolpTMF+frIm6idLC/zD0obgG/Wf5wP6I8FKJBcRy+Cuc9Pyy/E7200zafYlOVzUlZUP16VqchgGWpUyb1U3Q==", "dev": true, "hasInstallScript": true, @@ -612,9 +530,16 @@ "node": "^16.10.0 || ^18.12.0 || >=20.0.0" } }, + "node_modules/@automock/adapters.nestjs/node_modules/reflect-metadata": { + "version": "0.1.14", + "resolved": "http://localhost:4873/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/@automock/common": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@automock/common/-/common-3.1.0.tgz", + "resolved": "http://localhost:4873/@automock/common/-/common-3.1.0.tgz", "integrity": "sha512-Y7N4YnSZRuSIfGV4/PdG2JyURa9PK1maqGZBYUG2/sIW+H/Mlhc/3NpegnlUyQFRBexEJtgmUsvfzzI1/lm0JA==", "dev": true, "license": "MIT", @@ -627,7 +552,7 @@ }, "node_modules/@automock/core": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@automock/core/-/core-2.1.0.tgz", + "resolved": "http://localhost:4873/@automock/core/-/core-2.1.0.tgz", "integrity": "sha512-VIaY2woE7nWXhXKlNzk4+xzCuaVBXfGYwowrzdI+MmJBKqi2z0lUjNVix74hZRWhJpkOW+PR3UThFvThgyqIqQ==", "dev": true, "license": "MIT", @@ -641,9 +566,9 @@ } }, "node_modules/@automock/jest": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@automock/jest/-/jest-2.1.0.tgz", - "integrity": "sha512-kJuTu/a5bbG8SICIfITgESpIrVbBfbMykDdICmPvJkeI51Ldq+tqiLS2Ded16vLWS9WeFKeTw/+2b/DO8QyV0Q==", + "version": "2.1.2", + "resolved": "http://localhost:4873/@automock/jest/-/jest-2.1.2.tgz", + "integrity": "sha512-YZPwDrs0wnzjOWN7VDpqcMVlwQXPrd8auyBpHSTLjQIYhEv2yiqGPS4dSxiTDla/6MyunnYljbamFEPO9vfggQ==", "dev": true, "license": "MIT", "dependencies": { @@ -659,14 +584,14 @@ }, "node_modules/@automock/types": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@automock/types/-/types-2.0.1.tgz", + "resolved": "http://localhost:4873/@automock/types/-/types-2.0.1.tgz", "integrity": "sha512-ue35e4im3n7l+Eqq3kCA2nNs8jzJbjYLni+vlPdgJ+9KfsEykJjA1OpnNN/PG1tDaM0iyR2p/uZg27MOC/qiTg==", "dev": true, "license": "MIT" }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "resolved": "http://localhost:4873/@aws-crypto/crc32/-/crc32-5.2.0.tgz", "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "license": "Apache-2.0", "dependencies": { @@ -680,7 +605,7 @@ }, "node_modules/@aws-crypto/crc32c": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "resolved": "http://localhost:4873/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", "license": "Apache-2.0", "dependencies": { @@ -691,7 +616,7 @@ }, "node_modules/@aws-crypto/sha1-browser": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "resolved": "http://localhost:4873/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", "license": "Apache-2.0", "dependencies": { @@ -705,7 +630,7 @@ }, "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "resolved": "http://localhost:4873/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "license": "Apache-2.0", "dependencies": { @@ -717,7 +642,7 @@ }, "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "resolved": "http://localhost:4873/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "license": "Apache-2.0", "dependencies": { @@ -730,7 +655,7 @@ }, "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "resolved": "http://localhost:4873/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "license": "Apache-2.0", "dependencies": { @@ -743,7 +668,7 @@ }, "node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "resolved": "http://localhost:4873/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "license": "Apache-2.0", "dependencies": { @@ -758,7 +683,7 @@ }, "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "resolved": "http://localhost:4873/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "license": "Apache-2.0", "dependencies": { @@ -770,7 +695,7 @@ }, "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "resolved": "http://localhost:4873/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "license": "Apache-2.0", "dependencies": { @@ -783,7 +708,7 @@ }, "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "resolved": "http://localhost:4873/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "license": "Apache-2.0", "dependencies": { @@ -796,7 +721,7 @@ }, "node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "resolved": "http://localhost:4873/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", "license": "Apache-2.0", "dependencies": { @@ -810,7 +735,7 @@ }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "resolved": "http://localhost:4873/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", "license": "Apache-2.0", "dependencies": { @@ -819,7 +744,7 @@ }, "node_modules/@aws-crypto/util": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "resolved": "http://localhost:4873/@aws-crypto/util/-/util-5.2.0.tgz", "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", "license": "Apache-2.0", "dependencies": { @@ -830,7 +755,7 @@ }, "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "resolved": "http://localhost:4873/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "license": "Apache-2.0", "dependencies": { @@ -842,7 +767,7 @@ }, "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "resolved": "http://localhost:4873/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "license": "Apache-2.0", "dependencies": { @@ -855,7 +780,7 @@ }, "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "resolved": "http://localhost:4873/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "license": "Apache-2.0", "dependencies": { @@ -867,637 +792,623 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.840.0.tgz", - "integrity": "sha512-dRuo03EqGBbl9+PTogpwY9bYmGWIjn8nB82HN5Qj20otgjUvhLOdEkkip9mroYsrvqNoKbMedWdCudIcB/YY1w==", + "version": "3.1038.0", + "resolved": "http://localhost:4873/@aws-sdk/client-s3/-/client-s3-3.1038.0.tgz", + "integrity": "sha512-k60qm50bWkaqNfCJe1z28WaqgpztE0wbWVMZw6ZJcTOGfrWFhsJeLCEqtkH8w00iEozKx9GQwdQXz4G0sMGdKA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-node": "3.840.0", - "@aws-sdk/middleware-bucket-endpoint": "3.840.0", - "@aws-sdk/middleware-expect-continue": "3.840.0", - "@aws-sdk/middleware-flexible-checksums": "3.840.0", - "@aws-sdk/middleware-host-header": "3.840.0", - "@aws-sdk/middleware-location-constraint": "3.840.0", - "@aws-sdk/middleware-logger": "3.840.0", - "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-sdk-s3": "3.840.0", - "@aws-sdk/middleware-ssec": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", - "@aws-sdk/region-config-resolver": "3.840.0", - "@aws-sdk/signature-v4-multi-region": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", - "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", - "@aws-sdk/xml-builder": "3.821.0", - "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/eventstream-serde-browser": "^4.0.4", - "@smithy/eventstream-serde-config-resolver": "^4.1.2", - "@smithy/eventstream-serde-node": "^4.0.4", - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/hash-blob-browser": "^4.0.4", - "@smithy/hash-node": "^4.0.4", - "@smithy/hash-stream-node": "^4.0.4", - "@smithy/invalid-dependency": "^4.0.4", - "@smithy/md5-js": "^4.0.4", - "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", - "@smithy/middleware-serde": "^4.0.8", - "@smithy/middleware-stack": "^4.0.4", - "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", - "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", - "@smithy/types": "^4.3.1", - "@smithy/url-parser": "^4.0.4", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", - "@smithy/util-endpoints": "^3.0.6", - "@smithy/util-middleware": "^4.0.4", - "@smithy/util-retry": "^4.0.6", - "@smithy/util-stream": "^4.2.2", - "@smithy/util-utf8": "^4.0.0", - "@smithy/util-waiter": "^4.0.6", - "@types/uuid": "^9.0.1", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/credential-provider-node": "^3.972.37", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.10", + "@aws-sdk/middleware-expect-continue": "^3.972.10", + "@aws-sdk/middleware-flexible-checksums": "^3.974.14", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-location-constraint": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-sdk-s3": "^3.972.35", + "@aws-sdk/middleware-ssec": "^3.972.10", + "@aws-sdk/middleware-user-agent": "^3.972.36", + "@aws-sdk/region-config-resolver": "^3.972.13", + "@aws-sdk/signature-v4-multi-region": "^3.996.23", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.22", + "@smithy/config-resolver": "^4.4.17", + "@smithy/core": "^3.23.17", + "@smithy/eventstream-serde-browser": "^4.2.14", + "@smithy/eventstream-serde-config-resolver": "^4.3.14", + "@smithy/eventstream-serde-node": "^4.2.14", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-blob-browser": "^4.2.15", + "@smithy/hash-node": "^4.2.14", + "@smithy/hash-stream-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/md5-js": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.32", + "@smithy/middleware-retry": "^4.5.6", + "@smithy/middleware-serde": "^4.2.20", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.49", + "@smithy/util-defaults-mode-node": "^4.2.54", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.5", + "@smithy/util-stream": "^4.5.25", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.840.0.tgz", - "integrity": "sha512-3Zp+FWN2hhmKdpS0Ragi5V2ZPsZNScE3jlbgoJjzjI/roHZqO+e3/+XFN4TlM0DsPKYJNp+1TAjmhxN6rOnfYA==", + "node_modules/@aws-sdk/core": { + "version": "3.974.6", + "resolved": "http://localhost:4873/@aws-sdk/core/-/core-3.974.6.tgz", + "integrity": "sha512-8Vu7zGxu+39ChR/s5J7nXBw3a2kMHAi0OfKT8ohgTVjX0qYed/8mIfdBb638oBmKrWCwwKjYAM5J/4gMJ8nAJA==", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/middleware-host-header": "3.840.0", - "@aws-sdk/middleware-logger": "3.840.0", - "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", - "@aws-sdk/region-config-resolver": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", - "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", - "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/hash-node": "^4.0.4", - "@smithy/invalid-dependency": "^4.0.4", - "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", - "@smithy/middleware-serde": "^4.0.8", - "@smithy/middleware-stack": "^4.0.4", - "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", - "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", - "@smithy/types": "^4.3.1", - "@smithy/url-parser": "^4.0.4", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", - "@smithy/util-endpoints": "^3.0.6", - "@smithy/util-middleware": "^4.0.4", - "@smithy/util-retry": "^4.0.6", - "@smithy/util-utf8": "^4.0.0", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/xml-builder": "^3.972.20", + "@smithy/core": "^3.23.17", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/signature-v4": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.5", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/core": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.840.0.tgz", - "integrity": "sha512-x3Zgb39tF1h2XpU+yA4OAAQlW6LVEfXNlSedSYJ7HGKXqA/E9h3rWQVpYfhXXVVsLdYXdNw5KBUkoAoruoZSZA==", + "node_modules/@aws-sdk/crc64-nvme": { + "version": "3.972.7", + "resolved": "http://localhost:4873/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.7.tgz", + "integrity": "sha512-QUagVVBbC8gODCF6e1aV0mE2TXWB9Opz4k8EJFdNrujUVQm5R4AjJa1mpOqzwOuROBzqJU9zawzig7M96L8Ejg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.840.0", - "@aws-sdk/xml-builder": "3.821.0", - "@smithy/core": "^3.6.0", - "@smithy/node-config-provider": "^4.1.3", - "@smithy/property-provider": "^4.0.4", - "@smithy/protocol-http": "^5.1.2", - "@smithy/signature-v4": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", - "@smithy/types": "^4.3.1", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-middleware": "^4.0.4", - "@smithy/util-utf8": "^4.0.0", - "fast-xml-parser": "4.4.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.840.0.tgz", - "integrity": "sha512-EzF6VcJK7XvQ/G15AVEfJzN2mNXU8fcVpXo4bRyr1S6t2q5zx6UPH/XjDbn18xyUmOq01t+r8gG+TmHEVo18fA==", + "version": "3.972.32", + "resolved": "http://localhost:4873/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.32.tgz", + "integrity": "sha512-7vA4GHg8NSmQxquJHSBcSM3RgB4ZaaRi6u4+zGFKOmOH6aqlgr2Sda46clkZDYzlirgfY96w15Zj0jh6PT48ng==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@smithy/property-provider": "^4.0.4", - "@smithy/types": "^4.3.1", + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.840.0.tgz", - "integrity": "sha512-wbnUiPGLVea6mXbUh04fu+VJmGkQvmToPeTYdHE8eRZq3NRDi3t3WltT+jArLBKD/4NppRpMjf2ju4coMCz91g==", + "version": "3.972.34", + "resolved": "http://localhost:4873/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.34.tgz", + "integrity": "sha512-vBrhWujFCLp1u8ptJRWYlipMutzPptb8pDQ00rKVH9q67T7rGd3VTWIj63aKrlLuY6qSsw1Rt5F/D/7wnNgryA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/node-http-handler": "^4.0.6", - "@smithy/property-provider": "^4.0.4", - "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", - "@smithy/types": "^4.3.1", - "@smithy/util-stream": "^4.2.2", + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/types": "^3.973.8", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/property-provider": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/util-stream": "^4.5.25", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.840.0.tgz", - "integrity": "sha512-7F290BsWydShHb+7InXd+IjJc3mlEIm9I0R57F/Pjl1xZB69MdkhVGCnuETWoBt4g53ktJd6NEjzm/iAhFXFmw==", + "version": "3.972.36", + "resolved": "http://localhost:4873/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.36.tgz", + "integrity": "sha512-FBHyCmV8EB0gUvh1d+CZm87zt2PrdC7OyWexLRoH3I5zWSOUGa+9t58Y5jbxRfwUp3AWpHAFvKY6YzgR845sVA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@smithy/credential-provider-imds": "^4.0.6", - "@smithy/property-provider": "^4.0.4", - "@smithy/shared-ini-file-loader": "^4.0.4", - "@smithy/types": "^4.3.1", + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/credential-provider-env": "^3.972.32", + "@aws-sdk/credential-provider-http": "^3.972.34", + "@aws-sdk/credential-provider-login": "^3.972.36", + "@aws-sdk/credential-provider-process": "^3.972.32", + "@aws-sdk/credential-provider-sso": "^3.972.36", + "@aws-sdk/credential-provider-web-identity": "^3.972.36", + "@aws-sdk/nested-clients": "^3.997.4", + "@aws-sdk/types": "^3.973.8", + "@smithy/credential-provider-imds": "^4.2.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login": { + "version": "3.972.36", + "resolved": "http://localhost:4873/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.36.tgz", + "integrity": "sha512-IFap01lJKxQc0C/OHmZwZQr/cKq0DhrcmKedRrdnnl42D+P0SImnnnWQjv07uIPqpEdtqmkPXb9TiPYTU+prxQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/nested-clients": "^3.997.4", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.840.0.tgz", - "integrity": "sha512-KufP8JnxA31wxklLm63evUPSFApGcH8X86z3mv9SRbpCm5ycgWIGVCTXpTOdgq6rPZrwT9pftzv2/b4mV/9clg==", + "version": "3.972.37", + "resolved": "http://localhost:4873/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.37.tgz", + "integrity": "sha512-/WFixFAAiw8WpmjZcI0l4t3DerXLmVinOIfuotmRZnu2qmsFPoqqmstASz0z8bi1pGdFXzeLzf6bwucM3mZcUQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.840.0", - "@aws-sdk/credential-provider-http": "3.840.0", - "@aws-sdk/credential-provider-ini": "3.840.0", - "@aws-sdk/credential-provider-process": "3.840.0", - "@aws-sdk/credential-provider-sso": "3.840.0", - "@aws-sdk/credential-provider-web-identity": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@smithy/credential-provider-imds": "^4.0.6", - "@smithy/property-provider": "^4.0.4", - "@smithy/shared-ini-file-loader": "^4.0.4", - "@smithy/types": "^4.3.1", + "@aws-sdk/credential-provider-env": "^3.972.32", + "@aws-sdk/credential-provider-http": "^3.972.34", + "@aws-sdk/credential-provider-ini": "^3.972.36", + "@aws-sdk/credential-provider-process": "^3.972.32", + "@aws-sdk/credential-provider-sso": "^3.972.36", + "@aws-sdk/credential-provider-web-identity": "^3.972.36", + "@aws-sdk/types": "^3.973.8", + "@smithy/credential-provider-imds": "^4.2.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.840.0.tgz", - "integrity": "sha512-HkDQWHy8tCI4A0Ps2NVtuVYMv9cB4y/IuD/TdOsqeRIAT12h8jDb98BwQPNLAImAOwOWzZJ8Cu0xtSpX7CQhMw==", + "version": "3.972.32", + "resolved": "http://localhost:4873/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.32.tgz", + "integrity": "sha512-uZp4tlGbpczV8QxmtIwOpSkcyGtBRR8/T4BAumRKfAt1nwCig3FSCZvrKl6ARDIDVRYn5p2oRcAsfFR01EgMGA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@smithy/property-provider": "^4.0.4", - "@smithy/shared-ini-file-loader": "^4.0.4", - "@smithy/types": "^4.3.1", + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.840.0.tgz", - "integrity": "sha512-2qgdtdd6R0Z1y0KL8gzzwFUGmhBHSUx4zy85L2XV1CXhpRNwV71SVWJqLDVV5RVWVf9mg50Pm3AWrUC0xb0pcA==", + "version": "3.972.36", + "resolved": "http://localhost:4873/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.36.tgz", + "integrity": "sha512-DsLr0UHMyKzRJKe2bjlwU8q1cfoXg8TIJKV/xwvnalAemiZLOZunFzj/whGnFDZIBVLdnbLiwv5SvRf1+CSwkg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.840.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/token-providers": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@smithy/property-provider": "^4.0.4", - "@smithy/shared-ini-file-loader": "^4.0.4", - "@smithy/types": "^4.3.1", + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/nested-clients": "^3.997.4", + "@aws-sdk/token-providers": "3.1038.0", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.840.0.tgz", - "integrity": "sha512-dpEeVXG8uNZSmVXReE4WP0lwoioX2gstk4RnUgrdUE3YaPq8A+hJiVAyc3h+cjDeIqfbsQbZm9qFetKC2LF9dQ==", + "version": "3.972.36", + "resolved": "http://localhost:4873/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.36.tgz", + "integrity": "sha512-uzrURO7frJhHQVVNR5zBJcCYeMYflmXcWBK1+MiBym2Dfjh6nXATrMixrmGZi+97Q7ETZ+y/4lUwAy0Nfnznjw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@smithy/property-provider": "^4.0.4", - "@smithy/types": "^4.3.1", + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/nested-clients": "^3.997.4", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.840.0.tgz", - "integrity": "sha512-+gkQNtPwcSMmlwBHFd4saVVS11In6ID1HczNzpM3MXKXRBfSlbZJbCt6wN//AZ8HMklZEik4tcEOG0qa9UY8SQ==", + "version": "3.972.10", + "resolved": "http://localhost:4873/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.10.tgz", + "integrity": "sha512-Vbc2frZH7wXlMNd+ZZSXUEs/l1Sv8Jj4zUnIfwrYF5lwaLdXHZ9xx4U3rjUcaye3HRhFVc+E5DbBxpRAbB16BA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-arn-parser": "3.804.0", - "@smithy/node-config-provider": "^4.1.3", - "@smithy/protocol-http": "^5.1.2", - "@smithy/types": "^4.3.1", - "@smithy/util-config-provider": "^4.0.0", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.840.0.tgz", - "integrity": "sha512-iJg2r6FKsKKvdiU4oCOuCf7Ro/YE0Q2BT/QyEZN3/Rt8Nr4SAZiQOlcBXOCpGvuIKOEAhvDOUnW3aDHL01PdVw==", + "version": "3.972.10", + "resolved": "http://localhost:4873/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.10.tgz", + "integrity": "sha512-2Yn0f1Qiq/DjxYR3wfI3LokXnjOhFM7Ssn4LTdFDIxRMCE6I32MAsVnhPX1cUZsuVA9tiZtwwhlSLAtFGxAZlQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.840.0", - "@smithy/protocol-http": "^5.1.2", - "@smithy/types": "^4.3.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.840.0.tgz", - "integrity": "sha512-Kg/o2G6o72sdoRH0J+avdcf668gM1bp6O4VeEXpXwUj/urQnV5qiB2q1EYT110INHUKWOLXPND3sQAqh6sTqHw==", + "version": "3.974.14", + "resolved": "http://localhost:4873/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.14.tgz", + "integrity": "sha512-mhTO3amGzYv/DQNbbqZo6UkHquBHlEEVRZwXmjeRqLmy1l9z3xCiFzglPL7n9JpVc2DZc9kjaraAn3JQrueZbw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@smithy/is-array-buffer": "^4.0.0", - "@smithy/node-config-provider": "^4.1.3", - "@smithy/protocol-http": "^5.1.2", - "@smithy/types": "^4.3.1", - "@smithy/util-middleware": "^4.0.4", - "@smithy/util-stream": "^4.2.2", - "@smithy/util-utf8": "^4.0.0", + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/crc64-nvme": "^3.972.7", + "@aws-sdk/types": "^3.973.8", + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-stream": "^4.5.25", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.840.0.tgz", - "integrity": "sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==", + "version": "3.972.10", + "resolved": "http://localhost:4873/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.10.tgz", + "integrity": "sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.840.0", - "@smithy/protocol-http": "^5.1.2", - "@smithy/types": "^4.3.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.840.0.tgz", - "integrity": "sha512-KVLD0u0YMF3aQkVF8bdyHAGWSUY6N1Du89htTLgqCcIhSxxAJ9qifrosVZ9jkAzqRW99hcufyt2LylcVU2yoKQ==", + "version": "3.972.10", + "resolved": "http://localhost:4873/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.10.tgz", + "integrity": "sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.840.0", - "@smithy/types": "^4.3.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.840.0.tgz", - "integrity": "sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==", + "version": "3.972.10", + "resolved": "http://localhost:4873/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz", + "integrity": "sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.840.0", - "@smithy/types": "^4.3.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.840.0.tgz", - "integrity": "sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==", + "version": "3.972.11", + "resolved": "http://localhost:4873/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.11.tgz", + "integrity": "sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.840.0", - "@smithy/protocol-http": "^5.1.2", - "@smithy/types": "^4.3.1", + "@aws-sdk/types": "^3.973.8", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.840.0.tgz", - "integrity": "sha512-rOUji7CayWN3O09zvvgLzDVQe0HiJdZkxoTS6vzOS3WbbdT7joGdVtAJHtn+x776QT3hHzbKU5gnfhel0o6gQA==", + "version": "3.972.35", + "resolved": "http://localhost:4873/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.35.tgz", + "integrity": "sha512-lLppaNTAz+wNgLdi4FtHzrlwrGF0ODTnBWHBaFg85SKs0eJ+M+tP5ifrA8f/0lNd+Ak3MC1NGC6RavV3ny4HTg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-arn-parser": "3.804.0", - "@smithy/core": "^3.6.0", - "@smithy/node-config-provider": "^4.1.3", - "@smithy/protocol-http": "^5.1.2", - "@smithy/signature-v4": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", - "@smithy/types": "^4.3.1", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.4", - "@smithy/util-stream": "^4.2.2", - "@smithy/util-utf8": "^4.0.0", + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/core": "^3.23.17", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/signature-v4": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-stream": "^4.5.25", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.840.0.tgz", - "integrity": "sha512-CBZP9t1QbjDFGOrtnUEHL1oAvmnCUUm7p0aPNbIdSzNtH42TNKjPRN3TuEIJDGjkrqpL3MXyDSmNayDcw/XW7Q==", + "version": "3.972.10", + "resolved": "http://localhost:4873/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.10.tgz", + "integrity": "sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.840.0", - "@smithy/types": "^4.3.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.840.0.tgz", - "integrity": "sha512-hiiMf7BP5ZkAFAvWRcK67Mw/g55ar7OCrvrynC92hunx/xhMkrgSLM0EXIZ1oTn3uql9kH/qqGF0nqsK6K555A==", + "version": "3.972.36", + "resolved": "http://localhost:4873/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.36.tgz", + "integrity": "sha512-O2beToxguBvrZFFZ+fFgPbbae8MvyIBjQ6lImee4APHEXXNAD5ZJ2ayLF1mb7rsKw86TM81y5czg82bZncjSjg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", - "@smithy/core": "^3.6.0", - "@smithy/protocol-http": "^5.1.2", - "@smithy/types": "^4.3.1", + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@smithy/core": "^3.23.17", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-retry": "^4.3.5", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.840.0.tgz", - "integrity": "sha512-LXYYo9+n4hRqnRSIMXLBb+BLz+cEmjMtTudwK1BF6Bn2RfdDv29KuyeDRrPCS3TwKl7ZKmXUmE9n5UuHAPfBpA==", + "version": "3.997.4", + "resolved": "http://localhost:4873/@aws-sdk/nested-clients/-/nested-clients-3.997.4.tgz", + "integrity": "sha512-4Sf+WY1lMJzXlw5MiyCMe/UzdILCwvuaHThbqMXS6dfh9gZy3No360I42RXquOI/ULUOhWy2HCyU0Fp20fQGPQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.840.0", - "@aws-sdk/middleware-host-header": "3.840.0", - "@aws-sdk/middleware-logger": "3.840.0", - "@aws-sdk/middleware-recursion-detection": "3.840.0", - "@aws-sdk/middleware-user-agent": "3.840.0", - "@aws-sdk/region-config-resolver": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@aws-sdk/util-endpoints": "3.840.0", - "@aws-sdk/util-user-agent-browser": "3.840.0", - "@aws-sdk/util-user-agent-node": "3.840.0", - "@smithy/config-resolver": "^4.1.4", - "@smithy/core": "^3.6.0", - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/hash-node": "^4.0.4", - "@smithy/invalid-dependency": "^4.0.4", - "@smithy/middleware-content-length": "^4.0.4", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-retry": "^4.1.14", - "@smithy/middleware-serde": "^4.0.8", - "@smithy/middleware-stack": "^4.0.4", - "@smithy/node-config-provider": "^4.1.3", - "@smithy/node-http-handler": "^4.0.6", - "@smithy/protocol-http": "^5.1.2", - "@smithy/smithy-client": "^4.4.5", - "@smithy/types": "^4.3.1", - "@smithy/url-parser": "^4.0.4", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.21", - "@smithy/util-defaults-mode-node": "^4.0.21", - "@smithy/util-endpoints": "^3.0.6", - "@smithy/util-middleware": "^4.0.4", - "@smithy/util-retry": "^4.0.6", - "@smithy/util-utf8": "^4.0.0", + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/middleware-host-header": "^3.972.10", + "@aws-sdk/middleware-logger": "^3.972.10", + "@aws-sdk/middleware-recursion-detection": "^3.972.11", + "@aws-sdk/middleware-user-agent": "^3.972.36", + "@aws-sdk/region-config-resolver": "^3.972.13", + "@aws-sdk/signature-v4-multi-region": "^3.996.23", + "@aws-sdk/types": "^3.973.8", + "@aws-sdk/util-endpoints": "^3.996.8", + "@aws-sdk/util-user-agent-browser": "^3.972.10", + "@aws-sdk/util-user-agent-node": "^3.973.22", + "@smithy/config-resolver": "^4.4.17", + "@smithy/core": "^3.23.17", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/hash-node": "^4.2.14", + "@smithy/invalid-dependency": "^4.2.14", + "@smithy/middleware-content-length": "^4.2.14", + "@smithy/middleware-endpoint": "^4.4.32", + "@smithy/middleware-retry": "^4.5.6", + "@smithy/middleware-serde": "^4.2.20", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.49", + "@smithy/util-defaults-mode-node": "^4.2.54", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.5", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.840.0.tgz", - "integrity": "sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==", + "version": "3.972.13", + "resolved": "http://localhost:4873/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.13.tgz", + "integrity": "sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.840.0", - "@smithy/node-config-provider": "^4.1.3", - "@smithy/types": "^4.3.1", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.4", + "@aws-sdk/types": "^3.973.8", + "@smithy/config-resolver": "^4.4.17", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.840.0.tgz", - "integrity": "sha512-8AoVgHrkSfhvGPtwx23hIUO4MmMnux2pjnso1lrLZGqxfElM6jm2w4jTNLlNXk8uKHGyX89HaAIuT0lL6dJj9g==", + "version": "3.996.23", + "resolved": "http://localhost:4873/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.23.tgz", + "integrity": "sha512-wBbys3Y53Ikly556vyADurKpYQHXS7Jjaskbz+Ga9PZCz7PB/9f3VdKbDlz7dqIzn+xwz7L/a6TR4iXcOi8IRw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@smithy/protocol-http": "^5.1.2", - "@smithy/signature-v4": "^5.1.2", - "@smithy/types": "^4.3.1", + "@aws-sdk/middleware-sdk-s3": "^3.972.35", + "@aws-sdk/types": "^3.973.8", + "@smithy/protocol-http": "^5.3.14", + "@smithy/signature-v4": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.840.0.tgz", - "integrity": "sha512-6BuTOLTXvmgwjK7ve7aTg9JaWFdM5UoMolLVPMyh3wTv9Ufalh8oklxYHUBIxsKkBGO2WiHXytveuxH6tAgTYg==", + "version": "3.1038.0", + "resolved": "http://localhost:4873/@aws-sdk/token-providers/-/token-providers-3.1038.0.tgz", + "integrity": "sha512-Qniru+9oGGb/HNK/gGZWbV3jsD0k71ngE7qMQ/x6gYNYLd2EOwHCS6E2E6jfkaqO4i0d+nNKmfRy8bNcshKdGQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.840.0", - "@aws-sdk/nested-clients": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@smithy/property-provider": "^4.0.4", - "@smithy/shared-ini-file-loader": "^4.0.4", - "@smithy/types": "^4.3.1", + "@aws-sdk/core": "^3.974.6", + "@aws-sdk/nested-clients": "^3.997.4", + "@aws-sdk/types": "^3.973.8", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/types": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.840.0.tgz", - "integrity": "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==", + "version": "3.973.8", + "resolved": "http://localhost:4873/@aws-sdk/types/-/types-3.973.8.tgz", + "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.804.0.tgz", - "integrity": "sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==", + "version": "3.972.3", + "resolved": "http://localhost:4873/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", + "integrity": "sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.840.0.tgz", - "integrity": "sha512-eqE9ROdg/Kk0rj3poutyRCFauPDXIf/WSvCqFiRDDVi6QOnCv/M0g2XW8/jSvkJlOyaXkNCptapIp6BeeFFGYw==", + "version": "3.996.8", + "resolved": "http://localhost:4873/@aws-sdk/util-endpoints/-/util-endpoints-3.996.8.tgz", + "integrity": "sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.840.0", - "@smithy/types": "^4.3.1", - "@smithy/util-endpoints": "^3.0.6", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-endpoints": "^3.4.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz", - "integrity": "sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==", + "version": "3.965.5", + "resolved": "http://localhost:4873/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", + "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.840.0.tgz", - "integrity": "sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==", + "version": "3.972.10", + "resolved": "http://localhost:4873/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.10.tgz", + "integrity": "sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.840.0", - "@smithy/types": "^4.3.1", + "@aws-sdk/types": "^3.973.8", + "@smithy/types": "^4.14.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.840.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.840.0.tgz", - "integrity": "sha512-Fy5JUEDQU1tPm2Yw/YqRYYc27W5+QD/J4mYvQvdWjUGZLB5q3eLFMGD35Uc28ZFoGMufPr4OCxK/bRfWROBRHQ==", + "version": "3.973.22", + "resolved": "http://localhost:4873/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.22.tgz", + "integrity": "sha512-YTYqTmOUrwbm1h99Ee4y/mVYpFRl0oSO/amtP5cc1BZZWdaAVWs9zj3TkyRHWvR9aI/ZS8m3mS6awXtYUlWyaw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.840.0", - "@aws-sdk/types": "3.840.0", - "@smithy/node-config-provider": "^4.1.3", - "@smithy/types": "^4.3.1", + "@aws-sdk/middleware-user-agent": "^3.972.36", + "@aws-sdk/types": "^3.973.8", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-config-provider": "^4.2.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" }, "peerDependencies": { "aws-crt": ">=1.0.0" @@ -1509,26 +1420,37 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.821.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.821.0.tgz", - "integrity": "sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==", + "version": "3.972.21", + "resolved": "http://localhost:4873/@aws-sdk/xml-builder/-/xml-builder-3.972.21.tgz", + "integrity": "sha512-qxNiHUtlrsjTeSlrPWiFkWps7uD6YB4eKzg7eLAFH8jbiHTlt0ePNlo2Xu+WlftP38JIcMaIX4jTUjOlE2ySWw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", + "@nodable/entities": "2.1.0", + "@smithy/types": "^4.14.1", + "fast-xml-parser": "5.7.2", "tslib": "^2.6.2" }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.2.4", + "resolved": "http://localhost:4873/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", + "license": "Apache-2.0", "engines": { "node": ">=18.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.29.0", + "resolved": "http://localhost:4873/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -1537,9 +1459,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.7.tgz", - "integrity": "sha512-xgu/ySj2mTiUFmdE9yCMfBxLp4DHd5DwmbbD05YAuICfodYT3VvRxbrh81LGQ/8UpSdtMdfKMn3KouYDX59DGQ==", + "version": "7.29.0", + "resolved": "http://localhost:4873/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", "engines": { @@ -1547,22 +1469,22 @@ } }, "node_modules/@babel/core": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.7.tgz", - "integrity": "sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.5", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.6", - "@babel/parser": "^7.27.7", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.27.7", - "@babel/types": "^7.27.7", + "version": "7.29.0", + "resolved": "http://localhost:4873/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1579,7 +1501,7 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "resolved": "http://localhost:4873/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", @@ -1588,16 +1510,16 @@ } }, "node_modules/@babel/generator": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.5.tgz", - "integrity": "sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==", + "version": "7.29.1", + "resolved": "http://localhost:4873/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.27.5", - "@babel/types": "^7.27.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -1605,13 +1527,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "version": "7.28.6", + "resolved": "http://localhost:4873/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.27.2", + "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -1623,7 +1545,7 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "resolved": "http://localhost:4873/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", @@ -1633,7 +1555,7 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "resolved": "http://localhost:4873/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", @@ -1641,30 +1563,40 @@ "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "http://localhost:4873/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "version": "7.28.6", + "resolved": "http://localhost:4873/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", - "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", + "version": "7.28.6", + "resolved": "http://localhost:4873/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.3" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1674,9 +1606,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "version": "7.28.6", + "resolved": "http://localhost:4873/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", "engines": { @@ -1685,7 +1617,7 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "resolved": "http://localhost:4873/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", @@ -1694,9 +1626,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.28.5", + "resolved": "http://localhost:4873/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -1705,7 +1637,7 @@ }, "node_modules/@babel/helper-validator-option": { "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "resolved": "http://localhost:4873/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", @@ -1714,27 +1646,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", - "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", + "version": "7.29.2", + "resolved": "http://localhost:4873/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.27.6" + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.7.tgz", - "integrity": "sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==", + "version": "7.29.2", + "resolved": "http://localhost:4873/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.27.7" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -1745,7 +1677,7 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", @@ -1758,7 +1690,7 @@ }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, "license": "MIT", @@ -1771,7 +1703,7 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "license": "MIT", @@ -1784,7 +1716,7 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "license": "MIT", @@ -1799,13 +1731,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", + "version": "7.28.6", + "resolved": "http://localhost:4873/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1816,7 +1748,7 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "license": "MIT", @@ -1829,7 +1761,7 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", @@ -1841,13 +1773,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "version": "7.28.6", + "resolved": "http://localhost:4873/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1858,7 +1790,7 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "license": "MIT", @@ -1871,7 +1803,7 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "license": "MIT", @@ -1884,7 +1816,7 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "license": "MIT", @@ -1897,7 +1829,7 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "license": "MIT", @@ -1910,7 +1842,7 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "license": "MIT", @@ -1923,7 +1855,7 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "license": "MIT", @@ -1936,7 +1868,7 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "license": "MIT", @@ -1952,7 +1884,7 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "resolved": "http://localhost:4873/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "license": "MIT", @@ -1967,13 +1899,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "version": "7.28.6", + "resolved": "http://localhost:4873/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -1983,67 +1915,57 @@ } }, "node_modules/@babel/runtime": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", - "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "version": "7.29.2", + "resolved": "http://localhost:4873/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "http://localhost:4873/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.7.tgz", - "integrity": "sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==", + "version": "7.29.0", + "resolved": "http://localhost:4873/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.5", - "@babel/parser": "^7.27.7", - "@babel/template": "^7.27.2", - "@babel/types": "^7.27.7", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { - "version": "7.27.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.7.tgz", - "integrity": "sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==", + "version": "7.29.0", + "resolved": "http://localhost:4873/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -2051,14 +1973,24 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "resolved": "http://localhost:4873/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true, "license": "MIT" }, + "node_modules/@borewit/text-codec": { + "version": "0.2.2", + "resolved": "http://localhost:4873/@borewit/text-codec/-/text-codec-0.2.2.tgz", + "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "resolved": "http://localhost:4873/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, "license": "MIT", @@ -2069,7 +2001,7 @@ }, "node_modules/@cspotcode/source-map-consumer": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "resolved": "http://localhost:4873/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", "devOptional": true, "license": "BSD-3-Clause", @@ -2079,7 +2011,7 @@ }, "node_modules/@cspotcode/source-map-support": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "resolved": "http://localhost:4873/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", "devOptional": true, "license": "MIT", @@ -2091,25 +2023,25 @@ } }, "node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "version": "2.0.8", + "resolved": "http://localhost:4873/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", + "integrity": "sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==", "license": "MIT", "dependencies": { - "colorspace": "1.1.x", + "@so-ric/colorspace": "^1.1.6", "enabled": "2.0.x", "kuler": "^2.0.0" } }, "node_modules/@datadog/libdatadog": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@datadog/libdatadog/-/libdatadog-0.6.0.tgz", + "resolved": "http://localhost:4873/@datadog/libdatadog/-/libdatadog-0.6.0.tgz", "integrity": "sha512-Ldu+U59LUnejtd7ceXMKJCAFZeYpNdTEEXr8PISY9HFXMa4DOwepcWMaJAAqCPU7LINJeivVwvSD1Pm14VZy7w==", "license": "Apache-2.0" }, "node_modules/@datadog/native-appsec": { "version": "8.5.2", - "resolved": "https://registry.npmjs.org/@datadog/native-appsec/-/native-appsec-8.5.2.tgz", + "resolved": "http://localhost:4873/@datadog/native-appsec/-/native-appsec-8.5.2.tgz", "integrity": "sha512-lETBaVhBk+9o0pc+LDnXvp2ImDyT8K2deuqLf8A6q4/QjzCCXyR/yZO9R5+Kdoc93jZMRTWV9Pr4pBwHEdJSVA==", "hasInstallScript": true, "license": "Apache-2.0", @@ -2122,7 +2054,7 @@ }, "node_modules/@datadog/native-iast-taint-tracking": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@datadog/native-iast-taint-tracking/-/native-iast-taint-tracking-4.0.0.tgz", + "resolved": "http://localhost:4873/@datadog/native-iast-taint-tracking/-/native-iast-taint-tracking-4.0.0.tgz", "integrity": "sha512-2uF8RnQkJO5bmLi26Zkhxg+RFJn/uEsesYTflScI/Cz/BWv+792bxI+OaCKvhgmpLkm8EElenlpidcJyZm7GYw==", "hasInstallScript": true, "license": "Apache-2.0", @@ -2132,7 +2064,7 @@ }, "node_modules/@datadog/native-metrics": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@datadog/native-metrics/-/native-metrics-3.1.1.tgz", + "resolved": "http://localhost:4873/@datadog/native-metrics/-/native-metrics-3.1.1.tgz", "integrity": "sha512-MU1gHrolwryrU4X9g+fylA1KPH3S46oqJPEtVyrO+3Kh29z80fegmtyrU22bNt8LigPUK/EdPCnSbMe88QbnxQ==", "hasInstallScript": true, "license": "Apache-2.0", @@ -2146,7 +2078,7 @@ }, "node_modules/@datadog/pprof": { "version": "5.8.2", - "resolved": "https://registry.npmjs.org/@datadog/pprof/-/pprof-5.8.2.tgz", + "resolved": "http://localhost:4873/@datadog/pprof/-/pprof-5.8.2.tgz", "integrity": "sha512-M+bO4v4TaxYK6k2qJBxnhf7Vh25Wode64y4LfxzGs5kLTFr8eFTp6HJai3/af7U5gjTHX/4s+CHv2bxja97pbw==", "hasInstallScript": true, "license": "Apache-2.0", @@ -2163,13 +2095,13 @@ }, "node_modules/@datadog/sketches-js": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@datadog/sketches-js/-/sketches-js-2.1.1.tgz", + "resolved": "http://localhost:4873/@datadog/sketches-js/-/sketches-js-2.1.1.tgz", "integrity": "sha512-d5RjycE+MObE/hU+8OM5Zp4VjTwiPLRa8299fj7muOmR16fb942z8byoMbCErnGh0lBevvgkGrLclQDvINbIyg==", "license": "Apache-2.0" }, "node_modules/@datadog/wasm-js-rewriter": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@datadog/wasm-js-rewriter/-/wasm-js-rewriter-4.0.1.tgz", + "resolved": "http://localhost:4873/@datadog/wasm-js-rewriter/-/wasm-js-rewriter-4.0.1.tgz", "integrity": "sha512-JRa05Je6gw+9+3yZnm/BroQZrEfNwRYCxms56WCCHzOBnoPihQLB0fWy5coVJS29kneCUueUvBvxGp6NVXgdqw==", "license": "Apache-2.0", "dependencies": { @@ -2182,9 +2114,18 @@ "node": ">= 10" } }, + "node_modules/@datadog/wasm-js-rewriter/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "http://localhost:4873/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/@datadog/wasm-js-rewriter/node_modules/node-gyp-build": { "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "resolved": "http://localhost:4873/node-gyp-build/-/node-gyp-build-4.8.4.tgz", "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "license": "MIT", "bin": { @@ -2194,9 +2135,9 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", - "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "version": "1.10.0", + "resolved": "http://localhost:4873/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", "license": "MIT", "optional": true, "dependencies": { @@ -2204,9 +2145,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.1", + "resolved": "http://localhost:4873/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2223,9 +2164,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "http://localhost:4873/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -2234,7 +2175,7 @@ }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "resolved": "http://localhost:4873/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", @@ -2257,9 +2198,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.15.0", + "resolved": "http://localhost:4873/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -2275,14 +2216,14 @@ }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "resolved": "http://localhost:4873/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, "node_modules/@eslint/js": { "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "resolved": "http://localhost:4873/@eslint/js/-/js-8.57.1.tgz", "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", @@ -2290,71 +2231,44 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@golevelup/nestjs-common": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@golevelup/nestjs-common/-/nestjs-common-2.0.2.tgz", - "integrity": "sha512-e5pV5MtFDkTNRxWn1+JTh6SUiI0Sld1++yfwcx3k3MHv7iT3AocvjizTcxnKVPb9BHJjZ68jjPxSND3/zi2FSw==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" - }, - "peerDependencies": { - "@nestjs/common": "^10.x || ^11.0.0" - } - }, "node_modules/@golevelup/nestjs-discovery": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-4.0.3.tgz", - "integrity": "sha512-8w3CsXHN7+7Sn2i419Eal1Iw/kOjAd6Kb55M/ZqKBBwACCMn4WiEuzssC71LpBMI1090CiDxuelfPRwwIrQK+A==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" - }, - "peerDependencies": { - "@nestjs/common": "^10.x || ^11.0.0", - "@nestjs/core": "^10.x || ^11.0.0" - } - }, - "node_modules/@golevelup/nestjs-modules": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@golevelup/nestjs-modules/-/nestjs-modules-0.7.2.tgz", - "integrity": "sha512-0u5wNm+jxOmRFHHKNbJci180zhCvGsp0ZW3tJt5m2ZMvFhfYjJiVozF5M3chHxqd3q7hH4cNLSE3/78uhjyaxg==", + "version": "7.0.0", + "resolved": "http://localhost:4873/@golevelup/nestjs-discovery/-/nestjs-discovery-7.0.0.tgz", + "integrity": "sha512-l2O4qokytyBwTqNKNOv3OITdJtYfV0f6eLqR5c0brS1Hy4MV4h9YXy+o534yczOcxWnDfeATArDpLxz88wonSQ==", "license": "MIT", "dependencies": { - "lodash": "^4.17.21" + "lodash": "^4.17.23" }, "peerDependencies": { - "@nestjs/common": "^10.x || ^11.0.0", - "rxjs": "^7.x" + "@nestjs/common": "^11.1.17", + "@nestjs/core": "^11.1.17" } }, "node_modules/@golevelup/nestjs-rabbitmq": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@golevelup/nestjs-rabbitmq/-/nestjs-rabbitmq-4.1.0.tgz", - "integrity": "sha512-I/5eXZjR/8p6Ld+yt7RE56okLNphDXB02gFS+X0/mfIiwp5mE3AfnMlYM12ciO0e4/kJET9sTUY59VuxWlITTg==", + "version": "9.0.0", + "resolved": "http://localhost:4873/@golevelup/nestjs-rabbitmq/-/nestjs-rabbitmq-9.0.0.tgz", + "integrity": "sha512-sPQuLk73ZqHSO9fs9+WvYRYh56cQZWNsnIhGcthVgADCb2gzzflVYFqMgOyP+ZbUDvdrahw6RXeC0Vn9nTLtNw==", "license": "MIT", "dependencies": { - "@golevelup/nestjs-common": "^2.0.0", - "@golevelup/nestjs-discovery": "^4.0.0", - "@golevelup/nestjs-modules": "^0.7.0", - "amqp-connection-manager": "^3.0.0", - "amqplib": "^0.8.0", - "lodash": "^4.17.21" + "@golevelup/nestjs-discovery": "^7.0.0", + "amqp-connection-manager": "^5.0.0", + "amqplib": "^0.10.9", + "lodash": "^4.17.23" }, "peerDependencies": { - "@nestjs/common": "^10.x", - "@nestjs/core": "^10.x", - "reflect-metadata": "^0.1.0", - "rxjs": "^7.x" + "@nestjs/common": "^11.1.17", + "@nestjs/core": "^11.1.17", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1" } }, "node_modules/@golevelup/nestjs-rabbitmq/node_modules/amqp-connection-manager": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/amqp-connection-manager/-/amqp-connection-manager-3.9.0.tgz", - "integrity": "sha512-ZKw9ckJKz40Lc2pC7DY0NVocpzPalMaCgv0sBn+N4er2QFAJul9pIiMOm/FsPHeCzB+FulV7PckOpmZvWvewGQ==", + "version": "5.0.0", + "resolved": "http://localhost:4873/amqp-connection-manager/-/amqp-connection-manager-5.0.0.tgz", + "integrity": "sha512-88yQzqa5RSBgnLl504XjvCQJ7d+osskdwvg35Lwm1LRbfLjNU9p7SQUMSP82BB7mseiq9tIUPJ3HE3eXQbpjEw==", "license": "MIT", "dependencies": { - "promise-breaker": "^5.0.0" + "promise-breaker": "^6.0.0" }, "engines": { "node": ">=10.0.0", @@ -2364,106 +2278,60 @@ "amqplib": "*" } }, - "node_modules/@golevelup/nestjs-rabbitmq/node_modules/amqplib": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.8.0.tgz", - "integrity": "sha512-icU+a4kkq4Y1PS4NNi+YPDMwdlbFcZ1EZTQT2nigW3fvOb6AOgUQ9+Mk4ue0Zu5cBg/XpDzB40oH10ysrk2dmA==", - "license": "MIT", - "dependencies": { - "bitsyntax": "~0.1.0", - "bluebird": "^3.7.2", - "buffer-more-ints": "~1.0.0", - "readable-stream": "1.x >=1.1.9", - "safe-buffer": "~5.2.1", - "url-parse": "~1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@golevelup/nestjs-rabbitmq/node_modules/promise-breaker": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz", - "integrity": "sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA==", - "license": "MIT" - }, - "node_modules/@golevelup/nestjs-rabbitmq/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/@golevelup/nestjs-rabbitmq/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "license": "MIT" - }, "node_modules/@graphql-tools/merge": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.4.2.tgz", - "integrity": "sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==", + "version": "9.1.9", + "resolved": "http://localhost:4873/@graphql-tools/merge/-/merge-9.1.9.tgz", + "integrity": "sha512-iHUWNjRHeQRYdgIMIuChThOwoKzA9vrzYeslgfBo5eUYEyHGZCoDPjAavssoYXLwstYt1dZj2J22jSzc2DrN0Q==", "license": "MIT", "dependencies": { - "@graphql-tools/utils": "^9.2.1", + "@graphql-tools/utils": "^11.1.0", "tslib": "^2.4.0" }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@graphql-tools/mock": { - "version": "8.7.20", - "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.7.20.tgz", - "integrity": "sha512-ljcHSJWjC/ZyzpXd5cfNhPI7YljRVvabKHPzKjEs5ElxWu2cdlLGvyNYepApXDsM/OJG/2xuhGM+9GWu5gEAPQ==", - "license": "MIT", - "dependencies": { - "@graphql-tools/schema": "^9.0.18", - "@graphql-tools/utils": "^9.2.1", - "fast-json-stable-stringify": "^2.1.0", - "tslib": "^2.4.0" + "engines": { + "node": ">=16.0.0" }, "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/@graphql-tools/schema": { - "version": "9.0.19", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-9.0.19.tgz", - "integrity": "sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==", + "version": "10.0.33", + "resolved": "http://localhost:4873/@graphql-tools/schema/-/schema-10.0.33.tgz", + "integrity": "sha512-O6P3RIftO0jafnSsFAqpjurUuUxJ43s/AdPVLQsBkI6y4Ic/tKm4C1Qm1KKQsCDTOxXPJClh/v3g7k7yLKCFBQ==", "license": "MIT", "dependencies": { - "@graphql-tools/merge": "^8.4.1", - "@graphql-tools/utils": "^9.2.1", - "tslib": "^2.4.0", - "value-or-promise": "^1.0.12" + "@graphql-tools/merge": "^9.1.9", + "@graphql-tools/utils": "^11.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" }, "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/@graphql-tools/utils": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-9.2.1.tgz", - "integrity": "sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==", + "version": "11.1.0", + "resolved": "http://localhost:4873/@graphql-tools/utils/-/utils-11.1.0.tgz", + "integrity": "sha512-PtFVG4r8Z2LEBSaPYQMusBiB3o6kjLVJyjCLbnWem/SpSuM21v6LTmgpkXfYU1qpBV2UGsFyuEnSJInl8fR1Ag==", "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", "tslib": "^2.4.0" }, + "engines": { + "node": ">=16.0.0" + }, "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/@graphql-typed-document-node/core": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "resolved": "http://localhost:4873/@graphql-typed-document-node/core/-/core-3.2.0.tgz", "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", "license": "MIT", "peerDependencies": { @@ -2472,7 +2340,7 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "resolved": "http://localhost:4873/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", "dev": true, @@ -2488,7 +2356,7 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "resolved": "http://localhost:4873/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "license": "Apache-2.0", @@ -2502,16 +2370,25 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "resolved": "http://localhost:4873/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "http://localhost:4873/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.2.tgz", - "integrity": "sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==", + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", "cpu": [ "arm64" ], @@ -2527,13 +2404,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.1.0" + "@img/sharp-libvips-darwin-arm64": "1.2.4" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.2.tgz", - "integrity": "sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==", + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", "cpu": [ "x64" ], @@ -2549,13 +2426,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.1.0" + "@img/sharp-libvips-darwin-x64": "1.2.4" } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", - "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", + "version": "1.2.4", + "resolved": "http://localhost:4873/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", "cpu": [ "arm64" ], @@ -2569,9 +2446,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", - "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", + "version": "1.2.4", + "resolved": "http://localhost:4873/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", "cpu": [ "x64" ], @@ -2585,12 +2462,15 @@ } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", - "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", + "version": "1.2.4", + "resolved": "http://localhost:4873/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", "cpu": [ "arm" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2601,12 +2481,15 @@ } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", - "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", + "version": "1.2.4", + "resolved": "http://localhost:4873/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2617,12 +2500,34 @@ } }, "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", - "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", + "version": "1.2.4", + "resolved": "http://localhost:4873/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", "cpu": [ "ppc64" ], + "libc": [ + "glibc" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "http://localhost:4873/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2633,12 +2538,15 @@ } }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", - "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", + "version": "1.2.4", + "resolved": "http://localhost:4873/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", "cpu": [ "s390x" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2649,12 +2557,15 @@ } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", - "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", + "version": "1.2.4", + "resolved": "http://localhost:4873/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2665,12 +2576,15 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", - "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", + "version": "1.2.4", + "resolved": "http://localhost:4873/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2681,12 +2595,15 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", - "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", + "version": "1.2.4", + "resolved": "http://localhost:4873/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -2697,12 +2614,15 @@ } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.2.tgz", - "integrity": "sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==", + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", "cpu": [ "arm" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2715,16 +2635,44 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.1.0" + "@img/sharp-libvips-linux-arm": "1.2.4" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.2.tgz", - "integrity": "sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==", + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", "cpu": [ "arm64" ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2737,16 +2685,44 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.1.0" + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "libc": [ + "glibc" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.2.tgz", - "integrity": "sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==", + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", "cpu": [ "s390x" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2759,16 +2735,19 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.1.0" + "@img/sharp-libvips-linux-s390x": "1.2.4" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.2.tgz", - "integrity": "sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==", + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", "cpu": [ "x64" ], + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2781,16 +2760,19 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.1.0" + "@img/sharp-libvips-linux-x64": "1.2.4" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.2.tgz", - "integrity": "sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==", + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", "cpu": [ "arm64" ], + "libc": [ + "musl" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2803,16 +2785,19 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.2.tgz", - "integrity": "sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==", + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", "cpu": [ "x64" ], + "libc": [ + "musl" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -2825,20 +2810,20 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.1.0" + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.2.tgz", - "integrity": "sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==", + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", "cpu": [ "wasm32" ], "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { - "@emnapi/runtime": "^1.4.3" + "@emnapi/runtime": "^1.7.0" }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -2848,9 +2833,9 @@ } }, "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.2.tgz", - "integrity": "sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==", + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", "cpu": [ "arm64" ], @@ -2867,9 +2852,9 @@ } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.2.tgz", - "integrity": "sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==", + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", "cpu": [ "ia32" ], @@ -2886,9 +2871,9 @@ } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.2.tgz", - "integrity": "sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==", + "version": "0.34.5", + "resolved": "http://localhost:4873/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", "cpu": [ "x64" ], @@ -2904,162 +2889,512 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@ioredis/commands": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", - "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==", - "license": "MIT" + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "http://localhost:4873/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "http://localhost:4873/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "dev": true, + "license": "MIT", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">=12" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "http://localhost:4873/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "dev": true, "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, "engines": { - "node": ">=12" + "node": ">=18" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "http://localhost:4873/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "dev": true, "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, "engines": { - "node": ">=12" + "node": ">=18" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "http://localhost:4873/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "dev": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": ">=12" + "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "http://localhost:4873/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">=12" + "node": ">=18" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "http://localhost:4873/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@isaacs/ttlcache": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", - "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", - "license": "ISC", + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "http://localhost:4873/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "http://localhost:4873/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "http://localhost:4873/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "dev": true, "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "http://localhost:4873/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "http://localhost:4873/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "http://localhost:4873/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "http://localhost:4873/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "http://localhost:4873/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "http://localhost:4873/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@ioredis/commands": { + "version": "1.5.1", + "resolved": "http://localhost:4873/@ioredis/commands/-/commands-1.5.1.tgz", + "integrity": "sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "http://localhost:4873/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "http://localhost:4873/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "http://localhost:4873/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "http://localhost:4873/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "http://localhost:4873/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "http://localhost:4873/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "http://localhost:4873/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/ttlcache": { + "version": "1.4.1", + "resolved": "http://localhost:4873/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "http://localhost:4873/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "http://localhost:4873/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "http://localhost:4873/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "http://localhost:4873/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -3072,7 +3407,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "resolved": "http://localhost:4873/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", @@ -3085,7 +3420,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "resolved": "http://localhost:4873/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", @@ -3101,7 +3436,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "resolved": "http://localhost:4873/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", @@ -3114,7 +3449,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "resolved": "http://localhost:4873/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", @@ -3123,9 +3458,9 @@ } }, "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "version": "0.1.6", + "resolved": "http://localhost:4873/@istanbuljs/schema/-/schema-0.1.6.tgz", + "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", "dev": true, "license": "MIT", "engines": { @@ -3134,7 +3469,7 @@ }, "node_modules/@jest/console": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "resolved": "http://localhost:4873/@jest/console/-/console-29.7.0.tgz", "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "license": "MIT", @@ -3152,7 +3487,7 @@ }, "node_modules/@jest/core": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "resolved": "http://localhost:4873/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "license": "MIT", @@ -3200,7 +3535,7 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "resolved": "http://localhost:4873/@jest/environment/-/environment-29.7.0.tgz", "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "license": "MIT", @@ -3216,7 +3551,7 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "resolved": "http://localhost:4873/@jest/expect/-/expect-29.7.0.tgz", "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "license": "MIT", @@ -3230,7 +3565,7 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "resolved": "http://localhost:4873/@jest/expect-utils/-/expect-utils-29.7.0.tgz", "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "license": "MIT", @@ -3243,7 +3578,7 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "resolved": "http://localhost:4873/@jest/fake-timers/-/fake-timers-29.7.0.tgz", "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "license": "MIT", @@ -3261,7 +3596,7 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "resolved": "http://localhost:4873/@jest/globals/-/globals-29.7.0.tgz", "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "license": "MIT", @@ -3277,7 +3612,7 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "resolved": "http://localhost:4873/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "license": "MIT", @@ -3321,9 +3656,9 @@ }, "node_modules/@jest/reporters/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "resolved": "http://localhost:4873/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -3343,7 +3678,7 @@ }, "node_modules/@jest/schemas": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "resolved": "http://localhost:4873/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", @@ -3356,7 +3691,7 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "resolved": "http://localhost:4873/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "license": "MIT", @@ -3371,7 +3706,7 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "resolved": "http://localhost:4873/@jest/test-result/-/test-result-29.7.0.tgz", "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "license": "MIT", @@ -3387,7 +3722,7 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "resolved": "http://localhost:4873/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "license": "MIT", @@ -3403,7 +3738,7 @@ }, "node_modules/@jest/transform": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "resolved": "http://localhost:4873/@jest/transform/-/transform-29.7.0.tgz", "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "license": "MIT", @@ -3430,7 +3765,7 @@ }, "node_modules/@jest/types": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "resolved": "http://localhost:4873/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", @@ -3446,16 +3781,10 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@josephg/resolvable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", - "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==", - "license": "ISC" - }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.11.tgz", - "integrity": "sha512-C512c1ytBTio4MrpWKlJpyFHT6+qfFL8SZ58zBzJ1OOzUEjHeF1BtjY2fH7n4x/g2OV/KiiMLAivOp1DXmiMMw==", + "version": "0.3.13", + "resolved": "http://localhost:4873/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { @@ -3463,9 +3792,20 @@ "@jridgewell/trace-mapping": "^0.3.24" } }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "http://localhost:4873/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "resolved": "http://localhost:4873/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", @@ -3474,9 +3814,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.9.tgz", - "integrity": "sha512-amBU75CKOOkcQLfyM6J+DnWwz41yTsWI7o8MQ003LwUIWb4NYX/evAblTx1oBBYJySqL/zHPxHXDw5ewpQaUFw==", + "version": "0.3.11", + "resolved": "http://localhost:4873/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, "license": "MIT", "dependencies": { @@ -3485,16 +3825,16 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.3.tgz", - "integrity": "sha512-AiR5uKpFxP3PjO4R19kQGIMwxyRyPuXmKEEy301V1C0+1rVjS94EZQXf1QKZYN8Q0YM+estSPhmx5JwNftv6nw==", + "version": "1.5.5", + "resolved": "http://localhost:4873/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.28", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.28.tgz", - "integrity": "sha512-KNNHHwW3EIp4EDYOvYFGyIFfx36R2dNJYH4knnZlF8T5jdbD5Wx8xmSaQ2gP9URkJ04LGEtlcCtwArKcmFcwKw==", + "version": "0.3.31", + "resolved": "http://localhost:4873/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { @@ -3504,7 +3844,7 @@ }, "node_modules/@kwsites/file-exists": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "resolved": "http://localhost:4873/@kwsites/file-exists/-/file-exists-1.1.1.tgz", "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", "license": "MIT", "dependencies": { @@ -3513,26 +3853,13 @@ }, "node_modules/@kwsites/promise-deferred": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "resolved": "http://localhost:4873/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", "license": "MIT" }, - "node_modules/@ljharb/through": { - "version": "2.3.14", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.14.tgz", - "integrity": "sha512-ajBvlKpWucBB17FuQYUShqpqy8GRgYEpJW0vWJbUu1CV9lWyrDCapy0lScU8T8Z6qn49sSwJB3+M+evYIdGg+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/@lukeed/csprng": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "resolved": "http://localhost:4873/@lukeed/csprng/-/csprng-1.1.0.tgz", "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", "license": "MIT", "engines": { @@ -3540,15 +3867,15 @@ } }, "node_modules/@microsoft/tsdoc": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz", - "integrity": "sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==", + "version": "0.16.0", + "resolved": "http://localhost:4873/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz", + "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==", "license": "MIT" }, "node_modules/@mongodb-js/saslprep": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.3.0.tgz", - "integrity": "sha512-zlayKCsIjYb7/IdfqxorK5+xUMyi4vOKcFy10wKJYc63NSdKI8mNME+uJqfatkPmOSMMUiojrL58IePKBm3gvQ==", + "version": "1.4.9", + "resolved": "http://localhost:4873/@mongodb-js/saslprep/-/saslprep-1.4.9.tgz", + "integrity": "sha512-RXSxsokhAF/4nWys8An8npsqOI33Ex1Hlzqjw2pZOO+GKtMAR2noGnUdsFiGwsaO/xXI+56mtjTmDA3JXJsvmA==", "license": "MIT", "dependencies": { "sparse-bitfield": "^3.0.3" @@ -3556,7 +3883,7 @@ }, "node_modules/@multiversx/sdk-bls-wasm": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-bls-wasm/-/sdk-bls-wasm-0.3.5.tgz", + "resolved": "http://localhost:4873/@multiversx/sdk-bls-wasm/-/sdk-bls-wasm-0.3.5.tgz", "integrity": "sha512-c0tIdQUnbBLSt6NYU+OpeGPYdL0+GV547HeHT8Xc0BKQ7Cj0v82QUoA2QRtWrR1G4MNZmLsIacZSsf6DrIS2Bw==", "license": "BSD-3-Clause", "optional": true, @@ -3565,9 +3892,9 @@ } }, "node_modules/@multiversx/sdk-core": { - "version": "13.17.2", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-core/-/sdk-core-13.17.2.tgz", - "integrity": "sha512-X/Ga66Ubx8IpHPM7pk3gl52KxVR0tbxlN2Zhjz7fg4Xxe0fzWAux5lEuDV8sN3SqD55uyz/l2CkstKgoZWpKWg==", + "version": "15.4.0", + "resolved": "http://localhost:4873/@multiversx/sdk-core/-/sdk-core-15.4.0.tgz", + "integrity": "sha512-WzCy/dipvwGo93JrZ3JaFOqiN5m/nkBavPTLqwpajDcvVuA/VHhX69QGoxd3db/6vc1N2KixfIQv9bEa+BACtQ==", "license": "MIT", "dependencies": { "@multiversx/sdk-transaction-decoder": "1.0.2", @@ -3586,7 +3913,7 @@ }, "optionalDependencies": { "@multiversx/sdk-bls-wasm": "0.3.5", - "axios": "^1.7.4", + "axios": "^1.10.0", "bip39": "3.1.0" }, "peerDependencies": { @@ -3596,7 +3923,7 @@ }, "node_modules/@multiversx/sdk-core/node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "resolved": "http://localhost:4873/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "license": "MIT", "bin": { @@ -3604,54 +3931,19 @@ } }, "node_modules/@multiversx/sdk-exchange": { - "version": "0.2.22", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-exchange/-/sdk-exchange-0.2.22.tgz", - "integrity": "sha512-mRo1U9Fj9S+O4BNGR4Gs9g9+T7hUw/cGoGe2rzqUsGLimfudaGWtHLlkV20Wm3GITVMe2zcFbDFewxkprnSjhg==", + "version": "0.2.24", + "resolved": "http://localhost:4873/@multiversx/sdk-exchange/-/sdk-exchange-0.2.24.tgz", + "integrity": "sha512-UuIWZJKETiNJxrJIcanUpDMnLo49RffKUQtVYa3/gVobBW6IcY2tLS8wW35WuFG+6ZLnyGGM3Oavs+PpRkUBVQ==", "license": "MIT", "dependencies": { "@multiversx/sdk-core": "^13.6.3", "bignumber.js": "9.0.1" } }, - "node_modules/@multiversx/sdk-exchange/node_modules/bignumber.js": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", - "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/@multiversx/sdk-native-auth-client": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-native-auth-client/-/sdk-native-auth-client-1.0.9.tgz", - "integrity": "sha512-q1/cDRKz7QQsr8lQskUsfGkqJbIut772/MBX52Td4OTGg/G1HAm2xsELe+06y7L537A2rqz5/W9KkJ5yWt968g==", - "license": "GPL-3.0-or-later", - "dependencies": { - "axios": "^1.7.4" - } - }, - "node_modules/@multiversx/sdk-nestjs-auth": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-auth/-/sdk-nestjs-auth-6.0.0.tgz", - "integrity": "sha512-QcGIylARbw4Z+oIu4lmi9wP8dh63cx1+NCbjq1YKV0rLHTBEclpfoD4xETxl82iAqoHlqOIPE3j8guhSxuoWzQ==", - "license": "MIT", - "dependencies": { - "@multiversx/sdk-core": "^14.0.0", - "@multiversx/sdk-native-auth-server": "^2.0.0", - "jsonwebtoken": "^9.0.0" - }, - "peerDependencies": { - "@multiversx/sdk-nestjs-cache": "^6.0.0", - "@multiversx/sdk-nestjs-common": "^6.0.0", - "@multiversx/sdk-nestjs-monitoring": "^6.0.0", - "@nestjs/common": "^10.x" - } - }, - "node_modules/@multiversx/sdk-nestjs-auth/node_modules/@multiversx/sdk-core": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-core/-/sdk-core-14.2.3.tgz", - "integrity": "sha512-h52YIJ3udMyQSNX1QaZKbm7YpwIFvRI78QEJTes0UoboAUt5Vx5bTc8kZt8Lrfks7FKHEPaUeMdLochUcQbQ4Q==", + "node_modules/@multiversx/sdk-exchange/node_modules/@multiversx/sdk-core": { + "version": "13.17.2", + "resolved": "http://localhost:4873/@multiversx/sdk-core/-/sdk-core-13.17.2.tgz", + "integrity": "sha512-X/Ga66Ubx8IpHPM7pk3gl52KxVR0tbxlN2Zhjz7fg4Xxe0fzWAux5lEuDV8sN3SqD55uyz/l2CkstKgoZWpKWg==", "license": "MIT", "dependencies": { "@multiversx/sdk-transaction-decoder": "1.0.2", @@ -3678,66 +3970,114 @@ "protobufjs": "^7.2.6" } }, - "node_modules/@multiversx/sdk-nestjs-auth/node_modules/@multiversx/sdk-native-auth-server": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-native-auth-server/-/sdk-native-auth-server-2.0.0.tgz", - "integrity": "sha512-DdjWyt60Chk6unMVprBV/5zA8rEXjufYdE67UG6XP8RRZiGU1+k6UU14E0TU/iii8K+/5Tj/zfrIrPfbDiASoA==", + "node_modules/@multiversx/sdk-exchange/node_modules/bignumber.js": { + "version": "9.0.1", + "resolved": "http://localhost:4873/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/@multiversx/sdk-exchange/node_modules/uuid": { + "version": "8.3.2", + "resolved": "http://localhost:4873/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@multiversx/sdk-native-auth-client": { + "version": "2.0.1", + "resolved": "http://localhost:4873/@multiversx/sdk-native-auth-client/-/sdk-native-auth-client-2.0.1.tgz", + "integrity": "sha512-J4RxpsfNnWBKOPz0vvhnReSf8V6mci11Pe3NT2awhrpBhtAvkSBUGIzgoGVf/eumrhyReRmKyMjo+u4UhGokbg==", + "license": "GPL-3.0-or-later", + "peerDependencies": { + "axios": "^1.10.0" + } + }, + "node_modules/@multiversx/sdk-native-auth-server": { + "version": "2.1.0", + "resolved": "http://localhost:4873/@multiversx/sdk-native-auth-server/-/sdk-native-auth-server-2.1.0.tgz", + "integrity": "sha512-fbDHeYF2cJpRaGpz3Cqv3jfYhm/nf2jlxZzCmBEeetsuRai0eZvDImm4O58GJu3JBkR0iokWrS/zctSgX37sjg==", "license": "GPL-3.0-or-later", "dependencies": { "axios": "^1.7.4", "bech32": "^2.0.0" }, "peerDependencies": { - "@multiversx/sdk-core": "^14.x" + "@multiversx/sdk-core": "^15.x" } }, - "node_modules/@multiversx/sdk-nestjs-auth/node_modules/@multiversx/sdk-native-auth-server/node_modules/bech32": { + "node_modules/@multiversx/sdk-native-auth-server/node_modules/bech32": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "resolved": "http://localhost:4873/bech32/-/bech32-2.0.0.tgz", "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", "license": "MIT" }, - "node_modules/@multiversx/sdk-nestjs-auth/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "node_modules/@multiversx/sdk-nestjs-auth": { + "version": "7.0.0", + "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-auth/-/sdk-nestjs-auth-7.0.0.tgz", + "integrity": "sha512-MbffzVjrONoOBI7iT8Zus+qpEBcq3W/oisFa48tdodOe18w2w2s75wLT0IkCNjP0K5oNv9ELPzU84w9i/4yQQA==", "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "@multiversx/sdk-core": "^15.4.0", + "@multiversx/sdk-native-auth-server": "^2.1.0", + "jsonwebtoken": "^9.0.3" + }, + "peerDependencies": { + "@multiversx/sdk-nestjs-cache": "^7.0.0", + "@multiversx/sdk-nestjs-common": "^7.0.0", + "@multiversx/sdk-nestjs-monitoring": "^7.0.0", + "@nestjs/common": "^11.x" } }, "node_modules/@multiversx/sdk-nestjs-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-cache/-/sdk-nestjs-cache-6.0.0.tgz", - "integrity": "sha512-mSq6tEDDQboD6XmMDqJODi8dxv0t4wcz3Zjqltg0Gg7/o5vvyvaJp6mExw2IJcUBTsbdMekOkQhV8aQwzN+7gQ==", + "version": "7.0.0", + "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-cache/-/sdk-nestjs-cache-7.0.0.tgz", + "integrity": "sha512-LTox9HWw3jGvHWJhG08bJ7c3KSATNPibP+W1PKrUS3uFC2s77EjM97xYS/nve//jN7/I6OBZ81hG2Te41zMEDg==", "license": "MIT", "dependencies": { - "lru-cache": "^8.0.4", - "moment": "^2.29.4", - "redis": "^3.1.2", - "tiny-async-pool": "^1.2.0", + "lru-cache": "^11.3.5", + "moment": "^2.30.1", + "redis": "^5.12.1", + "tiny-async-pool": "^2.1.0", "uuid": "^8.3.2" }, "peerDependencies": { - "@multiversx/sdk-nestjs-common": "^6.0.0", - "@multiversx/sdk-nestjs-monitoring": "^6.0.0", - "@multiversx/sdk-nestjs-redis": "^6.0.0", - "@nestjs/common": "^10.x", - "@nestjs/core": "^10.x" + "@multiversx/sdk-nestjs-common": "^7.0.0", + "@multiversx/sdk-nestjs-monitoring": "^7.0.0", + "@multiversx/sdk-nestjs-redis": "^7.0.0", + "@nestjs/common": "^11.x", + "@nestjs/core": "^11.x" } }, - "node_modules/@multiversx/sdk-nestjs-cache/node_modules/lru-cache": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", - "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", - "license": "ISC", + "node_modules/@multiversx/sdk-nestjs-cache/node_modules/redis": { + "version": "5.12.1", + "resolved": "http://localhost:4873/redis/-/redis-5.12.1.tgz", + "integrity": "sha512-LDsoVvb/CpoV9EN3FXvgvSHNJWuCIzl9MiO3ppOevuGLpSGJhwfQjpEwfFJcQvNSddHADDdZaWx0HnmMxRXG7g==", + "license": "MIT", + "dependencies": { + "@redis/bloom": "5.12.1", + "@redis/client": "5.12.1", + "@redis/json": "5.12.1", + "@redis/search": "5.12.1", + "@redis/time-series": "5.12.1" + }, "engines": { - "node": ">=16.14" + "node": ">= 18.19.0" } }, + "node_modules/@multiversx/sdk-nestjs-cache/node_modules/tiny-async-pool": { + "version": "2.1.0", + "resolved": "http://localhost:4873/tiny-async-pool/-/tiny-async-pool-2.1.0.tgz", + "integrity": "sha512-ltAHPh/9k0STRQqaoUX52NH4ZQYAJz24ZAEwf1Zm+HYg3l9OXTWeqWKyYsHu40wF/F0rxd2N2bk5sLvX2qlSvg==", + "license": "MIT" + }, "node_modules/@multiversx/sdk-nestjs-cache/node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "resolved": "http://localhost:4873/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "license": "MIT", "bin": { @@ -3745,57 +4085,27 @@ } }, "node_modules/@multiversx/sdk-nestjs-common": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-common/-/sdk-nestjs-common-6.0.0.tgz", - "integrity": "sha512-X4dVvHPr+upEmPD5sgw0fDVopLdjpsT2boETWFg3NhDpsLQ4L+d5OVQzGum5msZ9iZ3zA1a14KFW6wzjmR1qrQ==", + "version": "7.0.0", + "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-common/-/sdk-nestjs-common-7.0.0.tgz", + "integrity": "sha512-yXWH/I/3P/rlnfc3GGqHPOWgNJCjQnfM09oJYxXvGfUz/t/9aJOUkXC7ndX2jSgqHvM2ur7i/kc3wFs7nSdxHQ==", "license": "MIT", "dependencies": { - "@multiversx/sdk-core": "^14.0.0", - "nest-winston": "^1.6.2", + "@multiversx/sdk-core": "^15.4.0", + "nest-winston": "^1.10.2", "uuid": "^8.3.2", - "winston": "^3.7.2" - }, - "peerDependencies": { - "@multiversx/sdk-nestjs-monitoring": "^6.0.0", - "@nestjs/common": "^10.x", - "@nestjs/config": "^3.x", - "@nestjs/core": "^10.x", - "@nestjs/swagger": "^7.x" - } - }, - "node_modules/@multiversx/sdk-nestjs-common/node_modules/@multiversx/sdk-core": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-core/-/sdk-core-14.2.3.tgz", - "integrity": "sha512-h52YIJ3udMyQSNX1QaZKbm7YpwIFvRI78QEJTes0UoboAUt5Vx5bTc8kZt8Lrfks7FKHEPaUeMdLochUcQbQ4Q==", - "license": "MIT", - "dependencies": { - "@multiversx/sdk-transaction-decoder": "1.0.2", - "@noble/ed25519": "1.7.3", - "@noble/hashes": "1.3.0", - "bech32": "1.1.4", - "blake2b": "2.1.3", - "buffer": "6.0.3", - "ed25519-hd-key": "1.1.2", - "ed2curve": "0.3.0", - "json-bigint": "1.0.0", - "keccak": "3.0.2", - "scryptsy": "2.1.0", - "tweetnacl": "1.0.3", - "uuid": "8.3.2" - }, - "optionalDependencies": { - "@multiversx/sdk-bls-wasm": "0.3.5", - "axios": "^1.7.4", - "bip39": "3.1.0" + "winston": "^3.19.0" }, "peerDependencies": { - "bignumber.js": "^9.0.1", - "protobufjs": "^7.2.6" + "@multiversx/sdk-nestjs-monitoring": "^7.0.0", + "@nestjs/common": "^11.x", + "@nestjs/config": "^4.x", + "@nestjs/core": "^11.x", + "@nestjs/swagger": "^11.x" } }, "node_modules/@multiversx/sdk-nestjs-common/node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "resolved": "http://localhost:4873/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "license": "MIT", "bin": { @@ -3803,180 +4113,95 @@ } }, "node_modules/@multiversx/sdk-nestjs-elastic": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-elastic/-/sdk-nestjs-elastic-6.0.0.tgz", - "integrity": "sha512-rz1FtK/8vDhMoq4R2BSwiM27zbCRvXieNEYgl6cmHSTnNLGS10scz3ON+AiX70dxhzgWiEGgkuKYTMW3LRi6Zw==", + "version": "7.0.0", + "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-elastic/-/sdk-nestjs-elastic-7.0.0.tgz", + "integrity": "sha512-Ye6RWW2ZOcksIKF1gXMNCrtjFJXsGW+HL81YrcG0/CLF/C7YSRSBBwYBYFbjfEPC9WTuelVQCDfekc5Bjf9Sjw==", "license": "MIT", "peerDependencies": { - "@multiversx/sdk-nestjs-http": "^6.0.0", - "@nestjs/common": "^10.x" + "@multiversx/sdk-nestjs-http": "^7.0.0", + "@nestjs/common": "^11.x" } }, "node_modules/@multiversx/sdk-nestjs-http": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-http/-/sdk-nestjs-http-6.0.0.tgz", - "integrity": "sha512-TIuWlKVl/ZWWwdM7kDhDQ/854gx8vhCPMN70UTY7fTznOJuPjCfakPg/FMOdUpqBh+NFViJGfUmy3F/s/9CB6A==", - "license": "MIT", - "dependencies": { - "@multiversx/sdk-core": "^14.0.0", - "@multiversx/sdk-native-auth-client": "^1.0.9", - "agentkeepalive": "^4.3.0", - "axios": "^1.7.4" - }, - "peerDependencies": { - "@multiversx/sdk-nestjs-common": "^6.0.0", - "@multiversx/sdk-nestjs-monitoring": "^6.0.0", - "@nestjs/common": "^10.x", - "@nestjs/core": "^10.x" - } - }, - "node_modules/@multiversx/sdk-nestjs-http/node_modules/@multiversx/sdk-core": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-core/-/sdk-core-14.2.3.tgz", - "integrity": "sha512-h52YIJ3udMyQSNX1QaZKbm7YpwIFvRI78QEJTes0UoboAUt5Vx5bTc8kZt8Lrfks7FKHEPaUeMdLochUcQbQ4Q==", + "version": "7.0.0", + "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-http/-/sdk-nestjs-http-7.0.0.tgz", + "integrity": "sha512-o0TpsrNZvMsoAszYYvzC/46S52GaKP/0hvg709L/KT4ThNT23c3cDnQUVGEeSflXR/tB9oTaJm/nKx+PP4HHWg==", "license": "MIT", "dependencies": { - "@multiversx/sdk-transaction-decoder": "1.0.2", - "@noble/ed25519": "1.7.3", - "@noble/hashes": "1.3.0", - "bech32": "1.1.4", - "blake2b": "2.1.3", - "buffer": "6.0.3", - "ed25519-hd-key": "1.1.2", - "ed2curve": "0.3.0", - "json-bigint": "1.0.0", - "keccak": "3.0.2", - "scryptsy": "2.1.0", - "tweetnacl": "1.0.3", - "uuid": "8.3.2" - }, - "optionalDependencies": { - "@multiversx/sdk-bls-wasm": "0.3.5", - "axios": "^1.7.4", - "bip39": "3.1.0" + "@multiversx/sdk-core": "^15.4.0", + "@multiversx/sdk-native-auth-client": "^2.0.1", + "agentkeepalive": "^4.6.0", + "axios": "^1.15.2" }, "peerDependencies": { - "bignumber.js": "^9.0.1", - "protobufjs": "^7.2.6" - } - }, - "node_modules/@multiversx/sdk-nestjs-http/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "@multiversx/sdk-nestjs-common": "^7.0.0", + "@multiversx/sdk-nestjs-monitoring": "^7.0.0", + "@nestjs/common": "^11.x", + "@nestjs/core": "^11.x" } }, "node_modules/@multiversx/sdk-nestjs-monitoring": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-monitoring/-/sdk-nestjs-monitoring-6.0.0.tgz", - "integrity": "sha512-8Qd6I4XSkjtbV9OltStKMp3xIwk3BueuKxlOQqCF9qN2fTo8RaKqRO2j6Nv/v9sjWoy6ElVSH0WpuYeYN45/NA==", - "license": "MIT", - "dependencies": { - "prom-client": "^14.0.1", - "winston": "^3.7.2", - "winston-daily-rotate-file": "^4.6.1" - }, - "peerDependencies": { - "@nestjs/common": "^10.x" - } - }, - "node_modules/@multiversx/sdk-nestjs-rabbitmq": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-rabbitmq/-/sdk-nestjs-rabbitmq-6.0.0.tgz", - "integrity": "sha512-ayFh3+c87NMVQi4g33XtMFhDusYLeF29bsgfnHBKGeS7D8ew7dZdZzpubEncebXvEAsIFN3jdRcOuO2ukX7/pA==", + "version": "7.0.0", + "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-monitoring/-/sdk-nestjs-monitoring-7.0.0.tgz", + "integrity": "sha512-ZJV+UAoLRFN2+9Q1tIHyY4XZ5rS2iocuyDqO5gRaGKU797QYd9L0v4UVC/+Cpq+LvBHHhlcGY7Bv7DdNBXxJzQ==", "license": "MIT", "dependencies": { - "@golevelup/nestjs-rabbitmq": "4.0.0", - "uuid": "^8.3.2" + "prom-client": "^15.1.3", + "winston": "^3.19.0", + "winston-daily-rotate-file": "^5.0.0" }, "peerDependencies": { - "@multiversx/sdk-nestjs-common": "^6.0.0", - "@nestjs/common": "^10.x" + "@nestjs/common": "^11.x" } }, - "node_modules/@multiversx/sdk-nestjs-rabbitmq/node_modules/@golevelup/nestjs-rabbitmq": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@golevelup/nestjs-rabbitmq/-/nestjs-rabbitmq-4.0.0.tgz", - "integrity": "sha512-CQHRq/jyK3GlM7Lv4nVaqd+BJ53tZXsrOtO/8/OZh19i0YOcQxyRM7iDdtULeG8omJB5/aGMZNsbioLuupxoog==", - "license": "MIT", + "node_modules/@multiversx/sdk-nestjs-monitoring/node_modules/prom-client": { + "version": "15.1.3", + "resolved": "http://localhost:4873/prom-client/-/prom-client-15.1.3.tgz", + "integrity": "sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==", + "license": "Apache-2.0", "dependencies": { - "@golevelup/nestjs-common": "^2.0.0", - "@golevelup/nestjs-discovery": "^4.0.0", - "@golevelup/nestjs-modules": "^0.7.0", - "amqp-connection-manager": "^3.0.0", - "amqplib": "^0.8.0", - "lodash": "^4.17.21" + "@opentelemetry/api": "^1.4.0", + "tdigest": "^0.1.1" }, - "peerDependencies": { - "@nestjs/common": "^10.x", - "@nestjs/core": "^10.x", - "reflect-metadata": "^0.1.0", - "rxjs": "^7.x" + "engines": { + "node": "^16 || ^18 || >=20" } }, - "node_modules/@multiversx/sdk-nestjs-rabbitmq/node_modules/amqp-connection-manager": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/amqp-connection-manager/-/amqp-connection-manager-3.9.0.tgz", - "integrity": "sha512-ZKw9ckJKz40Lc2pC7DY0NVocpzPalMaCgv0sBn+N4er2QFAJul9pIiMOm/FsPHeCzB+FulV7PckOpmZvWvewGQ==", + "node_modules/@multiversx/sdk-nestjs-monitoring/node_modules/winston-daily-rotate-file": { + "version": "5.0.0", + "resolved": "http://localhost:4873/winston-daily-rotate-file/-/winston-daily-rotate-file-5.0.0.tgz", + "integrity": "sha512-JDjiXXkM5qvwY06733vf09I2wnMXpZEhxEVOSPenZMii+g7pcDcTBt2MRugnoi8BwVSuCT2jfRXBUy+n1Zz/Yw==", "license": "MIT", "dependencies": { - "promise-breaker": "^5.0.0" + "file-stream-rotator": "^0.6.1", + "object-hash": "^3.0.0", + "triple-beam": "^1.4.1", + "winston-transport": "^4.7.0" }, "engines": { - "node": ">=10.0.0", - "npm": ">5.0.0" + "node": ">=8" }, "peerDependencies": { - "amqplib": "*" + "winston": "^3" } }, - "node_modules/@multiversx/sdk-nestjs-rabbitmq/node_modules/amqplib": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.8.0.tgz", - "integrity": "sha512-icU+a4kkq4Y1PS4NNi+YPDMwdlbFcZ1EZTQT2nigW3fvOb6AOgUQ9+Mk4ue0Zu5cBg/XpDzB40oH10ysrk2dmA==", + "node_modules/@multiversx/sdk-nestjs-rabbitmq": { + "version": "7.0.0", + "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-rabbitmq/-/sdk-nestjs-rabbitmq-7.0.0.tgz", + "integrity": "sha512-lNfkGK2xSTBHlsQ7/Vw/FOIbkTusVLcaXRNrxx7gG6kJZtbz1aBoLbaCknWjJg2ZJjvgAnHUsl6z0f5dUZKcZg==", "license": "MIT", "dependencies": { - "bitsyntax": "~0.1.0", - "bluebird": "^3.7.2", - "buffer-more-ints": "~1.0.0", - "readable-stream": "1.x >=1.1.9", - "safe-buffer": "~5.2.1", - "url-parse": "~1.5.1" + "@golevelup/nestjs-rabbitmq": "9.0.0", + "uuid": "^8.3.2" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@multiversx/sdk-nestjs-rabbitmq/node_modules/promise-breaker": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-5.0.0.tgz", - "integrity": "sha512-mgsWQuG4kJ1dtO6e/QlNDLFtMkMzzecsC69aI5hlLEjGHFNpHrvGhFi4LiK5jg2SMQj74/diH+wZliL9LpGsyA==", - "license": "MIT" - }, - "node_modules/@multiversx/sdk-nestjs-rabbitmq/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "peerDependencies": { + "@multiversx/sdk-nestjs-common": "^7.0.0", + "@nestjs/common": "^11.x" } }, - "node_modules/@multiversx/sdk-nestjs-rabbitmq/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "license": "MIT" - }, "node_modules/@multiversx/sdk-nestjs-rabbitmq/node_modules/uuid": { "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "resolved": "http://localhost:4873/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "license": "MIT", "bin": { @@ -3984,20 +4209,20 @@ } }, "node_modules/@multiversx/sdk-nestjs-redis": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-redis/-/sdk-nestjs-redis-6.0.0.tgz", - "integrity": "sha512-EVLMfaeZOUUXeQhNAHzl0luEcZr0CB21GPT7oZbIMdR1OzSQGtVmbeuuWYMxDi7Ucz183zOEPPKF/uyiWHNBzQ==", + "version": "7.0.0", + "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-redis/-/sdk-nestjs-redis-7.0.0.tgz", + "integrity": "sha512-CalzPmZDqzrJIrl2sgjYt7C6U8c9Jy3UTxkpoy6kdbNOwLrE2/4uwX4Q4K5jtClLalIo7bA9Oz0KkrBXJuWp9Q==", "license": "MIT", "dependencies": { - "ioredis": "^5.2.3" + "ioredis": "^5.10.1" }, "peerDependencies": { - "@nestjs/common": "^10.x" + "@nestjs/common": "^11.x" } }, "node_modules/@multiversx/sdk-transaction-decoder": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-transaction-decoder/-/sdk-transaction-decoder-1.0.2.tgz", + "resolved": "http://localhost:4873/@multiversx/sdk-transaction-decoder/-/sdk-transaction-decoder-1.0.2.tgz", "integrity": "sha512-j43QsKquu8N51WLmVlJ7dV2P3A1448R7/ktvl8r3i6wRMpfdtzDPNofTdHmMRT7DdQdvs4+RNgz8hVKL11Etsw==", "license": "MIT", "dependencies": { @@ -4006,13 +4231,13 @@ }, "node_modules/@multiversx/sdk-transaction-decoder/node_modules/bech32": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "resolved": "http://localhost:4873/bech32/-/bech32-2.0.0.tgz", "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", "license": "MIT" }, "node_modules/@multiversx/sdk-transaction-processor": { "version": "0.1.35", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-transaction-processor/-/sdk-transaction-processor-0.1.35.tgz", + "resolved": "http://localhost:4873/@multiversx/sdk-transaction-processor/-/sdk-transaction-processor-0.1.35.tgz", "integrity": "sha512-zbj4zNYhIxjlnxy7/p7so4IroOd+Z3QtIvFkKJEg8HMGSAuF6dObmrmc4dsx8nzG97rFpOLJ7iSyE8Xk9sCvrQ==", "license": "GPL-3.0-or-later", "dependencies": { @@ -4020,25 +4245,25 @@ } }, "node_modules/@nestjs/apollo": { - "version": "12.0.11", - "resolved": "https://registry.npmjs.org/@nestjs/apollo/-/apollo-12.0.11.tgz", - "integrity": "sha512-E8kBOyGBZ8Zx4qMLnK3+ECZgmLKqNHyYbtkOi0fXWr8ackosLMkRqGgtDVffXRlVA3eo6G3RgnL0Qyu3VvfD5A==", + "version": "13.3.0", + "resolved": "http://localhost:4873/@nestjs/apollo/-/apollo-13.3.0.tgz", + "integrity": "sha512-UXuqkGj96dne68/9lPQ+Yh0z4a5ON7QH3LPNFerStxn9YCCp0/LpI0wn/oxhJNWLechC7ZiSmQDhytfdJT4p8A==", "license": "MIT", "dependencies": { - "@apollo/server-plugin-landing-page-graphql-playground": "4.0.0", + "@apollo/server-plugin-landing-page-graphql-playground": "4.0.1", "iterall": "1.3.0", - "lodash.omit": "4.5.0", - "tslib": "2.6.2" + "lodash.omit": "4.18.0", + "tslib": "2.8.1" }, "peerDependencies": { "@apollo/gateway": "^2.0.0", - "@apollo/server": "^4.3.2", + "@apollo/server": "^5.0.0", "@apollo/subgraph": "^2.0.0", - "@as-integrations/fastify": "^1.3.0 || ^2.0.0", - "@nestjs/common": "^9.3.8 || ^10.0.0", - "@nestjs/core": "^9.3.8 || ^10.0.0", - "@nestjs/graphql": "^12.0.0", - "graphql": "^16.6.0" + "@as-integrations/fastify": "^2.1.1 || ^3.0.0", + "@nestjs/common": "^11.0.1", + "@nestjs/core": "^11.0.1", + "@nestjs/graphql": "^13.0.0", + "graphql": "^16.10.0" }, "peerDependenciesMeta": { "@apollo/gateway": { @@ -4047,52 +4272,48 @@ "@apollo/subgraph": { "optional": true }, + "@as-integrations/express5": { + "optional": true + }, "@as-integrations/fastify": { "optional": true } } }, - "node_modules/@nestjs/apollo/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "license": "0BSD" - }, "node_modules/@nestjs/cli": { - "version": "10.4.9", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.4.9.tgz", - "integrity": "sha512-s8qYd97bggqeK7Op3iD49X2MpFtW4LVNLAwXFkfbRxKME6IYT7X0muNTJ2+QfI8hpbNx9isWkrLWIp+g5FOhiA==", + "version": "11.0.21", + "resolved": "http://localhost:4873/@nestjs/cli/-/cli-11.0.21.tgz", + "integrity": "sha512-F8mV0Sj/zVEouzR3NxBuJy08YHTUOmC5Xdcx3qIIaJWzrm8Vw86CHkhkaPBJ5ewRMHPDCShPmhsfwhpCcjts3A==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "17.3.11", - "@angular-devkit/schematics": "17.3.11", - "@angular-devkit/schematics-cli": "17.3.11", - "@nestjs/schematics": "^10.0.1", - "chalk": "4.1.2", - "chokidar": "3.6.0", + "@angular-devkit/core": "19.2.24", + "@angular-devkit/schematics": "19.2.24", + "@angular-devkit/schematics-cli": "19.2.24", + "@inquirer/prompts": "7.10.1", + "@nestjs/schematics": "^11.0.1", + "ansis": "4.2.0", + "chokidar": "4.0.3", "cli-table3": "0.6.5", "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "9.0.2", - "glob": "10.4.5", - "inquirer": "8.2.6", + "fork-ts-checker-webpack-plugin": "9.1.0", + "glob": "13.0.6", "node-emoji": "1.11.0", "ora": "5.4.1", - "tree-kill": "1.2.2", "tsconfig-paths": "4.2.0", "tsconfig-paths-webpack-plugin": "4.2.0", - "typescript": "5.7.2", - "webpack": "5.97.1", + "typescript": "5.9.3", + "webpack": "5.106.0", "webpack-node-externals": "3.0.0" }, "bin": { "nest": "bin/nest.js" }, "engines": { - "node": ">= 16.14" + "node": ">= 20.11" }, "peerDependencies": { - "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0", + "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 || ^0.8.0", "@swc/core": "^1.3.62" }, "peerDependenciesMeta": { @@ -4104,10 +4325,71 @@ } } }, + "node_modules/@nestjs/cli/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "http://localhost:4873/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@nestjs/cli/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@nestjs/cli/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@nestjs/cli/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "http://localhost:4873/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/@nestjs/cli/node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "version": "5.9.3", + "resolved": "http://localhost:4873/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -4119,35 +4401,37 @@ } }, "node_modules/@nestjs/cli/node_modules/webpack": { - "version": "5.97.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", - "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "version": "5.106.0", + "resolved": "http://localhost:4873/webpack/-/webpack-5.106.0.tgz", + "integrity": "sha512-Pkx5joZ9RrdgO5LBkyX1L2ZAJeK/Taz3vqZ9CbcP0wS5LEMx5QkKsEwLl29QJfihZ+DKRBFldzy1O30pJ1MDpA==", "dev": true, "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", + "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", + "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" }, "bin": { "webpack": "bin/webpack.js" @@ -4166,13 +4450,14 @@ } }, "node_modules/@nestjs/common": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.4.19.tgz", - "integrity": "sha512-0TZJ8H+7qtaqZt6YfZJkDRp0e+v6jjo5/pevPAjUy0WYxaTy16bNNQxFPRKLMe/v1hUr2oGV9imvL2477zNt5g==", + "version": "11.1.19", + "resolved": "http://localhost:4873/@nestjs/common/-/common-11.1.19.tgz", + "integrity": "sha512-qeiTt2tv+e5QyDKqG8HlVZb2wx64FEaSGFJouqTSRs+kG44iTfl3xlz1XqVped+rihx4hmjWgL5gkhtdK3E6+Q==", "license": "MIT", "dependencies": { - "file-type": "20.4.1", + "file-type": "21.3.4", "iterare": "1.2.1", + "load-esm": "1.0.3", "tslib": "2.8.1", "uid": "2.0.2" }, @@ -4181,8 +4466,8 @@ "url": "https://opencollective.com/nest" }, "peerDependencies": { - "class-transformer": "*", - "class-validator": "*", + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", "reflect-metadata": "^0.1.12 || ^0.2.0", "rxjs": "^7.1.0" }, @@ -4196,53 +4481,46 @@ } }, "node_modules/@nestjs/config": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.0.1.tgz", - "integrity": "sha512-a98MMkDlgUlXTv9qtDbimYfXsuafn/YZOh/S35afutr0Qc5T6KzjyWP5VjxRkv26yI2JM0RhFruByFTM6ezwHA==", + "version": "4.0.4", + "resolved": "http://localhost:4873/@nestjs/config/-/config-4.0.4.tgz", + "integrity": "sha512-CJPjNitr0bAufSEnRe2N+JbnVmMmDoo6hvKCPzXgZoGwJSmp/dZPk9f/RMbuD/+Q1ZJPjwsRpq0vxna++Knwow==", "license": "MIT", "dependencies": { - "dotenv": "16.3.1", - "dotenv-expand": "10.0.0", - "lodash": "4.17.21", - "uuid": "9.0.0" + "dotenv": "17.4.1", + "dotenv-expand": "12.0.3", + "lodash": "4.18.1" }, "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "reflect-metadata": "^0.1.13" - } - }, - "node_modules/@nestjs/config/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "@nestjs/common": "^10.0.0 || ^11.0.0", + "rxjs": "^7.1.0" } }, "node_modules/@nestjs/core": { - "version": "10.4.2", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.4.2.tgz", - "integrity": "sha512-h2sjNzFHzoxOHU5Ag/pCVn0CrYHKTa0HfjGAa6GOrffRAsIa1H2nJaUzg89yHZXkHgWi+UynRsp8A4HJ1JVg9w==", + "version": "11.1.19", + "resolved": "http://localhost:4873/@nestjs/core/-/core-11.1.19.tgz", + "integrity": "sha512-6nJkWa2efrYi+XlU686J9y5L7OvxpLVjT0T/sxRKE7Jvpffiihelup4WSvLvRhdHDjj/5SuoWEwqReXAaaeHmw==", "hasInstallScript": true, "license": "MIT", "dependencies": { - "@nuxtjs/opencollective": "0.3.2", + "@nuxt/opencollective": "0.4.1", "fast-safe-stringify": "2.1.1", "iterare": "1.2.1", - "path-to-regexp": "3.3.0", - "tslib": "2.7.0", + "path-to-regexp": "8.4.2", + "tslib": "2.8.1", "uid": "2.0.2" }, + "engines": { + "node": ">= 20" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/nest" }, "peerDependencies": { - "@nestjs/common": "^10.0.0", - "@nestjs/microservices": "^10.0.0", - "@nestjs/platform-express": "^10.0.0", - "@nestjs/websockets": "^10.0.0", + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", "reflect-metadata": "^0.1.12 || ^0.2.0", "rxjs": "^7.1.0" }, @@ -4258,55 +4536,48 @@ } } }, - "node_modules/@nestjs/core/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" - }, "node_modules/@nestjs/event-emitter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-2.1.1.tgz", - "integrity": "sha512-6L6fBOZTyfFlL7Ih/JDdqlCzZeCW0RjCX28wnzGyg/ncv5F/EOeT1dfopQr1loBRQ3LTgu8OWM7n4zLN4xigsg==", + "version": "3.1.0", + "resolved": "http://localhost:4873/@nestjs/event-emitter/-/event-emitter-3.1.0.tgz", + "integrity": "sha512-DOY/4XBGyIjYyOJKkO6jl1kzFE0ZfX0wV+M2HR5NWymPT9Z0zdCEcZGxTXXkoMRwPtglnvCGJALSjOpXPIcM3g==", "license": "MIT", "dependencies": { "eventemitter2": "6.4.9" }, "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0" + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0" } }, "node_modules/@nestjs/graphql": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-12.2.2.tgz", - "integrity": "sha512-lUDy/1uqbRA1kBKpXcmY0aHhcPbfeG52Wg5+9Jzd1d57dwSjCAmuO+mWy5jz9ugopVCZeK0S/kdAMvA+r9fNdA==", + "version": "13.3.0", + "resolved": "http://localhost:4873/@nestjs/graphql/-/graphql-13.3.0.tgz", + "integrity": "sha512-oGPGi8el+96h8MS3S2SgE7oidMrmm41rwzudP/OO72ij8R+4YmvO27keZPDbSCK2a5IySoGZQMb7C81vwfN2vQ==", "license": "MIT", "dependencies": { - "@graphql-tools/merge": "9.0.11", - "@graphql-tools/schema": "10.0.10", - "@graphql-tools/utils": "10.6.1", - "@nestjs/mapped-types": "2.0.6", - "chokidar": "4.0.1", - "fast-glob": "3.3.2", + "@graphql-tools/merge": "9.1.8", + "@graphql-tools/schema": "10.0.32", + "@graphql-tools/utils": "11.0.1", + "@nestjs/mapped-types": "2.1.1", + "chokidar": "4.0.3", + "fast-glob": "3.3.3", "graphql-tag": "2.12.6", - "graphql-ws": "5.16.0", - "lodash": "4.17.21", + "graphql-ws": "6.0.8", + "lodash": "4.18.1", "normalize-path": "3.0.0", "subscriptions-transport-ws": "0.11.0", "tslib": "2.8.1", - "uuid": "11.0.3", - "ws": "8.18.0" + "ws": "8.20.0" }, "peerDependencies": { - "@apollo/subgraph": "^2.0.0", - "@nestjs/common": "^9.3.8 || ^10.0.0", - "@nestjs/core": "^9.3.8 || ^10.0.0", + "@apollo/subgraph": "^2.9.3", + "@nestjs/common": "^11.0.1", + "@nestjs/core": "^11.0.1", "class-transformer": "*", "class-validator": "*", - "graphql": "^16.6.0", + "graphql": "^16.11.0", "reflect-metadata": "^0.1.13 || ^0.2.0", - "ts-morph": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^24.0.0" + "ts-morph": "^20.0.0 || ^21.0.0 || ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0" }, "peerDependenciesMeta": { "@apollo/subgraph": { @@ -4324,12 +4595,12 @@ } }, "node_modules/@nestjs/graphql/node_modules/@graphql-tools/merge": { - "version": "9.0.11", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.0.11.tgz", - "integrity": "sha512-AJL0XTozn31HoZN8tULzEkbDXyETA5vAFu4Q65kxJDu027p+auaNFYj/y51HP4BhMR4wykoteWyO7/VxKfdpiw==", + "version": "9.1.8", + "resolved": "http://localhost:4873/@graphql-tools/merge/-/merge-9.1.8.tgz", + "integrity": "sha512-25V7WDrODo1cPrmuUCrqf5qlMA4a/Ow4aHaqJ1MnTUaluwsV3UiqzCHWux3HSLb0H63mkoZiuOrU5xJhxRcoCg==", "license": "MIT", "dependencies": { - "@graphql-tools/utils": "^10.6.1", + "@graphql-tools/utils": "^11.0.1", "tslib": "^2.4.0" }, "engines": { @@ -4340,15 +4611,14 @@ } }, "node_modules/@nestjs/graphql/node_modules/@graphql-tools/schema": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.10.tgz", - "integrity": "sha512-TSdDvwgk1Fq3URDuZBMCPXlWLpRpxwaQ+0KqvycVwoHozYnBRZ2Ql9HVgDKnebkGQKmIk2enSeku+ERKxxSG0g==", + "version": "10.0.32", + "resolved": "http://localhost:4873/@graphql-tools/schema/-/schema-10.0.32.tgz", + "integrity": "sha512-kJ1Qn20MPnlaEVH37639E6rzQ1tEtr6XTUhNdR4EKydl+FijtLhWX2WLZbGnvrYuG8XUcMxsZU9mRRYYNvK02w==", "license": "MIT", "dependencies": { - "@graphql-tools/merge": "^9.0.11", - "@graphql-tools/utils": "^10.6.1", - "tslib": "^2.4.0", - "value-or-promise": "^1.0.12" + "@graphql-tools/merge": "^9.1.8", + "@graphql-tools/utils": "^11.0.1", + "tslib": "^2.4.0" }, "engines": { "node": ">=16.0.0" @@ -4358,14 +4628,14 @@ } }, "node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.6.1.tgz", - "integrity": "sha512-XHl0/DWkMf/8Dmw1F3RRoMPt6ZwU4J707YWcbPjS+49WZNoTVz6f+prQ4GuwZT8RqTPtrRawnGU93AV73ZLTfQ==", + "version": "11.0.1", + "resolved": "http://localhost:4873/@graphql-tools/utils/-/utils-11.0.1.tgz", + "integrity": "sha512-pNyCOb95ab/z3zkkiPwIPYxigX7IcpyFVcgD1XACDEvg/7yGnKCESx3k/XHEeneKYx/aWKGzEh/uuf6M6Q8HOw==", "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", "cross-inspect": "1.0.1", - "dset": "^3.1.2", "tslib": "^2.4.0" }, "engines": { @@ -4375,57 +4645,16 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@nestjs/graphql/node_modules/chokidar": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", - "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "node_modules/@nestjs/mapped-types": { + "version": "2.1.1", + "resolved": "http://localhost:4873/@nestjs/mapped-types/-/mapped-types-2.1.1.tgz", + "integrity": "sha512-SCCoMEJ6jdeI5h/N+KCVF1+pmg/hmEkNA5nHTS8Gvww7T/LCl4o1gFLinw2iQ60w7slFkszHcGLKGdazVI4F8A==", "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nestjs/graphql/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nestjs/graphql/node_modules/uuid": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.3.tgz", - "integrity": "sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, - "node_modules/@nestjs/mapped-types": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.6.tgz", - "integrity": "sha512-84ze+CPfp1OWdpRi1/lOu59hOhTz38eVzJvRKrg9ykRFwDz+XleKfMsG0gUqNZYFa6v53XYzeD+xItt8uDW7NQ==", - "license": "MIT", - "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "class-transformer": "^0.4.0 || ^0.5.0", - "class-validator": "^0.13.0 || ^0.14.0", - "reflect-metadata": "^0.1.12 || ^0.2.0" + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "class-transformer": "^0.4.0 || ^0.5.0", + "class-validator": "^0.13.0 || ^0.14.0 || ^0.15.0", + "reflect-metadata": "^0.1.12 || ^0.2.0" }, "peerDependenciesMeta": { "class-transformer": { @@ -4437,13 +4666,13 @@ } }, "node_modules/@nestjs/microservices": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-10.2.4.tgz", - "integrity": "sha512-GytBFj4onLveWDUm+aj7Ft4518yiRx3dfHwqBzYfekPFWIfzVHNGWQCZUSNpS/jMbTfbM2PAknkuhWFjV1811A==", + "version": "11.1.19", + "resolved": "http://localhost:4873/@nestjs/microservices/-/microservices-11.1.19.tgz", + "integrity": "sha512-3Oja56ydTlSaui19/i7gYM0MMqz/w4UR2aqZeL4K8B+Fq0Ztg3zHb8et76atToJGpSCevJLEsoEMOMaGgzRwfg==", "license": "MIT", "dependencies": { "iterare": "1.2.1", - "tslib": "2.6.2" + "tslib": "2.8.1" }, "funding": { "type": "opencollective", @@ -4451,9 +4680,9 @@ }, "peerDependencies": { "@grpc/grpc-js": "*", - "@nestjs/common": "^10.0.0", - "@nestjs/core": "^10.0.0", - "@nestjs/websockets": "^10.0.0", + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/websockets": "^11.0.0", "amqp-connection-manager": "*", "amqplib": "*", "cache-manager": "*", @@ -4461,7 +4690,7 @@ "kafkajs": "*", "mqtt": "*", "nats": "*", - "reflect-metadata": "^0.1.12", + "reflect-metadata": "^0.1.12 || ^0.2.0", "rxjs": "^7.1.0" }, "peerDependenciesMeta": { @@ -4494,22 +4723,16 @@ } } }, - "node_modules/@nestjs/microservices/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "license": "0BSD" - }, "node_modules/@nestjs/platform-express": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.4.19.tgz", - "integrity": "sha512-IeQkBZUtPeJoO4E0QqSLwkB+60KcThw8/s4gGvAwIRJ5ViuXoxnwU59eBDy84PUuVbNe4VdKjfAF9fuQOEh11Q==", + "version": "11.1.19", + "resolved": "http://localhost:4873/@nestjs/platform-express/-/platform-express-11.1.19.tgz", + "integrity": "sha512-Vpdv8jyCQdThfoTx+UTn+DRYr6H6X02YUqcpZ3qP6G3ZUwtVp7eS+hoQPGd4UuCnlnFG8Wqr2J9bGEzQdi1rIg==", "license": "MIT", "dependencies": { - "body-parser": "1.20.3", - "cors": "2.8.5", - "express": "4.21.2", - "multer": "2.0.1", + "cors": "2.8.6", + "express": "5.2.1", + "multer": "2.1.1", + "path-to-regexp": "8.4.2", "tslib": "2.8.1" }, "funding": { @@ -4517,17 +4740,17 @@ "url": "https://opencollective.com/nest" }, "peerDependencies": { - "@nestjs/common": "^10.0.0", - "@nestjs/core": "^10.0.0" + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" } }, "node_modules/@nestjs/platform-socket.io": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/@nestjs/platform-socket.io/-/platform-socket.io-10.4.19.tgz", - "integrity": "sha512-Pfz9dBcXaoUFdVpA/I96NoOTiTQ7eYfDNhQ2sZdQzne3oISEvts5G2SWyQNouoyjqkUPt6X5r/CQ++M4AzSlEQ==", + "version": "11.1.19", + "resolved": "http://localhost:4873/@nestjs/platform-socket.io/-/platform-socket.io-11.1.19.tgz", + "integrity": "sha512-gu1nPIEaP5Qjjg/Cl8wXyvwGpdZGzgbtK4KcH65YRAA+GTKUkIHb4BNpLJ27Ymq/wqLJKNEbCjajfzD0BEjMGA==", "license": "MIT", "dependencies": { - "socket.io": "4.8.1", + "socket.io": "4.8.3", "tslib": "2.8.1" }, "funding": { @@ -4535,145 +4758,64 @@ "url": "https://opencollective.com/nest" }, "peerDependencies": { - "@nestjs/common": "^10.0.0", - "@nestjs/websockets": "^10.0.0", + "@nestjs/common": "^11.0.0", + "@nestjs/websockets": "^11.0.0", "rxjs": "^7.1.0" } }, "node_modules/@nestjs/schedule": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-3.0.3.tgz", - "integrity": "sha512-xsMA4dmP3LcW3rt2iMPfm88bDbCj/hLuDsLrKmJQlbnxyCYtBwLtmu/4cSfZELLM7pTDT+E8QDAqGwhYyUUjxg==", + "version": "6.1.3", + "resolved": "http://localhost:4873/@nestjs/schedule/-/schedule-6.1.3.tgz", + "integrity": "sha512-RflMFOpR16Dwd1jAUbeB4mfGTCh65fvEdL4mSjQPJChpkRGRjIXjb+6YQcK2faQrVT60c9DmLmoVR7/ONCtuYQ==", "license": "MIT", "dependencies": { - "cron": "2.4.1", - "uuid": "9.0.0" + "cron": "4.4.0" }, "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0", - "reflect-metadata": "^0.1.12" - } - }, - "node_modules/@nestjs/schedule/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0" } }, "node_modules/@nestjs/schematics": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.0.2.tgz", - "integrity": "sha512-DaZZjymYoIfRqC5W62lnYXIIods1PDY6CGc8+IpRwyinzffjKxZ3DF3exu+mdyvllzkXo9DTXkoX4zOPSJHCkw==", + "version": "11.1.0", + "resolved": "http://localhost:4873/@nestjs/schematics/-/schematics-11.1.0.tgz", + "integrity": "sha512-lVxGZ46tcdItFMoXr6vyKWlnOsm1SZm/GUqAEDvy2RL4Q4O+3bkziAhrO7Y8JLssFUUvNFEGqAizI52WAxhjDw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "16.1.8", - "@angular-devkit/schematics": "16.1.8", - "comment-json": "4.2.3", - "jsonc-parser": "3.2.0", + "@angular-devkit/core": "19.2.24", + "@angular-devkit/schematics": "19.2.24", + "comment-json": "5.0.0", + "jsonc-parser": "3.3.1", "pluralize": "8.0.0" }, "peerDependencies": { + "prettier": "^3.0.0", "typescript": ">=4.8.2" - } - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { - "version": "16.1.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.8.tgz", - "integrity": "sha512-dSRD/+bGanArIXkj+kaU1kDFleZeQMzmBiOXX+pK0Ah9/0Yn1VmY3RZh1zcX9vgIQXV+t7UPrTpOjaERMUtVGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" }, "peerDependenciesMeta": { - "chokidar": { + "prettier": { "optional": true } } }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { - "version": "16.1.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.8.tgz", - "integrity": "sha512-6LyzMdFJs337RTxxkI2U1Ndw0CW5mMX/aXWl8d7cW2odiSrAg8IdlMqpc+AM8+CPfsB0FtS1aWkEZqJLT0jHOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "16.1.8", - "jsonc-parser": "3.2.0", - "magic-string": "0.30.0", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@nestjs/schematics/node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@nestjs/schematics/node_modules/magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@nestjs/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@nestjs/swagger": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.4.2.tgz", - "integrity": "sha512-Mu6TEn1M/owIvAx2B4DUQObQXqo2028R2s9rSZ/hJEgBK95+doTwS0DjmVA2wTeZTyVtXOoN7CsoM5pONBzvKQ==", + "version": "11.4.2", + "resolved": "http://localhost:4873/@nestjs/swagger/-/swagger-11.4.2.tgz", + "integrity": "sha512-aBihEogDMj/bLEcaqhkvyX/ZVWUw/bmnhKzR0zwUoyGJikvZyaq7rOPYl/H7Lxkkr3c90SJxyuv1AX2UT1WKlw==", "license": "MIT", "dependencies": { - "@microsoft/tsdoc": "^0.15.0", - "@nestjs/mapped-types": "2.0.5", - "js-yaml": "4.1.0", - "lodash": "4.17.21", - "path-to-regexp": "3.3.0", - "swagger-ui-dist": "5.17.14" + "@microsoft/tsdoc": "0.16.0", + "@nestjs/mapped-types": "2.1.1", + "js-yaml": "4.1.1", + "lodash": "4.18.1", + "path-to-regexp": "8.4.2", + "swagger-ui-dist": "5.32.4" }, "peerDependencies": { - "@fastify/static": "^6.0.0 || ^7.0.0", - "@nestjs/common": "^9.0.0 || ^10.0.0", - "@nestjs/core": "^9.0.0 || ^10.0.0", + "@fastify/static": "^8.0.0 || ^9.0.0", + "@nestjs/common": "^11.0.1", + "@nestjs/core": "^11.0.1", "class-transformer": "*", "class-validator": "*", "reflect-metadata": "^0.1.12 || ^0.2.0" @@ -4690,44 +4832,24 @@ } } }, - "node_modules/@nestjs/swagger/node_modules/@nestjs/mapped-types": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.5.tgz", - "integrity": "sha512-bSJv4pd6EY99NX9CjBIyn4TVDoSit82DUZlL4I3bqNfy5Gt+gXTa86i3I/i0iIV9P4hntcGM5GyO+FhZAhxtyg==", - "license": "MIT", - "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "class-transformer": "^0.4.0 || ^0.5.0", - "class-validator": "^0.13.0 || ^0.14.0", - "reflect-metadata": "^0.1.12 || ^0.2.0" - }, - "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, "node_modules/@nestjs/testing": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.2.4.tgz", - "integrity": "sha512-2qqymiuPbC41yCXXhtt4cL8AOcVNu13gBCT13A8roUUdcs4lmtg+H3oXKF/Gc/vlLv2RkSTNO+JuzxP1hydLPg==", + "version": "11.1.19", + "resolved": "http://localhost:4873/@nestjs/testing/-/testing-11.1.19.tgz", + "integrity": "sha512-/UFNWXvPEdu4v4DlC5oWLbGKmD27LehLK06b8oLzs6D6lf4vAQTdST8LRAXBadyMUQnVEQWMuBo3CtAVtlfXtQ==", "dev": true, "license": "MIT", "dependencies": { - "tslib": "2.6.2" + "tslib": "2.8.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/nest" }, "peerDependencies": { - "@nestjs/common": "^10.0.0", - "@nestjs/core": "^10.0.0", - "@nestjs/microservices": "^10.0.0", - "@nestjs/platform-express": "^10.0.0" + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0" }, "peerDependenciesMeta": { "@nestjs/microservices": { @@ -4738,42 +4860,23 @@ } } }, - "node_modules/@nestjs/testing/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true, - "license": "0BSD" - }, "node_modules/@nestjs/typeorm": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-10.0.0.tgz", - "integrity": "sha512-WQU4HCDTz4UavsFzvGUKDHqi0MO5K47yFoPXdmh+Z/hCNO7SHCMmV9jLiLukM8n5nKUqJ3jDqiljkWBcZPdCtA==", + "version": "11.0.1", + "resolved": "http://localhost:4873/@nestjs/typeorm/-/typeorm-11.0.1.tgz", + "integrity": "sha512-8rw/nKT0S+L+MkzgE9F2/mox7mAgsPlwfzmW9gsESN1lmQtIrVEfiiBwC2O8+guS1jBfQehJIdcdUj2OAp4VUQ==", "license": "MIT", - "dependencies": { - "uuid": "9.0.0" - }, "peerDependencies": { - "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", - "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0", - "reflect-metadata": "^0.1.13", + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.2.0", - "typeorm": "^0.3.0" - } - }, - "node_modules/@nestjs/typeorm/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "typeorm": "^0.3.0 || ^1.0.0-dev" } }, "node_modules/@nestjs/websockets": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-10.4.19.tgz", - "integrity": "sha512-3HhNZU40/ozB64ZZJ1W1bOOYSbxGuJwmM5Ui8y1uPwbzpL1Uov3wOG3eRp1IflSBK4Ia0wb8Iv3ChpFSTzrNiA==", + "version": "11.1.19", + "resolved": "http://localhost:4873/@nestjs/websockets/-/websockets-11.1.19.tgz", + "integrity": "sha512-2qo8jtIwwwgkqAI1BtnJ02EaFLrRkKA39eYXS8IhZCHilhBHCWdjnJ5cLcFq4oF+s+KZ7LcLGD/3stxJy8ijzg==", "license": "MIT", "dependencies": { "iterare": "1.2.1", @@ -4781,9 +4884,9 @@ "tslib": "2.8.1" }, "peerDependencies": { - "@nestjs/common": "^10.0.0", - "@nestjs/core": "^10.0.0", - "@nestjs/platform-socket.io": "^10.0.0", + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/platform-socket.io": "^11.0.0", "reflect-metadata": "^0.1.12 || ^0.2.0", "rxjs": "^7.1.0" }, @@ -4795,7 +4898,7 @@ }, "node_modules/@noble/ed25519": { "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz", + "resolved": "http://localhost:4873/@noble/ed25519/-/ed25519-1.7.3.tgz", "integrity": "sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==", "funding": [ { @@ -4807,7 +4910,7 @@ }, "node_modules/@noble/hashes": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", + "resolved": "http://localhost:4873/@noble/hashes/-/hashes-1.3.0.tgz", "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", "funding": [ { @@ -4817,9 +4920,21 @@ ], "license": "MIT" }, + "node_modules/@nodable/entities": { + "version": "2.1.0", + "resolved": "http://localhost:4873/@nodable/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/nodable" + } + ], + "license": "MIT" + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "resolved": "http://localhost:4873/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "license": "MIT", "dependencies": { @@ -4832,7 +4947,7 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "resolved": "http://localhost:4873/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "license": "MIT", "engines": { @@ -4841,7 +4956,7 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "resolved": "http://localhost:4873/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "license": "MIT", "dependencies": { @@ -4852,27 +4967,25 @@ "node": ">= 8" } }, - "node_modules/@nuxtjs/opencollective": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", - "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "resolved": "http://localhost:4873/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.1" + "consola": "^3.2.3" }, "bin": { "opencollective": "bin/opencollective.js" }, "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" } }, "node_modules/@opentelemetry/api": { "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", + "resolved": "http://localhost:4873/@opentelemetry/api/-/api-1.8.0.tgz", "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==", "license": "Apache-2.0", "engines": { @@ -4881,7 +4994,7 @@ }, "node_modules/@opentelemetry/core": { "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "resolved": "http://localhost:4873/@opentelemetry/core/-/core-1.30.1.tgz", "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", "license": "Apache-2.0", "dependencies": { @@ -4896,7 +5009,7 @@ }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "resolved": "http://localhost:4873/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", "license": "Apache-2.0", "engines": { @@ -4904,9 +5017,9 @@ } }, "node_modules/@paralleldrive/cuid2": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", - "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "version": "2.3.1", + "resolved": "http://localhost:4873/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", + "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", "dev": true, "license": "MIT", "dependencies": { @@ -4915,7 +5028,7 @@ }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "resolved": "http://localhost:4873/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "license": "MIT", "optional": true, @@ -4925,31 +5038,31 @@ }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "resolved": "http://localhost:4873/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "resolved": "http://localhost:4873/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "version": "2.0.5", + "resolved": "http://localhost:4873/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "resolved": "http://localhost:4873/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "resolved": "http://localhost:4873/@protobufjs/fetch/-/fetch-1.1.0.tgz", "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "license": "BSD-3-Clause", "dependencies": { @@ -4959,42 +5072,121 @@ }, "node_modules/@protobufjs/float": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "resolved": "http://localhost:4873/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "version": "1.1.1", + "resolved": "http://localhost:4873/@protobufjs/inquire/-/inquire-1.1.1.tgz", + "integrity": "sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/path": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "resolved": "http://localhost:4873/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "resolved": "http://localhost:4873/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "version": "1.1.1", + "resolved": "http://localhost:4873/@protobufjs/utf8/-/utf8-1.1.1.tgz", + "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", "license": "BSD-3-Clause" }, + "node_modules/@redis/bloom": { + "version": "5.12.1", + "resolved": "http://localhost:4873/@redis/bloom/-/bloom-5.12.1.tgz", + "integrity": "sha512-PUUfv+ms7jgPSBVoo/DN4AkPHj4D5TZSd6SbJX7egzBplkYUcKmHRE8RKia7UtZ8bSQbLguLvxVO+asKtQfZWA==", + "license": "MIT", + "engines": { + "node": ">= 18.19.0" + }, + "peerDependencies": { + "@redis/client": "^5.12.1" + } + }, + "node_modules/@redis/client": { + "version": "5.12.1", + "resolved": "http://localhost:4873/@redis/client/-/client-5.12.1.tgz", + "integrity": "sha512-7aPGWeqA3uFm43o19umzdl16CEjK/JQGtSXVPevplTaOU3VJA/rseBC1QvYUz9lLDIMBimc4SW/zrW4S89BaCA==", + "license": "MIT", + "dependencies": { + "cluster-key-slot": "1.1.2" + }, + "engines": { + "node": ">= 18.19.0" + }, + "peerDependencies": { + "@node-rs/xxhash": "^1.1.0", + "@opentelemetry/api": ">=1 <2" + }, + "peerDependenciesMeta": { + "@node-rs/xxhash": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + } + } + }, + "node_modules/@redis/json": { + "version": "5.12.1", + "resolved": "http://localhost:4873/@redis/json/-/json-5.12.1.tgz", + "integrity": "sha512-eOze75esLve4vfqDel7aMX08CNaiLLQS2fV8mpRN9NxPe1rVR4vQyYiW/OgtGUysF6QOr9ANhfxABKNOJfXdKg==", + "license": "MIT", + "engines": { + "node": ">= 18.19.0" + }, + "peerDependencies": { + "@redis/client": "^5.12.1" + } + }, + "node_modules/@redis/search": { + "version": "5.12.1", + "resolved": "http://localhost:4873/@redis/search/-/search-5.12.1.tgz", + "integrity": "sha512-ItlxbxC9cKI6IU1TLWoczwJCRb6TdmkEpWv05UrPawqaAnWGRu3rcIqsc5vN483T2fSociuyV1UkWIL5I4//2w==", + "license": "MIT", + "engines": { + "node": ">= 18.19.0" + }, + "peerDependencies": { + "@redis/client": "^5.12.1" + } + }, + "node_modules/@redis/time-series": { + "version": "5.12.1", + "resolved": "http://localhost:4873/@redis/time-series/-/time-series-5.12.1.tgz", + "integrity": "sha512-c6JL6E3EcZJuNqKFz+KM+l9l5mpcQiKvTwgA3blt5glWJ8hjDk0yeHN3beE/MpqYIQ8UEX44ItQzgkE/gCBELQ==", + "license": "MIT", + "engines": { + "node": ">= 18.19.0" + }, + "peerDependencies": { + "@redis/client": "^5.12.1" + } + }, + "node_modules/@scarf/scarf": { + "version": "1.4.0", + "resolved": "http://localhost:4873/@scarf/scarf/-/scarf-1.4.0.tgz", + "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==", + "hasInstallScript": true, + "license": "Apache-2.0" + }, "node_modules/@sendgrid/client": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-8.1.5.tgz", - "integrity": "sha512-Jqt8aAuGIpWGa15ZorTWI46q9gbaIdQFA21HIPQQl60rCjzAko75l3D1z7EyjFrNr4MfQ0StusivWh8Rjh10Cg==", + "version": "8.1.6", + "resolved": "http://localhost:4873/@sendgrid/client/-/client-8.1.6.tgz", + "integrity": "sha512-/BHu0hqwXNHr2aLhcXU7RmmlVqrdfrbY9KpaNj00KZHlVOVoRxRVrpOCabIB+91ISXJ6+mLM9vpaVUhK6TwBWA==", "license": "MIT", "dependencies": { "@sendgrid/helpers": "^8.0.0", - "axios": "^1.8.2" + "axios": "^1.12.0" }, "engines": { "node": ">=12.*" @@ -5002,7 +5194,7 @@ }, "node_modules/@sendgrid/helpers": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-8.0.0.tgz", + "resolved": "http://localhost:4873/@sendgrid/helpers/-/helpers-8.0.0.tgz", "integrity": "sha512-Ze7WuW2Xzy5GT5WRx+yEv89fsg/pgy3T1E3FS0QEx0/VvRmigMZ5qyVGhJz4SxomegDkzXv/i0aFPpHKN8qdAA==", "license": "MIT", "dependencies": { @@ -5013,9 +5205,9 @@ } }, "node_modules/@sendgrid/mail": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-8.1.5.tgz", - "integrity": "sha512-W+YuMnkVs4+HA/bgfto4VHKcPKLc7NiZ50/NH2pzO6UHCCFuq8/GNB98YJlLEr/ESDyzAaDr7lVE7hoBwFTT3Q==", + "version": "8.1.6", + "resolved": "http://localhost:4873/@sendgrid/mail/-/mail-8.1.6.tgz", + "integrity": "sha512-/ZqxUvKeEztU9drOoPC/8opEPOk+jLlB2q4+xpx6HVLq6aFu3pMpalkTpAQz8XfRfpLp8O25bh6pGPcHDCYpqg==", "license": "MIT", "dependencies": { "@sendgrid/client": "^8.1.5", @@ -5025,16 +5217,31 @@ "node": ">=12.*" } }, + "node_modules/@simple-git/args-pathspec": { + "version": "1.0.3", + "resolved": "http://localhost:4873/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz", + "integrity": "sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==", + "license": "MIT" + }, + "node_modules/@simple-git/argv-parser": { + "version": "1.1.1", + "resolved": "http://localhost:4873/@simple-git/argv-parser/-/argv-parser-1.1.1.tgz", + "integrity": "sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==", + "license": "MIT", + "dependencies": { + "@simple-git/args-pathspec": "^1.0.3" + } + }, "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "version": "0.27.10", + "resolved": "http://localhost:4873/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "dev": true, "license": "MIT" }, "node_modules/@sinonjs/commons": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "resolved": "http://localhost:4873/@sinonjs/commons/-/commons-3.0.1.tgz", "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "license": "BSD-3-Clause", @@ -5044,7 +5251,7 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "resolved": "http://localhost:4873/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "license": "BSD-3-Clause", @@ -5052,23 +5259,10 @@ "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@smithy/abort-controller": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.4.tgz", - "integrity": "sha512-gJnEjZMvigPDQWHrW3oPrFhQtkrgqBkyjj3pCIdF3A5M6vsZODG93KNlfJprv6bp4245bdT32fsHK4kkH3KYDA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@smithy/chunked-blob-reader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.0.0.tgz", - "integrity": "sha512-+sKqDBQqb036hh4NPaUiEkYFkTUGYzRsn3EuFhyfQfMy6oGHEUJDurLP9Ufb5dasr/XiAmPNMr6wa9afjQB+Gw==", + "version": "5.2.2", + "resolved": "http://localhost:4873/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz", + "integrity": "sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5078,12 +5272,12 @@ } }, "node_modules/@smithy/chunked-blob-reader-native": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.0.0.tgz", - "integrity": "sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig==", + "version": "4.2.3", + "resolved": "http://localhost:4873/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz", + "integrity": "sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-base64": "^4.0.0", + "@smithy/util-base64": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5091,15 +5285,16 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.4.tgz", - "integrity": "sha512-prmU+rDddxHOH0oNcwemL+SwnzcG65sBF2yXRO7aeXIn/xTlq2pX7JLVbkBnVLowHLg4/OL4+jBmv9hVrVGS+w==", + "version": "4.4.17", + "resolved": "http://localhost:4873/@smithy/config-resolver/-/config-resolver-4.4.17.tgz", + "integrity": "sha512-TzDZcAnhTyAHbXVxWZo7/tEcrIeFq20IBk8So3OLOetWpR8EwY/yEqBMBFaJMeyEiREDq4NfEl+qO3OAUD+vbQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.1.3", - "@smithy/types": "^4.3.1", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.4", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.4.2", + "@smithy/util-middleware": "^4.2.14", "tslib": "^2.6.2" }, "engines": { @@ -5107,19 +5302,20 @@ } }, "node_modules/@smithy/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.6.0.tgz", - "integrity": "sha512-Pgvfb+TQ4wUNLyHzvgCP4aYZMh16y7GcfF59oirRHcgGgkH1e/s9C0nv/v3WP+Quymyr5je71HeFQCwh+44XLg==", + "version": "3.23.17", + "resolved": "http://localhost:4873/@smithy/core/-/core-3.23.17.tgz", + "integrity": "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/middleware-serde": "^4.0.8", - "@smithy/protocol-http": "^5.1.2", - "@smithy/types": "^4.3.1", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-middleware": "^4.0.4", - "@smithy/util-stream": "^4.2.2", - "@smithy/util-utf8": "^4.0.0", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-stream": "^4.5.25", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" }, "engines": { @@ -5127,15 +5323,15 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.6.tgz", - "integrity": "sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.14.tgz", + "integrity": "sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.1.3", - "@smithy/property-provider": "^4.0.4", - "@smithy/types": "^4.3.1", - "@smithy/url-parser": "^4.0.4", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", "tslib": "^2.6.2" }, "engines": { @@ -5143,14 +5339,14 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.0.4.tgz", - "integrity": "sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/eventstream-codec/-/eventstream-codec-4.2.14.tgz", + "integrity": "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.3.1", - "@smithy/util-hex-encoding": "^4.0.0", + "@smithy/types": "^4.14.1", + "@smithy/util-hex-encoding": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5158,13 +5354,13 @@ } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.0.4.tgz", - "integrity": "sha512-3fb/9SYaYqbpy/z/H3yIi0bYKyAa89y6xPmIqwr2vQiUT2St+avRt8UKwsWt9fEdEasc5d/V+QjrviRaX1JRFA==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.14.tgz", + "integrity": "sha512-8IelTCtTctWRbb+0Dcy+C0aICh1qa0qWXqgjcXDmMuCvPJRnv26hiDZoAau2ILOniki65mCPKqOQs/BaWvO4CQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.0.4", - "@smithy/types": "^4.3.1", + "@smithy/eventstream-serde-universal": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5172,12 +5368,12 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.1.2.tgz", - "integrity": "sha512-JGtambizrWP50xHgbzZI04IWU7LdI0nh/wGbqH3sJesYToMi2j/DcoElqyOcqEIG/D4tNyxgRuaqBXWE3zOFhQ==", + "version": "4.3.14", + "resolved": "http://localhost:4873/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.14.tgz", + "integrity": "sha512-sqHiHpYRYo3FJlaIxD1J8PhbcmJAm7IuM16mVnwSkCToD7g00IBZzKuiLNMGmftULmEUX6/UAz8/NN5uMP8bVA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5185,13 +5381,13 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.0.4.tgz", - "integrity": "sha512-RD6UwNZ5zISpOWPuhVgRz60GkSIp0dy1fuZmj4RYmqLVRtejFqQ16WmfYDdoSoAjlp1LX+FnZo+/hkdmyyGZ1w==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.14.tgz", + "integrity": "sha512-Ht/8BuGlKfFTy0H3+8eEu0vdpwGztCnaLLXtpXNdQqiR7Hj4vFScU3T436vRAjATglOIPjJXronY+1WxxNLSiw==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.0.4", - "@smithy/types": "^4.3.1", + "@smithy/eventstream-serde-universal": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5199,13 +5395,13 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.0.4.tgz", - "integrity": "sha512-UeJpOmLGhq1SLox79QWw/0n2PFX+oPRE1ZyRMxPIaFEfCqWaqpB7BU9C8kpPOGEhLF7AwEqfFbtwNxGy4ReENA==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.14.tgz", + "integrity": "sha512-lWyt4T2XQZUZgK3tQ3Wn0w3XBvZsK/vjTuJl6bXbnGZBHH0ZUSONTYiK9TgjTTzU54xQr3DRFwpjmhp0oLm3gg==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.0.4", - "@smithy/types": "^4.3.1", + "@smithy/eventstream-codec": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5213,15 +5409,15 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.0.4.tgz", - "integrity": "sha512-AMtBR5pHppYMVD7z7G+OlHHAcgAN7v0kVKEpHuTO4Gb199Gowh0taYi9oDStFeUhetkeP55JLSVlTW1n9rFtUw==", + "version": "5.3.17", + "resolved": "http://localhost:4873/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.17.tgz", + "integrity": "sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.1.2", - "@smithy/querystring-builder": "^4.0.4", - "@smithy/types": "^4.3.1", - "@smithy/util-base64": "^4.0.0", + "@smithy/protocol-http": "^5.3.14", + "@smithy/querystring-builder": "^4.2.14", + "@smithy/types": "^4.14.1", + "@smithy/util-base64": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5229,14 +5425,14 @@ } }, "node_modules/@smithy/hash-blob-browser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.0.4.tgz", - "integrity": "sha512-WszRiACJiQV3QG6XMV44i5YWlkrlsM5Yxgz4jvsksuu7LDXA6wAtypfPajtNTadzpJy3KyJPoWehYpmZGKUFIQ==", + "version": "4.2.15", + "resolved": "http://localhost:4873/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.15.tgz", + "integrity": "sha512-0PJ4Al3fg2nM4qKrAIxyNcApgqHAXcBkN8FeizOz69z0rb26uZ6lMESYtxegaTlXB5Hj84JfwMPavMrwDMjucA==", "license": "Apache-2.0", "dependencies": { - "@smithy/chunked-blob-reader": "^5.0.0", - "@smithy/chunked-blob-reader-native": "^4.0.0", - "@smithy/types": "^4.3.1", + "@smithy/chunked-blob-reader": "^5.2.2", + "@smithy/chunked-blob-reader-native": "^4.2.3", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5244,14 +5440,14 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.4.tgz", - "integrity": "sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/hash-node/-/hash-node-4.2.14.tgz", + "integrity": "sha512-8ZBDY2DD4wr+GGjTpPtiglEsqr0lUP+KHqgZcWczFf6qeZ/YRjMIOoQWVQlmwu7EtxKTd8YXD8lblmYcpBIA1g==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", - "@smithy/util-buffer-from": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", + "@smithy/types": "^4.14.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5259,13 +5455,13 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.0.4.tgz", - "integrity": "sha512-wHo0d8GXyVmpmMh/qOR0R7Y46/G1y6OR8U+bSTB4ppEzRxd1xVAQ9xOE9hOc0bSjhz0ujCPAbfNLkLrpa6cevg==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/hash-stream-node/-/hash-stream-node-4.2.14.tgz", + "integrity": "sha512-tw4GANWkZPb6+BdD4Fgucqzey2+r73Z/GRo9zklsCdwrnxxumUV83ZIaBDdudV4Ylazw3EPTiJZhpX42105ruQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", - "@smithy/util-utf8": "^4.0.0", + "@smithy/types": "^4.14.1", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5273,12 +5469,12 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.4.tgz", - "integrity": "sha512-bNYMi7WKTJHu0gn26wg8OscncTt1t2b8KcsZxvOv56XA6cyXtOAAAaNP7+m45xfppXfOatXF3Sb1MNsLUgVLTw==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/invalid-dependency/-/invalid-dependency-4.2.14.tgz", + "integrity": "sha512-c21qJiTSb25xvvOp+H2TNZzPCngrvl5vIPqPB8zQ/DmJF4QWXO19x1dWfMJZ6wZuuWUPPm0gV8C0cU3+ifcWuw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5286,9 +5482,9 @@ } }, "node_modules/@smithy/is-array-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz", - "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==", + "version": "4.2.2", + "resolved": "http://localhost:4873/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", + "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5298,13 +5494,13 @@ } }, "node_modules/@smithy/md5-js": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.0.4.tgz", - "integrity": "sha512-uGLBVqcOwrLvGh/v/jw423yWHq/ofUGK1W31M2TNspLQbUV1Va0F5kTxtirkoHawODAZcjXTSGi7JwbnPcDPJg==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/md5-js/-/md5-js-4.2.14.tgz", + "integrity": "sha512-V2v0vx+h0iUSNG1Alt+GNBMSLGCrl9iVsdd+Ap67HPM9PN479x12V8LkuMoKImNZxn3MXeuyUjls+/7ZACZghA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", - "@smithy/util-utf8": "^4.0.0", + "@smithy/types": "^4.14.1", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5312,13 +5508,13 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.4.tgz", - "integrity": "sha512-F7gDyfI2BB1Kc+4M6rpuOLne5LOcEknH1n6UQB69qv+HucXBR1rkzXBnQTB2q46sFy1PM/zuSJOB532yc8bg3w==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/middleware-content-length/-/middleware-content-length-4.2.14.tgz", + "integrity": "sha512-xhHq7fX4/3lv5NHxLUk3OeEvl0xZ+Ek3qIbWaCL4f9JwgDZEclPBElljaZCAItdGPQl/kSM4LPMOpy1MYgprpw==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.1.2", - "@smithy/types": "^4.3.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5326,18 +5522,18 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.1.13", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.13.tgz", - "integrity": "sha512-xg3EHV/Q5ZdAO5b0UiIMj3RIOCobuS40pBBODguUDVdko6YK6QIzCVRrHTogVuEKglBWqWenRnZ71iZnLL3ZAQ==", + "version": "4.4.32", + "resolved": "http://localhost:4873/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.32.tgz", + "integrity": "sha512-ZZkgyjnJppiZbIm6Qbx92pbXYi1uzenIvGhBSCDlc7NwuAkiqSgS75j1czAD25ZLs2FjMjYy1q7gyRVWG6JA0Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.6.0", - "@smithy/middleware-serde": "^4.0.8", - "@smithy/node-config-provider": "^4.1.3", - "@smithy/shared-ini-file-loader": "^4.0.4", - "@smithy/types": "^4.3.1", - "@smithy/url-parser": "^4.0.4", - "@smithy/util-middleware": "^4.0.4", + "@smithy/core": "^3.23.17", + "@smithy/middleware-serde": "^4.2.20", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", + "@smithy/url-parser": "^4.2.14", + "@smithy/util-middleware": "^4.2.14", "tslib": "^2.6.2" }, "engines": { @@ -5345,33 +5541,35 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.14.tgz", - "integrity": "sha512-eoXaLlDGpKvdmvt+YBfRXE7HmIEtFF+DJCbTPwuLunP0YUnrydl+C4tS+vEM0+nyxXrX3PSUFqC+lP1+EHB1Tw==", + "version": "4.5.6", + "resolved": "http://localhost:4873/@smithy/middleware-retry/-/middleware-retry-4.5.6.tgz", + "integrity": "sha512-5zhmo2AkstmM/RMKYP0NHfmuYWBR+/umlmSuALgajLxf0X0rLE6d17MfzTxpzkILWVhwvCJkCyPH0AfMlbaucQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.1.3", - "@smithy/protocol-http": "^5.1.2", - "@smithy/service-error-classification": "^4.0.6", - "@smithy/smithy-client": "^4.4.5", - "@smithy/types": "^4.3.1", - "@smithy/util-middleware": "^4.0.4", - "@smithy/util-retry": "^4.0.6", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "@smithy/core": "^3.23.17", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/service-error-classification": "^4.3.1", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-retry": "^4.3.5", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/middleware-serde": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.8.tgz", - "integrity": "sha512-iSSl7HJoJaGyMIoNn2B7czghOVwJ9nD7TMvLhMWeSB5vt0TnEYyRRqPJu/TqW76WScaNvYYB8nRoiBHR9S1Ddw==", + "version": "4.2.20", + "resolved": "http://localhost:4873/@smithy/middleware-serde/-/middleware-serde-4.2.20.tgz", + "integrity": "sha512-Lx9JMO9vArPtiChE3wbEZ5akMIDQpWQtlu90lhACQmNOXcGXRbaDywMHDzuDZ2OkZzP+9wQfZi3YJT9F67zTQQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.1.2", - "@smithy/types": "^4.3.1", + "@smithy/core": "^3.23.17", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5379,12 +5577,12 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.4.tgz", - "integrity": "sha512-kagK5ggDrBUCCzI93ft6DjteNSfY8Ulr83UtySog/h09lTIOAJ/xUSObutanlPT0nhoHAkpmW9V5K8oPyLh+QA==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/middleware-stack/-/middleware-stack-4.2.14.tgz", + "integrity": "sha512-2dvkUKLuFdKsCRmOE4Mn63co0Djtsm+JMh0bYZQupN1pJwMeE8FmQmRLLzzEMN0dnNi7CDCYYH8F0EVwWiPBeA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5392,14 +5590,14 @@ } }, "node_modules/@smithy/node-config-provider": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.3.tgz", - "integrity": "sha512-HGHQr2s59qaU1lrVH6MbLlmOBxadtzTsoO4c+bF5asdgVik3I8o7JIOzoeqWc5MjVa+vD36/LWE0iXKpNqooRw==", + "version": "4.3.14", + "resolved": "http://localhost:4873/@smithy/node-config-provider/-/node-config-provider-4.3.14.tgz", + "integrity": "sha512-S+gFjyo/weSVL0P1b9Ts8C/CwIfNCgUPikk3sl6QVsfE/uUuO+QsF+NsE/JkpvWqqyz1wg7HFdiaZuj5CoBMRg==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.0.4", - "@smithy/shared-ini-file-loader": "^4.0.4", - "@smithy/types": "^4.3.1", + "@smithy/property-provider": "^4.2.14", + "@smithy/shared-ini-file-loader": "^4.4.9", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5407,15 +5605,14 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.0.6.tgz", - "integrity": "sha512-NqbmSz7AW2rvw4kXhKGrYTiJVDHnMsFnX4i+/FzcZAfbOBauPYs2ekuECkSbtqaxETLLTu9Rl/ex6+I2BKErPA==", + "version": "4.6.1", + "resolved": "http://localhost:4873/@smithy/node-http-handler/-/node-http-handler-4.6.1.tgz", + "integrity": "sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg==", "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.0.4", - "@smithy/protocol-http": "^5.1.2", - "@smithy/querystring-builder": "^4.0.4", - "@smithy/types": "^4.3.1", + "@smithy/protocol-http": "^5.3.14", + "@smithy/querystring-builder": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5423,12 +5620,12 @@ } }, "node_modules/@smithy/property-provider": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.4.tgz", - "integrity": "sha512-qHJ2sSgu4FqF4U/5UUp4DhXNmdTrgmoAai6oQiM+c5RZ/sbDwJ12qxB1M6FnP+Tn/ggkPZf9ccn4jqKSINaquw==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/property-provider/-/property-provider-4.2.14.tgz", + "integrity": "sha512-WuM31CgfsnQ/10i7NYr0PyxqknD72Y5uMfUMVSniPjbEPceiTErb4eIqJQ+pdxNEAUEWrewrGjIRjVbVHsxZiQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5436,12 +5633,12 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.2.tgz", - "integrity": "sha512-rOG5cNLBXovxIrICSBm95dLqzfvxjEmuZx4KK3hWwPFHGdW3lxY0fZNXfv2zebfRO7sJZ5pKJYHScsqopeIWtQ==", + "version": "5.3.14", + "resolved": "http://localhost:4873/@smithy/protocol-http/-/protocol-http-5.3.14.tgz", + "integrity": "sha512-dN5F8kHx8RNU0r+pCwNmFZyz6ChjMkzShy/zup6MtkRmmix4vZzJdW+di7x//b1LiynIev88FM18ie+wwPcQtQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5449,13 +5646,13 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.4.tgz", - "integrity": "sha512-SwREZcDnEYoh9tLNgMbpop+UTGq44Hl9tdj3rf+yeLcfH7+J8OXEBaMc2kDxtyRHu8BhSg9ADEx0gFHvpJgU8w==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/querystring-builder/-/querystring-builder-4.2.14.tgz", + "integrity": "sha512-XYA5Z0IqTeF+5XDdh4BBmSA0HvbgVZIyv4cmOoUheDNR57K1HgBp9ukUMx3Cr3XpDHHpLBnexPE3LAtDsZkj2A==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", - "@smithy/util-uri-escape": "^4.0.0", + "@smithy/types": "^4.14.1", + "@smithy/util-uri-escape": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5463,12 +5660,12 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.4.tgz", - "integrity": "sha512-6yZf53i/qB8gRHH/l2ZwUG5xgkPgQF15/KxH0DdXMDHjesA9MeZje/853ifkSY0x4m5S+dfDZ+c4x439PF0M2w==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/querystring-parser/-/querystring-parser-4.2.14.tgz", + "integrity": "sha512-hr+YyqBD23GVvRxGGrcc/oOeNlK3PzT5Fu4dzrDXxzS1LpFiuL2PQQqKPs87M79aW7ziMs+nvB3qdw77SqE7Lw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5476,24 +5673,24 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.6.tgz", - "integrity": "sha512-RRoTDL//7xi4tn5FrN2NzH17jbgmnKidUqd4KvquT0954/i6CXXkh1884jBiunq24g9cGtPBEXlU40W6EpNOOg==", + "version": "4.3.1", + "resolved": "http://localhost:4873/@smithy/service-error-classification/-/service-error-classification-4.3.1.tgz", + "integrity": "sha512-aUQuDGh760ts/8MU+APjIZhlLPKhIIfqyzZaJikLEIMrdxFvxuLYD0WxWzaYWpmLbQlXDe9p7EWM3HsBe0K6Gw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1" + "@smithy/types": "^4.14.1" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.4.tgz", - "integrity": "sha512-63X0260LoFBjrHifPDs+nM9tV0VMkOTl4JRMYNuKh/f5PauSjowTfvF3LogfkWdcPoxsA9UjqEOgjeYIbhb7Nw==", + "version": "4.4.9", + "resolved": "http://localhost:4873/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.9.tgz", + "integrity": "sha512-495/V2I15SHgedSJoDPD23JuSfKAp726ZI1V0wtjB07Wh7q/0tri/0e0DLefZCHgxZonrGKt/OCTpAtP1wE1kQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5501,18 +5698,18 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.2.tgz", - "integrity": "sha512-d3+U/VpX7a60seHziWnVZOHuEgJlclufjkS6zhXvxcJgkJq4UWdH5eOBLzHRMx6gXjsdT9h6lfpmLzbrdupHgQ==", + "version": "5.3.14", + "resolved": "http://localhost:4873/@smithy/signature-v4/-/signature-v4-5.3.14.tgz", + "integrity": "sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA==", "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.0.0", - "@smithy/protocol-http": "^5.1.2", - "@smithy/types": "^4.3.1", - "@smithy/util-hex-encoding": "^4.0.0", - "@smithy/util-middleware": "^4.0.4", - "@smithy/util-uri-escape": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.14", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5520,17 +5717,17 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.5.tgz", - "integrity": "sha512-+lynZjGuUFJaMdDYSTMnP/uPBBXXukVfrJlP+1U/Dp5SFTEI++w6NMga8DjOENxecOF71V9Z2DllaVDYRnGlkg==", + "version": "4.12.13", + "resolved": "http://localhost:4873/@smithy/smithy-client/-/smithy-client-4.12.13.tgz", + "integrity": "sha512-y/Pcj1V9+qG98gyu1gvftHB7rDpdh+7kIBIggs55yGm3JdtBV8GT8IFF3a1qxZ79QnaJHX9GXzvBG6tAd+czJA==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.6.0", - "@smithy/middleware-endpoint": "^4.1.13", - "@smithy/middleware-stack": "^4.0.4", - "@smithy/protocol-http": "^5.1.2", - "@smithy/types": "^4.3.1", - "@smithy/util-stream": "^4.2.2", + "@smithy/core": "^3.23.17", + "@smithy/middleware-endpoint": "^4.4.32", + "@smithy/middleware-stack": "^4.2.14", + "@smithy/protocol-http": "^5.3.14", + "@smithy/types": "^4.14.1", + "@smithy/util-stream": "^4.5.25", "tslib": "^2.6.2" }, "engines": { @@ -5538,9 +5735,9 @@ } }, "node_modules/@smithy/types": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.1.tgz", - "integrity": "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA==", + "version": "4.14.1", + "resolved": "http://localhost:4873/@smithy/types/-/types-4.14.1.tgz", + "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5550,13 +5747,13 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.4.tgz", - "integrity": "sha512-eMkc144MuN7B0TDA4U2fKs+BqczVbk3W+qIvcoCY6D1JY3hnAdCuhCZODC+GAeaxj0p6Jroz4+XMUn3PCxQQeQ==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/url-parser/-/url-parser-4.2.14.tgz", + "integrity": "sha512-p06BiBigJ8bTA3MgnOfCtDUWnAMY0YfedO/GRpmc7p+wg3KW8vbXy1xwSu5ASy0wV7rRYtlfZOIKH4XqfhjSQQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.0.4", - "@smithy/types": "^4.3.1", + "@smithy/querystring-parser": "^4.2.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5564,13 +5761,13 @@ } }, "node_modules/@smithy/util-base64": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz", - "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==", + "version": "4.3.2", + "resolved": "http://localhost:4873/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5578,9 +5775,9 @@ } }, "node_modules/@smithy/util-body-length-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz", - "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==", + "version": "4.2.2", + "resolved": "http://localhost:4873/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", + "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5590,9 +5787,9 @@ } }, "node_modules/@smithy/util-body-length-node": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz", - "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==", + "version": "4.2.3", + "resolved": "http://localhost:4873/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", + "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5602,12 +5799,12 @@ } }, "node_modules/@smithy/util-buffer-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz", - "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==", + "version": "4.2.2", + "resolved": "http://localhost:4873/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", + "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.0.0", + "@smithy/is-array-buffer": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5615,9 +5812,9 @@ } }, "node_modules/@smithy/util-config-provider": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz", - "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==", + "version": "4.2.2", + "resolved": "http://localhost:4873/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", + "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5627,15 +5824,14 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.21.tgz", - "integrity": "sha512-wM0jhTytgXu3wzJoIqpbBAG5U6BwiubZ6QKzSbP7/VbmF1v96xlAbX2Am/mz0Zep0NLvLh84JT0tuZnk3wmYQA==", + "version": "4.3.49", + "resolved": "http://localhost:4873/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.49.tgz", + "integrity": "sha512-a5bNrdiONYB/qE2BuKegvUMd/+ZDwdg4vsNuuSzYE8qs2EYAdK9CynL+Rzn29PbPiUqoz/cbpRbcLzD5lEevHw==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.0.4", - "@smithy/smithy-client": "^4.4.5", - "@smithy/types": "^4.3.1", - "bowser": "^2.11.0", + "@smithy/property-provider": "^4.2.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5643,17 +5839,17 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.0.21", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.21.tgz", - "integrity": "sha512-/F34zkoU0GzpUgLJydHY8Rxu9lBn8xQC/s/0M0U9lLBkYbA1htaAFjWYJzpzsbXPuri5D1H8gjp2jBum05qBrA==", + "version": "4.2.54", + "resolved": "http://localhost:4873/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.54.tgz", + "integrity": "sha512-g1cvrJvOnzeJgEdf7AE4luI7gp6L8weE0y9a9wQUSGtjb8QRHDbCJYuE4Sy0SD9N8RrnNPFsPltAz/OSoBR9Zw==", "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.1.4", - "@smithy/credential-provider-imds": "^4.0.6", - "@smithy/node-config-provider": "^4.1.3", - "@smithy/property-provider": "^4.0.4", - "@smithy/smithy-client": "^4.4.5", - "@smithy/types": "^4.3.1", + "@smithy/config-resolver": "^4.4.17", + "@smithy/credential-provider-imds": "^4.2.14", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/property-provider": "^4.2.14", + "@smithy/smithy-client": "^4.12.13", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5661,13 +5857,13 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.6.tgz", - "integrity": "sha512-YARl3tFL3WgPuLzljRUnrS2ngLiUtkwhQtj8PAL13XZSyUiNLQxwG3fBBq3QXFqGFUXepIN73pINp3y8c2nBmA==", + "version": "3.4.2", + "resolved": "http://localhost:4873/@smithy/util-endpoints/-/util-endpoints-3.4.2.tgz", + "integrity": "sha512-a55Tr+3OKld4TTtnT+RhKOQHyPxm3j/xL4OR83WBUhLJaKDS9dnJ7arRMOp3t31dcLhApwG9bgvrRXBHlLdIkg==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.1.3", - "@smithy/types": "^4.3.1", + "@smithy/node-config-provider": "^4.3.14", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5675,9 +5871,9 @@ } }, "node_modules/@smithy/util-hex-encoding": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz", - "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==", + "version": "4.2.2", + "resolved": "http://localhost:4873/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", + "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5687,12 +5883,12 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.4.tgz", - "integrity": "sha512-9MLKmkBmf4PRb0ONJikCbCwORACcil6gUWojwARCClT7RmLzF04hUR4WdRprIXal7XVyrddadYNfp2eF3nrvtQ==", + "version": "4.2.14", + "resolved": "http://localhost:4873/@smithy/util-middleware/-/util-middleware-4.2.14.tgz", + "integrity": "sha512-1Su2vj9RYNDEv/V+2E+jXkkwGsgR7dc4sfHn9Z7ruzQHJIEni9zzw5CauvRXlFJfmgcqYP8fWa0dkh2Q2YaQyw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.3.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5700,13 +5896,13 @@ } }, "node_modules/@smithy/util-retry": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.6.tgz", - "integrity": "sha512-+YekoF2CaSMv6zKrA6iI/N9yva3Gzn4L6n35Luydweu5MMPYpiGZlWqehPHDHyNbnyaYlz/WJyYAZnC+loBDZg==", + "version": "4.3.5", + "resolved": "http://localhost:4873/@smithy/util-retry/-/util-retry-4.3.5.tgz", + "integrity": "sha512-h1IJsbgMDA+jaTjrco/JsyfWOgHRJBv8myB1y4AEI2fjIzD6ktZ7pFAyTw+gwN9GKIAygvC6db0mq0j8N2rFOg==", "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.0.6", - "@smithy/types": "^4.3.1", + "@smithy/service-error-classification": "^4.3.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { @@ -5714,18 +5910,18 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.2.tgz", - "integrity": "sha512-aI+GLi7MJoVxg24/3J1ipwLoYzgkB4kUfogZfnslcYlynj3xsQ0e7vk4TnTro9hhsS5PvX1mwmkRqqHQjwcU7w==", + "version": "4.5.25", + "resolved": "http://localhost:4873/@smithy/util-stream/-/util-stream-4.5.25.tgz", + "integrity": "sha512-/PFpG4k8Ze8Ei+mMKj3oiPICYekthuzePZMgZbCqMiXIHHf4n2aZ4Ps0aSRShycFTGuj/J6XldmC0x0DwednIA==", "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.0.4", - "@smithy/node-http-handler": "^4.0.6", - "@smithy/types": "^4.3.1", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-buffer-from": "^4.0.0", - "@smithy/util-hex-encoding": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", + "@smithy/fetch-http-handler": "^5.3.17", + "@smithy/node-http-handler": "^4.6.1", + "@smithy/types": "^4.14.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5733,9 +5929,9 @@ } }, "node_modules/@smithy/util-uri-escape": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz", - "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==", + "version": "4.2.2", + "resolved": "http://localhost:4873/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", + "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -5745,12 +5941,12 @@ } }, "node_modules/@smithy/util-utf8": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz", - "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==", + "version": "4.2.2", + "resolved": "http://localhost:4873/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", + "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5758,34 +5954,55 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.0.6.tgz", - "integrity": "sha512-slcr1wdRbX7NFphXZOxtxRNA7hXAAtJAXJDE/wdoMAos27SIquVCKiSqfB6/28YzQ8FCsB5NKkhdM5gMADbqxg==", + "version": "4.3.0", + "resolved": "http://localhost:4873/@smithy/util-waiter/-/util-waiter-4.3.0.tgz", + "integrity": "sha512-JyjYmLAfS+pdxF92o4yLgEoy0zhayKTw73FU1aofLWwLcJw7iSqIY2exGmMTrl/lmZugP5p/zxdFSippJDfKWA==", "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.0.4", - "@smithy/types": "^4.3.1", + "@smithy/types": "^4.14.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", - "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", - "license": "MIT" - }, - "node_modules/@sqltools/formatter": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", + "node_modules/@smithy/uuid": { + "version": "1.1.2", + "resolved": "http://localhost:4873/@smithy/uuid/-/uuid-1.1.2.tgz", + "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@so-ric/colorspace": { + "version": "1.1.6", + "resolved": "http://localhost:4873/@so-ric/colorspace/-/colorspace-1.1.6.tgz", + "integrity": "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==", + "license": "MIT", + "dependencies": { + "color": "^5.0.2", + "text-hex": "1.0.x" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "http://localhost:4873/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "license": "MIT" + }, + "node_modules/@sqltools/formatter": { + "version": "1.2.5", + "resolved": "http://localhost:4873/@sqltools/formatter/-/formatter-1.2.5.tgz", "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", "license": "MIT" }, "node_modules/@testing-library/jest-dom": { "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.4.tgz", + "resolved": "http://localhost:4873/@testing-library/jest-dom/-/jest-dom-6.1.4.tgz", "integrity": "sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw==", "dev": true, "license": "MIT", @@ -5827,7 +6044,7 @@ }, "node_modules/@testing-library/jest-dom/node_modules/chalk": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "resolved": "http://localhost:4873/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "license": "MIT", @@ -5840,14 +6057,13 @@ } }, "node_modules/@tokenizer/inflate": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz", - "integrity": "sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==", + "version": "0.4.1", + "resolved": "http://localhost:4873/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "fflate": "^0.8.2", - "token-types": "^6.0.0" + "debug": "^4.4.3", + "token-types": "^6.1.1" }, "engines": { "node": ">=18" @@ -5859,50 +6075,41 @@ }, "node_modules/@tokenizer/token": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "resolved": "http://localhost:4873/@tokenizer/token/-/token-0.3.0.tgz", "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "license": "MIT" }, "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "version": "1.0.12", + "resolved": "http://localhost:4873/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", "devOptional": true, "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "resolved": "http://localhost:4873/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "devOptional": true, "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "resolved": "http://localhost:4873/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "devOptional": true, "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "resolved": "http://localhost:4873/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "devOptional": true, "license": "MIT" }, - "node_modules/@types/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/babel__core": { "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "resolved": "http://localhost:4873/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "license": "MIT", @@ -5916,7 +6123,7 @@ }, "node_modules/@types/babel__generator": { "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "resolved": "http://localhost:4873/@types/babel__generator/-/babel__generator-7.27.0.tgz", "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", @@ -5926,7 +6133,7 @@ }, "node_modules/@types/babel__template": { "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "resolved": "http://localhost:4873/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "license": "MIT", @@ -5936,19 +6143,20 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", - "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", + "version": "7.28.0", + "resolved": "http://localhost:4873/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.20.7" + "@babel/types": "^7.28.2" } }, "node_modules/@types/body-parser": { "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "resolved": "http://localhost:4873/@types/body-parser/-/body-parser-1.19.6.tgz", "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, "license": "MIT", "dependencies": { "@types/connect": "*", @@ -5957,7 +6165,7 @@ }, "node_modules/@types/compression": { "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.8.1.tgz", + "resolved": "http://localhost:4873/@types/compression/-/compression-1.8.1.tgz", "integrity": "sha512-kCFuWS0ebDbmxs0AXYn6e2r2nrGAb5KwQhknjSPSPgJcGd8+HVSILlUyFhGqML2gk39HcG7D1ydW9/qpYkN00Q==", "dev": true, "license": "MIT", @@ -5968,8 +6176,9 @@ }, "node_modules/@types/connect": { "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "resolved": "http://localhost:4873/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -5977,20 +6186,23 @@ }, "node_modules/@types/cookiejar": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "resolved": "http://localhost:4873/@types/cookiejar/-/cookiejar-2.1.5.tgz", "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", "dev": true, "license": "MIT" }, "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "license": "MIT" + "version": "2.8.19", + "resolved": "http://localhost:4873/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/cron": { "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@types/cron/-/cron-1.7.3.tgz", + "resolved": "http://localhost:4873/@types/cron/-/cron-1.7.3.tgz", "integrity": "sha512-iPmUXyIJG1Js+ldPYhOQcYU3kCAQ2FWrSkm1FJPoii2eYSn6wEW6onPukNTT0bfiflexNSRPl6KWmAIqS+36YA==", "dev": true, "license": "MIT", @@ -6001,14 +6213,14 @@ }, "node_modules/@types/crypto-js": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz", + "resolved": "http://localhost:4873/@types/crypto-js/-/crypto-js-4.2.2.tgz", "integrity": "sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==", "dev": true, "license": "MIT" }, "node_modules/@types/eslint": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "resolved": "http://localhost:4873/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", @@ -6019,7 +6231,7 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "resolved": "http://localhost:4873/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, "license": "MIT", @@ -6030,27 +6242,29 @@ }, "node_modules/@types/estree": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "resolved": "http://localhost:4873/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, "node_modules/@types/express": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", - "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "version": "4.17.25", + "resolved": "http://localhost:4873/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "dev": true, "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "*" + "@types/serve-static": "^1" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "version": "4.19.8", + "resolved": "http://localhost:4873/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", @@ -6060,9 +6274,9 @@ } }, "node_modules/@types/fluent-ffmpeg": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.27.tgz", - "integrity": "sha512-QiDWjihpUhriISNoBi2hJBRUUmoj/BMTYcfz+F+ZM9hHWBYABFAE6hjP/TbCZC0GWwlpa3FzvHH9RzFeRusZ7A==", + "version": "2.1.28", + "resolved": "http://localhost:4873/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.28.tgz", + "integrity": "sha512-5ovxsDwBcPfJ+eYs1I/ZpcYCnkce7pvH9AHSvrZllAp1ZPpTRDZAFjF3TRFbukxSgIYTTNYePbS0rKUmaxVbXw==", "dev": true, "license": "MIT", "dependencies": { @@ -6071,7 +6285,7 @@ }, "node_modules/@types/graceful-fs": { "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "resolved": "http://localhost:4873/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "license": "MIT", @@ -6081,20 +6295,21 @@ }, "node_modules/@types/http-errors": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "resolved": "http://localhost:4873/@types/http-errors/-/http-errors-2.0.5.tgz", "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "resolved": "http://localhost:4873/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "resolved": "http://localhost:4873/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "license": "MIT", @@ -6104,7 +6319,7 @@ }, "node_modules/@types/istanbul-reports": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "resolved": "http://localhost:4873/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "license": "MIT", @@ -6114,7 +6329,7 @@ }, "node_modules/@types/jest": { "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "resolved": "http://localhost:4873/@types/jest/-/jest-29.5.14.tgz", "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, "license": "MIT", @@ -6125,28 +6340,28 @@ }, "node_modules/@types/js-yaml": { "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "resolved": "http://localhost:4873/@types/js-yaml/-/js-yaml-4.0.9.tgz", "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", "dev": true, "license": "MIT" }, "node_modules/@types/json-diff": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@types/json-diff/-/json-diff-0.7.0.tgz", + "resolved": "http://localhost:4873/@types/json-diff/-/json-diff-0.7.0.tgz", "integrity": "sha512-20IJqupGHywtIaE6fS30iygh3dVqVdzmsnrYn/VFuRaQKxLx/RGH5K9hhCfctVxgN7KzJlnD7gYFAOrNwiCgtA==", "dev": true, "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "resolved": "http://localhost:4873/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "license": "MIT" }, "node_modules/@types/jsonwebtoken": { "version": "8.5.9", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "resolved": "http://localhost:4873/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", "dev": true, "license": "MIT", @@ -6155,62 +6370,74 @@ } }, "node_modules/@types/lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-NYqRyg/hIQrYPT9lbOeYc3kIRabJDn/k4qQHIXUpx88CBDww2fD15Sg5kbXlW86zm2XEW4g0QxkTI3/Kfkc7xQ==", + "version": "4.17.24", + "resolved": "http://localhost:4873/@types/lodash/-/lodash-4.17.24.tgz", + "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", "license": "MIT" }, "node_modules/@types/long": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "resolved": "http://localhost:4873/@types/long/-/long-4.0.2.tgz", "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", "license": "MIT" }, + "node_modules/@types/luxon": { + "version": "3.7.1", + "resolved": "http://localhost:4873/@types/luxon/-/luxon-3.7.1.tgz", + "integrity": "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==", + "license": "MIT" + }, "node_modules/@types/methods": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "resolved": "http://localhost:4873/@types/methods/-/methods-1.1.4.tgz", "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", "dev": true, "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "resolved": "http://localhost:4873/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, "license": "MIT" }, "node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", - "license": "MIT" + "version": "25.6.0", + "resolved": "http://localhost:4873/@types/node/-/node-25.6.0.tgz", + "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.19.0" + } }, "node_modules/@types/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", + "version": "2.6.13", + "resolved": "http://localhost:4873/@types/node-fetch/-/node-fetch-2.6.13.tgz", + "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*", - "form-data": "^4.0.0" + "form-data": "^4.0.4" } }, "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "version": "6.15.0", + "resolved": "http://localhost:4873/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "dev": true, "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "resolved": "http://localhost:4873/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, "license": "MIT" }, "node_modules/@types/redis": { "version": "2.8.32", - "resolved": "https://registry.npmjs.org/@types/redis/-/redis-2.8.32.tgz", + "resolved": "http://localhost:4873/@types/redis/-/redis-2.8.32.tgz", "integrity": "sha512-7jkMKxcGq9p242exlbsVzuJb57KqHRhNl4dHoQu2Y5v9bCAbtIXXH0R3HleSQW4CTOqpHIYUW3t6tpUj4BVQ+w==", "dev": true, "license": "MIT", @@ -6220,7 +6447,7 @@ }, "node_modules/@types/request-ip": { "version": "0.0.37", - "resolved": "https://registry.npmjs.org/@types/request-ip/-/request-ip-0.0.37.tgz", + "resolved": "http://localhost:4873/@types/request-ip/-/request-ip-0.0.37.tgz", "integrity": "sha512-uw6/i3rQnpznxD7LtLaeuZytLhKZK6bRoTS6XVJlwxIOoOpEBU7bgKoVXDNtOg4Xl6riUKHa9bjMVrL6ESqYlQ==", "dev": true, "license": "MIT", @@ -6229,36 +6456,48 @@ } }, "node_modules/@types/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", + "version": "7.7.1", + "resolved": "http://localhost:4873/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", "dev": true, "license": "MIT" }, "node_modules/@types/send": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "version": "1.2.1", + "resolved": "http://localhost:4873/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", - "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "version": "1.15.10", + "resolved": "http://localhost:4873/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "dev": true, "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", - "@types/send": "*" + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "http://localhost:4873/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, "node_modules/@types/sharp": { "version": "0.28.6", - "resolved": "https://registry.npmjs.org/@types/sharp/-/sharp-0.28.6.tgz", + "resolved": "http://localhost:4873/@types/sharp/-/sharp-0.28.6.tgz", "integrity": "sha512-AjKjo5vk5mkcTrWL0U1zFUdCp/uqLebvbe7ezAJx0tgp6ST9JmfsYK1q1lpjfPM5S1YQ1wr5uboPSu2S8UO9yw==", "dev": true, "license": "MIT", @@ -6268,14 +6507,14 @@ }, "node_modules/@types/stack-utils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "resolved": "http://localhost:4873/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, "license": "MIT" }, "node_modules/@types/superagent": { "version": "8.1.9", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", + "resolved": "http://localhost:4873/@types/superagent/-/superagent-8.1.9.tgz", "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", "dev": true, "license": "MIT", @@ -6288,7 +6527,7 @@ }, "node_modules/@types/supertest": { "version": "2.0.16", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.16.tgz", + "resolved": "http://localhost:4873/@types/supertest/-/supertest-2.0.16.tgz", "integrity": "sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==", "dev": true, "license": "MIT", @@ -6298,48 +6537,45 @@ }, "node_modules/@types/tiny-async-pool": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/tiny-async-pool/-/tiny-async-pool-1.0.5.tgz", + "resolved": "http://localhost:4873/@types/tiny-async-pool/-/tiny-async-pool-1.0.5.tgz", "integrity": "sha512-8hqr+s4rBthBtb+k02NXejl7BGVbj7CD/ZB2rMSvoSjXO52aXbtm9q/JEey5uDjzADs/zXEo7bU9iX+M6glAUA==", "dev": true, "license": "MIT" }, "node_modules/@types/triple-beam": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "resolved": "http://localhost:4873/@types/triple-beam/-/triple-beam-1.3.5.tgz", "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", "license": "MIT" }, - "node_modules/@types/uuid": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", - "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", - "license": "MIT" - }, - "node_modules/@types/validator": { - "version": "13.15.2", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.2.tgz", - "integrity": "sha512-y7pa/oEJJ4iGYBxOpfAKn5b9+xuihvzDVnC/OSvlVnGxVg0pOqmjiMafiJ1KVNQEaPZf9HsEp5icEwGg8uIe5Q==", - "license": "MIT" - }, "node_modules/@types/webidl-conversions": { "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "resolved": "http://localhost:4873/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", "license": "MIT" }, "node_modules/@types/whatwg-url": { "version": "11.0.5", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "resolved": "http://localhost:4873/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", "license": "MIT", "dependencies": { "@types/webidl-conversions": "*" } }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "http://localhost:4873/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.35", + "resolved": "http://localhost:4873/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", "dependencies": { @@ -6348,14 +6584,14 @@ }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "resolved": "http://localhost:4873/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "resolved": "http://localhost:4873/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "license": "MIT", @@ -6390,7 +6626,7 @@ }, "node_modules/@typescript-eslint/parser": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "resolved": "http://localhost:4873/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "license": "BSD-2-Clause", @@ -6418,7 +6654,7 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "resolved": "http://localhost:4873/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "license": "MIT", @@ -6436,7 +6672,7 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "resolved": "http://localhost:4873/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "license": "MIT", @@ -6464,7 +6700,7 @@ }, "node_modules/@typescript-eslint/types": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "resolved": "http://localhost:4873/@typescript-eslint/types/-/types-5.62.0.tgz", "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "license": "MIT", @@ -6478,7 +6714,7 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "resolved": "http://localhost:4873/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "license": "BSD-2-Clause", @@ -6506,7 +6742,7 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "resolved": "http://localhost:4873/@typescript-eslint/utils/-/utils-5.62.0.tgz", "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "license": "MIT", @@ -6533,7 +6769,7 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "resolved": "http://localhost:4873/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "license": "MIT", @@ -6551,14 +6787,14 @@ }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "resolved": "http://localhost:4873/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, "license": "ISC" }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "license": "MIT", @@ -6569,28 +6805,28 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, "license": "MIT", @@ -6602,14 +6838,14 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, "license": "MIT", @@ -6622,7 +6858,7 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, "license": "MIT", @@ -6632,7 +6868,7 @@ }, "node_modules/@webassemblyjs/leb128": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, "license": "Apache-2.0", @@ -6642,14 +6878,14 @@ }, "node_modules/@webassemblyjs/utf8": { "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, "license": "MIT", @@ -6666,7 +6902,7 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "license": "MIT", @@ -6680,7 +6916,7 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, "license": "MIT", @@ -6693,7 +6929,7 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, "license": "MIT", @@ -6708,7 +6944,7 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "resolved": "http://localhost:4873/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "license": "MIT", @@ -6717,46 +6953,49 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@whatwg-node/promise-helpers": { + "version": "1.3.2", + "resolved": "http://localhost:4873/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz", + "integrity": "sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "resolved": "http://localhost:4873/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "resolved": "http://localhost:4873/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true, "license": "Apache-2.0" }, "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "version": "2.0.0", + "resolved": "http://localhost:4873/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" }, "engines": { "node": ">= 0.6" } }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "http://localhost:4873/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -6767,16 +7006,29 @@ }, "node_modules/acorn-import-attributes": { "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "resolved": "http://localhost:4873/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "license": "MIT", "peerDependencies": { "acorn": "^8" } }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "http://localhost:4873/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "resolved": "http://localhost:4873/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", @@ -6785,9 +7037,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "version": "8.3.5", + "resolved": "http://localhost:4873/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", "devOptional": true, "license": "MIT", "dependencies": { @@ -6799,7 +7051,7 @@ }, "node_modules/agentkeepalive": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "resolved": "http://localhost:4873/agentkeepalive/-/agentkeepalive-4.6.0.tgz", "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", "license": "MIT", "dependencies": { @@ -6810,16 +7062,16 @@ } }, "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.18.0", + "resolved": "http://localhost:4873/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -6827,9 +7079,9 @@ } }, "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "version": "3.0.1", + "resolved": "http://localhost:4873/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6846,7 +7098,7 @@ }, "node_modules/ajv-keywords": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "resolved": "http://localhost:4873/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "license": "MIT", @@ -6858,9 +7110,9 @@ } }, "node_modules/amqp-connection-manager": { - "version": "4.1.14", - "resolved": "https://registry.npmjs.org/amqp-connection-manager/-/amqp-connection-manager-4.1.14.tgz", - "integrity": "sha512-1km47dIvEr0HhMUazqovSvNwIlSvDX2APdUpULaINtHpiki1O+cLRaTeXb/jav4OLtH+k6GBXx5gsKOT9kcGKQ==", + "version": "4.1.15", + "resolved": "http://localhost:4873/amqp-connection-manager/-/amqp-connection-manager-4.1.15.tgz", + "integrity": "sha512-YGi8MuO2K4u0qC4b1qAKVIK8CdBJF+PpEZpHKxmrL3x61pU1sAb2SHzQl7ypoqr6oECIfVqtG9DGdOZxaUq1Wg==", "license": "MIT", "dependencies": { "promise-breaker": "^6.0.0" @@ -6874,9 +7126,9 @@ } }, "node_modules/amqplib": { - "version": "0.10.8", - "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.10.8.tgz", - "integrity": "sha512-Tfn1O9sFgAP8DqeMEpt2IacsVTENBpblB3SqLdn0jK2AeX8iyCvbptBc8lyATT9bQ31MsjVwUSQ1g8f4jHOUfw==", + "version": "0.10.9", + "resolved": "http://localhost:4873/amqplib/-/amqplib-0.10.9.tgz", + "integrity": "sha512-jwSftI4QjS3mizvnSnOrPGYiUnm1vI2OP1iXeOUz5pb74Ua0nbf6nPyyTzuiCLEE3fMpaJORXh2K/TQ08H5xGA==", "license": "MIT", "dependencies": { "buffer-more-ints": "~1.0.0", @@ -6888,13 +7140,13 @@ }, "node_modules/anchorme": { "version": "3.0.8", - "resolved": "https://registry.npmjs.org/anchorme/-/anchorme-3.0.8.tgz", + "resolved": "http://localhost:4873/anchorme/-/anchorme-3.0.8.tgz", "integrity": "sha512-K61vxP907NA0Pv4z5v7xbiwosAjhdjCVUFGOFm1TEDFbKmK9/dRLT1jirFIQUuE5ni78Mv4D3Yr4rnQT1PJl9w==", "license": "MIT" }, "node_modules/ansi-colors": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "resolved": "http://localhost:4873/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "license": "MIT", @@ -6904,7 +7156,7 @@ }, "node_modules/ansi-escapes": { "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "resolved": "http://localhost:4873/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "license": "MIT", @@ -6920,7 +7172,7 @@ }, "node_modules/ansi-escapes/node_modules/type-fest": { "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "resolved": "http://localhost:4873/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "license": "(MIT OR CC0-1.0)", @@ -6933,7 +7185,7 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "resolved": "http://localhost:4873/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { @@ -6942,7 +7194,7 @@ }, "node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "resolved": "http://localhost:4873/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { @@ -6956,9 +7208,9 @@ } }, "node_modules/ansis": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", - "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", + "version": "4.2.0", + "resolved": "http://localhost:4873/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", "license": "ISC", "engines": { "node": ">=14" @@ -6966,7 +7218,7 @@ }, "node_modules/anymatch": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "resolved": "http://localhost:4873/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "license": "ISC", @@ -6979,9 +7231,9 @@ } }, "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "http://localhost:4873/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -6991,449 +7243,9 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/apollo-datasource": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", - "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", - "deprecated": "The `apollo-datasource` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "license": "MIT", - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "apollo-server-env": "^4.2.1" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/apollo-datasource/node_modules/@apollo/utils.keyvaluecache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz", - "integrity": "sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg==", - "license": "MIT", - "dependencies": { - "@apollo/utils.logger": "^1.0.0", - "lru-cache": "7.10.1 - 7.13.1" - } - }, - "node_modules/apollo-datasource/node_modules/@apollo/utils.logger": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.1.tgz", - "integrity": "sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA==", - "license": "MIT" - }, - "node_modules/apollo-datasource/node_modules/lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/apollo-reporting-protobuf": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.4.0.tgz", - "integrity": "sha512-h0u3EbC/9RpihWOmcSsvTW2O6RXVaD/mPEjfrPkxRPTEPWqncsgOoRJw+wih4OqfH3PvTJvoEIf4LwKrUaqWog==", - "deprecated": "The `apollo-reporting-protobuf` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/usage-reporting-protobuf` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "license": "MIT", - "dependencies": { - "@apollo/protobufjs": "1.2.6" - } - }, - "node_modules/apollo-reporting-protobuf/node_modules/@apollo/protobufjs": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.6.tgz", - "integrity": "sha512-Wqo1oSHNUj/jxmsVp4iR3I480p6qdqHikn38lKrFhfzcDJ7lwd7Ck7cHRl4JE81tWNArl77xhnG/OkZhxKBYOw==", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - }, - "bin": { - "apollo-pbjs": "bin/pbjs", - "apollo-pbts": "bin/pbts" - } - }, - "node_modules/apollo-reporting-protobuf/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "license": "MIT" - }, - "node_modules/apollo-server-core": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.13.0.tgz", - "integrity": "sha512-v/g6DR6KuHn9DYSdtQijz8dLOkP78I5JSVJzPkARhDbhpH74QNwrQ2PP2URAPPEDJ2EeZNQDX8PvbYkAKqg+kg==", - "deprecated": "The `apollo-server-core` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "license": "MIT", - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "@apollo/utils.usagereporting": "^1.0.0", - "@apollographql/apollo-tools": "^0.5.3", - "@apollographql/graphql-playground-html": "1.6.29", - "@graphql-tools/mock": "^8.1.2", - "@graphql-tools/schema": "^8.0.0", - "@josephg/resolvable": "^1.0.0", - "apollo-datasource": "^3.3.2", - "apollo-reporting-protobuf": "^3.4.0", - "apollo-server-env": "^4.2.1", - "apollo-server-errors": "^3.3.1", - "apollo-server-plugin-base": "^3.7.2", - "apollo-server-types": "^3.8.0", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.1.0", - "graphql-tag": "^2.11.0", - "loglevel": "^1.6.8", - "lru-cache": "^6.0.0", - "node-abort-controller": "^3.0.1", - "sha.js": "^2.4.11", - "uuid": "^9.0.0", - "whatwg-mimetype": "^3.0.0" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-core/node_modules/@apollo/utils.dropunuseddefinitions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", - "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", - "license": "MIT", - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/apollo-server-core/node_modules/@apollo/utils.keyvaluecache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz", - "integrity": "sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg==", - "license": "MIT", - "dependencies": { - "@apollo/utils.logger": "^1.0.0", - "lru-cache": "7.10.1 - 7.13.1" - } - }, - "node_modules/apollo-server-core/node_modules/@apollo/utils.keyvaluecache/node_modules/lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/apollo-server-core/node_modules/@apollo/utils.logger": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.1.tgz", - "integrity": "sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA==", - "license": "MIT" - }, - "node_modules/apollo-server-core/node_modules/@apollo/utils.printwithreducedwhitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", - "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", - "license": "MIT", - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/apollo-server-core/node_modules/@apollo/utils.removealiases": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", - "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", - "license": "MIT", - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/apollo-server-core/node_modules/@apollo/utils.sortast": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", - "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/apollo-server-core/node_modules/@apollo/utils.stripsensitiveliterals": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", - "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", - "license": "MIT", - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/apollo-server-core/node_modules/@apollo/utils.usagereporting": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.1.tgz", - "integrity": "sha512-6dk+0hZlnDbahDBB2mP/PZ5ybrtCJdLMbeNJD+TJpKyZmSY6bA3SjI8Cr2EM9QA+AdziywuWg+SgbWUF3/zQqQ==", - "license": "MIT", - "dependencies": { - "@apollo/usage-reporting-protobuf": "^4.0.0", - "@apollo/utils.dropunuseddefinitions": "^1.1.0", - "@apollo/utils.printwithreducedwhitespace": "^1.1.0", - "@apollo/utils.removealiases": "1.0.0", - "@apollo/utils.sortast": "^1.1.0", - "@apollo/utils.stripsensitiveliterals": "^1.2.0" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "graphql": "14.x || 15.x || 16.x" - } - }, - "node_modules/apollo-server-core/node_modules/@graphql-tools/merge": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.3.1.tgz", - "integrity": "sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg==", - "license": "MIT", - "dependencies": { - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/apollo-server-core/node_modules/@graphql-tools/schema": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.5.1.tgz", - "integrity": "sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg==", - "license": "MIT", - "dependencies": { - "@graphql-tools/merge": "8.3.1", - "@graphql-tools/utils": "8.9.0", - "tslib": "^2.4.0", - "value-or-promise": "1.0.11" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/apollo-server-core/node_modules/@graphql-tools/utils": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.9.0.tgz", - "integrity": "sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/apollo-server-core/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/apollo-server-core/node_modules/value-or-promise": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", - "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/apollo-server-core/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/apollo-server-env": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-4.2.1.tgz", - "integrity": "sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g==", - "deprecated": "The `apollo-server-env` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/utils.fetcher` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/apollo-server-errors": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", - "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", - "deprecated": "The `apollo-server-errors` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "license": "MIT", - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-express": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-3.13.0.tgz", - "integrity": "sha512-iSxICNbDUyebOuM8EKb3xOrpIwOQgKxGbR2diSr4HP3IW8T3njKFOoMce50vr+moOCe1ev8BnLcw9SNbuUtf7g==", - "deprecated": "The `apollo-server-express` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "license": "MIT", - "dependencies": { - "@types/accepts": "^1.3.5", - "@types/body-parser": "1.19.2", - "@types/cors": "2.8.12", - "@types/express": "4.17.14", - "@types/express-serve-static-core": "4.17.31", - "accepts": "^1.3.5", - "apollo-server-core": "^3.13.0", - "apollo-server-types": "^3.8.0", - "body-parser": "^1.19.0", - "cors": "^2.8.5", - "parseurl": "^1.3.3" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "express": "^4.17.1", - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-express/node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/apollo-server-express/node_modules/@types/express": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", - "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/apollo-server-express/node_modules/@types/express-serve-static-core": { - "version": "4.17.31", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", - "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/apollo-server-plugin-base": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.2.tgz", - "integrity": "sha512-wE8dwGDvBOGehSsPTRZ8P/33Jan6/PmL0y0aN/1Z5a5GcbFhDaaJCjK5cav6npbbGL2DPKK0r6MPXi3k3N45aw==", - "deprecated": "The `apollo-server-plugin-base` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "license": "MIT", - "dependencies": { - "apollo-server-types": "^3.8.0" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-types": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-3.8.0.tgz", - "integrity": "sha512-ZI/8rTE4ww8BHktsVpb91Sdq7Cb71rdSkXELSwdSR0eXu600/sY+1UXhTWdiJvk+Eq5ljqoHLwLbY2+Clq2b9A==", - "deprecated": "The `apollo-server-types` package is part of Apollo Server v2 and v3, which are now end-of-life (as of October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details.", - "license": "MIT", - "dependencies": { - "@apollo/utils.keyvaluecache": "^1.0.1", - "@apollo/utils.logger": "^1.0.0", - "apollo-reporting-protobuf": "^3.4.0", - "apollo-server-env": "^4.2.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "graphql": "^15.3.0 || ^16.0.0" - } - }, - "node_modules/apollo-server-types/node_modules/@apollo/utils.keyvaluecache": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz", - "integrity": "sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg==", - "license": "MIT", - "dependencies": { - "@apollo/utils.logger": "^1.0.0", - "lru-cache": "7.10.1 - 7.13.1" - } - }, - "node_modules/apollo-server-types/node_modules/@apollo/utils.logger": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-1.0.1.tgz", - "integrity": "sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA==", - "license": "MIT" - }, - "node_modules/apollo-server-types/node_modules/lru-cache": { - "version": "7.13.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.13.1.tgz", - "integrity": "sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/app-root-path": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "resolved": "http://localhost:4873/app-root-path/-/app-root-path-3.1.0.tgz", "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", "license": "MIT", "engines": { @@ -7442,26 +7254,26 @@ }, "node_modules/append-field": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "resolved": "http://localhost:4873/append-field/-/append-field-1.0.0.tgz", "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", "license": "MIT" }, "node_modules/arg": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "resolved": "http://localhost:4873/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "devOptional": true, "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "resolved": "http://localhost:4873/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "resolved": "http://localhost:4873/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, "license": "Apache-2.0", @@ -7469,22 +7281,16 @@ "node": ">= 0.4" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "license": "MIT" - }, "node_modules/array-timsort": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "resolved": "http://localhost:4873/array-timsort/-/array-timsort-1.0.3.tgz", "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", "dev": true, "license": "MIT" }, "node_modules/array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "resolved": "http://localhost:4873/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "license": "MIT", @@ -7494,19 +7300,19 @@ }, "node_modules/asap": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "resolved": "http://localhost:4873/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true, "license": "MIT" }, "node_modules/async": { "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "resolved": "http://localhost:4873/async/-/async-0.2.10.tgz", "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" }, "node_modules/async-mutex": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", + "resolved": "http://localhost:4873/async-mutex/-/async-mutex-0.5.0.tgz", "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", "license": "MIT", "dependencies": { @@ -7515,7 +7321,7 @@ }, "node_modules/async-retry": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "resolved": "http://localhost:4873/async-retry/-/async-retry-1.3.3.tgz", "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", "license": "MIT", "dependencies": { @@ -7524,13 +7330,13 @@ }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "resolved": "http://localhost:4873/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, "node_modules/available-typed-arrays": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "resolved": "http://localhost:4873/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "license": "MIT", "dependencies": { @@ -7545,7 +7351,7 @@ }, "node_modules/aws-ssl-profiles": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "resolved": "http://localhost:4873/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", "license": "MIT", "engines": { @@ -7553,19 +7359,19 @@ } }, "node_modules/axios": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", - "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", + "version": "1.15.2", + "resolved": "http://localhost:4873/axios/-/axios-1.15.2.tgz", + "integrity": "sha512-wLrXxPtcrPTsNlJmKjkPnNPK2Ihe0hn0wGSaTEiHRPxwjvJwT3hKmXF4dpqxmPO9SoNb2FsYXj/xEo0gHN+D5A==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" } }, "node_modules/babel-jest": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "resolved": "http://localhost:4873/babel-jest/-/babel-jest-29.7.0.tgz", "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "license": "MIT", @@ -7587,7 +7393,7 @@ }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "resolved": "http://localhost:4873/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "license": "BSD-3-Clause", @@ -7604,7 +7410,7 @@ }, "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "resolved": "http://localhost:4873/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "license": "BSD-3-Clause", @@ -7621,7 +7427,7 @@ }, "node_modules/babel-plugin-istanbul/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "resolved": "http://localhost:4873/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", @@ -7631,7 +7437,7 @@ }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "resolved": "http://localhost:4873/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "license": "MIT", @@ -7646,9 +7452,9 @@ } }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", - "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "version": "1.2.0", + "resolved": "http://localhost:4873/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", "dependencies": { @@ -7669,12 +7475,12 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0 || ^8.0.0-0" } }, "node_modules/babel-preset-jest": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "resolved": "http://localhost:4873/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "license": "MIT", @@ -7691,19 +7497,19 @@ }, "node_modules/backo2": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "resolved": "http://localhost:4873/backo2/-/backo2-1.0.2.tgz", "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==", "license": "MIT" }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "resolved": "http://localhost:4873/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "resolved": "http://localhost:4873/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { @@ -7723,95 +7529,60 @@ }, "node_modules/base64id": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "resolved": "http://localhost:4873/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "license": "MIT", "engines": { "node": "^4.5.0 || >= 5.9" } }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "license": "MIT" - }, - "node_modules/bignumber.js": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.0.tgz", - "integrity": "sha512-EM7aMFTXbptt/wZdMlBv2t8IViwQL+h6SLHosp8Yf0dqJMTnY6iL32opnAB6kAdL0SZPuvcAzFr31o0c/R3/RA==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "node_modules/baseline-browser-mapping": { + "version": "2.10.23", + "resolved": "http://localhost:4873/baseline-browser-mapping/-/baseline-browser-mapping-2.10.23.tgz", + "integrity": "sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/bintrees": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", - "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==", + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "http://localhost:4873/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", "license": "MIT" }, - "node_modules/bip39": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", - "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", - "license": "ISC", - "optional": true, - "dependencies": { - "@noble/hashes": "^1.2.0" - } - }, - "node_modules/bitsyntax": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.1.0.tgz", - "integrity": "sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q==", + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "http://localhost:4873/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", "license": "MIT", - "dependencies": { - "buffer-more-ints": "~1.0.0", - "debug": "~2.6.9", - "safe-buffer": "~5.1.2" - }, "engines": { - "node": ">=0.8" - } - }, - "node_modules/bitsyntax/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "node": "*" } }, - "node_modules/bitsyntax/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/bintrees": { + "version": "1.0.2", + "resolved": "http://localhost:4873/bintrees/-/bintrees-1.0.2.tgz", + "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==", "license": "MIT" }, - "node_modules/bitsyntax/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" + "node_modules/bip39": { + "version": "3.1.0", + "resolved": "http://localhost:4873/bip39/-/bip39-3.1.0.tgz", + "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", + "license": "ISC", + "optional": true, + "dependencies": { + "@noble/hashes": "^1.2.0" + } }, "node_modules/bl": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "resolved": "http://localhost:4873/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "license": "MIT", @@ -7823,7 +7594,7 @@ }, "node_modules/bl/node_modules/buffer": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "resolved": "http://localhost:4873/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ @@ -7848,7 +7619,7 @@ }, "node_modules/blake2b": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/blake2b/-/blake2b-2.1.3.tgz", + "resolved": "http://localhost:4873/blake2b/-/blake2b-2.1.3.tgz", "integrity": "sha512-pkDss4xFVbMb4270aCyGD3qLv92314Et+FsKzilCLxDz5DuZ2/1g3w4nmBbu6nKApPspnjG7JcwTjGZnduB1yg==", "license": "ISC", "dependencies": { @@ -7858,68 +7629,47 @@ }, "node_modules/blake2b-wasm": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz", + "resolved": "http://localhost:4873/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz", "integrity": "sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA==", "license": "MIT", "dependencies": { "nanoassert": "^1.0.0" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "license": "MIT" - }, "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "version": "2.2.2", + "resolved": "http://localhost:4873/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/bowser": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "version": "2.14.1", + "resolved": "http://localhost:4873/bowser/-/bowser-2.14.1.tgz", + "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "http://localhost:4873/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -7929,7 +7679,7 @@ }, "node_modules/braces": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "resolved": "http://localhost:4873/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", "dependencies": { @@ -7940,9 +7690,9 @@ } }, "node_modules/browserslist": { - "version": "4.25.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", - "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", + "version": "4.28.2", + "resolved": "http://localhost:4873/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ { @@ -7960,10 +7710,11 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001726", - "electron-to-chromium": "^1.5.173", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -7974,7 +7725,7 @@ }, "node_modules/bs-logger": { "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "resolved": "http://localhost:4873/bs-logger/-/bs-logger-0.2.6.tgz", "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, "license": "MIT", @@ -7987,7 +7738,7 @@ }, "node_modules/bser": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "resolved": "http://localhost:4873/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "license": "Apache-2.0", @@ -7997,7 +7748,7 @@ }, "node_modules/bson": { "version": "6.10.4", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz", + "resolved": "http://localhost:4873/bson/-/bson-6.10.4.tgz", "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==", "license": "Apache-2.0", "engines": { @@ -8006,7 +7757,7 @@ }, "node_modules/buffer": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "resolved": "http://localhost:4873/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { @@ -8030,25 +7781,25 @@ }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "resolved": "http://localhost:4873/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "license": "BSD-3-Clause" }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "resolved": "http://localhost:4873/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, "node_modules/buffer-more-ints": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", + "resolved": "http://localhost:4873/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==", "license": "MIT" }, "node_modules/busboy": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "resolved": "http://localhost:4873/busboy/-/busboy-1.6.0.tgz", "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dependencies": { "streamsearch": "^1.1.0" @@ -8059,7 +7810,7 @@ }, "node_modules/bytes": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "resolved": "http://localhost:4873/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "license": "MIT", "engines": { @@ -8067,14 +7818,14 @@ } }, "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "version": "1.0.9", + "resolved": "http://localhost:4873/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" }, "engines": { @@ -8086,7 +7837,7 @@ }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "resolved": "http://localhost:4873/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { @@ -8099,7 +7850,7 @@ }, "node_modules/call-bound": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "resolved": "http://localhost:4873/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { @@ -8115,7 +7866,7 @@ }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "resolved": "http://localhost:4873/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", @@ -8125,7 +7876,7 @@ }, "node_modules/camelcase": { "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "resolved": "http://localhost:4873/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "license": "MIT", @@ -8134,9 +7885,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001726", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz", - "integrity": "sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==", + "version": "1.0.30001791", + "resolved": "http://localhost:4873/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz", + "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==", "dev": true, "funding": [ { @@ -8156,8 +7907,9 @@ }, "node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "resolved": "http://localhost:4873/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -8172,7 +7924,7 @@ }, "node_modules/char-regex": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "resolved": "http://localhost:4873/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, "license": "MIT", @@ -8181,40 +7933,30 @@ } }, "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "version": "2.1.1", + "resolved": "http://localhost:4873/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "dev": true, "license": "MIT" }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, + "version": "4.0.3", + "resolved": "http://localhost:4873/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" } }, "node_modules/chrome-trace-event": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "resolved": "http://localhost:4873/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "license": "MIT", @@ -8224,7 +7966,7 @@ }, "node_modules/ci-info": { "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "resolved": "http://localhost:4873/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ @@ -8239,13 +7981,14 @@ } }, "node_modules/cipher-base": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", - "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", + "version": "1.0.7", + "resolved": "http://localhost:4873/cipher-base/-/cipher-base-1.0.7.tgz", + "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", "license": "MIT", "dependencies": { "inherits": "^2.0.4", - "safe-buffer": "^5.2.1" + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.2" }, "engines": { "node": ">= 0.10" @@ -8253,7 +7996,7 @@ }, "node_modules/cjs-module-lexer": { "version": "1.4.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "resolved": "http://localhost:4873/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "license": "MIT" }, @@ -8276,7 +8019,7 @@ }, "node_modules/cli-color": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", + "resolved": "http://localhost:4873/cli-color/-/cli-color-2.0.4.tgz", "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", "license": "ISC", "dependencies": { @@ -8292,7 +8035,7 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "resolved": "http://localhost:4873/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "license": "MIT", @@ -8305,7 +8048,7 @@ }, "node_modules/cli-spinners": { "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "resolved": "http://localhost:4873/cli-spinners/-/cli-spinners-2.9.2.tgz", "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "license": "MIT", @@ -8318,7 +8061,7 @@ }, "node_modules/cli-table3": { "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "resolved": "http://localhost:4873/cli-table3/-/cli-table3-0.6.5.tgz", "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, "license": "MIT", @@ -8333,18 +8076,18 @@ } }, "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "version": "4.1.0", + "resolved": "http://localhost:4873/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, "license": "ISC", "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "resolved": "http://localhost:4873/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "license": "ISC", "dependencies": { @@ -8358,7 +8101,7 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "resolved": "http://localhost:4873/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", "dependencies": { @@ -8375,7 +8118,7 @@ }, "node_modules/clone": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "resolved": "http://localhost:4873/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "license": "MIT", @@ -8385,7 +8128,7 @@ }, "node_modules/cluster-key-slot": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "resolved": "http://localhost:4873/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", "license": "Apache-2.0", "engines": { @@ -8394,7 +8137,7 @@ }, "node_modules/co": { "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "resolved": "http://localhost:4873/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "license": "MIT", @@ -8404,28 +8147,28 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "version": "1.0.3", + "resolved": "http://localhost:4873/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, "license": "MIT" }, "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "version": "5.0.3", + "resolved": "http://localhost:4873/color/-/color-5.0.3.tgz", + "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" + "color-convert": "^3.1.3", + "color-string": "^2.1.3" }, "engines": { - "node": ">=12.5.0" + "node": ">=18" } }, "node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "resolved": "http://localhost:4873/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { @@ -8437,58 +8180,55 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "resolved": "http://localhost:4873/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "version": "2.1.4", + "resolved": "http://localhost:4873/color-string/-/color-string-2.1.4.tgz", + "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", "license": "MIT", "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=18" } }, - "node_modules/colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "node_modules/color-string/node_modules/color-name": { + "version": "2.1.0", + "resolved": "http://localhost:4873/color-name/-/color-name-2.1.0.tgz", + "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==", "license": "MIT", - "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" + "engines": { + "node": ">=12.20" } }, - "node_modules/colorspace/node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "node_modules/color/node_modules/color-convert": { + "version": "3.1.3", + "resolved": "http://localhost:4873/color-convert/-/color-convert-3.1.3.tgz", + "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", "license": "MIT", "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=14.6" } }, - "node_modules/colorspace/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/color/node_modules/color-name": { + "version": "2.1.0", + "resolved": "http://localhost:4873/color-name/-/color-name-2.1.0.tgz", + "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==", "license": "MIT", - "dependencies": { - "color-name": "1.1.3" + "engines": { + "node": ">=12.20" } }, - "node_modules/colorspace/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "resolved": "http://localhost:4873/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", "dependencies": { @@ -8500,7 +8240,7 @@ }, "node_modules/commander": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "resolved": "http://localhost:4873/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, "license": "MIT", @@ -8509,17 +8249,14 @@ } }, "node_modules/comment-json": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", - "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", + "version": "5.0.0", + "resolved": "http://localhost:4873/comment-json/-/comment-json-5.0.0.tgz", + "integrity": "sha512-uiqLcOiVDJtBP8WGkZHEP+FZIhTzP1dxvn59EfoYUi9gqupjrBWVQkO2atDrbnKPwLeotFYDsuNb26uBMqB+hw==", "dev": true, "license": "MIT", "dependencies": { "array-timsort": "^1.0.3", - "core-util-is": "^1.0.3", - "esprima": "^4.0.1", - "has-own-prop": "^2.0.0", - "repeat-string": "^1.6.1" + "esprima": "^4.0.1" }, "engines": { "node": ">= 6" @@ -8527,7 +8264,7 @@ }, "node_modules/component-emitter": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "resolved": "http://localhost:4873/component-emitter/-/component-emitter-1.3.1.tgz", "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", "dev": true, "license": "MIT", @@ -8537,7 +8274,7 @@ }, "node_modules/compressible": { "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "resolved": "http://localhost:4873/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "license": "MIT", "dependencies": { @@ -8548,16 +8285,16 @@ } }, "node_modules/compression": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", - "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", + "version": "1.8.1", + "resolved": "http://localhost:4873/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "license": "MIT", "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", "debug": "2.6.9", "negotiator": "~0.6.4", - "on-headers": "~1.0.2", + "on-headers": "~1.1.0", "safe-buffer": "5.2.1", "vary": "~1.1.2" }, @@ -8567,7 +8304,7 @@ }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "resolved": "http://localhost:4873/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { @@ -8576,20 +8313,29 @@ }, "node_modules/compression/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "resolved": "http://localhost:4873/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "http://localhost:4873/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "http://localhost:4873/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, "node_modules/concat-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "resolved": "http://localhost:4873/concat-stream/-/concat-stream-2.0.0.tgz", "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "engines": [ "node >= 6.0" @@ -8603,26 +8349,30 @@ } }, "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "license": "MIT" + "version": "3.4.2", + "resolved": "http://localhost:4873/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } }, "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "version": "1.1.0", + "resolved": "http://localhost:4873/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/content-type": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "resolved": "http://localhost:4873/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "license": "MIT", "engines": { @@ -8631,43 +8381,46 @@ }, "node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "resolved": "http://localhost:4873/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "version": "0.7.2", + "resolved": "http://localhost:4873/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "license": "MIT" + "version": "1.2.2", + "resolved": "http://localhost:4873/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } }, "node_modules/cookiejar": { "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "resolved": "http://localhost:4873/cookiejar/-/cookiejar-2.1.4.tgz", "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true, "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "resolved": "http://localhost:4873/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "version": "2.8.6", + "resolved": "http://localhost:4873/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", "license": "MIT", "dependencies": { "object-assign": "^4", @@ -8675,11 +8428,15 @@ }, "engines": { "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/cosmiconfig": { "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "resolved": "http://localhost:4873/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "license": "MIT", @@ -8706,7 +8463,7 @@ }, "node_modules/create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "http://localhost:4873/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "license": "MIT", "dependencies": { @@ -8719,7 +8476,7 @@ }, "node_modules/create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "http://localhost:4873/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "license": "MIT", "dependencies": { @@ -8733,7 +8490,7 @@ }, "node_modules/create-jest": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "resolved": "http://localhost:4873/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, "license": "MIT", @@ -8755,23 +8512,31 @@ }, "node_modules/create-require": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "resolved": "http://localhost:4873/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "devOptional": true, "license": "MIT" }, "node_modules/cron": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/cron/-/cron-2.4.1.tgz", - "integrity": "sha512-ty0hUSPuENwDtIShDFxUxWEIsqiu2vhoFtt6Vwrbg4lHGtJX2/cV2p0hH6/qaEM9Pj+i6mQoau48BO5wBpkP4w==", + "version": "4.4.0", + "resolved": "http://localhost:4873/cron/-/cron-4.4.0.tgz", + "integrity": "sha512-fkdfq+b+AHI4cKdhZlppHveI/mgz2qpiYxcm+t5E5TsxX7QrLS1VE0+7GENEk9z0EeGPcpSciGv6ez24duWhwQ==", "license": "MIT", "dependencies": { - "luxon": "^3.2.1" + "@types/luxon": "~3.7.0", + "luxon": "~3.7.0" + }, + "engines": { + "node": ">=18.x" + }, + "funding": { + "type": "ko-fi", + "url": "https://ko-fi.com/intcreator" } }, "node_modules/cross-fetch": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "resolved": "http://localhost:4873/cross-fetch/-/cross-fetch-3.2.0.tgz", "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", "license": "MIT", "dependencies": { @@ -8780,7 +8545,7 @@ }, "node_modules/cross-inspect": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.1.tgz", + "resolved": "http://localhost:4873/cross-inspect/-/cross-inspect-1.0.1.tgz", "integrity": "sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==", "license": "MIT", "dependencies": { @@ -8792,7 +8557,7 @@ }, "node_modules/cross-spawn": { "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "resolved": "http://localhost:4873/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { @@ -8806,32 +8571,32 @@ }, "node_modules/crypto-js": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "resolved": "http://localhost:4873/crypto-js/-/crypto-js-4.2.0.tgz", "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", "license": "MIT" }, "node_modules/crypto-randomuuid": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-randomuuid/-/crypto-randomuuid-1.0.0.tgz", + "resolved": "http://localhost:4873/crypto-randomuuid/-/crypto-randomuuid-1.0.0.tgz", "integrity": "sha512-/RC5F4l1SCqD/jazwUF6+t34Cd8zTSAGZ7rvvZu1whZUhD2a5MOGKjSGowoGcpj/cbVZk1ZODIooJEQQq3nNAA==", "license": "MIT" }, "node_modules/css.escape": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "resolved": "http://localhost:4873/css.escape/-/css.escape-1.5.1.tgz", "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", "dev": true, "license": "MIT" }, "node_modules/cssfilter": { "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "resolved": "http://localhost:4873/cssfilter/-/cssfilter-0.0.10.tgz", "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", "license": "MIT" }, "node_modules/d": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "resolved": "http://localhost:4873/d/-/d-1.0.2.tgz", "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", "license": "ISC", "dependencies": { @@ -8844,19 +8609,19 @@ }, "node_modules/dataloader": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.3.tgz", + "resolved": "http://localhost:4873/dataloader/-/dataloader-2.2.3.tgz", "integrity": "sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==", "license": "MIT" }, "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "version": "1.11.20", + "resolved": "http://localhost:4873/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", "license": "MIT" }, "node_modules/dc-polyfill": { "version": "0.1.9", - "resolved": "https://registry.npmjs.org/dc-polyfill/-/dc-polyfill-0.1.9.tgz", + "resolved": "http://localhost:4873/dc-polyfill/-/dc-polyfill-0.1.9.tgz", "integrity": "sha512-D5mJThEEk9hf+CJPwTf9JFsrWdlWp8Pccjxkhf7uUT/E/cU9Mx3ebWe2Bz2OawRmJ6WS9eaDPBkeBE4uOKq9uw==", "license": "MIT", "engines": { @@ -8865,7 +8630,7 @@ }, "node_modules/dd-trace": { "version": "5.56.0", - "resolved": "https://registry.npmjs.org/dd-trace/-/dd-trace-5.56.0.tgz", + "resolved": "http://localhost:4873/dd-trace/-/dd-trace-5.56.0.tgz", "integrity": "sha512-1GiAh1UATmn8uZxk+nqZAdfJppiOq4kxJKiozMNvupffbcbAuDj5qnfYF9Hz3oqsk+Jtt2oheQeR05c4JRshXw==", "hasInstallScript": true, "license": "(Apache-2.0 OR BSD-3-Clause)", @@ -8908,16 +8673,25 @@ "node": ">=18" } }, + "node_modules/dd-trace/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "http://localhost:4873/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/dd-trace/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "version": "0.1.13", + "resolved": "http://localhost:4873/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", "license": "MIT" }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "http://localhost:4873/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -8932,9 +8706,9 @@ } }, "node_modules/dedent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", - "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", + "version": "1.7.2", + "resolved": "http://localhost:4873/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -8947,14 +8721,14 @@ }, "node_modules/deep-is": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "resolved": "http://localhost:4873/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "resolved": "http://localhost:4873/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "license": "MIT", "engines": { @@ -8963,7 +8737,7 @@ }, "node_modules/defaults": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "resolved": "http://localhost:4873/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "license": "MIT", @@ -8976,7 +8750,7 @@ }, "node_modules/define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "resolved": "http://localhost:4873/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "license": "MIT", "dependencies": { @@ -8993,7 +8767,7 @@ }, "node_modules/delay": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "resolved": "http://localhost:4873/delay/-/delay-5.0.0.tgz", "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", "license": "MIT", "engines": { @@ -9005,7 +8779,7 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "resolved": "http://localhost:4873/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", "engines": { @@ -9014,7 +8788,7 @@ }, "node_modules/denque": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "resolved": "http://localhost:4873/denque/-/denque-2.1.0.tgz", "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", "license": "Apache-2.0", "engines": { @@ -9023,27 +8797,17 @@ }, "node_modules/depd": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "resolved": "http://localhost:4873/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/detect-libc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "version": "2.1.2", + "resolved": "http://localhost:4873/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", "engines": { "node": ">=8" @@ -9051,7 +8815,7 @@ }, "node_modules/detect-newline": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "resolved": "http://localhost:4873/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "license": "MIT", "engines": { @@ -9060,7 +8824,7 @@ }, "node_modules/dezalgo": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "resolved": "http://localhost:4873/dezalgo/-/dezalgo-1.0.4.tgz", "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, "license": "ISC", @@ -9070,9 +8834,9 @@ } }, "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "version": "4.0.4", + "resolved": "http://localhost:4873/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", "devOptional": true, "license": "BSD-3-Clause", "engines": { @@ -9081,7 +8845,7 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "resolved": "http://localhost:4873/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "license": "MIT", @@ -9091,7 +8855,7 @@ }, "node_modules/difflib": { "version": "0.2.4", - "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "resolved": "http://localhost:4873/difflib/-/difflib-0.2.4.tgz", "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", "dependencies": { "heap": ">= 0.2.0" @@ -9102,7 +8866,7 @@ }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "resolved": "http://localhost:4873/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "license": "MIT", @@ -9115,7 +8879,7 @@ }, "node_modules/doctrine": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "resolved": "http://localhost:4873/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "license": "Apache-2.0", @@ -9128,35 +8892,53 @@ }, "node_modules/dom-accessibility-api": { "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "resolved": "http://localhost:4873/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true, "license": "MIT" }, "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "version": "17.4.1", + "resolved": "http://localhost:4873/dotenv/-/dotenv-17.4.1.tgz", + "integrity": "sha512-k8DaKGP6r1G30Lx8V4+pCsLzKr8vLmV2paqEj1Y55GdAgJuIqpRp5FfajGF8KtwMxCz9qJc6wUIJnm053d/WCw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "url": "https://dotenvx.com" } }, "node_modules/dotenv-expand": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", - "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "version": "12.0.3", + "resolved": "http://localhost:4873/dotenv-expand/-/dotenv-expand-12.0.3.tgz", + "integrity": "sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==", + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "http://localhost:4873/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", "license": "BSD-2-Clause", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, "node_modules/dreamopt": { "version": "0.8.0", - "resolved": "https://registry.npmjs.org/dreamopt/-/dreamopt-0.8.0.tgz", + "resolved": "http://localhost:4873/dreamopt/-/dreamopt-0.8.0.tgz", "integrity": "sha512-vyJTp8+mC+G+5dfgsY+r3ckxlz+QMX40VjPQsZc5gxVAxLmi64TBoVkP54A/pRAXMXsbu2GMMBrZPxNv23waMg==", "dependencies": { "wordwrap": ">=0.0.2" @@ -9165,18 +8947,9 @@ "node": ">=0.4.0" } }, - "node_modules/dset": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", - "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/dunder-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "resolved": "http://localhost:4873/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "license": "MIT", "dependencies": { @@ -9190,13 +8963,13 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "resolved": "http://localhost:4873/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "license": "MIT" }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "resolved": "http://localhost:4873/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "license": "Apache-2.0", "dependencies": { @@ -9205,7 +8978,7 @@ }, "node_modules/ed25519-hd-key": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/ed25519-hd-key/-/ed25519-hd-key-1.1.2.tgz", + "resolved": "http://localhost:4873/ed25519-hd-key/-/ed25519-hd-key-1.1.2.tgz", "integrity": "sha512-/0y9y6N7vM6Kj5ASr9J9wcMVDTtygxSOvYX+PJiMD7VcxCx2G03V5bLRl8Dug9EgkLFsLhGqBtQWQRcElEeWTA==", "license": "MIT", "dependencies": { @@ -9216,13 +8989,13 @@ }, "node_modules/ed25519-hd-key/node_modules/@types/node": { "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "resolved": "http://localhost:4873/@types/node/-/node-11.11.6.tgz", "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", "license": "MIT" }, "node_modules/ed25519-hd-key/node_modules/bip39": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", + "resolved": "http://localhost:4873/bip39/-/bip39-3.0.2.tgz", "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", "license": "ISC", "dependencies": { @@ -9234,7 +9007,7 @@ }, "node_modules/ed2curve": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz", + "resolved": "http://localhost:4873/ed2curve/-/ed2curve-0.3.0.tgz", "integrity": "sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==", "license": "Unlicense", "dependencies": { @@ -9243,36 +9016,20 @@ }, "node_modules/ee-first": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "resolved": "http://localhost:4873/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/electron-to-chromium": { - "version": "1.5.178", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.178.tgz", - "integrity": "sha512-wObbz/ar3Bc6e4X5vf0iO8xTN8YAjN/tgiAOJLr7yjYFtP9wAjq8Mb5h0yn6kResir+VYx2DXBj9NNobs0ETSA==", + "version": "1.5.344", + "resolved": "http://localhost:4873/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz", + "integrity": "sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==", "dev": true, "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "resolved": "http://localhost:4873/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "license": "MIT", @@ -9285,19 +9042,19 @@ }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "resolved": "http://localhost:4873/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/enabled": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "resolved": "http://localhost:4873/enabled/-/enabled-2.0.0.tgz", "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", "license": "MIT" }, "node_modules/encodeurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "resolved": "http://localhost:4873/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", "engines": { @@ -9305,59 +9062,82 @@ } }, "node_modules/engine.io": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", - "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", + "version": "6.6.7", + "resolved": "http://localhost:4873/engine.io/-/engine.io-6.6.7.tgz", + "integrity": "sha512-DgOngfDKM2EviOH3Mr9m7ks1q8roetLy/IMmYthAYzbpInMbYc/GS+fWFA3rl1gvwKVsQrVV61fo5emD1y3OJQ==", "license": "MIT", "dependencies": { "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", + "@types/ws": "^8.5.12", "accepts": "~1.3.4", "base64id": "2.0.0", "cookie": "~0.7.2", "cors": "~2.8.5", - "debug": "~4.3.1", + "debug": "~4.4.1", "engine.io-parser": "~5.2.1", - "ws": "~8.17.1" + "ws": "~8.18.3" }, "engines": { "node": ">=10.2.0" } }, - "node_modules/engine.io-client": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz", - "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==", + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "http://localhost:4873/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "license": "MIT", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.1.1" + "engines": { + "node": ">=10.0.0" } }, - "node_modules/engine.io-client/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "node_modules/engine.io/node_modules/accepts": { + "version": "1.3.8", + "resolved": "http://localhost:4873/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=6.0" + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "http://localhost:4873/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "node_modules/engine.io/node_modules/ws": { + "version": "8.18.3", + "resolved": "http://localhost:4873/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -9377,43 +9157,60 @@ }, "node_modules/engine.io-parser": { "version": "5.2.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "resolved": "http://localhost:4873/engine.io-parser/-/engine.io-parser-5.2.3.tgz", "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "license": "MIT", "engines": { "node": ">=10.0.0" } }, - "node_modules/engine.io/node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "node_modules/engine.io/node_modules/accepts": { + "version": "1.3.8", + "resolved": "http://localhost:4873/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/engine.io/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "node_modules/engine.io/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "mime-db": "1.52.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "http://localhost:4873/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, "node_modules/engine.io/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.3", + "resolved": "http://localhost:4873/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -9432,23 +9229,23 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", - "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", + "version": "5.21.0", + "resolved": "http://localhost:4873/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz", + "integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==", "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "tapable": "^2.3.3" }, "engines": { "node": ">=10.13.0" } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "http://localhost:4873/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9457,7 +9254,7 @@ }, "node_modules/es-define-property": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "resolved": "http://localhost:4873/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", "engines": { @@ -9466,7 +9263,7 @@ }, "node_modules/es-errors": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "resolved": "http://localhost:4873/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "license": "MIT", "engines": { @@ -9474,15 +9271,15 @@ } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.1.0", + "resolved": "http://localhost:4873/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", "dev": true, "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "resolved": "http://localhost:4873/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { @@ -9494,7 +9291,7 @@ }, "node_modules/es-set-tostringtag": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "resolved": "http://localhost:4873/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "license": "MIT", "dependencies": { @@ -9509,7 +9306,7 @@ }, "node_modules/es5-ext": { "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "resolved": "http://localhost:4873/es5-ext/-/es5-ext-0.10.64.tgz", "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "hasInstallScript": true, "license": "ISC", @@ -9525,7 +9322,7 @@ }, "node_modules/es6-iterator": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "resolved": "http://localhost:4873/es6-iterator/-/es6-iterator-2.0.3.tgz", "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "license": "MIT", "dependencies": { @@ -9536,7 +9333,7 @@ }, "node_modules/es6-symbol": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "resolved": "http://localhost:4873/es6-symbol/-/es6-symbol-3.1.4.tgz", "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "license": "ISC", "dependencies": { @@ -9549,7 +9346,7 @@ }, "node_modules/es6-weak-map": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "resolved": "http://localhost:4873/es6-weak-map/-/es6-weak-map-2.0.3.tgz", "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "license": "ISC", "dependencies": { @@ -9561,7 +9358,7 @@ }, "node_modules/escalade": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "resolved": "http://localhost:4873/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", "engines": { @@ -9570,13 +9367,13 @@ }, "node_modules/escape-html": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "resolved": "http://localhost:4873/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "resolved": "http://localhost:4873/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", @@ -9589,7 +9386,7 @@ }, "node_modules/eslint": { "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "resolved": "http://localhost:4873/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, @@ -9645,9 +9442,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "version": "8.10.2", + "resolved": "http://localhost:4873/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", + "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", "dev": true, "license": "MIT", "bin": { @@ -9658,9 +9455,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "4.2.5", + "resolved": "http://localhost:4873/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz", + "integrity": "sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==", "dev": true, "license": "MIT", "dependencies": { @@ -9681,7 +9478,7 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "resolved": "http://localhost:4873/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "license": "BSD-2-Clause", @@ -9695,7 +9492,7 @@ }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "resolved": "http://localhost:4873/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "license": "Apache-2.0", @@ -9707,9 +9504,9 @@ } }, "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.15.0", + "resolved": "http://localhost:4873/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -9725,7 +9522,7 @@ }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "resolved": "http://localhost:4873/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "license": "BSD-2-Clause", @@ -9742,7 +9539,7 @@ }, "node_modules/eslint/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "resolved": "http://localhost:4873/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", @@ -9750,29 +9547,16 @@ "node": ">=4.0" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "resolved": "http://localhost:4873/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, "node_modules/esniff": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "resolved": "http://localhost:4873/esniff/-/esniff-2.0.1.tgz", "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", "license": "ISC", "dependencies": { @@ -9787,7 +9571,7 @@ }, "node_modules/espree": { "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "resolved": "http://localhost:4873/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", @@ -9805,7 +9589,7 @@ }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "resolved": "http://localhost:4873/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "license": "BSD-2-Clause", @@ -9818,9 +9602,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.7.0", + "resolved": "http://localhost:4873/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -9832,7 +9616,7 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "resolved": "http://localhost:4873/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", @@ -9842,7 +9626,7 @@ }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "resolved": "http://localhost:4873/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", @@ -9855,7 +9639,7 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "resolved": "http://localhost:4873/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", @@ -9865,7 +9649,7 @@ }, "node_modules/estraverse": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "resolved": "http://localhost:4873/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "license": "BSD-2-Clause", @@ -9875,7 +9659,7 @@ }, "node_modules/esutils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "resolved": "http://localhost:4873/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", @@ -9885,7 +9669,7 @@ }, "node_modules/etag": { "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "resolved": "http://localhost:4873/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "license": "MIT", "engines": { @@ -9894,7 +9678,7 @@ }, "node_modules/event-emitter": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "resolved": "http://localhost:4873/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "license": "MIT", "dependencies": { @@ -9904,19 +9688,19 @@ }, "node_modules/eventemitter2": { "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", + "resolved": "http://localhost:4873/eventemitter2/-/eventemitter2-6.4.9.tgz", "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", "license": "MIT" }, "node_modules/eventemitter3": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "resolved": "http://localhost:4873/eventemitter3/-/eventemitter3-3.1.2.tgz", "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", "license": "MIT" }, "node_modules/events": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "resolved": "http://localhost:4873/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "license": "MIT", @@ -9926,7 +9710,7 @@ }, "node_modules/execa": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "resolved": "http://localhost:4873/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", @@ -9950,14 +9734,14 @@ }, "node_modules/execa/node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "resolved": "http://localhost:4873/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/exit": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "resolved": "http://localhost:4873/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { @@ -9966,7 +9750,7 @@ }, "node_modules/expect": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "resolved": "http://localhost:4873/expect/-/expect-29.7.0.tgz", "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "license": "MIT", @@ -9982,99 +9766,60 @@ } }, "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "version": "5.2.1", + "resolved": "http://localhost:4873/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/express" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", - "license": "MIT" - }, "node_modules/ext": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "resolved": "http://localhost:4873/ext/-/ext-1.7.0.tgz", "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "license": "ISC", "dependencies": { "type": "^2.7.2" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/extract-files": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", + "resolved": "http://localhost:4873/extract-files/-/extract-files-9.0.0.tgz", "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==", "license": "MIT", "engines": { @@ -10086,85 +9831,129 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "resolved": "http://localhost:4873/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "resolved": "http://localhost:4873/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true, "license": "Apache-2.0" }, "node_modules/fast-fifo": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "resolved": "http://localhost:4873/fast-fifo/-/fast-fifo-1.3.2.tgz", "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "http://localhost:4873/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "http://localhost:4873/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "resolved": "http://localhost:4873/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "resolved": "http://localhost:4873/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, "license": "MIT" }, "node_modules/fast-safe-stringify": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "resolved": "http://localhost:4873/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "license": "MIT" }, - "node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "http://localhost:4873/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, "funding": [ { "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" + "url": "https://github.com/sponsors/fastify" }, { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-xml-builder": { + "version": "1.1.5", + "resolved": "http://localhost:4873/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz", + "integrity": "sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.1.3" + } + }, + "node_modules/fast-xml-parser": { + "version": "5.7.2", + "resolved": "http://localhost:4873/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz", + "integrity": "sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" } ], "license": "MIT", "dependencies": { - "strnum": "^1.0.5" + "@nodable/entities": "^2.1.0", + "fast-xml-builder": "^1.1.5", + "path-expression-matcher": "^1.5.0", + "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "version": "1.20.1", + "resolved": "http://localhost:4873/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -10172,7 +9961,7 @@ }, "node_modules/fb-watchman": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "resolved": "http://localhost:4873/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "license": "Apache-2.0", @@ -10182,45 +9971,13 @@ }, "node_modules/fecha": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "resolved": "http://localhost:4873/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", "license": "MIT" }, - "node_modules/fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", - "license": "MIT" - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "resolved": "http://localhost:4873/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", @@ -10233,7 +9990,7 @@ }, "node_modules/file-stream-rotator": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", + "resolved": "http://localhost:4873/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", "integrity": "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==", "license": "MIT", "dependencies": { @@ -10241,59 +9998,26 @@ } }, "node_modules/file-type": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-20.4.1.tgz", - "integrity": "sha512-hw9gNZXUfZ02Jo0uafWLaFVPter5/k2rfcrjFJJHX/77xtSDOfJuEFb6oKlFV86FLP1SuyHMW1PSk0U9M5tKkQ==", + "version": "21.3.4", + "resolved": "http://localhost:4873/file-type/-/file-type-21.3.4.tgz", + "integrity": "sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==", "license": "MIT", "dependencies": { - "@tokenizer/inflate": "^0.2.6", - "strtok3": "^10.2.0", - "token-types": "^6.0.0", + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", "uint8array-extras": "^1.4.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fill-range": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "resolved": "http://localhost:4873/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "license": "MIT", "dependencies": { @@ -10304,41 +10028,29 @@ } }, "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "version": "2.1.1", + "resolved": "http://localhost:4873/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "resolved": "http://localhost:4873/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", @@ -10355,7 +10067,7 @@ }, "node_modules/flat-cache": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "resolved": "http://localhost:4873/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "license": "MIT", @@ -10370,9 +10082,9 @@ }, "node_modules/flat-cache/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "resolved": "http://localhost:4873/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -10392,7 +10104,7 @@ }, "node_modules/flat-cache/node_modules/rimraf": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "resolved": "http://localhost:4873/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, @@ -10408,15 +10120,15 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "http://localhost:4873/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/fluent-ffmpeg": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.3.tgz", + "resolved": "http://localhost:4873/fluent-ffmpeg/-/fluent-ffmpeg-2.1.3.tgz", "integrity": "sha512-Be3narBNt2s6bsaqP6Jzq91heDgOEaDCJAXcE3qcma/EJBSy5FB4cvO31XBInuAuKBx8Kptf8dkhjK0IOru39Q==", "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "license": "MIT", @@ -10430,7 +10142,7 @@ }, "node_modules/fluent-ffmpeg/node_modules/which": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "resolved": "http://localhost:4873/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "license": "ISC", "dependencies": { @@ -10442,14 +10154,14 @@ }, "node_modules/fn.name": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "resolved": "http://localhost:4873/fn.name/-/fn.name-1.1.0.tgz", "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", "license": "MIT" }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.16.0", + "resolved": "http://localhost:4873/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -10468,7 +10180,7 @@ }, "node_modules/for-each": { "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "resolved": "http://localhost:4873/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "license": "MIT", "dependencies": { @@ -10483,7 +10195,7 @@ }, "node_modules/foreground-child": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "resolved": "http://localhost:4873/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "license": "ISC", "dependencies": { @@ -10498,15 +10210,15 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.0.2.tgz", - "integrity": "sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==", + "version": "9.1.0", + "resolved": "http://localhost:4873/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "chalk": "^4.1.2", - "chokidar": "^3.5.3", + "chokidar": "^4.0.1", "cosmiconfig": "^8.2.0", "deepmerge": "^4.2.2", "fs-extra": "^10.0.0", @@ -10518,8 +10230,7 @@ "tapable": "^2.2.1" }, "engines": { - "node": ">=12.13.0", - "yarn": ">=1.0.0" + "node": ">=14.21.3" }, "peerDependencies": { "typescript": ">3.6.0", @@ -10527,9 +10238,9 @@ } }, "node_modules/form-data": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", - "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", + "version": "4.0.5", + "resolved": "http://localhost:4873/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -10542,9 +10253,30 @@ "node": ">= 6" } }, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/formidable": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.5.tgz", + "resolved": "http://localhost:4873/formidable/-/formidable-2.1.5.tgz", "integrity": "sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==", "dev": true, "license": "MIT", @@ -10560,7 +10292,7 @@ }, "node_modules/forwarded": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "resolved": "http://localhost:4873/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "license": "MIT", "engines": { @@ -10568,17 +10300,17 @@ } }, "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "version": "2.0.0", + "resolved": "http://localhost:4873/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/fs-extra": { "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "resolved": "http://localhost:4873/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", @@ -10592,22 +10324,22 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", - "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "version": "1.1.0", + "resolved": "http://localhost:4873/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", "dev": true, "license": "Unlicense" }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": "http://localhost:4873/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "resolved": "http://localhost:4873/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, @@ -10622,7 +10354,7 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "resolved": "http://localhost:4873/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "license": "MIT", "funding": { @@ -10631,7 +10363,7 @@ }, "node_modules/generate-function": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "resolved": "http://localhost:4873/generate-function/-/generate-function-2.3.1.tgz", "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", "license": "MIT", "dependencies": { @@ -10640,7 +10372,7 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "resolved": "http://localhost:4873/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", @@ -10650,7 +10382,7 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "resolved": "http://localhost:4873/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "license": "ISC", "engines": { @@ -10659,7 +10391,7 @@ }, "node_modules/get-intrinsic": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "resolved": "http://localhost:4873/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { @@ -10683,7 +10415,7 @@ }, "node_modules/get-package-type": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "resolved": "http://localhost:4873/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "license": "MIT", @@ -10693,7 +10425,7 @@ }, "node_modules/get-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "resolved": "http://localhost:4873/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "license": "MIT", "dependencies": { @@ -10706,7 +10438,7 @@ }, "node_modules/get-stream": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "resolved": "http://localhost:4873/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", @@ -10718,63 +10450,77 @@ } }, "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", + "version": "13.0.6", + "resolved": "http://localhost:4873/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "http://localhost:4873/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "resolved": "http://localhost:4873/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, "license": "BSD-2-Clause" }, + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "http://localhost:4873/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.5", + "resolved": "http://localhost:4873/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", + "version": "10.2.5", + "resolved": "http://localhost:4873/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.5" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -10782,7 +10528,7 @@ }, "node_modules/globals": { "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "resolved": "http://localhost:4873/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", @@ -10798,7 +10544,7 @@ }, "node_modules/globby": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "resolved": "http://localhost:4873/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", @@ -10819,7 +10565,7 @@ }, "node_modules/gopd": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "resolved": "http://localhost:4873/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", "engines": { @@ -10831,22 +10577,22 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "resolved": "http://localhost:4873/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "resolved": "http://localhost:4873/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, "license": "MIT" }, "node_modules/graphql": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz", - "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==", + "version": "16.13.2", + "resolved": "http://localhost:4873/graphql/-/graphql-16.13.2.tgz", + "integrity": "sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==", "license": "MIT", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" @@ -10854,13 +10600,13 @@ }, "node_modules/graphql-fields-list": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/graphql-fields-list/-/graphql-fields-list-2.3.0.tgz", + "resolved": "http://localhost:4873/graphql-fields-list/-/graphql-fields-list-2.3.0.tgz", "integrity": "sha512-psnXCYTjZH46FAvIw0MelMwQg1IFI2uEl8rYAGXxTjFPLxd1UW0W5eaQb4kuNBh7Hh4FzQQ+I/TYtjLIPtXI1A==", "license": "ISC" }, "node_modules/graphql-request": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-4.3.0.tgz", + "resolved": "http://localhost:4873/graphql-request/-/graphql-request-4.3.0.tgz", "integrity": "sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow==", "license": "MIT", "dependencies": { @@ -10873,23 +10619,45 @@ } }, "node_modules/graphql-request/node_modules/form-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.3.tgz", - "integrity": "sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==", + "version": "3.0.4", + "resolved": "http://localhost:4873/form-data/-/form-data-3.0.4.tgz", + "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" } }, + "node_modules/graphql-request/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/graphql-request/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/graphql-tag": { "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "resolved": "http://localhost:4873/graphql-tag/-/graphql-tag-2.12.6.tgz", "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", "license": "MIT", "dependencies": { @@ -10904,7 +10672,7 @@ }, "node_modules/graphql-type-json": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.3.2.tgz", + "resolved": "http://localhost:4873/graphql-type-json/-/graphql-type-json-0.3.2.tgz", "integrity": "sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg==", "license": "MIT", "peerDependencies": { @@ -10912,33 +10680,67 @@ } }, "node_modules/graphql-ws": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.16.0.tgz", - "integrity": "sha512-Ju2RCU2dQMgSKtArPbEtsK5gNLnsQyTNIo/T7cZNp96niC1x0KdJNZV0TIoilceBPQwfb5itrGl8pkFeOUMl4A==", + "version": "6.0.8", + "resolved": "http://localhost:4873/graphql-ws/-/graphql-ws-6.0.8.tgz", + "integrity": "sha512-m3EOaNsUBXwAnkBWbzPfe0Nq8pXUfxsWnolC54sru3FzHvhTZL0Ouf/BoQsaGAXqM+YPerXOJ47BUnmgmoupCw==", "license": "MIT", - "workspaces": [ - "website" - ], "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": ">=0.11 <=16" + "node": ">=20" + }, + "peerDependencies": { + "@fastify/websocket": "^10 || ^11", + "crossws": "~0.3", + "graphql": "^15.10.1 || ^16", + "ws": "^8" + }, + "peerDependenciesMeta": { + "@fastify/websocket": { + "optional": true + }, + "crossws": { + "optional": true + }, + "ws": { + "optional": true + } + } + }, + "node_modules/handlebars": { + "version": "4.7.9", + "resolved": "http://localhost:4873/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "http://localhost:4873/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "resolved": "http://localhost:4873/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-own-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", - "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", "dev": true, "license": "MIT", "engines": { @@ -10947,7 +10749,7 @@ }, "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "resolved": "http://localhost:4873/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", "dependencies": { @@ -10959,7 +10761,7 @@ }, "node_modules/has-symbols": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "resolved": "http://localhost:4873/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", "engines": { @@ -10971,7 +10773,7 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "resolved": "http://localhost:4873/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "license": "MIT", "dependencies": { @@ -10985,23 +10787,66 @@ } }, "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "version": "3.1.2", + "resolved": "http://localhost:4873/hash-base/-/hash-base-3.1.2.tgz", + "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", "license": "MIT", "dependencies": { "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.1" }, "engines": { - "node": ">=4" + "node": ">= 0.8" + } + }, + "node_modules/hash-base/node_modules/isarray": { + "version": "1.0.0", + "resolved": "http://localhost:4873/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "http://localhost:4873/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hash-base/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "http://localhost:4873/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/hash-base/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "http://localhost:4873/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" } }, + "node_modules/hash-base/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "http://localhost:4873/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.3", + "resolved": "http://localhost:4873/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -11012,36 +10857,40 @@ }, "node_modules/heap": { "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "resolved": "http://localhost:4873/heap/-/heap-0.2.7.tgz", "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", "license": "MIT" }, "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "resolved": "http://localhost:4873/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "http://localhost:4873/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/human-signals": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "resolved": "http://localhost:4873/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "license": "Apache-2.0", @@ -11051,7 +10900,7 @@ }, "node_modules/humanize-ms": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "resolved": "http://localhost:4873/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "license": "MIT", "dependencies": { @@ -11059,20 +10908,24 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.7.2", + "resolved": "http://localhost:4873/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/ieee754": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "resolved": "http://localhost:4873/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { @@ -11092,7 +10945,7 @@ }, "node_modules/ignore": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "resolved": "http://localhost:4873/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", "engines": { @@ -11101,7 +10954,7 @@ }, "node_modules/import-fresh": { "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "resolved": "http://localhost:4873/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", @@ -11118,7 +10971,7 @@ }, "node_modules/import-in-the-middle": { "version": "1.14.0", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.14.0.tgz", + "resolved": "http://localhost:4873/import-in-the-middle/-/import-in-the-middle-1.14.0.tgz", "integrity": "sha512-g5zLT0HaztRJWysayWYiUq/7E5H825QIiecMD2pI5QO7Wzr847l6GDvPvmZaDIdrDtS2w7qRczywxiK6SL5vRw==", "license": "Apache-2.0", "dependencies": { @@ -11130,7 +10983,7 @@ }, "node_modules/import-local": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "resolved": "http://localhost:4873/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", @@ -11150,7 +11003,7 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "resolved": "http://localhost:4873/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", @@ -11160,7 +11013,7 @@ }, "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "resolved": "http://localhost:4873/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "license": "MIT", @@ -11170,7 +11023,7 @@ }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "resolved": "http://localhost:4873/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, @@ -11182,44 +11035,17 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "resolved": "http://localhost:4873/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, - "node_modules/inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/ioredis": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.6.1.tgz", - "integrity": "sha512-UxC0Yv1Y4WRJiGQxQkP0hfdL0/5/6YvdfOOClRgJ0qppSarkhneSa6UvkMkms0AkdGimSH3Ikqm+6mkMmX7vGA==", + "version": "5.10.1", + "resolved": "http://localhost:4873/ioredis/-/ioredis-5.10.1.tgz", + "integrity": "sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==", "license": "MIT", "dependencies": { - "@ioredis/commands": "^1.1.1", + "@ioredis/commands": "1.5.1", "cluster-key-slot": "^1.1.0", "debug": "^4.3.4", "denque": "^2.1.0", @@ -11239,7 +11065,7 @@ }, "node_modules/ipaddr.js": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "resolved": "http://localhost:4873/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "license": "MIT", "engines": { @@ -11248,27 +11074,14 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "resolved": "http://localhost:4873/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-callable": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "resolved": "http://localhost:4873/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "license": "MIT", "engines": { @@ -11280,7 +11093,7 @@ }, "node_modules/is-core-module": { "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "resolved": "http://localhost:4873/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", @@ -11296,7 +11109,7 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "resolved": "http://localhost:4873/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", "engines": { @@ -11305,7 +11118,7 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "resolved": "http://localhost:4873/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { @@ -11314,7 +11127,7 @@ }, "node_modules/is-generator-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "resolved": "http://localhost:4873/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, "license": "MIT", @@ -11324,7 +11137,7 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "resolved": "http://localhost:4873/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "license": "MIT", "dependencies": { @@ -11336,7 +11149,7 @@ }, "node_modules/is-interactive": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "resolved": "http://localhost:4873/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "license": "MIT", @@ -11346,7 +11159,7 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "resolved": "http://localhost:4873/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "license": "MIT", "engines": { @@ -11355,7 +11168,7 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "resolved": "http://localhost:4873/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "license": "MIT", @@ -11365,19 +11178,19 @@ }, "node_modules/is-promise": { "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "resolved": "http://localhost:4873/is-promise/-/is-promise-2.2.2.tgz", "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", "license": "MIT" }, "node_modules/is-property": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "resolved": "http://localhost:4873/is-property/-/is-property-1.0.2.tgz", "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", "license": "MIT" }, "node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "resolved": "http://localhost:4873/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "license": "MIT", "engines": { @@ -11389,7 +11202,7 @@ }, "node_modules/is-typed-array": { "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "resolved": "http://localhost:4873/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "license": "MIT", "dependencies": { @@ -11404,7 +11217,7 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "resolved": "http://localhost:4873/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", @@ -11416,20 +11229,20 @@ } }, "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "version": "2.0.5", + "resolved": "http://localhost:4873/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "resolved": "http://localhost:4873/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "resolved": "http://localhost:4873/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "license": "BSD-3-Clause", "engines": { @@ -11438,7 +11251,7 @@ }, "node_modules/istanbul-lib-instrument": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "resolved": "http://localhost:4873/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "license": "BSD-3-Clause", @@ -11455,7 +11268,7 @@ }, "node_modules/istanbul-lib-report": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "resolved": "http://localhost:4873/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", @@ -11470,7 +11283,7 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "resolved": "http://localhost:4873/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "license": "BSD-3-Clause", @@ -11485,7 +11298,7 @@ }, "node_modules/istanbul-lib-source-maps/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://localhost:4873/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", @@ -11494,9 +11307,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "version": "3.2.0", + "resolved": "http://localhost:4873/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -11509,13 +11322,13 @@ }, "node_modules/iterall": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "resolved": "http://localhost:4873/iterall/-/iterall-1.3.0.tgz", "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==", "license": "MIT" }, "node_modules/iterare": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "resolved": "http://localhost:4873/iterare/-/iterare-1.2.1.tgz", "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", "license": "ISC", "engines": { @@ -11524,7 +11337,7 @@ }, "node_modules/jackspeak": { "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "resolved": "http://localhost:4873/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "license": "BlueOak-1.0.0", "dependencies": { @@ -11537,35 +11350,9 @@ "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true, - "license": "MIT" - }, "node_modules/jest": { "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", + "resolved": "http://localhost:4873/jest/-/jest-29.5.0.tgz", "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", "dev": true, "license": "MIT", @@ -11592,7 +11379,7 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "license": "MIT", @@ -11607,7 +11394,7 @@ }, "node_modules/jest-circus": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-circus/-/jest-circus-29.7.0.tgz", "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "license": "MIT", @@ -11639,7 +11426,7 @@ }, "node_modules/jest-cli": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "license": "MIT", @@ -11673,7 +11460,7 @@ }, "node_modules/jest-config": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-config/-/jest-config-29.7.0.tgz", "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "license": "MIT", @@ -11719,9 +11506,9 @@ }, "node_modules/jest-config/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "resolved": "http://localhost:4873/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -11741,7 +11528,7 @@ }, "node_modules/jest-diff": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-diff/-/jest-diff-29.7.0.tgz", "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "license": "MIT", @@ -11757,7 +11544,7 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "license": "MIT", "dependencies": { @@ -11769,7 +11556,7 @@ }, "node_modules/jest-each": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-each/-/jest-each-29.7.0.tgz", "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "license": "MIT", @@ -11786,7 +11573,7 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-environment-node/-/jest-environment-node-29.7.0.tgz", "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "license": "MIT", @@ -11804,7 +11591,7 @@ }, "node_modules/jest-get-type": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "resolved": "http://localhost:4873/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "license": "MIT", @@ -11814,7 +11601,7 @@ }, "node_modules/jest-haste-map": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-haste-map/-/jest-haste-map-29.7.0.tgz", "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "license": "MIT", @@ -11840,7 +11627,7 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "license": "MIT", @@ -11854,7 +11641,7 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "license": "MIT", @@ -11870,7 +11657,7 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-message-util/-/jest-message-util-29.7.0.tgz", "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", @@ -11891,7 +11678,7 @@ }, "node_modules/jest-mock": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-mock/-/jest-mock-29.7.0.tgz", "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "license": "MIT", @@ -11906,7 +11693,7 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "resolved": "http://localhost:4873/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "license": "MIT", @@ -11924,7 +11711,7 @@ }, "node_modules/jest-regex-util": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "resolved": "http://localhost:4873/jest-regex-util/-/jest-regex-util-29.6.3.tgz", "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "license": "MIT", @@ -11934,7 +11721,7 @@ }, "node_modules/jest-resolve": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "license": "MIT", @@ -11955,7 +11742,7 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "license": "MIT", @@ -11969,7 +11756,7 @@ }, "node_modules/jest-runner": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-runner/-/jest-runner-29.7.0.tgz", "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "license": "MIT", @@ -12002,7 +11789,7 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-runtime/-/jest-runtime-29.7.0.tgz", "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "license": "MIT", @@ -12036,9 +11823,9 @@ }, "node_modules/jest-runtime/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "resolved": "http://localhost:4873/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -12058,7 +11845,7 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-snapshot/-/jest-snapshot-29.7.0.tgz", "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "license": "MIT", @@ -12090,7 +11877,7 @@ }, "node_modules/jest-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", @@ -12107,9 +11894,9 @@ } }, "node_modules/jest-util/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "http://localhost:4873/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -12121,7 +11908,7 @@ }, "node_modules/jest-validate": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-validate/-/jest-validate-29.7.0.tgz", "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "license": "MIT", @@ -12139,7 +11926,7 @@ }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "resolved": "http://localhost:4873/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", @@ -12152,7 +11939,7 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-watcher/-/jest-watcher-29.7.0.tgz", "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "license": "MIT", @@ -12172,7 +11959,7 @@ }, "node_modules/jest-worker": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "resolved": "http://localhost:4873/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "license": "MIT", @@ -12188,7 +11975,7 @@ }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "resolved": "http://localhost:4873/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", @@ -12204,15 +11991,15 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "resolved": "http://localhost:4873/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "http://localhost:4873/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -12223,7 +12010,7 @@ }, "node_modules/jsesc": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "resolved": "http://localhost:4873/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", @@ -12236,7 +12023,7 @@ }, "node_modules/json-bigint": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "resolved": "http://localhost:4873/json-bigint/-/json-bigint-1.0.0.tgz", "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", "license": "MIT", "dependencies": { @@ -12245,14 +12032,14 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "resolved": "http://localhost:4873/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, "license": "MIT" }, "node_modules/json-diff": { "version": "0.7.4", - "resolved": "https://registry.npmjs.org/json-diff/-/json-diff-0.7.4.tgz", + "resolved": "http://localhost:4873/json-diff/-/json-diff-0.7.4.tgz", "integrity": "sha512-FJ2P+ShDbzu9epF+kCKgoSUhPIUW7Ta7A4XlIT0L5LzgaR/z1TBF1mm0XhRGj8RlA3Xm0j+c/FsWOHDtuoYejA==", "license": "MIT", "dependencies": { @@ -12269,28 +12056,28 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "resolved": "http://localhost:4873/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "resolved": "http://localhost:4873/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "resolved": "http://localhost:4873/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "resolved": "http://localhost:4873/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", @@ -12302,16 +12089,16 @@ } }, "node_modules/jsonc-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", - "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "version": "3.3.1", + "resolved": "http://localhost:4873/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "dev": true, "license": "MIT" }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "6.2.1", + "resolved": "http://localhost:4873/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -12322,12 +12109,12 @@ } }, "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "version": "9.0.3", + "resolved": "http://localhost:4873/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", "license": "MIT", "dependencies": { - "jws": "^3.2.2", + "jws": "^4.0.1", "lodash.includes": "^4.3.0", "lodash.isboolean": "^3.0.3", "lodash.isinteger": "^4.0.4", @@ -12344,9 +12131,9 @@ } }, "node_modules/jwa": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", - "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", + "version": "2.0.1", + "resolved": "http://localhost:4873/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", "license": "MIT", "dependencies": { "buffer-equal-constant-time": "^1.0.1", @@ -12355,18 +12142,18 @@ } }, "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "version": "4.0.1", + "resolved": "http://localhost:4873/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", "license": "MIT", "dependencies": { - "jwa": "^1.4.1", + "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "node_modules/keccak": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", + "resolved": "http://localhost:4873/keccak/-/keccak-3.0.2.tgz", "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", "hasInstallScript": true, "license": "MIT", @@ -12381,13 +12168,13 @@ }, "node_modules/keccak/node_modules/node-addon-api": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "resolved": "http://localhost:4873/node-addon-api/-/node-addon-api-2.0.2.tgz", "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", "license": "MIT" }, "node_modules/keccak/node_modules/node-gyp-build": { "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "resolved": "http://localhost:4873/node-gyp-build/-/node-gyp-build-4.8.4.tgz", "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "license": "MIT", "bin": { @@ -12398,7 +12185,7 @@ }, "node_modules/keyv": { "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "resolved": "http://localhost:4873/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", @@ -12408,7 +12195,7 @@ }, "node_modules/kleur": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "resolved": "http://localhost:4873/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, "license": "MIT", @@ -12418,7 +12205,7 @@ }, "node_modules/koalas": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz", + "resolved": "http://localhost:4873/koalas/-/koalas-1.0.2.tgz", "integrity": "sha512-RYhBbYaTTTHId3l6fnMZc3eGQNW6FVCqMG6AMwA5I1Mafr6AflaXeoi6x3xQuATRotGYRLk6+1ELZH4dstFNOA==", "license": "MIT", "engines": { @@ -12427,13 +12214,13 @@ }, "node_modules/kuler": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "resolved": "http://localhost:4873/kuler/-/kuler-2.0.0.tgz", "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", "license": "MIT" }, "node_modules/leven": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "resolved": "http://localhost:4873/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, "license": "MIT", @@ -12443,7 +12230,7 @@ }, "node_modules/levn": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "resolved": "http://localhost:4873/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", @@ -12463,29 +12250,52 @@ }, "node_modules/limiter": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "resolved": "http://localhost:4873/limiter/-/limiter-1.1.5.tgz", "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" }, "node_modules/lines-and-columns": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "resolved": "http://localhost:4873/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, "license": "MIT" }, + "node_modules/load-esm": { + "version": "1.0.3", + "resolved": "http://localhost:4873/load-esm/-/load-esm-1.0.3.tgz", + "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + }, + { + "type": "buymeacoffee", + "url": "https://buymeacoffee.com/borewit" + } + ], + "license": "MIT", + "engines": { + "node": ">=13.2.0" + } + }, "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "version": "4.3.2", + "resolved": "http://localhost:4873/loader-runner/-/loader-runner-4.3.2.tgz", + "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", "dev": true, "license": "MIT", "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "resolved": "http://localhost:4873/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", @@ -12500,44 +12310,44 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.18.1", + "resolved": "http://localhost:4873/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "version": "4.18.1", + "resolved": "http://localhost:4873/lodash-es/-/lodash-es-4.18.1.tgz", + "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", "license": "MIT" }, "node_modules/lodash.defaults": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "resolved": "http://localhost:4873/lodash.defaults/-/lodash.defaults-4.2.0.tgz", "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", "license": "MIT" }, "node_modules/lodash.includes": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "resolved": "http://localhost:4873/lodash.includes/-/lodash.includes-4.3.0.tgz", "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "license": "MIT" }, "node_modules/lodash.isarguments": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "resolved": "http://localhost:4873/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", "license": "MIT" }, "node_modules/lodash.isboolean": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "resolved": "http://localhost:4873/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "license": "MIT" }, "node_modules/lodash.isequal": { "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "resolved": "http://localhost:4873/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", "dev": true, @@ -12545,64 +12355,63 @@ }, "node_modules/lodash.isinteger": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "resolved": "http://localhost:4873/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "license": "MIT" }, "node_modules/lodash.isnumber": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "resolved": "http://localhost:4873/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "resolved": "http://localhost:4873/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "resolved": "http://localhost:4873/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "resolved": "http://localhost:4873/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true, "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "resolved": "http://localhost:4873/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, "license": "MIT" }, "node_modules/lodash.omit": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", - "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==", - "deprecated": "This package is deprecated. Use destructuring assignment syntax instead.", + "version": "4.18.0", + "resolved": "http://localhost:4873/lodash.omit/-/lodash.omit-4.18.0.tgz", + "integrity": "sha512-hZXIupXdHtocTnvIJ2aCd2vxKYtxex6gbiGuPvgBRnFQO9yu3AtmDAbVuCXcSsQx3INo/1g71OktlFFA/ES8Xg==", "license": "MIT" }, "node_modules/lodash.once": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "resolved": "http://localhost:4873/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "license": "MIT" }, "node_modules/lodash.sortby": { "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "resolved": "http://localhost:4873/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "resolved": "http://localhost:4873/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", @@ -12619,7 +12428,7 @@ }, "node_modules/logform": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", + "resolved": "http://localhost:4873/logform/-/logform-2.7.0.tgz", "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", "license": "MIT", "dependencies": { @@ -12636,7 +12445,7 @@ }, "node_modules/logform/node_modules/@colors/colors": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "resolved": "http://localhost:4873/@colors/colors/-/colors-1.6.0.tgz", "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", "license": "MIT", "engines": { @@ -12645,7 +12454,7 @@ }, "node_modules/loglevel": { "version": "1.9.2", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "resolved": "http://localhost:4873/loglevel/-/loglevel-1.9.2.tgz", "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", "license": "MIT", "engines": { @@ -12658,22 +12467,22 @@ }, "node_modules/long": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "resolved": "http://localhost:4873/long/-/long-4.0.0.tgz", "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", "license": "Apache-2.0" }, "node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "license": "ISC", + "version": "11.3.5", + "resolved": "http://localhost:4873/lru-cache/-/lru-cache-11.3.5.tgz", + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=12" + "node": "20 || >=22" } }, "node_modules/lru-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "resolved": "http://localhost:4873/lru-queue/-/lru-queue-0.1.0.tgz", "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", "license": "MIT", "dependencies": { @@ -12681,9 +12490,9 @@ } }, "node_modules/lru.min": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.2.tgz", - "integrity": "sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg==", + "version": "1.1.4", + "resolved": "http://localhost:4873/lru.min/-/lru.min-1.1.4.tgz", + "integrity": "sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==", "license": "MIT", "engines": { "bun": ">=1.0.0", @@ -12696,30 +12505,27 @@ } }, "node_modules/luxon": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.6.1.tgz", - "integrity": "sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==", + "version": "3.7.2", + "resolved": "http://localhost:4873/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/magic-string": { - "version": "0.30.8", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", - "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "version": "0.30.17", + "resolved": "http://localhost:4873/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/make-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "resolved": "http://localhost:4873/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", @@ -12735,14 +12541,14 @@ }, "node_modules/make-error": { "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "resolved": "http://localhost:4873/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "devOptional": true, "license": "ISC" }, "node_modules/makeerror": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "resolved": "http://localhost:4873/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "license": "BSD-3-Clause", @@ -12752,7 +12558,7 @@ }, "node_modules/math-intrinsics": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "resolved": "http://localhost:4873/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "license": "MIT", "engines": { @@ -12761,7 +12567,7 @@ }, "node_modules/md5.js": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "resolved": "http://localhost:4873/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "license": "MIT", "dependencies": { @@ -12771,17 +12577,17 @@ } }, "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "version": "1.1.0", + "resolved": "http://localhost:4873/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/memfs": { "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "resolved": "http://localhost:4873/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, "license": "Unlicense", @@ -12794,7 +12600,7 @@ }, "node_modules/memoizee": { "version": "0.4.17", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", + "resolved": "http://localhost:4873/memoizee/-/memoizee-0.4.17.tgz", "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", "license": "ISC", "dependencies": { @@ -12813,29 +12619,32 @@ }, "node_modules/memory-pager": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "resolved": "http://localhost:4873/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", "license": "MIT" }, "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "version": "2.0.0", + "resolved": "http://localhost:4873/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "resolved": "http://localhost:4873/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "resolved": "http://localhost:4873/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "license": "MIT", "engines": { @@ -12844,8 +12653,9 @@ }, "node_modules/methods": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "resolved": "http://localhost:4873/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -12853,7 +12663,7 @@ }, "node_modules/micromatch": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "resolved": "http://localhost:4873/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "license": "MIT", "dependencies": { @@ -12865,9 +12675,9 @@ } }, "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "http://localhost:4873/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -12877,20 +12687,21 @@ } }, "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "version": "2.6.0", + "resolved": "http://localhost:4873/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, "license": "MIT", "bin": { "mime": "cli.js" }, "engines": { - "node": ">=4" + "node": ">=4.0.0" } }, "node_modules/mime-db": { "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "resolved": "http://localhost:4873/mime-db/-/mime-db-1.54.0.tgz", "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { @@ -12898,29 +12709,24 @@ } }, "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "version": "3.0.2", + "resolved": "http://localhost:4873/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "resolved": "http://localhost:4873/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", @@ -12930,7 +12736,7 @@ }, "node_modules/min-indent": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "resolved": "http://localhost:4873/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, "license": "MIT", @@ -12939,9 +12745,9 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "http://localhost:4873/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -12953,43 +12759,32 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "resolved": "http://localhost:4873/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", + "version": "7.1.3", + "resolved": "http://localhost:4873/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/module-details-from-path": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "resolved": "http://localhost:4873/module-details-from-path/-/module-details-from-path-1.0.4.tgz", "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", "license": "MIT" }, "node_modules/moment": { "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "resolved": "http://localhost:4873/moment/-/moment-2.30.1.tgz", "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "license": "MIT", "engines": { @@ -12997,14 +12792,14 @@ } }, "node_modules/mongodb": { - "version": "6.17.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.17.0.tgz", - "integrity": "sha512-neerUzg/8U26cgruLysKEjJvoNSXhyID3RvzvdcpsIi2COYM3FS3o9nlH7fxFtefTb942dX3W9i37oPfCVj4wA==", + "version": "6.21.0", + "resolved": "http://localhost:4873/mongodb/-/mongodb-6.21.0.tgz", + "integrity": "sha512-URyb/VXMjJ4da46OeSXg+puO39XH9DeQpWCslifrRn9JWugy0D+DvvBvkm2WxmHe61O/H19JM66p1z7RHVkZ6A==", "license": "Apache-2.0", "dependencies": { - "@mongodb-js/saslprep": "^1.1.9", + "@mongodb-js/saslprep": "^1.3.0", "bson": "^6.10.4", - "mongodb-connection-string-url": "^3.0.0" + "mongodb-connection-string-url": "^3.0.2" }, "engines": { "node": ">=16.20.1" @@ -13015,7 +12810,7 @@ "gcp-metadata": "^5.2.0", "kerberos": "^2.0.1", "mongodb-client-encryption": ">=6.0.0 <7", - "snappy": "^7.2.2", + "snappy": "^7.3.2", "socks": "^2.7.1" }, "peerDependenciesMeta": { @@ -13044,7 +12839,7 @@ }, "node_modules/mongodb-connection-string-url": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", + "resolved": "http://localhost:4873/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==", "license": "Apache-2.0", "dependencies": { @@ -13054,38 +12849,85 @@ }, "node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "resolved": "http://localhost:4873/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/multer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.1.tgz", - "integrity": "sha512-Ug8bXeTIUlxurg8xLTEskKShvcKDZALo1THEX5E41pYCD2sCVub5/kIRIGqWNoqV6szyLyQKV6mD4QUrWE5GCQ==", + "version": "2.1.1", + "resolved": "http://localhost:4873/multer/-/multer-2.1.1.tgz", + "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", "license": "MIT", "dependencies": { "append-field": "^1.0.0", "busboy": "^1.6.0", "concat-stream": "^2.0.0", - "mkdirp": "^0.5.6", - "object-assign": "^4.1.1", - "type-is": "^1.6.18", - "xtend": "^4.0.2" + "type-is": "^1.6.18" }, "engines": { "node": ">= 10.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/multer/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "http://localhost:4873/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/type-is": { + "version": "1.6.18", + "resolved": "http://localhost:4873/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" } }, "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "version": "2.0.0", + "resolved": "http://localhost:4873/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } }, "node_modules/mutexify": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.4.0.tgz", + "resolved": "http://localhost:4873/mutexify/-/mutexify-1.4.0.tgz", "integrity": "sha512-pbYSsOrSB/AKN5h/WzzLRMFgZhClWccf2XIB4RSMC8JbquiB0e0/SH5AIfdQMdyHmYtv4seU7yV/TvAwPLJ1Yg==", "license": "MIT", "dependencies": { @@ -13093,85 +12935,75 @@ } }, "node_modules/mysql2": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.1.tgz", - "integrity": "sha512-7ytuPQJjQB8TNAYX/H2yhL+iQOnIBjAMam361R7UAL0lOVXWjtdrmoL9HYKqKoLp/8UUTRcvo1QPvK9KL7wA8w==", + "version": "3.22.3", + "resolved": "http://localhost:4873/mysql2/-/mysql2-3.22.3.tgz", + "integrity": "sha512-uWWxvZSRvRhtBdh2CdcuK83YcOfPdmEeEYB069bAmPnV93QApDGVPuvCQOLjlh7tYHEWdgQPrn6kosDxHBVLkA==", "license": "MIT", "dependencies": { - "aws-ssl-profiles": "^1.1.1", + "aws-ssl-profiles": "^1.1.2", "denque": "^2.1.0", "generate-function": "^2.3.1", - "iconv-lite": "^0.6.3", - "long": "^5.2.1", - "lru.min": "^1.0.0", - "named-placeholders": "^1.1.3", - "seq-queue": "^0.0.5", - "sqlstring": "^2.3.2" + "iconv-lite": "^0.7.2", + "long": "^5.3.2", + "lru.min": "^1.1.4", + "named-placeholders": "^1.1.6", + "sql-escaper": "^1.3.3" }, "engines": { "node": ">= 8.0" - } - }, - "node_modules/mysql2/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@types/node": ">= 8" } }, "node_modules/mysql2/node_modules/long": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "resolved": "http://localhost:4873/long/-/long-5.3.2.tgz", "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "license": "Apache-2.0" }, "node_modules/named-placeholders": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", - "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", + "version": "1.1.6", + "resolved": "http://localhost:4873/named-placeholders/-/named-placeholders-1.1.6.tgz", + "integrity": "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==", "license": "MIT", "dependencies": { - "lru-cache": "^7.14.1" + "lru.min": "^1.1.0" }, "engines": { - "node": ">=12.0.0" + "node": ">=8.0.0" } }, "node_modules/nanoassert": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", + "resolved": "http://localhost:4873/nanoassert/-/nanoassert-1.1.0.tgz", "integrity": "sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ==", "license": "ISC" }, "node_modules/nanoclone": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", + "resolved": "http://localhost:4873/nanoclone/-/nanoclone-0.2.1.tgz", "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==", "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "resolved": "http://localhost:4873/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, "license": "MIT" }, "node_modules/natural-compare-lite": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "resolved": "http://localhost:4873/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true, "license": "MIT" }, "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "version": "1.0.0", + "resolved": "http://localhost:4873/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -13179,14 +13011,14 @@ }, "node_modules/neo-async": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "resolved": "http://localhost:4873/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, "license": "MIT" }, "node_modules/nest-winston": { "version": "1.10.2", - "resolved": "https://registry.npmjs.org/nest-winston/-/nest-winston-1.10.2.tgz", + "resolved": "http://localhost:4873/nest-winston/-/nest-winston-1.10.2.tgz", "integrity": "sha512-Z9IzL/nekBOF/TEwBHUJDiDPMaXUcFquUQOFavIRet6xF0EbuWnOzslyN/ksgzG+fITNgXhMdrL/POp9SdaFxA==", "license": "MIT", "dependencies": { @@ -13199,25 +13031,26 @@ }, "node_modules/next-tick": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "resolved": "http://localhost:4873/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "license": "ISC" }, "node_modules/node-abort-controller": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "resolved": "http://localhost:4873/node-abort-controller/-/node-abort-controller-3.1.1.tgz", "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true, "license": "MIT" }, "node_modules/node-addon-api": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "resolved": "http://localhost:4873/node-addon-api/-/node-addon-api-6.1.0.tgz", "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", "license": "MIT" }, "node_modules/node-emoji": { "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "resolved": "http://localhost:4873/node-emoji/-/node-emoji-1.11.0.tgz", "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, "license": "MIT", @@ -13227,7 +13060,7 @@ }, "node_modules/node-fetch": { "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "resolved": "http://localhost:4873/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", "dependencies": { @@ -13247,19 +13080,19 @@ }, "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "resolved": "http://localhost:4873/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "resolved": "http://localhost:4873/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "license": "BSD-2-Clause" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "resolved": "http://localhost:4873/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "license": "MIT", "dependencies": { @@ -13269,7 +13102,7 @@ }, "node_modules/node-gyp-build": { "version": "3.9.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.9.0.tgz", + "resolved": "http://localhost:4873/node-gyp-build/-/node-gyp-build-3.9.0.tgz", "integrity": "sha512-zLcTg6P4AbcHPq465ZMFNXx7XpKKJh+7kkN699NiQWisR2uWYOWNWqRHAmbnmKiL4e9aLSlmy5U7rEMUXV59+A==", "license": "MIT", "bin": { @@ -13280,14 +13113,14 @@ }, "node_modules/node-int64": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "resolved": "http://localhost:4873/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true, "license": "MIT" }, "node_modules/node-object-hash": { "version": "2.3.10", - "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-2.3.10.tgz", + "resolved": "http://localhost:4873/node-object-hash/-/node-object-hash-2.3.10.tgz", "integrity": "sha512-jY5dPJzw6NHd/KPSfPKJ+IHoFS81/tJ43r34ZeNMXGzCOM8jwQDCD12HYayKIB6MuznrnqIYy2e891NA2g0ibA==", "license": "MIT", "engines": { @@ -13295,15 +13128,15 @@ } }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "version": "2.0.38", + "resolved": "http://localhost:4873/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", "dev": true, "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "resolved": "http://localhost:4873/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "license": "MIT", "engines": { @@ -13312,7 +13145,7 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "resolved": "http://localhost:4873/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", @@ -13325,7 +13158,7 @@ }, "node_modules/object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "resolved": "http://localhost:4873/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "license": "MIT", "engines": { @@ -13334,7 +13167,7 @@ }, "node_modules/object-hash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "resolved": "http://localhost:4873/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "license": "MIT", "engines": { @@ -13343,7 +13176,7 @@ }, "node_modules/object-inspect": { "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "resolved": "http://localhost:4873/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "license": "MIT", "engines": { @@ -13355,7 +13188,7 @@ }, "node_modules/on-finished": { "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "resolved": "http://localhost:4873/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "license": "MIT", "dependencies": { @@ -13366,9 +13199,9 @@ } }, "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "version": "1.1.0", + "resolved": "http://localhost:4873/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -13376,9 +13209,8 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "resolved": "http://localhost:4873/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -13386,7 +13218,7 @@ }, "node_modules/one-time": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "resolved": "http://localhost:4873/one-time/-/one-time-1.0.0.tgz", "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", "license": "MIT", "dependencies": { @@ -13395,7 +13227,7 @@ }, "node_modules/onetime": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "resolved": "http://localhost:4873/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", @@ -13411,7 +13243,7 @@ }, "node_modules/opentracing": { "version": "0.14.7", - "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz", + "resolved": "http://localhost:4873/opentracing/-/opentracing-0.14.7.tgz", "integrity": "sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==", "license": "Apache-2.0", "engines": { @@ -13420,7 +13252,7 @@ }, "node_modules/optionator": { "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "resolved": "http://localhost:4873/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", @@ -13438,7 +13270,7 @@ }, "node_modules/ora": { "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "resolved": "http://localhost:4873/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "license": "MIT", @@ -13460,19 +13292,9 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "resolved": "http://localhost:4873/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "license": "MIT", "dependencies": { @@ -13487,7 +13309,7 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "resolved": "http://localhost:4873/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", @@ -13503,7 +13325,7 @@ }, "node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "resolved": "http://localhost:4873/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "license": "MIT", @@ -13513,13 +13335,13 @@ }, "node_modules/package-json-from-dist": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "resolved": "http://localhost:4873/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "license": "BlueOak-1.0.0" }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "resolved": "http://localhost:4873/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", @@ -13532,7 +13354,7 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "resolved": "http://localhost:4873/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", @@ -13551,7 +13373,7 @@ }, "node_modules/parseurl": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "resolved": "http://localhost:4873/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "license": "MIT", "engines": { @@ -13560,17 +13382,32 @@ }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "resolved": "http://localhost:4873/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/path-expression-matcher": { + "version": "1.5.0", + "resolved": "http://localhost:4873/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", + "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "http://localhost:4873/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", @@ -13580,7 +13417,7 @@ }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "resolved": "http://localhost:4873/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", "engines": { @@ -13589,42 +13426,41 @@ }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "resolved": "http://localhost:4873/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "version": "2.0.2", + "resolved": "http://localhost:4873/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, "node_modules/path-to-regexp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", - "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", - "license": "MIT" + "version": "8.4.2", + "resolved": "http://localhost:4873/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "resolved": "http://localhost:4873/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", @@ -13633,62 +13469,31 @@ } }, "node_modules/pbkdf2": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.3.tgz", - "integrity": "sha512-wfRLBZ0feWRhCIkoMB6ete7czJcnNnqRpcoWQBLqatqXXmelSRqfdDK4F3u9T2s2cXas/hQJcryI/4lAL+XTlA==", + "version": "3.1.5", + "resolved": "http://localhost:4873/pbkdf2/-/pbkdf2-3.1.5.tgz", + "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", "license": "MIT", "dependencies": { - "create-hash": "~1.1.3", + "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "ripemd160": "=2.0.1", + "ripemd160": "^2.0.3", "safe-buffer": "^5.2.1", - "sha.js": "^2.4.11", - "to-buffer": "^1.2.0" + "sha.js": "^2.4.12", + "to-buffer": "^1.2.1" }, "engines": { - "node": ">=0.12" - } - }, - "node_modules/pbkdf2/node_modules/create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha512-snRpch/kwQhcdlnZKYanNF1m0RDlrCdSKQaH87w1FCFPVPNCQ/Il9QJKAX2jVBZddRdaHBMC+zXa9Gw9tmkNUA==", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "sha.js": "^2.4.0" - } - }, - "node_modules/pbkdf2/node_modules/hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha512-0TROgQ1/SxE6KmxWSvXHvRj90/Xo1JvZShofnYF+f6ZsGtR4eES7WfrQzPalmyagfKZCXpVnitiRebZulWsbiw==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1" - } - }, - "node_modules/pbkdf2/node_modules/ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha512-J7f4wutN8mdbV08MJnXibYpCOPHR+yzy+iQ/AsjMv2j8cLavQ8VGagDFUwwTAdF8FmRKVeNpbTTEwNHCW1g94w==", - "license": "MIT", - "dependencies": { - "hash-base": "^2.0.0", - "inherits": "^2.0.1" + "node": ">= 0.10" } }, "node_modules/pg": { - "version": "8.16.3", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", - "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", + "version": "8.20.0", + "resolved": "http://localhost:4873/pg/-/pg-8.20.0.tgz", + "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", "license": "MIT", "dependencies": { - "pg-connection-string": "^2.9.1", - "pg-pool": "^3.10.1", - "pg-protocol": "^1.10.3", + "pg-connection-string": "^2.12.0", + "pg-pool": "^3.13.0", + "pg-protocol": "^1.13.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, @@ -13696,7 +13501,7 @@ "node": ">= 16.0.0" }, "optionalDependencies": { - "pg-cloudflare": "^1.2.7" + "pg-cloudflare": "^1.3.0" }, "peerDependencies": { "pg-native": ">=3.0.1" @@ -13708,21 +13513,21 @@ } }, "node_modules/pg-cloudflare": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz", - "integrity": "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==", + "version": "1.3.0", + "resolved": "http://localhost:4873/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", + "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", "license": "MIT", "optional": true }, "node_modules/pg-connection-string": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz", - "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==", + "version": "2.12.0", + "resolved": "http://localhost:4873/pg-connection-string/-/pg-connection-string-2.12.0.tgz", + "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", "license": "MIT" }, "node_modules/pg-int8": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "resolved": "http://localhost:4873/pg-int8/-/pg-int8-1.0.1.tgz", "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", "license": "ISC", "engines": { @@ -13730,23 +13535,23 @@ } }, "node_modules/pg-pool": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.1.tgz", - "integrity": "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==", + "version": "3.13.0", + "resolved": "http://localhost:4873/pg-pool/-/pg-pool-3.13.0.tgz", + "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", "license": "MIT", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", - "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", + "version": "1.13.0", + "resolved": "http://localhost:4873/pg-protocol/-/pg-protocol-1.13.0.tgz", + "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", "license": "MIT" }, "node_modules/pg-types": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "resolved": "http://localhost:4873/pg-types/-/pg-types-2.2.0.tgz", "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", "license": "MIT", "dependencies": { @@ -13762,7 +13567,7 @@ }, "node_modules/pgpass": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "resolved": "http://localhost:4873/pgpass/-/pgpass-1.0.5.tgz", "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", "license": "MIT", "dependencies": { @@ -13771,15 +13576,15 @@ }, "node_modules/picocolors": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "resolved": "http://localhost:4873/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", - "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", + "version": "4.0.4", + "resolved": "http://localhost:4873/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -13791,7 +13596,7 @@ }, "node_modules/pirates": { "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "resolved": "http://localhost:4873/pirates/-/pirates-4.0.7.tgz", "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, "license": "MIT", @@ -13801,7 +13606,7 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "resolved": "http://localhost:4873/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "license": "MIT", @@ -13814,7 +13619,7 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "resolved": "http://localhost:4873/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", @@ -13828,7 +13633,7 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "resolved": "http://localhost:4873/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", @@ -13841,7 +13646,7 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "resolved": "http://localhost:4873/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", @@ -13857,7 +13662,7 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "resolved": "http://localhost:4873/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", @@ -13870,7 +13675,7 @@ }, "node_modules/pluralize": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "resolved": "http://localhost:4873/pluralize/-/pluralize-8.0.0.tgz", "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, "license": "MIT", @@ -13880,7 +13685,7 @@ }, "node_modules/possible-typed-array-names": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "resolved": "http://localhost:4873/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "license": "MIT", "engines": { @@ -13889,7 +13694,7 @@ }, "node_modules/postgres-array": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "resolved": "http://localhost:4873/postgres-array/-/postgres-array-2.0.0.tgz", "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", "license": "MIT", "engines": { @@ -13897,9 +13702,9 @@ } }, "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "version": "1.0.1", + "resolved": "http://localhost:4873/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13907,7 +13712,7 @@ }, "node_modules/postgres-date": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "resolved": "http://localhost:4873/postgres-date/-/postgres-date-1.0.7.tgz", "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", "license": "MIT", "engines": { @@ -13916,7 +13721,7 @@ }, "node_modules/postgres-interval": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "resolved": "http://localhost:4873/postgres-interval/-/postgres-interval-1.2.0.tgz", "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", "license": "MIT", "dependencies": { @@ -13927,14 +13732,14 @@ } }, "node_modules/pprof-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pprof-format/-/pprof-format-2.1.0.tgz", - "integrity": "sha512-0+G5bHH0RNr8E5hoZo/zJYsL92MhkZjwrHp3O2IxmY8RJL9ooKeuZ8Tm0ZNBw5sGZ9TiM71sthTjWoR2Vf5/xw==", + "version": "2.2.1", + "resolved": "http://localhost:4873/pprof-format/-/pprof-format-2.2.1.tgz", + "integrity": "sha512-p4tVN7iK19ccDqQv8heyobzUmbHyds4N2FI6aBMcXz6y99MglTWDxIyhFkNaLeEXs6IFUEzT0zya0icbSLLY0g==", "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "resolved": "http://localhost:4873/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", @@ -13943,25 +13748,25 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.8.3", + "resolved": "http://localhost:4873/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "version": "1.0.1", + "resolved": "http://localhost:4873/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", "dev": true, "license": "MIT", "dependencies": { @@ -13973,7 +13778,7 @@ }, "node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "resolved": "http://localhost:4873/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", @@ -13988,7 +13793,7 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "resolved": "http://localhost:4873/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", @@ -13999,9 +13804,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "http://localhost:4873/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, "node_modules/prom-client": { "version": "14.2.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.2.0.tgz", + "resolved": "http://localhost:4873/prom-client/-/prom-client-14.2.0.tgz", "integrity": "sha512-sF308EhTenb/pDRPakm+WgiN+VdM/T1RaHj1x+MvAuT8UiQP8JmOEbxVqtkbfR4LrvOg5n7ic01kRBDGXjYikA==", "license": "Apache-2.0", "dependencies": { @@ -14013,13 +13824,13 @@ }, "node_modules/promise-breaker": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-6.0.0.tgz", + "resolved": "http://localhost:4873/promise-breaker/-/promise-breaker-6.0.0.tgz", "integrity": "sha512-BthzO9yTPswGf7etOBiHCVuugs2N01/Q/94dIPls48z2zCmrnDptUUZzfIb+41xq0MnYZ/BzmOd6ikDR4ibNZA==", "license": "MIT" }, "node_modules/prompts": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "resolved": "http://localhost:4873/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "license": "MIT", @@ -14033,27 +13844,27 @@ }, "node_modules/property-expr": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "resolved": "http://localhost:4873/property-expr/-/property-expr-2.0.6.tgz", "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", "license": "MIT" }, "node_modules/protobufjs": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz", - "integrity": "sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==", + "version": "7.5.6", + "resolved": "http://localhost:4873/protobufjs/-/protobufjs-7.5.6.tgz", + "integrity": "sha512-M71sTMB146U3u0di3yup8iM+zv8yPRNQVr1KK4tyBitl3qFvEGucq/rGDRShD2rsJhtN02RJaJ7j5X5hmy8SJg==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", + "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", + "@protobufjs/inquire": "^1.1.1", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", + "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.0.0" }, @@ -14063,13 +13874,13 @@ }, "node_modules/protobufjs/node_modules/long": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "resolved": "http://localhost:4873/long/-/long-5.3.2.tgz", "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "license": "Apache-2.0" }, "node_modules/proxy-addr": { "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "resolved": "http://localhost:4873/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "license": "MIT", "dependencies": { @@ -14081,14 +13892,17 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" + "version": "2.1.0", + "resolved": "http://localhost:4873/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/punycode": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "resolved": "http://localhost:4873/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "license": "MIT", "engines": { @@ -14097,7 +13911,7 @@ }, "node_modules/pure-rand": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "resolved": "http://localhost:4873/pure-rand/-/pure-rand-6.1.0.tgz", "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ @@ -14113,12 +13927,12 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.15.1", + "resolved": "http://localhost:4873/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -14129,13 +13943,13 @@ }, "node_modules/querystringify": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "resolved": "http://localhost:4873/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "resolved": "http://localhost:4873/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { @@ -14155,13 +13969,13 @@ }, "node_modules/queue-tick": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "resolved": "http://localhost:4873/queue-tick/-/queue-tick-1.0.1.tgz", "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", "license": "MIT" }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "resolved": "http://localhost:4873/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "license": "MIT", "dependencies": { @@ -14170,7 +13984,7 @@ }, "node_modules/range-parser": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "resolved": "http://localhost:4873/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "license": "MIT", "engines": { @@ -14178,30 +13992,30 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "3.0.2", + "resolved": "http://localhost:4873/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.10" } }, "node_modules/react-is": { "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "resolved": "http://localhost:4873/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, "node_modules/readable-stream": { "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "resolved": "http://localhost:4873/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", "dependencies": { @@ -14214,34 +14028,21 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, + "version": "4.1.2", + "resolved": "http://localhost:4873/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 14.18.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/redent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "resolved": "http://localhost:4873/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, "license": "MIT", @@ -14255,7 +14056,7 @@ }, "node_modules/redis": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz", + "resolved": "http://localhost:4873/redis/-/redis-3.1.2.tgz", "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==", "license": "MIT", "dependencies": { @@ -14274,13 +14075,13 @@ }, "node_modules/redis-commands": { "version": "1.7.0", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", + "resolved": "http://localhost:4873/redis-commands/-/redis-commands-1.7.0.tgz", "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==", "license": "MIT" }, "node_modules/redis-errors": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "resolved": "http://localhost:4873/redis-errors/-/redis-errors-1.2.0.tgz", "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", "license": "MIT", "engines": { @@ -14289,7 +14090,7 @@ }, "node_modules/redis-parser": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "resolved": "http://localhost:4873/redis-parser/-/redis-parser-3.0.0.tgz", "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", "license": "MIT", "dependencies": { @@ -14301,7 +14102,7 @@ }, "node_modules/redis/node_modules/denque": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", + "resolved": "http://localhost:4873/denque/-/denque-1.5.1.tgz", "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", "license": "Apache-2.0", "engines": { @@ -14309,30 +14110,20 @@ } }, "node_modules/reflect-metadata": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", - "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", + "version": "0.2.2", + "resolved": "http://localhost:4873/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", "license": "Apache-2.0" }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, "node_modules/request-ip": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-3.3.0.tgz", + "resolved": "http://localhost:4873/request-ip/-/request-ip-3.3.0.tgz", "integrity": "sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==", "license": "MIT" }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "resolved": "http://localhost:4873/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "license": "MIT", "engines": { @@ -14341,7 +14132,7 @@ }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "resolved": "http://localhost:4873/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "license": "MIT", @@ -14351,18 +14142,19 @@ }, "node_modules/requires-port": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "resolved": "http://localhost:4873/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.12", + "resolved": "http://localhost:4873/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "es-errors": "^1.3.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -14378,7 +14170,7 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "resolved": "http://localhost:4873/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "license": "MIT", @@ -14391,7 +14183,7 @@ }, "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "resolved": "http://localhost:4873/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", @@ -14401,7 +14193,7 @@ }, "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "resolved": "http://localhost:4873/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", @@ -14411,7 +14203,7 @@ }, "node_modules/resolve.exports": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "resolved": "http://localhost:4873/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, "license": "MIT", @@ -14421,7 +14213,7 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "resolved": "http://localhost:4873/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "license": "MIT", @@ -14435,14 +14227,14 @@ }, "node_modules/restore-cursor/node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "resolved": "http://localhost:4873/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/retry": { "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "resolved": "http://localhost:4873/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "license": "MIT", "engines": { @@ -14451,7 +14243,7 @@ }, "node_modules/reusify": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "resolved": "http://localhost:4873/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "license": "MIT", "engines": { @@ -14461,13 +14253,13 @@ }, "node_modules/rfdc": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "resolved": "http://localhost:4873/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "license": "MIT" }, "node_modules/rimraf": { "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "resolved": "http://localhost:4873/rimraf/-/rimraf-5.0.10.tgz", "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", "license": "ISC", "dependencies": { @@ -14480,29 +14272,111 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "2.1.0", + "resolved": "http://localhost:4873/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "10.5.0", + "resolved": "http://localhost:4873/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "http://localhost:4873/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "http://localhost:4873/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "http://localhost:4873/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "version": "2.0.3", + "resolved": "http://localhost:4873/ripemd160/-/ripemd160-2.0.3.tgz", + "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", "license": "MIT", "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "hash-base": "^3.1.2", + "inherits": "^2.0.4" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, + "node_modules/router": { + "version": "2.2.0", + "resolved": "http://localhost:4873/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">= 18" } }, + "node_modules/router/node_modules/is-promise": { + "version": "4.0.0", + "resolved": "http://localhost:4873/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "resolved": "http://localhost:4873/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { @@ -14525,7 +14399,7 @@ }, "node_modules/run-script-os": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.6.tgz", + "resolved": "http://localhost:4873/run-script-os/-/run-script-os-1.1.6.tgz", "integrity": "sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==", "dev": true, "license": "MIT", @@ -14536,7 +14410,7 @@ }, "node_modules/rxjs": { "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "resolved": "http://localhost:4873/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "license": "Apache-2.0", "dependencies": { @@ -14545,7 +14419,7 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "resolved": "http://localhost:4873/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { @@ -14565,7 +14439,7 @@ }, "node_modules/safe-stable-stringify": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "resolved": "http://localhost:4873/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", "license": "MIT", "engines": { @@ -14574,13 +14448,13 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "resolved": "http://localhost:4873/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, "node_modules/schema-utils": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "resolved": "http://localhost:4873/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "license": "MIT", @@ -14598,9 +14472,9 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.15.0", + "resolved": "http://localhost:4873/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", "dependencies": { @@ -14616,7 +14490,7 @@ }, "node_modules/schema-utils/node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "resolved": "http://localhost:4873/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "license": "MIT", @@ -14626,27 +14500,27 @@ }, "node_modules/schema-utils/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "resolved": "http://localhost:4873/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, "node_modules/scryptsy": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", + "resolved": "http://localhost:4873/scryptsy/-/scryptsy-2.1.0.tgz", "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==", "license": "MIT" }, "node_modules/semifies": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semifies/-/semifies-1.0.0.tgz", + "resolved": "http://localhost:4873/semifies/-/semifies-1.0.0.tgz", "integrity": "sha512-xXR3KGeoxTNWPD4aBvL5NUpMTT7WMANr3EWnaS190QVkY52lqqcVRD7Q05UVbBhiWDGWMlJEUam9m7uFFGVScw==", "license": "Apache-2.0" }, "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "http://localhost:4873/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -14656,86 +14530,53 @@ } }, "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "version": "1.2.1", + "resolved": "http://localhost:4873/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/seq-queue": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", - "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "2.2.1", + "resolved": "http://localhost:4873/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", "license": "MIT", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/set-function-length": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "resolved": "http://localhost:4873/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "license": "MIT", "dependencies": { @@ -14752,33 +14593,40 @@ }, "node_modules/setprototypeof": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "resolved": "http://localhost:4873/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "version": "2.4.12", + "resolved": "http://localhost:4873/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", "license": "(MIT AND BSD-3-Clause)", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" }, "bin": { "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/sharp": { - "version": "0.34.2", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.2.tgz", - "integrity": "sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==", + "version": "0.34.5", + "resolved": "http://localhost:4873/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.4", - "semver": "^7.7.2" + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -14787,32 +14635,35 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.2", - "@img/sharp-darwin-x64": "0.34.2", - "@img/sharp-libvips-darwin-arm64": "1.1.0", - "@img/sharp-libvips-darwin-x64": "1.1.0", - "@img/sharp-libvips-linux-arm": "1.1.0", - "@img/sharp-libvips-linux-arm64": "1.1.0", - "@img/sharp-libvips-linux-ppc64": "1.1.0", - "@img/sharp-libvips-linux-s390x": "1.1.0", - "@img/sharp-libvips-linux-x64": "1.1.0", - "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", - "@img/sharp-libvips-linuxmusl-x64": "1.1.0", - "@img/sharp-linux-arm": "0.34.2", - "@img/sharp-linux-arm64": "0.34.2", - "@img/sharp-linux-s390x": "0.34.2", - "@img/sharp-linux-x64": "0.34.2", - "@img/sharp-linuxmusl-arm64": "0.34.2", - "@img/sharp-linuxmusl-x64": "0.34.2", - "@img/sharp-wasm32": "0.34.2", - "@img/sharp-win32-arm64": "0.34.2", - "@img/sharp-win32-ia32": "0.34.2", - "@img/sharp-win32-x64": "0.34.2" + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" } }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "resolved": "http://localhost:4873/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "license": "MIT", "dependencies": { @@ -14824,7 +14675,7 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "resolved": "http://localhost:4873/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "license": "MIT", "engines": { @@ -14833,7 +14684,7 @@ }, "node_modules/shell-quote": { "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "resolved": "http://localhost:4873/shell-quote/-/shell-quote-1.8.3.tgz", "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "license": "MIT", "engines": { @@ -14845,7 +14696,7 @@ }, "node_modules/side-channel": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "resolved": "http://localhost:4873/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "license": "MIT", "dependencies": { @@ -14863,13 +14714,13 @@ } }, "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "version": "1.0.1", + "resolved": "http://localhost:4873/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" + "object-inspect": "^1.13.4" }, "engines": { "node": ">= 0.4" @@ -14880,7 +14731,7 @@ }, "node_modules/side-channel-map": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "resolved": "http://localhost:4873/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "license": "MIT", "dependencies": { @@ -14898,7 +14749,7 @@ }, "node_modules/side-channel-weakmap": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "resolved": "http://localhost:4873/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "license": "MIT", "dependencies": { @@ -14917,7 +14768,7 @@ }, "node_modules/signal-exit": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "resolved": "http://localhost:4873/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "license": "ISC", "engines": { @@ -14928,13 +14779,15 @@ } }, "node_modules/simple-git": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.28.0.tgz", - "integrity": "sha512-Rs/vQRwsn1ILH1oBUy8NucJlXmnnLeLCfcvbSehkPzbv3wwoFWIdtfd6Ndo6ZPhlPsCZ60CPI4rxurnwAa+a2w==", + "version": "3.36.0", + "resolved": "http://localhost:4873/simple-git/-/simple-git-3.36.0.tgz", + "integrity": "sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==", "license": "MIT", "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", + "@simple-git/args-pathspec": "^1.0.3", + "@simple-git/argv-parser": "^1.1.0", "debug": "^4.4.0" }, "funding": { @@ -14942,31 +14795,16 @@ "url": "https://github.com/steveukx/git-js?sponsor=1" } }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "license": "MIT" - }, "node_modules/sisteransi": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "resolved": "http://localhost:4873/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true, "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "resolved": "http://localhost:4873/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", @@ -14975,15 +14813,15 @@ } }, "node_modules/socket.io": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", - "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", + "version": "4.8.3", + "resolved": "http://localhost:4873/socket.io/-/socket.io-4.8.3.tgz", + "integrity": "sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==", "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", - "debug": "~4.3.2", + "debug": "~4.4.1", "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" @@ -14993,36 +14831,19 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", - "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", - "license": "MIT", - "dependencies": { - "debug": "~4.3.4", - "ws": "~8.17.1" - } - }, - "node_modules/socket.io-adapter/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "2.5.6", + "resolved": "http://localhost:4873/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz", + "integrity": "sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "debug": "~4.4.1", + "ws": "~8.18.3" } }, "node_modules/socket.io-adapter/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.3", + "resolved": "http://localhost:4873/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -15040,88 +14861,65 @@ } } }, - "node_modules/socket.io-client": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", - "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", + "node_modules/socket.io-parser": { + "version": "4.2.6", + "resolved": "http://localhost:4873/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.6.1", - "socket.io-parser": "~4.2.4" + "debug": "~4.4.1" }, "engines": { "node": ">=10.0.0" } }, - "node_modules/socket.io-client/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "node_modules/socket.io/node_modules/accepts": { + "version": "1.3.8", + "resolved": "http://localhost:4873/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "engines": { + "node": ">= 0.6" } }, - "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "node_modules/socket.io/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, "engines": { - "node": ">=10.0.0" + "node": ">= 0.6" } }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "node_modules/socket.io/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "mime-db": "1.52.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 0.6" } }, - "node_modules/socket.io/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "node_modules/socket.io/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "http://localhost:4873/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 0.6" } }, "node_modules/source-map": { "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "resolved": "http://localhost:4873/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "license": "BSD-3-Clause", "engines": { @@ -15130,7 +14928,7 @@ }, "node_modules/source-map-support": { "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "resolved": "http://localhost:4873/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "license": "MIT", @@ -15141,7 +14939,7 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://localhost:4873/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", @@ -15151,7 +14949,7 @@ }, "node_modules/sparse-bitfield": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "resolved": "http://localhost:4873/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", "license": "MIT", "dependencies": { @@ -15160,7 +14958,7 @@ }, "node_modules/split2": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "resolved": "http://localhost:4873/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "license": "ISC", "engines": { @@ -15169,14 +14967,29 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "resolved": "http://localhost:4873/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, "license": "BSD-3-Clause" }, + "node_modules/sql-escaper": { + "version": "1.3.3", + "resolved": "http://localhost:4873/sql-escaper/-/sql-escaper-1.3.3.tgz", + "integrity": "sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=2.0.0", + "node": ">=12.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/mysqljs/sql-escaper?sponsor=1" + } + }, "node_modules/sql-highlight": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.1.0.tgz", + "resolved": "http://localhost:4873/sql-highlight/-/sql-highlight-6.1.0.tgz", "integrity": "sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==", "funding": [ "https://github.com/scriptcoded/sql-highlight?sponsor=1", @@ -15190,18 +15003,9 @@ "node": ">=14" } }, - "node_modules/sqlstring": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", - "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/stack-trace": { "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "resolved": "http://localhost:4873/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "license": "MIT", "engines": { @@ -15210,7 +15014,7 @@ }, "node_modules/stack-utils": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "resolved": "http://localhost:4873/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "license": "MIT", @@ -15223,7 +15027,7 @@ }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "resolved": "http://localhost:4873/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "license": "MIT", @@ -15233,14 +15037,14 @@ }, "node_modules/standard-as-callback": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "resolved": "http://localhost:4873/standard-as-callback/-/standard-as-callback-2.1.0.tgz", "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==", "license": "MIT" }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "http://localhost:4873/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "license": "MIT", "engines": { "node": ">= 0.8" @@ -15248,7 +15052,7 @@ }, "node_modules/streamsearch": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "resolved": "http://localhost:4873/streamsearch/-/streamsearch-1.1.0.tgz", "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", "engines": { "node": ">=10.0.0" @@ -15256,7 +15060,7 @@ }, "node_modules/string_decoder": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "resolved": "http://localhost:4873/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "license": "MIT", "dependencies": { @@ -15265,7 +15069,7 @@ }, "node_modules/string-length": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "resolved": "http://localhost:4873/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "license": "MIT", @@ -15279,7 +15083,7 @@ }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "resolved": "http://localhost:4873/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { @@ -15294,7 +15098,7 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "resolved": "http://localhost:4873/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { @@ -15308,7 +15112,7 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "resolved": "http://localhost:4873/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { @@ -15321,7 +15125,7 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "resolved": "http://localhost:4873/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { @@ -15333,7 +15137,7 @@ }, "node_modules/strip-bom": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "resolved": "http://localhost:4873/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", @@ -15343,7 +15147,7 @@ }, "node_modules/strip-final-newline": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "resolved": "http://localhost:4873/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", @@ -15353,7 +15157,7 @@ }, "node_modules/strip-indent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "resolved": "http://localhost:4873/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "license": "MIT", @@ -15366,7 +15170,7 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "resolved": "http://localhost:4873/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", @@ -15378,9 +15182,9 @@ } }, "node_modules/strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", + "version": "2.2.3", + "resolved": "http://localhost:4873/strnum/-/strnum-2.2.3.tgz", + "integrity": "sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==", "funding": [ { "type": "github", @@ -15390,9 +15194,9 @@ "license": "MIT" }, "node_modules/strtok3": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.1.tgz", - "integrity": "sha512-3JWEZM6mfix/GCJBBUrkA8p2Id2pBkyTkVCJKto55w080QBKZ+8R171fGrbiSp+yMO/u6F8/yUh7K4V9K+YCnw==", + "version": "10.3.5", + "resolved": "http://localhost:4873/strtok3/-/strtok3-10.3.5.tgz", + "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==", "license": "MIT", "dependencies": { "@tokenizer/token": "^0.3.0" @@ -15407,7 +15211,7 @@ }, "node_modules/subscriptions-transport-ws": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz", + "resolved": "http://localhost:4873/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz", "integrity": "sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==", "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md", "license": "MIT", @@ -15424,7 +15228,7 @@ }, "node_modules/subscriptions-transport-ws/node_modules/symbol-observable": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "resolved": "http://localhost:4873/symbol-observable/-/symbol-observable-1.2.0.tgz", "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "license": "MIT", "engines": { @@ -15433,7 +15237,7 @@ }, "node_modules/subscriptions-transport-ws/node_modules/ws": { "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "resolved": "http://localhost:4873/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", "engines": { @@ -15454,9 +15258,9 @@ }, "node_modules/superagent": { "version": "8.1.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "resolved": "http://localhost:4873/superagent/-/superagent-8.1.2.tgz", "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", - "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", + "deprecated": "Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net", "dev": true, "license": "MIT", "dependencies": { @@ -15475,23 +15279,11 @@ "node": ">=6.4.0 <13 || >=14" } }, - "node_modules/superagent/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/supertest": { "version": "6.3.4", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz", + "resolved": "http://localhost:4873/supertest/-/supertest-6.3.4.tgz", "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==", + "deprecated": "Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net", "dev": true, "license": "MIT", "dependencies": { @@ -15504,8 +15296,9 @@ }, "node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "resolved": "http://localhost:4873/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -15516,7 +15309,7 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "resolved": "http://localhost:4873/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", @@ -15528,14 +15321,17 @@ } }, "node_modules/swagger-ui-dist": { - "version": "5.17.14", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.17.14.tgz", - "integrity": "sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw==", - "license": "Apache-2.0" + "version": "5.32.4", + "resolved": "http://localhost:4873/swagger-ui-dist/-/swagger-ui-dist-5.32.4.tgz", + "integrity": "sha512-0AADFFQNJzExEN49SrD/34Nn9cxNxVLiydYl2MBwSZFPVXNkVwC/EFAjoezGGqE8oDegiDC+p47t8lKObCinMQ==", + "license": "Apache-2.0", + "dependencies": { + "@scarf/scarf": "=1.4.0" + } }, "node_modules/swagger-ui-express": { "version": "4.6.3", - "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.6.3.tgz", + "resolved": "http://localhost:4873/swagger-ui-express/-/swagger-ui-express-4.6.3.tgz", "integrity": "sha512-CDje4PndhTD2HkgyKH3pab+LKspDeB/NhPN2OF1j+piYIamQqBYwAXWESOT1Yju2xFg51bRW9sUng2WxDjzArw==", "license": "MIT", "dependencies": { @@ -15550,7 +15346,7 @@ }, "node_modules/symbol-observable": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "resolved": "http://localhost:4873/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true, "license": "MIT", @@ -15559,18 +15355,22 @@ } }, "node_modules/tapable": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", - "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "version": "2.3.3", + "resolved": "http://localhost:4873/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", "dev": true, "license": "MIT", "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/tdigest": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", + "resolved": "http://localhost:4873/tdigest/-/tdigest-0.1.2.tgz", "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", "license": "MIT", "dependencies": { @@ -15578,14 +15378,14 @@ } }, "node_modules/terser": { - "version": "5.43.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", - "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", + "version": "5.46.2", + "resolved": "http://localhost:4873/terser/-/terser-5.46.2.tgz", + "integrity": "sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.14.0", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -15597,16 +15397,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", - "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "version": "5.5.0", + "resolved": "http://localhost:4873/terser-webpack-plugin/-/terser-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -15631,9 +15430,27 @@ } } }, + "node_modules/terser-webpack-plugin/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "http://localhost:4873/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "resolved": "http://localhost:4873/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "license": "MIT", @@ -15647,9 +15464,9 @@ } }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", - "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "version": "4.3.3", + "resolved": "http://localhost:4873/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, "license": "MIT", "dependencies": { @@ -15668,7 +15485,7 @@ }, "node_modules/terser-webpack-plugin/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "resolved": "http://localhost:4873/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", @@ -15684,14 +15501,14 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "resolved": "http://localhost:4873/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "license": "MIT" }, "node_modules/terser/node_modules/source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "resolved": "http://localhost:4873/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", @@ -15701,7 +15518,7 @@ }, "node_modules/terser/node_modules/source-map-support": { "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "resolved": "http://localhost:4873/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "license": "MIT", @@ -15712,7 +15529,7 @@ }, "node_modules/test-exclude": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "resolved": "http://localhost:4873/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "license": "ISC", @@ -15727,9 +15544,9 @@ }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "resolved": "http://localhost:4873/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -15749,27 +15566,20 @@ }, "node_modules/text-hex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "resolved": "http://localhost:4873/text-hex/-/text-hex-1.0.0.tgz", "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", "license": "MIT" }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "resolved": "http://localhost:4873/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, "license": "MIT" }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true, - "license": "MIT" - }, "node_modules/timers-ext": { "version": "0.1.8", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", + "resolved": "http://localhost:4873/timers-ext/-/timers-ext-0.1.8.tgz", "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", "license": "ISC", "dependencies": { @@ -15782,7 +15592,7 @@ }, "node_modules/tiny-async-pool": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz", + "resolved": "http://localhost:4873/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz", "integrity": "sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==", "license": "MIT", "dependencies": { @@ -15791,7 +15601,7 @@ }, "node_modules/tiny-async-pool/node_modules/semver": { "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "resolved": "http://localhost:4873/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "license": "ISC", "bin": { @@ -15800,34 +15610,21 @@ }, "node_modules/tlhunter-sorted-set": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tlhunter-sorted-set/-/tlhunter-sorted-set-0.1.0.tgz", + "resolved": "http://localhost:4873/tlhunter-sorted-set/-/tlhunter-sorted-set-0.1.0.tgz", "integrity": "sha512-eGYW4bjf1DtrHzUYxYfAcSytpOkA44zsr7G2n3PV7yOUR23vmkGe3LL4R+1jL9OsXtbsFOwe8XtbCrabeaEFnw==", "license": "MIT" }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tmpl": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "resolved": "http://localhost:4873/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/to-buffer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", - "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==", + "version": "1.2.2", + "resolved": "http://localhost:4873/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", "license": "MIT", "dependencies": { "isarray": "^2.0.5", @@ -15838,15 +15635,9 @@ "node": ">= 0.4" } }, - "node_modules/to-buffer/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "resolved": "http://localhost:4873/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "license": "MIT", "dependencies": { @@ -15858,7 +15649,7 @@ }, "node_modules/toidentifier": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "resolved": "http://localhost:4873/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "license": "MIT", "engines": { @@ -15866,11 +15657,12 @@ } }, "node_modules/token-types": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.0.3.tgz", - "integrity": "sha512-IKJ6EzuPPWtKtEIEPpIdXv9j5j2LGJEYk0CKY2efgKoYKLBiZdh6iQkLVBow/CB3phyWAWCyk+bZeaimJn6uRQ==", + "version": "6.1.2", + "resolved": "http://localhost:4873/token-types/-/token-types-6.1.2.tgz", + "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", "license": "MIT", "dependencies": { + "@borewit/text-codec": "^0.2.1", "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" }, @@ -15884,13 +15676,13 @@ }, "node_modules/toposort": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "resolved": "http://localhost:4873/toposort/-/toposort-2.0.2.tgz", "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", "license": "MIT" }, "node_modules/tr46": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "resolved": "http://localhost:4873/tr46/-/tr46-5.1.1.tgz", "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", "license": "MIT", "dependencies": { @@ -15900,19 +15692,9 @@ "node": ">=18" } }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, "node_modules/triple-beam": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "resolved": "http://localhost:4873/triple-beam/-/triple-beam-1.4.1.tgz", "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", "license": "MIT", "engines": { @@ -15920,19 +15702,19 @@ } }, "node_modules/ts-jest": { - "version": "29.4.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.0.tgz", - "integrity": "sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q==", + "version": "29.4.9", + "resolved": "http://localhost:4873/ts-jest/-/ts-jest-29.4.9.tgz", + "integrity": "sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==", "dev": true, "license": "MIT", "dependencies": { "bs-logger": "^0.2.6", - "ejs": "^3.1.10", "fast-json-stable-stringify": "^2.1.0", + "handlebars": "^4.7.9", "json5": "^2.2.3", "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", - "semver": "^7.7.2", + "semver": "^7.7.4", "type-fest": "^4.41.0", "yargs-parser": "^21.1.1" }, @@ -15949,7 +15731,7 @@ "babel-jest": "^29.0.0 || ^30.0.0", "jest": "^29.0.0 || ^30.0.0", "jest-util": "^29.0.0 || ^30.0.0", - "typescript": ">=4.3 <6" + "typescript": ">=4.3 <7" }, "peerDependenciesMeta": { "@babel/core": { @@ -15974,7 +15756,7 @@ }, "node_modules/ts-jest/node_modules/type-fest": { "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "resolved": "http://localhost:4873/type-fest/-/type-fest-4.41.0.tgz", "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, "license": "(MIT OR CC0-1.0)", @@ -15987,7 +15769,7 @@ }, "node_modules/ts-loader": { "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", + "resolved": "http://localhost:4873/ts-loader/-/ts-loader-9.4.2.tgz", "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", "dev": true, "license": "MIT", @@ -16007,7 +15789,7 @@ }, "node_modules/ts-node": { "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", + "resolved": "http://localhost:4873/ts-node/-/ts-node-10.7.0.tgz", "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", "devOptional": true, "license": "MIT", @@ -16051,7 +15833,7 @@ }, "node_modules/tsconfig-paths": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "resolved": "http://localhost:4873/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, "license": "MIT", @@ -16066,7 +15848,7 @@ }, "node_modules/tsconfig-paths-webpack-plugin": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", + "resolved": "http://localhost:4873/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", "dev": true, "license": "MIT", @@ -16082,7 +15864,7 @@ }, "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "resolved": "http://localhost:4873/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "license": "MIT", @@ -16092,13 +15874,13 @@ }, "node_modules/tslib": { "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "resolved": "http://localhost:4873/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "resolved": "http://localhost:4873/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "license": "MIT", @@ -16114,14 +15896,14 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "resolved": "http://localhost:4873/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, "license": "0BSD" }, "node_modules/ttl-set": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ttl-set/-/ttl-set-1.0.0.tgz", + "resolved": "http://localhost:4873/ttl-set/-/ttl-set-1.0.0.tgz", "integrity": "sha512-2fuHn/UR+8Z9HK49r97+p2Ru1b5Eewg2QqPrU14BVCQ9QoyU3+vLLZk2WEiyZ9sgJh6W8G1cZr9I2NBLywAHrA==", "license": "MIT", "dependencies": { @@ -16130,19 +15912,19 @@ }, "node_modules/tweetnacl": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "resolved": "http://localhost:4873/tweetnacl/-/tweetnacl-1.0.3.tgz", "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", "license": "Unlicense" }, "node_modules/type": { "version": "2.7.3", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "resolved": "http://localhost:4873/type/-/type-2.7.3.tgz", "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", "license": "ISC" }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "resolved": "http://localhost:4873/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", @@ -16155,7 +15937,7 @@ }, "node_modules/type-detect": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "resolved": "http://localhost:4873/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "license": "MIT", @@ -16165,7 +15947,7 @@ }, "node_modules/type-fest": { "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "resolved": "http://localhost:4873/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", @@ -16177,13 +15959,14 @@ } }, "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "version": "2.0.1", + "resolved": "http://localhost:4873/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" }, "engines": { "node": ">= 0.6" @@ -16191,7 +15974,7 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "resolved": "http://localhost:4873/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "license": "MIT", "dependencies": { @@ -16205,27 +15988,28 @@ }, "node_modules/typedarray": { "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "resolved": "http://localhost:4873/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "license": "MIT" }, "node_modules/typeorm": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.25.tgz", - "integrity": "sha512-fTKDFzWXKwAaBdEMU4k661seZewbNYET4r1J/z3Jwf+eAvlzMVpTLKAVcAzg75WwQk7GDmtsmkZ5MfkmXCiFWg==", + "version": "0.3.28", + "resolved": "http://localhost:4873/typeorm/-/typeorm-0.3.28.tgz", + "integrity": "sha512-6GH7wXhtfq2D33ZuRXYwIsl/qM5685WZcODZb7noOOcRMteM9KF2x2ap3H0EBjnSV0VO4gNAfJT5Ukp0PkOlvg==", "license": "MIT", "dependencies": { "@sqltools/formatter": "^1.2.5", - "ansis": "^3.17.0", + "ansis": "^4.2.0", "app-root-path": "^3.1.0", "buffer": "^6.0.3", - "dayjs": "^1.11.13", - "debug": "^4.4.0", - "dedent": "^1.6.0", - "dotenv": "^16.4.7", - "glob": "^10.4.5", - "sha.js": "^2.4.11", - "sql-highlight": "^6.0.0", + "dayjs": "^1.11.19", + "debug": "^4.4.3", + "dedent": "^1.7.0", + "dotenv": "^16.6.1", + "glob": "^10.5.0", + "reflect-metadata": "^0.2.2", + "sha.js": "^2.4.12", + "sql-highlight": "^6.1.0", "tslib": "^2.8.1", "uuid": "^11.1.0", "yargs": "^17.7.2" @@ -16242,20 +16026,18 @@ "url": "https://opencollective.com/typeorm" }, "peerDependencies": { - "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0", - "@sap/hana-client": "^2.12.25", - "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", - "hdb-pool": "^0.1.6", + "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@sap/hana-client": "^2.14.22", + "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", "ioredis": "^5.0.4", "mongodb": "^5.8.0 || ^6.0.0", - "mssql": "^9.1.1 || ^10.0.1 || ^11.0.1", + "mssql": "^9.1.1 || ^10.0.0 || ^11.0.0 || ^12.0.0", "mysql2": "^2.2.5 || ^3.0.1", "oracledb": "^6.3.0", "pg": "^8.5.1", "pg-native": "^3.0.0", "pg-query-stream": "^4.0.0", - "redis": "^3.1.1 || ^4.0.0", - "reflect-metadata": "^0.1.14 || ^0.2.0", + "redis": "^3.1.1 || ^4.0.0 || ^5.0.14", "sql.js": "^1.4.0", "sqlite3": "^5.0.3", "ts-node": "^10.7.0", @@ -16271,9 +16053,6 @@ "better-sqlite3": { "optional": true }, - "hdb-pool": { - "optional": true - }, "ioredis": { "optional": true }, @@ -16315,9 +16094,18 @@ } } }, + "node_modules/typeorm/node_modules/brace-expansion": { + "version": "2.1.0", + "resolved": "http://localhost:4873/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/typeorm/node_modules/dotenv": { "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "resolved": "http://localhost:4873/dotenv/-/dotenv-16.6.1.tgz", "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", "license": "BSD-2-Clause", "engines": { @@ -16327,22 +16115,67 @@ "url": "https://dotenvx.com" } }, - "node_modules/typeorm/node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", + "node_modules/typeorm/node_modules/glob": { + "version": "10.5.0", + "resolved": "http://localhost:4873/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, "bin": { - "uuid": "dist/esm/bin/uuid" + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typeorm/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "http://localhost:4873/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/typeorm/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "http://localhost:4873/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typeorm/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "http://localhost:4873/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/typescript": { "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "resolved": "http://localhost:4873/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "devOptional": true, "license": "Apache-2.0", @@ -16354,9 +16187,23 @@ "node": ">=4.2.0" } }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "http://localhost:4873/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/uid": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "resolved": "http://localhost:4873/uid/-/uid-2.0.2.tgz", "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", "license": "MIT", "dependencies": { @@ -16367,9 +16214,9 @@ } }, "node_modules/uint8array-extras": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz", - "integrity": "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==", + "version": "1.5.0", + "resolved": "http://localhost:4873/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", "license": "MIT", "engines": { "node": ">=18" @@ -16378,9 +16225,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/undici-types": { + "version": "7.19.2", + "resolved": "http://localhost:4873/undici-types/-/undici-types-7.19.2.tgz", + "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", + "license": "MIT" + }, "node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "resolved": "http://localhost:4873/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", @@ -16390,7 +16243,7 @@ }, "node_modules/unpipe": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "resolved": "http://localhost:4873/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "license": "MIT", "engines": { @@ -16398,9 +16251,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.2.3", + "resolved": "http://localhost:4873/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -16430,7 +16283,7 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "resolved": "http://localhost:4873/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", @@ -16440,7 +16293,7 @@ }, "node_modules/url-parse": { "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "resolved": "http://localhost:4873/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "license": "MIT", "dependencies": { @@ -16450,42 +16303,33 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "http://localhost:4873/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "version": "11.1.0", + "resolved": "http://localhost:4873/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist/esm/bin/uuid" } }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "resolved": "http://localhost:4873/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "devOptional": true, "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "resolved": "http://localhost:4873/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", @@ -16498,27 +16342,9 @@ "node": ">=10.12.0" } }, - "node_modules/validator": { - "version": "13.15.15", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz", - "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/value-or-promise": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz", - "integrity": "sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==", - "license": "MIT", - "engines": { - "node": ">=12" - } - }, "node_modules/vary": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "resolved": "http://localhost:4873/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "license": "MIT", "engines": { @@ -16527,7 +16353,7 @@ }, "node_modules/walker": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "resolved": "http://localhost:4873/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "license": "Apache-2.0", @@ -16536,9 +16362,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", - "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "version": "2.5.1", + "resolved": "http://localhost:4873/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "dev": true, "license": "MIT", "dependencies": { @@ -16551,7 +16377,7 @@ }, "node_modules/wcwidth": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "resolved": "http://localhost:4873/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "license": "MIT", @@ -16561,7 +16387,7 @@ }, "node_modules/webidl-conversions": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "resolved": "http://localhost:4873/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "license": "BSD-2-Clause", "engines": { @@ -16569,36 +16395,36 @@ } }, "node_modules/webpack": { - "version": "5.99.9", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz", - "integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==", + "version": "5.106.2", + "resolved": "http://localhost:4873/webpack/-/webpack-5.106.2.tgz", + "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==", "dev": true, "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", + "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", + "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", + "loader-runner": "^4.3.1", + "mime-db": "^1.54.0", "neo-async": "^2.6.2", - "schema-utils": "^4.3.2", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" }, "bin": { "webpack": "bin/webpack.js" @@ -16618,7 +16444,7 @@ }, "node_modules/webpack-node-externals": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "resolved": "http://localhost:4873/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", "dev": true, "license": "MIT", @@ -16627,19 +16453,37 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", - "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "version": "3.4.0", + "resolved": "http://localhost:4873/webpack-sources/-/webpack-sources-3.4.0.tgz", + "integrity": "sha512-gHwIe1cgBvvfLeu1Yz/dcFpmHfKDVxxyqI+kzqmuxZED81z2ChxpyqPaWcNqigPywhaEke7AjSGga+kxY55gjQ==", "dev": true, "license": "MIT", "engines": { "node": ">=10.13.0" } }, + "node_modules/webpack/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "http://localhost:4873/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", - "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "version": "4.3.3", + "resolved": "http://localhost:4873/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, "license": "MIT", "dependencies": { @@ -16657,17 +16501,17 @@ } }, "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "version": "4.0.0", + "resolved": "http://localhost:4873/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/whatwg-url": { "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "resolved": "http://localhost:4873/whatwg-url/-/whatwg-url-14.2.0.tgz", "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", "license": "MIT", "dependencies": { @@ -16680,7 +16524,7 @@ }, "node_modules/which": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "resolved": "http://localhost:4873/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "license": "ISC", "dependencies": { @@ -16694,9 +16538,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "version": "1.1.20", + "resolved": "http://localhost:4873/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -16715,13 +16559,13 @@ } }, "node_modules/winston": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz", - "integrity": "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==", + "version": "3.19.0", + "resolved": "http://localhost:4873/winston/-/winston-3.19.0.tgz", + "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", "license": "MIT", "dependencies": { "@colors/colors": "^1.6.0", - "@dabh/diagnostics": "^2.0.2", + "@dabh/diagnostics": "^2.0.8", "async": "^3.2.3", "is-stream": "^2.0.0", "logform": "^2.7.0", @@ -16738,7 +16582,7 @@ }, "node_modules/winston-daily-rotate-file": { "version": "4.7.1", - "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-4.7.1.tgz", + "resolved": "http://localhost:4873/winston-daily-rotate-file/-/winston-daily-rotate-file-4.7.1.tgz", "integrity": "sha512-7LGPiYGBPNyGHLn9z33i96zx/bd71pjBn9tqQzO3I4Tayv94WPmBNwKC7CO1wPHdP9uvu+Md/1nr6VSH9h0iaA==", "license": "MIT", "dependencies": { @@ -16756,7 +16600,7 @@ }, "node_modules/winston-daily-rotate-file/node_modules/object-hash": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "resolved": "http://localhost:4873/object-hash/-/object-hash-2.2.0.tgz", "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", "license": "MIT", "engines": { @@ -16765,7 +16609,7 @@ }, "node_modules/winston-transport": { "version": "4.9.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", + "resolved": "http://localhost:4873/winston-transport/-/winston-transport-4.9.0.tgz", "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", "license": "MIT", "dependencies": { @@ -16779,7 +16623,7 @@ }, "node_modules/winston/node_modules/@colors/colors": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "resolved": "http://localhost:4873/@colors/colors/-/colors-1.6.0.tgz", "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", "license": "MIT", "engines": { @@ -16788,13 +16632,13 @@ }, "node_modules/winston/node_modules/async": { "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "resolved": "http://localhost:4873/async/-/async-3.2.6.tgz", "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "license": "MIT" }, "node_modules/word-wrap": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "resolved": "http://localhost:4873/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", @@ -16804,13 +16648,13 @@ }, "node_modules/wordwrap": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "resolved": "http://localhost:4873/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "license": "MIT" }, "node_modules/wrap-ansi": { "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "resolved": "http://localhost:4873/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "license": "MIT", @@ -16826,7 +16670,7 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "resolved": "http://localhost:4873/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", "dependencies": { @@ -16843,14 +16687,13 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "http://localhost:4873/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "resolved": "http://localhost:4873/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "license": "ISC", @@ -16864,15 +16707,15 @@ }, "node_modules/write-file-atomic/node_modules/signal-exit": { "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "resolved": "http://localhost:4873/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.20.0", + "resolved": "http://localhost:4873/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -16900,7 +16743,7 @@ }, "node_modules/xss": { "version": "1.0.15", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz", + "resolved": "http://localhost:4873/xss/-/xss-1.0.15.tgz", "integrity": "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==", "license": "MIT", "dependencies": { @@ -16916,13 +16759,13 @@ }, "node_modules/xss/node_modules/commander": { "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "resolved": "http://localhost:4873/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "license": "MIT" }, "node_modules/xtend": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "resolved": "http://localhost:4873/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "license": "MIT", "engines": { @@ -16931,7 +16774,7 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "resolved": "http://localhost:4873/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "license": "ISC", "engines": { @@ -16940,14 +16783,14 @@ }, "node_modules/yallist": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "resolved": "http://localhost:4873/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC" }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "resolved": "http://localhost:4873/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "license": "MIT", "dependencies": { @@ -16965,7 +16808,7 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "resolved": "http://localhost:4873/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "license": "ISC", "engines": { @@ -16974,7 +16817,7 @@ }, "node_modules/yn": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "resolved": "http://localhost:4873/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "devOptional": true, "license": "MIT", @@ -16984,7 +16827,7 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "resolved": "http://localhost:4873/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "license": "MIT", "engines": { @@ -16994,9 +16837,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "http://localhost:4873/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/yup": { "version": "0.32.11", - "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", + "resolved": "http://localhost:4873/yup/-/yup-0.32.11.tgz", "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", "license": "MIT", "dependencies": { @@ -17013,4 +16869,4 @@ } } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index dbd1c1ecd..2bdbfcd1c 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,9 @@ "author": "", "private": true, "license": "UNLICENSED", + "engines": { + "node": ">=25 <26" + }, "scripts": { "prebuild": "run-script-os", "prebuild:nix": "rimraf dist", @@ -84,39 +87,38 @@ "test:ppu": "ts-node src/test/chain-simulator/utils/test-ppu-calculation.ts" }, "dependencies": { - "@aws-sdk/client-s3": "^3.54.0", - "@golevelup/nestjs-rabbitmq": "^4.0.0", - "@multiversx/sdk-core": "^13.2.2", - "@multiversx/sdk-exchange": "^0.2.21", - "@multiversx/sdk-nestjs-auth": "6.0.0", - "@multiversx/sdk-nestjs-cache": "6.0.0", - "@multiversx/sdk-nestjs-common": "6.0.0", - "@multiversx/sdk-nestjs-elastic": "6.0.0", - "@multiversx/sdk-nestjs-http": "6.0.0", - "@multiversx/sdk-nestjs-monitoring": "6.0.0", - "@multiversx/sdk-nestjs-rabbitmq": "6.0.0", - "@multiversx/sdk-nestjs-redis": "6.0.0", + "@apollo/server": "^5.5.0", + "@aws-sdk/client-s3": "^3.1035.0", + "@golevelup/nestjs-rabbitmq": "^9.0.0", + "@multiversx/sdk-core": "^15.4.0", + "@multiversx/sdk-exchange": "^0.2.24", + "@multiversx/sdk-nestjs-auth": "7.0.0", + "@multiversx/sdk-nestjs-cache": "7.0.0", + "@multiversx/sdk-nestjs-common": "7.0.0", + "@multiversx/sdk-nestjs-elastic": "7.0.0", + "@multiversx/sdk-nestjs-http": "7.0.0", + "@multiversx/sdk-nestjs-monitoring": "7.0.0", + "@multiversx/sdk-nestjs-rabbitmq": "7.0.0", + "@multiversx/sdk-nestjs-redis": "7.0.0", "@multiversx/sdk-transaction-processor": "^0.1.35", - "@nestjs/apollo": "12.0.11", - "@nestjs/common": "^10.2.0", - "@nestjs/config": "3.0.1", - "@nestjs/core": "10.4.2", - "@nestjs/event-emitter": "^2.0.3", - "@nestjs/graphql": "^12.0.11", - "@nestjs/microservices": "10.2.4", - "@nestjs/platform-express": "10.4.19", - "@nestjs/platform-socket.io": "^10.2.4", - "@nestjs/schedule": "3.0.3", - "@nestjs/swagger": "7.4.2", - "@nestjs/typeorm": "10.0.0", - "@nestjs/websockets": "^10.2.8", + "@nestjs/apollo": "^13.3.0", + "@nestjs/common": "^11.1.19", + "@nestjs/config": "^4.0.4", + "@nestjs/core": "^11.1.19", + "@nestjs/event-emitter": "^3.0.1", + "@nestjs/graphql": "^13.3.0", + "@nestjs/microservices": "^11.1.19", + "@nestjs/platform-express": "^11.1.19", + "@nestjs/platform-socket.io": "^11.1.19", + "@nestjs/schedule": "^6.1.3", + "@nestjs/swagger": "^11.4.1", + "@nestjs/typeorm": "^11.0.1", + "@nestjs/websockets": "^11.1.19", "@sendgrid/mail": "^8.1.5", "agentkeepalive": "^4.2.1", "amqp-connection-manager": "^4.1.3", "amqplib": "^0.10.0", "anchorme": "^3.0.8", - "apollo-server-core": "^3.13.0", - "apollo-server-express": "3.13.0", "async-mutex": "^0.5.0", "bignumber.js": "^9.0.2", "class-transformer": "^0.5.1", @@ -126,12 +128,12 @@ "dataloader": "^2.2.2", "dd-trace": "5.56.0", "fluent-ffmpeg": "^2.1.2", - "graphql": "^16.8.1", + "graphql": "^16.11.0", "graphql-fields-list": "^2.2.4", "graphql-request": "^4.2.0", "graphql-type-json": "^0.3.2", "ioredis": "^5.2.3", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "json-diff": "^0.7.1", "mongodb": "^6.17.0", "mysql2": "^3.9.8", @@ -141,17 +143,17 @@ "pg": "^8.7.3", "prom-client": "^14.0.1", "redis": "^3.1.2", - "reflect-metadata": "^0.1.13", + "reflect-metadata": "^0.2.2", "request-ip": "^3.3.0", "rimraf": "^5.0.0", - "rxjs": "^7.1.0", + "rxjs": "^7.8.1", "sharp": "^0.34.2", "simple-git": "^3.16.0", "socket.io": "^4.8.1", "socket.io-client": "^4.8.1", "swagger-ui-express": "^4.3.0", "tiny-async-pool": "^1.2.0", - "typeorm": "^0.3.25", + "typeorm": "^0.3.28", "winston": "^3.6.0", "winston-daily-rotate-file": "^4.7.1", "yup": "^0.32.11" @@ -160,9 +162,9 @@ "@automock/adapters.nestjs": "^2.1.0", "@automock/jest": "^2.1.0", "@jest/test-sequencer": "^29.7.0", - "@nestjs/cli": "10.4.9", - "@nestjs/schematics": "10.0.2", - "@nestjs/testing": "10.2.4", + "@nestjs/cli": "^11.0.21", + "@nestjs/schematics": "^11.1.0", + "@nestjs/testing": "^11.1.19", "@testing-library/jest-dom": "6.1.4", "@types/compression": "^1.8.1", "@types/cron": "^1.7.3", @@ -173,7 +175,8 @@ "@types/js-yaml": "^4.0.5", "@types/json-diff": "^0.7.0", "@types/jsonwebtoken": "^8.5.8", - "@types/node": "^17.0.21", + "@types/node": "^25.0.0", + "@types/node-fetch": "^2.6.13", "@types/redis": "^2.8.32", "@types/request-ip": "0.0.37", "@types/sharp": "^0.28.3", @@ -185,7 +188,7 @@ "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", "jest": "29.5.0", - "prettier": "^2.5.1", + "prettier": "^3.5.3", "run-script-os": "^1.1.6", "supertest": "^6.2.2", "ts-jest": "^29.0.5", diff --git a/src/common/protocol/protocol.service.ts b/src/common/protocol/protocol.service.ts index 0a4079228..192cb10b0 100644 --- a/src/common/protocol/protocol.service.ts +++ b/src/common/protocol/protocol.service.ts @@ -93,7 +93,7 @@ export class ProtocolService { } const shardCount = await this.getShardCount(); - const addressHex = new Address(address).hex(); + const addressHex = new Address(address).toHex(); return AddressUtils.computeShard(addressHex, shardCount); } diff --git a/src/common/rabbitmq/rabbitmq.module.ts b/src/common/rabbitmq/rabbitmq.module.ts index e85b77145..11eea01dd 100644 --- a/src/common/rabbitmq/rabbitmq.module.ts +++ b/src/common/rabbitmq/rabbitmq.module.ts @@ -29,7 +29,7 @@ export class RabbitMqModule { return { module: RabbitMqModule, imports: [ - RabbitMQModule.forRootAsync(RabbitMQModule, { + RabbitMQModule.forRootAsync({ imports: [ApiConfigModule], inject: [ApiConfigService], useFactory: (apiConfigService: ApiConfigService) => { diff --git a/src/endpoints/mex/mex.module.ts b/src/endpoints/mex/mex.module.ts index 74d8b1e86..06e18de12 100644 --- a/src/endpoints/mex/mex.module.ts +++ b/src/endpoints/mex/mex.module.ts @@ -9,41 +9,39 @@ import { MexSettingsService } from "./mex.settings.service"; import { MexTokenChartsService } from "./mex.token.charts.service"; import { MexTokenService } from "./mex.token.service"; import { MexWarmerService } from "./mex.warmer.service"; - -@Module({}) +@Module({ + imports: [GraphQlModule], // mutat aici + providers: [ + MexEconomicsService, + MexSettingsService, + MexPairService, + MexTokenService, + MexFarmService, + MexTokenChartsService, + DynamicModuleUtils.getPubSubService(), + ], + exports: [ + MexEconomicsService, + MexPairService, + MexSettingsService, + MexTokenService, + MexFarmService, + MexTokenChartsService, + ], +}) export class MexModule { static forRoot(): DynamicModule { - const providers: (Type | Provider)[] = [ - DynamicModuleUtils.getPubSubService(), - MexEconomicsService, - MexSettingsService, - MexPairService, - MexTokenService, - MexFarmService, - MexTokenChartsService, + const dynamicProviders: (Type | Provider)[] = [ ]; const isExchangeEnabled = configuration().features?.exchange?.enabled ?? false; - const isCacheWarmerEnabled = configuration().cron?.cacheWarmer ?? false; - // Enable MEX cron only when both Exchange and CacheWarmer flags are enabled - if (isExchangeEnabled && isCacheWarmerEnabled) { - providers.push(MexWarmerService); + if (isExchangeEnabled) { + dynamicProviders.push(MexWarmerService); } return { module: MexModule, - imports: [ - GraphQlModule, - ], - providers, - exports: [ - MexEconomicsService, - MexPairService, - MexSettingsService, - MexTokenService, - MexFarmService, - MexTokenChartsService, - ], + providers: dynamicProviders, }; } -} +} \ No newline at end of file diff --git a/src/endpoints/nfts/nft.module.ts b/src/endpoints/nfts/nft.module.ts index 6242b358d..e67deaf38 100644 --- a/src/endpoints/nfts/nft.module.ts +++ b/src/endpoints/nfts/nft.module.ts @@ -18,7 +18,7 @@ import { LockedAssetModule } from "../../common/locked-asset/locked-asset.module forwardRef(() => CollectionModule), forwardRef(() => PluginModule), forwardRef(() => NftMetadataModule), - forwardRef(() => MexModule.forRoot()), + forwardRef(() => MexModule), forwardRef(() => AssetsModule), forwardRef(() => LockedAssetModule), NftMediaModule, diff --git a/src/endpoints/tokens/token.module.ts b/src/endpoints/tokens/token.module.ts index 14669ed7b..305d592e4 100644 --- a/src/endpoints/tokens/token.module.ts +++ b/src/endpoints/tokens/token.module.ts @@ -17,7 +17,7 @@ import { TransferModule } from "../transfers/transfer.module"; forwardRef(() => TransactionModule), forwardRef(() => TransferModule), forwardRef(() => AssetsModule), - forwardRef(() => MexModule.forRoot()), + forwardRef(() => MexModule), forwardRef(() => CollectionModule), forwardRef(() => PluginModule), ], diff --git a/src/endpoints/transactions.batch/transactions.batch.service.ts b/src/endpoints/transactions.batch/transactions.batch.service.ts index 78bea9c89..f6176b838 100644 --- a/src/endpoints/transactions.batch/transactions.batch.service.ts +++ b/src/endpoints/transactions.batch/transactions.batch.service.ts @@ -1,6 +1,4 @@ -import { Address, Transaction as ErdJsTransaction, TransactionHash, TransactionOptions, TransactionPayload, TransactionVersion } from "@multiversx/sdk-core/out"; -import { Signature } from "@multiversx/sdk-core/out/signature"; -import { BinaryUtils } from "@multiversx/sdk-nestjs-common"; +import { Address, Transaction as ErdJsTransaction, TransactionComputer } from "@multiversx/sdk-core"; import { CacheService } from "@multiversx/sdk-nestjs-cache"; import { Injectable, Logger } from "@nestjs/common"; import { TransactionBatch } from "./entities/transaction.batch"; @@ -32,31 +30,29 @@ export class TransactionsBatchService { return batch; } + const transactionComputer = new TransactionComputer(); + for (const group of batch.groups) { for (const item of group.items) { const tx = item.transaction.tx; const trans = new ErdJsTransaction({ - nonce: tx.nonce, - value: tx.value, + nonce: BigInt(tx.nonce), + value: BigInt(tx.value), receiver: new Address(tx.receiver), - gasPrice: tx.gasPrice, - gasLimit: tx.gasLimit, - data: tx.data ? new TransactionPayload(BinaryUtils.base64Decode(tx.data ?? '')) : undefined, + gasPrice: BigInt(tx.gasPrice), + gasLimit: BigInt(tx.gasLimit), + data: tx.data ? new Uint8Array(Buffer.from(tx.data, 'base64')) : undefined, chainID: tx.chainID, - version: new TransactionVersion(tx.version), - options: tx.options ? new TransactionOptions(tx.options) : undefined, + version: tx.version, + options: tx.options, guardian: tx.guardian ? new Address(tx.guardian) : undefined, sender: new Address(tx.sender), + signature: tx.signature ? new Uint8Array(Buffer.from(tx.signature, 'base64')) : undefined, + guardianSignature: tx.guardianSignature ? new Uint8Array(Buffer.from(tx.guardianSignature, 'base64')) : undefined, }); - if (tx.guardianSignature) { - trans.applyGuardianSignature(new Signature(tx.guardianSignature)); - } - - trans.applySignature(new Signature(tx.signature)); - - item.transaction.hash = TransactionHash.compute(trans).toString(); + item.transaction.hash = transactionComputer.computeTransactionHash(trans); } } diff --git a/tsconfig.json b/tsconfig.json index 8d7f8f65a..cfa7d8246 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowSyntheticDefaultImports": true, - "target": "es2017", + "target": "es2022", "sourceMap": true, "outDir": "./dist", "baseUrl": "./", From ce802e9cf362773af7b88a59ab0290ddaa02f651 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 4 May 2026 15:19:17 +0300 Subject: [PATCH 154/206] refresh tx pool every second + decrease ttl --- config/config.devnet-old.yaml | 4 ++-- config/config.devnet.yaml | 4 ++-- config/config.e2e.mainnet.yaml | 4 ++-- config/config.mainnet.yaml | 4 ++-- config/config.testnet.yaml | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/config/config.devnet-old.yaml b/config/config.devnet-old.yaml index 3cfa0a2d9..37bd0f3d4 100644 --- a/config/config.devnet-old.yaml +++ b/config/config.devnet-old.yaml @@ -38,8 +38,8 @@ features: enabled: true transactionPoolWarmer: enabled: true - cronExpression: '*/5 * * * * *' - ttlInSeconds: 60 + cronExpression: '*/1 * * * * *' + ttlInSeconds: 10 updateCollectionExtraDetails: enabled: false marketplace: diff --git a/config/config.devnet.yaml b/config/config.devnet.yaml index 71c7dd14c..d2071ea49 100644 --- a/config/config.devnet.yaml +++ b/config/config.devnet.yaml @@ -40,8 +40,8 @@ features: enabled: false transactionPoolWarmer: enabled: false - cronExpression: '*/5 * * * * *' - ttlInSeconds: 60 + cronExpression: '*/1 * * * * *' + ttlInSeconds: 10 updateCollectionExtraDetails: enabled: false updateAccountExtraDetails: diff --git a/config/config.e2e.mainnet.yaml b/config/config.e2e.mainnet.yaml index b37db057a..3862cd315 100644 --- a/config/config.e2e.mainnet.yaml +++ b/config/config.e2e.mainnet.yaml @@ -40,8 +40,8 @@ features: enabled: true transactionPoolWarmer: enabled: true - cronExpression: '*/5 * * * * *' - ttlInSeconds: 60 + cronExpression: '*/1 * * * * *' + ttlInSeconds: 10 updateCollectionExtraDetails: enabled: false updateAccountExtraDetails: diff --git a/config/config.mainnet.yaml b/config/config.mainnet.yaml index ffa6a3134..6b35bfc0d 100644 --- a/config/config.mainnet.yaml +++ b/config/config.mainnet.yaml @@ -40,8 +40,8 @@ features: enabled: false transactionPoolWarmer: enabled: false - cronExpression: '*/5 * * * * *' - ttlInSeconds: 60 + cronExpression: '*/1 * * * * *' + ttlInSeconds: 10 updateCollectionExtraDetails: enabled: false updateAccountExtraDetails: diff --git a/config/config.testnet.yaml b/config/config.testnet.yaml index a1966bc3e..f5ab3e1f2 100644 --- a/config/config.testnet.yaml +++ b/config/config.testnet.yaml @@ -40,8 +40,8 @@ features: enabled: false transactionPoolWarmer: enabled: false - cronExpression: '*/5 * * * * *' - ttlInSeconds: 60 + cronExpression: '*/1 * * * * *' + ttlInSeconds: 10 updateCollectionExtraDetails: enabled: false updateAccountExtraDetails: From 5df0eacad24aa98bcf8a3de94df76412d18bdd8b Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 11 May 2026 15:22:07 +0300 Subject: [PATCH 155/206] lint + workflow versions upgrade --- .github/workflows/build-docker-image.yaml | 4 ++-- .../workflows/chain-simulator-e2e-tests.yml | 6 +++--- .github/workflows/lint.yml | 8 ++++---- .github/workflows/load-tests.yml | 18 +++++++++--------- .github/workflows/unit.tests.yml | 6 +++--- src/endpoints/mex/mex.module.ts | 2 +- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/.github/workflows/build-docker-image.yaml b/.github/workflows/build-docker-image.yaml index 4d0eff40d..2bb16577a 100644 --- a/.github/workflows/build-docker-image.yaml +++ b/.github/workflows/build-docker-image.yaml @@ -18,9 +18,9 @@ jobs: uses: actions/checkout@v4 - name: Set up Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: - node-version: '18' # Specify your Node.js version + node-version: '24' # Specify your Node.js version - name: Log in to Docker Hub uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a diff --git a/.github/workflows/chain-simulator-e2e-tests.yml b/.github/workflows/chain-simulator-e2e-tests.yml index f924cb849..e42234b57 100644 --- a/.github/workflows/chain-simulator-e2e-tests.yml +++ b/.github/workflows/chain-simulator-e2e-tests.yml @@ -11,13 +11,13 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [18.x] + node-version: [24.x] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index bda7f1a37..34d5285e4 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,15 +15,15 @@ jobs: strategy: matrix: - node-version: [18.x] + node-version: [24.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' - run: npm ci - - run: npm run lint \ No newline at end of file + - run: npm run lint diff --git a/.github/workflows/load-tests.yml b/.github/workflows/load-tests.yml index 50568016a..faa6466ee 100644 --- a/.github/workflows/load-tests.yml +++ b/.github/workflows/load-tests.yml @@ -9,14 +9,14 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.base.sha }} - name: Set up Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '24' - name: Install dependencies run: npm ci @@ -70,14 +70,14 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - name: Set up Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '24' - name: Install dependencies run: npm ci @@ -132,7 +132,7 @@ jobs: needs: [test-base, test-head] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Download all artifacts uses: actions/download-artifact@v4 @@ -140,9 +140,9 @@ jobs: path: artifacts - name: Set up Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: - node-version: '20' + node-version: '24' - name: Compare test results run: | diff --git a/.github/workflows/unit.tests.yml b/.github/workflows/unit.tests.yml index d53e29e0e..b1a4919e0 100644 --- a/.github/workflows/unit.tests.yml +++ b/.github/workflows/unit.tests.yml @@ -15,13 +15,13 @@ jobs: strategy: matrix: - node-version: [18.x] + node-version: [24.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: 'npm' diff --git a/src/endpoints/mex/mex.module.ts b/src/endpoints/mex/mex.module.ts index 06e18de12..9e19997b4 100644 --- a/src/endpoints/mex/mex.module.ts +++ b/src/endpoints/mex/mex.module.ts @@ -44,4 +44,4 @@ export class MexModule { providers: dynamicProviders, }; } -} \ No newline at end of file +} From 03a3f3fc87c13fb9a33ed696c94d207de7fb2bdf Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 11 May 2026 15:22:26 +0300 Subject: [PATCH 156/206] remove node engine requirement --- package.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/package.json b/package.json index 2bdbfcd1c..db06c4056 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,6 @@ "author": "", "private": true, "license": "UNLICENSED", - "engines": { - "node": ">=25 <26" - }, "scripts": { "prebuild": "run-script-os", "prebuild:nix": "rimraf dist", @@ -224,4 +221,4 @@ "node_modules" ] } -} \ No newline at end of file +} From 722a66c03f0710832b76f75638a9abc033168e8d Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 12 May 2026 12:28:44 +0300 Subject: [PATCH 157/206] add package lock --- package-lock.json | 3680 ++++++++++++++++++++------------------------- 1 file changed, 1639 insertions(+), 2041 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9d941bf83..12fafdd2f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -119,21 +119,18 @@ "tsconfig-paths": "^4.0.0", "typescript": "^4.6.2", "webpack": "^5.73.0" - }, - "engines": { - "node": ">=25 <26" } }, "node_modules/@adobe/css-tools": { "version": "4.4.4", - "resolved": "http://localhost:4873/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", "dev": true, "license": "MIT" }, "node_modules/@angular-devkit/core": { "version": "19.2.24", - "resolved": "http://localhost:4873/@angular-devkit/core/-/core-19.2.24.tgz", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.24.tgz", "integrity": "sha512-Kd49warf6U/EyWe5BszF/eebN3zQ3bk7tgfEljAw8q/rX95UUtriJubWvp6pgzHfzBA4jwq8f+QiNZB8eBEXPA==", "dev": true, "license": "MIT", @@ -161,7 +158,7 @@ }, "node_modules/@angular-devkit/core/node_modules/rxjs": { "version": "7.8.1", - "resolved": "http://localhost:4873/rxjs/-/rxjs-7.8.1.tgz", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, "license": "Apache-2.0", @@ -171,7 +168,7 @@ }, "node_modules/@angular-devkit/schematics": { "version": "19.2.24", - "resolved": "http://localhost:4873/@angular-devkit/schematics/-/schematics-19.2.24.tgz", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.24.tgz", "integrity": "sha512-lnw+ZM1Io+cJAkReC0NPDjqObL8NtKzKIkdgEEKC8CUmkhurYhedbicN8Y8NYHgG1uLd2GozW3+/QqPRZaN+Lw==", "dev": true, "license": "MIT", @@ -190,7 +187,7 @@ }, "node_modules/@angular-devkit/schematics-cli": { "version": "19.2.24", - "resolved": "http://localhost:4873/@angular-devkit/schematics-cli/-/schematics-cli-19.2.24.tgz", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.24.tgz", "integrity": "sha512-bsStZQG67J1HBqTmWxtIcobvgrn32L4UOdL7hGyOru5VxDWPNA8pRnDYavT3hnJeBkJYPoQIw8u7Dm0ecoQprw==", "dev": true, "license": "MIT", @@ -213,7 +210,7 @@ }, "node_modules/@angular-devkit/schematics-cli/node_modules/@inquirer/prompts": { "version": "7.3.2", - "resolved": "http://localhost:4873/@inquirer/prompts/-/prompts-7.3.2.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", "dev": true, "license": "MIT", @@ -243,7 +240,7 @@ }, "node_modules/@angular-devkit/schematics/node_modules/rxjs": { "version": "7.8.1", - "resolved": "http://localhost:4873/rxjs/-/rxjs-7.8.1.tgz", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, "license": "Apache-2.0", @@ -253,7 +250,7 @@ }, "node_modules/@apollo/cache-control-types": { "version": "1.0.3", - "resolved": "http://localhost:4873/@apollo/cache-control-types/-/cache-control-types-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/@apollo/cache-control-types/-/cache-control-types-1.0.3.tgz", "integrity": "sha512-F17/vCp7QVwom9eG7ToauIKdAxpSoadsJnqIfyryLFSkLSOEqu+eC5Z3N8OXcUVStuOMcNHlyraRsA6rRICu4g==", "license": "MIT", "peerDependencies": { @@ -261,9 +258,9 @@ } }, "node_modules/@apollo/protobufjs": { - "version": "1.2.7", - "resolved": "http://localhost:4873/@apollo/protobufjs/-/protobufjs-1.2.7.tgz", - "integrity": "sha512-Lahx5zntHPZia35myYDBRuF58tlwPskwHc5CWBZC/4bMKB6siTBWwtMrkqXcsNwQiFSzSx5hKdRPUmemrEp3Gg==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.8.tgz", + "integrity": "sha512-r7xNeUqZX+eBBEmyvaPw0/cSz6zgf5jdH8mjUz8ynKpNs/GU7vi2T7sNcZINk2ZID7wwjG91FCgdpCrQuJ8rzA==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { @@ -286,9 +283,9 @@ } }, "node_modules/@apollo/server": { - "version": "5.5.0", - "resolved": "http://localhost:4873/@apollo/server/-/server-5.5.0.tgz", - "integrity": "sha512-vWtodBOK/SZwBTJzItECOmLfL8E8pn/IdvP7pnxN5g2tny9iW4+9sxdajE798wV1H2+PYp/rRcl/soSHIBKMPw==", + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/@apollo/server/-/server-5.5.1.tgz", + "integrity": "sha512-Rn3g5TJQsMSUY23CWZTghWdBWyjX7dP1eaEBPkvmM2RHi82cDcpgTIkSCbGvtTUEGjwopLv1AAooU/n7iIZ20A==", "license": "MIT", "dependencies": { "@apollo/cache-control-types": "^1.0.3", @@ -310,7 +307,6 @@ "loglevel": "^1.6.8", "lru-cache": "^11.1.0", "negotiator": "^1.0.0", - "uuid": "^11.1.0", "whatwg-mimetype": "^4.0.0" }, "engines": { @@ -322,7 +318,7 @@ }, "node_modules/@apollo/server-gateway-interface": { "version": "2.0.0", - "resolved": "http://localhost:4873/@apollo/server-gateway-interface/-/server-gateway-interface-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/@apollo/server-gateway-interface/-/server-gateway-interface-2.0.0.tgz", "integrity": "sha512-3HEMD6fSantG2My3jWkb9dvfkF9vJ4BDLRjMgsnD790VINtuPaEp+h3Hg9HOHiWkML6QsOhnaRqZ+gvhp3y8Nw==", "license": "MIT", "dependencies": { @@ -337,7 +333,7 @@ }, "node_modules/@apollo/server-plugin-landing-page-graphql-playground": { "version": "4.0.1", - "resolved": "http://localhost:4873/@apollo/server-plugin-landing-page-graphql-playground/-/server-plugin-landing-page-graphql-playground-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/@apollo/server-plugin-landing-page-graphql-playground/-/server-plugin-landing-page-graphql-playground-4.0.1.tgz", "integrity": "sha512-tWhQzD7DtiTO/wfbGvasryz7eJSuEh9XJHgRTMZI7+Wu/omylG5gH6K6ksg1Vccg8/Xuglfi2f1M5Nm/IlBBGw==", "deprecated": "The use of GraphQL Playground in Apollo Server was supported in previous versions, but this is no longer the case as of December 31, 2022. This package exists for v4 migration purposes only. We do not intend to resolve security issues or other bugs with this package if they arise, so please migrate away from this to [Apollo Server's default Explorer](https://www.apollographql.com/docs/apollo-server/api/plugin/landing-pages) as soon as possible.", "license": "MIT", @@ -352,17 +348,17 @@ } }, "node_modules/@apollo/usage-reporting-protobuf": { - "version": "4.1.1", - "resolved": "http://localhost:4873/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.1.tgz", - "integrity": "sha512-u40dIUePHaSKVshcedO7Wp+mPiZsaU6xjv9J+VyxpoU/zL6Jle+9zWeG98tr/+SZ0nZ4OXhrbb8SNr0rAPpIDA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.2.tgz", + "integrity": "sha512-aTnAD41RYz0d5dawlyR5Iclkgzx0Xb0njUJmEfvZ6pS4f4HU8wCYyctPpWat/HWp2PmRwDfX5R1k4uVcDKZ4xA==", "license": "MIT", "dependencies": { - "@apollo/protobufjs": "1.2.7" + "@apollo/protobufjs": "1.2.8" } }, "node_modules/@apollo/utils.createhash": { "version": "3.0.1", - "resolved": "http://localhost:4873/@apollo/utils.createhash/-/utils.createhash-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-3.0.1.tgz", "integrity": "sha512-CKrlySj4eQYftBE5MJ8IzKwIibQnftDT7yGfsJy5KSEEnLlPASX0UTpbKqkjlVEwPPd4mEwI7WOM7XNxEuO05A==", "license": "MIT", "dependencies": { @@ -375,7 +371,7 @@ }, "node_modules/@apollo/utils.dropunuseddefinitions": { "version": "2.0.1", - "resolved": "http://localhost:4873/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-2.0.1.tgz", "integrity": "sha512-EsPIBqsSt2BwDsv8Wu76LK5R1KtsVkNoO4b0M5aK0hx+dGg9xJXuqlr7Fo34Dl+y83jmzn+UvEW+t1/GP2melA==", "license": "MIT", "engines": { @@ -387,7 +383,7 @@ }, "node_modules/@apollo/utils.fetcher": { "version": "3.1.0", - "resolved": "http://localhost:4873/@apollo/utils.fetcher/-/utils.fetcher-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/@apollo/utils.fetcher/-/utils.fetcher-3.1.0.tgz", "integrity": "sha512-Z3QAyrsQkvrdTuHAFwWDNd+0l50guwoQUoaDQssLOjkmnmVuvXlJykqlEJolio+4rFwBnWdoY1ByFdKaQEcm7A==", "license": "MIT", "engines": { @@ -396,7 +392,7 @@ }, "node_modules/@apollo/utils.isnodelike": { "version": "3.0.0", - "resolved": "http://localhost:4873/@apollo/utils.isnodelike/-/utils.isnodelike-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/@apollo/utils.isnodelike/-/utils.isnodelike-3.0.0.tgz", "integrity": "sha512-xrjyjfkzunZ0DeF6xkHaK5IKR8F1FBq6qV+uZ+h9worIF/2YSzA0uoBxGv6tbTeo9QoIQnRW4PVFzGix5E7n/g==", "license": "MIT", "engines": { @@ -405,7 +401,7 @@ }, "node_modules/@apollo/utils.keyvaluecache": { "version": "4.0.0", - "resolved": "http://localhost:4873/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-4.0.0.tgz", "integrity": "sha512-mKw1myRUkQsGPNB+9bglAuhviodJ2L2MRYLTafCMw5BIo7nbvCPNCkLnIHjZ1NOzH7SnMAr5c9LmXiqsgYqLZw==", "license": "MIT", "dependencies": { @@ -418,7 +414,7 @@ }, "node_modules/@apollo/utils.logger": { "version": "3.0.0", - "resolved": "http://localhost:4873/@apollo/utils.logger/-/utils.logger-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/@apollo/utils.logger/-/utils.logger-3.0.0.tgz", "integrity": "sha512-M8V8JOTH0F2qEi+ktPfw4RL7MvUycDfKp7aEap2eWXfL5SqWHN6jTLbj5f5fj1cceHpyaUSOZlvlaaryaxZAmg==", "license": "MIT", "engines": { @@ -427,7 +423,7 @@ }, "node_modules/@apollo/utils.printwithreducedwhitespace": { "version": "2.0.1", - "resolved": "http://localhost:4873/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-2.0.1.tgz", "integrity": "sha512-9M4LUXV/fQBh8vZWlLvb/HyyhjJ77/I5ZKu+NBWV/BmYGyRmoEP9EVAy7LCVoY3t8BDcyCAGfxJaLFCSuQkPUg==", "license": "MIT", "engines": { @@ -439,7 +435,7 @@ }, "node_modules/@apollo/utils.removealiases": { "version": "2.0.1", - "resolved": "http://localhost:4873/@apollo/utils.removealiases/-/utils.removealiases-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-2.0.1.tgz", "integrity": "sha512-0joRc2HBO4u594Op1nev+mUF6yRnxoUH64xw8x3bX7n8QBDYdeYgY4tF0vJReTy+zdn2xv6fMsquATSgC722FA==", "license": "MIT", "engines": { @@ -451,7 +447,7 @@ }, "node_modules/@apollo/utils.sortast": { "version": "2.0.1", - "resolved": "http://localhost:4873/@apollo/utils.sortast/-/utils.sortast-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-2.0.1.tgz", "integrity": "sha512-eciIavsWpJ09za1pn37wpsCGrQNXUhM0TktnZmHwO+Zy9O4fu/WdB4+5BvVhFiZYOXvfjzJUcc+hsIV8RUOtMw==", "license": "MIT", "dependencies": { @@ -466,7 +462,7 @@ }, "node_modules/@apollo/utils.stripsensitiveliterals": { "version": "2.0.1", - "resolved": "http://localhost:4873/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-2.0.1.tgz", "integrity": "sha512-QJs7HtzXS/JIPMKWimFnUMK7VjkGQTzqD9bKD1h3iuPAqLsxd0mUNVbkYOPTsDhUKgcvUOfOqOJWYohAKMvcSA==", "license": "MIT", "engines": { @@ -478,7 +474,7 @@ }, "node_modules/@apollo/utils.usagereporting": { "version": "2.1.0", - "resolved": "http://localhost:4873/@apollo/utils.usagereporting/-/utils.usagereporting-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-2.1.0.tgz", "integrity": "sha512-LPSlBrn+S17oBy5eWkrRSGb98sWmnEzo3DPTZgp8IQc8sJe0prDgDuppGq4NeQlpoqEHz0hQeYHAOA0Z3aQsxQ==", "license": "MIT", "dependencies": { @@ -498,7 +494,7 @@ }, "node_modules/@apollo/utils.withrequired": { "version": "3.0.0", - "resolved": "http://localhost:4873/@apollo/utils.withrequired/-/utils.withrequired-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/@apollo/utils.withrequired/-/utils.withrequired-3.0.0.tgz", "integrity": "sha512-aaxeavfJ+RHboh7c2ofO5HHtQobGX4AgUujXP4CXpREHp9fQ9jPi6K9T1jrAKe7HIipoP0OJ1gd6JamSkFIpvA==", "license": "MIT", "engines": { @@ -507,7 +503,7 @@ }, "node_modules/@apollographql/graphql-playground-html": { "version": "1.6.29", - "resolved": "http://localhost:4873/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", "license": "MIT", "dependencies": { @@ -516,7 +512,7 @@ }, "node_modules/@automock/adapters.nestjs": { "version": "2.1.0", - "resolved": "http://localhost:4873/@automock/adapters.nestjs/-/adapters.nestjs-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/@automock/adapters.nestjs/-/adapters.nestjs-2.1.0.tgz", "integrity": "sha512-cwolpTMF+frIm6idLC/zD0obgG/Wf5wP6I8FKJBcRy+Cuc9Pyy/E7200zafYlOVzUlZUP16VqchgGWpUyb1U3Q==", "dev": true, "hasInstallScript": true, @@ -532,14 +528,14 @@ }, "node_modules/@automock/adapters.nestjs/node_modules/reflect-metadata": { "version": "0.1.14", - "resolved": "http://localhost:4873/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", "dev": true, "license": "Apache-2.0" }, "node_modules/@automock/common": { "version": "3.1.0", - "resolved": "http://localhost:4873/@automock/common/-/common-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/@automock/common/-/common-3.1.0.tgz", "integrity": "sha512-Y7N4YnSZRuSIfGV4/PdG2JyURa9PK1maqGZBYUG2/sIW+H/Mlhc/3NpegnlUyQFRBexEJtgmUsvfzzI1/lm0JA==", "dev": true, "license": "MIT", @@ -552,7 +548,7 @@ }, "node_modules/@automock/core": { "version": "2.1.0", - "resolved": "http://localhost:4873/@automock/core/-/core-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/@automock/core/-/core-2.1.0.tgz", "integrity": "sha512-VIaY2woE7nWXhXKlNzk4+xzCuaVBXfGYwowrzdI+MmJBKqi2z0lUjNVix74hZRWhJpkOW+PR3UThFvThgyqIqQ==", "dev": true, "license": "MIT", @@ -567,7 +563,7 @@ }, "node_modules/@automock/jest": { "version": "2.1.2", - "resolved": "http://localhost:4873/@automock/jest/-/jest-2.1.2.tgz", + "resolved": "https://registry.npmjs.org/@automock/jest/-/jest-2.1.2.tgz", "integrity": "sha512-YZPwDrs0wnzjOWN7VDpqcMVlwQXPrd8auyBpHSTLjQIYhEv2yiqGPS4dSxiTDla/6MyunnYljbamFEPO9vfggQ==", "dev": true, "license": "MIT", @@ -584,14 +580,14 @@ }, "node_modules/@automock/types": { "version": "2.0.1", - "resolved": "http://localhost:4873/@automock/types/-/types-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/@automock/types/-/types-2.0.1.tgz", "integrity": "sha512-ue35e4im3n7l+Eqq3kCA2nNs8jzJbjYLni+vlPdgJ+9KfsEykJjA1OpnNN/PG1tDaM0iyR2p/uZg27MOC/qiTg==", "dev": true, "license": "MIT" }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", - "resolved": "http://localhost:4873/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "license": "Apache-2.0", "dependencies": { @@ -605,7 +601,7 @@ }, "node_modules/@aws-crypto/crc32c": { "version": "5.2.0", - "resolved": "http://localhost:4873/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", "license": "Apache-2.0", "dependencies": { @@ -616,7 +612,7 @@ }, "node_modules/@aws-crypto/sha1-browser": { "version": "5.2.0", - "resolved": "http://localhost:4873/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", "license": "Apache-2.0", "dependencies": { @@ -628,34 +624,9 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "http://localhost:4873/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "http://localhost:4873/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { "version": "2.3.0", - "resolved": "http://localhost:4873/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "license": "Apache-2.0", "dependencies": { @@ -668,7 +639,7 @@ }, "node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", - "resolved": "http://localhost:4873/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "license": "Apache-2.0", "dependencies": { @@ -681,34 +652,9 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "http://localhost:4873/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "http://localhost:4873/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { "version": "2.3.0", - "resolved": "http://localhost:4873/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "license": "Apache-2.0", "dependencies": { @@ -721,7 +667,7 @@ }, "node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", - "resolved": "http://localhost:4873/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", "license": "Apache-2.0", "dependencies": { @@ -735,7 +681,7 @@ }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "5.2.0", - "resolved": "http://localhost:4873/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", "license": "Apache-2.0", "dependencies": { @@ -744,7 +690,7 @@ }, "node_modules/@aws-crypto/util": { "version": "5.2.0", - "resolved": "http://localhost:4873/@aws-crypto/util/-/util-5.2.0.tgz", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", "license": "Apache-2.0", "dependencies": { @@ -753,34 +699,9 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "http://localhost:4873/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "http://localhost:4873/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { "version": "2.3.0", - "resolved": "http://localhost:4873/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "license": "Apache-2.0", "dependencies": { @@ -792,32 +713,32 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1038.0", - "resolved": "http://localhost:4873/@aws-sdk/client-s3/-/client-s3-3.1038.0.tgz", - "integrity": "sha512-k60qm50bWkaqNfCJe1z28WaqgpztE0wbWVMZw6ZJcTOGfrWFhsJeLCEqtkH8w00iEozKx9GQwdQXz4G0sMGdKA==", + "version": "3.1045.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1045.0.tgz", + "integrity": "sha512-fsuO3Y6t+3Ro9Bsg41DKj4Sfy53CGSrhnMldNplWmG8Tx0UbYk+YDa4RD1hVlJpERw4JBmPkl0+J9qlxMh1pcA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.6", - "@aws-sdk/credential-provider-node": "^3.972.37", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/credential-provider-node": "^3.972.39", "@aws-sdk/middleware-bucket-endpoint": "^3.972.10", "@aws-sdk/middleware-expect-continue": "^3.972.10", - "@aws-sdk/middleware-flexible-checksums": "^3.974.14", + "@aws-sdk/middleware-flexible-checksums": "^3.974.16", "@aws-sdk/middleware-host-header": "^3.972.10", "@aws-sdk/middleware-location-constraint": "^3.972.10", "@aws-sdk/middleware-logger": "^3.972.10", "@aws-sdk/middleware-recursion-detection": "^3.972.11", - "@aws-sdk/middleware-sdk-s3": "^3.972.35", + "@aws-sdk/middleware-sdk-s3": "^3.972.37", "@aws-sdk/middleware-ssec": "^3.972.10", - "@aws-sdk/middleware-user-agent": "^3.972.36", + "@aws-sdk/middleware-user-agent": "^3.972.38", "@aws-sdk/region-config-resolver": "^3.972.13", - "@aws-sdk/signature-v4-multi-region": "^3.996.23", + "@aws-sdk/signature-v4-multi-region": "^3.996.25", "@aws-sdk/types": "^3.973.8", "@aws-sdk/util-endpoints": "^3.996.8", "@aws-sdk/util-user-agent-browser": "^3.972.10", - "@aws-sdk/util-user-agent-node": "^3.973.22", + "@aws-sdk/util-user-agent-node": "^3.973.24", "@smithy/config-resolver": "^4.4.17", "@smithy/core": "^3.23.17", "@smithy/eventstream-serde-browser": "^4.2.14", @@ -831,7 +752,7 @@ "@smithy/md5-js": "^4.2.14", "@smithy/middleware-content-length": "^4.2.14", "@smithy/middleware-endpoint": "^4.4.32", - "@smithy/middleware-retry": "^4.5.6", + "@smithy/middleware-retry": "^4.5.7", "@smithy/middleware-serde": "^4.2.20", "@smithy/middleware-stack": "^4.2.14", "@smithy/node-config-provider": "^4.3.14", @@ -847,7 +768,7 @@ "@smithy/util-defaults-mode-node": "^4.2.54", "@smithy/util-endpoints": "^3.4.2", "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.5", + "@smithy/util-retry": "^4.3.6", "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", "@smithy/util-waiter": "^4.3.0", @@ -858,13 +779,13 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.974.6", - "resolved": "http://localhost:4873/@aws-sdk/core/-/core-3.974.6.tgz", - "integrity": "sha512-8Vu7zGxu+39ChR/s5J7nXBw3a2kMHAi0OfKT8ohgTVjX0qYed/8mIfdBb638oBmKrWCwwKjYAM5J/4gMJ8nAJA==", + "version": "3.974.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.8.tgz", + "integrity": "sha512-njR2qoG6ZuB0kvAS2FyICsFZJ6gmCcf2X/7JcD14sUvGDm26wiZ5BrA6LOiUxKFEF+IVe7kdroxyE00YlkiYsw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.8", - "@aws-sdk/xml-builder": "^3.972.20", + "@aws-sdk/xml-builder": "^3.972.22", "@smithy/core": "^3.23.17", "@smithy/node-config-provider": "^4.3.14", "@smithy/property-provider": "^4.2.14", @@ -874,7 +795,7 @@ "@smithy/types": "^4.14.1", "@smithy/util-base64": "^4.3.2", "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.5", + "@smithy/util-retry": "^4.3.6", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, @@ -884,7 +805,7 @@ }, "node_modules/@aws-sdk/crc64-nvme": { "version": "3.972.7", - "resolved": "http://localhost:4873/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.7.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.7.tgz", "integrity": "sha512-QUagVVBbC8gODCF6e1aV0mE2TXWB9Opz4k8EJFdNrujUVQm5R4AjJa1mpOqzwOuROBzqJU9zawzig7M96L8Ejg==", "license": "Apache-2.0", "dependencies": { @@ -896,12 +817,12 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.32", - "resolved": "http://localhost:4873/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.32.tgz", - "integrity": "sha512-7vA4GHg8NSmQxquJHSBcSM3RgB4ZaaRi6u4+zGFKOmOH6aqlgr2Sda46clkZDYzlirgfY96w15Zj0jh6PT48ng==", + "version": "3.972.34", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.34.tgz", + "integrity": "sha512-XT0jtf8Fw9JE6ppsQeoNnZRiG+jqRixMT1v1ZR17G60UvVdsQmTG8nbEyHuEPfMxDXEhfdARaM/XiEhca4lGHQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.6", + "@aws-sdk/core": "^3.974.8", "@aws-sdk/types": "^3.973.8", "@smithy/property-provider": "^4.2.14", "@smithy/types": "^4.14.1", @@ -912,12 +833,12 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.34", - "resolved": "http://localhost:4873/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.34.tgz", - "integrity": "sha512-vBrhWujFCLp1u8ptJRWYlipMutzPptb8pDQ00rKVH9q67T7rGd3VTWIj63aKrlLuY6qSsw1Rt5F/D/7wnNgryA==", + "version": "3.972.36", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.36.tgz", + "integrity": "sha512-DPoGWfy7J7RKxvbf5kOKIGQkD2ek3dbKgzKIGrnLuvZBz5myU+Im/H6pmc14QcnFbqHMqxvtWSgRDSJW3qXLQg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.6", + "@aws-sdk/core": "^3.974.8", "@aws-sdk/types": "^3.973.8", "@smithy/fetch-http-handler": "^5.3.17", "@smithy/node-http-handler": "^4.6.1", @@ -933,19 +854,19 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.36", - "resolved": "http://localhost:4873/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.36.tgz", - "integrity": "sha512-FBHyCmV8EB0gUvh1d+CZm87zt2PrdC7OyWexLRoH3I5zWSOUGa+9t58Y5jbxRfwUp3AWpHAFvKY6YzgR845sVA==", + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.38.tgz", + "integrity": "sha512-oDzUBu2MGJFgoar05sPMCwSrhw44ASyccrHzj66vO69OZqi7I6hZZxXfuPLC8OCzW7C+sU+bI73XHij41yekgQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.6", - "@aws-sdk/credential-provider-env": "^3.972.32", - "@aws-sdk/credential-provider-http": "^3.972.34", - "@aws-sdk/credential-provider-login": "^3.972.36", - "@aws-sdk/credential-provider-process": "^3.972.32", - "@aws-sdk/credential-provider-sso": "^3.972.36", - "@aws-sdk/credential-provider-web-identity": "^3.972.36", - "@aws-sdk/nested-clients": "^3.997.4", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/credential-provider-env": "^3.972.34", + "@aws-sdk/credential-provider-http": "^3.972.36", + "@aws-sdk/credential-provider-login": "^3.972.38", + "@aws-sdk/credential-provider-process": "^3.972.34", + "@aws-sdk/credential-provider-sso": "^3.972.38", + "@aws-sdk/credential-provider-web-identity": "^3.972.38", + "@aws-sdk/nested-clients": "^3.997.6", "@aws-sdk/types": "^3.973.8", "@smithy/credential-provider-imds": "^4.2.14", "@smithy/property-provider": "^4.2.14", @@ -958,13 +879,13 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.36", - "resolved": "http://localhost:4873/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.36.tgz", - "integrity": "sha512-IFap01lJKxQc0C/OHmZwZQr/cKq0DhrcmKedRrdnnl42D+P0SImnnnWQjv07uIPqpEdtqmkPXb9TiPYTU+prxQ==", + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.38.tgz", + "integrity": "sha512-g1NosS8qe4OF++G2UFCM5ovSkgipC7YYor5KCWatG0UoMSO5YFj9C8muePlyVmOBV/WTI16Jo3/s1NUo/o1Bww==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.6", - "@aws-sdk/nested-clients": "^3.997.4", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/nested-clients": "^3.997.6", "@aws-sdk/types": "^3.973.8", "@smithy/property-provider": "^4.2.14", "@smithy/protocol-http": "^5.3.14", @@ -977,17 +898,17 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.37", - "resolved": "http://localhost:4873/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.37.tgz", - "integrity": "sha512-/WFixFAAiw8WpmjZcI0l4t3DerXLmVinOIfuotmRZnu2qmsFPoqqmstASz0z8bi1pGdFXzeLzf6bwucM3mZcUQ==", + "version": "3.972.39", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.39.tgz", + "integrity": "sha512-HEswDQyxUtadoZ/bJsPPENHg7R0Lzym5LuMksJeHvqhCOpP+rtkDLKI4/ZChH4w3cf5kG8n6bZuI8PzajoiqMg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.32", - "@aws-sdk/credential-provider-http": "^3.972.34", - "@aws-sdk/credential-provider-ini": "^3.972.36", - "@aws-sdk/credential-provider-process": "^3.972.32", - "@aws-sdk/credential-provider-sso": "^3.972.36", - "@aws-sdk/credential-provider-web-identity": "^3.972.36", + "@aws-sdk/credential-provider-env": "^3.972.34", + "@aws-sdk/credential-provider-http": "^3.972.36", + "@aws-sdk/credential-provider-ini": "^3.972.38", + "@aws-sdk/credential-provider-process": "^3.972.34", + "@aws-sdk/credential-provider-sso": "^3.972.38", + "@aws-sdk/credential-provider-web-identity": "^3.972.38", "@aws-sdk/types": "^3.973.8", "@smithy/credential-provider-imds": "^4.2.14", "@smithy/property-provider": "^4.2.14", @@ -1000,12 +921,12 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.32", - "resolved": "http://localhost:4873/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.32.tgz", - "integrity": "sha512-uZp4tlGbpczV8QxmtIwOpSkcyGtBRR8/T4BAumRKfAt1nwCig3FSCZvrKl6ARDIDVRYn5p2oRcAsfFR01EgMGA==", + "version": "3.972.34", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.34.tgz", + "integrity": "sha512-T3IFs4EVmVi1dVN5RciFnklCANSzvrQd/VuHY9ThHSQmYkTogjcGkoJEr+oNUPQZnso52183088NqysMPji1/Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.6", + "@aws-sdk/core": "^3.974.8", "@aws-sdk/types": "^3.973.8", "@smithy/property-provider": "^4.2.14", "@smithy/shared-ini-file-loader": "^4.4.9", @@ -1017,14 +938,14 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.36", - "resolved": "http://localhost:4873/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.36.tgz", - "integrity": "sha512-DsLr0UHMyKzRJKe2bjlwU8q1cfoXg8TIJKV/xwvnalAemiZLOZunFzj/whGnFDZIBVLdnbLiwv5SvRf1+CSwkg==", + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.38.tgz", + "integrity": "sha512-5ZxG+t0+3Q3QPh8KEjX6syskhgNf7I0MN7oGioTf6Lm1NTjfP7sIcYGNsthXC2qR8vcD3edNZwCr2ovfSSWuRA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.6", - "@aws-sdk/nested-clients": "^3.997.4", - "@aws-sdk/token-providers": "3.1038.0", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/nested-clients": "^3.997.6", + "@aws-sdk/token-providers": "3.1041.0", "@aws-sdk/types": "^3.973.8", "@smithy/property-provider": "^4.2.14", "@smithy/shared-ini-file-loader": "^4.4.9", @@ -1036,13 +957,13 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.36", - "resolved": "http://localhost:4873/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.36.tgz", - "integrity": "sha512-uzrURO7frJhHQVVNR5zBJcCYeMYflmXcWBK1+MiBym2Dfjh6nXATrMixrmGZi+97Q7ETZ+y/4lUwAy0Nfnznjw==", + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.38.tgz", + "integrity": "sha512-lYHFF30DGI20jZcYX8cm6Ns0V7f1dDN6g/MBDLTyD/5iw+bXs3yBr2iAiHDkx4RFU5JgsnZvCHYKiRVPRdmOgw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.6", - "@aws-sdk/nested-clients": "^3.997.4", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/nested-clients": "^3.997.6", "@aws-sdk/types": "^3.973.8", "@smithy/property-provider": "^4.2.14", "@smithy/shared-ini-file-loader": "^4.4.9", @@ -1055,7 +976,7 @@ }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { "version": "3.972.10", - "resolved": "http://localhost:4873/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.10.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.10.tgz", "integrity": "sha512-Vbc2frZH7wXlMNd+ZZSXUEs/l1Sv8Jj4zUnIfwrYF5lwaLdXHZ9xx4U3rjUcaye3HRhFVc+E5DbBxpRAbB16BA==", "license": "Apache-2.0", "dependencies": { @@ -1073,7 +994,7 @@ }, "node_modules/@aws-sdk/middleware-expect-continue": { "version": "3.972.10", - "resolved": "http://localhost:4873/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.10.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.10.tgz", "integrity": "sha512-2Yn0f1Qiq/DjxYR3wfI3LokXnjOhFM7Ssn4LTdFDIxRMCE6I32MAsVnhPX1cUZsuVA9tiZtwwhlSLAtFGxAZlQ==", "license": "Apache-2.0", "dependencies": { @@ -1087,15 +1008,15 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.974.14", - "resolved": "http://localhost:4873/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.14.tgz", - "integrity": "sha512-mhTO3amGzYv/DQNbbqZo6UkHquBHlEEVRZwXmjeRqLmy1l9z3xCiFzglPL7n9JpVc2DZc9kjaraAn3JQrueZbw==", + "version": "3.974.16", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.16.tgz", + "integrity": "sha512-6ru8doI0/XzszqLIPXf0E/V7HhAw1Pu94010XCKYtBUfD0LxF0BuOzrUf8OQGR6j2o6wgKTHUniOmndQycHwCA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.974.6", + "@aws-sdk/core": "^3.974.8", "@aws-sdk/crc64-nvme": "^3.972.7", "@aws-sdk/types": "^3.973.8", "@smithy/is-array-buffer": "^4.2.2", @@ -1113,7 +1034,7 @@ }, "node_modules/@aws-sdk/middleware-host-header": { "version": "3.972.10", - "resolved": "http://localhost:4873/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.10.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.10.tgz", "integrity": "sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==", "license": "Apache-2.0", "dependencies": { @@ -1128,7 +1049,7 @@ }, "node_modules/@aws-sdk/middleware-location-constraint": { "version": "3.972.10", - "resolved": "http://localhost:4873/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.10.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.10.tgz", "integrity": "sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ==", "license": "Apache-2.0", "dependencies": { @@ -1142,7 +1063,7 @@ }, "node_modules/@aws-sdk/middleware-logger": { "version": "3.972.10", - "resolved": "http://localhost:4873/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz", "integrity": "sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==", "license": "Apache-2.0", "dependencies": { @@ -1156,7 +1077,7 @@ }, "node_modules/@aws-sdk/middleware-recursion-detection": { "version": "3.972.11", - "resolved": "http://localhost:4873/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.11.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.11.tgz", "integrity": "sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==", "license": "Apache-2.0", "dependencies": { @@ -1171,12 +1092,12 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.35", - "resolved": "http://localhost:4873/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.35.tgz", - "integrity": "sha512-lLppaNTAz+wNgLdi4FtHzrlwrGF0ODTnBWHBaFg85SKs0eJ+M+tP5ifrA8f/0lNd+Ak3MC1NGC6RavV3ny4HTg==", + "version": "3.972.37", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.37.tgz", + "integrity": "sha512-Km7M+i8DrLArVzrid1gfxeGhYHBd3uxvE77g0s5a52zPSVosxzQBnJ0gwWb6NIp/DOk8gsBMhi7V+cpJG0ndTA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.6", + "@aws-sdk/core": "^3.974.8", "@aws-sdk/types": "^3.973.8", "@aws-sdk/util-arn-parser": "^3.972.3", "@smithy/core": "^3.23.17", @@ -1197,7 +1118,7 @@ }, "node_modules/@aws-sdk/middleware-ssec": { "version": "3.972.10", - "resolved": "http://localhost:4873/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.10.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.10.tgz", "integrity": "sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw==", "license": "Apache-2.0", "dependencies": { @@ -1210,18 +1131,18 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.36", - "resolved": "http://localhost:4873/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.36.tgz", - "integrity": "sha512-O2beToxguBvrZFFZ+fFgPbbae8MvyIBjQ6lImee4APHEXXNAD5ZJ2ayLF1mb7rsKw86TM81y5czg82bZncjSjg==", + "version": "3.972.38", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.38.tgz", + "integrity": "sha512-iz+B29TXcAZsJpwB+AwG/TTGA5l/VnmMZ2UxtiySOZjI6gCdmviXPwdgzcmuazMy16rXoPY4mYCGe7zdNKfx5A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.6", + "@aws-sdk/core": "^3.974.8", "@aws-sdk/types": "^3.973.8", "@aws-sdk/util-endpoints": "^3.996.8", "@smithy/core": "^3.23.17", "@smithy/protocol-http": "^5.3.14", "@smithy/types": "^4.14.1", - "@smithy/util-retry": "^4.3.5", + "@smithy/util-retry": "^4.3.6", "tslib": "^2.6.2" }, "engines": { @@ -1229,24 +1150,24 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.4", - "resolved": "http://localhost:4873/@aws-sdk/nested-clients/-/nested-clients-3.997.4.tgz", - "integrity": "sha512-4Sf+WY1lMJzXlw5MiyCMe/UzdILCwvuaHThbqMXS6dfh9gZy3No360I42RXquOI/ULUOhWy2HCyU0Fp20fQGPQ==", + "version": "3.997.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.6.tgz", + "integrity": "sha512-WBDnqatJl+kGObpfmfSxqnXeYTu3Me8wx8WCtvoxX3pfWrrTv8I4WTMSSs7PZqcRcVh8WeUKMgGFjMG+52SR1w==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.6", + "@aws-sdk/core": "^3.974.8", "@aws-sdk/middleware-host-header": "^3.972.10", "@aws-sdk/middleware-logger": "^3.972.10", "@aws-sdk/middleware-recursion-detection": "^3.972.11", - "@aws-sdk/middleware-user-agent": "^3.972.36", + "@aws-sdk/middleware-user-agent": "^3.972.38", "@aws-sdk/region-config-resolver": "^3.972.13", - "@aws-sdk/signature-v4-multi-region": "^3.996.23", + "@aws-sdk/signature-v4-multi-region": "^3.996.25", "@aws-sdk/types": "^3.973.8", "@aws-sdk/util-endpoints": "^3.996.8", "@aws-sdk/util-user-agent-browser": "^3.972.10", - "@aws-sdk/util-user-agent-node": "^3.973.22", + "@aws-sdk/util-user-agent-node": "^3.973.24", "@smithy/config-resolver": "^4.4.17", "@smithy/core": "^3.23.17", "@smithy/fetch-http-handler": "^5.3.17", @@ -1254,7 +1175,7 @@ "@smithy/invalid-dependency": "^4.2.14", "@smithy/middleware-content-length": "^4.2.14", "@smithy/middleware-endpoint": "^4.4.32", - "@smithy/middleware-retry": "^4.5.6", + "@smithy/middleware-retry": "^4.5.7", "@smithy/middleware-serde": "^4.2.20", "@smithy/middleware-stack": "^4.2.14", "@smithy/node-config-provider": "^4.3.14", @@ -1270,7 +1191,7 @@ "@smithy/util-defaults-mode-node": "^4.2.54", "@smithy/util-endpoints": "^3.4.2", "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.5", + "@smithy/util-retry": "^4.3.6", "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, @@ -1280,7 +1201,7 @@ }, "node_modules/@aws-sdk/region-config-resolver": { "version": "3.972.13", - "resolved": "http://localhost:4873/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.13.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.13.tgz", "integrity": "sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==", "license": "Apache-2.0", "dependencies": { @@ -1295,12 +1216,12 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.23", - "resolved": "http://localhost:4873/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.23.tgz", - "integrity": "sha512-wBbys3Y53Ikly556vyADurKpYQHXS7Jjaskbz+Ga9PZCz7PB/9f3VdKbDlz7dqIzn+xwz7L/a6TR4iXcOi8IRw==", + "version": "3.996.25", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.25.tgz", + "integrity": "sha512-+CMIt3e1VzlklAECmG+DtP1sV8iKq25FuA0OKpnJ4KA0kxUtd7CgClY7/RU6VzJBQwbN4EJ9Ue6plvqx1qGadw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "^3.972.35", + "@aws-sdk/middleware-sdk-s3": "^3.972.37", "@aws-sdk/types": "^3.973.8", "@smithy/protocol-http": "^5.3.14", "@smithy/signature-v4": "^5.3.14", @@ -1312,13 +1233,13 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1038.0", - "resolved": "http://localhost:4873/@aws-sdk/token-providers/-/token-providers-3.1038.0.tgz", - "integrity": "sha512-Qniru+9oGGb/HNK/gGZWbV3jsD0k71ngE7qMQ/x6gYNYLd2EOwHCS6E2E6jfkaqO4i0d+nNKmfRy8bNcshKdGQ==", + "version": "3.1041.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1041.0.tgz", + "integrity": "sha512-Th7kPI6YPtvJUcdznooXJMy+9rQWjmEF81LxaJssngBzuysK4a/x+l8kjm1zb7nYsUPbndnBdUnwng/3PLvtGw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.6", - "@aws-sdk/nested-clients": "^3.997.4", + "@aws-sdk/core": "^3.974.8", + "@aws-sdk/nested-clients": "^3.997.6", "@aws-sdk/types": "^3.973.8", "@smithy/property-provider": "^4.2.14", "@smithy/shared-ini-file-loader": "^4.4.9", @@ -1331,7 +1252,7 @@ }, "node_modules/@aws-sdk/types": { "version": "3.973.8", - "resolved": "http://localhost:4873/@aws-sdk/types/-/types-3.973.8.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", "license": "Apache-2.0", "dependencies": { @@ -1344,7 +1265,7 @@ }, "node_modules/@aws-sdk/util-arn-parser": { "version": "3.972.3", - "resolved": "http://localhost:4873/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", "integrity": "sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==", "license": "Apache-2.0", "dependencies": { @@ -1356,7 +1277,7 @@ }, "node_modules/@aws-sdk/util-endpoints": { "version": "3.996.8", - "resolved": "http://localhost:4873/@aws-sdk/util-endpoints/-/util-endpoints-3.996.8.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.8.tgz", "integrity": "sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==", "license": "Apache-2.0", "dependencies": { @@ -1372,7 +1293,7 @@ }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.965.5", - "resolved": "http://localhost:4873/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", "license": "Apache-2.0", "dependencies": { @@ -1384,7 +1305,7 @@ }, "node_modules/@aws-sdk/util-user-agent-browser": { "version": "3.972.10", - "resolved": "http://localhost:4873/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.10.tgz", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.10.tgz", "integrity": "sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==", "license": "Apache-2.0", "dependencies": { @@ -1395,12 +1316,12 @@ } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.973.22", - "resolved": "http://localhost:4873/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.22.tgz", - "integrity": "sha512-YTYqTmOUrwbm1h99Ee4y/mVYpFRl0oSO/amtP5cc1BZZWdaAVWs9zj3TkyRHWvR9aI/ZS8m3mS6awXtYUlWyaw==", + "version": "3.973.24", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.24.tgz", + "integrity": "sha512-ZWwlkjcIp7cEL8ZfTpTAPNkwx25p7xol0xlKoWVVf22+nsjwmLcHYtTPjIV1cSpmB/b6DaK4cb1fSkvCXHgRdw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.36", + "@aws-sdk/middleware-user-agent": "^3.972.38", "@aws-sdk/types": "^3.973.8", "@smithy/node-config-provider": "^4.3.14", "@smithy/types": "^4.14.1", @@ -1420,9 +1341,9 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.21", - "resolved": "http://localhost:4873/@aws-sdk/xml-builder/-/xml-builder-3.972.21.tgz", - "integrity": "sha512-qxNiHUtlrsjTeSlrPWiFkWps7uD6YB4eKzg7eLAFH8jbiHTlt0ePNlo2Xu+WlftP38JIcMaIX4jTUjOlE2ySWw==", + "version": "3.972.22", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.22.tgz", + "integrity": "sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA==", "license": "Apache-2.0", "dependencies": { "@nodable/entities": "2.1.0", @@ -1436,7 +1357,7 @@ }, "node_modules/@aws/lambda-invoke-store": { "version": "0.2.4", - "resolved": "http://localhost:4873/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", "license": "Apache-2.0", "engines": { @@ -1445,7 +1366,7 @@ }, "node_modules/@babel/code-frame": { "version": "7.29.0", - "resolved": "http://localhost:4873/@babel/code-frame/-/code-frame-7.29.0.tgz", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", @@ -1459,9 +1380,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "http://localhost:4873/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", + "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", "dev": true, "license": "MIT", "engines": { @@ -1470,7 +1391,7 @@ }, "node_modules/@babel/core": { "version": "7.29.0", - "resolved": "http://localhost:4873/@babel/core/-/core-7.29.0.tgz", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", @@ -1501,7 +1422,7 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", - "resolved": "http://localhost:4873/semver/-/semver-6.3.1.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", @@ -1511,7 +1432,7 @@ }, "node_modules/@babel/generator": { "version": "7.29.1", - "resolved": "http://localhost:4873/@babel/generator/-/generator-7.29.1.tgz", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, "license": "MIT", @@ -1528,7 +1449,7 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.28.6", - "resolved": "http://localhost:4873/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", @@ -1545,7 +1466,7 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { "version": "5.1.1", - "resolved": "http://localhost:4873/lru-cache/-/lru-cache-5.1.1.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", @@ -1555,7 +1476,7 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", - "resolved": "http://localhost:4873/semver/-/semver-6.3.1.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", @@ -1565,7 +1486,7 @@ }, "node_modules/@babel/helper-globals": { "version": "7.28.0", - "resolved": "http://localhost:4873/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, "license": "MIT", @@ -1575,7 +1496,7 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.28.6", - "resolved": "http://localhost:4873/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", @@ -1589,7 +1510,7 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.28.6", - "resolved": "http://localhost:4873/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", @@ -1607,7 +1528,7 @@ }, "node_modules/@babel/helper-plugin-utils": { "version": "7.28.6", - "resolved": "http://localhost:4873/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", @@ -1617,7 +1538,7 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", - "resolved": "http://localhost:4873/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", @@ -1627,7 +1548,7 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.28.5", - "resolved": "http://localhost:4873/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", @@ -1637,7 +1558,7 @@ }, "node_modules/@babel/helper-validator-option": { "version": "7.27.1", - "resolved": "http://localhost:4873/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", @@ -1647,7 +1568,7 @@ }, "node_modules/@babel/helpers": { "version": "7.29.2", - "resolved": "http://localhost:4873/@babel/helpers/-/helpers-7.29.2.tgz", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", "dev": true, "license": "MIT", @@ -1660,9 +1581,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "http://localhost:4873/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz", + "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", "dev": true, "license": "MIT", "dependencies": { @@ -1677,7 +1598,7 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", - "resolved": "http://localhost:4873/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", @@ -1690,7 +1611,7 @@ }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", - "resolved": "http://localhost:4873/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, "license": "MIT", @@ -1703,7 +1624,7 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", - "resolved": "http://localhost:4873/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "license": "MIT", @@ -1716,7 +1637,7 @@ }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", - "resolved": "http://localhost:4873/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "license": "MIT", @@ -1732,7 +1653,7 @@ }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.28.6", - "resolved": "http://localhost:4873/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, "license": "MIT", @@ -1748,7 +1669,7 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", - "resolved": "http://localhost:4873/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "license": "MIT", @@ -1761,7 +1682,7 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", - "resolved": "http://localhost:4873/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", @@ -1774,7 +1695,7 @@ }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.28.6", - "resolved": "http://localhost:4873/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", @@ -1790,7 +1711,7 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", - "resolved": "http://localhost:4873/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "license": "MIT", @@ -1803,7 +1724,7 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", - "resolved": "http://localhost:4873/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "license": "MIT", @@ -1816,7 +1737,7 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", - "resolved": "http://localhost:4873/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "license": "MIT", @@ -1829,7 +1750,7 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", - "resolved": "http://localhost:4873/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "license": "MIT", @@ -1842,7 +1763,7 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", - "resolved": "http://localhost:4873/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "license": "MIT", @@ -1855,7 +1776,7 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "resolved": "http://localhost:4873/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "license": "MIT", @@ -1868,7 +1789,7 @@ }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", - "resolved": "http://localhost:4873/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "license": "MIT", @@ -1884,7 +1805,7 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", - "resolved": "http://localhost:4873/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "license": "MIT", @@ -1900,7 +1821,7 @@ }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.28.6", - "resolved": "http://localhost:4873/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, "license": "MIT", @@ -1916,7 +1837,7 @@ }, "node_modules/@babel/runtime": { "version": "7.29.2", - "resolved": "http://localhost:4873/@babel/runtime/-/runtime-7.29.2.tgz", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", "license": "MIT", "engines": { @@ -1925,7 +1846,7 @@ }, "node_modules/@babel/template": { "version": "7.28.6", - "resolved": "http://localhost:4873/@babel/template/-/template-7.28.6.tgz", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", @@ -1940,7 +1861,7 @@ }, "node_modules/@babel/traverse": { "version": "7.29.0", - "resolved": "http://localhost:4873/@babel/traverse/-/traverse-7.29.0.tgz", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", @@ -1959,7 +1880,7 @@ }, "node_modules/@babel/types": { "version": "7.29.0", - "resolved": "http://localhost:4873/@babel/types/-/types-7.29.0.tgz", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", @@ -1973,14 +1894,14 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "resolved": "http://localhost:4873/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true, "license": "MIT" }, "node_modules/@borewit/text-codec": { "version": "0.2.2", - "resolved": "http://localhost:4873/@borewit/text-codec/-/text-codec-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz", "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==", "license": "MIT", "funding": { @@ -1990,7 +1911,7 @@ }, "node_modules/@colors/colors": { "version": "1.5.0", - "resolved": "http://localhost:4873/@colors/colors/-/colors-1.5.0.tgz", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, "license": "MIT", @@ -2001,7 +1922,7 @@ }, "node_modules/@cspotcode/source-map-consumer": { "version": "0.8.0", - "resolved": "http://localhost:4873/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", "devOptional": true, "license": "BSD-3-Clause", @@ -2011,7 +1932,7 @@ }, "node_modules/@cspotcode/source-map-support": { "version": "0.7.0", - "resolved": "http://localhost:4873/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", "devOptional": true, "license": "MIT", @@ -2024,7 +1945,7 @@ }, "node_modules/@dabh/diagnostics": { "version": "2.0.8", - "resolved": "http://localhost:4873/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", "integrity": "sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==", "license": "MIT", "dependencies": { @@ -2035,13 +1956,13 @@ }, "node_modules/@datadog/libdatadog": { "version": "0.6.0", - "resolved": "http://localhost:4873/@datadog/libdatadog/-/libdatadog-0.6.0.tgz", + "resolved": "https://registry.npmjs.org/@datadog/libdatadog/-/libdatadog-0.6.0.tgz", "integrity": "sha512-Ldu+U59LUnejtd7ceXMKJCAFZeYpNdTEEXr8PISY9HFXMa4DOwepcWMaJAAqCPU7LINJeivVwvSD1Pm14VZy7w==", "license": "Apache-2.0" }, "node_modules/@datadog/native-appsec": { "version": "8.5.2", - "resolved": "http://localhost:4873/@datadog/native-appsec/-/native-appsec-8.5.2.tgz", + "resolved": "https://registry.npmjs.org/@datadog/native-appsec/-/native-appsec-8.5.2.tgz", "integrity": "sha512-lETBaVhBk+9o0pc+LDnXvp2ImDyT8K2deuqLf8A6q4/QjzCCXyR/yZO9R5+Kdoc93jZMRTWV9Pr4pBwHEdJSVA==", "hasInstallScript": true, "license": "Apache-2.0", @@ -2054,7 +1975,7 @@ }, "node_modules/@datadog/native-iast-taint-tracking": { "version": "4.0.0", - "resolved": "http://localhost:4873/@datadog/native-iast-taint-tracking/-/native-iast-taint-tracking-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/@datadog/native-iast-taint-tracking/-/native-iast-taint-tracking-4.0.0.tgz", "integrity": "sha512-2uF8RnQkJO5bmLi26Zkhxg+RFJn/uEsesYTflScI/Cz/BWv+792bxI+OaCKvhgmpLkm8EElenlpidcJyZm7GYw==", "hasInstallScript": true, "license": "Apache-2.0", @@ -2064,7 +1985,7 @@ }, "node_modules/@datadog/native-metrics": { "version": "3.1.1", - "resolved": "http://localhost:4873/@datadog/native-metrics/-/native-metrics-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/@datadog/native-metrics/-/native-metrics-3.1.1.tgz", "integrity": "sha512-MU1gHrolwryrU4X9g+fylA1KPH3S46oqJPEtVyrO+3Kh29z80fegmtyrU22bNt8LigPUK/EdPCnSbMe88QbnxQ==", "hasInstallScript": true, "license": "Apache-2.0", @@ -2078,7 +1999,7 @@ }, "node_modules/@datadog/pprof": { "version": "5.8.2", - "resolved": "http://localhost:4873/@datadog/pprof/-/pprof-5.8.2.tgz", + "resolved": "https://registry.npmjs.org/@datadog/pprof/-/pprof-5.8.2.tgz", "integrity": "sha512-M+bO4v4TaxYK6k2qJBxnhf7Vh25Wode64y4LfxzGs5kLTFr8eFTp6HJai3/af7U5gjTHX/4s+CHv2bxja97pbw==", "hasInstallScript": true, "license": "Apache-2.0", @@ -2095,13 +2016,13 @@ }, "node_modules/@datadog/sketches-js": { "version": "2.1.1", - "resolved": "http://localhost:4873/@datadog/sketches-js/-/sketches-js-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/@datadog/sketches-js/-/sketches-js-2.1.1.tgz", "integrity": "sha512-d5RjycE+MObE/hU+8OM5Zp4VjTwiPLRa8299fj7muOmR16fb942z8byoMbCErnGh0lBevvgkGrLclQDvINbIyg==", "license": "Apache-2.0" }, "node_modules/@datadog/wasm-js-rewriter": { "version": "4.0.1", - "resolved": "http://localhost:4873/@datadog/wasm-js-rewriter/-/wasm-js-rewriter-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/@datadog/wasm-js-rewriter/-/wasm-js-rewriter-4.0.1.tgz", "integrity": "sha512-JRa05Je6gw+9+3yZnm/BroQZrEfNwRYCxms56WCCHzOBnoPihQLB0fWy5coVJS29kneCUueUvBvxGp6NVXgdqw==", "license": "Apache-2.0", "dependencies": { @@ -2116,7 +2037,7 @@ }, "node_modules/@datadog/wasm-js-rewriter/node_modules/lru-cache": { "version": "7.18.3", - "resolved": "http://localhost:4873/lru-cache/-/lru-cache-7.18.3.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "license": "ISC", "engines": { @@ -2125,7 +2046,7 @@ }, "node_modules/@datadog/wasm-js-rewriter/node_modules/node-gyp-build": { "version": "4.8.4", - "resolved": "http://localhost:4873/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "license": "MIT", "bin": { @@ -2136,7 +2057,7 @@ }, "node_modules/@emnapi/runtime": { "version": "1.10.0", - "resolved": "http://localhost:4873/@emnapi/runtime/-/runtime-1.10.0.tgz", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", "license": "MIT", "optional": true, @@ -2146,7 +2067,7 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", - "resolved": "http://localhost:4873/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", @@ -2165,7 +2086,7 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.12.2", - "resolved": "http://localhost:4873/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", @@ -2175,7 +2096,7 @@ }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", - "resolved": "http://localhost:4873/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", @@ -2199,7 +2120,7 @@ }, "node_modules/@eslint/eslintrc/node_modules/ajv": { "version": "6.15.0", - "resolved": "http://localhost:4873/ajv/-/ajv-6.15.0.tgz", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", @@ -2216,14 +2137,14 @@ }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "http://localhost:4873/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, "node_modules/@eslint/js": { "version": "8.57.1", - "resolved": "http://localhost:4873/@eslint/js/-/js-8.57.1.tgz", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", @@ -2233,7 +2154,7 @@ }, "node_modules/@golevelup/nestjs-discovery": { "version": "7.0.0", - "resolved": "http://localhost:4873/@golevelup/nestjs-discovery/-/nestjs-discovery-7.0.0.tgz", + "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-7.0.0.tgz", "integrity": "sha512-l2O4qokytyBwTqNKNOv3OITdJtYfV0f6eLqR5c0brS1Hy4MV4h9YXy+o534yczOcxWnDfeATArDpLxz88wonSQ==", "license": "MIT", "dependencies": { @@ -2246,7 +2167,7 @@ }, "node_modules/@golevelup/nestjs-rabbitmq": { "version": "9.0.0", - "resolved": "http://localhost:4873/@golevelup/nestjs-rabbitmq/-/nestjs-rabbitmq-9.0.0.tgz", + "resolved": "https://registry.npmjs.org/@golevelup/nestjs-rabbitmq/-/nestjs-rabbitmq-9.0.0.tgz", "integrity": "sha512-sPQuLk73ZqHSO9fs9+WvYRYh56cQZWNsnIhGcthVgADCb2gzzflVYFqMgOyP+ZbUDvdrahw6RXeC0Vn9nTLtNw==", "license": "MIT", "dependencies": { @@ -2264,7 +2185,7 @@ }, "node_modules/@golevelup/nestjs-rabbitmq/node_modules/amqp-connection-manager": { "version": "5.0.0", - "resolved": "http://localhost:4873/amqp-connection-manager/-/amqp-connection-manager-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/amqp-connection-manager/-/amqp-connection-manager-5.0.0.tgz", "integrity": "sha512-88yQzqa5RSBgnLl504XjvCQJ7d+osskdwvg35Lwm1LRbfLjNU9p7SQUMSP82BB7mseiq9tIUPJ3HE3eXQbpjEw==", "license": "MIT", "dependencies": { @@ -2280,7 +2201,7 @@ }, "node_modules/@graphql-tools/merge": { "version": "9.1.9", - "resolved": "http://localhost:4873/@graphql-tools/merge/-/merge-9.1.9.tgz", + "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.1.9.tgz", "integrity": "sha512-iHUWNjRHeQRYdgIMIuChThOwoKzA9vrzYeslgfBo5eUYEyHGZCoDPjAavssoYXLwstYt1dZj2J22jSzc2DrN0Q==", "license": "MIT", "dependencies": { @@ -2296,7 +2217,7 @@ }, "node_modules/@graphql-tools/schema": { "version": "10.0.33", - "resolved": "http://localhost:4873/@graphql-tools/schema/-/schema-10.0.33.tgz", + "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.33.tgz", "integrity": "sha512-O6P3RIftO0jafnSsFAqpjurUuUxJ43s/AdPVLQsBkI6y4Ic/tKm4C1Qm1KKQsCDTOxXPJClh/v3g7k7yLKCFBQ==", "license": "MIT", "dependencies": { @@ -2313,7 +2234,7 @@ }, "node_modules/@graphql-tools/utils": { "version": "11.1.0", - "resolved": "http://localhost:4873/@graphql-tools/utils/-/utils-11.1.0.tgz", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.1.0.tgz", "integrity": "sha512-PtFVG4r8Z2LEBSaPYQMusBiB3o6kjLVJyjCLbnWem/SpSuM21v6LTmgpkXfYU1qpBV2UGsFyuEnSJInl8fR1Ag==", "license": "MIT", "dependencies": { @@ -2331,7 +2252,7 @@ }, "node_modules/@graphql-typed-document-node/core": { "version": "3.2.0", - "resolved": "http://localhost:4873/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", "license": "MIT", "peerDependencies": { @@ -2340,7 +2261,7 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", - "resolved": "http://localhost:4873/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", "dev": true, @@ -2356,7 +2277,7 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", - "resolved": "http://localhost:4873/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "license": "Apache-2.0", @@ -2370,7 +2291,7 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "2.0.3", - "resolved": "http://localhost:4873/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", "dev": true, @@ -2378,7 +2299,7 @@ }, "node_modules/@img/colour": { "version": "1.1.0", - "resolved": "http://localhost:4873/@img/colour/-/colour-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", "license": "MIT", "engines": { @@ -2387,7 +2308,7 @@ }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", "cpu": [ "arm64" @@ -2409,7 +2330,7 @@ }, "node_modules/@img/sharp-darwin-x64": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", "cpu": [ "x64" @@ -2431,7 +2352,7 @@ }, "node_modules/@img/sharp-libvips-darwin-arm64": { "version": "1.2.4", - "resolved": "http://localhost:4873/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", "cpu": [ "arm64" @@ -2447,7 +2368,7 @@ }, "node_modules/@img/sharp-libvips-darwin-x64": { "version": "1.2.4", - "resolved": "http://localhost:4873/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", "cpu": [ "x64" @@ -2463,7 +2384,7 @@ }, "node_modules/@img/sharp-libvips-linux-arm": { "version": "1.2.4", - "resolved": "http://localhost:4873/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", "cpu": [ "arm" @@ -2482,7 +2403,7 @@ }, "node_modules/@img/sharp-libvips-linux-arm64": { "version": "1.2.4", - "resolved": "http://localhost:4873/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", "cpu": [ "arm64" @@ -2501,7 +2422,7 @@ }, "node_modules/@img/sharp-libvips-linux-ppc64": { "version": "1.2.4", - "resolved": "http://localhost:4873/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", "cpu": [ "ppc64" @@ -2520,7 +2441,7 @@ }, "node_modules/@img/sharp-libvips-linux-riscv64": { "version": "1.2.4", - "resolved": "http://localhost:4873/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", "cpu": [ "riscv64" @@ -2539,7 +2460,7 @@ }, "node_modules/@img/sharp-libvips-linux-s390x": { "version": "1.2.4", - "resolved": "http://localhost:4873/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", "cpu": [ "s390x" @@ -2558,7 +2479,7 @@ }, "node_modules/@img/sharp-libvips-linux-x64": { "version": "1.2.4", - "resolved": "http://localhost:4873/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", "cpu": [ "x64" @@ -2577,7 +2498,7 @@ }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { "version": "1.2.4", - "resolved": "http://localhost:4873/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", "cpu": [ "arm64" @@ -2596,7 +2517,7 @@ }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { "version": "1.2.4", - "resolved": "http://localhost:4873/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", "cpu": [ "x64" @@ -2615,7 +2536,7 @@ }, "node_modules/@img/sharp-linux-arm": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", "cpu": [ "arm" @@ -2640,7 +2561,7 @@ }, "node_modules/@img/sharp-linux-arm64": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", "cpu": [ "arm64" @@ -2665,7 +2586,7 @@ }, "node_modules/@img/sharp-linux-ppc64": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", "cpu": [ "ppc64" @@ -2690,7 +2611,7 @@ }, "node_modules/@img/sharp-linux-riscv64": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", "cpu": [ "riscv64" @@ -2715,7 +2636,7 @@ }, "node_modules/@img/sharp-linux-s390x": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", "cpu": [ "s390x" @@ -2740,7 +2661,7 @@ }, "node_modules/@img/sharp-linux-x64": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", "cpu": [ "x64" @@ -2765,7 +2686,7 @@ }, "node_modules/@img/sharp-linuxmusl-arm64": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", "cpu": [ "arm64" @@ -2790,7 +2711,7 @@ }, "node_modules/@img/sharp-linuxmusl-x64": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", "cpu": [ "x64" @@ -2815,7 +2736,7 @@ }, "node_modules/@img/sharp-wasm32": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", "cpu": [ "wasm32" @@ -2834,7 +2755,7 @@ }, "node_modules/@img/sharp-win32-arm64": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", "cpu": [ "arm64" @@ -2853,7 +2774,7 @@ }, "node_modules/@img/sharp-win32-ia32": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", "cpu": [ "ia32" @@ -2872,7 +2793,7 @@ }, "node_modules/@img/sharp-win32-x64": { "version": "0.34.5", - "resolved": "http://localhost:4873/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", "cpu": [ "x64" @@ -2891,7 +2812,7 @@ }, "node_modules/@inquirer/ansi": { "version": "1.0.2", - "resolved": "http://localhost:4873/@inquirer/ansi/-/ansi-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", "dev": true, "license": "MIT", @@ -2901,7 +2822,7 @@ }, "node_modules/@inquirer/checkbox": { "version": "4.3.2", - "resolved": "http://localhost:4873/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "dev": true, "license": "MIT", @@ -2926,7 +2847,7 @@ }, "node_modules/@inquirer/confirm": { "version": "5.1.21", - "resolved": "http://localhost:4873/@inquirer/confirm/-/confirm-5.1.21.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dev": true, "license": "MIT", @@ -2948,7 +2869,7 @@ }, "node_modules/@inquirer/core": { "version": "10.3.2", - "resolved": "http://localhost:4873/@inquirer/core/-/core-10.3.2.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "dev": true, "license": "MIT", @@ -2976,7 +2897,7 @@ }, "node_modules/@inquirer/editor": { "version": "4.2.23", - "resolved": "http://localhost:4873/@inquirer/editor/-/editor-4.2.23.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", "dev": true, "license": "MIT", @@ -2999,7 +2920,7 @@ }, "node_modules/@inquirer/expand": { "version": "4.0.23", - "resolved": "http://localhost:4873/@inquirer/expand/-/expand-4.0.23.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", "dev": true, "license": "MIT", @@ -3022,7 +2943,7 @@ }, "node_modules/@inquirer/external-editor": { "version": "1.0.3", - "resolved": "http://localhost:4873/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dev": true, "license": "MIT", @@ -3044,7 +2965,7 @@ }, "node_modules/@inquirer/figures": { "version": "1.0.15", - "resolved": "http://localhost:4873/@inquirer/figures/-/figures-1.0.15.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", "dev": true, "license": "MIT", @@ -3054,7 +2975,7 @@ }, "node_modules/@inquirer/input": { "version": "4.3.1", - "resolved": "http://localhost:4873/@inquirer/input/-/input-4.3.1.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "dev": true, "license": "MIT", @@ -3076,7 +2997,7 @@ }, "node_modules/@inquirer/number": { "version": "3.0.23", - "resolved": "http://localhost:4873/@inquirer/number/-/number-3.0.23.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "dev": true, "license": "MIT", @@ -3098,7 +3019,7 @@ }, "node_modules/@inquirer/password": { "version": "4.0.23", - "resolved": "http://localhost:4873/@inquirer/password/-/password-4.0.23.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "dev": true, "license": "MIT", @@ -3121,7 +3042,7 @@ }, "node_modules/@inquirer/prompts": { "version": "7.10.1", - "resolved": "http://localhost:4873/@inquirer/prompts/-/prompts-7.10.1.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", "dev": true, "license": "MIT", @@ -3151,7 +3072,7 @@ }, "node_modules/@inquirer/rawlist": { "version": "4.1.11", - "resolved": "http://localhost:4873/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "dev": true, "license": "MIT", @@ -3174,7 +3095,7 @@ }, "node_modules/@inquirer/search": { "version": "3.2.2", - "resolved": "http://localhost:4873/@inquirer/search/-/search-3.2.2.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "dev": true, "license": "MIT", @@ -3198,7 +3119,7 @@ }, "node_modules/@inquirer/select": { "version": "4.4.2", - "resolved": "http://localhost:4873/@inquirer/select/-/select-4.4.2.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "dev": true, "license": "MIT", @@ -3223,7 +3144,7 @@ }, "node_modules/@inquirer/type": { "version": "3.0.10", - "resolved": "http://localhost:4873/@inquirer/type/-/type-3.0.10.tgz", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dev": true, "license": "MIT", @@ -3241,13 +3162,13 @@ }, "node_modules/@ioredis/commands": { "version": "1.5.1", - "resolved": "http://localhost:4873/@ioredis/commands/-/commands-1.5.1.tgz", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.5.1.tgz", "integrity": "sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==", "license": "MIT" }, "node_modules/@isaacs/cliui": { "version": "8.0.2", - "resolved": "http://localhost:4873/@isaacs/cliui/-/cliui-8.0.2.tgz", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "license": "ISC", "dependencies": { @@ -3264,7 +3185,7 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.2.2", - "resolved": "http://localhost:4873/ansi-regex/-/ansi-regex-6.2.2.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "license": "MIT", "engines": { @@ -3276,7 +3197,7 @@ }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { "version": "6.2.3", - "resolved": "http://localhost:4873/ansi-styles/-/ansi-styles-6.2.3.tgz", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "license": "MIT", "engines": { @@ -3288,13 +3209,13 @@ }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", - "resolved": "http://localhost:4873/emoji-regex/-/emoji-regex-9.2.2.tgz", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", - "resolved": "http://localhost:4873/string-width/-/string-width-5.1.2.tgz", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "license": "MIT", "dependencies": { @@ -3311,7 +3232,7 @@ }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.2.0", - "resolved": "http://localhost:4873/strip-ansi/-/strip-ansi-7.2.0.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { @@ -3326,7 +3247,7 @@ }, "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { "version": "8.1.0", - "resolved": "http://localhost:4873/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "license": "MIT", "dependencies": { @@ -3343,7 +3264,7 @@ }, "node_modules/@isaacs/ttlcache": { "version": "1.4.1", - "resolved": "http://localhost:4873/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", + "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", "license": "ISC", "engines": { @@ -3352,7 +3273,7 @@ }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", - "resolved": "http://localhost:4873/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "license": "ISC", @@ -3369,7 +3290,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { "version": "1.0.10", - "resolved": "http://localhost:4873/argparse/-/argparse-1.0.10.tgz", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", @@ -3379,7 +3300,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", - "resolved": "http://localhost:4873/find-up/-/find-up-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", @@ -3393,7 +3314,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { "version": "3.14.2", - "resolved": "http://localhost:4873/js-yaml/-/js-yaml-3.14.2.tgz", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", @@ -3407,7 +3328,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", - "resolved": "http://localhost:4873/locate-path/-/locate-path-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", @@ -3420,7 +3341,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { "version": "2.3.0", - "resolved": "http://localhost:4873/p-limit/-/p-limit-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", @@ -3436,7 +3357,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { "version": "4.1.0", - "resolved": "http://localhost:4873/p-locate/-/p-locate-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", @@ -3449,7 +3370,7 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "http://localhost:4873/resolve-from/-/resolve-from-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", @@ -3459,7 +3380,7 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.6", - "resolved": "http://localhost:4873/@istanbuljs/schema/-/schema-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", "dev": true, "license": "MIT", @@ -3469,7 +3390,7 @@ }, "node_modules/@jest/console": { "version": "29.7.0", - "resolved": "http://localhost:4873/@jest/console/-/console-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "license": "MIT", @@ -3487,7 +3408,7 @@ }, "node_modules/@jest/core": { "version": "29.7.0", - "resolved": "http://localhost:4873/@jest/core/-/core-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "license": "MIT", @@ -3535,7 +3456,7 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", - "resolved": "http://localhost:4873/@jest/environment/-/environment-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "license": "MIT", @@ -3551,7 +3472,7 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", - "resolved": "http://localhost:4873/@jest/expect/-/expect-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "license": "MIT", @@ -3565,7 +3486,7 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "resolved": "http://localhost:4873/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "license": "MIT", @@ -3578,7 +3499,7 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", - "resolved": "http://localhost:4873/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "license": "MIT", @@ -3596,7 +3517,7 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", - "resolved": "http://localhost:4873/@jest/globals/-/globals-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "license": "MIT", @@ -3612,7 +3533,7 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", - "resolved": "http://localhost:4873/@jest/reporters/-/reporters-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "license": "MIT", @@ -3656,7 +3577,7 @@ }, "node_modules/@jest/reporters/node_modules/glob": { "version": "7.2.3", - "resolved": "http://localhost:4873/glob/-/glob-7.2.3.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, @@ -3678,7 +3599,7 @@ }, "node_modules/@jest/schemas": { "version": "29.6.3", - "resolved": "http://localhost:4873/@jest/schemas/-/schemas-29.6.3.tgz", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", @@ -3691,7 +3612,7 @@ }, "node_modules/@jest/source-map": { "version": "29.6.3", - "resolved": "http://localhost:4873/@jest/source-map/-/source-map-29.6.3.tgz", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "license": "MIT", @@ -3706,7 +3627,7 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", - "resolved": "http://localhost:4873/@jest/test-result/-/test-result-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "license": "MIT", @@ -3722,7 +3643,7 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", - "resolved": "http://localhost:4873/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "license": "MIT", @@ -3738,7 +3659,7 @@ }, "node_modules/@jest/transform": { "version": "29.7.0", - "resolved": "http://localhost:4873/@jest/transform/-/transform-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "license": "MIT", @@ -3765,7 +3686,7 @@ }, "node_modules/@jest/types": { "version": "29.6.3", - "resolved": "http://localhost:4873/@jest/types/-/types-29.6.3.tgz", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", @@ -3783,7 +3704,7 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", - "resolved": "http://localhost:4873/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", @@ -3794,7 +3715,7 @@ }, "node_modules/@jridgewell/remapping": { "version": "2.3.5", - "resolved": "http://localhost:4873/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", @@ -3805,7 +3726,7 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", - "resolved": "http://localhost:4873/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", @@ -3815,7 +3736,7 @@ }, "node_modules/@jridgewell/source-map": { "version": "0.3.11", - "resolved": "http://localhost:4873/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, "license": "MIT", @@ -3826,14 +3747,14 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", - "resolved": "http://localhost:4873/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", - "resolved": "http://localhost:4873/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", @@ -3844,7 +3765,7 @@ }, "node_modules/@kwsites/file-exists": { "version": "1.1.1", - "resolved": "http://localhost:4873/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", "license": "MIT", "dependencies": { @@ -3853,13 +3774,13 @@ }, "node_modules/@kwsites/promise-deferred": { "version": "1.1.1", - "resolved": "http://localhost:4873/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", "license": "MIT" }, "node_modules/@lukeed/csprng": { "version": "1.1.0", - "resolved": "http://localhost:4873/@lukeed/csprng/-/csprng-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", "license": "MIT", "engines": { @@ -3868,14 +3789,14 @@ }, "node_modules/@microsoft/tsdoc": { "version": "0.16.0", - "resolved": "http://localhost:4873/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.16.0.tgz", "integrity": "sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==", "license": "MIT" }, "node_modules/@mongodb-js/saslprep": { - "version": "1.4.9", - "resolved": "http://localhost:4873/@mongodb-js/saslprep/-/saslprep-1.4.9.tgz", - "integrity": "sha512-RXSxsokhAF/4nWys8An8npsqOI33Ex1Hlzqjw2pZOO+GKtMAR2noGnUdsFiGwsaO/xXI+56mtjTmDA3JXJsvmA==", + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.11.tgz", + "integrity": "sha512-o9rAHc0IpIjuPSxRutWpE1F62x7n+4mVS4rCNHkzhIUMQcc18bb6xEq5wd2NdN0WjepIyXIppRshYI2kQDOZVA==", "license": "MIT", "dependencies": { "sparse-bitfield": "^3.0.3" @@ -3883,7 +3804,7 @@ }, "node_modules/@multiversx/sdk-bls-wasm": { "version": "0.3.5", - "resolved": "http://localhost:4873/@multiversx/sdk-bls-wasm/-/sdk-bls-wasm-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-bls-wasm/-/sdk-bls-wasm-0.3.5.tgz", "integrity": "sha512-c0tIdQUnbBLSt6NYU+OpeGPYdL0+GV547HeHT8Xc0BKQ7Cj0v82QUoA2QRtWrR1G4MNZmLsIacZSsf6DrIS2Bw==", "license": "BSD-3-Clause", "optional": true, @@ -3893,7 +3814,7 @@ }, "node_modules/@multiversx/sdk-core": { "version": "15.4.0", - "resolved": "http://localhost:4873/@multiversx/sdk-core/-/sdk-core-15.4.0.tgz", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-core/-/sdk-core-15.4.0.tgz", "integrity": "sha512-WzCy/dipvwGo93JrZ3JaFOqiN5m/nkBavPTLqwpajDcvVuA/VHhX69QGoxd3db/6vc1N2KixfIQv9bEa+BACtQ==", "license": "MIT", "dependencies": { @@ -3921,18 +3842,9 @@ "protobufjs": "^7.2.6" } }, - "node_modules/@multiversx/sdk-core/node_modules/uuid": { - "version": "8.3.2", - "resolved": "http://localhost:4873/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@multiversx/sdk-exchange": { "version": "0.2.24", - "resolved": "http://localhost:4873/@multiversx/sdk-exchange/-/sdk-exchange-0.2.24.tgz", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-exchange/-/sdk-exchange-0.2.24.tgz", "integrity": "sha512-UuIWZJKETiNJxrJIcanUpDMnLo49RffKUQtVYa3/gVobBW6IcY2tLS8wW35WuFG+6ZLnyGGM3Oavs+PpRkUBVQ==", "license": "MIT", "dependencies": { @@ -3942,7 +3854,7 @@ }, "node_modules/@multiversx/sdk-exchange/node_modules/@multiversx/sdk-core": { "version": "13.17.2", - "resolved": "http://localhost:4873/@multiversx/sdk-core/-/sdk-core-13.17.2.tgz", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-core/-/sdk-core-13.17.2.tgz", "integrity": "sha512-X/Ga66Ubx8IpHPM7pk3gl52KxVR0tbxlN2Zhjz7fg4Xxe0fzWAux5lEuDV8sN3SqD55uyz/l2CkstKgoZWpKWg==", "license": "MIT", "dependencies": { @@ -3972,25 +3884,16 @@ }, "node_modules/@multiversx/sdk-exchange/node_modules/bignumber.js": { "version": "9.0.1", - "resolved": "http://localhost:4873/bignumber.js/-/bignumber.js-9.0.1.tgz", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", "license": "MIT", "engines": { "node": "*" } }, - "node_modules/@multiversx/sdk-exchange/node_modules/uuid": { - "version": "8.3.2", - "resolved": "http://localhost:4873/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@multiversx/sdk-native-auth-client": { "version": "2.0.1", - "resolved": "http://localhost:4873/@multiversx/sdk-native-auth-client/-/sdk-native-auth-client-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-native-auth-client/-/sdk-native-auth-client-2.0.1.tgz", "integrity": "sha512-J4RxpsfNnWBKOPz0vvhnReSf8V6mci11Pe3NT2awhrpBhtAvkSBUGIzgoGVf/eumrhyReRmKyMjo+u4UhGokbg==", "license": "GPL-3.0-or-later", "peerDependencies": { @@ -3999,7 +3902,7 @@ }, "node_modules/@multiversx/sdk-native-auth-server": { "version": "2.1.0", - "resolved": "http://localhost:4873/@multiversx/sdk-native-auth-server/-/sdk-native-auth-server-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-native-auth-server/-/sdk-native-auth-server-2.1.0.tgz", "integrity": "sha512-fbDHeYF2cJpRaGpz3Cqv3jfYhm/nf2jlxZzCmBEeetsuRai0eZvDImm4O58GJu3JBkR0iokWrS/zctSgX37sjg==", "license": "GPL-3.0-or-later", "dependencies": { @@ -4012,14 +3915,14 @@ }, "node_modules/@multiversx/sdk-native-auth-server/node_modules/bech32": { "version": "2.0.0", - "resolved": "http://localhost:4873/bech32/-/bech32-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", "license": "MIT" }, "node_modules/@multiversx/sdk-nestjs-auth": { "version": "7.0.0", - "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-auth/-/sdk-nestjs-auth-7.0.0.tgz", - "integrity": "sha512-MbffzVjrONoOBI7iT8Zus+qpEBcq3W/oisFa48tdodOe18w2w2s75wLT0IkCNjP0K5oNv9ELPzU84w9i/4yQQA==", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-auth/-/sdk-nestjs-auth-7.0.0.tgz", + "integrity": "sha512-cANpRJpLjzmJt7gOjU++k9apOu4KaNlfyo48NmBJXDlR7rFPOLCrXc75OMfh6h9tFbb8w0Oad1wN9bymQzpPYA==", "license": "MIT", "dependencies": { "@multiversx/sdk-core": "^15.4.0", @@ -4035,13 +3938,12 @@ }, "node_modules/@multiversx/sdk-nestjs-cache": { "version": "7.0.0", - "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-cache/-/sdk-nestjs-cache-7.0.0.tgz", - "integrity": "sha512-LTox9HWw3jGvHWJhG08bJ7c3KSATNPibP+W1PKrUS3uFC2s77EjM97xYS/nve//jN7/I6OBZ81hG2Te41zMEDg==", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-cache/-/sdk-nestjs-cache-7.0.0.tgz", + "integrity": "sha512-0T2JPao12yt/stB70zMYwqcftLTtIRfr7ZaVASYnivVp0bP6j5jB0QPL52gGTgx+x42ArdY6ymdfaoy08IGsDA==", "license": "MIT", "dependencies": { "lru-cache": "^11.3.5", "moment": "^2.30.1", - "redis": "^5.12.1", "tiny-async-pool": "^2.1.0", "uuid": "^8.3.2" }, @@ -4053,41 +3955,16 @@ "@nestjs/core": "^11.x" } }, - "node_modules/@multiversx/sdk-nestjs-cache/node_modules/redis": { - "version": "5.12.1", - "resolved": "http://localhost:4873/redis/-/redis-5.12.1.tgz", - "integrity": "sha512-LDsoVvb/CpoV9EN3FXvgvSHNJWuCIzl9MiO3ppOevuGLpSGJhwfQjpEwfFJcQvNSddHADDdZaWx0HnmMxRXG7g==", - "license": "MIT", - "dependencies": { - "@redis/bloom": "5.12.1", - "@redis/client": "5.12.1", - "@redis/json": "5.12.1", - "@redis/search": "5.12.1", - "@redis/time-series": "5.12.1" - }, - "engines": { - "node": ">= 18.19.0" - } - }, "node_modules/@multiversx/sdk-nestjs-cache/node_modules/tiny-async-pool": { "version": "2.1.0", - "resolved": "http://localhost:4873/tiny-async-pool/-/tiny-async-pool-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-2.1.0.tgz", "integrity": "sha512-ltAHPh/9k0STRQqaoUX52NH4ZQYAJz24ZAEwf1Zm+HYg3l9OXTWeqWKyYsHu40wF/F0rxd2N2bk5sLvX2qlSvg==", "license": "MIT" }, - "node_modules/@multiversx/sdk-nestjs-cache/node_modules/uuid": { - "version": "8.3.2", - "resolved": "http://localhost:4873/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@multiversx/sdk-nestjs-common": { "version": "7.0.0", - "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-common/-/sdk-nestjs-common-7.0.0.tgz", - "integrity": "sha512-yXWH/I/3P/rlnfc3GGqHPOWgNJCjQnfM09oJYxXvGfUz/t/9aJOUkXC7ndX2jSgqHvM2ur7i/kc3wFs7nSdxHQ==", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-common/-/sdk-nestjs-common-7.0.0.tgz", + "integrity": "sha512-f1vi68NSXe3XNuNwwM26W/+c4HsHmhVW6TQEzf/CqFCD2NCW3vWkt8cejZpJynVpgNM2hjGuxMDvy/x9Avkz7g==", "license": "MIT", "dependencies": { "@multiversx/sdk-core": "^15.4.0", @@ -4103,19 +3980,10 @@ "@nestjs/swagger": "^11.x" } }, - "node_modules/@multiversx/sdk-nestjs-common/node_modules/uuid": { - "version": "8.3.2", - "resolved": "http://localhost:4873/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@multiversx/sdk-nestjs-elastic": { "version": "7.0.0", - "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-elastic/-/sdk-nestjs-elastic-7.0.0.tgz", - "integrity": "sha512-Ye6RWW2ZOcksIKF1gXMNCrtjFJXsGW+HL81YrcG0/CLF/C7YSRSBBwYBYFbjfEPC9WTuelVQCDfekc5Bjf9Sjw==", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-elastic/-/sdk-nestjs-elastic-7.0.0.tgz", + "integrity": "sha512-lPbI7f3zcTz9Z7m/ch6NXmfTLZ/IAPNj5vvm8wus2NKxF/Lwm3sqB+V98P9Vm7dxxTq32zqgn21wlMKyVl7C6w==", "license": "MIT", "peerDependencies": { "@multiversx/sdk-nestjs-http": "^7.0.0", @@ -4124,14 +3992,14 @@ }, "node_modules/@multiversx/sdk-nestjs-http": { "version": "7.0.0", - "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-http/-/sdk-nestjs-http-7.0.0.tgz", - "integrity": "sha512-o0TpsrNZvMsoAszYYvzC/46S52GaKP/0hvg709L/KT4ThNT23c3cDnQUVGEeSflXR/tB9oTaJm/nKx+PP4HHWg==", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-http/-/sdk-nestjs-http-7.0.0.tgz", + "integrity": "sha512-ohgvvEvWDC+aRdngZ1anSRfY+i0biOCD0y3mwGVl+Z//5JzSOr6wqXnzahmOSa2TtiDc3wyaHYa0xX2aiobbVQ==", "license": "MIT", "dependencies": { "@multiversx/sdk-core": "^15.4.0", "@multiversx/sdk-native-auth-client": "^2.0.1", "agentkeepalive": "^4.6.0", - "axios": "^1.15.2" + "axios": "^1.16.0" }, "peerDependencies": { "@multiversx/sdk-nestjs-common": "^7.0.0", @@ -4142,8 +4010,8 @@ }, "node_modules/@multiversx/sdk-nestjs-monitoring": { "version": "7.0.0", - "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-monitoring/-/sdk-nestjs-monitoring-7.0.0.tgz", - "integrity": "sha512-ZJV+UAoLRFN2+9Q1tIHyY4XZ5rS2iocuyDqO5gRaGKU797QYd9L0v4UVC/+Cpq+LvBHHhlcGY7Bv7DdNBXxJzQ==", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-monitoring/-/sdk-nestjs-monitoring-7.0.0.tgz", + "integrity": "sha512-mf9QvZhQu+xV6FZEB1SOfAJDJYUeBq15NprbYEAAwnzFrP5mC61Luz35svhF/oMNxUJcgWWNNbRESZrLpYYuBg==", "license": "MIT", "dependencies": { "prom-client": "^15.1.3", @@ -4156,7 +4024,7 @@ }, "node_modules/@multiversx/sdk-nestjs-monitoring/node_modules/prom-client": { "version": "15.1.3", - "resolved": "http://localhost:4873/prom-client/-/prom-client-15.1.3.tgz", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-15.1.3.tgz", "integrity": "sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g==", "license": "Apache-2.0", "dependencies": { @@ -4169,7 +4037,7 @@ }, "node_modules/@multiversx/sdk-nestjs-monitoring/node_modules/winston-daily-rotate-file": { "version": "5.0.0", - "resolved": "http://localhost:4873/winston-daily-rotate-file/-/winston-daily-rotate-file-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-5.0.0.tgz", "integrity": "sha512-JDjiXXkM5qvwY06733vf09I2wnMXpZEhxEVOSPenZMii+g7pcDcTBt2MRugnoi8BwVSuCT2jfRXBUy+n1Zz/Yw==", "license": "MIT", "dependencies": { @@ -4187,8 +4055,8 @@ }, "node_modules/@multiversx/sdk-nestjs-rabbitmq": { "version": "7.0.0", - "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-rabbitmq/-/sdk-nestjs-rabbitmq-7.0.0.tgz", - "integrity": "sha512-lNfkGK2xSTBHlsQ7/Vw/FOIbkTusVLcaXRNrxx7gG6kJZtbz1aBoLbaCknWjJg2ZJjvgAnHUsl6z0f5dUZKcZg==", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-rabbitmq/-/sdk-nestjs-rabbitmq-7.0.0.tgz", + "integrity": "sha512-+sHNCoVDbOJqWKxipja0fNZ/Lw6FXoXxXApyyEPIx1cqXzY1fbRmoE52pTepHJBcKW3fLe6F6kTKQeFdmgfXtg==", "license": "MIT", "dependencies": { "@golevelup/nestjs-rabbitmq": "9.0.0", @@ -4199,19 +4067,10 @@ "@nestjs/common": "^11.x" } }, - "node_modules/@multiversx/sdk-nestjs-rabbitmq/node_modules/uuid": { - "version": "8.3.2", - "resolved": "http://localhost:4873/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@multiversx/sdk-nestjs-redis": { "version": "7.0.0", - "resolved": "http://localhost:4873/@multiversx/sdk-nestjs-redis/-/sdk-nestjs-redis-7.0.0.tgz", - "integrity": "sha512-CalzPmZDqzrJIrl2sgjYt7C6U8c9Jy3UTxkpoy6kdbNOwLrE2/4uwX4Q4K5jtClLalIo7bA9Oz0KkrBXJuWp9Q==", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-redis/-/sdk-nestjs-redis-7.0.0.tgz", + "integrity": "sha512-aJzKaXfF0ZnTzOnXeOf/ZkSQRD8amGSOV/wNVLSEoui4ViCjds47xkysfr/3CXJSqlqLGgN6S1lY6Gr5PMx45w==", "license": "MIT", "dependencies": { "ioredis": "^5.10.1" @@ -4222,7 +4081,7 @@ }, "node_modules/@multiversx/sdk-transaction-decoder": { "version": "1.0.2", - "resolved": "http://localhost:4873/@multiversx/sdk-transaction-decoder/-/sdk-transaction-decoder-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-transaction-decoder/-/sdk-transaction-decoder-1.0.2.tgz", "integrity": "sha512-j43QsKquu8N51WLmVlJ7dV2P3A1448R7/ktvl8r3i6wRMpfdtzDPNofTdHmMRT7DdQdvs4+RNgz8hVKL11Etsw==", "license": "MIT", "dependencies": { @@ -4231,13 +4090,13 @@ }, "node_modules/@multiversx/sdk-transaction-decoder/node_modules/bech32": { "version": "2.0.0", - "resolved": "http://localhost:4873/bech32/-/bech32-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", "license": "MIT" }, "node_modules/@multiversx/sdk-transaction-processor": { "version": "0.1.35", - "resolved": "http://localhost:4873/@multiversx/sdk-transaction-processor/-/sdk-transaction-processor-0.1.35.tgz", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-transaction-processor/-/sdk-transaction-processor-0.1.35.tgz", "integrity": "sha512-zbj4zNYhIxjlnxy7/p7so4IroOd+Z3QtIvFkKJEg8HMGSAuF6dObmrmc4dsx8nzG97rFpOLJ7iSyE8Xk9sCvrQ==", "license": "GPL-3.0-or-later", "dependencies": { @@ -4245,9 +4104,9 @@ } }, "node_modules/@nestjs/apollo": { - "version": "13.3.0", - "resolved": "http://localhost:4873/@nestjs/apollo/-/apollo-13.3.0.tgz", - "integrity": "sha512-UXuqkGj96dne68/9lPQ+Yh0z4a5ON7QH3LPNFerStxn9YCCp0/LpI0wn/oxhJNWLechC7ZiSmQDhytfdJT4p8A==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@nestjs/apollo/-/apollo-13.4.0.tgz", + "integrity": "sha512-dXfgdBDUXl7OwJ/1t1yQtifhh9E21zTwB8Tayi/2xsBJYY5t0Bcfi/xyVYT6IxNDb5i8JpsiAJmnu7bTsvIIzw==", "license": "MIT", "dependencies": { "@apollo/server-plugin-landing-page-graphql-playground": "4.0.1", @@ -4282,7 +4141,7 @@ }, "node_modules/@nestjs/cli": { "version": "11.0.21", - "resolved": "http://localhost:4873/@nestjs/cli/-/cli-11.0.21.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.21.tgz", "integrity": "sha512-F8mV0Sj/zVEouzR3NxBuJy08YHTUOmC5Xdcx3qIIaJWzrm8Vw86CHkhkaPBJ5ewRMHPDCShPmhsfwhpCcjts3A==", "dev": true, "license": "MIT", @@ -4327,7 +4186,7 @@ }, "node_modules/@nestjs/cli/node_modules/ajv-formats": { "version": "2.1.1", - "resolved": "http://localhost:4873/ajv-formats/-/ajv-formats-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, "license": "MIT", @@ -4345,7 +4204,7 @@ }, "node_modules/@nestjs/cli/node_modules/mime-db": { "version": "1.52.0", - "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", @@ -4355,7 +4214,7 @@ }, "node_modules/@nestjs/cli/node_modules/mime-types": { "version": "2.1.35", - "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", @@ -4368,7 +4227,7 @@ }, "node_modules/@nestjs/cli/node_modules/schema-utils": { "version": "4.3.3", - "resolved": "http://localhost:4873/schema-utils/-/schema-utils-4.3.3.tgz", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, "license": "MIT", @@ -4388,7 +4247,7 @@ }, "node_modules/@nestjs/cli/node_modules/typescript": { "version": "5.9.3", - "resolved": "http://localhost:4873/typescript/-/typescript-5.9.3.tgz", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", @@ -4402,7 +4261,7 @@ }, "node_modules/@nestjs/cli/node_modules/webpack": { "version": "5.106.0", - "resolved": "http://localhost:4873/webpack/-/webpack-5.106.0.tgz", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.0.tgz", "integrity": "sha512-Pkx5joZ9RrdgO5LBkyX1L2ZAJeK/Taz3vqZ9CbcP0wS5LEMx5QkKsEwLl29QJfihZ+DKRBFldzy1O30pJ1MDpA==", "dev": true, "license": "MIT", @@ -4451,7 +4310,7 @@ }, "node_modules/@nestjs/common": { "version": "11.1.19", - "resolved": "http://localhost:4873/@nestjs/common/-/common-11.1.19.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.19.tgz", "integrity": "sha512-qeiTt2tv+e5QyDKqG8HlVZb2wx64FEaSGFJouqTSRs+kG44iTfl3xlz1XqVped+rihx4hmjWgL5gkhtdK3E6+Q==", "license": "MIT", "dependencies": { @@ -4482,7 +4341,7 @@ }, "node_modules/@nestjs/config": { "version": "4.0.4", - "resolved": "http://localhost:4873/@nestjs/config/-/config-4.0.4.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.4.tgz", "integrity": "sha512-CJPjNitr0bAufSEnRe2N+JbnVmMmDoo6hvKCPzXgZoGwJSmp/dZPk9f/RMbuD/+Q1ZJPjwsRpq0vxna++Knwow==", "license": "MIT", "dependencies": { @@ -4497,7 +4356,7 @@ }, "node_modules/@nestjs/core": { "version": "11.1.19", - "resolved": "http://localhost:4873/@nestjs/core/-/core-11.1.19.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.19.tgz", "integrity": "sha512-6nJkWa2efrYi+XlU686J9y5L7OvxpLVjT0T/sxRKE7Jvpffiihelup4WSvLvRhdHDjj/5SuoWEwqReXAaaeHmw==", "hasInstallScript": true, "license": "MIT", @@ -4538,7 +4397,7 @@ }, "node_modules/@nestjs/event-emitter": { "version": "3.1.0", - "resolved": "http://localhost:4873/@nestjs/event-emitter/-/event-emitter-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-3.1.0.tgz", "integrity": "sha512-DOY/4XBGyIjYyOJKkO6jl1kzFE0ZfX0wV+M2HR5NWymPT9Z0zdCEcZGxTXXkoMRwPtglnvCGJALSjOpXPIcM3g==", "license": "MIT", "dependencies": { @@ -4550,14 +4409,14 @@ } }, "node_modules/@nestjs/graphql": { - "version": "13.3.0", - "resolved": "http://localhost:4873/@nestjs/graphql/-/graphql-13.3.0.tgz", - "integrity": "sha512-oGPGi8el+96h8MS3S2SgE7oidMrmm41rwzudP/OO72ij8R+4YmvO27keZPDbSCK2a5IySoGZQMb7C81vwfN2vQ==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-13.4.0.tgz", + "integrity": "sha512-NXZbC7ZGT4hoqA1M57tXz3Y+FgRgtEMCjyTU20bLr/Ck6itGL0NsrnudmLdxrc8XGLGM+JwmhQ606o1oRyW6jg==", "license": "MIT", "dependencies": { - "@graphql-tools/merge": "9.1.8", - "@graphql-tools/schema": "10.0.32", - "@graphql-tools/utils": "11.0.1", + "@graphql-tools/merge": "9.1.9", + "@graphql-tools/schema": "10.0.33", + "@graphql-tools/utils": "11.1.0", "@nestjs/mapped-types": "2.1.1", "chokidar": "4.0.3", "fast-glob": "3.3.3", @@ -4594,60 +4453,9 @@ } } }, - "node_modules/@nestjs/graphql/node_modules/@graphql-tools/merge": { - "version": "9.1.8", - "resolved": "http://localhost:4873/@graphql-tools/merge/-/merge-9.1.8.tgz", - "integrity": "sha512-25V7WDrODo1cPrmuUCrqf5qlMA4a/Ow4aHaqJ1MnTUaluwsV3UiqzCHWux3HSLb0H63mkoZiuOrU5xJhxRcoCg==", - "license": "MIT", - "dependencies": { - "@graphql-tools/utils": "^11.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@nestjs/graphql/node_modules/@graphql-tools/schema": { - "version": "10.0.32", - "resolved": "http://localhost:4873/@graphql-tools/schema/-/schema-10.0.32.tgz", - "integrity": "sha512-kJ1Qn20MPnlaEVH37639E6rzQ1tEtr6XTUhNdR4EKydl+FijtLhWX2WLZbGnvrYuG8XUcMxsZU9mRRYYNvK02w==", - "license": "MIT", - "dependencies": { - "@graphql-tools/merge": "^9.1.8", - "@graphql-tools/utils": "^11.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@nestjs/graphql/node_modules/@graphql-tools/utils": { - "version": "11.0.1", - "resolved": "http://localhost:4873/@graphql-tools/utils/-/utils-11.0.1.tgz", - "integrity": "sha512-pNyCOb95ab/z3zkkiPwIPYxigX7IcpyFVcgD1XACDEvg/7yGnKCESx3k/XHEeneKYx/aWKGzEh/uuf6M6Q8HOw==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@nestjs/mapped-types": { "version": "2.1.1", - "resolved": "http://localhost:4873/@nestjs/mapped-types/-/mapped-types-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.1.1.tgz", "integrity": "sha512-SCCoMEJ6jdeI5h/N+KCVF1+pmg/hmEkNA5nHTS8Gvww7T/LCl4o1gFLinw2iQ60w7slFkszHcGLKGdazVI4F8A==", "license": "MIT", "peerDependencies": { @@ -4667,7 +4475,7 @@ }, "node_modules/@nestjs/microservices": { "version": "11.1.19", - "resolved": "http://localhost:4873/@nestjs/microservices/-/microservices-11.1.19.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-11.1.19.tgz", "integrity": "sha512-3Oja56ydTlSaui19/i7gYM0MMqz/w4UR2aqZeL4K8B+Fq0Ztg3zHb8et76atToJGpSCevJLEsoEMOMaGgzRwfg==", "license": "MIT", "dependencies": { @@ -4725,7 +4533,7 @@ }, "node_modules/@nestjs/platform-express": { "version": "11.1.19", - "resolved": "http://localhost:4873/@nestjs/platform-express/-/platform-express-11.1.19.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.19.tgz", "integrity": "sha512-Vpdv8jyCQdThfoTx+UTn+DRYr6H6X02YUqcpZ3qP6G3ZUwtVp7eS+hoQPGd4UuCnlnFG8Wqr2J9bGEzQdi1rIg==", "license": "MIT", "dependencies": { @@ -4746,7 +4554,7 @@ }, "node_modules/@nestjs/platform-socket.io": { "version": "11.1.19", - "resolved": "http://localhost:4873/@nestjs/platform-socket.io/-/platform-socket.io-11.1.19.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/platform-socket.io/-/platform-socket.io-11.1.19.tgz", "integrity": "sha512-gu1nPIEaP5Qjjg/Cl8wXyvwGpdZGzgbtK4KcH65YRAA+GTKUkIHb4BNpLJ27Ymq/wqLJKNEbCjajfzD0BEjMGA==", "license": "MIT", "dependencies": { @@ -4765,7 +4573,7 @@ }, "node_modules/@nestjs/schedule": { "version": "6.1.3", - "resolved": "http://localhost:4873/@nestjs/schedule/-/schedule-6.1.3.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.1.3.tgz", "integrity": "sha512-RflMFOpR16Dwd1jAUbeB4mfGTCh65fvEdL4mSjQPJChpkRGRjIXjb+6YQcK2faQrVT60c9DmLmoVR7/ONCtuYQ==", "license": "MIT", "dependencies": { @@ -4778,7 +4586,7 @@ }, "node_modules/@nestjs/schematics": { "version": "11.1.0", - "resolved": "http://localhost:4873/@nestjs/schematics/-/schematics-11.1.0.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.1.0.tgz", "integrity": "sha512-lVxGZ46tcdItFMoXr6vyKWlnOsm1SZm/GUqAEDvy2RL4Q4O+3bkziAhrO7Y8JLssFUUvNFEGqAizI52WAxhjDw==", "dev": true, "license": "MIT", @@ -4801,7 +4609,7 @@ }, "node_modules/@nestjs/swagger": { "version": "11.4.2", - "resolved": "http://localhost:4873/@nestjs/swagger/-/swagger-11.4.2.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-11.4.2.tgz", "integrity": "sha512-aBihEogDMj/bLEcaqhkvyX/ZVWUw/bmnhKzR0zwUoyGJikvZyaq7rOPYl/H7Lxkkr3c90SJxyuv1AX2UT1WKlw==", "license": "MIT", "dependencies": { @@ -4834,7 +4642,7 @@ }, "node_modules/@nestjs/testing": { "version": "11.1.19", - "resolved": "http://localhost:4873/@nestjs/testing/-/testing-11.1.19.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.19.tgz", "integrity": "sha512-/UFNWXvPEdu4v4DlC5oWLbGKmD27LehLK06b8oLzs6D6lf4vAQTdST8LRAXBadyMUQnVEQWMuBo3CtAVtlfXtQ==", "dev": true, "license": "MIT", @@ -4862,7 +4670,7 @@ }, "node_modules/@nestjs/typeorm": { "version": "11.0.1", - "resolved": "http://localhost:4873/@nestjs/typeorm/-/typeorm-11.0.1.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-11.0.1.tgz", "integrity": "sha512-8rw/nKT0S+L+MkzgE9F2/mox7mAgsPlwfzmW9gsESN1lmQtIrVEfiiBwC2O8+guS1jBfQehJIdcdUj2OAp4VUQ==", "license": "MIT", "peerDependencies": { @@ -4875,7 +4683,7 @@ }, "node_modules/@nestjs/websockets": { "version": "11.1.19", - "resolved": "http://localhost:4873/@nestjs/websockets/-/websockets-11.1.19.tgz", + "resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-11.1.19.tgz", "integrity": "sha512-2qo8jtIwwwgkqAI1BtnJ02EaFLrRkKA39eYXS8IhZCHilhBHCWdjnJ5cLcFq4oF+s+KZ7LcLGD/3stxJy8ijzg==", "license": "MIT", "dependencies": { @@ -4898,7 +4706,7 @@ }, "node_modules/@noble/ed25519": { "version": "1.7.3", - "resolved": "http://localhost:4873/@noble/ed25519/-/ed25519-1.7.3.tgz", + "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.3.tgz", "integrity": "sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==", "funding": [ { @@ -4910,7 +4718,7 @@ }, "node_modules/@noble/hashes": { "version": "1.3.0", - "resolved": "http://localhost:4873/@noble/hashes/-/hashes-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.0.tgz", "integrity": "sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==", "funding": [ { @@ -4922,7 +4730,7 @@ }, "node_modules/@nodable/entities": { "version": "2.1.0", - "resolved": "http://localhost:4873/@nodable/entities/-/entities-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", "funding": [ { @@ -4934,7 +4742,7 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "http://localhost:4873/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "license": "MIT", "dependencies": { @@ -4947,7 +4755,7 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", - "resolved": "http://localhost:4873/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "license": "MIT", "engines": { @@ -4956,7 +4764,7 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", - "resolved": "http://localhost:4873/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "license": "MIT", "dependencies": { @@ -4969,7 +4777,7 @@ }, "node_modules/@nuxt/opencollective": { "version": "0.4.1", - "resolved": "http://localhost:4873/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", "license": "MIT", "dependencies": { @@ -4985,7 +4793,7 @@ }, "node_modules/@opentelemetry/api": { "version": "1.8.0", - "resolved": "http://localhost:4873/@opentelemetry/api/-/api-1.8.0.tgz", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.8.0.tgz", "integrity": "sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==", "license": "Apache-2.0", "engines": { @@ -4994,7 +4802,7 @@ }, "node_modules/@opentelemetry/core": { "version": "1.30.1", - "resolved": "http://localhost:4873/@opentelemetry/core/-/core-1.30.1.tgz", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", "license": "Apache-2.0", "dependencies": { @@ -5009,7 +4817,7 @@ }, "node_modules/@opentelemetry/semantic-conventions": { "version": "1.28.0", - "resolved": "http://localhost:4873/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", "license": "Apache-2.0", "engines": { @@ -5018,7 +4826,7 @@ }, "node_modules/@paralleldrive/cuid2": { "version": "2.3.1", - "resolved": "http://localhost:4873/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", "dev": true, "license": "MIT", @@ -5028,7 +4836,7 @@ }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", - "resolved": "http://localhost:4873/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "license": "MIT", "optional": true, @@ -5038,31 +4846,31 @@ }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", - "resolved": "http://localhost:4873/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", - "resolved": "http://localhost:4873/@protobufjs/base64/-/base64-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/codegen": { "version": "2.0.5", - "resolved": "http://localhost:4873/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", - "resolved": "http://localhost:4873/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", - "resolved": "http://localhost:4873/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "license": "BSD-3-Clause", "dependencies": { @@ -5072,116 +4880,44 @@ }, "node_modules/@protobufjs/float": { "version": "1.0.2", - "resolved": "http://localhost:4873/@protobufjs/float/-/float-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/inquire": { "version": "1.1.1", - "resolved": "http://localhost:4873/@protobufjs/inquire/-/inquire-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.1.tgz", "integrity": "sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/path": { "version": "1.1.2", - "resolved": "http://localhost:4873/@protobufjs/path/-/path-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", - "resolved": "http://localhost:4873/@protobufjs/pool/-/pool-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/utf8": { "version": "1.1.1", - "resolved": "http://localhost:4873/@protobufjs/utf8/-/utf8-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz", "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", "license": "BSD-3-Clause" }, - "node_modules/@redis/bloom": { - "version": "5.12.1", - "resolved": "http://localhost:4873/@redis/bloom/-/bloom-5.12.1.tgz", - "integrity": "sha512-PUUfv+ms7jgPSBVoo/DN4AkPHj4D5TZSd6SbJX7egzBplkYUcKmHRE8RKia7UtZ8bSQbLguLvxVO+asKtQfZWA==", - "license": "MIT", - "engines": { - "node": ">= 18.19.0" - }, - "peerDependencies": { - "@redis/client": "^5.12.1" - } - }, - "node_modules/@redis/client": { - "version": "5.12.1", - "resolved": "http://localhost:4873/@redis/client/-/client-5.12.1.tgz", - "integrity": "sha512-7aPGWeqA3uFm43o19umzdl16CEjK/JQGtSXVPevplTaOU3VJA/rseBC1QvYUz9lLDIMBimc4SW/zrW4S89BaCA==", - "license": "MIT", - "dependencies": { - "cluster-key-slot": "1.1.2" - }, - "engines": { - "node": ">= 18.19.0" - }, - "peerDependencies": { - "@node-rs/xxhash": "^1.1.0", - "@opentelemetry/api": ">=1 <2" - }, - "peerDependenciesMeta": { - "@node-rs/xxhash": { - "optional": true - }, - "@opentelemetry/api": { - "optional": true - } - } - }, - "node_modules/@redis/json": { - "version": "5.12.1", - "resolved": "http://localhost:4873/@redis/json/-/json-5.12.1.tgz", - "integrity": "sha512-eOze75esLve4vfqDel7aMX08CNaiLLQS2fV8mpRN9NxPe1rVR4vQyYiW/OgtGUysF6QOr9ANhfxABKNOJfXdKg==", - "license": "MIT", - "engines": { - "node": ">= 18.19.0" - }, - "peerDependencies": { - "@redis/client": "^5.12.1" - } - }, - "node_modules/@redis/search": { - "version": "5.12.1", - "resolved": "http://localhost:4873/@redis/search/-/search-5.12.1.tgz", - "integrity": "sha512-ItlxbxC9cKI6IU1TLWoczwJCRb6TdmkEpWv05UrPawqaAnWGRu3rcIqsc5vN483T2fSociuyV1UkWIL5I4//2w==", - "license": "MIT", - "engines": { - "node": ">= 18.19.0" - }, - "peerDependencies": { - "@redis/client": "^5.12.1" - } - }, - "node_modules/@redis/time-series": { - "version": "5.12.1", - "resolved": "http://localhost:4873/@redis/time-series/-/time-series-5.12.1.tgz", - "integrity": "sha512-c6JL6E3EcZJuNqKFz+KM+l9l5mpcQiKvTwgA3blt5glWJ8hjDk0yeHN3beE/MpqYIQ8UEX44ItQzgkE/gCBELQ==", - "license": "MIT", - "engines": { - "node": ">= 18.19.0" - }, - "peerDependencies": { - "@redis/client": "^5.12.1" - } - }, "node_modules/@scarf/scarf": { "version": "1.4.0", - "resolved": "http://localhost:4873/@scarf/scarf/-/scarf-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz", "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==", "hasInstallScript": true, "license": "Apache-2.0" }, "node_modules/@sendgrid/client": { "version": "8.1.6", - "resolved": "http://localhost:4873/@sendgrid/client/-/client-8.1.6.tgz", + "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-8.1.6.tgz", "integrity": "sha512-/BHu0hqwXNHr2aLhcXU7RmmlVqrdfrbY9KpaNj00KZHlVOVoRxRVrpOCabIB+91ISXJ6+mLM9vpaVUhK6TwBWA==", "license": "MIT", "dependencies": { @@ -5194,7 +4930,7 @@ }, "node_modules/@sendgrid/helpers": { "version": "8.0.0", - "resolved": "http://localhost:4873/@sendgrid/helpers/-/helpers-8.0.0.tgz", + "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-8.0.0.tgz", "integrity": "sha512-Ze7WuW2Xzy5GT5WRx+yEv89fsg/pgy3T1E3FS0QEx0/VvRmigMZ5qyVGhJz4SxomegDkzXv/i0aFPpHKN8qdAA==", "license": "MIT", "dependencies": { @@ -5206,7 +4942,7 @@ }, "node_modules/@sendgrid/mail": { "version": "8.1.6", - "resolved": "http://localhost:4873/@sendgrid/mail/-/mail-8.1.6.tgz", + "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-8.1.6.tgz", "integrity": "sha512-/ZqxUvKeEztU9drOoPC/8opEPOk+jLlB2q4+xpx6HVLq6aFu3pMpalkTpAQz8XfRfpLp8O25bh6pGPcHDCYpqg==", "license": "MIT", "dependencies": { @@ -5219,13 +4955,13 @@ }, "node_modules/@simple-git/args-pathspec": { "version": "1.0.3", - "resolved": "http://localhost:4873/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz", "integrity": "sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==", "license": "MIT" }, "node_modules/@simple-git/argv-parser": { "version": "1.1.1", - "resolved": "http://localhost:4873/@simple-git/argv-parser/-/argv-parser-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/@simple-git/argv-parser/-/argv-parser-1.1.1.tgz", "integrity": "sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==", "license": "MIT", "dependencies": { @@ -5234,14 +4970,14 @@ }, "node_modules/@sinclair/typebox": { "version": "0.27.10", - "resolved": "http://localhost:4873/@sinclair/typebox/-/typebox-0.27.10.tgz", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", "dev": true, "license": "MIT" }, "node_modules/@sinonjs/commons": { "version": "3.0.1", - "resolved": "http://localhost:4873/@sinonjs/commons/-/commons-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "license": "BSD-3-Clause", @@ -5251,7 +4987,7 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", - "resolved": "http://localhost:4873/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "license": "BSD-3-Clause", @@ -5259,42 +4995,13 @@ "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@smithy/chunked-blob-reader": { - "version": "5.2.2", - "resolved": "http://localhost:4873/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz", - "integrity": "sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/chunked-blob-reader-native": { - "version": "4.2.3", - "resolved": "http://localhost:4873/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz", - "integrity": "sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-base64": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@smithy/config-resolver": { - "version": "4.4.17", - "resolved": "http://localhost:4873/@smithy/config-resolver/-/config-resolver-4.4.17.tgz", - "integrity": "sha512-TzDZcAnhTyAHbXVxWZo7/tEcrIeFq20IBk8So3OLOetWpR8EwY/yEqBMBFaJMeyEiREDq4NfEl+qO3OAUD+vbQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.5.1.tgz", + "integrity": "sha512-abXk3LhODsvRHsk0ZS9ztrg/fZatTa9Z/z4pgx65YSLR+rY6kvUG/1IgcDKEUciR8MfdnkT5oPeHJTy/HhzDIQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "@smithy/util-endpoints": "^3.4.2", - "@smithy/util-middleware": "^4.2.14", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5302,20 +5009,13 @@ } }, "node_modules/@smithy/core": { - "version": "3.23.17", - "resolved": "http://localhost:4873/@smithy/core/-/core-3.23.17.tgz", - "integrity": "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ==", + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.1.tgz", + "integrity": "sha512-3mT7o4qQyUWttYnVK3A0Z/u3Xha3E81tXn32Tz6vjZiUXhBrkEivpw1hBYfh84iFF9CSzkBU9Y1DJ3Q6RQ231g==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.14", + "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", - "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" }, "engines": { @@ -5323,30 +5023,13 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.14.tgz", - "integrity": "sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-codec": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/eventstream-codec/-/eventstream-codec-4.2.14.tgz", - "integrity": "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.1.tgz", + "integrity": "sha512-0S/acwHnqX4WrjXzhdiDRxsG2s9SC0cpPIK9nZ1R6UOHd+j7uL28+4bHu22urbLk2TVw3fkp6na/+fkUt/pLNQ==", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/crc32": "5.2.0", + "@smithy/core": "^3.24.1", "@smithy/types": "^4.14.1", - "@smithy/util-hex-encoding": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5354,13 +5037,12 @@ } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.14.tgz", - "integrity": "sha512-8IelTCtTctWRbb+0Dcy+C0aICh1qa0qWXqgjcXDmMuCvPJRnv26hiDZoAau2ILOniki65mCPKqOQs/BaWvO4CQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.3.1.tgz", + "integrity": "sha512-X7MyI1fu8M84IPKk49kO4kb27Mqp6un9/0o/MsA1ngZ5OxxWKGUxPS3S/AJ9q1cPVTSGmRcbaGNfGUSsflTJkg==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.14", - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5368,12 +5050,12 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.14", - "resolved": "http://localhost:4873/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.14.tgz", - "integrity": "sha512-sqHiHpYRYo3FJlaIxD1J8PhbcmJAm7IuM16mVnwSkCToD7g00IBZzKuiLNMGmftULmEUX6/UAz8/NN5uMP8bVA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.4.1.tgz", + "integrity": "sha512-JZGbSXaBk7JY8VPzsh66ksJ0nTWXbApduFDkA/pEl3aTm2EoAiUZE1Iltp6c+X1bB8kxPQW0mHDfVdYCpWTOzg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5381,27 +5063,12 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.14.tgz", - "integrity": "sha512-Ht/8BuGlKfFTy0H3+8eEu0vdpwGztCnaLLXtpXNdQqiR7Hj4vFScU3T436vRAjATglOIPjJXronY+1WxxNLSiw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.14.tgz", - "integrity": "sha512-lWyt4T2XQZUZgK3tQ3Wn0w3XBvZsK/vjTuJl6bXbnGZBHH0ZUSONTYiK9TgjTTzU54xQr3DRFwpjmhp0oLm3gg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.3.1.tgz", + "integrity": "sha512-6Cn4xTNVxn9PWTHSbvf8zmcDhQW8lrLE1Xq5CJgmX6wEvdjS2S0KuE79Aiznv/jx51jpFJ98OuWyE+Bt+oG1MQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.2.14", - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5409,15 +5076,13 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.17", - "resolved": "http://localhost:4873/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.17.tgz", - "integrity": "sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.1.tgz", + "integrity": "sha512-r7bN6spQ+caZC8AnyvSxkRUb57zt2jhhRw3Z+2Ez8hjq6coIikDBFUUI/+CQ1xx9K6eX1Gx6wUKo4ylU66TIqw==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.14", - "@smithy/querystring-builder": "^4.2.14", + "@smithy/core": "^3.24.1", "@smithy/types": "^4.14.1", - "@smithy/util-base64": "^4.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5425,14 +5090,12 @@ } }, "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.15", - "resolved": "http://localhost:4873/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.15.tgz", - "integrity": "sha512-0PJ4Al3fg2nM4qKrAIxyNcApgqHAXcBkN8FeizOz69z0rb26uZ6lMESYtxegaTlXB5Hj84JfwMPavMrwDMjucA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.3.1.tgz", + "integrity": "sha512-2fbltQVQYmGd0OzPv2oDMRF0pxkzeIx8cbpx2x6W3UJWGaEyUzVPxF4d0sDXZ/r2obg+RbTyhTidXWlPDsKRKw==", "license": "Apache-2.0", "dependencies": { - "@smithy/chunked-blob-reader": "^5.2.2", - "@smithy/chunked-blob-reader-native": "^4.2.3", - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5440,14 +5103,12 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/hash-node/-/hash-node-4.2.14.tgz", - "integrity": "sha512-8ZBDY2DD4wr+GGjTpPtiglEsqr0lUP+KHqgZcWczFf6qeZ/YRjMIOoQWVQlmwu7EtxKTd8YXD8lblmYcpBIA1g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.3.1.tgz", + "integrity": "sha512-u0/zo11mg7yNneoYgTkH4sXwSmcBpbl49o4UNCtQ7hYsXxynsN25KYHmXzqi7TPk5HQL5klGnpU5koOY0O+9hw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5455,13 +5116,12 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/hash-stream-node/-/hash-stream-node-4.2.14.tgz", - "integrity": "sha512-tw4GANWkZPb6+BdD4Fgucqzey2+r73Z/GRo9zklsCdwrnxxumUV83ZIaBDdudV4Ylazw3EPTiJZhpX42105ruQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.3.1.tgz", + "integrity": "sha512-4NOnngIoXngbJw9By3u8KXRgqt4vYATpAobNBnNWxOREP7JY3kB0bUmbBNhZ7dtZV/b4auO1eFMD4cLj9OauVg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", - "@smithy/util-utf8": "^4.2.2", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5469,12 +5129,12 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/invalid-dependency/-/invalid-dependency-4.2.14.tgz", - "integrity": "sha512-c21qJiTSb25xvvOp+H2TNZzPCngrvl5vIPqPB8zQ/DmJF4QWXO19x1dWfMJZ6wZuuWUPPm0gV8C0cU3+ifcWuw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.3.1.tgz", + "integrity": "sha512-cLmwtDoulyZvRepAfyV+3rx5oMvuh51dbE+6En3vGC09j3uVSRt1U4oguNu32ub3soGX0oYtBs8E7S2Q4SxTqg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5482,11 +5142,12 @@ } }, "node_modules/@smithy/is-array-buffer": { - "version": "4.2.2", - "resolved": "http://localhost:4873/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", - "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.3.1.tgz", + "integrity": "sha512-9aVG6VjOFVFHC6Z4hGAzIIrsVWpp1QOO4ERQ2k1S19VrgCamUGIBE2ilAnMWCfr+mlowHlLRXBStsTk/2c5HfA==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5494,203 +5155,143 @@ } }, "node_modules/@smithy/md5-js": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/md5-js/-/md5-js-4.2.14.tgz", - "integrity": "sha512-V2v0vx+h0iUSNG1Alt+GNBMSLGCrl9iVsdd+Ap67HPM9PN479x12V8LkuMoKImNZxn3MXeuyUjls+/7ZACZghA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-content-length": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/middleware-content-length/-/middleware-content-length-4.2.14.tgz", - "integrity": "sha512-xhHq7fX4/3lv5NHxLUk3OeEvl0xZ+Ek3qIbWaCL4f9JwgDZEclPBElljaZCAItdGPQl/kSM4LPMOpy1MYgprpw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.32", - "resolved": "http://localhost:4873/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.32.tgz", - "integrity": "sha512-ZZkgyjnJppiZbIm6Qbx92pbXYi1uzenIvGhBSCDlc7NwuAkiqSgS75j1czAD25ZLs2FjMjYy1q7gyRVWG6JA0Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.23.17", - "@smithy/middleware-serde": "^4.2.20", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-middleware": "^4.2.14", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-retry": { - "version": "4.5.6", - "resolved": "http://localhost:4873/@smithy/middleware-retry/-/middleware-retry-4.5.6.tgz", - "integrity": "sha512-5zhmo2AkstmM/RMKYP0NHfmuYWBR+/umlmSuALgajLxf0X0rLE6d17MfzTxpzkILWVhwvCJkCyPH0AfMlbaucQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.3.1.tgz", + "integrity": "sha512-98NalujRdzv6ggVQNYPWpL2K57UKeUB8roIr61u6+JiHd7KUlMQ+sn/vk6IG4XxEjw2vlC7eu/xjYXshUE4XXg==", "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.23.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/service-error-classification": "^4.3.1", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.5", - "@smithy/uuid": "^1.1.2", + "dependencies": { + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/middleware-serde": { - "version": "4.2.20", - "resolved": "http://localhost:4873/@smithy/middleware-serde/-/middleware-serde-4.2.20.tgz", - "integrity": "sha512-Lx9JMO9vArPtiChE3wbEZ5akMIDQpWQtlu90lhACQmNOXcGXRbaDywMHDzuDZ2OkZzP+9wQfZi3YJT9F67zTQQ==", + "node_modules/@smithy/middleware-content-length": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.3.1.tgz", + "integrity": "sha512-l4BUIP+wljW/Ar+0/QcGdmElI9lalrywfzNijXMBG34Z510FRzPyrDLx/blNTZOAm0C4Mvx5t/bf760CZo1ajg==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.17", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/middleware-stack": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/middleware-stack/-/middleware-stack-4.2.14.tgz", - "integrity": "sha512-2dvkUKLuFdKsCRmOE4Mn63co0Djtsm+JMh0bYZQupN1pJwMeE8FmQmRLLzzEMN0dnNi7CDCYYH8F0EVwWiPBeA==", + "node_modules/@smithy/middleware-endpoint": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.5.1.tgz", + "integrity": "sha512-qtqu5TS+8Y18ZDkJoiXN5AMW1G4JAg1+xytzpsUvIR5a4EUsgd5HQg12lekEHWpm2TDUmOgg+hBaHK7dvyWdkA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/node-config-provider": { - "version": "4.3.14", - "resolved": "http://localhost:4873/@smithy/node-config-provider/-/node-config-provider-4.3.14.tgz", - "integrity": "sha512-S+gFjyo/weSVL0P1b9Ts8C/CwIfNCgUPikk3sl6QVsfE/uUuO+QsF+NsE/JkpvWqqyz1wg7HFdiaZuj5CoBMRg==", + "node_modules/@smithy/middleware-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.6.1.tgz", + "integrity": "sha512-eTaQhxs0rfUuAkL2MSKrH8DTO7YCeAgrdN0B2/RAeuHmXQ+x52dk5qUBsi/jtcqe5LxItgq5AG5tI6Cp8c0sow==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/node-http-handler": { - "version": "4.6.1", - "resolved": "http://localhost:4873/@smithy/node-http-handler/-/node-http-handler-4.6.1.tgz", - "integrity": "sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg==", + "node_modules/@smithy/middleware-serde": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.3.1.tgz", + "integrity": "sha512-t7YtUe076zWVypVmy1rX91oKi2TFJCkpfFpfMhJFpEIRPP0iL9JxjeSyFQ+1bF45JUfDzOzslUJa150WcSrBug==", "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.14", - "@smithy/querystring-builder": "^4.2.14", - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/property-provider": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/property-provider/-/property-provider-4.2.14.tgz", - "integrity": "sha512-WuM31CgfsnQ/10i7NYr0PyxqknD72Y5uMfUMVSniPjbEPceiTErb4eIqJQ+pdxNEAUEWrewrGjIRjVbVHsxZiQ==", + "node_modules/@smithy/middleware-stack": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.3.1.tgz", + "integrity": "sha512-1jKwiKZxCMQNqmp4uVPYA6r+MLGjEtH07gnOUdPgbnjuOIrl/0JY/ICdpQtFgeBsQ/Up01gnSv8GYEL0fb8yvg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/protocol-http": { - "version": "5.3.14", - "resolved": "http://localhost:4873/@smithy/protocol-http/-/protocol-http-5.3.14.tgz", - "integrity": "sha512-dN5F8kHx8RNU0r+pCwNmFZyz6ChjMkzShy/zup6MtkRmmix4vZzJdW+di7x//b1LiynIev88FM18ie+wwPcQtQ==", + "node_modules/@smithy/node-config-provider": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.4.1.tgz", + "integrity": "sha512-q7tDJEJXcaSG/8TVpu2f2l9bzxTzDM9geWmltbzsY6Hfh3yiuXXTpLIO8+zwYASPPVFaTJpdKwjSSjdoDoccgw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/querystring-builder": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/querystring-builder/-/querystring-builder-4.2.14.tgz", - "integrity": "sha512-XYA5Z0IqTeF+5XDdh4BBmSA0HvbgVZIyv4cmOoUheDNR57K1HgBp9ukUMx3Cr3XpDHHpLBnexPE3LAtDsZkj2A==", + "node_modules/@smithy/node-http-handler": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.1.tgz", + "integrity": "sha512-BdEYko85f/ldp68uH8XEyIvo810xFk6eyPH81SRggTOApYHWA+Xu7B2EzLuHbe37WVLaUA7F1fWR3/zBeme2WA==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.1", "@smithy/types": "^4.14.1", - "@smithy/util-uri-escape": "^4.2.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/querystring-parser": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/querystring-parser/-/querystring-parser-4.2.14.tgz", - "integrity": "sha512-hr+YyqBD23GVvRxGGrcc/oOeNlK3PzT5Fu4dzrDXxzS1LpFiuL2PQQqKPs87M79aW7ziMs+nvB3qdw77SqE7Lw==", + "node_modules/@smithy/property-provider": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.3.1.tgz", + "integrity": "sha512-3NHoqVBhzpY2b4YBx9AqyKC4C8nnEjl5FyKuxrCjvnjinG0ODj+yg1xX360nNahT6wghYjSw1SooCt3kIdnqIA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/service-error-classification": { - "version": "4.3.1", - "resolved": "http://localhost:4873/@smithy/service-error-classification/-/service-error-classification-4.3.1.tgz", - "integrity": "sha512-aUQuDGh760ts/8MU+APjIZhlLPKhIIfqyzZaJikLEIMrdxFvxuLYD0WxWzaYWpmLbQlXDe9p7EWM3HsBe0K6Gw==", + "node_modules/@smithy/protocol-http": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.4.1.tgz", + "integrity": "sha512-8irPNCQgYxcSFp1aGcnDNFkTwSA+xPUaFq9V/v1+JXWu8sKr5b3cFmg2kBTkjkvypDmGeNffuNu0x5iqw1NoAw==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1" + "@smithy/core": "^3.24.1", + "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.9", - "resolved": "http://localhost:4873/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.9.tgz", - "integrity": "sha512-495/V2I15SHgedSJoDPD23JuSfKAp726ZI1V0wtjB07Wh7q/0tri/0e0DLefZCHgxZonrGKt/OCTpAtP1wE1kQ==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.5.1.tgz", + "integrity": "sha512-FKoKxVzdFPhyynFI+SPTWrgOP60fZ4l1UwukWYj4eyhpSmEI7MJ6p58hawIIt9bwp+aek9NEm8Zika7E+GEoeg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5698,18 +5299,13 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.14", - "resolved": "http://localhost:4873/@smithy/signature-v4/-/signature-v4-5.3.14.tgz", - "integrity": "sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.1.tgz", + "integrity": "sha512-728lZZEWYWubBESrfntNslZQYDKRlJDY4dcDnYbL50+gu35pGPLblu4S0/RH/RDLF6me1M87ECHsHELGL7dA/Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.2", - "@smithy/protocol-http": "^5.3.14", + "@smithy/core": "^3.24.1", "@smithy/types": "^4.14.1", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-uri-escape": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", "tslib": "^2.6.2" }, "engines": { @@ -5717,17 +5313,13 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.12.13", - "resolved": "http://localhost:4873/@smithy/smithy-client/-/smithy-client-4.12.13.tgz", - "integrity": "sha512-y/Pcj1V9+qG98gyu1gvftHB7rDpdh+7kIBIggs55yGm3JdtBV8GT8IFF3a1qxZ79QnaJHX9GXzvBG6tAd+czJA==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.13.1.tgz", + "integrity": "sha512-IcznNM8Qd9u1X3oflp12tkzyOB4HbT+sfYWlWiyEysgNzSHoWcHUUsTT4y1jjDjtVuuVVQbYks+g1kVd7u1eGQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.17", - "@smithy/middleware-endpoint": "^4.4.32", - "@smithy/middleware-stack": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", + "@smithy/core": "^3.24.1", "@smithy/types": "^4.14.1", - "@smithy/util-stream": "^4.5.25", "tslib": "^2.6.2" }, "engines": { @@ -5736,7 +5328,7 @@ }, "node_modules/@smithy/types": { "version": "4.14.1", - "resolved": "http://localhost:4873/@smithy/types/-/types-4.14.1.tgz", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", "license": "Apache-2.0", "dependencies": { @@ -5747,13 +5339,12 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/url-parser/-/url-parser-4.2.14.tgz", - "integrity": "sha512-p06BiBigJ8bTA3MgnOfCtDUWnAMY0YfedO/GRpmc7p+wg3KW8vbXy1xwSu5ASy0wV7rRYtlfZOIKH4XqfhjSQQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.3.1.tgz", + "integrity": "sha512-tuelFlF2PZR/wogFC58NIrPOv+Zna4N1+3kA161/33D1Gbwvl6Nh4WsAsW05ZyPp0O6CMGsdbb0S2b/qVjRMCw==", "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.2.14", - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5761,13 +5352,12 @@ } }, "node_modules/@smithy/util-base64": { - "version": "4.3.2", - "resolved": "http://localhost:4873/@smithy/util-base64/-/util-base64-4.3.2.tgz", - "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.4.1.tgz", + "integrity": "sha512-fTHiwW2xbiRiWzfSk4IGAr3gNZCH4fuRYqt8+IuarsP/YON35576iVdePraZ6yJlFxlCL0eMec3/F7xYqoKzlg==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5775,11 +5365,12 @@ } }, "node_modules/@smithy/util-body-length-browser": { - "version": "4.2.2", - "resolved": "http://localhost:4873/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", - "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.3.1.tgz", + "integrity": "sha512-1scg5t4nV3hV7CZs996/XHb80aDZ5YotH4NcvkW/w/rHj+cSz0aCIzwz8aUNKB4nCDPSHRCbrKoj+TvycYefmw==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5787,11 +5378,12 @@ } }, "node_modules/@smithy/util-body-length-node": { - "version": "4.2.3", - "resolved": "http://localhost:4873/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", - "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.3.1.tgz", + "integrity": "sha512-VRC8MKVPKrgUYThTA7ughcKMfjW6/X92H0wXGJoda0Apw4O5xbXL0GMLz40DTWlsb5hh2iItk6+XL72uJdxYcw==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5799,83 +5391,76 @@ } }, "node_modules/@smithy/util-buffer-from": { - "version": "4.2.2", - "resolved": "http://localhost:4873/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", - "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.2", + "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@smithy/util-config-provider": { - "version": "4.2.2", - "resolved": "http://localhost:4873/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", - "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", + "node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.49", - "resolved": "http://localhost:4873/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.49.tgz", - "integrity": "sha512-a5bNrdiONYB/qE2BuKegvUMd/+ZDwdg4vsNuuSzYE8qs2EYAdK9CynL+Rzn29PbPiUqoz/cbpRbcLzD5lEevHw==", + "node_modules/@smithy/util-config-provider": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.3.1.tgz", + "integrity": "sha512-lw6L5GF5+W19vO6o3fZwRT2cXEG+8b2LH0b9ppjDT6nIxjUgmljEQGninx5XorylwKZZ4XLVABeroJ8oaF9RmQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.54", - "resolved": "http://localhost:4873/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.54.tgz", - "integrity": "sha512-g1cvrJvOnzeJgEdf7AE4luI7gp6L8weE0y9a9wQUSGtjb8QRHDbCJYuE4Sy0SD9N8RrnNPFsPltAz/OSoBR9Zw==", + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.4.1.tgz", + "integrity": "sha512-1rA7w+LjK1WJClsffC81Z/ZtjFt22QsKhBjUYEnZsGVS2nOTfOENKBzdg4SxhdwFvBCjcbpjscUfXOPwE3UHWQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.4.17", - "@smithy/credential-provider-imds": "^4.2.14", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-endpoints": { - "version": "3.4.2", - "resolved": "http://localhost:4873/@smithy/util-endpoints/-/util-endpoints-3.4.2.tgz", - "integrity": "sha512-a55Tr+3OKld4TTtnT+RhKOQHyPxm3j/xL4OR83WBUhLJaKDS9dnJ7arRMOp3t31dcLhApwG9bgvrRXBHlLdIkg==", + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.3.1.tgz", + "integrity": "sha512-1fk1wfQHBenQD5NitVKOFgW0wsISYAFPIXGyStJWAeCtMyRhgHYvtJxBk2rwGWA0L5QX6oM6yeHSLKPFMk59ww==", "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-hex-encoding": { - "version": "4.2.2", - "resolved": "http://localhost:4873/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", - "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", + "node_modules/@smithy/util-endpoints": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.5.1.tgz", + "integrity": "sha512-yORYzJD5zoGbSDkAACr0dIjDiSEA3X8h8lggDENl1dkKpCG0TQIoItPBqtvuJHzFFjRXumcoH+/09xIuixGyCw==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5883,12 +5468,12 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "4.2.14", - "resolved": "http://localhost:4873/@smithy/util-middleware/-/util-middleware-4.2.14.tgz", - "integrity": "sha512-1Su2vj9RYNDEv/V+2E+jXkkwGsgR7dc4sfHn9Z7ruzQHJIEni9zzw5CauvRXlFJfmgcqYP8fWa0dkh2Q2YaQyw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.3.1.tgz", + "integrity": "sha512-SRRMDcIgVXVhVbxviBaSZbuWuVW3jD08wv4ESV0V2oiw0Mki8TPVQ5IxwD3MvSTPg52QYsRP+JoMw5WdUdeWAg==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5896,13 +5481,12 @@ } }, "node_modules/@smithy/util-retry": { - "version": "4.3.5", - "resolved": "http://localhost:4873/@smithy/util-retry/-/util-retry-4.3.5.tgz", - "integrity": "sha512-h1IJsbgMDA+jaTjrco/JsyfWOgHRJBv8myB1y4AEI2fjIzD6ktZ7pFAyTw+gwN9GKIAygvC6db0mq0j8N2rFOg==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.4.1.tgz", + "integrity": "sha512-qkgWgwn1xw0GoY9Ea/B6FrYSPfHA0zyOtJkokwxZuvucRf2+2lfTut6adi4e4Y7LEAaxsFG7r6i05mtDCxbHKA==", "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.3.1", - "@smithy/types": "^4.14.1", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5910,30 +5494,12 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.5.25", - "resolved": "http://localhost:4873/@smithy/util-stream/-/util-stream-4.5.25.tgz", - "integrity": "sha512-/PFpG4k8Ze8Ei+mMKj3oiPICYekthuzePZMgZbCqMiXIHHf4n2aZ4Ps0aSRShycFTGuj/J6XldmC0x0DwednIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/types": "^4.14.1", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-uri-escape": { - "version": "4.2.2", - "resolved": "http://localhost:4873/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", - "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.6.1.tgz", + "integrity": "sha512-GjZfEft0M0V3n2YM/LGkr5LeLd8gxHUIzW0rUz6VtTtlAq245GxHlJghvoPEjJHKTj255iHFAiA4IsIdK40Ueg==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5941,12 +5507,12 @@ } }, "node_modules/@smithy/util-utf8": { - "version": "4.2.2", - "resolved": "http://localhost:4873/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", - "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.3.1.tgz", + "integrity": "sha512-FtRrSnriXtOs4+J8/y9SbQ1xmN71hrOsN/YJr5PQQj5nR1l7YNkGS/TEk4gr0WN7gyrUqw8/RFaYVjI18732ZA==", "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.2", + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5954,24 +5520,12 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.3.0", - "resolved": "http://localhost:4873/@smithy/util-waiter/-/util-waiter-4.3.0.tgz", - "integrity": "sha512-JyjYmLAfS+pdxF92o4yLgEoy0zhayKTw73FU1aofLWwLcJw7iSqIY2exGmMTrl/lmZugP5p/zxdFSippJDfKWA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/uuid": { - "version": "1.1.2", - "resolved": "http://localhost:4873/@smithy/uuid/-/uuid-1.1.2.tgz", - "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.4.1.tgz", + "integrity": "sha512-G/gWDykZNL0NVcd1qXkoKm45jxJECp6q53DSomM5QKMsyAMEsGksVq+HwgonqYxfFJEzzHi6ljtWKXVS1pl0/Q==", "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { @@ -5980,7 +5534,7 @@ }, "node_modules/@so-ric/colorspace": { "version": "1.1.6", - "resolved": "http://localhost:4873/@so-ric/colorspace/-/colorspace-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/@so-ric/colorspace/-/colorspace-1.1.6.tgz", "integrity": "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==", "license": "MIT", "dependencies": { @@ -5990,19 +5544,19 @@ }, "node_modules/@socket.io/component-emitter": { "version": "3.1.2", - "resolved": "http://localhost:4873/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", "license": "MIT" }, "node_modules/@sqltools/formatter": { "version": "1.2.5", - "resolved": "http://localhost:4873/@sqltools/formatter/-/formatter-1.2.5.tgz", + "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", "license": "MIT" }, "node_modules/@testing-library/jest-dom": { "version": "6.1.4", - "resolved": "http://localhost:4873/@testing-library/jest-dom/-/jest-dom-6.1.4.tgz", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.4.tgz", "integrity": "sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw==", "dev": true, "license": "MIT", @@ -6044,7 +5598,7 @@ }, "node_modules/@testing-library/jest-dom/node_modules/chalk": { "version": "3.0.0", - "resolved": "http://localhost:4873/chalk/-/chalk-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "license": "MIT", @@ -6058,7 +5612,7 @@ }, "node_modules/@tokenizer/inflate": { "version": "0.4.1", - "resolved": "http://localhost:4873/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", "license": "MIT", "dependencies": { @@ -6075,41 +5629,41 @@ }, "node_modules/@tokenizer/token": { "version": "0.3.0", - "resolved": "http://localhost:4873/@tokenizer/token/-/token-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "license": "MIT" }, "node_modules/@tsconfig/node10": { "version": "1.0.12", - "resolved": "http://localhost:4873/@tsconfig/node10/-/node10-1.0.12.tgz", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", "devOptional": true, "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", - "resolved": "http://localhost:4873/@tsconfig/node12/-/node12-1.0.11.tgz", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "devOptional": true, "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", - "resolved": "http://localhost:4873/@tsconfig/node14/-/node14-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "devOptional": true, "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.4", - "resolved": "http://localhost:4873/@tsconfig/node16/-/node16-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "devOptional": true, "license": "MIT" }, "node_modules/@types/babel__core": { "version": "7.20.5", - "resolved": "http://localhost:4873/@types/babel__core/-/babel__core-7.20.5.tgz", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "license": "MIT", @@ -6123,7 +5677,7 @@ }, "node_modules/@types/babel__generator": { "version": "7.27.0", - "resolved": "http://localhost:4873/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", @@ -6133,7 +5687,7 @@ }, "node_modules/@types/babel__template": { "version": "7.4.4", - "resolved": "http://localhost:4873/@types/babel__template/-/babel__template-7.4.4.tgz", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "license": "MIT", @@ -6144,7 +5698,7 @@ }, "node_modules/@types/babel__traverse": { "version": "7.28.0", - "resolved": "http://localhost:4873/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, "license": "MIT", @@ -6154,7 +5708,7 @@ }, "node_modules/@types/body-parser": { "version": "1.19.6", - "resolved": "http://localhost:4873/@types/body-parser/-/body-parser-1.19.6.tgz", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dev": true, "license": "MIT", @@ -6165,7 +5719,7 @@ }, "node_modules/@types/compression": { "version": "1.8.1", - "resolved": "http://localhost:4873/@types/compression/-/compression-1.8.1.tgz", + "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.8.1.tgz", "integrity": "sha512-kCFuWS0ebDbmxs0AXYn6e2r2nrGAb5KwQhknjSPSPgJcGd8+HVSILlUyFhGqML2gk39HcG7D1ydW9/qpYkN00Q==", "dev": true, "license": "MIT", @@ -6176,7 +5730,7 @@ }, "node_modules/@types/connect": { "version": "3.4.38", - "resolved": "http://localhost:4873/@types/connect/-/connect-3.4.38.tgz", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "license": "MIT", @@ -6186,14 +5740,14 @@ }, "node_modules/@types/cookiejar": { "version": "2.1.5", - "resolved": "http://localhost:4873/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", "dev": true, "license": "MIT" }, "node_modules/@types/cors": { "version": "2.8.19", - "resolved": "http://localhost:4873/@types/cors/-/cors-2.8.19.tgz", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", "license": "MIT", "dependencies": { @@ -6202,7 +5756,7 @@ }, "node_modules/@types/cron": { "version": "1.7.3", - "resolved": "http://localhost:4873/@types/cron/-/cron-1.7.3.tgz", + "resolved": "https://registry.npmjs.org/@types/cron/-/cron-1.7.3.tgz", "integrity": "sha512-iPmUXyIJG1Js+ldPYhOQcYU3kCAQ2FWrSkm1FJPoii2eYSn6wEW6onPukNTT0bfiflexNSRPl6KWmAIqS+36YA==", "dev": true, "license": "MIT", @@ -6213,14 +5767,14 @@ }, "node_modules/@types/crypto-js": { "version": "4.2.2", - "resolved": "http://localhost:4873/@types/crypto-js/-/crypto-js-4.2.2.tgz", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz", "integrity": "sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==", "dev": true, "license": "MIT" }, "node_modules/@types/eslint": { "version": "9.6.1", - "resolved": "http://localhost:4873/@types/eslint/-/eslint-9.6.1.tgz", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", @@ -6231,7 +5785,7 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.7", - "resolved": "http://localhost:4873/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, "license": "MIT", @@ -6241,15 +5795,15 @@ } }, "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "http://localhost:4873/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", "dev": true, "license": "MIT" }, "node_modules/@types/express": { "version": "4.17.25", - "resolved": "http://localhost:4873/@types/express/-/express-4.17.25.tgz", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dev": true, "license": "MIT", @@ -6262,7 +5816,7 @@ }, "node_modules/@types/express-serve-static-core": { "version": "4.19.8", - "resolved": "http://localhost:4873/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "dev": true, "license": "MIT", @@ -6275,7 +5829,7 @@ }, "node_modules/@types/fluent-ffmpeg": { "version": "2.1.28", - "resolved": "http://localhost:4873/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.28.tgz", + "resolved": "https://registry.npmjs.org/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.28.tgz", "integrity": "sha512-5ovxsDwBcPfJ+eYs1I/ZpcYCnkce7pvH9AHSvrZllAp1ZPpTRDZAFjF3TRFbukxSgIYTTNYePbS0rKUmaxVbXw==", "dev": true, "license": "MIT", @@ -6285,7 +5839,7 @@ }, "node_modules/@types/graceful-fs": { "version": "4.1.9", - "resolved": "http://localhost:4873/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "license": "MIT", @@ -6295,21 +5849,21 @@ }, "node_modules/@types/http-errors": { "version": "2.0.5", - "resolved": "http://localhost:4873/@types/http-errors/-/http-errors-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", - "resolved": "http://localhost:4873/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", - "resolved": "http://localhost:4873/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "license": "MIT", @@ -6319,7 +5873,7 @@ }, "node_modules/@types/istanbul-reports": { "version": "3.0.4", - "resolved": "http://localhost:4873/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "license": "MIT", @@ -6329,7 +5883,7 @@ }, "node_modules/@types/jest": { "version": "29.5.14", - "resolved": "http://localhost:4873/@types/jest/-/jest-29.5.14.tgz", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, "license": "MIT", @@ -6340,28 +5894,28 @@ }, "node_modules/@types/js-yaml": { "version": "4.0.9", - "resolved": "http://localhost:4873/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", "dev": true, "license": "MIT" }, "node_modules/@types/json-diff": { "version": "0.7.0", - "resolved": "http://localhost:4873/@types/json-diff/-/json-diff-0.7.0.tgz", + "resolved": "https://registry.npmjs.org/@types/json-diff/-/json-diff-0.7.0.tgz", "integrity": "sha512-20IJqupGHywtIaE6fS30iygh3dVqVdzmsnrYn/VFuRaQKxLx/RGH5K9hhCfctVxgN7KzJlnD7gYFAOrNwiCgtA==", "dev": true, "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", - "resolved": "http://localhost:4873/@types/json-schema/-/json-schema-7.0.15.tgz", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "license": "MIT" }, "node_modules/@types/jsonwebtoken": { "version": "8.5.9", - "resolved": "http://localhost:4873/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", "dev": true, "license": "MIT", @@ -6371,48 +5925,48 @@ }, "node_modules/@types/lodash": { "version": "4.17.24", - "resolved": "http://localhost:4873/@types/lodash/-/lodash-4.17.24.tgz", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz", "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", "license": "MIT" }, "node_modules/@types/long": { "version": "4.0.2", - "resolved": "http://localhost:4873/@types/long/-/long-4.0.2.tgz", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", "license": "MIT" }, "node_modules/@types/luxon": { "version": "3.7.1", - "resolved": "http://localhost:4873/@types/luxon/-/luxon-3.7.1.tgz", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz", "integrity": "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==", "license": "MIT" }, "node_modules/@types/methods": { "version": "1.1.4", - "resolved": "http://localhost:4873/@types/methods/-/methods-1.1.4.tgz", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", "dev": true, "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", - "resolved": "http://localhost:4873/@types/mime/-/mime-1.3.5.tgz", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { - "version": "25.6.0", - "resolved": "http://localhost:4873/@types/node/-/node-25.6.0.tgz", - "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.7.0.tgz", + "integrity": "sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==", "license": "MIT", "dependencies": { - "undici-types": "~7.19.0" + "undici-types": "~7.21.0" } }, "node_modules/@types/node-fetch": { "version": "2.6.13", - "resolved": "http://localhost:4873/@types/node-fetch/-/node-fetch-2.6.13.tgz", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", "dev": true, "license": "MIT", @@ -6422,22 +5976,22 @@ } }, "node_modules/@types/qs": { - "version": "6.15.0", - "resolved": "http://localhost:4873/@types/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==", "dev": true, "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", - "resolved": "http://localhost:4873/@types/range-parser/-/range-parser-1.2.7.tgz", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true, "license": "MIT" }, "node_modules/@types/redis": { "version": "2.8.32", - "resolved": "http://localhost:4873/@types/redis/-/redis-2.8.32.tgz", + "resolved": "https://registry.npmjs.org/@types/redis/-/redis-2.8.32.tgz", "integrity": "sha512-7jkMKxcGq9p242exlbsVzuJb57KqHRhNl4dHoQu2Y5v9bCAbtIXXH0R3HleSQW4CTOqpHIYUW3t6tpUj4BVQ+w==", "dev": true, "license": "MIT", @@ -6447,7 +6001,7 @@ }, "node_modules/@types/request-ip": { "version": "0.0.37", - "resolved": "http://localhost:4873/@types/request-ip/-/request-ip-0.0.37.tgz", + "resolved": "https://registry.npmjs.org/@types/request-ip/-/request-ip-0.0.37.tgz", "integrity": "sha512-uw6/i3rQnpznxD7LtLaeuZytLhKZK6bRoTS6XVJlwxIOoOpEBU7bgKoVXDNtOg4Xl6riUKHa9bjMVrL6ESqYlQ==", "dev": true, "license": "MIT", @@ -6457,14 +6011,14 @@ }, "node_modules/@types/semver": { "version": "7.7.1", - "resolved": "http://localhost:4873/@types/semver/-/semver-7.7.1.tgz", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", "dev": true, "license": "MIT" }, "node_modules/@types/send": { "version": "1.2.1", - "resolved": "http://localhost:4873/@types/send/-/send-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dev": true, "license": "MIT", @@ -6474,7 +6028,7 @@ }, "node_modules/@types/serve-static": { "version": "1.15.10", - "resolved": "http://localhost:4873/@types/serve-static/-/serve-static-1.15.10.tgz", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "dev": true, "license": "MIT", @@ -6486,7 +6040,7 @@ }, "node_modules/@types/serve-static/node_modules/@types/send": { "version": "0.17.6", - "resolved": "http://localhost:4873/@types/send/-/send-0.17.6.tgz", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", "dev": true, "license": "MIT", @@ -6497,7 +6051,7 @@ }, "node_modules/@types/sharp": { "version": "0.28.6", - "resolved": "http://localhost:4873/@types/sharp/-/sharp-0.28.6.tgz", + "resolved": "https://registry.npmjs.org/@types/sharp/-/sharp-0.28.6.tgz", "integrity": "sha512-AjKjo5vk5mkcTrWL0U1zFUdCp/uqLebvbe7ezAJx0tgp6ST9JmfsYK1q1lpjfPM5S1YQ1wr5uboPSu2S8UO9yw==", "dev": true, "license": "MIT", @@ -6507,14 +6061,14 @@ }, "node_modules/@types/stack-utils": { "version": "2.0.3", - "resolved": "http://localhost:4873/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, "license": "MIT" }, "node_modules/@types/superagent": { "version": "8.1.9", - "resolved": "http://localhost:4873/@types/superagent/-/superagent-8.1.9.tgz", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", "dev": true, "license": "MIT", @@ -6527,7 +6081,7 @@ }, "node_modules/@types/supertest": { "version": "2.0.16", - "resolved": "http://localhost:4873/@types/supertest/-/supertest-2.0.16.tgz", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.16.tgz", "integrity": "sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==", "dev": true, "license": "MIT", @@ -6537,26 +6091,32 @@ }, "node_modules/@types/tiny-async-pool": { "version": "1.0.5", - "resolved": "http://localhost:4873/@types/tiny-async-pool/-/tiny-async-pool-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/@types/tiny-async-pool/-/tiny-async-pool-1.0.5.tgz", "integrity": "sha512-8hqr+s4rBthBtb+k02NXejl7BGVbj7CD/ZB2rMSvoSjXO52aXbtm9q/JEey5uDjzADs/zXEo7bU9iX+M6glAUA==", "dev": true, "license": "MIT" }, "node_modules/@types/triple-beam": { "version": "1.3.5", - "resolved": "http://localhost:4873/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", "license": "MIT" }, + "node_modules/@types/validator": { + "version": "13.15.10", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.10.tgz", + "integrity": "sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==", + "license": "MIT" + }, "node_modules/@types/webidl-conversions": { "version": "7.0.3", - "resolved": "http://localhost:4873/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", "license": "MIT" }, "node_modules/@types/whatwg-url": { "version": "11.0.5", - "resolved": "http://localhost:4873/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", "license": "MIT", "dependencies": { @@ -6565,7 +6125,7 @@ }, "node_modules/@types/ws": { "version": "8.18.1", - "resolved": "http://localhost:4873/@types/ws/-/ws-8.18.1.tgz", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "license": "MIT", "dependencies": { @@ -6574,7 +6134,7 @@ }, "node_modules/@types/yargs": { "version": "17.0.35", - "resolved": "http://localhost:4873/@types/yargs/-/yargs-17.0.35.tgz", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", @@ -6584,14 +6144,14 @@ }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "resolved": "http://localhost:4873/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", - "resolved": "http://localhost:4873/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "license": "MIT", @@ -6626,7 +6186,7 @@ }, "node_modules/@typescript-eslint/parser": { "version": "5.62.0", - "resolved": "http://localhost:4873/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "license": "BSD-2-Clause", @@ -6654,7 +6214,7 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", - "resolved": "http://localhost:4873/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "license": "MIT", @@ -6672,7 +6232,7 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "5.62.0", - "resolved": "http://localhost:4873/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "license": "MIT", @@ -6700,7 +6260,7 @@ }, "node_modules/@typescript-eslint/types": { "version": "5.62.0", - "resolved": "http://localhost:4873/@typescript-eslint/types/-/types-5.62.0.tgz", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "license": "MIT", @@ -6714,7 +6274,7 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", - "resolved": "http://localhost:4873/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "license": "BSD-2-Clause", @@ -6742,7 +6302,7 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.62.0", - "resolved": "http://localhost:4873/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "license": "MIT", @@ -6769,7 +6329,7 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", - "resolved": "http://localhost:4873/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "license": "MIT", @@ -6786,15 +6346,15 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "http://localhost:4873/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz", + "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==", "dev": true, "license": "ISC" }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", - "resolved": "http://localhost:4873/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "license": "MIT", @@ -6805,28 +6365,28 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.13.2", - "resolved": "http://localhost:4873/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", - "resolved": "http://localhost:4873/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", - "resolved": "http://localhost:4873/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", - "resolved": "http://localhost:4873/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, "license": "MIT", @@ -6838,14 +6398,14 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.13.2", - "resolved": "http://localhost:4873/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", - "resolved": "http://localhost:4873/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, "license": "MIT", @@ -6858,7 +6418,7 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.13.2", - "resolved": "http://localhost:4873/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, "license": "MIT", @@ -6868,7 +6428,7 @@ }, "node_modules/@webassemblyjs/leb128": { "version": "1.13.2", - "resolved": "http://localhost:4873/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, "license": "Apache-2.0", @@ -6878,14 +6438,14 @@ }, "node_modules/@webassemblyjs/utf8": { "version": "1.13.2", - "resolved": "http://localhost:4873/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", - "resolved": "http://localhost:4873/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, "license": "MIT", @@ -6902,7 +6462,7 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.14.1", - "resolved": "http://localhost:4873/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "license": "MIT", @@ -6916,7 +6476,7 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.14.1", - "resolved": "http://localhost:4873/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, "license": "MIT", @@ -6929,7 +6489,7 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.14.1", - "resolved": "http://localhost:4873/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, "license": "MIT", @@ -6944,7 +6504,7 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.14.1", - "resolved": "http://localhost:4873/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "license": "MIT", @@ -6955,7 +6515,7 @@ }, "node_modules/@whatwg-node/promise-helpers": { "version": "1.3.2", - "resolved": "http://localhost:4873/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz", "integrity": "sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==", "license": "MIT", "dependencies": { @@ -6967,21 +6527,21 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "resolved": "http://localhost:4873/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", - "resolved": "http://localhost:4873/@xtuc/long/-/long-4.2.2.tgz", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true, "license": "Apache-2.0" }, "node_modules/accepts": { "version": "2.0.0", - "resolved": "http://localhost:4873/accepts/-/accepts-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "license": "MIT", "dependencies": { @@ -6994,7 +6554,7 @@ }, "node_modules/acorn": { "version": "8.16.0", - "resolved": "http://localhost:4873/acorn/-/acorn-8.16.0.tgz", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", "bin": { @@ -7006,7 +6566,7 @@ }, "node_modules/acorn-import-attributes": { "version": "1.9.5", - "resolved": "http://localhost:4873/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "license": "MIT", "peerDependencies": { @@ -7015,7 +6575,7 @@ }, "node_modules/acorn-import-phases": { "version": "1.0.4", - "resolved": "http://localhost:4873/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", "dev": true, "license": "MIT", @@ -7028,7 +6588,7 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "http://localhost:4873/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", @@ -7038,7 +6598,7 @@ }, "node_modules/acorn-walk": { "version": "8.3.5", - "resolved": "http://localhost:4873/acorn-walk/-/acorn-walk-8.3.5.tgz", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", "devOptional": true, "license": "MIT", @@ -7051,7 +6611,7 @@ }, "node_modules/agentkeepalive": { "version": "4.6.0", - "resolved": "http://localhost:4873/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", "license": "MIT", "dependencies": { @@ -7063,7 +6623,7 @@ }, "node_modules/ajv": { "version": "8.18.0", - "resolved": "http://localhost:4873/ajv/-/ajv-8.18.0.tgz", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", @@ -7080,7 +6640,7 @@ }, "node_modules/ajv-formats": { "version": "3.0.1", - "resolved": "http://localhost:4873/ajv-formats/-/ajv-formats-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "license": "MIT", @@ -7098,7 +6658,7 @@ }, "node_modules/ajv-keywords": { "version": "5.1.0", - "resolved": "http://localhost:4873/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "license": "MIT", @@ -7111,7 +6671,7 @@ }, "node_modules/amqp-connection-manager": { "version": "4.1.15", - "resolved": "http://localhost:4873/amqp-connection-manager/-/amqp-connection-manager-4.1.15.tgz", + "resolved": "https://registry.npmjs.org/amqp-connection-manager/-/amqp-connection-manager-4.1.15.tgz", "integrity": "sha512-YGi8MuO2K4u0qC4b1qAKVIK8CdBJF+PpEZpHKxmrL3x61pU1sAb2SHzQl7ypoqr6oECIfVqtG9DGdOZxaUq1Wg==", "license": "MIT", "dependencies": { @@ -7127,7 +6687,7 @@ }, "node_modules/amqplib": { "version": "0.10.9", - "resolved": "http://localhost:4873/amqplib/-/amqplib-0.10.9.tgz", + "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.10.9.tgz", "integrity": "sha512-jwSftI4QjS3mizvnSnOrPGYiUnm1vI2OP1iXeOUz5pb74Ua0nbf6nPyyTzuiCLEE3fMpaJORXh2K/TQ08H5xGA==", "license": "MIT", "dependencies": { @@ -7140,13 +6700,13 @@ }, "node_modules/anchorme": { "version": "3.0.8", - "resolved": "http://localhost:4873/anchorme/-/anchorme-3.0.8.tgz", + "resolved": "https://registry.npmjs.org/anchorme/-/anchorme-3.0.8.tgz", "integrity": "sha512-K61vxP907NA0Pv4z5v7xbiwosAjhdjCVUFGOFm1TEDFbKmK9/dRLT1jirFIQUuE5ni78Mv4D3Yr4rnQT1PJl9w==", "license": "MIT" }, "node_modules/ansi-colors": { "version": "4.1.3", - "resolved": "http://localhost:4873/ansi-colors/-/ansi-colors-4.1.3.tgz", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "license": "MIT", @@ -7156,7 +6716,7 @@ }, "node_modules/ansi-escapes": { "version": "4.3.2", - "resolved": "http://localhost:4873/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "license": "MIT", @@ -7172,7 +6732,7 @@ }, "node_modules/ansi-escapes/node_modules/type-fest": { "version": "0.21.3", - "resolved": "http://localhost:4873/type-fest/-/type-fest-0.21.3.tgz", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "license": "(MIT OR CC0-1.0)", @@ -7185,7 +6745,7 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", - "resolved": "http://localhost:4873/ansi-regex/-/ansi-regex-5.0.1.tgz", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { @@ -7194,7 +6754,7 @@ }, "node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "http://localhost:4873/ansi-styles/-/ansi-styles-4.3.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { @@ -7209,7 +6769,7 @@ }, "node_modules/ansis": { "version": "4.2.0", - "resolved": "http://localhost:4873/ansis/-/ansis-4.2.0.tgz", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", "license": "ISC", "engines": { @@ -7218,7 +6778,7 @@ }, "node_modules/anymatch": { "version": "3.1.3", - "resolved": "http://localhost:4873/anymatch/-/anymatch-3.1.3.tgz", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "license": "ISC", @@ -7232,7 +6792,7 @@ }, "node_modules/anymatch/node_modules/picomatch": { "version": "2.3.2", - "resolved": "http://localhost:4873/picomatch/-/picomatch-2.3.2.tgz", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", @@ -7245,7 +6805,7 @@ }, "node_modules/app-root-path": { "version": "3.1.0", - "resolved": "http://localhost:4873/app-root-path/-/app-root-path-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", "license": "MIT", "engines": { @@ -7254,26 +6814,26 @@ }, "node_modules/append-field": { "version": "1.0.0", - "resolved": "http://localhost:4873/append-field/-/append-field-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", "license": "MIT" }, "node_modules/arg": { "version": "4.1.3", - "resolved": "http://localhost:4873/arg/-/arg-4.1.3.tgz", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "devOptional": true, "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "http://localhost:4873/argparse/-/argparse-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.3.2", - "resolved": "http://localhost:4873/aria-query/-/aria-query-5.3.2.tgz", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, "license": "Apache-2.0", @@ -7283,14 +6843,14 @@ }, "node_modules/array-timsort": { "version": "1.0.3", - "resolved": "http://localhost:4873/array-timsort/-/array-timsort-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", "dev": true, "license": "MIT" }, "node_modules/array-union": { "version": "2.1.0", - "resolved": "http://localhost:4873/array-union/-/array-union-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "license": "MIT", @@ -7300,19 +6860,19 @@ }, "node_modules/asap": { "version": "2.0.6", - "resolved": "http://localhost:4873/asap/-/asap-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true, "license": "MIT" }, "node_modules/async": { "version": "0.2.10", - "resolved": "http://localhost:4873/async/-/async-0.2.10.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==" }, "node_modules/async-mutex": { "version": "0.5.0", - "resolved": "http://localhost:4873/async-mutex/-/async-mutex-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", "license": "MIT", "dependencies": { @@ -7321,7 +6881,7 @@ }, "node_modules/async-retry": { "version": "1.3.3", - "resolved": "http://localhost:4873/async-retry/-/async-retry-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", "license": "MIT", "dependencies": { @@ -7330,13 +6890,13 @@ }, "node_modules/asynckit": { "version": "0.4.0", - "resolved": "http://localhost:4873/asynckit/-/asynckit-0.4.0.tgz", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, "node_modules/available-typed-arrays": { "version": "1.0.7", - "resolved": "http://localhost:4873/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "license": "MIT", "dependencies": { @@ -7351,7 +6911,7 @@ }, "node_modules/aws-ssl-profiles": { "version": "1.1.2", - "resolved": "http://localhost:4873/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", "license": "MIT", "engines": { @@ -7359,19 +6919,19 @@ } }, "node_modules/axios": { - "version": "1.15.2", - "resolved": "http://localhost:4873/axios/-/axios-1.15.2.tgz", - "integrity": "sha512-wLrXxPtcrPTsNlJmKjkPnNPK2Ihe0hn0wGSaTEiHRPxwjvJwT3hKmXF4dpqxmPO9SoNb2FsYXj/xEo0gHN+D5A==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz", + "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.11", + "follow-redirects": "^1.16.0", "form-data": "^4.0.5", "proxy-from-env": "^2.1.0" } }, "node_modules/babel-jest": { "version": "29.7.0", - "resolved": "http://localhost:4873/babel-jest/-/babel-jest-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "license": "MIT", @@ -7393,7 +6953,7 @@ }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", - "resolved": "http://localhost:4873/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "license": "BSD-3-Clause", @@ -7410,7 +6970,7 @@ }, "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { "version": "5.2.1", - "resolved": "http://localhost:4873/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "license": "BSD-3-Clause", @@ -7427,7 +6987,7 @@ }, "node_modules/babel-plugin-istanbul/node_modules/semver": { "version": "6.3.1", - "resolved": "http://localhost:4873/semver/-/semver-6.3.1.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", @@ -7437,7 +6997,7 @@ }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", - "resolved": "http://localhost:4873/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "license": "MIT", @@ -7453,7 +7013,7 @@ }, "node_modules/babel-preset-current-node-syntax": { "version": "1.2.0", - "resolved": "http://localhost:4873/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", @@ -7480,7 +7040,7 @@ }, "node_modules/babel-preset-jest": { "version": "29.6.3", - "resolved": "http://localhost:4873/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "license": "MIT", @@ -7497,19 +7057,19 @@ }, "node_modules/backo2": { "version": "1.0.2", - "resolved": "http://localhost:4873/backo2/-/backo2-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==", "license": "MIT" }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "http://localhost:4873/balanced-match/-/balanced-match-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", - "resolved": "http://localhost:4873/base64-js/-/base64-js-1.5.1.tgz", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { @@ -7529,7 +7089,7 @@ }, "node_modules/base64id": { "version": "2.0.0", - "resolved": "http://localhost:4873/base64id/-/base64id-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "license": "MIT", "engines": { @@ -7537,9 +7097,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.23", - "resolved": "http://localhost:4873/baseline-browser-mapping/-/baseline-browser-mapping-2.10.23.tgz", - "integrity": "sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g==", + "version": "2.10.29", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.29.tgz", + "integrity": "sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -7551,13 +7111,13 @@ }, "node_modules/bech32": { "version": "1.1.4", - "resolved": "http://localhost:4873/bech32/-/bech32-1.1.4.tgz", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", "license": "MIT" }, "node_modules/bignumber.js": { "version": "9.3.1", - "resolved": "http://localhost:4873/bignumber.js/-/bignumber.js-9.3.1.tgz", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", "license": "MIT", "engines": { @@ -7566,13 +7126,13 @@ }, "node_modules/bintrees": { "version": "1.0.2", - "resolved": "http://localhost:4873/bintrees/-/bintrees-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==", "license": "MIT" }, "node_modules/bip39": { "version": "3.1.0", - "resolved": "http://localhost:4873/bip39/-/bip39-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", "integrity": "sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==", "license": "ISC", "optional": true, @@ -7582,7 +7142,7 @@ }, "node_modules/bl": { "version": "4.1.0", - "resolved": "http://localhost:4873/bl/-/bl-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "license": "MIT", @@ -7594,7 +7154,7 @@ }, "node_modules/bl/node_modules/buffer": { "version": "5.7.1", - "resolved": "http://localhost:4873/buffer/-/buffer-5.7.1.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ @@ -7619,7 +7179,7 @@ }, "node_modules/blake2b": { "version": "2.1.3", - "resolved": "http://localhost:4873/blake2b/-/blake2b-2.1.3.tgz", + "resolved": "https://registry.npmjs.org/blake2b/-/blake2b-2.1.3.tgz", "integrity": "sha512-pkDss4xFVbMb4270aCyGD3qLv92314Et+FsKzilCLxDz5DuZ2/1g3w4nmBbu6nKApPspnjG7JcwTjGZnduB1yg==", "license": "ISC", "dependencies": { @@ -7629,7 +7189,7 @@ }, "node_modules/blake2b-wasm": { "version": "1.1.7", - "resolved": "http://localhost:4873/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz", + "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz", "integrity": "sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA==", "license": "MIT", "dependencies": { @@ -7638,7 +7198,7 @@ }, "node_modules/body-parser": { "version": "2.2.2", - "resolved": "http://localhost:4873/body-parser/-/body-parser-2.2.2.tgz", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", "license": "MIT", "dependencies": { @@ -7662,13 +7222,13 @@ }, "node_modules/bowser": { "version": "2.14.1", - "resolved": "http://localhost:4873/bowser/-/bowser-2.14.1.tgz", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.14", - "resolved": "http://localhost:4873/brace-expansion/-/brace-expansion-1.1.14.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", @@ -7679,7 +7239,7 @@ }, "node_modules/braces": { "version": "3.0.3", - "resolved": "http://localhost:4873/braces/-/braces-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", "dependencies": { @@ -7691,7 +7251,7 @@ }, "node_modules/browserslist": { "version": "4.28.2", - "resolved": "http://localhost:4873/browserslist/-/browserslist-4.28.2.tgz", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "dev": true, "funding": [ @@ -7725,7 +7285,7 @@ }, "node_modules/bs-logger": { "version": "0.2.6", - "resolved": "http://localhost:4873/bs-logger/-/bs-logger-0.2.6.tgz", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, "license": "MIT", @@ -7738,7 +7298,7 @@ }, "node_modules/bser": { "version": "2.1.1", - "resolved": "http://localhost:4873/bser/-/bser-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "license": "Apache-2.0", @@ -7748,7 +7308,7 @@ }, "node_modules/bson": { "version": "6.10.4", - "resolved": "http://localhost:4873/bson/-/bson-6.10.4.tgz", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.4.tgz", "integrity": "sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==", "license": "Apache-2.0", "engines": { @@ -7757,7 +7317,7 @@ }, "node_modules/buffer": { "version": "6.0.3", - "resolved": "http://localhost:4873/buffer/-/buffer-6.0.3.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { @@ -7781,25 +7341,25 @@ }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", - "resolved": "http://localhost:4873/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "license": "BSD-3-Clause" }, "node_modules/buffer-from": { "version": "1.1.2", - "resolved": "http://localhost:4873/buffer-from/-/buffer-from-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, "node_modules/buffer-more-ints": { "version": "1.0.0", - "resolved": "http://localhost:4873/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==", "license": "MIT" }, "node_modules/busboy": { "version": "1.6.0", - "resolved": "http://localhost:4873/busboy/-/busboy-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dependencies": { "streamsearch": "^1.1.0" @@ -7810,7 +7370,7 @@ }, "node_modules/bytes": { "version": "3.1.2", - "resolved": "http://localhost:4873/bytes/-/bytes-3.1.2.tgz", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "license": "MIT", "engines": { @@ -7819,7 +7379,7 @@ }, "node_modules/call-bind": { "version": "1.0.9", - "resolved": "http://localhost:4873/call-bind/-/call-bind-1.0.9.tgz", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", "license": "MIT", "dependencies": { @@ -7837,7 +7397,7 @@ }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "http://localhost:4873/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", "dependencies": { @@ -7850,7 +7410,7 @@ }, "node_modules/call-bound": { "version": "1.0.4", - "resolved": "http://localhost:4873/call-bound/-/call-bound-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { @@ -7866,7 +7426,7 @@ }, "node_modules/callsites": { "version": "3.1.0", - "resolved": "http://localhost:4873/callsites/-/callsites-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", @@ -7876,7 +7436,7 @@ }, "node_modules/camelcase": { "version": "5.3.1", - "resolved": "http://localhost:4873/camelcase/-/camelcase-5.3.1.tgz", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "license": "MIT", @@ -7885,9 +7445,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001791", - "resolved": "http://localhost:4873/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz", - "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==", + "version": "1.0.30001792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", + "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", "dev": true, "funding": [ { @@ -7907,7 +7467,7 @@ }, "node_modules/chalk": { "version": "4.1.2", - "resolved": "http://localhost:4873/chalk/-/chalk-4.1.2.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", @@ -7924,7 +7484,7 @@ }, "node_modules/char-regex": { "version": "1.0.2", - "resolved": "http://localhost:4873/char-regex/-/char-regex-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, "license": "MIT", @@ -7934,14 +7494,14 @@ }, "node_modules/chardet": { "version": "2.1.1", - "resolved": "http://localhost:4873/chardet/-/chardet-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "dev": true, "license": "MIT" }, "node_modules/chokidar": { "version": "4.0.3", - "resolved": "http://localhost:4873/chokidar/-/chokidar-4.0.3.tgz", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", "dependencies": { @@ -7956,7 +7516,7 @@ }, "node_modules/chrome-trace-event": { "version": "1.0.4", - "resolved": "http://localhost:4873/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "license": "MIT", @@ -7966,7 +7526,7 @@ }, "node_modules/ci-info": { "version": "3.9.0", - "resolved": "http://localhost:4873/ci-info/-/ci-info-3.9.0.tgz", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ @@ -7982,7 +7542,7 @@ }, "node_modules/cipher-base": { "version": "1.0.7", - "resolved": "http://localhost:4873/cipher-base/-/cipher-base-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", "license": "MIT", "dependencies": { @@ -7996,7 +7556,7 @@ }, "node_modules/cjs-module-lexer": { "version": "1.4.3", - "resolved": "http://localhost:4873/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "license": "MIT" }, @@ -8007,19 +7567,19 @@ "license": "MIT" }, "node_modules/class-validator": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.2.tgz", - "integrity": "sha512-3kMVRF2io8N8pY1IFIXlho9r8IPUUIfHe2hYVtiebvAzU2XeQFXTv+XI4WX+TnXmtwXMDcjngcpkiPM0O9PvLw==", + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.4.tgz", + "integrity": "sha512-AwNusCCam51q703dW82x95tOqQp6oC9HNUl724KxJJOfnKscI8dOloXFgyez7LbTTKWuRBA37FScqVbJEoq8Yw==", "license": "MIT", "dependencies": { - "@types/validator": "^13.11.8", + "@types/validator": "^13.15.3", "libphonenumber-js": "^1.11.1", - "validator": "^13.9.0" + "validator": "^13.15.22" } }, "node_modules/cli-color": { "version": "2.0.4", - "resolved": "http://localhost:4873/cli-color/-/cli-color-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", "license": "ISC", "dependencies": { @@ -8035,7 +7595,7 @@ }, "node_modules/cli-cursor": { "version": "3.1.0", - "resolved": "http://localhost:4873/cli-cursor/-/cli-cursor-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "license": "MIT", @@ -8048,7 +7608,7 @@ }, "node_modules/cli-spinners": { "version": "2.9.2", - "resolved": "http://localhost:4873/cli-spinners/-/cli-spinners-2.9.2.tgz", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "license": "MIT", @@ -8061,7 +7621,7 @@ }, "node_modules/cli-table3": { "version": "0.6.5", - "resolved": "http://localhost:4873/cli-table3/-/cli-table3-0.6.5.tgz", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, "license": "MIT", @@ -8077,7 +7637,7 @@ }, "node_modules/cli-width": { "version": "4.1.0", - "resolved": "http://localhost:4873/cli-width/-/cli-width-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, "license": "ISC", @@ -8087,7 +7647,7 @@ }, "node_modules/cliui": { "version": "8.0.1", - "resolved": "http://localhost:4873/cliui/-/cliui-8.0.1.tgz", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "license": "ISC", "dependencies": { @@ -8101,7 +7661,7 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "http://localhost:4873/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", "dependencies": { @@ -8118,7 +7678,7 @@ }, "node_modules/clone": { "version": "1.0.4", - "resolved": "http://localhost:4873/clone/-/clone-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "license": "MIT", @@ -8128,7 +7688,7 @@ }, "node_modules/cluster-key-slot": { "version": "1.1.2", - "resolved": "http://localhost:4873/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", "license": "Apache-2.0", "engines": { @@ -8137,7 +7697,7 @@ }, "node_modules/co": { "version": "4.6.0", - "resolved": "http://localhost:4873/co/-/co-4.6.0.tgz", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "license": "MIT", @@ -8148,14 +7708,14 @@ }, "node_modules/collect-v8-coverage": { "version": "1.0.3", - "resolved": "http://localhost:4873/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, "license": "MIT" }, "node_modules/color": { "version": "5.0.3", - "resolved": "http://localhost:4873/color/-/color-5.0.3.tgz", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", "license": "MIT", "dependencies": { @@ -8168,7 +7728,7 @@ }, "node_modules/color-convert": { "version": "2.0.1", - "resolved": "http://localhost:4873/color-convert/-/color-convert-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { @@ -8180,13 +7740,13 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "http://localhost:4873/color-name/-/color-name-1.1.4.tgz", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/color-string": { "version": "2.1.4", - "resolved": "http://localhost:4873/color-string/-/color-string-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", "license": "MIT", "dependencies": { @@ -8198,7 +7758,7 @@ }, "node_modules/color-string/node_modules/color-name": { "version": "2.1.0", - "resolved": "http://localhost:4873/color-name/-/color-name-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz", "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==", "license": "MIT", "engines": { @@ -8207,7 +7767,7 @@ }, "node_modules/color/node_modules/color-convert": { "version": "3.1.3", - "resolved": "http://localhost:4873/color-convert/-/color-convert-3.1.3.tgz", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", "license": "MIT", "dependencies": { @@ -8219,7 +7779,7 @@ }, "node_modules/color/node_modules/color-name": { "version": "2.1.0", - "resolved": "http://localhost:4873/color-name/-/color-name-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.0.tgz", "integrity": "sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==", "license": "MIT", "engines": { @@ -8228,7 +7788,7 @@ }, "node_modules/combined-stream": { "version": "1.0.8", - "resolved": "http://localhost:4873/combined-stream/-/combined-stream-1.0.8.tgz", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", "dependencies": { @@ -8240,7 +7800,7 @@ }, "node_modules/commander": { "version": "4.1.1", - "resolved": "http://localhost:4873/commander/-/commander-4.1.1.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, "license": "MIT", @@ -8250,7 +7810,7 @@ }, "node_modules/comment-json": { "version": "5.0.0", - "resolved": "http://localhost:4873/comment-json/-/comment-json-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-5.0.0.tgz", "integrity": "sha512-uiqLcOiVDJtBP8WGkZHEP+FZIhTzP1dxvn59EfoYUi9gqupjrBWVQkO2atDrbnKPwLeotFYDsuNb26uBMqB+hw==", "dev": true, "license": "MIT", @@ -8264,7 +7824,7 @@ }, "node_modules/component-emitter": { "version": "1.3.1", - "resolved": "http://localhost:4873/component-emitter/-/component-emitter-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", "dev": true, "license": "MIT", @@ -8274,7 +7834,7 @@ }, "node_modules/compressible": { "version": "2.0.18", - "resolved": "http://localhost:4873/compressible/-/compressible-2.0.18.tgz", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "license": "MIT", "dependencies": { @@ -8286,7 +7846,7 @@ }, "node_modules/compression": { "version": "1.8.1", - "resolved": "http://localhost:4873/compression/-/compression-1.8.1.tgz", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "license": "MIT", "dependencies": { @@ -8304,7 +7864,7 @@ }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", - "resolved": "http://localhost:4873/debug/-/debug-2.6.9.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { @@ -8313,13 +7873,13 @@ }, "node_modules/compression/node_modules/ms": { "version": "2.0.0", - "resolved": "http://localhost:4873/ms/-/ms-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, "node_modules/compression/node_modules/negotiator": { "version": "0.6.4", - "resolved": "http://localhost:4873/negotiator/-/negotiator-0.6.4.tgz", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "license": "MIT", "engines": { @@ -8328,14 +7888,14 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "resolved": "http://localhost:4873/concat-map/-/concat-map-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, "node_modules/concat-stream": { "version": "2.0.0", - "resolved": "http://localhost:4873/concat-stream/-/concat-stream-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "engines": [ "node >= 6.0" @@ -8350,7 +7910,7 @@ }, "node_modules/consola": { "version": "3.4.2", - "resolved": "http://localhost:4873/consola/-/consola-3.4.2.tgz", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", "license": "MIT", "engines": { @@ -8359,7 +7919,7 @@ }, "node_modules/content-disposition": { "version": "1.1.0", - "resolved": "http://localhost:4873/content-disposition/-/content-disposition-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", "license": "MIT", "engines": { @@ -8372,7 +7932,7 @@ }, "node_modules/content-type": { "version": "1.0.5", - "resolved": "http://localhost:4873/content-type/-/content-type-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "license": "MIT", "engines": { @@ -8381,14 +7941,14 @@ }, "node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "http://localhost:4873/convert-source-map/-/convert-source-map-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, "node_modules/cookie": { "version": "0.7.2", - "resolved": "http://localhost:4873/cookie/-/cookie-0.7.2.tgz", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "license": "MIT", "engines": { @@ -8397,7 +7957,7 @@ }, "node_modules/cookie-signature": { "version": "1.2.2", - "resolved": "http://localhost:4873/cookie-signature/-/cookie-signature-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "license": "MIT", "engines": { @@ -8406,20 +7966,20 @@ }, "node_modules/cookiejar": { "version": "2.1.4", - "resolved": "http://localhost:4873/cookiejar/-/cookiejar-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true, "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.3", - "resolved": "http://localhost:4873/core-util-is/-/core-util-is-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, "node_modules/cors": { "version": "2.8.6", - "resolved": "http://localhost:4873/cors/-/cors-2.8.6.tgz", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", "license": "MIT", "dependencies": { @@ -8436,7 +7996,7 @@ }, "node_modules/cosmiconfig": { "version": "8.3.6", - "resolved": "http://localhost:4873/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "license": "MIT", @@ -8463,7 +8023,7 @@ }, "node_modules/create-hash": { "version": "1.2.0", - "resolved": "http://localhost:4873/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "license": "MIT", "dependencies": { @@ -8476,7 +8036,7 @@ }, "node_modules/create-hmac": { "version": "1.1.7", - "resolved": "http://localhost:4873/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "license": "MIT", "dependencies": { @@ -8490,7 +8050,7 @@ }, "node_modules/create-jest": { "version": "29.7.0", - "resolved": "http://localhost:4873/create-jest/-/create-jest-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, "license": "MIT", @@ -8512,14 +8072,14 @@ }, "node_modules/create-require": { "version": "1.1.1", - "resolved": "http://localhost:4873/create-require/-/create-require-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "devOptional": true, "license": "MIT" }, "node_modules/cron": { "version": "4.4.0", - "resolved": "http://localhost:4873/cron/-/cron-4.4.0.tgz", + "resolved": "https://registry.npmjs.org/cron/-/cron-4.4.0.tgz", "integrity": "sha512-fkdfq+b+AHI4cKdhZlppHveI/mgz2qpiYxcm+t5E5TsxX7QrLS1VE0+7GENEk9z0EeGPcpSciGv6ez24duWhwQ==", "license": "MIT", "dependencies": { @@ -8536,7 +8096,7 @@ }, "node_modules/cross-fetch": { "version": "3.2.0", - "resolved": "http://localhost:4873/cross-fetch/-/cross-fetch-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", "license": "MIT", "dependencies": { @@ -8545,7 +8105,7 @@ }, "node_modules/cross-inspect": { "version": "1.0.1", - "resolved": "http://localhost:4873/cross-inspect/-/cross-inspect-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/cross-inspect/-/cross-inspect-1.0.1.tgz", "integrity": "sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==", "license": "MIT", "dependencies": { @@ -8557,7 +8117,7 @@ }, "node_modules/cross-spawn": { "version": "7.0.6", - "resolved": "http://localhost:4873/cross-spawn/-/cross-spawn-7.0.6.tgz", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { @@ -8571,32 +8131,32 @@ }, "node_modules/crypto-js": { "version": "4.2.0", - "resolved": "http://localhost:4873/crypto-js/-/crypto-js-4.2.0.tgz", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", "license": "MIT" }, "node_modules/crypto-randomuuid": { "version": "1.0.0", - "resolved": "http://localhost:4873/crypto-randomuuid/-/crypto-randomuuid-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/crypto-randomuuid/-/crypto-randomuuid-1.0.0.tgz", "integrity": "sha512-/RC5F4l1SCqD/jazwUF6+t34Cd8zTSAGZ7rvvZu1whZUhD2a5MOGKjSGowoGcpj/cbVZk1ZODIooJEQQq3nNAA==", "license": "MIT" }, "node_modules/css.escape": { "version": "1.5.1", - "resolved": "http://localhost:4873/css.escape/-/css.escape-1.5.1.tgz", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", "dev": true, "license": "MIT" }, "node_modules/cssfilter": { "version": "0.0.10", - "resolved": "http://localhost:4873/cssfilter/-/cssfilter-0.0.10.tgz", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", "license": "MIT" }, "node_modules/d": { "version": "1.0.2", - "resolved": "http://localhost:4873/d/-/d-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", "license": "ISC", "dependencies": { @@ -8609,19 +8169,19 @@ }, "node_modules/dataloader": { "version": "2.2.3", - "resolved": "http://localhost:4873/dataloader/-/dataloader-2.2.3.tgz", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.3.tgz", "integrity": "sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==", "license": "MIT" }, "node_modules/dayjs": { "version": "1.11.20", - "resolved": "http://localhost:4873/dayjs/-/dayjs-1.11.20.tgz", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", "license": "MIT" }, "node_modules/dc-polyfill": { "version": "0.1.9", - "resolved": "http://localhost:4873/dc-polyfill/-/dc-polyfill-0.1.9.tgz", + "resolved": "https://registry.npmjs.org/dc-polyfill/-/dc-polyfill-0.1.9.tgz", "integrity": "sha512-D5mJThEEk9hf+CJPwTf9JFsrWdlWp8Pccjxkhf7uUT/E/cU9Mx3ebWe2Bz2OawRmJ6WS9eaDPBkeBE4uOKq9uw==", "license": "MIT", "engines": { @@ -8630,7 +8190,7 @@ }, "node_modules/dd-trace": { "version": "5.56.0", - "resolved": "http://localhost:4873/dd-trace/-/dd-trace-5.56.0.tgz", + "resolved": "https://registry.npmjs.org/dd-trace/-/dd-trace-5.56.0.tgz", "integrity": "sha512-1GiAh1UATmn8uZxk+nqZAdfJppiOq4kxJKiozMNvupffbcbAuDj5qnfYF9Hz3oqsk+Jtt2oheQeR05c4JRshXw==", "hasInstallScript": true, "license": "(Apache-2.0 OR BSD-3-Clause)", @@ -8675,7 +8235,7 @@ }, "node_modules/dd-trace/node_modules/lru-cache": { "version": "7.18.3", - "resolved": "http://localhost:4873/lru-cache/-/lru-cache-7.18.3.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "license": "ISC", "engines": { @@ -8684,13 +8244,13 @@ }, "node_modules/dd-trace/node_modules/path-to-regexp": { "version": "0.1.13", - "resolved": "http://localhost:4873/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", "license": "MIT" }, "node_modules/debug": { "version": "4.4.3", - "resolved": "http://localhost:4873/debug/-/debug-4.4.3.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { @@ -8707,7 +8267,7 @@ }, "node_modules/dedent": { "version": "1.7.2", - "resolved": "http://localhost:4873/dedent/-/dedent-1.7.2.tgz", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", "license": "MIT", "peerDependencies": { @@ -8721,14 +8281,14 @@ }, "node_modules/deep-is": { "version": "0.1.4", - "resolved": "http://localhost:4873/deep-is/-/deep-is-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", - "resolved": "http://localhost:4873/deepmerge/-/deepmerge-4.3.1.tgz", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "license": "MIT", "engines": { @@ -8737,7 +8297,7 @@ }, "node_modules/defaults": { "version": "1.0.4", - "resolved": "http://localhost:4873/defaults/-/defaults-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "license": "MIT", @@ -8750,7 +8310,7 @@ }, "node_modules/define-data-property": { "version": "1.1.4", - "resolved": "http://localhost:4873/define-data-property/-/define-data-property-1.1.4.tgz", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "license": "MIT", "dependencies": { @@ -8767,7 +8327,7 @@ }, "node_modules/delay": { "version": "5.0.0", - "resolved": "http://localhost:4873/delay/-/delay-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", "license": "MIT", "engines": { @@ -8779,7 +8339,7 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "resolved": "http://localhost:4873/delayed-stream/-/delayed-stream-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "license": "MIT", "engines": { @@ -8788,7 +8348,7 @@ }, "node_modules/denque": { "version": "2.1.0", - "resolved": "http://localhost:4873/denque/-/denque-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", "license": "Apache-2.0", "engines": { @@ -8797,7 +8357,7 @@ }, "node_modules/depd": { "version": "2.0.0", - "resolved": "http://localhost:4873/depd/-/depd-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "license": "MIT", "engines": { @@ -8806,7 +8366,7 @@ }, "node_modules/detect-libc": { "version": "2.1.2", - "resolved": "http://localhost:4873/detect-libc/-/detect-libc-2.1.2.tgz", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", "engines": { @@ -8815,7 +8375,7 @@ }, "node_modules/detect-newline": { "version": "3.1.0", - "resolved": "http://localhost:4873/detect-newline/-/detect-newline-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "license": "MIT", "engines": { @@ -8824,7 +8384,7 @@ }, "node_modules/dezalgo": { "version": "1.0.4", - "resolved": "http://localhost:4873/dezalgo/-/dezalgo-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, "license": "ISC", @@ -8835,7 +8395,7 @@ }, "node_modules/diff": { "version": "4.0.4", - "resolved": "http://localhost:4873/diff/-/diff-4.0.4.tgz", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", "devOptional": true, "license": "BSD-3-Clause", @@ -8845,7 +8405,7 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", - "resolved": "http://localhost:4873/diff-sequences/-/diff-sequences-29.6.3.tgz", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "license": "MIT", @@ -8855,7 +8415,7 @@ }, "node_modules/difflib": { "version": "0.2.4", - "resolved": "http://localhost:4873/difflib/-/difflib-0.2.4.tgz", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", "dependencies": { "heap": ">= 0.2.0" @@ -8866,7 +8426,7 @@ }, "node_modules/dir-glob": { "version": "3.0.1", - "resolved": "http://localhost:4873/dir-glob/-/dir-glob-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "license": "MIT", @@ -8879,7 +8439,7 @@ }, "node_modules/doctrine": { "version": "3.0.0", - "resolved": "http://localhost:4873/doctrine/-/doctrine-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "license": "Apache-2.0", @@ -8892,14 +8452,14 @@ }, "node_modules/dom-accessibility-api": { "version": "0.5.16", - "resolved": "http://localhost:4873/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true, "license": "MIT" }, "node_modules/dotenv": { "version": "17.4.1", - "resolved": "http://localhost:4873/dotenv/-/dotenv-17.4.1.tgz", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.1.tgz", "integrity": "sha512-k8DaKGP6r1G30Lx8V4+pCsLzKr8vLmV2paqEj1Y55GdAgJuIqpRp5FfajGF8KtwMxCz9qJc6wUIJnm053d/WCw==", "license": "BSD-2-Clause", "engines": { @@ -8911,7 +8471,7 @@ }, "node_modules/dotenv-expand": { "version": "12.0.3", - "resolved": "http://localhost:4873/dotenv-expand/-/dotenv-expand-12.0.3.tgz", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.3.tgz", "integrity": "sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==", "license": "BSD-2-Clause", "dependencies": { @@ -8926,7 +8486,7 @@ }, "node_modules/dotenv-expand/node_modules/dotenv": { "version": "16.6.1", - "resolved": "http://localhost:4873/dotenv/-/dotenv-16.6.1.tgz", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", "license": "BSD-2-Clause", "engines": { @@ -8938,7 +8498,7 @@ }, "node_modules/dreamopt": { "version": "0.8.0", - "resolved": "http://localhost:4873/dreamopt/-/dreamopt-0.8.0.tgz", + "resolved": "https://registry.npmjs.org/dreamopt/-/dreamopt-0.8.0.tgz", "integrity": "sha512-vyJTp8+mC+G+5dfgsY+r3ckxlz+QMX40VjPQsZc5gxVAxLmi64TBoVkP54A/pRAXMXsbu2GMMBrZPxNv23waMg==", "dependencies": { "wordwrap": ">=0.0.2" @@ -8949,7 +8509,7 @@ }, "node_modules/dunder-proto": { "version": "1.0.1", - "resolved": "http://localhost:4873/dunder-proto/-/dunder-proto-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "license": "MIT", "dependencies": { @@ -8963,13 +8523,13 @@ }, "node_modules/eastasianwidth": { "version": "0.2.0", - "resolved": "http://localhost:4873/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "license": "MIT" }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", - "resolved": "http://localhost:4873/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "license": "Apache-2.0", "dependencies": { @@ -8978,7 +8538,7 @@ }, "node_modules/ed25519-hd-key": { "version": "1.1.2", - "resolved": "http://localhost:4873/ed25519-hd-key/-/ed25519-hd-key-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/ed25519-hd-key/-/ed25519-hd-key-1.1.2.tgz", "integrity": "sha512-/0y9y6N7vM6Kj5ASr9J9wcMVDTtygxSOvYX+PJiMD7VcxCx2G03V5bLRl8Dug9EgkLFsLhGqBtQWQRcElEeWTA==", "license": "MIT", "dependencies": { @@ -8989,13 +8549,13 @@ }, "node_modules/ed25519-hd-key/node_modules/@types/node": { "version": "11.11.6", - "resolved": "http://localhost:4873/@types/node/-/node-11.11.6.tgz", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", "license": "MIT" }, "node_modules/ed25519-hd-key/node_modules/bip39": { "version": "3.0.2", - "resolved": "http://localhost:4873/bip39/-/bip39-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.2.tgz", "integrity": "sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==", "license": "ISC", "dependencies": { @@ -9007,7 +8567,7 @@ }, "node_modules/ed2curve": { "version": "0.3.0", - "resolved": "http://localhost:4873/ed2curve/-/ed2curve-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz", "integrity": "sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==", "license": "Unlicense", "dependencies": { @@ -9016,20 +8576,20 @@ }, "node_modules/ee-first": { "version": "1.1.1", - "resolved": "http://localhost:4873/ee-first/-/ee-first-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.344", - "resolved": "http://localhost:4873/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz", - "integrity": "sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==", + "version": "1.5.353", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.353.tgz", + "integrity": "sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==", "dev": true, "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", - "resolved": "http://localhost:4873/emittery/-/emittery-0.13.1.tgz", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "license": "MIT", @@ -9042,19 +8602,19 @@ }, "node_modules/emoji-regex": { "version": "8.0.0", - "resolved": "http://localhost:4873/emoji-regex/-/emoji-regex-8.0.0.tgz", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/enabled": { "version": "2.0.0", - "resolved": "http://localhost:4873/enabled/-/enabled-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", "license": "MIT" }, "node_modules/encodeurl": { "version": "2.0.0", - "resolved": "http://localhost:4873/encodeurl/-/encodeurl-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", "engines": { @@ -9063,7 +8623,7 @@ }, "node_modules/engine.io": { "version": "6.6.7", - "resolved": "http://localhost:4873/engine.io/-/engine.io-6.6.7.tgz", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.7.tgz", "integrity": "sha512-DgOngfDKM2EviOH3Mr9m7ks1q8roetLy/IMmYthAYzbpInMbYc/GS+fWFA3rl1gvwKVsQrVV61fo5emD1y3OJQ==", "license": "MIT", "dependencies": { @@ -9082,61 +8642,22 @@ "node": ">=10.2.0" } }, - "node_modules/engine.io-parser": { - "version": "5.2.3", - "resolved": "http://localhost:4873/engine.io-parser/-/engine.io-parser-5.2.3.tgz", - "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io/node_modules/accepts": { - "version": "1.3.8", - "resolved": "http://localhost:4873/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/engine.io/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/engine.io/node_modules/mime-types": { - "version": "2.1.35", - "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/engine.io-client": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.4.tgz", + "integrity": "sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==", "license": "MIT", "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/engine.io/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "http://localhost:4873/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.4.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.18.3", + "xmlhttprequest-ssl": "~2.1.1" } }, - "node_modules/engine.io/node_modules/ws": { + "node_modules/engine.io-client/node_modules/ws": { "version": "8.18.3", - "resolved": "http://localhost:4873/ws/-/ws-8.18.3.tgz", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { @@ -9157,7 +8678,7 @@ }, "node_modules/engine.io-parser": { "version": "5.2.3", - "resolved": "http://localhost:4873/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "license": "MIT", "engines": { @@ -9166,7 +8687,7 @@ }, "node_modules/engine.io/node_modules/accepts": { "version": "1.3.8", - "resolved": "http://localhost:4873/accepts/-/accepts-1.3.8.tgz", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "license": "MIT", "dependencies": { @@ -9179,7 +8700,7 @@ }, "node_modules/engine.io/node_modules/mime-db": { "version": "1.52.0", - "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", "engines": { @@ -9188,7 +8709,7 @@ }, "node_modules/engine.io/node_modules/mime-types": { "version": "2.1.35", - "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { @@ -9200,7 +8721,7 @@ }, "node_modules/engine.io/node_modules/negotiator": { "version": "0.6.3", - "resolved": "http://localhost:4873/negotiator/-/negotiator-0.6.3.tgz", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "license": "MIT", "engines": { @@ -9209,7 +8730,7 @@ }, "node_modules/engine.io/node_modules/ws": { "version": "8.18.3", - "resolved": "http://localhost:4873/ws/-/ws-8.18.3.tgz", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { @@ -9229,9 +8750,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.21.0", - "resolved": "http://localhost:4873/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz", - "integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==", + "version": "5.21.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.3.tgz", + "integrity": "sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -9244,7 +8765,7 @@ }, "node_modules/error-ex": { "version": "1.3.4", - "resolved": "http://localhost:4873/error-ex/-/error-ex-1.3.4.tgz", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", @@ -9254,7 +8775,7 @@ }, "node_modules/es-define-property": { "version": "1.0.1", - "resolved": "http://localhost:4873/es-define-property/-/es-define-property-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", "engines": { @@ -9263,7 +8784,7 @@ }, "node_modules/es-errors": { "version": "1.3.0", - "resolved": "http://localhost:4873/es-errors/-/es-errors-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "license": "MIT", "engines": { @@ -9272,14 +8793,14 @@ }, "node_modules/es-module-lexer": { "version": "2.1.0", - "resolved": "http://localhost:4873/es-module-lexer/-/es-module-lexer-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz", "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==", "dev": true, "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.1.1", - "resolved": "http://localhost:4873/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { @@ -9291,7 +8812,7 @@ }, "node_modules/es-set-tostringtag": { "version": "2.1.0", - "resolved": "http://localhost:4873/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "license": "MIT", "dependencies": { @@ -9306,7 +8827,7 @@ }, "node_modules/es5-ext": { "version": "0.10.64", - "resolved": "http://localhost:4873/es5-ext/-/es5-ext-0.10.64.tgz", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "hasInstallScript": true, "license": "ISC", @@ -9322,7 +8843,7 @@ }, "node_modules/es6-iterator": { "version": "2.0.3", - "resolved": "http://localhost:4873/es6-iterator/-/es6-iterator-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "license": "MIT", "dependencies": { @@ -9333,7 +8854,7 @@ }, "node_modules/es6-symbol": { "version": "3.1.4", - "resolved": "http://localhost:4873/es6-symbol/-/es6-symbol-3.1.4.tgz", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "license": "ISC", "dependencies": { @@ -9346,7 +8867,7 @@ }, "node_modules/es6-weak-map": { "version": "2.0.3", - "resolved": "http://localhost:4873/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "license": "ISC", "dependencies": { @@ -9358,7 +8879,7 @@ }, "node_modules/escalade": { "version": "3.2.0", - "resolved": "http://localhost:4873/escalade/-/escalade-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", "engines": { @@ -9367,13 +8888,13 @@ }, "node_modules/escape-html": { "version": "1.0.3", - "resolved": "http://localhost:4873/escape-html/-/escape-html-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "http://localhost:4873/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", @@ -9386,7 +8907,7 @@ }, "node_modules/eslint": { "version": "8.57.1", - "resolved": "http://localhost:4873/eslint/-/eslint-8.57.1.tgz", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, @@ -9443,7 +8964,7 @@ }, "node_modules/eslint-config-prettier": { "version": "8.10.2", - "resolved": "http://localhost:4873/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", "dev": true, "license": "MIT", @@ -9456,7 +8977,7 @@ }, "node_modules/eslint-plugin-prettier": { "version": "4.2.5", - "resolved": "http://localhost:4873/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz", "integrity": "sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==", "dev": true, "license": "MIT", @@ -9478,7 +8999,7 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "http://localhost:4873/eslint-scope/-/eslint-scope-5.1.1.tgz", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "license": "BSD-2-Clause", @@ -9492,7 +9013,7 @@ }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", - "resolved": "http://localhost:4873/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "license": "Apache-2.0", @@ -9505,7 +9026,7 @@ }, "node_modules/eslint/node_modules/ajv": { "version": "6.15.0", - "resolved": "http://localhost:4873/ajv/-/ajv-6.15.0.tgz", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", @@ -9522,7 +9043,7 @@ }, "node_modules/eslint/node_modules/eslint-scope": { "version": "7.2.2", - "resolved": "http://localhost:4873/eslint-scope/-/eslint-scope-7.2.2.tgz", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "license": "BSD-2-Clause", @@ -9539,7 +9060,7 @@ }, "node_modules/eslint/node_modules/estraverse": { "version": "5.3.0", - "resolved": "http://localhost:4873/estraverse/-/estraverse-5.3.0.tgz", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", @@ -9549,14 +9070,14 @@ }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "http://localhost:4873/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, "node_modules/esniff": { "version": "2.0.1", - "resolved": "http://localhost:4873/esniff/-/esniff-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", "license": "ISC", "dependencies": { @@ -9571,7 +9092,7 @@ }, "node_modules/espree": { "version": "9.6.1", - "resolved": "http://localhost:4873/espree/-/espree-9.6.1.tgz", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", @@ -9589,7 +9110,7 @@ }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "http://localhost:4873/esprima/-/esprima-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "license": "BSD-2-Clause", @@ -9603,7 +9124,7 @@ }, "node_modules/esquery": { "version": "1.7.0", - "resolved": "http://localhost:4873/esquery/-/esquery-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", @@ -9616,7 +9137,7 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.3.0", - "resolved": "http://localhost:4873/estraverse/-/estraverse-5.3.0.tgz", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", @@ -9626,7 +9147,7 @@ }, "node_modules/esrecurse": { "version": "4.3.0", - "resolved": "http://localhost:4873/esrecurse/-/esrecurse-4.3.0.tgz", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", @@ -9639,7 +9160,7 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", - "resolved": "http://localhost:4873/estraverse/-/estraverse-5.3.0.tgz", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", @@ -9649,7 +9170,7 @@ }, "node_modules/estraverse": { "version": "4.3.0", - "resolved": "http://localhost:4873/estraverse/-/estraverse-4.3.0.tgz", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "license": "BSD-2-Clause", @@ -9659,7 +9180,7 @@ }, "node_modules/esutils": { "version": "2.0.3", - "resolved": "http://localhost:4873/esutils/-/esutils-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", @@ -9669,7 +9190,7 @@ }, "node_modules/etag": { "version": "1.8.1", - "resolved": "http://localhost:4873/etag/-/etag-1.8.1.tgz", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "license": "MIT", "engines": { @@ -9678,7 +9199,7 @@ }, "node_modules/event-emitter": { "version": "0.3.5", - "resolved": "http://localhost:4873/event-emitter/-/event-emitter-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "license": "MIT", "dependencies": { @@ -9688,19 +9209,19 @@ }, "node_modules/eventemitter2": { "version": "6.4.9", - "resolved": "http://localhost:4873/eventemitter2/-/eventemitter2-6.4.9.tgz", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", "license": "MIT" }, "node_modules/eventemitter3": { "version": "3.1.2", - "resolved": "http://localhost:4873/eventemitter3/-/eventemitter3-3.1.2.tgz", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", "license": "MIT" }, "node_modules/events": { "version": "3.3.0", - "resolved": "http://localhost:4873/events/-/events-3.3.0.tgz", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "license": "MIT", @@ -9710,7 +9231,7 @@ }, "node_modules/execa": { "version": "5.1.1", - "resolved": "http://localhost:4873/execa/-/execa-5.1.1.tgz", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", @@ -9734,14 +9255,14 @@ }, "node_modules/execa/node_modules/signal-exit": { "version": "3.0.7", - "resolved": "http://localhost:4873/signal-exit/-/signal-exit-3.0.7.tgz", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/exit": { "version": "0.1.2", - "resolved": "http://localhost:4873/exit/-/exit-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, "engines": { @@ -9750,7 +9271,7 @@ }, "node_modules/expect": { "version": "29.7.0", - "resolved": "http://localhost:4873/expect/-/expect-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "license": "MIT", @@ -9767,7 +9288,7 @@ }, "node_modules/express": { "version": "5.2.1", - "resolved": "http://localhost:4873/express/-/express-5.2.1.tgz", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", "dependencies": { @@ -9810,7 +9331,7 @@ }, "node_modules/ext": { "version": "1.7.0", - "resolved": "http://localhost:4873/ext/-/ext-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "license": "ISC", "dependencies": { @@ -9819,7 +9340,7 @@ }, "node_modules/extract-files": { "version": "9.0.0", - "resolved": "http://localhost:4873/extract-files/-/extract-files-9.0.0.tgz", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==", "license": "MIT", "engines": { @@ -9831,27 +9352,27 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "resolved": "http://localhost:4873/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", - "resolved": "http://localhost:4873/fast-diff/-/fast-diff-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true, "license": "Apache-2.0" }, "node_modules/fast-fifo": { "version": "1.3.2", - "resolved": "http://localhost:4873/fast-fifo/-/fast-fifo-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", - "resolved": "http://localhost:4873/fast-glob/-/fast-glob-3.3.3.tgz", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "license": "MIT", "dependencies": { @@ -9867,7 +9388,7 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", - "resolved": "http://localhost:4873/glob-parent/-/glob-parent-5.1.2.tgz", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "license": "ISC", "dependencies": { @@ -9879,28 +9400,28 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "http://localhost:4873/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "resolved": "http://localhost:4873/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, "license": "MIT" }, "node_modules/fast-safe-stringify": { "version": "2.1.1", - "resolved": "http://localhost:4873/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "http://localhost:4873/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", + "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", "dev": true, "funding": [ { @@ -9915,9 +9436,9 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-builder": { - "version": "1.1.5", - "resolved": "http://localhost:4873/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz", - "integrity": "sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz", + "integrity": "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==", "funding": [ { "type": "github", @@ -9926,12 +9447,13 @@ ], "license": "MIT", "dependencies": { - "path-expression-matcher": "^1.1.3" + "path-expression-matcher": "^1.5.0", + "xml-naming": "^0.1.0" } }, "node_modules/fast-xml-parser": { "version": "5.7.2", - "resolved": "http://localhost:4873/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz", "integrity": "sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==", "funding": [ { @@ -9952,7 +9474,7 @@ }, "node_modules/fastq": { "version": "1.20.1", - "resolved": "http://localhost:4873/fastq/-/fastq-1.20.1.tgz", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "license": "ISC", "dependencies": { @@ -9961,7 +9483,7 @@ }, "node_modules/fb-watchman": { "version": "2.0.2", - "resolved": "http://localhost:4873/fb-watchman/-/fb-watchman-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "license": "Apache-2.0", @@ -9971,13 +9493,13 @@ }, "node_modules/fecha": { "version": "4.2.3", - "resolved": "http://localhost:4873/fecha/-/fecha-4.2.3.tgz", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", "license": "MIT" }, "node_modules/file-entry-cache": { "version": "6.0.1", - "resolved": "http://localhost:4873/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", @@ -9990,7 +9512,7 @@ }, "node_modules/file-stream-rotator": { "version": "0.6.1", - "resolved": "http://localhost:4873/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", "integrity": "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==", "license": "MIT", "dependencies": { @@ -9999,7 +9521,7 @@ }, "node_modules/file-type": { "version": "21.3.4", - "resolved": "http://localhost:4873/file-type/-/file-type-21.3.4.tgz", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.4.tgz", "integrity": "sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==", "license": "MIT", "dependencies": { @@ -10017,7 +9539,7 @@ }, "node_modules/fill-range": { "version": "7.1.1", - "resolved": "http://localhost:4873/fill-range/-/fill-range-7.1.1.tgz", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "license": "MIT", "dependencies": { @@ -10029,7 +9551,7 @@ }, "node_modules/finalhandler": { "version": "2.1.1", - "resolved": "http://localhost:4873/finalhandler/-/finalhandler-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "license": "MIT", "dependencies": { @@ -10050,7 +9572,7 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "http://localhost:4873/find-up/-/find-up-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", @@ -10067,7 +9589,7 @@ }, "node_modules/flat-cache": { "version": "3.2.0", - "resolved": "http://localhost:4873/flat-cache/-/flat-cache-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "license": "MIT", @@ -10082,7 +9604,7 @@ }, "node_modules/flat-cache/node_modules/glob": { "version": "7.2.3", - "resolved": "http://localhost:4873/glob/-/glob-7.2.3.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, @@ -10104,7 +9626,7 @@ }, "node_modules/flat-cache/node_modules/rimraf": { "version": "3.0.2", - "resolved": "http://localhost:4873/rimraf/-/rimraf-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, @@ -10121,14 +9643,14 @@ }, "node_modules/flatted": { "version": "3.4.2", - "resolved": "http://localhost:4873/flatted/-/flatted-3.4.2.tgz", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/fluent-ffmpeg": { "version": "2.1.3", - "resolved": "http://localhost:4873/fluent-ffmpeg/-/fluent-ffmpeg-2.1.3.tgz", + "resolved": "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.3.tgz", "integrity": "sha512-Be3narBNt2s6bsaqP6Jzq91heDgOEaDCJAXcE3qcma/EJBSy5FB4cvO31XBInuAuKBx8Kptf8dkhjK0IOru39Q==", "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "license": "MIT", @@ -10142,7 +9664,7 @@ }, "node_modules/fluent-ffmpeg/node_modules/which": { "version": "1.3.1", - "resolved": "http://localhost:4873/which/-/which-1.3.1.tgz", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "license": "ISC", "dependencies": { @@ -10154,13 +9676,13 @@ }, "node_modules/fn.name": { "version": "1.1.0", - "resolved": "http://localhost:4873/fn.name/-/fn.name-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", "license": "MIT" }, "node_modules/follow-redirects": { "version": "1.16.0", - "resolved": "http://localhost:4873/follow-redirects/-/follow-redirects-1.16.0.tgz", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { @@ -10180,7 +9702,7 @@ }, "node_modules/for-each": { "version": "0.3.5", - "resolved": "http://localhost:4873/for-each/-/for-each-0.3.5.tgz", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "license": "MIT", "dependencies": { @@ -10195,7 +9717,7 @@ }, "node_modules/foreground-child": { "version": "3.3.1", - "resolved": "http://localhost:4873/foreground-child/-/foreground-child-3.3.1.tgz", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "license": "ISC", "dependencies": { @@ -10211,7 +9733,7 @@ }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "9.1.0", - "resolved": "http://localhost:4873/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", "dev": true, "license": "MIT", @@ -10239,7 +9761,7 @@ }, "node_modules/form-data": { "version": "4.0.5", - "resolved": "http://localhost:4873/form-data/-/form-data-4.0.5.tgz", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "dependencies": { @@ -10255,7 +9777,7 @@ }, "node_modules/form-data/node_modules/mime-db": { "version": "1.52.0", - "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", "engines": { @@ -10264,7 +9786,7 @@ }, "node_modules/form-data/node_modules/mime-types": { "version": "2.1.35", - "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { @@ -10276,7 +9798,7 @@ }, "node_modules/formidable": { "version": "2.1.5", - "resolved": "http://localhost:4873/formidable/-/formidable-2.1.5.tgz", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.5.tgz", "integrity": "sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==", "dev": true, "license": "MIT", @@ -10292,7 +9814,7 @@ }, "node_modules/forwarded": { "version": "0.2.0", - "resolved": "http://localhost:4873/forwarded/-/forwarded-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "license": "MIT", "engines": { @@ -10301,7 +9823,7 @@ }, "node_modules/fresh": { "version": "2.0.0", - "resolved": "http://localhost:4873/fresh/-/fresh-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", "license": "MIT", "engines": { @@ -10310,7 +9832,7 @@ }, "node_modules/fs-extra": { "version": "10.1.0", - "resolved": "http://localhost:4873/fs-extra/-/fs-extra-10.1.0.tgz", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", @@ -10325,21 +9847,21 @@ }, "node_modules/fs-monkey": { "version": "1.1.0", - "resolved": "http://localhost:4873/fs-monkey/-/fs-monkey-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", "dev": true, "license": "Unlicense" }, "node_modules/fs.realpath": { "version": "1.0.0", - "resolved": "http://localhost:4873/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", - "resolved": "http://localhost:4873/fsevents/-/fsevents-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, @@ -10354,7 +9876,7 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "resolved": "http://localhost:4873/function-bind/-/function-bind-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "license": "MIT", "funding": { @@ -10363,7 +9885,7 @@ }, "node_modules/generate-function": { "version": "2.3.1", - "resolved": "http://localhost:4873/generate-function/-/generate-function-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", "license": "MIT", "dependencies": { @@ -10372,7 +9894,7 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "http://localhost:4873/gensync/-/gensync-1.0.0-beta.2.tgz", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", @@ -10382,7 +9904,7 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "http://localhost:4873/get-caller-file/-/get-caller-file-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "license": "ISC", "engines": { @@ -10391,7 +9913,7 @@ }, "node_modules/get-intrinsic": { "version": "1.3.0", - "resolved": "http://localhost:4873/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { @@ -10415,7 +9937,7 @@ }, "node_modules/get-package-type": { "version": "0.1.0", - "resolved": "http://localhost:4873/get-package-type/-/get-package-type-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "license": "MIT", @@ -10425,7 +9947,7 @@ }, "node_modules/get-proto": { "version": "1.0.1", - "resolved": "http://localhost:4873/get-proto/-/get-proto-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "license": "MIT", "dependencies": { @@ -10438,7 +9960,7 @@ }, "node_modules/get-stream": { "version": "6.0.1", - "resolved": "http://localhost:4873/get-stream/-/get-stream-6.0.1.tgz", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", @@ -10451,7 +9973,7 @@ }, "node_modules/glob": { "version": "13.0.6", - "resolved": "http://localhost:4873/glob/-/glob-13.0.6.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, "license": "BlueOak-1.0.0", @@ -10469,7 +9991,7 @@ }, "node_modules/glob-parent": { "version": "6.0.2", - "resolved": "http://localhost:4873/glob-parent/-/glob-parent-6.0.2.tgz", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", @@ -10482,14 +10004,14 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "resolved": "http://localhost:4873/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/glob/node_modules/balanced-match": { "version": "4.0.4", - "resolved": "http://localhost:4873/balanced-match/-/balanced-match-4.0.4.tgz", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", @@ -10498,9 +10020,9 @@ } }, "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "http://localhost:4873/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", "dev": true, "license": "MIT", "dependencies": { @@ -10512,7 +10034,7 @@ }, "node_modules/glob/node_modules/minimatch": { "version": "10.2.5", - "resolved": "http://localhost:4873/minimatch/-/minimatch-10.2.5.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, "license": "BlueOak-1.0.0", @@ -10528,7 +10050,7 @@ }, "node_modules/globals": { "version": "13.24.0", - "resolved": "http://localhost:4873/globals/-/globals-13.24.0.tgz", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", @@ -10544,7 +10066,7 @@ }, "node_modules/globby": { "version": "11.1.0", - "resolved": "http://localhost:4873/globby/-/globby-11.1.0.tgz", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", @@ -10565,7 +10087,7 @@ }, "node_modules/gopd": { "version": "1.2.0", - "resolved": "http://localhost:4873/gopd/-/gopd-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", "engines": { @@ -10577,22 +10099,22 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "http://localhost:4873/graceful-fs/-/graceful-fs-4.2.11.tgz", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", - "resolved": "http://localhost:4873/graphemer/-/graphemer-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, "license": "MIT" }, "node_modules/graphql": { - "version": "16.13.2", - "resolved": "http://localhost:4873/graphql/-/graphql-16.13.2.tgz", - "integrity": "sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.14.0.tgz", + "integrity": "sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==", "license": "MIT", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" @@ -10600,13 +10122,13 @@ }, "node_modules/graphql-fields-list": { "version": "2.3.0", - "resolved": "http://localhost:4873/graphql-fields-list/-/graphql-fields-list-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/graphql-fields-list/-/graphql-fields-list-2.3.0.tgz", "integrity": "sha512-psnXCYTjZH46FAvIw0MelMwQg1IFI2uEl8rYAGXxTjFPLxd1UW0W5eaQb4kuNBh7Hh4FzQQ+I/TYtjLIPtXI1A==", "license": "ISC" }, "node_modules/graphql-request": { "version": "4.3.0", - "resolved": "http://localhost:4873/graphql-request/-/graphql-request-4.3.0.tgz", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-4.3.0.tgz", "integrity": "sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow==", "license": "MIT", "dependencies": { @@ -10620,7 +10142,7 @@ }, "node_modules/graphql-request/node_modules/form-data": { "version": "3.0.4", - "resolved": "http://localhost:4873/form-data/-/form-data-3.0.4.tgz", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.4.tgz", "integrity": "sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==", "license": "MIT", "dependencies": { @@ -10636,7 +10158,7 @@ }, "node_modules/graphql-request/node_modules/mime-db": { "version": "1.52.0", - "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", "engines": { @@ -10645,7 +10167,7 @@ }, "node_modules/graphql-request/node_modules/mime-types": { "version": "2.1.35", - "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { @@ -10657,7 +10179,7 @@ }, "node_modules/graphql-tag": { "version": "2.12.6", - "resolved": "http://localhost:4873/graphql-tag/-/graphql-tag-2.12.6.tgz", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", "license": "MIT", "dependencies": { @@ -10672,7 +10194,7 @@ }, "node_modules/graphql-type-json": { "version": "0.3.2", - "resolved": "http://localhost:4873/graphql-type-json/-/graphql-type-json-0.3.2.tgz", + "resolved": "https://registry.npmjs.org/graphql-type-json/-/graphql-type-json-0.3.2.tgz", "integrity": "sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg==", "license": "MIT", "peerDependencies": { @@ -10681,7 +10203,7 @@ }, "node_modules/graphql-ws": { "version": "6.0.8", - "resolved": "http://localhost:4873/graphql-ws/-/graphql-ws-6.0.8.tgz", + "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-6.0.8.tgz", "integrity": "sha512-m3EOaNsUBXwAnkBWbzPfe0Nq8pXUfxsWnolC54sru3FzHvhTZL0Ouf/BoQsaGAXqM+YPerXOJ47BUnmgmoupCw==", "license": "MIT", "engines": { @@ -10707,7 +10229,7 @@ }, "node_modules/handlebars": { "version": "4.7.9", - "resolved": "http://localhost:4873/handlebars/-/handlebars-4.7.9.tgz", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", "dev": true, "license": "MIT", @@ -10729,7 +10251,7 @@ }, "node_modules/handlebars/node_modules/source-map": { "version": "0.6.1", - "resolved": "http://localhost:4873/source-map/-/source-map-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", @@ -10739,7 +10261,7 @@ }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "http://localhost:4873/has-flag/-/has-flag-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", @@ -10749,7 +10271,7 @@ }, "node_modules/has-property-descriptors": { "version": "1.0.2", - "resolved": "http://localhost:4873/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", "dependencies": { @@ -10761,7 +10283,7 @@ }, "node_modules/has-symbols": { "version": "1.1.0", - "resolved": "http://localhost:4873/has-symbols/-/has-symbols-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", "engines": { @@ -10773,7 +10295,7 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", - "resolved": "http://localhost:4873/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "license": "MIT", "dependencies": { @@ -10788,7 +10310,7 @@ }, "node_modules/hash-base": { "version": "3.1.2", - "resolved": "http://localhost:4873/hash-base/-/hash-base-3.1.2.tgz", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", "license": "MIT", "dependencies": { @@ -10803,13 +10325,13 @@ }, "node_modules/hash-base/node_modules/isarray": { "version": "1.0.0", - "resolved": "http://localhost:4873/isarray/-/isarray-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "license": "MIT" }, "node_modules/hash-base/node_modules/readable-stream": { "version": "2.3.8", - "resolved": "http://localhost:4873/readable-stream/-/readable-stream-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "license": "MIT", "dependencies": { @@ -10824,13 +10346,13 @@ }, "node_modules/hash-base/node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "http://localhost:4873/safe-buffer/-/safe-buffer-5.1.2.tgz", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/hash-base/node_modules/string_decoder": { "version": "1.1.1", - "resolved": "http://localhost:4873/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "license": "MIT", "dependencies": { @@ -10839,13 +10361,13 @@ }, "node_modules/hash-base/node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", - "resolved": "http://localhost:4873/safe-buffer/-/safe-buffer-5.1.2.tgz", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "license": "MIT" }, "node_modules/hasown": { "version": "2.0.3", - "resolved": "http://localhost:4873/hasown/-/hasown-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "license": "MIT", "dependencies": { @@ -10857,20 +10379,20 @@ }, "node_modules/heap": { "version": "0.2.7", - "resolved": "http://localhost:4873/heap/-/heap-0.2.7.tgz", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", "license": "MIT" }, "node_modules/html-escaper": { "version": "2.0.2", - "resolved": "http://localhost:4873/html-escaper/-/html-escaper-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.1", - "resolved": "http://localhost:4873/http-errors/-/http-errors-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { @@ -10890,7 +10412,7 @@ }, "node_modules/human-signals": { "version": "2.1.0", - "resolved": "http://localhost:4873/human-signals/-/human-signals-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "license": "Apache-2.0", @@ -10900,7 +10422,7 @@ }, "node_modules/humanize-ms": { "version": "1.2.1", - "resolved": "http://localhost:4873/humanize-ms/-/humanize-ms-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "license": "MIT", "dependencies": { @@ -10909,7 +10431,7 @@ }, "node_modules/iconv-lite": { "version": "0.7.2", - "resolved": "http://localhost:4873/iconv-lite/-/iconv-lite-0.7.2.tgz", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "license": "MIT", "dependencies": { @@ -10925,7 +10447,7 @@ }, "node_modules/ieee754": { "version": "1.2.1", - "resolved": "http://localhost:4873/ieee754/-/ieee754-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { @@ -10945,7 +10467,7 @@ }, "node_modules/ignore": { "version": "5.3.2", - "resolved": "http://localhost:4873/ignore/-/ignore-5.3.2.tgz", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", "engines": { @@ -10954,7 +10476,7 @@ }, "node_modules/import-fresh": { "version": "3.3.1", - "resolved": "http://localhost:4873/import-fresh/-/import-fresh-3.3.1.tgz", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", @@ -10971,7 +10493,7 @@ }, "node_modules/import-in-the-middle": { "version": "1.14.0", - "resolved": "http://localhost:4873/import-in-the-middle/-/import-in-the-middle-1.14.0.tgz", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.14.0.tgz", "integrity": "sha512-g5zLT0HaztRJWysayWYiUq/7E5H825QIiecMD2pI5QO7Wzr847l6GDvPvmZaDIdrDtS2w7qRczywxiK6SL5vRw==", "license": "Apache-2.0", "dependencies": { @@ -10983,7 +10505,7 @@ }, "node_modules/import-local": { "version": "3.2.0", - "resolved": "http://localhost:4873/import-local/-/import-local-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", @@ -11003,7 +10525,7 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "resolved": "http://localhost:4873/imurmurhash/-/imurmurhash-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", @@ -11013,7 +10535,7 @@ }, "node_modules/indent-string": { "version": "4.0.0", - "resolved": "http://localhost:4873/indent-string/-/indent-string-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "license": "MIT", @@ -11023,7 +10545,7 @@ }, "node_modules/inflight": { "version": "1.0.6", - "resolved": "http://localhost:4873/inflight/-/inflight-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, @@ -11035,13 +10557,13 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "http://localhost:4873/inherits/-/inherits-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, "node_modules/ioredis": { "version": "5.10.1", - "resolved": "http://localhost:4873/ioredis/-/ioredis-5.10.1.tgz", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.10.1.tgz", "integrity": "sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==", "license": "MIT", "dependencies": { @@ -11065,7 +10587,7 @@ }, "node_modules/ipaddr.js": { "version": "1.9.1", - "resolved": "http://localhost:4873/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "license": "MIT", "engines": { @@ -11074,14 +10596,14 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "resolved": "http://localhost:4873/is-arrayish/-/is-arrayish-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, "node_modules/is-callable": { "version": "1.2.7", - "resolved": "http://localhost:4873/is-callable/-/is-callable-1.2.7.tgz", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "license": "MIT", "engines": { @@ -11092,13 +10614,13 @@ } }, "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "http://localhost:4873/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", "dev": true, "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "hasown": "^2.0.3" }, "engines": { "node": ">= 0.4" @@ -11109,7 +10631,7 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "http://localhost:4873/is-extglob/-/is-extglob-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", "engines": { @@ -11118,7 +10640,7 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "http://localhost:4873/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { @@ -11127,7 +10649,7 @@ }, "node_modules/is-generator-fn": { "version": "2.1.0", - "resolved": "http://localhost:4873/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, "license": "MIT", @@ -11137,7 +10659,7 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "http://localhost:4873/is-glob/-/is-glob-4.0.3.tgz", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "license": "MIT", "dependencies": { @@ -11149,7 +10671,7 @@ }, "node_modules/is-interactive": { "version": "1.0.0", - "resolved": "http://localhost:4873/is-interactive/-/is-interactive-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "license": "MIT", @@ -11159,7 +10681,7 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "http://localhost:4873/is-number/-/is-number-7.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "license": "MIT", "engines": { @@ -11168,7 +10690,7 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", - "resolved": "http://localhost:4873/is-path-inside/-/is-path-inside-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "license": "MIT", @@ -11178,19 +10700,19 @@ }, "node_modules/is-promise": { "version": "2.2.2", - "resolved": "http://localhost:4873/is-promise/-/is-promise-2.2.2.tgz", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", "license": "MIT" }, "node_modules/is-property": { "version": "1.0.2", - "resolved": "http://localhost:4873/is-property/-/is-property-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", "license": "MIT" }, "node_modules/is-stream": { "version": "2.0.1", - "resolved": "http://localhost:4873/is-stream/-/is-stream-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "license": "MIT", "engines": { @@ -11202,7 +10724,7 @@ }, "node_modules/is-typed-array": { "version": "1.1.15", - "resolved": "http://localhost:4873/is-typed-array/-/is-typed-array-1.1.15.tgz", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "license": "MIT", "dependencies": { @@ -11217,7 +10739,7 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "http://localhost:4873/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", @@ -11230,19 +10752,19 @@ }, "node_modules/isarray": { "version": "2.0.5", - "resolved": "http://localhost:4873/isarray/-/isarray-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", - "resolved": "http://localhost:4873/isexe/-/isexe-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", - "resolved": "http://localhost:4873/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "license": "BSD-3-Clause", "engines": { @@ -11251,7 +10773,7 @@ }, "node_modules/istanbul-lib-instrument": { "version": "6.0.3", - "resolved": "http://localhost:4873/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "license": "BSD-3-Clause", @@ -11268,7 +10790,7 @@ }, "node_modules/istanbul-lib-report": { "version": "3.0.1", - "resolved": "http://localhost:4873/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", @@ -11283,7 +10805,7 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", - "resolved": "http://localhost:4873/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "license": "BSD-3-Clause", @@ -11298,7 +10820,7 @@ }, "node_modules/istanbul-lib-source-maps/node_modules/source-map": { "version": "0.6.1", - "resolved": "http://localhost:4873/source-map/-/source-map-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", @@ -11308,7 +10830,7 @@ }, "node_modules/istanbul-reports": { "version": "3.2.0", - "resolved": "http://localhost:4873/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", @@ -11322,13 +10844,13 @@ }, "node_modules/iterall": { "version": "1.3.0", - "resolved": "http://localhost:4873/iterall/-/iterall-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==", "license": "MIT" }, "node_modules/iterare": { "version": "1.2.1", - "resolved": "http://localhost:4873/iterare/-/iterare-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", "license": "ISC", "engines": { @@ -11337,7 +10859,7 @@ }, "node_modules/jackspeak": { "version": "3.4.3", - "resolved": "http://localhost:4873/jackspeak/-/jackspeak-3.4.3.tgz", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "license": "BlueOak-1.0.0", "dependencies": { @@ -11352,7 +10874,7 @@ }, "node_modules/jest": { "version": "29.5.0", - "resolved": "http://localhost:4873/jest/-/jest-29.5.0.tgz", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", "dev": true, "license": "MIT", @@ -11379,7 +10901,7 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "license": "MIT", @@ -11394,7 +10916,7 @@ }, "node_modules/jest-circus": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-circus/-/jest-circus-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "license": "MIT", @@ -11426,7 +10948,7 @@ }, "node_modules/jest-cli": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-cli/-/jest-cli-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "license": "MIT", @@ -11460,7 +10982,7 @@ }, "node_modules/jest-config": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-config/-/jest-config-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "license": "MIT", @@ -11506,7 +11028,7 @@ }, "node_modules/jest-config/node_modules/glob": { "version": "7.2.3", - "resolved": "http://localhost:4873/glob/-/glob-7.2.3.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, @@ -11528,7 +11050,7 @@ }, "node_modules/jest-diff": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-diff/-/jest-diff-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "license": "MIT", @@ -11544,7 +11066,7 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-docblock/-/jest-docblock-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "license": "MIT", "dependencies": { @@ -11556,7 +11078,7 @@ }, "node_modules/jest-each": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-each/-/jest-each-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "license": "MIT", @@ -11573,7 +11095,7 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "license": "MIT", @@ -11591,7 +11113,7 @@ }, "node_modules/jest-get-type": { "version": "29.6.3", - "resolved": "http://localhost:4873/jest-get-type/-/jest-get-type-29.6.3.tgz", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "license": "MIT", @@ -11601,7 +11123,7 @@ }, "node_modules/jest-haste-map": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "license": "MIT", @@ -11627,7 +11149,7 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "license": "MIT", @@ -11641,7 +11163,7 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "license": "MIT", @@ -11657,7 +11179,7 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-message-util/-/jest-message-util-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", @@ -11678,7 +11200,7 @@ }, "node_modules/jest-mock": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-mock/-/jest-mock-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "license": "MIT", @@ -11693,7 +11215,7 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", - "resolved": "http://localhost:4873/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "license": "MIT", @@ -11711,7 +11233,7 @@ }, "node_modules/jest-regex-util": { "version": "29.6.3", - "resolved": "http://localhost:4873/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "license": "MIT", @@ -11721,7 +11243,7 @@ }, "node_modules/jest-resolve": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-resolve/-/jest-resolve-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "license": "MIT", @@ -11742,7 +11264,7 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "license": "MIT", @@ -11756,7 +11278,7 @@ }, "node_modules/jest-runner": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-runner/-/jest-runner-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "license": "MIT", @@ -11789,7 +11311,7 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-runtime/-/jest-runtime-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "license": "MIT", @@ -11823,7 +11345,7 @@ }, "node_modules/jest-runtime/node_modules/glob": { "version": "7.2.3", - "resolved": "http://localhost:4873/glob/-/glob-7.2.3.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, @@ -11845,7 +11367,7 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "license": "MIT", @@ -11877,7 +11399,7 @@ }, "node_modules/jest-util": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-util/-/jest-util-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", @@ -11895,7 +11417,7 @@ }, "node_modules/jest-util/node_modules/picomatch": { "version": "2.3.2", - "resolved": "http://localhost:4873/picomatch/-/picomatch-2.3.2.tgz", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", @@ -11908,7 +11430,7 @@ }, "node_modules/jest-validate": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-validate/-/jest-validate-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "license": "MIT", @@ -11926,7 +11448,7 @@ }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", - "resolved": "http://localhost:4873/camelcase/-/camelcase-6.3.0.tgz", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", @@ -11939,7 +11461,7 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-watcher/-/jest-watcher-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "license": "MIT", @@ -11959,7 +11481,7 @@ }, "node_modules/jest-worker": { "version": "29.7.0", - "resolved": "http://localhost:4873/jest-worker/-/jest-worker-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "license": "MIT", @@ -11975,7 +11497,7 @@ }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "resolved": "http://localhost:4873/supports-color/-/supports-color-8.1.1.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", @@ -11991,14 +11513,14 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "http://localhost:4873/js-tokens/-/js-tokens-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.1", - "resolved": "http://localhost:4873/js-yaml/-/js-yaml-4.1.1.tgz", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { @@ -12010,7 +11532,7 @@ }, "node_modules/jsesc": { "version": "3.1.0", - "resolved": "http://localhost:4873/jsesc/-/jsesc-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", @@ -12023,7 +11545,7 @@ }, "node_modules/json-bigint": { "version": "1.0.0", - "resolved": "http://localhost:4873/json-bigint/-/json-bigint-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", "license": "MIT", "dependencies": { @@ -12032,14 +11554,14 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "resolved": "http://localhost:4873/json-buffer/-/json-buffer-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, "license": "MIT" }, "node_modules/json-diff": { "version": "0.7.4", - "resolved": "http://localhost:4873/json-diff/-/json-diff-0.7.4.tgz", + "resolved": "https://registry.npmjs.org/json-diff/-/json-diff-0.7.4.tgz", "integrity": "sha512-FJ2P+ShDbzu9epF+kCKgoSUhPIUW7Ta7A4XlIT0L5LzgaR/z1TBF1mm0XhRGj8RlA3Xm0j+c/FsWOHDtuoYejA==", "license": "MIT", "dependencies": { @@ -12056,28 +11578,28 @@ }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "resolved": "http://localhost:4873/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "http://localhost:4873/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "http://localhost:4873/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", - "resolved": "http://localhost:4873/json5/-/json5-2.2.3.tgz", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", @@ -12090,14 +11612,14 @@ }, "node_modules/jsonc-parser": { "version": "3.3.1", - "resolved": "http://localhost:4873/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", "dev": true, "license": "MIT" }, "node_modules/jsonfile": { "version": "6.2.1", - "resolved": "http://localhost:4873/jsonfile/-/jsonfile-6.2.1.tgz", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "dev": true, "license": "MIT", @@ -12110,7 +11632,7 @@ }, "node_modules/jsonwebtoken": { "version": "9.0.3", - "resolved": "http://localhost:4873/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", "license": "MIT", "dependencies": { @@ -12132,7 +11654,7 @@ }, "node_modules/jwa": { "version": "2.0.1", - "resolved": "http://localhost:4873/jwa/-/jwa-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", "license": "MIT", "dependencies": { @@ -12143,7 +11665,7 @@ }, "node_modules/jws": { "version": "4.0.1", - "resolved": "http://localhost:4873/jws/-/jws-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", "license": "MIT", "dependencies": { @@ -12153,7 +11675,7 @@ }, "node_modules/keccak": { "version": "3.0.2", - "resolved": "http://localhost:4873/keccak/-/keccak-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", "hasInstallScript": true, "license": "MIT", @@ -12168,13 +11690,13 @@ }, "node_modules/keccak/node_modules/node-addon-api": { "version": "2.0.2", - "resolved": "http://localhost:4873/node-addon-api/-/node-addon-api-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", "license": "MIT" }, "node_modules/keccak/node_modules/node-gyp-build": { "version": "4.8.4", - "resolved": "http://localhost:4873/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "license": "MIT", "bin": { @@ -12185,7 +11707,7 @@ }, "node_modules/keyv": { "version": "4.5.4", - "resolved": "http://localhost:4873/keyv/-/keyv-4.5.4.tgz", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", @@ -12195,7 +11717,7 @@ }, "node_modules/kleur": { "version": "3.0.3", - "resolved": "http://localhost:4873/kleur/-/kleur-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, "license": "MIT", @@ -12205,7 +11727,7 @@ }, "node_modules/koalas": { "version": "1.0.2", - "resolved": "http://localhost:4873/koalas/-/koalas-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/koalas/-/koalas-1.0.2.tgz", "integrity": "sha512-RYhBbYaTTTHId3l6fnMZc3eGQNW6FVCqMG6AMwA5I1Mafr6AflaXeoi6x3xQuATRotGYRLk6+1ELZH4dstFNOA==", "license": "MIT", "engines": { @@ -12214,13 +11736,13 @@ }, "node_modules/kuler": { "version": "2.0.0", - "resolved": "http://localhost:4873/kuler/-/kuler-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", "license": "MIT" }, "node_modules/leven": { "version": "3.1.0", - "resolved": "http://localhost:4873/leven/-/leven-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, "license": "MIT", @@ -12230,7 +11752,7 @@ }, "node_modules/levn": { "version": "0.4.1", - "resolved": "http://localhost:4873/levn/-/levn-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", @@ -12243,26 +11765,26 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.12.13", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.13.tgz", - "integrity": "sha512-QZXnR/OGiDcBjF4hGk0wwVrPcZvbSSyzlvkjXv5LFfktj7O2VZDrt4Xs8SgR/vOFco+qk1i8J43ikMXZoTrtPw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.13.1.tgz", + "integrity": "sha512-GEw0GLL7YUUA6nv21IsCvVjtI5Ejn84sjbdfQ9KxdbqEVOk1PZh7xejn01EEiniKw+dBeCfim+8MGeuvVuE2BA==", "license": "MIT" }, "node_modules/limiter": { "version": "1.1.5", - "resolved": "http://localhost:4873/limiter/-/limiter-1.1.5.tgz", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" }, "node_modules/lines-and-columns": { "version": "1.2.4", - "resolved": "http://localhost:4873/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, "license": "MIT" }, "node_modules/load-esm": { "version": "1.0.3", - "resolved": "http://localhost:4873/load-esm/-/load-esm-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz", "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", "funding": [ { @@ -12281,7 +11803,7 @@ }, "node_modules/loader-runner": { "version": "4.3.2", - "resolved": "http://localhost:4873/loader-runner/-/loader-runner-4.3.2.tgz", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz", "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==", "dev": true, "license": "MIT", @@ -12295,7 +11817,7 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "http://localhost:4873/locate-path/-/locate-path-6.0.0.tgz", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", @@ -12311,43 +11833,43 @@ }, "node_modules/lodash": { "version": "4.18.1", - "resolved": "http://localhost:4873/lodash/-/lodash-4.18.1.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash-es": { "version": "4.18.1", - "resolved": "http://localhost:4873/lodash-es/-/lodash-es-4.18.1.tgz", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz", "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", "license": "MIT" }, "node_modules/lodash.defaults": { "version": "4.2.0", - "resolved": "http://localhost:4873/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", "license": "MIT" }, "node_modules/lodash.includes": { "version": "4.3.0", - "resolved": "http://localhost:4873/lodash.includes/-/lodash.includes-4.3.0.tgz", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "license": "MIT" }, "node_modules/lodash.isarguments": { "version": "3.1.0", - "resolved": "http://localhost:4873/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", "license": "MIT" }, "node_modules/lodash.isboolean": { "version": "3.0.3", - "resolved": "http://localhost:4873/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", "license": "MIT" }, "node_modules/lodash.isequal": { "version": "4.5.0", - "resolved": "http://localhost:4873/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", "dev": true, @@ -12355,63 +11877,63 @@ }, "node_modules/lodash.isinteger": { "version": "4.0.4", - "resolved": "http://localhost:4873/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", "license": "MIT" }, "node_modules/lodash.isnumber": { "version": "3.0.3", - "resolved": "http://localhost:4873/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", - "resolved": "http://localhost:4873/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "license": "MIT" }, "node_modules/lodash.isstring": { "version": "4.0.1", - "resolved": "http://localhost:4873/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", - "resolved": "http://localhost:4873/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", "dev": true, "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", - "resolved": "http://localhost:4873/lodash.merge/-/lodash.merge-4.6.2.tgz", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, "license": "MIT" }, "node_modules/lodash.omit": { "version": "4.18.0", - "resolved": "http://localhost:4873/lodash.omit/-/lodash.omit-4.18.0.tgz", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.18.0.tgz", "integrity": "sha512-hZXIupXdHtocTnvIJ2aCd2vxKYtxex6gbiGuPvgBRnFQO9yu3AtmDAbVuCXcSsQx3INo/1g71OktlFFA/ES8Xg==", "license": "MIT" }, "node_modules/lodash.once": { "version": "4.1.1", - "resolved": "http://localhost:4873/lodash.once/-/lodash.once-4.1.1.tgz", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "license": "MIT" }, "node_modules/lodash.sortby": { "version": "4.7.0", - "resolved": "http://localhost:4873/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "http://localhost:4873/log-symbols/-/log-symbols-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", @@ -12428,7 +11950,7 @@ }, "node_modules/logform": { "version": "2.7.0", - "resolved": "http://localhost:4873/logform/-/logform-2.7.0.tgz", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", "license": "MIT", "dependencies": { @@ -12445,7 +11967,7 @@ }, "node_modules/logform/node_modules/@colors/colors": { "version": "1.6.0", - "resolved": "http://localhost:4873/@colors/colors/-/colors-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", "license": "MIT", "engines": { @@ -12454,7 +11976,7 @@ }, "node_modules/loglevel": { "version": "1.9.2", - "resolved": "http://localhost:4873/loglevel/-/loglevel-1.9.2.tgz", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", "license": "MIT", "engines": { @@ -12467,14 +11989,14 @@ }, "node_modules/long": { "version": "4.0.0", - "resolved": "http://localhost:4873/long/-/long-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", "license": "Apache-2.0" }, "node_modules/lru-cache": { - "version": "11.3.5", - "resolved": "http://localhost:4873/lru-cache/-/lru-cache-11.3.5.tgz", - "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz", + "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -12482,7 +12004,7 @@ }, "node_modules/lru-queue": { "version": "0.1.0", - "resolved": "http://localhost:4873/lru-queue/-/lru-queue-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", "license": "MIT", "dependencies": { @@ -12491,7 +12013,7 @@ }, "node_modules/lru.min": { "version": "1.1.4", - "resolved": "http://localhost:4873/lru.min/-/lru.min-1.1.4.tgz", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.4.tgz", "integrity": "sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==", "license": "MIT", "engines": { @@ -12506,7 +12028,7 @@ }, "node_modules/luxon": { "version": "3.7.2", - "resolved": "http://localhost:4873/luxon/-/luxon-3.7.2.tgz", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", "license": "MIT", "engines": { @@ -12515,7 +12037,7 @@ }, "node_modules/magic-string": { "version": "0.30.17", - "resolved": "http://localhost:4873/magic-string/-/magic-string-0.30.17.tgz", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, "license": "MIT", @@ -12525,7 +12047,7 @@ }, "node_modules/make-dir": { "version": "4.0.0", - "resolved": "http://localhost:4873/make-dir/-/make-dir-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", @@ -12541,14 +12063,14 @@ }, "node_modules/make-error": { "version": "1.3.6", - "resolved": "http://localhost:4873/make-error/-/make-error-1.3.6.tgz", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "devOptional": true, "license": "ISC" }, "node_modules/makeerror": { "version": "1.0.12", - "resolved": "http://localhost:4873/makeerror/-/makeerror-1.0.12.tgz", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "license": "BSD-3-Clause", @@ -12558,7 +12080,7 @@ }, "node_modules/math-intrinsics": { "version": "1.1.0", - "resolved": "http://localhost:4873/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "license": "MIT", "engines": { @@ -12567,7 +12089,7 @@ }, "node_modules/md5.js": { "version": "1.3.5", - "resolved": "http://localhost:4873/md5.js/-/md5.js-1.3.5.tgz", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "license": "MIT", "dependencies": { @@ -12578,7 +12100,7 @@ }, "node_modules/media-typer": { "version": "1.1.0", - "resolved": "http://localhost:4873/media-typer/-/media-typer-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", "license": "MIT", "engines": { @@ -12587,7 +12109,7 @@ }, "node_modules/memfs": { "version": "3.5.3", - "resolved": "http://localhost:4873/memfs/-/memfs-3.5.3.tgz", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, "license": "Unlicense", @@ -12600,7 +12122,7 @@ }, "node_modules/memoizee": { "version": "0.4.17", - "resolved": "http://localhost:4873/memoizee/-/memoizee-0.4.17.tgz", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", "license": "ISC", "dependencies": { @@ -12619,13 +12141,13 @@ }, "node_modules/memory-pager": { "version": "1.5.0", - "resolved": "http://localhost:4873/memory-pager/-/memory-pager-1.5.0.tgz", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", "license": "MIT" }, "node_modules/merge-descriptors": { "version": "2.0.0", - "resolved": "http://localhost:4873/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", "license": "MIT", "engines": { @@ -12637,14 +12159,14 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "http://localhost:4873/merge-stream/-/merge-stream-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "http://localhost:4873/merge2/-/merge2-1.4.1.tgz", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "license": "MIT", "engines": { @@ -12653,7 +12175,7 @@ }, "node_modules/methods": { "version": "1.1.2", - "resolved": "http://localhost:4873/methods/-/methods-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, "license": "MIT", @@ -12663,7 +12185,7 @@ }, "node_modules/micromatch": { "version": "4.0.8", - "resolved": "http://localhost:4873/micromatch/-/micromatch-4.0.8.tgz", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "license": "MIT", "dependencies": { @@ -12676,7 +12198,7 @@ }, "node_modules/micromatch/node_modules/picomatch": { "version": "2.3.2", - "resolved": "http://localhost:4873/picomatch/-/picomatch-2.3.2.tgz", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { @@ -12688,7 +12210,7 @@ }, "node_modules/mime": { "version": "2.6.0", - "resolved": "http://localhost:4873/mime/-/mime-2.6.0.tgz", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, "license": "MIT", @@ -12701,7 +12223,7 @@ }, "node_modules/mime-db": { "version": "1.54.0", - "resolved": "http://localhost:4873/mime-db/-/mime-db-1.54.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { @@ -12710,7 +12232,7 @@ }, "node_modules/mime-types": { "version": "3.0.2", - "resolved": "http://localhost:4873/mime-types/-/mime-types-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "license": "MIT", "dependencies": { @@ -12726,7 +12248,7 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "http://localhost:4873/mimic-fn/-/mimic-fn-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", @@ -12736,7 +12258,7 @@ }, "node_modules/min-indent": { "version": "1.0.1", - "resolved": "http://localhost:4873/min-indent/-/min-indent-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, "license": "MIT", @@ -12746,7 +12268,7 @@ }, "node_modules/minimatch": { "version": "3.1.5", - "resolved": "http://localhost:4873/minimatch/-/minimatch-3.1.5.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", @@ -12759,7 +12281,7 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "http://localhost:4873/minimist/-/minimist-1.2.8.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", @@ -12769,7 +12291,7 @@ }, "node_modules/minipass": { "version": "7.1.3", - "resolved": "http://localhost:4873/minipass/-/minipass-7.1.3.tgz", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "license": "BlueOak-1.0.0", "engines": { @@ -12778,13 +12300,13 @@ }, "node_modules/module-details-from-path": { "version": "1.0.4", - "resolved": "http://localhost:4873/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", "license": "MIT" }, "node_modules/moment": { "version": "2.30.1", - "resolved": "http://localhost:4873/moment/-/moment-2.30.1.tgz", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "license": "MIT", "engines": { @@ -12793,7 +12315,7 @@ }, "node_modules/mongodb": { "version": "6.21.0", - "resolved": "http://localhost:4873/mongodb/-/mongodb-6.21.0.tgz", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.21.0.tgz", "integrity": "sha512-URyb/VXMjJ4da46OeSXg+puO39XH9DeQpWCslifrRn9JWugy0D+DvvBvkm2WxmHe61O/H19JM66p1z7RHVkZ6A==", "license": "Apache-2.0", "dependencies": { @@ -12839,7 +12361,7 @@ }, "node_modules/mongodb-connection-string-url": { "version": "3.0.2", - "resolved": "http://localhost:4873/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.2.tgz", "integrity": "sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==", "license": "Apache-2.0", "dependencies": { @@ -12849,13 +12371,13 @@ }, "node_modules/ms": { "version": "2.1.3", - "resolved": "http://localhost:4873/ms/-/ms-2.1.3.tgz", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/multer": { "version": "2.1.1", - "resolved": "http://localhost:4873/multer/-/multer-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", "license": "MIT", "dependencies": { @@ -12874,7 +12396,7 @@ }, "node_modules/multer/node_modules/media-typer": { "version": "0.3.0", - "resolved": "http://localhost:4873/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "license": "MIT", "engines": { @@ -12883,7 +12405,7 @@ }, "node_modules/multer/node_modules/mime-db": { "version": "1.52.0", - "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", "engines": { @@ -12892,7 +12414,7 @@ }, "node_modules/multer/node_modules/mime-types": { "version": "2.1.35", - "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { @@ -12904,7 +12426,7 @@ }, "node_modules/multer/node_modules/type-is": { "version": "1.6.18", - "resolved": "http://localhost:4873/type-is/-/type-is-1.6.18.tgz", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "license": "MIT", "dependencies": { @@ -12917,7 +12439,7 @@ }, "node_modules/mute-stream": { "version": "2.0.0", - "resolved": "http://localhost:4873/mute-stream/-/mute-stream-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, "license": "ISC", @@ -12927,7 +12449,7 @@ }, "node_modules/mutexify": { "version": "1.4.0", - "resolved": "http://localhost:4873/mutexify/-/mutexify-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.4.0.tgz", "integrity": "sha512-pbYSsOrSB/AKN5h/WzzLRMFgZhClWccf2XIB4RSMC8JbquiB0e0/SH5AIfdQMdyHmYtv4seU7yV/TvAwPLJ1Yg==", "license": "MIT", "dependencies": { @@ -12936,7 +12458,7 @@ }, "node_modules/mysql2": { "version": "3.22.3", - "resolved": "http://localhost:4873/mysql2/-/mysql2-3.22.3.tgz", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.22.3.tgz", "integrity": "sha512-uWWxvZSRvRhtBdh2CdcuK83YcOfPdmEeEYB069bAmPnV93QApDGVPuvCQOLjlh7tYHEWdgQPrn6kosDxHBVLkA==", "license": "MIT", "dependencies": { @@ -12958,13 +12480,13 @@ }, "node_modules/mysql2/node_modules/long": { "version": "5.3.2", - "resolved": "http://localhost:4873/long/-/long-5.3.2.tgz", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "license": "Apache-2.0" }, "node_modules/named-placeholders": { "version": "1.1.6", - "resolved": "http://localhost:4873/named-placeholders/-/named-placeholders-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.6.tgz", "integrity": "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==", "license": "MIT", "dependencies": { @@ -12976,33 +12498,33 @@ }, "node_modules/nanoassert": { "version": "1.1.0", - "resolved": "http://localhost:4873/nanoassert/-/nanoassert-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", "integrity": "sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ==", "license": "ISC" }, "node_modules/nanoclone": { "version": "0.2.1", - "resolved": "http://localhost:4873/nanoclone/-/nanoclone-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==", "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", - "resolved": "http://localhost:4873/natural-compare/-/natural-compare-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, "license": "MIT" }, "node_modules/natural-compare-lite": { "version": "1.4.0", - "resolved": "http://localhost:4873/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true, "license": "MIT" }, "node_modules/negotiator": { "version": "1.0.0", - "resolved": "http://localhost:4873/negotiator/-/negotiator-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "license": "MIT", "engines": { @@ -13011,14 +12533,14 @@ }, "node_modules/neo-async": { "version": "2.6.2", - "resolved": "http://localhost:4873/neo-async/-/neo-async-2.6.2.tgz", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, "license": "MIT" }, "node_modules/nest-winston": { "version": "1.10.2", - "resolved": "http://localhost:4873/nest-winston/-/nest-winston-1.10.2.tgz", + "resolved": "https://registry.npmjs.org/nest-winston/-/nest-winston-1.10.2.tgz", "integrity": "sha512-Z9IzL/nekBOF/TEwBHUJDiDPMaXUcFquUQOFavIRet6xF0EbuWnOzslyN/ksgzG+fITNgXhMdrL/POp9SdaFxA==", "license": "MIT", "dependencies": { @@ -13031,26 +12553,26 @@ }, "node_modules/next-tick": { "version": "1.1.0", - "resolved": "http://localhost:4873/next-tick/-/next-tick-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "license": "ISC" }, "node_modules/node-abort-controller": { "version": "3.1.1", - "resolved": "http://localhost:4873/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "dev": true, "license": "MIT" }, "node_modules/node-addon-api": { "version": "6.1.0", - "resolved": "http://localhost:4873/node-addon-api/-/node-addon-api-6.1.0.tgz", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", "license": "MIT" }, "node_modules/node-emoji": { "version": "1.11.0", - "resolved": "http://localhost:4873/node-emoji/-/node-emoji-1.11.0.tgz", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, "license": "MIT", @@ -13060,7 +12582,7 @@ }, "node_modules/node-fetch": { "version": "2.7.0", - "resolved": "http://localhost:4873/node-fetch/-/node-fetch-2.7.0.tgz", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", "dependencies": { @@ -13080,19 +12602,19 @@ }, "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", - "resolved": "http://localhost:4873/tr46/-/tr46-0.0.3.tgz", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", - "resolved": "http://localhost:4873/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "license": "BSD-2-Clause" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", - "resolved": "http://localhost:4873/whatwg-url/-/whatwg-url-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "license": "MIT", "dependencies": { @@ -13102,7 +12624,7 @@ }, "node_modules/node-gyp-build": { "version": "3.9.0", - "resolved": "http://localhost:4873/node-gyp-build/-/node-gyp-build-3.9.0.tgz", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.9.0.tgz", "integrity": "sha512-zLcTg6P4AbcHPq465ZMFNXx7XpKKJh+7kkN699NiQWisR2uWYOWNWqRHAmbnmKiL4e9aLSlmy5U7rEMUXV59+A==", "license": "MIT", "bin": { @@ -13113,14 +12635,14 @@ }, "node_modules/node-int64": { "version": "0.4.0", - "resolved": "http://localhost:4873/node-int64/-/node-int64-0.4.0.tgz", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true, "license": "MIT" }, "node_modules/node-object-hash": { "version": "2.3.10", - "resolved": "http://localhost:4873/node-object-hash/-/node-object-hash-2.3.10.tgz", + "resolved": "https://registry.npmjs.org/node-object-hash/-/node-object-hash-2.3.10.tgz", "integrity": "sha512-jY5dPJzw6NHd/KPSfPKJ+IHoFS81/tJ43r34ZeNMXGzCOM8jwQDCD12HYayKIB6MuznrnqIYy2e891NA2g0ibA==", "license": "MIT", "engines": { @@ -13128,15 +12650,15 @@ } }, "node_modules/node-releases": { - "version": "2.0.38", - "resolved": "http://localhost:4873/node-releases/-/node-releases-2.0.38.tgz", - "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", + "version": "2.0.44", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", + "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", "dev": true, "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "http://localhost:4873/normalize-path/-/normalize-path-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "license": "MIT", "engines": { @@ -13145,7 +12667,7 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", - "resolved": "http://localhost:4873/npm-run-path/-/npm-run-path-4.0.1.tgz", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", @@ -13158,7 +12680,7 @@ }, "node_modules/object-assign": { "version": "4.1.1", - "resolved": "http://localhost:4873/object-assign/-/object-assign-4.1.1.tgz", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "license": "MIT", "engines": { @@ -13167,7 +12689,7 @@ }, "node_modules/object-hash": { "version": "3.0.0", - "resolved": "http://localhost:4873/object-hash/-/object-hash-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "license": "MIT", "engines": { @@ -13176,7 +12698,7 @@ }, "node_modules/object-inspect": { "version": "1.13.4", - "resolved": "http://localhost:4873/object-inspect/-/object-inspect-1.13.4.tgz", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "license": "MIT", "engines": { @@ -13188,7 +12710,7 @@ }, "node_modules/on-finished": { "version": "2.4.1", - "resolved": "http://localhost:4873/on-finished/-/on-finished-2.4.1.tgz", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "license": "MIT", "dependencies": { @@ -13200,7 +12722,7 @@ }, "node_modules/on-headers": { "version": "1.1.0", - "resolved": "http://localhost:4873/on-headers/-/on-headers-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "license": "MIT", "engines": { @@ -13209,7 +12731,7 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "http://localhost:4873/once/-/once-1.4.0.tgz", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "license": "ISC", "dependencies": { @@ -13218,7 +12740,7 @@ }, "node_modules/one-time": { "version": "1.0.0", - "resolved": "http://localhost:4873/one-time/-/one-time-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", "license": "MIT", "dependencies": { @@ -13227,7 +12749,7 @@ }, "node_modules/onetime": { "version": "5.1.2", - "resolved": "http://localhost:4873/onetime/-/onetime-5.1.2.tgz", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", @@ -13243,7 +12765,7 @@ }, "node_modules/opentracing": { "version": "0.14.7", - "resolved": "http://localhost:4873/opentracing/-/opentracing-0.14.7.tgz", + "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz", "integrity": "sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==", "license": "Apache-2.0", "engines": { @@ -13252,7 +12774,7 @@ }, "node_modules/optionator": { "version": "0.9.4", - "resolved": "http://localhost:4873/optionator/-/optionator-0.9.4.tgz", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", @@ -13270,7 +12792,7 @@ }, "node_modules/ora": { "version": "5.4.1", - "resolved": "http://localhost:4873/ora/-/ora-5.4.1.tgz", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "license": "MIT", @@ -13294,7 +12816,7 @@ }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "http://localhost:4873/p-limit/-/p-limit-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "license": "MIT", "dependencies": { @@ -13309,7 +12831,7 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "http://localhost:4873/p-locate/-/p-locate-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", @@ -13325,7 +12847,7 @@ }, "node_modules/p-try": { "version": "2.2.0", - "resolved": "http://localhost:4873/p-try/-/p-try-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "license": "MIT", @@ -13335,13 +12857,13 @@ }, "node_modules/package-json-from-dist": { "version": "1.0.1", - "resolved": "http://localhost:4873/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "license": "BlueOak-1.0.0" }, "node_modules/parent-module": { "version": "1.0.1", - "resolved": "http://localhost:4873/parent-module/-/parent-module-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", @@ -13354,7 +12876,7 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "resolved": "http://localhost:4873/parse-json/-/parse-json-5.2.0.tgz", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", @@ -13373,7 +12895,7 @@ }, "node_modules/parseurl": { "version": "1.3.3", - "resolved": "http://localhost:4873/parseurl/-/parseurl-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "license": "MIT", "engines": { @@ -13382,7 +12904,7 @@ }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "http://localhost:4873/path-exists/-/path-exists-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", @@ -13392,7 +12914,7 @@ }, "node_modules/path-expression-matcher": { "version": "1.5.0", - "resolved": "http://localhost:4873/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", "funding": [ { @@ -13407,7 +12929,7 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", - "resolved": "http://localhost:4873/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", @@ -13417,7 +12939,7 @@ }, "node_modules/path-key": { "version": "3.1.1", - "resolved": "http://localhost:4873/path-key/-/path-key-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", "engines": { @@ -13426,14 +12948,14 @@ }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "http://localhost:4873/path-parse/-/path-parse-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, "license": "MIT" }, "node_modules/path-scurry": { "version": "2.0.2", - "resolved": "http://localhost:4873/path-scurry/-/path-scurry-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, "license": "BlueOak-1.0.0", @@ -13450,7 +12972,7 @@ }, "node_modules/path-to-regexp": { "version": "8.4.2", - "resolved": "http://localhost:4873/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", "license": "MIT", "funding": { @@ -13460,7 +12982,7 @@ }, "node_modules/path-type": { "version": "4.0.0", - "resolved": "http://localhost:4873/path-type/-/path-type-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", @@ -13470,7 +12992,7 @@ }, "node_modules/pbkdf2": { "version": "3.1.5", - "resolved": "http://localhost:4873/pbkdf2/-/pbkdf2-3.1.5.tgz", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz", "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", "license": "MIT", "dependencies": { @@ -13487,7 +13009,7 @@ }, "node_modules/pg": { "version": "8.20.0", - "resolved": "http://localhost:4873/pg/-/pg-8.20.0.tgz", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", "license": "MIT", "dependencies": { @@ -13514,20 +13036,20 @@ }, "node_modules/pg-cloudflare": { "version": "1.3.0", - "resolved": "http://localhost:4873/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", "license": "MIT", "optional": true }, "node_modules/pg-connection-string": { "version": "2.12.0", - "resolved": "http://localhost:4873/pg-connection-string/-/pg-connection-string-2.12.0.tgz", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", "license": "MIT" }, "node_modules/pg-int8": { "version": "1.0.1", - "resolved": "http://localhost:4873/pg-int8/-/pg-int8-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", "license": "ISC", "engines": { @@ -13536,7 +13058,7 @@ }, "node_modules/pg-pool": { "version": "3.13.0", - "resolved": "http://localhost:4873/pg-pool/-/pg-pool-3.13.0.tgz", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", "license": "MIT", "peerDependencies": { @@ -13545,13 +13067,13 @@ }, "node_modules/pg-protocol": { "version": "1.13.0", - "resolved": "http://localhost:4873/pg-protocol/-/pg-protocol-1.13.0.tgz", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", "license": "MIT" }, "node_modules/pg-types": { "version": "2.2.0", - "resolved": "http://localhost:4873/pg-types/-/pg-types-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", "license": "MIT", "dependencies": { @@ -13567,7 +13089,7 @@ }, "node_modules/pgpass": { "version": "1.0.5", - "resolved": "http://localhost:4873/pgpass/-/pgpass-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", "license": "MIT", "dependencies": { @@ -13576,14 +13098,14 @@ }, "node_modules/picocolors": { "version": "1.1.1", - "resolved": "http://localhost:4873/picocolors/-/picocolors-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.4", - "resolved": "http://localhost:4873/picomatch/-/picomatch-4.0.4.tgz", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", @@ -13596,7 +13118,7 @@ }, "node_modules/pirates": { "version": "4.0.7", - "resolved": "http://localhost:4873/pirates/-/pirates-4.0.7.tgz", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, "license": "MIT", @@ -13606,7 +13128,7 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "http://localhost:4873/pkg-dir/-/pkg-dir-4.2.0.tgz", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "license": "MIT", @@ -13619,7 +13141,7 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", - "resolved": "http://localhost:4873/find-up/-/find-up-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", @@ -13633,7 +13155,7 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", - "resolved": "http://localhost:4873/locate-path/-/locate-path-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", @@ -13646,7 +13168,7 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", - "resolved": "http://localhost:4873/p-limit/-/p-limit-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", @@ -13662,7 +13184,7 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", - "resolved": "http://localhost:4873/p-locate/-/p-locate-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", @@ -13675,7 +13197,7 @@ }, "node_modules/pluralize": { "version": "8.0.0", - "resolved": "http://localhost:4873/pluralize/-/pluralize-8.0.0.tgz", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, "license": "MIT", @@ -13685,7 +13207,7 @@ }, "node_modules/possible-typed-array-names": { "version": "1.1.0", - "resolved": "http://localhost:4873/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "license": "MIT", "engines": { @@ -13694,7 +13216,7 @@ }, "node_modules/postgres-array": { "version": "2.0.0", - "resolved": "http://localhost:4873/postgres-array/-/postgres-array-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", "license": "MIT", "engines": { @@ -13703,7 +13225,7 @@ }, "node_modules/postgres-bytea": { "version": "1.0.1", - "resolved": "http://localhost:4873/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", "license": "MIT", "engines": { @@ -13712,7 +13234,7 @@ }, "node_modules/postgres-date": { "version": "1.0.7", - "resolved": "http://localhost:4873/postgres-date/-/postgres-date-1.0.7.tgz", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", "license": "MIT", "engines": { @@ -13721,7 +13243,7 @@ }, "node_modules/postgres-interval": { "version": "1.2.0", - "resolved": "http://localhost:4873/postgres-interval/-/postgres-interval-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", "license": "MIT", "dependencies": { @@ -13733,13 +13255,13 @@ }, "node_modules/pprof-format": { "version": "2.2.1", - "resolved": "http://localhost:4873/pprof-format/-/pprof-format-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/pprof-format/-/pprof-format-2.2.1.tgz", "integrity": "sha512-p4tVN7iK19ccDqQv8heyobzUmbHyds4N2FI6aBMcXz6y99MglTWDxIyhFkNaLeEXs6IFUEzT0zya0icbSLLY0g==", "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", - "resolved": "http://localhost:4873/prelude-ls/-/prelude-ls-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", @@ -13749,7 +13271,7 @@ }, "node_modules/prettier": { "version": "3.8.3", - "resolved": "http://localhost:4873/prettier/-/prettier-3.8.3.tgz", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, "license": "MIT", @@ -13765,7 +13287,7 @@ }, "node_modules/prettier-linter-helpers": { "version": "1.0.1", - "resolved": "http://localhost:4873/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", "dev": true, "license": "MIT", @@ -13778,7 +13300,7 @@ }, "node_modules/pretty-format": { "version": "29.7.0", - "resolved": "http://localhost:4873/pretty-format/-/pretty-format-29.7.0.tgz", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", @@ -13793,7 +13315,7 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "http://localhost:4873/ansi-styles/-/ansi-styles-5.2.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", @@ -13806,13 +13328,13 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", - "resolved": "http://localhost:4873/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "license": "MIT" }, "node_modules/prom-client": { "version": "14.2.0", - "resolved": "http://localhost:4873/prom-client/-/prom-client-14.2.0.tgz", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.2.0.tgz", "integrity": "sha512-sF308EhTenb/pDRPakm+WgiN+VdM/T1RaHj1x+MvAuT8UiQP8JmOEbxVqtkbfR4LrvOg5n7ic01kRBDGXjYikA==", "license": "Apache-2.0", "dependencies": { @@ -13824,13 +13346,13 @@ }, "node_modules/promise-breaker": { "version": "6.0.0", - "resolved": "http://localhost:4873/promise-breaker/-/promise-breaker-6.0.0.tgz", + "resolved": "https://registry.npmjs.org/promise-breaker/-/promise-breaker-6.0.0.tgz", "integrity": "sha512-BthzO9yTPswGf7etOBiHCVuugs2N01/Q/94dIPls48z2zCmrnDptUUZzfIb+41xq0MnYZ/BzmOd6ikDR4ibNZA==", "license": "MIT" }, "node_modules/prompts": { "version": "2.4.2", - "resolved": "http://localhost:4873/prompts/-/prompts-2.4.2.tgz", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, "license": "MIT", @@ -13844,14 +13366,14 @@ }, "node_modules/property-expr": { "version": "2.0.6", - "resolved": "http://localhost:4873/property-expr/-/property-expr-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", "license": "MIT" }, "node_modules/protobufjs": { - "version": "7.5.6", - "resolved": "http://localhost:4873/protobufjs/-/protobufjs-7.5.6.tgz", - "integrity": "sha512-M71sTMB146U3u0di3yup8iM+zv8yPRNQVr1KK4tyBitl3qFvEGucq/rGDRShD2rsJhtN02RJaJ7j5X5hmy8SJg==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.7.tgz", + "integrity": "sha512-NGnrxS/nLKUo5nkbVQxlC71sB4hdfImdYIbFeSCidxtwATx0AHRPcANSLd0q5Bb2BkoSWo2iisQhGg5/r+ihbA==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { @@ -13874,13 +13396,13 @@ }, "node_modules/protobufjs/node_modules/long": { "version": "5.3.2", - "resolved": "http://localhost:4873/long/-/long-5.3.2.tgz", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", "license": "Apache-2.0" }, "node_modules/proxy-addr": { "version": "2.0.7", - "resolved": "http://localhost:4873/proxy-addr/-/proxy-addr-2.0.7.tgz", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "license": "MIT", "dependencies": { @@ -13893,7 +13415,7 @@ }, "node_modules/proxy-from-env": { "version": "2.1.0", - "resolved": "http://localhost:4873/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", "license": "MIT", "engines": { @@ -13902,7 +13424,7 @@ }, "node_modules/punycode": { "version": "2.3.1", - "resolved": "http://localhost:4873/punycode/-/punycode-2.3.1.tgz", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "license": "MIT", "engines": { @@ -13911,7 +13433,7 @@ }, "node_modules/pure-rand": { "version": "6.1.0", - "resolved": "http://localhost:4873/pure-rand/-/pure-rand-6.1.0.tgz", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ @@ -13928,7 +13450,7 @@ }, "node_modules/qs": { "version": "6.15.1", - "resolved": "http://localhost:4873/qs/-/qs-6.15.1.tgz", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", "license": "BSD-3-Clause", "dependencies": { @@ -13943,13 +13465,13 @@ }, "node_modules/querystringify": { "version": "2.2.0", - "resolved": "http://localhost:4873/querystringify/-/querystringify-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "http://localhost:4873/queue-microtask/-/queue-microtask-1.2.3.tgz", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { @@ -13969,13 +13491,13 @@ }, "node_modules/queue-tick": { "version": "1.0.1", - "resolved": "http://localhost:4873/queue-tick/-/queue-tick-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", "license": "MIT" }, "node_modules/randombytes": { "version": "2.1.0", - "resolved": "http://localhost:4873/randombytes/-/randombytes-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "license": "MIT", "dependencies": { @@ -13984,7 +13506,7 @@ }, "node_modules/range-parser": { "version": "1.2.1", - "resolved": "http://localhost:4873/range-parser/-/range-parser-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "license": "MIT", "engines": { @@ -13993,7 +13515,7 @@ }, "node_modules/raw-body": { "version": "3.0.2", - "resolved": "http://localhost:4873/raw-body/-/raw-body-3.0.2.tgz", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", "license": "MIT", "dependencies": { @@ -14008,14 +13530,14 @@ }, "node_modules/react-is": { "version": "18.3.1", - "resolved": "http://localhost:4873/react-is/-/react-is-18.3.1.tgz", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, "node_modules/readable-stream": { "version": "3.6.2", - "resolved": "http://localhost:4873/readable-stream/-/readable-stream-3.6.2.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", "dependencies": { @@ -14029,7 +13551,7 @@ }, "node_modules/readdirp": { "version": "4.1.2", - "resolved": "http://localhost:4873/readdirp/-/readdirp-4.1.2.tgz", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", "engines": { @@ -14042,7 +13564,7 @@ }, "node_modules/redent": { "version": "3.0.0", - "resolved": "http://localhost:4873/redent/-/redent-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, "license": "MIT", @@ -14056,7 +13578,7 @@ }, "node_modules/redis": { "version": "3.1.2", - "resolved": "http://localhost:4873/redis/-/redis-3.1.2.tgz", + "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.2.tgz", "integrity": "sha512-grn5KoZLr/qrRQVwoSkmzdbw6pwF+/rwODtrOr6vuBRiR/f3rjSTGupbF90Zpqm2oenix8Do6RV7pYEkGwlKkw==", "license": "MIT", "dependencies": { @@ -14075,13 +13597,13 @@ }, "node_modules/redis-commands": { "version": "1.7.0", - "resolved": "http://localhost:4873/redis-commands/-/redis-commands-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz", "integrity": "sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==", "license": "MIT" }, "node_modules/redis-errors": { "version": "1.2.0", - "resolved": "http://localhost:4873/redis-errors/-/redis-errors-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", "license": "MIT", "engines": { @@ -14090,7 +13612,7 @@ }, "node_modules/redis-parser": { "version": "3.0.0", - "resolved": "http://localhost:4873/redis-parser/-/redis-parser-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", "license": "MIT", "dependencies": { @@ -14102,7 +13624,7 @@ }, "node_modules/redis/node_modules/denque": { "version": "1.5.1", - "resolved": "http://localhost:4873/denque/-/denque-1.5.1.tgz", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", "license": "Apache-2.0", "engines": { @@ -14111,19 +13633,19 @@ }, "node_modules/reflect-metadata": { "version": "0.2.2", - "resolved": "http://localhost:4873/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", "license": "Apache-2.0" }, "node_modules/request-ip": { "version": "3.3.0", - "resolved": "http://localhost:4873/request-ip/-/request-ip-3.3.0.tgz", + "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-3.3.0.tgz", "integrity": "sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==", "license": "MIT" }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "http://localhost:4873/require-directory/-/require-directory-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "license": "MIT", "engines": { @@ -14132,7 +13654,7 @@ }, "node_modules/require-from-string": { "version": "2.0.2", - "resolved": "http://localhost:4873/require-from-string/-/require-from-string-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "license": "MIT", @@ -14142,13 +13664,13 @@ }, "node_modules/requires-port": { "version": "1.0.0", - "resolved": "http://localhost:4873/requires-port/-/requires-port-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "license": "MIT" }, "node_modules/resolve": { "version": "1.22.12", - "resolved": "http://localhost:4873/resolve/-/resolve-1.22.12.tgz", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "dev": true, "license": "MIT", @@ -14170,7 +13692,7 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", - "resolved": "http://localhost:4873/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "license": "MIT", @@ -14183,7 +13705,7 @@ }, "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", - "resolved": "http://localhost:4873/resolve-from/-/resolve-from-5.0.0.tgz", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", @@ -14193,7 +13715,7 @@ }, "node_modules/resolve-from": { "version": "4.0.0", - "resolved": "http://localhost:4873/resolve-from/-/resolve-from-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", @@ -14203,7 +13725,7 @@ }, "node_modules/resolve.exports": { "version": "2.0.3", - "resolved": "http://localhost:4873/resolve.exports/-/resolve.exports-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, "license": "MIT", @@ -14213,7 +13735,7 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", - "resolved": "http://localhost:4873/restore-cursor/-/restore-cursor-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "license": "MIT", @@ -14227,14 +13749,14 @@ }, "node_modules/restore-cursor/node_modules/signal-exit": { "version": "3.0.7", - "resolved": "http://localhost:4873/signal-exit/-/signal-exit-3.0.7.tgz", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/retry": { "version": "0.13.1", - "resolved": "http://localhost:4873/retry/-/retry-0.13.1.tgz", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "license": "MIT", "engines": { @@ -14243,7 +13765,7 @@ }, "node_modules/reusify": { "version": "1.1.0", - "resolved": "http://localhost:4873/reusify/-/reusify-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "license": "MIT", "engines": { @@ -14253,13 +13775,13 @@ }, "node_modules/rfdc": { "version": "1.4.1", - "resolved": "http://localhost:4873/rfdc/-/rfdc-1.4.1.tgz", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "license": "MIT" }, "node_modules/rimraf": { "version": "5.0.10", - "resolved": "http://localhost:4873/rimraf/-/rimraf-5.0.10.tgz", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", "license": "ISC", "dependencies": { @@ -14274,7 +13796,7 @@ }, "node_modules/rimraf/node_modules/brace-expansion": { "version": "2.1.0", - "resolved": "http://localhost:4873/brace-expansion/-/brace-expansion-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "license": "MIT", "dependencies": { @@ -14283,7 +13805,7 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "10.5.0", - "resolved": "http://localhost:4873/glob/-/glob-10.5.0.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", @@ -14304,13 +13826,13 @@ }, "node_modules/rimraf/node_modules/lru-cache": { "version": "10.4.3", - "resolved": "http://localhost:4873/lru-cache/-/lru-cache-10.4.3.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, "node_modules/rimraf/node_modules/minimatch": { "version": "9.0.9", - "resolved": "http://localhost:4873/minimatch/-/minimatch-9.0.9.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "dependencies": { @@ -14325,7 +13847,7 @@ }, "node_modules/rimraf/node_modules/path-scurry": { "version": "1.11.1", - "resolved": "http://localhost:4873/path-scurry/-/path-scurry-1.11.1.tgz", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "license": "BlueOak-1.0.0", "dependencies": { @@ -14341,7 +13863,7 @@ }, "node_modules/ripemd160": { "version": "2.0.3", - "resolved": "http://localhost:4873/ripemd160/-/ripemd160-2.0.3.tgz", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", "license": "MIT", "dependencies": { @@ -14354,7 +13876,7 @@ }, "node_modules/router": { "version": "2.2.0", - "resolved": "http://localhost:4873/router/-/router-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", "license": "MIT", "dependencies": { @@ -14370,13 +13892,13 @@ }, "node_modules/router/node_modules/is-promise": { "version": "4.0.0", - "resolved": "http://localhost:4873/is-promise/-/is-promise-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", "license": "MIT" }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "http://localhost:4873/run-parallel/-/run-parallel-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { @@ -14399,7 +13921,7 @@ }, "node_modules/run-script-os": { "version": "1.1.6", - "resolved": "http://localhost:4873/run-script-os/-/run-script-os-1.1.6.tgz", + "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.6.tgz", "integrity": "sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==", "dev": true, "license": "MIT", @@ -14410,7 +13932,7 @@ }, "node_modules/rxjs": { "version": "7.8.2", - "resolved": "http://localhost:4873/rxjs/-/rxjs-7.8.2.tgz", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "license": "Apache-2.0", "dependencies": { @@ -14419,7 +13941,7 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "http://localhost:4873/safe-buffer/-/safe-buffer-5.2.1.tgz", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { @@ -14439,7 +13961,7 @@ }, "node_modules/safe-stable-stringify": { "version": "2.5.0", - "resolved": "http://localhost:4873/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", "license": "MIT", "engines": { @@ -14448,13 +13970,13 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "resolved": "http://localhost:4873/safer-buffer/-/safer-buffer-2.1.2.tgz", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, "node_modules/schema-utils": { "version": "3.3.0", - "resolved": "http://localhost:4873/schema-utils/-/schema-utils-3.3.0.tgz", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "license": "MIT", @@ -14473,7 +13995,7 @@ }, "node_modules/schema-utils/node_modules/ajv": { "version": "6.15.0", - "resolved": "http://localhost:4873/ajv/-/ajv-6.15.0.tgz", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, "license": "MIT", @@ -14490,7 +14012,7 @@ }, "node_modules/schema-utils/node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "http://localhost:4873/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "license": "MIT", @@ -14500,27 +14022,27 @@ }, "node_modules/schema-utils/node_modules/json-schema-traverse": { "version": "0.4.1", - "resolved": "http://localhost:4873/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, "node_modules/scryptsy": { "version": "2.1.0", - "resolved": "http://localhost:4873/scryptsy/-/scryptsy-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==", "license": "MIT" }, "node_modules/semifies": { "version": "1.0.0", - "resolved": "http://localhost:4873/semifies/-/semifies-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/semifies/-/semifies-1.0.0.tgz", "integrity": "sha512-xXR3KGeoxTNWPD4aBvL5NUpMTT7WMANr3EWnaS190QVkY52lqqcVRD7Q05UVbBhiWDGWMlJEUam9m7uFFGVScw==", "license": "Apache-2.0" }, "node_modules/semver": { - "version": "7.7.4", - "resolved": "http://localhost:4873/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -14531,7 +14053,7 @@ }, "node_modules/send": { "version": "1.2.1", - "resolved": "http://localhost:4873/send/-/send-1.2.1.tgz", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", "license": "MIT", "dependencies": { @@ -14557,7 +14079,7 @@ }, "node_modules/serve-static": { "version": "2.2.1", - "resolved": "http://localhost:4873/serve-static/-/serve-static-2.2.1.tgz", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", "license": "MIT", "dependencies": { @@ -14576,7 +14098,7 @@ }, "node_modules/set-function-length": { "version": "1.2.2", - "resolved": "http://localhost:4873/set-function-length/-/set-function-length-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "license": "MIT", "dependencies": { @@ -14593,13 +14115,13 @@ }, "node_modules/setprototypeof": { "version": "1.2.0", - "resolved": "http://localhost:4873/setprototypeof/-/setprototypeof-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "license": "ISC" }, "node_modules/sha.js": { "version": "2.4.12", - "resolved": "http://localhost:4873/sha.js/-/sha.js-2.4.12.tgz", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", "license": "(MIT AND BSD-3-Clause)", "dependencies": { @@ -14619,7 +14141,7 @@ }, "node_modules/sharp": { "version": "0.34.5", - "resolved": "http://localhost:4873/sharp/-/sharp-0.34.5.tgz", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", "hasInstallScript": true, "license": "Apache-2.0", @@ -14663,7 +14185,7 @@ }, "node_modules/shebang-command": { "version": "2.0.0", - "resolved": "http://localhost:4873/shebang-command/-/shebang-command-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "license": "MIT", "dependencies": { @@ -14675,7 +14197,7 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "http://localhost:4873/shebang-regex/-/shebang-regex-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "license": "MIT", "engines": { @@ -14684,7 +14206,7 @@ }, "node_modules/shell-quote": { "version": "1.8.3", - "resolved": "http://localhost:4873/shell-quote/-/shell-quote-1.8.3.tgz", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", "license": "MIT", "engines": { @@ -14696,7 +14218,7 @@ }, "node_modules/side-channel": { "version": "1.1.0", - "resolved": "http://localhost:4873/side-channel/-/side-channel-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "license": "MIT", "dependencies": { @@ -14715,7 +14237,7 @@ }, "node_modules/side-channel-list": { "version": "1.0.1", - "resolved": "http://localhost:4873/side-channel-list/-/side-channel-list-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", "license": "MIT", "dependencies": { @@ -14731,7 +14253,7 @@ }, "node_modules/side-channel-map": { "version": "1.0.1", - "resolved": "http://localhost:4873/side-channel-map/-/side-channel-map-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "license": "MIT", "dependencies": { @@ -14749,7 +14271,7 @@ }, "node_modules/side-channel-weakmap": { "version": "1.0.2", - "resolved": "http://localhost:4873/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "license": "MIT", "dependencies": { @@ -14768,7 +14290,7 @@ }, "node_modules/signal-exit": { "version": "4.1.0", - "resolved": "http://localhost:4873/signal-exit/-/signal-exit-4.1.0.tgz", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "license": "ISC", "engines": { @@ -14780,7 +14302,7 @@ }, "node_modules/simple-git": { "version": "3.36.0", - "resolved": "http://localhost:4873/simple-git/-/simple-git-3.36.0.tgz", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.36.0.tgz", "integrity": "sha512-cGQjLjK8bxJw4QuYT7gxHw3/IouVESbhahSsHrX97MzCL1gu2u7oy38W6L2ZIGECEfIBG4BabsWDPjBxJENv9Q==", "license": "MIT", "dependencies": { @@ -14797,14 +14319,14 @@ }, "node_modules/sisteransi": { "version": "1.0.5", - "resolved": "http://localhost:4873/sisteransi/-/sisteransi-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true, "license": "MIT" }, "node_modules/slash": { "version": "3.0.0", - "resolved": "http://localhost:4873/slash/-/slash-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", @@ -14814,7 +14336,7 @@ }, "node_modules/socket.io": { "version": "4.8.3", - "resolved": "http://localhost:4873/socket.io/-/socket.io-4.8.3.tgz", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.3.tgz", "integrity": "sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==", "license": "MIT", "dependencies": { @@ -14832,7 +14354,7 @@ }, "node_modules/socket.io-adapter": { "version": "2.5.6", - "resolved": "http://localhost:4873/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz", "integrity": "sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==", "license": "MIT", "dependencies": { @@ -14842,7 +14364,7 @@ }, "node_modules/socket.io-adapter/node_modules/ws": { "version": "8.18.3", - "resolved": "http://localhost:4873/ws/-/ws-8.18.3.tgz", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "license": "MIT", "engines": { @@ -14861,9 +14383,24 @@ } } }, + "node_modules/socket.io-client": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.3.tgz", + "integrity": "sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.4.1", + "engine.io-client": "~6.6.1", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/socket.io-parser": { "version": "4.2.6", - "resolved": "http://localhost:4873/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "license": "MIT", "dependencies": { @@ -14876,7 +14413,7 @@ }, "node_modules/socket.io/node_modules/accepts": { "version": "1.3.8", - "resolved": "http://localhost:4873/accepts/-/accepts-1.3.8.tgz", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "license": "MIT", "dependencies": { @@ -14889,7 +14426,7 @@ }, "node_modules/socket.io/node_modules/mime-db": { "version": "1.52.0", - "resolved": "http://localhost:4873/mime-db/-/mime-db-1.52.0.tgz", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", "engines": { @@ -14898,7 +14435,7 @@ }, "node_modules/socket.io/node_modules/mime-types": { "version": "2.1.35", - "resolved": "http://localhost:4873/mime-types/-/mime-types-2.1.35.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { @@ -14910,7 +14447,7 @@ }, "node_modules/socket.io/node_modules/negotiator": { "version": "0.6.3", - "resolved": "http://localhost:4873/negotiator/-/negotiator-0.6.3.tgz", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "license": "MIT", "engines": { @@ -14919,7 +14456,7 @@ }, "node_modules/source-map": { "version": "0.7.4", - "resolved": "http://localhost:4873/source-map/-/source-map-0.7.4.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "license": "BSD-3-Clause", "engines": { @@ -14928,7 +14465,7 @@ }, "node_modules/source-map-support": { "version": "0.5.13", - "resolved": "http://localhost:4873/source-map-support/-/source-map-support-0.5.13.tgz", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "license": "MIT", @@ -14939,7 +14476,7 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", - "resolved": "http://localhost:4873/source-map/-/source-map-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", @@ -14949,7 +14486,7 @@ }, "node_modules/sparse-bitfield": { "version": "3.0.3", - "resolved": "http://localhost:4873/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", "license": "MIT", "dependencies": { @@ -14958,7 +14495,7 @@ }, "node_modules/split2": { "version": "4.2.0", - "resolved": "http://localhost:4873/split2/-/split2-4.2.0.tgz", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "license": "ISC", "engines": { @@ -14967,14 +14504,14 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "http://localhost:4873/sprintf-js/-/sprintf-js-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/sql-escaper": { "version": "1.3.3", - "resolved": "http://localhost:4873/sql-escaper/-/sql-escaper-1.3.3.tgz", + "resolved": "https://registry.npmjs.org/sql-escaper/-/sql-escaper-1.3.3.tgz", "integrity": "sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==", "license": "MIT", "engines": { @@ -14989,7 +14526,7 @@ }, "node_modules/sql-highlight": { "version": "6.1.0", - "resolved": "http://localhost:4873/sql-highlight/-/sql-highlight-6.1.0.tgz", + "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.1.0.tgz", "integrity": "sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==", "funding": [ "https://github.com/scriptcoded/sql-highlight?sponsor=1", @@ -15005,7 +14542,7 @@ }, "node_modules/stack-trace": { "version": "0.0.10", - "resolved": "http://localhost:4873/stack-trace/-/stack-trace-0.0.10.tgz", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", "license": "MIT", "engines": { @@ -15014,7 +14551,7 @@ }, "node_modules/stack-utils": { "version": "2.0.6", - "resolved": "http://localhost:4873/stack-utils/-/stack-utils-2.0.6.tgz", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "license": "MIT", @@ -15027,7 +14564,7 @@ }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", - "resolved": "http://localhost:4873/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "license": "MIT", @@ -15037,13 +14574,13 @@ }, "node_modules/standard-as-callback": { "version": "2.1.0", - "resolved": "http://localhost:4873/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==", "license": "MIT" }, "node_modules/statuses": { "version": "2.0.2", - "resolved": "http://localhost:4873/statuses/-/statuses-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "license": "MIT", "engines": { @@ -15052,7 +14589,7 @@ }, "node_modules/streamsearch": { "version": "1.1.0", - "resolved": "http://localhost:4873/streamsearch/-/streamsearch-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", "engines": { "node": ">=10.0.0" @@ -15060,7 +14597,7 @@ }, "node_modules/string_decoder": { "version": "1.3.0", - "resolved": "http://localhost:4873/string_decoder/-/string_decoder-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "license": "MIT", "dependencies": { @@ -15069,7 +14606,7 @@ }, "node_modules/string-length": { "version": "4.0.2", - "resolved": "http://localhost:4873/string-length/-/string-length-4.0.2.tgz", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "license": "MIT", @@ -15083,7 +14620,7 @@ }, "node_modules/string-width": { "version": "4.2.3", - "resolved": "http://localhost:4873/string-width/-/string-width-4.2.3.tgz", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { @@ -15098,7 +14635,7 @@ "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", - "resolved": "http://localhost:4873/string-width/-/string-width-4.2.3.tgz", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { @@ -15112,7 +14649,7 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "resolved": "http://localhost:4873/strip-ansi/-/strip-ansi-6.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { @@ -15125,7 +14662,7 @@ "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", - "resolved": "http://localhost:4873/strip-ansi/-/strip-ansi-6.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { @@ -15137,7 +14674,7 @@ }, "node_modules/strip-bom": { "version": "4.0.0", - "resolved": "http://localhost:4873/strip-bom/-/strip-bom-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", @@ -15147,7 +14684,7 @@ }, "node_modules/strip-final-newline": { "version": "2.0.0", - "resolved": "http://localhost:4873/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", @@ -15157,7 +14694,7 @@ }, "node_modules/strip-indent": { "version": "3.0.0", - "resolved": "http://localhost:4873/strip-indent/-/strip-indent-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "license": "MIT", @@ -15170,7 +14707,7 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "http://localhost:4873/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", @@ -15182,9 +14719,9 @@ } }, "node_modules/strnum": { - "version": "2.2.3", - "resolved": "http://localhost:4873/strnum/-/strnum-2.2.3.tgz", - "integrity": "sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz", + "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==", "funding": [ { "type": "github", @@ -15195,7 +14732,7 @@ }, "node_modules/strtok3": { "version": "10.3.5", - "resolved": "http://localhost:4873/strtok3/-/strtok3-10.3.5.tgz", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz", "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==", "license": "MIT", "dependencies": { @@ -15211,7 +14748,7 @@ }, "node_modules/subscriptions-transport-ws": { "version": "0.11.0", - "resolved": "http://localhost:4873/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz", "integrity": "sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==", "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md", "license": "MIT", @@ -15228,7 +14765,7 @@ }, "node_modules/subscriptions-transport-ws/node_modules/symbol-observable": { "version": "1.2.0", - "resolved": "http://localhost:4873/symbol-observable/-/symbol-observable-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "license": "MIT", "engines": { @@ -15237,7 +14774,7 @@ }, "node_modules/subscriptions-transport-ws/node_modules/ws": { "version": "7.5.10", - "resolved": "http://localhost:4873/ws/-/ws-7.5.10.tgz", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", "engines": { @@ -15258,7 +14795,7 @@ }, "node_modules/superagent": { "version": "8.1.2", - "resolved": "http://localhost:4873/superagent/-/superagent-8.1.2.tgz", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", "deprecated": "Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net", "dev": true, @@ -15281,7 +14818,7 @@ }, "node_modules/supertest": { "version": "6.3.4", - "resolved": "http://localhost:4873/supertest/-/supertest-6.3.4.tgz", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz", "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==", "deprecated": "Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net", "dev": true, @@ -15296,7 +14833,7 @@ }, "node_modules/supports-color": { "version": "7.2.0", - "resolved": "http://localhost:4873/supports-color/-/supports-color-7.2.0.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", @@ -15309,7 +14846,7 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "http://localhost:4873/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", @@ -15322,7 +14859,7 @@ }, "node_modules/swagger-ui-dist": { "version": "5.32.4", - "resolved": "http://localhost:4873/swagger-ui-dist/-/swagger-ui-dist-5.32.4.tgz", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.32.4.tgz", "integrity": "sha512-0AADFFQNJzExEN49SrD/34Nn9cxNxVLiydYl2MBwSZFPVXNkVwC/EFAjoezGGqE8oDegiDC+p47t8lKObCinMQ==", "license": "Apache-2.0", "dependencies": { @@ -15331,7 +14868,7 @@ }, "node_modules/swagger-ui-express": { "version": "4.6.3", - "resolved": "http://localhost:4873/swagger-ui-express/-/swagger-ui-express-4.6.3.tgz", + "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-4.6.3.tgz", "integrity": "sha512-CDje4PndhTD2HkgyKH3pab+LKspDeB/NhPN2OF1j+piYIamQqBYwAXWESOT1Yju2xFg51bRW9sUng2WxDjzArw==", "license": "MIT", "dependencies": { @@ -15346,7 +14883,7 @@ }, "node_modules/symbol-observable": { "version": "4.0.0", - "resolved": "http://localhost:4873/symbol-observable/-/symbol-observable-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true, "license": "MIT", @@ -15356,7 +14893,7 @@ }, "node_modules/tapable": { "version": "2.3.3", - "resolved": "http://localhost:4873/tapable/-/tapable-2.3.3.tgz", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", "dev": true, "license": "MIT", @@ -15370,7 +14907,7 @@ }, "node_modules/tdigest": { "version": "0.1.2", - "resolved": "http://localhost:4873/tdigest/-/tdigest-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", "license": "MIT", "dependencies": { @@ -15378,9 +14915,9 @@ } }, "node_modules/terser": { - "version": "5.46.2", - "resolved": "http://localhost:4873/terser/-/terser-5.46.2.tgz", - "integrity": "sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==", + "version": "5.47.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.47.1.tgz", + "integrity": "sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -15397,9 +14934,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.5.0", - "resolved": "http://localhost:4873/terser-webpack-plugin/-/terser-webpack-plugin-5.5.0.tgz", - "integrity": "sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==", "dev": true, "license": "MIT", "dependencies": { @@ -15419,12 +14956,39 @@ "webpack": "^5.1.0" }, "peerDependenciesMeta": { + "@minify-html/node": { + "optional": true + }, "@swc/core": { "optional": true }, + "@swc/css": { + "optional": true + }, + "@swc/html": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "cssnano": { + "optional": true + }, + "csso": { + "optional": true + }, "esbuild": { "optional": true }, + "html-minifier-terser": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "postcss": { + "optional": true + }, "uglify-js": { "optional": true } @@ -15432,7 +14996,7 @@ }, "node_modules/terser-webpack-plugin/node_modules/ajv-formats": { "version": "2.1.1", - "resolved": "http://localhost:4873/ajv-formats/-/ajv-formats-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, "license": "MIT", @@ -15450,7 +15014,7 @@ }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", - "resolved": "http://localhost:4873/jest-worker/-/jest-worker-27.5.1.tgz", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "license": "MIT", @@ -15465,7 +15029,7 @@ }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { "version": "4.3.3", - "resolved": "http://localhost:4873/schema-utils/-/schema-utils-4.3.3.tgz", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, "license": "MIT", @@ -15485,7 +15049,7 @@ }, "node_modules/terser-webpack-plugin/node_modules/supports-color": { "version": "8.1.1", - "resolved": "http://localhost:4873/supports-color/-/supports-color-8.1.1.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", @@ -15501,14 +15065,14 @@ }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "resolved": "http://localhost:4873/commander/-/commander-2.20.3.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "license": "MIT" }, "node_modules/terser/node_modules/source-map": { "version": "0.6.1", - "resolved": "http://localhost:4873/source-map/-/source-map-0.6.1.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", @@ -15518,7 +15082,7 @@ }, "node_modules/terser/node_modules/source-map-support": { "version": "0.5.21", - "resolved": "http://localhost:4873/source-map-support/-/source-map-support-0.5.21.tgz", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "license": "MIT", @@ -15529,7 +15093,7 @@ }, "node_modules/test-exclude": { "version": "6.0.0", - "resolved": "http://localhost:4873/test-exclude/-/test-exclude-6.0.0.tgz", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "license": "ISC", @@ -15544,7 +15108,7 @@ }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", - "resolved": "http://localhost:4873/glob/-/glob-7.2.3.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, @@ -15566,20 +15130,20 @@ }, "node_modules/text-hex": { "version": "1.0.0", - "resolved": "http://localhost:4873/text-hex/-/text-hex-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", "license": "MIT" }, "node_modules/text-table": { "version": "0.2.0", - "resolved": "http://localhost:4873/text-table/-/text-table-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, "license": "MIT" }, "node_modules/timers-ext": { "version": "0.1.8", - "resolved": "http://localhost:4873/timers-ext/-/timers-ext-0.1.8.tgz", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", "license": "ISC", "dependencies": { @@ -15592,7 +15156,7 @@ }, "node_modules/tiny-async-pool": { "version": "1.3.0", - "resolved": "http://localhost:4873/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz", "integrity": "sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==", "license": "MIT", "dependencies": { @@ -15601,7 +15165,7 @@ }, "node_modules/tiny-async-pool/node_modules/semver": { "version": "5.7.2", - "resolved": "http://localhost:4873/semver/-/semver-5.7.2.tgz", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "license": "ISC", "bin": { @@ -15610,20 +15174,20 @@ }, "node_modules/tlhunter-sorted-set": { "version": "0.1.0", - "resolved": "http://localhost:4873/tlhunter-sorted-set/-/tlhunter-sorted-set-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/tlhunter-sorted-set/-/tlhunter-sorted-set-0.1.0.tgz", "integrity": "sha512-eGYW4bjf1DtrHzUYxYfAcSytpOkA44zsr7G2n3PV7yOUR23vmkGe3LL4R+1jL9OsXtbsFOwe8XtbCrabeaEFnw==", "license": "MIT" }, "node_modules/tmpl": { "version": "1.0.5", - "resolved": "http://localhost:4873/tmpl/-/tmpl-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/to-buffer": { "version": "1.2.2", - "resolved": "http://localhost:4873/to-buffer/-/to-buffer-1.2.2.tgz", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", "license": "MIT", "dependencies": { @@ -15637,7 +15201,7 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "http://localhost:4873/to-regex-range/-/to-regex-range-5.0.1.tgz", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "license": "MIT", "dependencies": { @@ -15649,7 +15213,7 @@ }, "node_modules/toidentifier": { "version": "1.0.1", - "resolved": "http://localhost:4873/toidentifier/-/toidentifier-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "license": "MIT", "engines": { @@ -15658,7 +15222,7 @@ }, "node_modules/token-types": { "version": "6.1.2", - "resolved": "http://localhost:4873/token-types/-/token-types-6.1.2.tgz", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", "license": "MIT", "dependencies": { @@ -15676,13 +15240,13 @@ }, "node_modules/toposort": { "version": "2.0.2", - "resolved": "http://localhost:4873/toposort/-/toposort-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", "license": "MIT" }, "node_modules/tr46": { "version": "5.1.1", - "resolved": "http://localhost:4873/tr46/-/tr46-5.1.1.tgz", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", "license": "MIT", "dependencies": { @@ -15694,7 +15258,7 @@ }, "node_modules/triple-beam": { "version": "1.4.1", - "resolved": "http://localhost:4873/triple-beam/-/triple-beam-1.4.1.tgz", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", "license": "MIT", "engines": { @@ -15703,7 +15267,7 @@ }, "node_modules/ts-jest": { "version": "29.4.9", - "resolved": "http://localhost:4873/ts-jest/-/ts-jest-29.4.9.tgz", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.9.tgz", "integrity": "sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==", "dev": true, "license": "MIT", @@ -15756,7 +15320,7 @@ }, "node_modules/ts-jest/node_modules/type-fest": { "version": "4.41.0", - "resolved": "http://localhost:4873/type-fest/-/type-fest-4.41.0.tgz", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, "license": "(MIT OR CC0-1.0)", @@ -15769,7 +15333,7 @@ }, "node_modules/ts-loader": { "version": "9.4.2", - "resolved": "http://localhost:4873/ts-loader/-/ts-loader-9.4.2.tgz", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", "dev": true, "license": "MIT", @@ -15789,7 +15353,7 @@ }, "node_modules/ts-node": { "version": "10.7.0", - "resolved": "http://localhost:4873/ts-node/-/ts-node-10.7.0.tgz", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", "devOptional": true, "license": "MIT", @@ -15833,7 +15397,7 @@ }, "node_modules/tsconfig-paths": { "version": "4.2.0", - "resolved": "http://localhost:4873/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, "license": "MIT", @@ -15848,7 +15412,7 @@ }, "node_modules/tsconfig-paths-webpack-plugin": { "version": "4.2.0", - "resolved": "http://localhost:4873/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", "dev": true, "license": "MIT", @@ -15864,7 +15428,7 @@ }, "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", - "resolved": "http://localhost:4873/strip-bom/-/strip-bom-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "license": "MIT", @@ -15874,13 +15438,13 @@ }, "node_modules/tslib": { "version": "2.8.1", - "resolved": "http://localhost:4873/tslib/-/tslib-2.8.1.tgz", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", - "resolved": "http://localhost:4873/tsutils/-/tsutils-3.21.0.tgz", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "license": "MIT", @@ -15896,14 +15460,14 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", - "resolved": "http://localhost:4873/tslib/-/tslib-1.14.1.tgz", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, "license": "0BSD" }, "node_modules/ttl-set": { "version": "1.0.0", - "resolved": "http://localhost:4873/ttl-set/-/ttl-set-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/ttl-set/-/ttl-set-1.0.0.tgz", "integrity": "sha512-2fuHn/UR+8Z9HK49r97+p2Ru1b5Eewg2QqPrU14BVCQ9QoyU3+vLLZk2WEiyZ9sgJh6W8G1cZr9I2NBLywAHrA==", "license": "MIT", "dependencies": { @@ -15912,19 +15476,19 @@ }, "node_modules/tweetnacl": { "version": "1.0.3", - "resolved": "http://localhost:4873/tweetnacl/-/tweetnacl-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", "license": "Unlicense" }, "node_modules/type": { "version": "2.7.3", - "resolved": "http://localhost:4873/type/-/type-2.7.3.tgz", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", "license": "ISC" }, "node_modules/type-check": { "version": "0.4.0", - "resolved": "http://localhost:4873/type-check/-/type-check-0.4.0.tgz", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", @@ -15937,7 +15501,7 @@ }, "node_modules/type-detect": { "version": "4.0.8", - "resolved": "http://localhost:4873/type-detect/-/type-detect-4.0.8.tgz", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "license": "MIT", @@ -15947,7 +15511,7 @@ }, "node_modules/type-fest": { "version": "0.20.2", - "resolved": "http://localhost:4873/type-fest/-/type-fest-0.20.2.tgz", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", @@ -15960,7 +15524,7 @@ }, "node_modules/type-is": { "version": "2.0.1", - "resolved": "http://localhost:4873/type-is/-/type-is-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", "license": "MIT", "dependencies": { @@ -15974,7 +15538,7 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.3", - "resolved": "http://localhost:4873/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "license": "MIT", "dependencies": { @@ -15988,30 +15552,30 @@ }, "node_modules/typedarray": { "version": "0.0.6", - "resolved": "http://localhost:4873/typedarray/-/typedarray-0.0.6.tgz", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "license": "MIT" }, "node_modules/typeorm": { - "version": "0.3.28", - "resolved": "http://localhost:4873/typeorm/-/typeorm-0.3.28.tgz", - "integrity": "sha512-6GH7wXhtfq2D33ZuRXYwIsl/qM5685WZcODZb7noOOcRMteM9KF2x2ap3H0EBjnSV0VO4gNAfJT5Ukp0PkOlvg==", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.29.tgz", + "integrity": "sha512-wwPEX/df4l72gCmOsrs0otJZYLGA9lLQkUZCkukbsymEycV4zXv2KM7wU7v2r8L01TaCgY9ApSSqHQWBOUhEoQ==", "license": "MIT", "dependencies": { "@sqltools/formatter": "^1.2.5", "ansis": "^4.2.0", "app-root-path": "^3.1.0", "buffer": "^6.0.3", - "dayjs": "^1.11.19", + "dayjs": "^1.11.20", "debug": "^4.4.3", - "dedent": "^1.7.0", + "dedent": "^1.7.2", "dotenv": "^16.6.1", "glob": "^10.5.0", "reflect-metadata": "^0.2.2", "sha.js": "^2.4.12", "sql-highlight": "^6.1.0", "tslib": "^2.8.1", - "uuid": "^11.1.0", + "uuid": "^11.1.1", "yargs": "^17.7.2" }, "bin": { @@ -16096,7 +15660,7 @@ }, "node_modules/typeorm/node_modules/brace-expansion": { "version": "2.1.0", - "resolved": "http://localhost:4873/brace-expansion/-/brace-expansion-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "license": "MIT", "dependencies": { @@ -16105,7 +15669,7 @@ }, "node_modules/typeorm/node_modules/dotenv": { "version": "16.6.1", - "resolved": "http://localhost:4873/dotenv/-/dotenv-16.6.1.tgz", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", "license": "BSD-2-Clause", "engines": { @@ -16117,7 +15681,7 @@ }, "node_modules/typeorm/node_modules/glob": { "version": "10.5.0", - "resolved": "http://localhost:4873/glob/-/glob-10.5.0.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", @@ -16138,13 +15702,13 @@ }, "node_modules/typeorm/node_modules/lru-cache": { "version": "10.4.3", - "resolved": "http://localhost:4873/lru-cache/-/lru-cache-10.4.3.tgz", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, "node_modules/typeorm/node_modules/minimatch": { "version": "9.0.9", - "resolved": "http://localhost:4873/minimatch/-/minimatch-9.0.9.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "dependencies": { @@ -16159,7 +15723,7 @@ }, "node_modules/typeorm/node_modules/path-scurry": { "version": "1.11.1", - "resolved": "http://localhost:4873/path-scurry/-/path-scurry-1.11.1.tgz", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "license": "BlueOak-1.0.0", "dependencies": { @@ -16173,9 +15737,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/typeorm/node_modules/uuid": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.1.tgz", + "integrity": "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, "node_modules/typescript": { "version": "4.9.5", - "resolved": "http://localhost:4873/typescript/-/typescript-4.9.5.tgz", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "devOptional": true, "license": "Apache-2.0", @@ -16189,7 +15766,7 @@ }, "node_modules/uglify-js": { "version": "3.19.3", - "resolved": "http://localhost:4873/uglify-js/-/uglify-js-3.19.3.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, "license": "BSD-2-Clause", @@ -16203,7 +15780,7 @@ }, "node_modules/uid": { "version": "2.0.2", - "resolved": "http://localhost:4873/uid/-/uid-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", "license": "MIT", "dependencies": { @@ -16215,7 +15792,7 @@ }, "node_modules/uint8array-extras": { "version": "1.5.0", - "resolved": "http://localhost:4873/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", "license": "MIT", "engines": { @@ -16226,14 +15803,14 @@ } }, "node_modules/undici-types": { - "version": "7.19.2", - "resolved": "http://localhost:4873/undici-types/-/undici-types-7.19.2.tgz", - "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.21.0.tgz", + "integrity": "sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==", "license": "MIT" }, "node_modules/universalify": { "version": "2.0.1", - "resolved": "http://localhost:4873/universalify/-/universalify-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", @@ -16243,7 +15820,7 @@ }, "node_modules/unpipe": { "version": "1.0.0", - "resolved": "http://localhost:4873/unpipe/-/unpipe-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "license": "MIT", "engines": { @@ -16252,7 +15829,7 @@ }, "node_modules/update-browserslist-db": { "version": "1.2.3", - "resolved": "http://localhost:4873/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ @@ -16283,7 +15860,7 @@ }, "node_modules/uri-js": { "version": "4.4.1", - "resolved": "http://localhost:4873/uri-js/-/uri-js-4.4.1.tgz", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", @@ -16293,7 +15870,7 @@ }, "node_modules/url-parse": { "version": "1.5.10", - "resolved": "http://localhost:4873/url-parse/-/url-parse-1.5.10.tgz", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "license": "MIT", "dependencies": { @@ -16303,33 +15880,30 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "http://localhost:4873/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, "node_modules/uuid": { - "version": "11.1.0", - "resolved": "http://localhost:4873/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", "license": "MIT", "bin": { - "uuid": "dist/esm/bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", - "resolved": "http://localhost:4873/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "devOptional": true, "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.3.0", - "resolved": "http://localhost:4873/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", @@ -16342,9 +15916,18 @@ "node": ">=10.12.0" } }, + "node_modules/validator": { + "version": "13.15.35", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.35.tgz", + "integrity": "sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/vary": { "version": "1.1.2", - "resolved": "http://localhost:4873/vary/-/vary-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "license": "MIT", "engines": { @@ -16353,7 +15936,7 @@ }, "node_modules/walker": { "version": "1.0.8", - "resolved": "http://localhost:4873/walker/-/walker-1.0.8.tgz", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "license": "Apache-2.0", @@ -16363,7 +15946,7 @@ }, "node_modules/watchpack": { "version": "2.5.1", - "resolved": "http://localhost:4873/watchpack/-/watchpack-2.5.1.tgz", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "dev": true, "license": "MIT", @@ -16377,7 +15960,7 @@ }, "node_modules/wcwidth": { "version": "1.0.1", - "resolved": "http://localhost:4873/wcwidth/-/wcwidth-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, "license": "MIT", @@ -16387,7 +15970,7 @@ }, "node_modules/webidl-conversions": { "version": "7.0.0", - "resolved": "http://localhost:4873/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "license": "BSD-2-Clause", "engines": { @@ -16396,7 +15979,7 @@ }, "node_modules/webpack": { "version": "5.106.2", - "resolved": "http://localhost:4873/webpack/-/webpack-5.106.2.tgz", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz", "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==", "dev": true, "license": "MIT", @@ -16444,7 +16027,7 @@ }, "node_modules/webpack-node-externals": { "version": "3.0.0", - "resolved": "http://localhost:4873/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", "dev": true, "license": "MIT", @@ -16453,9 +16036,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.4.0", - "resolved": "http://localhost:4873/webpack-sources/-/webpack-sources-3.4.0.tgz", - "integrity": "sha512-gHwIe1cgBvvfLeu1Yz/dcFpmHfKDVxxyqI+kzqmuxZED81z2ChxpyqPaWcNqigPywhaEke7AjSGga+kxY55gjQ==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.1.tgz", + "integrity": "sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==", "dev": true, "license": "MIT", "engines": { @@ -16464,7 +16047,7 @@ }, "node_modules/webpack/node_modules/ajv-formats": { "version": "2.1.1", - "resolved": "http://localhost:4873/ajv-formats/-/ajv-formats-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, "license": "MIT", @@ -16482,7 +16065,7 @@ }, "node_modules/webpack/node_modules/schema-utils": { "version": "4.3.3", - "resolved": "http://localhost:4873/schema-utils/-/schema-utils-4.3.3.tgz", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, "license": "MIT", @@ -16502,7 +16085,7 @@ }, "node_modules/whatwg-mimetype": { "version": "4.0.0", - "resolved": "http://localhost:4873/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", "license": "MIT", "engines": { @@ -16511,7 +16094,7 @@ }, "node_modules/whatwg-url": { "version": "14.2.0", - "resolved": "http://localhost:4873/whatwg-url/-/whatwg-url-14.2.0.tgz", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", "license": "MIT", "dependencies": { @@ -16524,7 +16107,7 @@ }, "node_modules/which": { "version": "2.0.2", - "resolved": "http://localhost:4873/which/-/which-2.0.2.tgz", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "license": "ISC", "dependencies": { @@ -16539,7 +16122,7 @@ }, "node_modules/which-typed-array": { "version": "1.1.20", - "resolved": "http://localhost:4873/which-typed-array/-/which-typed-array-1.1.20.tgz", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "license": "MIT", "dependencies": { @@ -16560,7 +16143,7 @@ }, "node_modules/winston": { "version": "3.19.0", - "resolved": "http://localhost:4873/winston/-/winston-3.19.0.tgz", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", "license": "MIT", "dependencies": { @@ -16582,7 +16165,7 @@ }, "node_modules/winston-daily-rotate-file": { "version": "4.7.1", - "resolved": "http://localhost:4873/winston-daily-rotate-file/-/winston-daily-rotate-file-4.7.1.tgz", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-4.7.1.tgz", "integrity": "sha512-7LGPiYGBPNyGHLn9z33i96zx/bd71pjBn9tqQzO3I4Tayv94WPmBNwKC7CO1wPHdP9uvu+Md/1nr6VSH9h0iaA==", "license": "MIT", "dependencies": { @@ -16600,7 +16183,7 @@ }, "node_modules/winston-daily-rotate-file/node_modules/object-hash": { "version": "2.2.0", - "resolved": "http://localhost:4873/object-hash/-/object-hash-2.2.0.tgz", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", "license": "MIT", "engines": { @@ -16609,7 +16192,7 @@ }, "node_modules/winston-transport": { "version": "4.9.0", - "resolved": "http://localhost:4873/winston-transport/-/winston-transport-4.9.0.tgz", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", "license": "MIT", "dependencies": { @@ -16623,7 +16206,7 @@ }, "node_modules/winston/node_modules/@colors/colors": { "version": "1.6.0", - "resolved": "http://localhost:4873/@colors/colors/-/colors-1.6.0.tgz", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", "license": "MIT", "engines": { @@ -16632,13 +16215,13 @@ }, "node_modules/winston/node_modules/async": { "version": "3.2.6", - "resolved": "http://localhost:4873/async/-/async-3.2.6.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "license": "MIT" }, "node_modules/word-wrap": { "version": "1.2.5", - "resolved": "http://localhost:4873/word-wrap/-/word-wrap-1.2.5.tgz", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", @@ -16648,13 +16231,13 @@ }, "node_modules/wordwrap": { "version": "1.0.0", - "resolved": "http://localhost:4873/wordwrap/-/wordwrap-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "license": "MIT" }, "node_modules/wrap-ansi": { "version": "6.2.0", - "resolved": "http://localhost:4873/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "license": "MIT", @@ -16670,7 +16253,7 @@ "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", - "resolved": "http://localhost:4873/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", "dependencies": { @@ -16687,13 +16270,13 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "resolved": "http://localhost:4873/wrappy/-/wrappy-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, "node_modules/write-file-atomic": { "version": "4.0.2", - "resolved": "http://localhost:4873/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "license": "ISC", @@ -16707,14 +16290,14 @@ }, "node_modules/write-file-atomic/node_modules/signal-exit": { "version": "3.0.7", - "resolved": "http://localhost:4873/signal-exit/-/signal-exit-3.0.7.tgz", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/ws": { "version": "8.20.0", - "resolved": "http://localhost:4873/ws/-/ws-8.20.0.tgz", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", "license": "MIT", "engines": { @@ -16733,6 +16316,21 @@ } } }, + "node_modules/xml-naming": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/xml-naming/-/xml-naming-0.1.0.tgz", + "integrity": "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/xmlhttprequest-ssl": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", @@ -16743,7 +16341,7 @@ }, "node_modules/xss": { "version": "1.0.15", - "resolved": "http://localhost:4873/xss/-/xss-1.0.15.tgz", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz", "integrity": "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==", "license": "MIT", "dependencies": { @@ -16759,13 +16357,13 @@ }, "node_modules/xss/node_modules/commander": { "version": "2.20.3", - "resolved": "http://localhost:4873/commander/-/commander-2.20.3.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "license": "MIT" }, "node_modules/xtend": { "version": "4.0.2", - "resolved": "http://localhost:4873/xtend/-/xtend-4.0.2.tgz", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "license": "MIT", "engines": { @@ -16774,7 +16372,7 @@ }, "node_modules/y18n": { "version": "5.0.8", - "resolved": "http://localhost:4873/y18n/-/y18n-5.0.8.tgz", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "license": "ISC", "engines": { @@ -16783,14 +16381,14 @@ }, "node_modules/yallist": { "version": "3.1.1", - "resolved": "http://localhost:4873/yallist/-/yallist-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC" }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "http://localhost:4873/yargs/-/yargs-17.7.2.tgz", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "license": "MIT", "dependencies": { @@ -16808,7 +16406,7 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "http://localhost:4873/yargs-parser/-/yargs-parser-21.1.1.tgz", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "license": "ISC", "engines": { @@ -16817,7 +16415,7 @@ }, "node_modules/yn": { "version": "3.1.1", - "resolved": "http://localhost:4873/yn/-/yn-3.1.1.tgz", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "devOptional": true, "license": "MIT", @@ -16827,7 +16425,7 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "http://localhost:4873/yocto-queue/-/yocto-queue-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "license": "MIT", "engines": { @@ -16839,7 +16437,7 @@ }, "node_modules/yoctocolors-cjs": { "version": "2.1.3", - "resolved": "http://localhost:4873/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", "dev": true, "license": "MIT", @@ -16852,7 +16450,7 @@ }, "node_modules/yup": { "version": "0.32.11", - "resolved": "http://localhost:4873/yup/-/yup-0.32.11.tgz", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", "license": "MIT", "dependencies": { @@ -16869,4 +16467,4 @@ } } } -} \ No newline at end of file +} From 53609c73076cc361c92b7217cd88499652ebb909 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 12 May 2026 12:44:32 +0300 Subject: [PATCH 158/206] use node 24 --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 46f44d2f4..2e1c6ef56 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:25-alpine AS build +FROM node:24.14.0-alpine AS build WORKDIR /app RUN chown -R node:node /app @@ -11,7 +11,7 @@ RUN npm install RUN npm run init RUN npm run build -FROM node:25-alpine +FROM node:24.14.0-alpine ENV PYTHONUNBUFFERED=1 RUN apk add --no-cache python3 py3-pip py3-ruamel.yaml From d2d3de5a36745cbd77c5cb5d28938e0c2d1469b3 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 12 May 2026 12:49:12 +0300 Subject: [PATCH 159/206] fix --- src/endpoints/mex/mex.module.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/endpoints/mex/mex.module.ts b/src/endpoints/mex/mex.module.ts index 9e19997b4..0fabfe665 100644 --- a/src/endpoints/mex/mex.module.ts +++ b/src/endpoints/mex/mex.module.ts @@ -35,7 +35,9 @@ export class MexModule { ]; const isExchangeEnabled = configuration().features?.exchange?.enabled ?? false; - if (isExchangeEnabled) { + const isCacheWarmerEnabled = configuration().cron?.cacheWarmer ?? false; + // Enable MEX cron only when both Exchange and CacheWarmer flags are enabled + if (isExchangeEnabled && isCacheWarmerEnabled) { dynamicProviders.push(MexWarmerService); } From 38c94c4d11df78317f4792c8f673321c1f8c5a16 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 14 May 2026 09:52:04 +0300 Subject: [PATCH 160/206] remove whitespate --- src/main.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main.ts b/src/main.ts index 339a60fc2..fd7f09bfc 100644 --- a/src/main.ts +++ b/src/main.ts @@ -90,7 +90,6 @@ async function bootstrap() { await processorApp.listen(5001); } - if (apiConfigService.getIsWebsocketSubscriptionActive()) { const websocketSubscriptionApp = await NestFactory.create(WebsocketSubscriptionModule); websocketSubscriptionApp.useWebSocketAdapter(new IoAdapter(websocketSubscriptionApp)); From 516a0a5a5ef11ad5519035fc588558ed3a7fd8ea Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 19 May 2026 09:50:01 +0300 Subject: [PATCH 161/206] add logs --- src/common/metrics/api.metrics.service.ts | 1 + src/crons/transaction.processor/transaction.processor.service.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/common/metrics/api.metrics.service.ts b/src/common/metrics/api.metrics.service.ts index 5f78bfb24..33c68c8eb 100644 --- a/src/common/metrics/api.metrics.service.ts +++ b/src/common/metrics/api.metrics.service.ts @@ -184,6 +184,7 @@ export class ApiMetricsService { @OnEvent(MetricsEvents.SetLastProcessedNonce) setLastProcessedNonce(payload: LogMetricsEvent) { const [shardId, nonce] = payload.args; + console.log(`Setting last processed nonce for shard ${shardId} to ${nonce}`); ApiMetricsService.lastProcessedNonceGauge.set({ shardId }, nonce); } diff --git a/src/crons/transaction.processor/transaction.processor.service.ts b/src/crons/transaction.processor/transaction.processor.service.ts index 511f67982..1379f3218 100644 --- a/src/crons/transaction.processor/transaction.processor.service.ts +++ b/src/crons/transaction.processor/transaction.processor.service.ts @@ -71,6 +71,7 @@ export class TransactionProcessorService { }, setLastProcessedNonce: async (shardId, nonce) => { const event = new LogMetricsEvent(); + console.log(`Emitting event to set last processed nonce for shard ${shardId} to ${nonce}`); event.args = [shardId, nonce]; this.eventEmitter.emit( MetricsEvents.SetLastProcessedNonce, From e3b8c6b9220e4d88f990a95e3fc5ba2a50c19840 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 19 May 2026 11:50:58 +0300 Subject: [PATCH 162/206] edit log --- src/common/metrics/api.metrics.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/metrics/api.metrics.service.ts b/src/common/metrics/api.metrics.service.ts index 33c68c8eb..902dd0331 100644 --- a/src/common/metrics/api.metrics.service.ts +++ b/src/common/metrics/api.metrics.service.ts @@ -184,7 +184,7 @@ export class ApiMetricsService { @OnEvent(MetricsEvents.SetLastProcessedNonce) setLastProcessedNonce(payload: LogMetricsEvent) { const [shardId, nonce] = payload.args; - console.log(`Setting last processed nonce for shard ${shardId} to ${nonce}`); + console.log(`Setting last processed nonce for shard ${shardId} to ${nonce}.`); ApiMetricsService.lastProcessedNonceGauge.set({ shardId }, nonce); } From bca44e05a52e67bc4b3a05b7562bde80034a2fd5 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 19 May 2026 16:18:41 +0300 Subject: [PATCH 163/206] add git --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 2e1c6ef56..bc1fe8199 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ RUN npm run build FROM node:24.14.0-alpine ENV PYTHONUNBUFFERED=1 -RUN apk add --no-cache python3 py3-pip py3-ruamel.yaml +RUN apk add --no-cache python3 py3-pip py3-ruamel.yaml git WORKDIR /app RUN chown -R node:node /app From 9252355088bce108045284792468850f76d6dcba Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 19 May 2026 16:36:58 +0300 Subject: [PATCH 164/206] edit log --- src/common/metrics/api.metrics.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/metrics/api.metrics.service.ts b/src/common/metrics/api.metrics.service.ts index 902dd0331..df5683120 100644 --- a/src/common/metrics/api.metrics.service.ts +++ b/src/common/metrics/api.metrics.service.ts @@ -184,7 +184,7 @@ export class ApiMetricsService { @OnEvent(MetricsEvents.SetLastProcessedNonce) setLastProcessedNonce(payload: LogMetricsEvent) { const [shardId, nonce] = payload.args; - console.log(`Setting last processed nonce for shard ${shardId} to ${nonce}.`); + console.log(`Setting last processed nonce for shard ${shardId} to ${nonce} .`); ApiMetricsService.lastProcessedNonceGauge.set({ shardId }, nonce); } From 7d7e4952e99c1cb76145c7ef6b6af11e6c36ec95 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 19 May 2026 17:03:36 +0300 Subject: [PATCH 165/206] edit log --- src/common/metrics/api.metrics.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/metrics/api.metrics.service.ts b/src/common/metrics/api.metrics.service.ts index df5683120..902dd0331 100644 --- a/src/common/metrics/api.metrics.service.ts +++ b/src/common/metrics/api.metrics.service.ts @@ -184,7 +184,7 @@ export class ApiMetricsService { @OnEvent(MetricsEvents.SetLastProcessedNonce) setLastProcessedNonce(payload: LogMetricsEvent) { const [shardId, nonce] = payload.args; - console.log(`Setting last processed nonce for shard ${shardId} to ${nonce} .`); + console.log(`Setting last processed nonce for shard ${shardId} to ${nonce}.`); ApiMetricsService.lastProcessedNonceGauge.set({ shardId }, nonce); } From e8865f3fdf5113a0b93241e5f70491c8d4d1dcc8 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 19 May 2026 17:37:39 +0300 Subject: [PATCH 166/206] edit log --- src/common/metrics/api.metrics.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/metrics/api.metrics.service.ts b/src/common/metrics/api.metrics.service.ts index 902dd0331..7160ca5e4 100644 --- a/src/common/metrics/api.metrics.service.ts +++ b/src/common/metrics/api.metrics.service.ts @@ -184,7 +184,7 @@ export class ApiMetricsService { @OnEvent(MetricsEvents.SetLastProcessedNonce) setLastProcessedNonce(payload: LogMetricsEvent) { const [shardId, nonce] = payload.args; - console.log(`Setting last processed nonce for shard ${shardId} to ${nonce}.`); + console.log(`Setting last processed nonce for shard ${shardId} to ${nonce}..`); ApiMetricsService.lastProcessedNonceGauge.set({ shardId }, nonce); } From 5564b83ebbda81264de20163b47ffe4f3c0bd386 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 19 May 2026 21:46:03 +0300 Subject: [PATCH 167/206] edit log --- src/common/metrics/api.metrics.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/metrics/api.metrics.service.ts b/src/common/metrics/api.metrics.service.ts index 7160ca5e4..07fa42cba 100644 --- a/src/common/metrics/api.metrics.service.ts +++ b/src/common/metrics/api.metrics.service.ts @@ -184,7 +184,7 @@ export class ApiMetricsService { @OnEvent(MetricsEvents.SetLastProcessedNonce) setLastProcessedNonce(payload: LogMetricsEvent) { const [shardId, nonce] = payload.args; - console.log(`Setting last processed nonce for shard ${shardId} to ${nonce}..`); + console.log(`Setting last processed nonce for shard ${shardId} to ${nonce}...`); ApiMetricsService.lastProcessedNonceGauge.set({ shardId }, nonce); } From ffa4d1e8cb4a18d94d426615ae9fbaaefc9047fd Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 20 May 2026 13:42:54 +0300 Subject: [PATCH 168/206] fix metrics --- .../transaction.processor/batch.transaction.processor.module.ts | 2 ++ src/crons/transaction.processor/transaction.processor.module.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/crons/transaction.processor/batch.transaction.processor.module.ts b/src/crons/transaction.processor/batch.transaction.processor.module.ts index 5cc7bd809..96647da76 100644 --- a/src/crons/transaction.processor/batch.transaction.processor.module.ts +++ b/src/crons/transaction.processor/batch.transaction.processor.module.ts @@ -1,6 +1,7 @@ import { Module } from "@nestjs/common"; import { ScheduleModule } from "@nestjs/schedule"; import { ApiConfigModule } from "src/common/api-config/api.config.module"; +import { ApiMetricsModule } from "src/common/metrics/api.metrics.module"; import { TransactionsBatchModule } from "src/endpoints/transactions.batch/transactions.batch.module"; import { TransactionModule } from "src/endpoints/transactions/transaction.module"; import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; @@ -13,6 +14,7 @@ import { BatchTransactionProcessorService } from "./batch.transaction.processor. DynamicModuleUtils.getCacheModule(), TransactionsBatchModule, TransactionModule, + ApiMetricsModule, ], providers: [ DynamicModuleUtils.getPubSubService(), diff --git a/src/crons/transaction.processor/transaction.processor.module.ts b/src/crons/transaction.processor/transaction.processor.module.ts index 703d3e749..ef3df67c6 100644 --- a/src/crons/transaction.processor/transaction.processor.module.ts +++ b/src/crons/transaction.processor/transaction.processor.module.ts @@ -5,6 +5,7 @@ import { NodeModule } from 'src/endpoints/nodes/node.module'; import { ShardModule } from 'src/endpoints/shards/shard.module'; import { TransactionModule } from 'src/endpoints/transactions/transaction.module'; import { NftWorkerModule } from 'src/queue.worker/nft.worker/nft.worker.module'; +import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; import { TransactionProcessorService } from './transaction.processor.service'; @@ -16,6 +17,7 @@ import { TransactionProcessorService } from './transaction.processor.service'; NodeModule, NftModule, NftWorkerModule, + ApiMetricsModule, ], providers: [ DynamicModuleUtils.getPubSubService(), From 11327a901195e2343a7577e4f59278276ea5f2b7 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 20 May 2026 14:02:31 +0300 Subject: [PATCH 169/206] global metrics module --- .../batch.transaction.processor.module.ts | 2 -- .../transaction.processor/transaction.processor.module.ts | 5 +---- src/public.app.module.ts | 2 ++ 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/crons/transaction.processor/batch.transaction.processor.module.ts b/src/crons/transaction.processor/batch.transaction.processor.module.ts index 96647da76..5cc7bd809 100644 --- a/src/crons/transaction.processor/batch.transaction.processor.module.ts +++ b/src/crons/transaction.processor/batch.transaction.processor.module.ts @@ -1,7 +1,6 @@ import { Module } from "@nestjs/common"; import { ScheduleModule } from "@nestjs/schedule"; import { ApiConfigModule } from "src/common/api-config/api.config.module"; -import { ApiMetricsModule } from "src/common/metrics/api.metrics.module"; import { TransactionsBatchModule } from "src/endpoints/transactions.batch/transactions.batch.module"; import { TransactionModule } from "src/endpoints/transactions/transaction.module"; import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; @@ -14,7 +13,6 @@ import { BatchTransactionProcessorService } from "./batch.transaction.processor. DynamicModuleUtils.getCacheModule(), TransactionsBatchModule, TransactionModule, - ApiMetricsModule, ], providers: [ DynamicModuleUtils.getPubSubService(), diff --git a/src/crons/transaction.processor/transaction.processor.module.ts b/src/crons/transaction.processor/transaction.processor.module.ts index ef3df67c6..60ae29ec2 100644 --- a/src/crons/transaction.processor/transaction.processor.module.ts +++ b/src/crons/transaction.processor/transaction.processor.module.ts @@ -4,9 +4,7 @@ import { NftModule } from 'src/endpoints/nfts/nft.module'; import { NodeModule } from 'src/endpoints/nodes/node.module'; import { ShardModule } from 'src/endpoints/shards/shard.module'; import { TransactionModule } from 'src/endpoints/transactions/transaction.module'; -import { NftWorkerModule } from 'src/queue.worker/nft.worker/nft.worker.module'; -import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; -import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; +import { NftWorkerModule } from 'src/queue.worker/nft.worker/nft.worker.module'; import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; import { TransactionProcessorService } from './transaction.processor.service'; @Module({ @@ -17,7 +15,6 @@ import { TransactionProcessorService } from './transaction.processor.service'; NodeModule, NftModule, NftWorkerModule, - ApiMetricsModule, ], providers: [ DynamicModuleUtils.getPubSubService(), diff --git a/src/public.app.module.ts b/src/public.app.module.ts index 5c48e6f81..524185e66 100644 --- a/src/public.app.module.ts +++ b/src/public.app.module.ts @@ -10,6 +10,7 @@ import { LoggingModule } from '@multiversx/sdk-nestjs-common'; import { DynamicModuleUtils } from './utils/dynamic.module.utils'; import { LocalCacheController } from './endpoints/caching/local.cache.controller'; import { RestrictedRoutesMiddleware } from './utils/restricted.routes.middleware'; +import { ApiMetricsModule } from './common/metrics/api.metrics.module'; @Module({ imports: [ @@ -17,6 +18,7 @@ import { RestrictedRoutesMiddleware } from './utils/restricted.routes.middleware EndpointsServicesModule, EndpointsControllersModule.forRoot(), DynamicModuleUtils.getRedisCacheModule(), + ApiMetricsModule, ], controllers: [ LocalCacheController, From 5a25c79a4cac5f809764ce44638d21a0e0037d63 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 20 May 2026 14:20:46 +0300 Subject: [PATCH 170/206] import metrics module for every individual nest app --- src/common/metrics/api.metrics.module.ts | 6 ++++++ src/common/pubsub/pub.sub.listener.module.ts | 2 ++ src/common/websockets/web-socket-publisher-module.ts | 2 ++ src/crons/cache.warmer/cache.warmer.module.ts | 2 ++ src/crons/elastic.updater/elastic.updater.module.ts | 2 ++ src/crons/status.checker/status.checker.module.ts | 2 ++ .../batch.transaction.processor.module.ts | 2 ++ .../transaction.processor/transaction.processor.module.ts | 5 ++++- src/crons/websocket/websocket.subscription.module.ts | 2 ++ src/queue.worker/nft.worker/queue/nft.queue.module.ts | 2 ++ 10 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/common/metrics/api.metrics.module.ts b/src/common/metrics/api.metrics.module.ts index 377f30e43..452f287cc 100644 --- a/src/common/metrics/api.metrics.module.ts +++ b/src/common/metrics/api.metrics.module.ts @@ -2,12 +2,18 @@ import { MetricsModule } from "@multiversx/sdk-nestjs-monitoring"; import { Global, Module } from "@nestjs/common"; import { EventEmitterModule } from "@nestjs/event-emitter"; import { ApiMetricsService } from "./api.metrics.service"; +import { ApiConfigModule } from "src/common/api-config/api.config.module"; +import { GatewayModule } from "src/common/gateway/gateway.module"; +import { ProtocolModule } from "src/common/protocol/protocol.module"; @Global() @Module({ imports: [ MetricsModule, EventEmitterModule.forRoot({ maxListeners: 1 }), + ApiConfigModule, + GatewayModule, + ProtocolModule, ], providers: [ ApiMetricsService, diff --git a/src/common/pubsub/pub.sub.listener.module.ts b/src/common/pubsub/pub.sub.listener.module.ts index 8912eb1e3..7ca1a80c0 100644 --- a/src/common/pubsub/pub.sub.listener.module.ts +++ b/src/common/pubsub/pub.sub.listener.module.ts @@ -2,11 +2,13 @@ import { Module } from '@nestjs/common'; import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; import { PubSubListenerController } from './pub.sub.listener.controller'; import { LoggingModule } from '@multiversx/sdk-nestjs-common'; +import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; @Module({ imports: [ DynamicModuleUtils.getCacheModule(), LoggingModule, + ApiMetricsModule, ], controllers: [ PubSubListenerController, diff --git a/src/common/websockets/web-socket-publisher-module.ts b/src/common/websockets/web-socket-publisher-module.ts index bd445f444..3a7971915 100644 --- a/src/common/websockets/web-socket-publisher-module.ts +++ b/src/common/websockets/web-socket-publisher-module.ts @@ -3,10 +3,12 @@ import { TransactionActionModule } from "src/endpoints/transactions/transaction- import { WebSocketPublisherService } from "./web-socket-publisher-service"; import { WebSocketPublisherController } from "./web-socket-publisher-controller"; import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; +import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; @Module({ imports: [ TransactionActionModule, + ApiMetricsModule, ], controllers: [ WebSocketPublisherController, diff --git a/src/crons/cache.warmer/cache.warmer.module.ts b/src/crons/cache.warmer/cache.warmer.module.ts index 57167d301..1561d888b 100644 --- a/src/crons/cache.warmer/cache.warmer.module.ts +++ b/src/crons/cache.warmer/cache.warmer.module.ts @@ -11,6 +11,7 @@ import { GuestCacheWarmer } from '@multiversx/sdk-nestjs-cache'; import { PluginModule } from 'src/plugins/plugin.module'; import { TpsWarmerService } from '../tps/tps-warmer.service'; import { TpsModule } from 'src/endpoints/tps/tps.module'; +import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; @Module({ imports: [ @@ -23,6 +24,7 @@ import { TpsModule } from 'src/endpoints/tps/tps.module'; NftCronModule, PluginModule, TpsModule, + ApiMetricsModule, ], providers: [ DynamicModuleUtils.getPubSubService(), diff --git a/src/crons/elastic.updater/elastic.updater.module.ts b/src/crons/elastic.updater/elastic.updater.module.ts index 9ff1244bc..3558388d6 100644 --- a/src/crons/elastic.updater/elastic.updater.module.ts +++ b/src/crons/elastic.updater/elastic.updater.module.ts @@ -4,6 +4,7 @@ import { AssetsModule } from 'src/common/assets/assets.module'; import { PersistenceModule } from 'src/common/persistence/persistence.module'; import { EndpointsServicesModule } from 'src/endpoints/endpoints.services.module'; import { ElasticUpdaterService } from './elastic.updater.service'; +import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; @Module({ imports: [ @@ -11,6 +12,7 @@ import { ElasticUpdaterService } from './elastic.updater.service'; EndpointsServicesModule, AssetsModule, forwardRef(() => PersistenceModule), + ApiMetricsModule, ], providers: [ ElasticUpdaterService, diff --git a/src/crons/status.checker/status.checker.module.ts b/src/crons/status.checker/status.checker.module.ts index d219aa80e..0586952ba 100644 --- a/src/crons/status.checker/status.checker.module.ts +++ b/src/crons/status.checker/status.checker.module.ts @@ -4,11 +4,13 @@ import { ElasticIndexerService } from "src/common/indexer/elastic/elastic.indexe import { EndpointsServicesModule } from "src/endpoints/endpoints.services.module"; import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; import { StatusCheckerService } from "./status.checker.service"; +import { ApiMetricsModule } from "src/common/metrics/api.metrics.module"; @Module({ imports: [ ScheduleModule.forRoot(), EndpointsServicesModule, + ApiMetricsModule, ], providers: [ DynamicModuleUtils.getPubSubService(), diff --git a/src/crons/transaction.processor/batch.transaction.processor.module.ts b/src/crons/transaction.processor/batch.transaction.processor.module.ts index 5cc7bd809..10dfece28 100644 --- a/src/crons/transaction.processor/batch.transaction.processor.module.ts +++ b/src/crons/transaction.processor/batch.transaction.processor.module.ts @@ -5,6 +5,7 @@ import { TransactionsBatchModule } from "src/endpoints/transactions.batch/transa import { TransactionModule } from "src/endpoints/transactions/transaction.module"; import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; import { BatchTransactionProcessorService } from "./batch.transaction.processor.service"; +import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; @Module({ imports: [ @@ -13,6 +14,7 @@ import { BatchTransactionProcessorService } from "./batch.transaction.processor. DynamicModuleUtils.getCacheModule(), TransactionsBatchModule, TransactionModule, + ApiMetricsModule, ], providers: [ DynamicModuleUtils.getPubSubService(), diff --git a/src/crons/transaction.processor/transaction.processor.module.ts b/src/crons/transaction.processor/transaction.processor.module.ts index 60ae29ec2..ef3df67c6 100644 --- a/src/crons/transaction.processor/transaction.processor.module.ts +++ b/src/crons/transaction.processor/transaction.processor.module.ts @@ -4,7 +4,9 @@ import { NftModule } from 'src/endpoints/nfts/nft.module'; import { NodeModule } from 'src/endpoints/nodes/node.module'; import { ShardModule } from 'src/endpoints/shards/shard.module'; import { TransactionModule } from 'src/endpoints/transactions/transaction.module'; -import { NftWorkerModule } from 'src/queue.worker/nft.worker/nft.worker.module'; import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; +import { NftWorkerModule } from 'src/queue.worker/nft.worker/nft.worker.module'; +import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; +import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; import { TransactionProcessorService } from './transaction.processor.service'; @Module({ @@ -15,6 +17,7 @@ import { TransactionProcessorService } from './transaction.processor.service'; NodeModule, NftModule, NftWorkerModule, + ApiMetricsModule, ], providers: [ DynamicModuleUtils.getPubSubService(), diff --git a/src/crons/websocket/websocket.subscription.module.ts b/src/crons/websocket/websocket.subscription.module.ts index 750cccfd9..8146dc3a6 100644 --- a/src/crons/websocket/websocket.subscription.module.ts +++ b/src/crons/websocket/websocket.subscription.module.ts @@ -18,6 +18,7 @@ import { EventsCustomGateway } from './events.custom.gateway'; import { ApiConfigModule } from 'src/common/api-config/api.config.module'; import { TransfersCustomGateway } from './transfers.custom.gateway'; import { TransferModule } from 'src/endpoints/transfers/transfer.module'; +import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; @Module({ imports: [ @@ -30,6 +31,7 @@ import { TransferModule } from 'src/endpoints/transfers/transfer.module'; RoundModule, TransferModule, ApiConfigModule, + ApiMetricsModule, ], providers: [ WebsocketCronService, diff --git a/src/queue.worker/nft.worker/queue/nft.queue.module.ts b/src/queue.worker/nft.worker/queue/nft.queue.module.ts index c63f6c984..e2e42c4da 100644 --- a/src/queue.worker/nft.worker/queue/nft.queue.module.ts +++ b/src/queue.worker/nft.worker/queue/nft.queue.module.ts @@ -3,11 +3,13 @@ import { NftQueueController } from './nft.queue.controller'; import { NftJobProcessorModule } from './job-services/nft.job.processor.module'; import { NftModule } from 'src/endpoints/nfts/nft.module'; import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; +import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; @Module({ imports: [ NftJobProcessorModule, NftModule, + ApiMetricsModule, ], providers: [ DynamicModuleUtils.getPubSubService(), From 3b40302e823cdae890da43c8a35f02168085fb41 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 20 May 2026 14:36:41 +0300 Subject: [PATCH 171/206] remove logs + comment --- src/common/metrics/api.metrics.service.ts | 1 - .../transaction.processor/transaction.processor.service.ts | 1 - src/endpoints/mex/mex.module.ts | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/common/metrics/api.metrics.service.ts b/src/common/metrics/api.metrics.service.ts index 07fa42cba..5f78bfb24 100644 --- a/src/common/metrics/api.metrics.service.ts +++ b/src/common/metrics/api.metrics.service.ts @@ -184,7 +184,6 @@ export class ApiMetricsService { @OnEvent(MetricsEvents.SetLastProcessedNonce) setLastProcessedNonce(payload: LogMetricsEvent) { const [shardId, nonce] = payload.args; - console.log(`Setting last processed nonce for shard ${shardId} to ${nonce}...`); ApiMetricsService.lastProcessedNonceGauge.set({ shardId }, nonce); } diff --git a/src/crons/transaction.processor/transaction.processor.service.ts b/src/crons/transaction.processor/transaction.processor.service.ts index 1379f3218..511f67982 100644 --- a/src/crons/transaction.processor/transaction.processor.service.ts +++ b/src/crons/transaction.processor/transaction.processor.service.ts @@ -71,7 +71,6 @@ export class TransactionProcessorService { }, setLastProcessedNonce: async (shardId, nonce) => { const event = new LogMetricsEvent(); - console.log(`Emitting event to set last processed nonce for shard ${shardId} to ${nonce}`); event.args = [shardId, nonce]; this.eventEmitter.emit( MetricsEvents.SetLastProcessedNonce, diff --git a/src/endpoints/mex/mex.module.ts b/src/endpoints/mex/mex.module.ts index 0fabfe665..dbb1ac4a5 100644 --- a/src/endpoints/mex/mex.module.ts +++ b/src/endpoints/mex/mex.module.ts @@ -10,7 +10,7 @@ import { MexTokenChartsService } from "./mex.token.charts.service"; import { MexTokenService } from "./mex.token.service"; import { MexWarmerService } from "./mex.warmer.service"; @Module({ - imports: [GraphQlModule], // mutat aici + imports: [GraphQlModule], providers: [ MexEconomicsService, MexSettingsService, From 49a3ca0f82bb86f080ff6997357f90e1a2396b80 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 22 May 2026 16:21:43 +0300 Subject: [PATCH 172/206] use latest patch for sdk-nestjs --- package-lock.json | 1844 ++++++++++++++------------------------------- package.json | 16 +- 2 files changed, 588 insertions(+), 1272 deletions(-) diff --git a/package-lock.json b/package-lock.json index 12fafdd2f..bdee78681 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,14 +14,14 @@ "@golevelup/nestjs-rabbitmq": "^9.0.0", "@multiversx/sdk-core": "^15.4.0", "@multiversx/sdk-exchange": "^0.2.24", - "@multiversx/sdk-nestjs-auth": "7.0.0", - "@multiversx/sdk-nestjs-cache": "7.0.0", - "@multiversx/sdk-nestjs-common": "7.0.0", - "@multiversx/sdk-nestjs-elastic": "7.0.0", - "@multiversx/sdk-nestjs-http": "7.0.0", - "@multiversx/sdk-nestjs-monitoring": "7.0.0", - "@multiversx/sdk-nestjs-rabbitmq": "7.0.0", - "@multiversx/sdk-nestjs-redis": "7.0.0", + "@multiversx/sdk-nestjs-auth": "^7.0.0", + "@multiversx/sdk-nestjs-cache": "^7.0.0", + "@multiversx/sdk-nestjs-common": "^7.0.0", + "@multiversx/sdk-nestjs-elastic": "^7.0.0", + "@multiversx/sdk-nestjs-http": "^7.0.0", + "@multiversx/sdk-nestjs-monitoring": "^7.0.0", + "@multiversx/sdk-nestjs-rabbitmq": "^7.0.0", + "@multiversx/sdk-nestjs-redis": "^7.0.0", "@multiversx/sdk-transaction-processor": "^0.1.35", "@nestjs/apollo": "^13.3.0", "@nestjs/common": "^11.1.19", @@ -122,9 +122,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", - "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.5.0.tgz", + "integrity": "sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==", "dev": true, "license": "MIT" }, @@ -624,19 +624,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", @@ -652,19 +639,6 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", @@ -699,79 +673,29 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1045.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1045.0.tgz", - "integrity": "sha512-fsuO3Y6t+3Ro9Bsg41DKj4Sfy53CGSrhnMldNplWmG8Tx0UbYk+YDa4RD1hVlJpERw4JBmPkl0+J9qlxMh1pcA==", + "version": "3.1052.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1052.0.tgz", + "integrity": "sha512-8fgQHfk1WjGUyowyqtMwq9HzZvIQQ86cqn9IZW5Qkq8kaolVjMmZez60qVYxKYvKhVRYUP5hWYPVCyraoud0AA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/credential-provider-node": "^3.972.39", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.10", - "@aws-sdk/middleware-expect-continue": "^3.972.10", - "@aws-sdk/middleware-flexible-checksums": "^3.974.16", - "@aws-sdk/middleware-host-header": "^3.972.10", - "@aws-sdk/middleware-location-constraint": "^3.972.10", - "@aws-sdk/middleware-logger": "^3.972.10", - "@aws-sdk/middleware-recursion-detection": "^3.972.11", - "@aws-sdk/middleware-sdk-s3": "^3.972.37", - "@aws-sdk/middleware-ssec": "^3.972.10", - "@aws-sdk/middleware-user-agent": "^3.972.38", - "@aws-sdk/region-config-resolver": "^3.972.13", - "@aws-sdk/signature-v4-multi-region": "^3.996.25", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.8", - "@aws-sdk/util-user-agent-browser": "^3.972.10", - "@aws-sdk/util-user-agent-node": "^3.973.24", - "@smithy/config-resolver": "^4.4.17", - "@smithy/core": "^3.23.17", - "@smithy/eventstream-serde-browser": "^4.2.14", - "@smithy/eventstream-serde-config-resolver": "^4.3.14", - "@smithy/eventstream-serde-node": "^4.2.14", - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/hash-blob-browser": "^4.2.15", - "@smithy/hash-node": "^4.2.14", - "@smithy/hash-stream-node": "^4.2.14", - "@smithy/invalid-dependency": "^4.2.14", - "@smithy/md5-js": "^4.2.14", - "@smithy/middleware-content-length": "^4.2.14", - "@smithy/middleware-endpoint": "^4.4.32", - "@smithy/middleware-retry": "^4.5.7", - "@smithy/middleware-serde": "^4.2.20", - "@smithy/middleware-stack": "^4.2.14", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/protocol-http": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.49", - "@smithy/util-defaults-mode-node": "^4.2.54", - "@smithy/util-endpoints": "^3.4.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.3.0", + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/credential-provider-node": "^3.972.44", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.15", + "@aws-sdk/middleware-expect-continue": "^3.972.13", + "@aws-sdk/middleware-flexible-checksums": "^3.974.21", + "@aws-sdk/middleware-location-constraint": "^3.972.11", + "@aws-sdk/middleware-sdk-s3": "^3.972.42", + "@aws-sdk/middleware-ssec": "^3.972.11", + "@aws-sdk/signature-v4-multi-region": "^3.996.28", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/fetch-http-handler": "^5.4.3", + "@smithy/node-http-handler": "^4.7.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -779,24 +703,18 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.974.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.8.tgz", - "integrity": "sha512-njR2qoG6ZuB0kvAS2FyICsFZJ6gmCcf2X/7JcD14sUvGDm26wiZ5BrA6LOiUxKFEF+IVe7kdroxyE00YlkiYsw==", + "version": "3.974.13", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.13.tgz", + "integrity": "sha512-+Y5/4tHki0uYgyx8eun146DegRVQBpdKGK5RbV0FTKJPpaKTchvqVxrrRFK6Wk0JksO4iAZKw3eqxGEIwtO98w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/xml-builder": "^3.972.22", - "@smithy/core": "^3.23.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/util-utf8": "^4.2.2", + "@aws-sdk/types": "^3.973.9", + "@aws-sdk/xml-builder": "^3.972.25", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/core": "^3.24.3", + "@smithy/signature-v4": "^5.4.2", + "@smithy/types": "^4.14.2", + "bowser": "^2.11.0", "tslib": "^2.6.2" }, "engines": { @@ -804,12 +722,12 @@ } }, "node_modules/@aws-sdk/crc64-nvme": { - "version": "3.972.7", - "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.7.tgz", - "integrity": "sha512-QUagVVBbC8gODCF6e1aV0mE2TXWB9Opz4k8EJFdNrujUVQm5R4AjJa1mpOqzwOuROBzqJU9zawzig7M96L8Ejg==", + "version": "3.972.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.9.tgz", + "integrity": "sha512-P+QGozmXn2mZZI7sDgk+aUm+RTI61MPSFB+Ir2vjEjEbEsE4e7hYtzrDvAUxZy9ko81h53e11+F/GYlvwDkaOQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.1", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -817,15 +735,15 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.34", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.34.tgz", - "integrity": "sha512-XT0jtf8Fw9JE6ppsQeoNnZRiG+jqRixMT1v1ZR17G60UvVdsQmTG8nbEyHuEPfMxDXEhfdARaM/XiEhca4lGHQ==", + "version": "3.972.39", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.39.tgz", + "integrity": "sha512-29wX9zpAvEt1vcj0psha+y6ygBHy2V/S72mp6e7q0KARLWXq+pwE/lR6qGkwknQvruh52lXvlqZIga8Hdxkucw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -833,20 +751,17 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.36", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.36.tgz", - "integrity": "sha512-DPoGWfy7J7RKxvbf5kOKIGQkD2ek3dbKgzKIGrnLuvZBz5myU+Im/H6pmc14QcnFbqHMqxvtWSgRDSJW3qXLQg==", + "version": "3.972.41", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.41.tgz", + "integrity": "sha512-IA3CQTjtJkb6u1H4mE4936c8OPBMa9Jggtwe8U2Mqw/vvb/tZ5Ebd0mcZcX0uKWQhOyYo/+qNIwkV5Xh+FeJJA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/util-stream": "^4.5.25", + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/fetch-http-handler": "^5.4.3", + "@smithy/node-http-handler": "^4.7.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -854,24 +769,23 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.38.tgz", - "integrity": "sha512-oDzUBu2MGJFgoar05sPMCwSrhw44ASyccrHzj66vO69OZqi7I6hZZxXfuPLC8OCzW7C+sU+bI73XHij41yekgQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/credential-provider-env": "^3.972.34", - "@aws-sdk/credential-provider-http": "^3.972.36", - "@aws-sdk/credential-provider-login": "^3.972.38", - "@aws-sdk/credential-provider-process": "^3.972.34", - "@aws-sdk/credential-provider-sso": "^3.972.38", - "@aws-sdk/credential-provider-web-identity": "^3.972.38", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/types": "^3.973.8", - "@smithy/credential-provider-imds": "^4.2.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", + "version": "3.972.43", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.43.tgz", + "integrity": "sha512-4mzII+3mZEVXXE1xzrLQrCJL7/r62A63bA6SVzZoNL5rqCJghpf+xgGltVrIBBs0n+mOZBKrQl2tRREtvZ5l6A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/credential-provider-env": "^3.972.39", + "@aws-sdk/credential-provider-http": "^3.972.41", + "@aws-sdk/credential-provider-login": "^3.972.43", + "@aws-sdk/credential-provider-process": "^3.972.39", + "@aws-sdk/credential-provider-sso": "^3.972.43", + "@aws-sdk/credential-provider-web-identity": "^3.972.43", + "@aws-sdk/nested-clients": "^3.997.11", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/credential-provider-imds": "^4.3.2", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -879,18 +793,16 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.38.tgz", - "integrity": "sha512-g1NosS8qe4OF++G2UFCM5ovSkgipC7YYor5KCWatG0UoMSO5YFj9C8muePlyVmOBV/WTI16Jo3/s1NUo/o1Bww==", + "version": "3.972.43", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.43.tgz", + "integrity": "sha512-HG7kQCwXtbv3oBV61Ins0oNX8KKyvrMqqRkb6ZiAfQHbMuHaiNaEb2KnpKLPkNpqImSBK82UkVE/kaY6IfWikA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/nested-clients": "^3.997.11", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -898,22 +810,21 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.39", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.39.tgz", - "integrity": "sha512-HEswDQyxUtadoZ/bJsPPENHg7R0Lzym5LuMksJeHvqhCOpP+rtkDLKI4/ZChH4w3cf5kG8n6bZuI8PzajoiqMg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.34", - "@aws-sdk/credential-provider-http": "^3.972.36", - "@aws-sdk/credential-provider-ini": "^3.972.38", - "@aws-sdk/credential-provider-process": "^3.972.34", - "@aws-sdk/credential-provider-sso": "^3.972.38", - "@aws-sdk/credential-provider-web-identity": "^3.972.38", - "@aws-sdk/types": "^3.973.8", - "@smithy/credential-provider-imds": "^4.2.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", + "version": "3.972.44", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.44.tgz", + "integrity": "sha512-sDaBIT0yrNNIPfvlsiTCmANm07zKju+ipWODjEXgZlsjMeIJR3LVp7RDyAOzUoAsTbDfYKDWp+i5WrFiQP6rmQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "^3.972.39", + "@aws-sdk/credential-provider-http": "^3.972.41", + "@aws-sdk/credential-provider-ini": "^3.972.43", + "@aws-sdk/credential-provider-process": "^3.972.39", + "@aws-sdk/credential-provider-sso": "^3.972.43", + "@aws-sdk/credential-provider-web-identity": "^3.972.43", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/credential-provider-imds": "^4.3.2", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -921,16 +832,15 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.34", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.34.tgz", - "integrity": "sha512-T3IFs4EVmVi1dVN5RciFnklCANSzvrQd/VuHY9ThHSQmYkTogjcGkoJEr+oNUPQZnso52183088NqysMPji1/Q==", + "version": "3.972.39", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.39.tgz", + "integrity": "sha512-2k/amBifLd75eXNwgvPw/2lKYSQ3NhvHQgkVKVjfUq13/eJ3JRtHmznuFenn74OK3sSfp4SMy1YB2w+UVXoKqA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -938,18 +848,17 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.38.tgz", - "integrity": "sha512-5ZxG+t0+3Q3QPh8KEjX6syskhgNf7I0MN7oGioTf6Lm1NTjfP7sIcYGNsthXC2qR8vcD3edNZwCr2ovfSSWuRA==", + "version": "3.972.43", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.43.tgz", + "integrity": "sha512-LPc3+Y4vhH1T4x6CMqwCM6hk5+SRf/Lwmgm8INm95wxTtIRHcMwQUVkDzWu4Iw/RSncxYM2BC01OrYbxOPZvyg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/token-providers": "3.1041.0", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/nested-clients": "^3.997.11", + "@aws-sdk/token-providers": "3.1052.0", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -957,17 +866,16 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.38.tgz", - "integrity": "sha512-lYHFF30DGI20jZcYX8cm6Ns0V7f1dDN6g/MBDLTyD/5iw+bXs3yBr2iAiHDkx4RFU5JgsnZvCHYKiRVPRdmOgw==", + "version": "3.972.43", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.43.tgz", + "integrity": "sha512-wQtL34lUD/09VXjwAUo2T+I3aEXRDxMB3DKmTJL/Zj0Gi6sLDTrVhae1XVt01yzkquOWajI/sZW72JGDZ1ciTw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/nested-clients": "^3.997.11", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -975,17 +883,15 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.10.tgz", - "integrity": "sha512-Vbc2frZH7wXlMNd+ZZSXUEs/l1Sv8Jj4zUnIfwrYF5lwaLdXHZ9xx4U3rjUcaye3HRhFVc+E5DbBxpRAbB16BA==", + "version": "3.972.15", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.15.tgz", + "integrity": "sha512-O2HDANa+MrvbxpaRVQDiH3T13uAa9AkMjKyZmDygwauAmmvqZ5B0iRmKW+fuVGW6NPXuyXurFgIx69lSvmAWGA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-arn-parser": "^3.972.3", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -993,14 +899,14 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.10.tgz", - "integrity": "sha512-2Yn0f1Qiq/DjxYR3wfI3LokXnjOhFM7Ssn4LTdFDIxRMCE6I32MAsVnhPX1cUZsuVA9tiZtwwhlSLAtFGxAZlQ==", + "version": "3.972.13", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.13.tgz", + "integrity": "sha512-sHiqIFg8o2ipT7t40B89Vj0ubSUtY6OSt/+Ee/OXhHch5K4+81zP2+QX8Lkc/nJ2QSmCySxOke7TEbmX69fe2g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -1008,39 +914,19 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.974.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.16.tgz", - "integrity": "sha512-6ru8doI0/XzszqLIPXf0E/V7HhAw1Pu94010XCKYtBUfD0LxF0BuOzrUf8OQGR6j2o6wgKTHUniOmndQycHwCA==", + "version": "3.974.21", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.21.tgz", + "integrity": "sha512-alAu9heyiBK/OmRNXVxq8mmPTgeW2AQ6EYjRsI38kPZa1MZvt2Jh+BlGq7/GG9OVXOaEgD7DlGj/Lzfy5OmuEg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/crc64-nvme": "^3.972.7", - "@aws-sdk/types": "^3.973.8", - "@smithy/is-array-buffer": "^4.2.2", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.10.tgz", - "integrity": "sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/crc64-nvme": "^3.972.9", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -1048,43 +934,13 @@ } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.10.tgz", - "integrity": "sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz", - "integrity": "sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { "version": "3.972.11", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.11.tgz", - "integrity": "sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.11.tgz", + "integrity": "sha512-hkfspNUP4criAH6ton6BGKgnm5dZx+7bUOy1YqlTfejDeUPAM23D81q/IX+hdlS3KUsfwGz5ADTqZWKBEUpf4A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", + "@aws-sdk/types": "^3.973.9", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -1092,24 +948,17 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.37", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.37.tgz", - "integrity": "sha512-Km7M+i8DrLArVzrid1gfxeGhYHBd3uxvE77g0s5a52zPSVosxzQBnJ0gwWb6NIp/DOk8gsBMhi7V+cpJG0ndTA==", + "version": "3.972.42", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.42.tgz", + "integrity": "sha512-/xNqNGXv9LaxZd25L9VV4pnSOw9OdDNO4rAHamM+h3KQBSITljIH9vk3dveGga1I2j36lQd0rdG3gjNEXvtNew==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-arn-parser": "^3.972.3", - "@smithy/core": "^3.23.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/signature-v4-multi-region": "^3.996.28", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/signature-v4": "^5.4.2", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -1117,32 +966,13 @@ } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.10.tgz", - "integrity": "sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.38.tgz", - "integrity": "sha512-iz+B29TXcAZsJpwB+AwG/TTGA5l/VnmMZ2UxtiySOZjI6gCdmviXPwdgzcmuazMy16rXoPY4mYCGe7zdNKfx5A==", + "version": "3.972.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.11.tgz", + "integrity": "sha512-7PQvGNhtveKlvVqNahqWx5yrwxP7ecwAoB1dYBf8eKwfo2tzzCbNnW+q2nO3N066ktQaB4iBQbDRWtizm+amoQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.8", - "@smithy/core": "^3.23.17", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-retry": "^4.3.6", + "@aws-sdk/types": "^3.973.9", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -1150,65 +980,20 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.6.tgz", - "integrity": "sha512-WBDnqatJl+kGObpfmfSxqnXeYTu3Me8wx8WCtvoxX3pfWrrTv8I4WTMSSs7PZqcRcVh8WeUKMgGFjMG+52SR1w==", + "version": "3.997.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.11.tgz", + "integrity": "sha512-nWXXJ1r/r8N2Gw1pWolRgED38/A9A8DHR2ETWIv220zh4PZHcybbR4hUVWWktmNXTRHzDJwRluapHn0rZxuoqA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/middleware-host-header": "^3.972.10", - "@aws-sdk/middleware-logger": "^3.972.10", - "@aws-sdk/middleware-recursion-detection": "^3.972.11", - "@aws-sdk/middleware-user-agent": "^3.972.38", - "@aws-sdk/region-config-resolver": "^3.972.13", - "@aws-sdk/signature-v4-multi-region": "^3.996.25", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.8", - "@aws-sdk/util-user-agent-browser": "^3.972.10", - "@aws-sdk/util-user-agent-node": "^3.973.24", - "@smithy/config-resolver": "^4.4.17", - "@smithy/core": "^3.23.17", - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/hash-node": "^4.2.14", - "@smithy/invalid-dependency": "^4.2.14", - "@smithy/middleware-content-length": "^4.2.14", - "@smithy/middleware-endpoint": "^4.4.32", - "@smithy/middleware-retry": "^4.5.7", - "@smithy/middleware-serde": "^4.2.20", - "@smithy/middleware-stack": "^4.2.14", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/protocol-http": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.49", - "@smithy/util-defaults-mode-node": "^4.2.54", - "@smithy/util-endpoints": "^3.4.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.13.tgz", - "integrity": "sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/config-resolver": "^4.4.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/signature-v4-multi-region": "^3.996.28", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/fetch-http-handler": "^5.4.3", + "@smithy/node-http-handler": "^4.7.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -1216,16 +1001,15 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.25", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.25.tgz", - "integrity": "sha512-+CMIt3e1VzlklAECmG+DtP1sV8iKq25FuA0OKpnJ4KA0kxUtd7CgClY7/RU6VzJBQwbN4EJ9Ue6plvqx1qGadw==", + "version": "3.996.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.28.tgz", + "integrity": "sha512-qs9z5LqXO/CZC2Lg9SGKpoLU8Rhi+m2pFKZqfO9pytX1clc0katqtsDNupJxFy0xT9wsZSPzM2v1y+/H/zfp5Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "^3.972.37", - "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", - "@smithy/types": "^4.14.1", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/signature-v4": "^5.4.2", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -1233,17 +1017,16 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1041.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1041.0.tgz", - "integrity": "sha512-Th7kPI6YPtvJUcdznooXJMy+9rQWjmEF81LxaJssngBzuysK4a/x+l8kjm1zb7nYsUPbndnBdUnwng/3PLvtGw==", + "version": "3.1052.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1052.0.tgz", + "integrity": "sha512-QqZNB3so7UIDxZtroc85TQaLVxdZRFm0eWM1CSR2N+b06as9TOrilvrlTZuj3guYlxMs6yLOgGxnklJ5qMYtTw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", + "@aws-sdk/core": "^3.974.13", + "@aws-sdk/nested-clients": "^3.997.11", + "@aws-sdk/types": "^3.973.9", + "@smithy/core": "^3.24.3", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -1251,40 +1034,12 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.973.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", - "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.972.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", - "integrity": "sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==", + "version": "3.973.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.9.tgz", + "integrity": "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg==", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.8.tgz", - "integrity": "sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-endpoints": "^3.4.2", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { @@ -1303,52 +1058,15 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.10.tgz", - "integrity": "sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.973.24", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.24.tgz", - "integrity": "sha512-ZWwlkjcIp7cEL8ZfTpTAPNkwx25p7xol0xlKoWVVf22+nsjwmLcHYtTPjIV1cSpmB/b6DaK4cb1fSkvCXHgRdw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.38", - "@aws-sdk/types": "^3.973.8", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.22", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.22.tgz", - "integrity": "sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA==", + "version": "3.972.25", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.25.tgz", + "integrity": "sha512-GH+Kjz4nPKWKHnsiQpnhP1MJdTGIcK4rAka6tzakgjjUkVgNsmPeEbbRAf09SzS1hjGu6duGHCBsxYke0BhHjQ==", "license": "Apache-2.0", "dependencies": { "@nodable/entities": "2.1.0", - "@smithy/types": "^4.14.1", - "fast-xml-parser": "5.7.2", + "@smithy/types": "^4.14.2", + "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" }, "engines": { @@ -1984,9 +1702,9 @@ } }, "node_modules/@datadog/native-metrics": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@datadog/native-metrics/-/native-metrics-3.1.1.tgz", - "integrity": "sha512-MU1gHrolwryrU4X9g+fylA1KPH3S46oqJPEtVyrO+3Kh29z80fegmtyrU22bNt8LigPUK/EdPCnSbMe88QbnxQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@datadog/native-metrics/-/native-metrics-3.1.2.tgz", + "integrity": "sha512-7AEWt0ZLr/ogR/9if1DmFBDTg3y67xM+gdhXUXKs+UQMxK0lnjrOHgN7fkpEmUG1uL+EkX2BDE3ENDlQ23J7OQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -2153,32 +1871,32 @@ } }, "node_modules/@golevelup/nestjs-discovery": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-7.0.0.tgz", - "integrity": "sha512-l2O4qokytyBwTqNKNOv3OITdJtYfV0f6eLqR5c0brS1Hy4MV4h9YXy+o534yczOcxWnDfeATArDpLxz88wonSQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-7.0.1.tgz", + "integrity": "sha512-dGQ6FbEk1TPS1jdnjUN9qiNrHyjvacIEFY6KgAwHjGvwihctVQ4N8eM/28wF1G9gYJ0reBG+HBZGyJ6FyZr3GQ==", "license": "MIT", "dependencies": { - "lodash": "^4.17.23" + "lodash": "^4.18.1" }, "peerDependencies": { - "@nestjs/common": "^11.1.17", - "@nestjs/core": "^11.1.17" + "@nestjs/common": "^11.1.21", + "@nestjs/core": "^11.1.21" } }, "node_modules/@golevelup/nestjs-rabbitmq": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@golevelup/nestjs-rabbitmq/-/nestjs-rabbitmq-9.0.0.tgz", - "integrity": "sha512-sPQuLk73ZqHSO9fs9+WvYRYh56cQZWNsnIhGcthVgADCb2gzzflVYFqMgOyP+ZbUDvdrahw6RXeC0Vn9nTLtNw==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@golevelup/nestjs-rabbitmq/-/nestjs-rabbitmq-9.0.2.tgz", + "integrity": "sha512-fuU+EMErNA50uPZ9npKsBtBpi76OBLAJah2plyZYjTKcZKygI06yKoKmekUnFiy2U6IMBzMf0qc4fZLqGtLEeg==", "license": "MIT", "dependencies": { - "@golevelup/nestjs-discovery": "^7.0.0", + "@golevelup/nestjs-discovery": "^7.0.1", "amqp-connection-manager": "^5.0.0", "amqplib": "^0.10.9", - "lodash": "^4.17.23" + "lodash": "^4.18.1" }, "peerDependencies": { - "@nestjs/common": "^11.1.17", - "@nestjs/core": "^11.1.17", + "@nestjs/common": "^11.1.21", + "@nestjs/core": "^11.1.21", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1" } @@ -3813,9 +3531,9 @@ } }, "node_modules/@multiversx/sdk-core": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-core/-/sdk-core-15.4.0.tgz", - "integrity": "sha512-WzCy/dipvwGo93JrZ3JaFOqiN5m/nkBavPTLqwpajDcvVuA/VHhX69QGoxd3db/6vc1N2KixfIQv9bEa+BACtQ==", + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-core/-/sdk-core-15.4.1.tgz", + "integrity": "sha512-1G/GS7fwED9Pl0NpwbcdXSi+986ey/OUGZycWuDCXPMMWx/qFQ0V5YMEotEqma8UM7uioVW3O5AnI7+EWOmsnQ==", "license": "MIT", "dependencies": { "@multiversx/sdk-transaction-decoder": "1.0.2", @@ -3834,12 +3552,12 @@ }, "optionalDependencies": { "@multiversx/sdk-bls-wasm": "0.3.5", - "axios": "^1.10.0", + "axios": "^1.15.2", "bip39": "3.1.0" }, "peerDependencies": { "bignumber.js": "^9.0.1", - "protobufjs": "^7.2.6" + "protobufjs": "^7.5.6" } }, "node_modules/@multiversx/sdk-exchange": { @@ -3920,9 +3638,9 @@ "license": "MIT" }, "node_modules/@multiversx/sdk-nestjs-auth": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-auth/-/sdk-nestjs-auth-7.0.0.tgz", - "integrity": "sha512-cANpRJpLjzmJt7gOjU++k9apOu4KaNlfyo48NmBJXDlR7rFPOLCrXc75OMfh6h9tFbb8w0Oad1wN9bymQzpPYA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-auth/-/sdk-nestjs-auth-7.0.1.tgz", + "integrity": "sha512-cN/Zt1L44hhtr7gtkVVW7HqPf5awytpab4n7l41169IqSpwBjpQan4sVUwCAVJfTHsG39GOsx411+KLBykooxQ==", "license": "MIT", "dependencies": { "@multiversx/sdk-core": "^15.4.0", @@ -3937,9 +3655,9 @@ } }, "node_modules/@multiversx/sdk-nestjs-cache": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-cache/-/sdk-nestjs-cache-7.0.0.tgz", - "integrity": "sha512-0T2JPao12yt/stB70zMYwqcftLTtIRfr7ZaVASYnivVp0bP6j5jB0QPL52gGTgx+x42ArdY6ymdfaoy08IGsDA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-cache/-/sdk-nestjs-cache-7.0.1.tgz", + "integrity": "sha512-CxhKoCiOLhKje4KoHvVkomnLf7awZgZekSteEuByEx4V5yu+Z1SSiU88aVkODsEymIWiK1V4cFe5w+QgVN3FWg==", "license": "MIT", "dependencies": { "lru-cache": "^11.3.5", @@ -3962,9 +3680,9 @@ "license": "MIT" }, "node_modules/@multiversx/sdk-nestjs-common": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-common/-/sdk-nestjs-common-7.0.0.tgz", - "integrity": "sha512-f1vi68NSXe3XNuNwwM26W/+c4HsHmhVW6TQEzf/CqFCD2NCW3vWkt8cejZpJynVpgNM2hjGuxMDvy/x9Avkz7g==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-common/-/sdk-nestjs-common-7.0.1.tgz", + "integrity": "sha512-Ptdo6r6/IlvqMEtCRsWssiGyh1YiYyDiep5LZaG+/yXLysUUiOkfVK83V2qqS2Ms3gT0tFiRWcenltUjUbIzOQ==", "license": "MIT", "dependencies": { "@multiversx/sdk-core": "^15.4.0", @@ -3981,9 +3699,9 @@ } }, "node_modules/@multiversx/sdk-nestjs-elastic": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-elastic/-/sdk-nestjs-elastic-7.0.0.tgz", - "integrity": "sha512-lPbI7f3zcTz9Z7m/ch6NXmfTLZ/IAPNj5vvm8wus2NKxF/Lwm3sqB+V98P9Vm7dxxTq32zqgn21wlMKyVl7C6w==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-elastic/-/sdk-nestjs-elastic-7.0.1.tgz", + "integrity": "sha512-4sFCBl5iFG/WBN7alEIgzOh9/WotPBj+XI3e0WbafIAOmrq6RMFd0rO1ZxwloNgtlWBWtznfmL+T9JPUcQoINw==", "license": "MIT", "peerDependencies": { "@multiversx/sdk-nestjs-http": "^7.0.0", @@ -3991,9 +3709,9 @@ } }, "node_modules/@multiversx/sdk-nestjs-http": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-http/-/sdk-nestjs-http-7.0.0.tgz", - "integrity": "sha512-ohgvvEvWDC+aRdngZ1anSRfY+i0biOCD0y3mwGVl+Z//5JzSOr6wqXnzahmOSa2TtiDc3wyaHYa0xX2aiobbVQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-http/-/sdk-nestjs-http-7.0.1.tgz", + "integrity": "sha512-8u9s6dU90YeJqE62PIRhBWe4YM6C03a/5odxU7icXhHHVXKm+f3Hu9FTiQrQXXhYpiaUQSTNwkWjkaNw2no+ZQ==", "license": "MIT", "dependencies": { "@multiversx/sdk-core": "^15.4.0", @@ -4009,9 +3727,9 @@ } }, "node_modules/@multiversx/sdk-nestjs-monitoring": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-monitoring/-/sdk-nestjs-monitoring-7.0.0.tgz", - "integrity": "sha512-mf9QvZhQu+xV6FZEB1SOfAJDJYUeBq15NprbYEAAwnzFrP5mC61Luz35svhF/oMNxUJcgWWNNbRESZrLpYYuBg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-monitoring/-/sdk-nestjs-monitoring-7.0.1.tgz", + "integrity": "sha512-drh4RAvon1FRpXEgTWBVAO2WY2NjmkWGQ6lUAu9m4K+2omKsxmudegK9sWmzjdibpFo4U4+xDqmdD6sJAptF2g==", "license": "MIT", "dependencies": { "prom-client": "^15.1.3", @@ -4054,9 +3772,9 @@ } }, "node_modules/@multiversx/sdk-nestjs-rabbitmq": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-rabbitmq/-/sdk-nestjs-rabbitmq-7.0.0.tgz", - "integrity": "sha512-+sHNCoVDbOJqWKxipja0fNZ/Lw6FXoXxXApyyEPIx1cqXzY1fbRmoE52pTepHJBcKW3fLe6F6kTKQeFdmgfXtg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-rabbitmq/-/sdk-nestjs-rabbitmq-7.0.1.tgz", + "integrity": "sha512-p7FNaCZHvE4hMAmoBCm2IEtWI2G/LjT1Ufxp1tF9Dcg0VWck2VqgXa6NFJErzYaHjUYZ53r7KTJtr40qhtCwXw==", "license": "MIT", "dependencies": { "@golevelup/nestjs-rabbitmq": "9.0.0", @@ -4067,10 +3785,44 @@ "@nestjs/common": "^11.x" } }, + "node_modules/@multiversx/sdk-nestjs-rabbitmq/node_modules/@golevelup/nestjs-rabbitmq": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@golevelup/nestjs-rabbitmq/-/nestjs-rabbitmq-9.0.0.tgz", + "integrity": "sha512-sPQuLk73ZqHSO9fs9+WvYRYh56cQZWNsnIhGcthVgADCb2gzzflVYFqMgOyP+ZbUDvdrahw6RXeC0Vn9nTLtNw==", + "license": "MIT", + "dependencies": { + "@golevelup/nestjs-discovery": "^7.0.0", + "amqp-connection-manager": "^5.0.0", + "amqplib": "^0.10.9", + "lodash": "^4.17.23" + }, + "peerDependencies": { + "@nestjs/common": "^11.1.17", + "@nestjs/core": "^11.1.17", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1" + } + }, + "node_modules/@multiversx/sdk-nestjs-rabbitmq/node_modules/amqp-connection-manager": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/amqp-connection-manager/-/amqp-connection-manager-5.0.0.tgz", + "integrity": "sha512-88yQzqa5RSBgnLl504XjvCQJ7d+osskdwvg35Lwm1LRbfLjNU9p7SQUMSP82BB7mseiq9tIUPJ3HE3eXQbpjEw==", + "license": "MIT", + "dependencies": { + "promise-breaker": "^6.0.0" + }, + "engines": { + "node": ">=10.0.0", + "npm": ">5.0.0" + }, + "peerDependencies": { + "amqplib": "*" + } + }, "node_modules/@multiversx/sdk-nestjs-redis": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-redis/-/sdk-nestjs-redis-7.0.0.tgz", - "integrity": "sha512-aJzKaXfF0ZnTzOnXeOf/ZkSQRD8amGSOV/wNVLSEoui4ViCjds47xkysfr/3CXJSqlqLGgN6S1lY6Gr5PMx45w==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-nestjs-redis/-/sdk-nestjs-redis-7.0.1.tgz", + "integrity": "sha512-ejni+2Qb1VyHvOcJBKkP8lp8oau6JFKe9LVC8kLQOFAFfv4Q2Cg3U8pXD9lhPwgh/4xds2KYontSmbRuRhkDpQ==", "license": "MIT", "dependencies": { "ioredis": "^5.10.1" @@ -4104,9 +3856,9 @@ } }, "node_modules/@nestjs/apollo": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@nestjs/apollo/-/apollo-13.4.0.tgz", - "integrity": "sha512-dXfgdBDUXl7OwJ/1t1yQtifhh9E21zTwB8Tayi/2xsBJYY5t0Bcfi/xyVYT6IxNDb5i8JpsiAJmnu7bTsvIIzw==", + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@nestjs/apollo/-/apollo-13.4.2.tgz", + "integrity": "sha512-kkIC7ini4a3ApJpOByfd0uqDH9rM4ndrn3prDd7JZD1xl81Thd/ekz3g0UvMJmtvsuCYtS36In/zayNo8GuMTA==", "license": "MIT", "dependencies": { "@apollo/server-plugin-landing-page-graphql-playground": "4.0.1", @@ -4309,9 +4061,9 @@ } }, "node_modules/@nestjs/common": { - "version": "11.1.19", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.19.tgz", - "integrity": "sha512-qeiTt2tv+e5QyDKqG8HlVZb2wx64FEaSGFJouqTSRs+kG44iTfl3xlz1XqVped+rihx4hmjWgL5gkhtdK3E6+Q==", + "version": "11.1.23", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.23.tgz", + "integrity": "sha512-qKgEqwQXHIVu8TwiISmgbTrGHAFBsseP86KNolBZwAiHQryinJ5FPiDpp0ZJBBryY+WEMnsqaCa4TSxVuQEWug==", "license": "MIT", "dependencies": { "file-type": "21.3.4", @@ -4355,9 +4107,9 @@ } }, "node_modules/@nestjs/core": { - "version": "11.1.19", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.19.tgz", - "integrity": "sha512-6nJkWa2efrYi+XlU686J9y5L7OvxpLVjT0T/sxRKE7Jvpffiihelup4WSvLvRhdHDjj/5SuoWEwqReXAaaeHmw==", + "version": "11.1.23", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.23.tgz", + "integrity": "sha512-Yd+mVFUilw4A6PzV7tyfiW+zrG2wmRXnFZVmNQA+fl1N0k6km4bhhNboxjLu//dzl+XiZI5AsOHHOTegzvOgNQ==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -4409,9 +4161,9 @@ } }, "node_modules/@nestjs/graphql": { - "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-13.4.0.tgz", - "integrity": "sha512-NXZbC7ZGT4hoqA1M57tXz3Y+FgRgtEMCjyTU20bLr/Ck6itGL0NsrnudmLdxrc8XGLGM+JwmhQ606o1oRyW6jg==", + "version": "13.4.2", + "resolved": "https://registry.npmjs.org/@nestjs/graphql/-/graphql-13.4.2.tgz", + "integrity": "sha512-MIaMIaV9o3Tj2LsoGGwhISTZVXEIfDK8rDXplE3tSYULj6cXSY1dofOSLMF/aY+BZLwlrN4BUUowgu8qNdDZFg==", "license": "MIT", "dependencies": { "@graphql-tools/merge": "9.1.9", @@ -4426,7 +4178,7 @@ "normalize-path": "3.0.0", "subscriptions-transport-ws": "0.11.0", "tslib": "2.8.1", - "ws": "8.20.0" + "ws": "8.20.1" }, "peerDependencies": { "@apollo/subgraph": "^2.9.3", @@ -4474,9 +4226,9 @@ } }, "node_modules/@nestjs/microservices": { - "version": "11.1.19", - "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-11.1.19.tgz", - "integrity": "sha512-3Oja56ydTlSaui19/i7gYM0MMqz/w4UR2aqZeL4K8B+Fq0Ztg3zHb8et76atToJGpSCevJLEsoEMOMaGgzRwfg==", + "version": "11.1.23", + "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-11.1.23.tgz", + "integrity": "sha512-iVPp3u274Xx6XAEbKPWDCzUHP6wlt7L7RXUIyIpf3caJ3ldFh/dG3uyHva1lgjHG+ukz+XCXafl1cx352TPW0w==", "license": "MIT", "dependencies": { "iterare": "1.2.1", @@ -4532,9 +4284,9 @@ } }, "node_modules/@nestjs/platform-express": { - "version": "11.1.19", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.19.tgz", - "integrity": "sha512-Vpdv8jyCQdThfoTx+UTn+DRYr6H6X02YUqcpZ3qP6G3ZUwtVp7eS+hoQPGd4UuCnlnFG8Wqr2J9bGEzQdi1rIg==", + "version": "11.1.23", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.23.tgz", + "integrity": "sha512-7TQ9v2Z9lej8btTYK1VUVB3nZr0lXFNFiyI/iOc0jAOg31dHdpAWtnMMm9iUvyAfq/ssw7dsBhjCHOmEJJKr0A==", "license": "MIT", "dependencies": { "cors": "2.8.6", @@ -4553,9 +4305,9 @@ } }, "node_modules/@nestjs/platform-socket.io": { - "version": "11.1.19", - "resolved": "https://registry.npmjs.org/@nestjs/platform-socket.io/-/platform-socket.io-11.1.19.tgz", - "integrity": "sha512-gu1nPIEaP5Qjjg/Cl8wXyvwGpdZGzgbtK4KcH65YRAA+GTKUkIHb4BNpLJ27Ymq/wqLJKNEbCjajfzD0BEjMGA==", + "version": "11.1.23", + "resolved": "https://registry.npmjs.org/@nestjs/platform-socket.io/-/platform-socket.io-11.1.23.tgz", + "integrity": "sha512-Rxemh9HpYMbv+jxkEeeIdLoIfYq7/fStCfj9p/QGfKzzbYip+M4JicCR/2hBndB+M0lEoV0KmsFlQRbVC48gcg==", "license": "MIT", "dependencies": { "socket.io": "4.8.3", @@ -4608,9 +4360,9 @@ } }, "node_modules/@nestjs/swagger": { - "version": "11.4.2", - "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-11.4.2.tgz", - "integrity": "sha512-aBihEogDMj/bLEcaqhkvyX/ZVWUw/bmnhKzR0zwUoyGJikvZyaq7rOPYl/H7Lxkkr3c90SJxyuv1AX2UT1WKlw==", + "version": "11.4.4", + "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-11.4.4.tgz", + "integrity": "sha512-VaIo1ruV2G7b+f2zPzkBSUNy9a/WQ9sg8TLKhWlrTfg4O6U10M/PA7Xi6XMXadOVhwOqoesijba8jH3i/3adrA==", "license": "MIT", "dependencies": { "@microsoft/tsdoc": "0.16.0", @@ -4618,7 +4370,7 @@ "js-yaml": "4.1.1", "lodash": "4.18.1", "path-to-regexp": "8.4.2", - "swagger-ui-dist": "5.32.4" + "swagger-ui-dist": "5.32.6" }, "peerDependencies": { "@fastify/static": "^8.0.0 || ^9.0.0", @@ -4641,9 +4393,9 @@ } }, "node_modules/@nestjs/testing": { - "version": "11.1.19", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.19.tgz", - "integrity": "sha512-/UFNWXvPEdu4v4DlC5oWLbGKmD27LehLK06b8oLzs6D6lf4vAQTdST8LRAXBadyMUQnVEQWMuBo3CtAVtlfXtQ==", + "version": "11.1.23", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.23.tgz", + "integrity": "sha512-cpE+WzbZiUxT9Wd4TvYvfDFJ7LAGlFE4qCubIfpuqXuSQkjNJfLGfVv2wif1/2Ery1zXGPVH0yz/TQcctL10aA==", "dev": true, "license": "MIT", "dependencies": { @@ -4682,9 +4434,9 @@ } }, "node_modules/@nestjs/websockets": { - "version": "11.1.19", - "resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-11.1.19.tgz", - "integrity": "sha512-2qo8jtIwwwgkqAI1BtnJ02EaFLrRkKA39eYXS8IhZCHilhBHCWdjnJ5cLcFq4oF+s+KZ7LcLGD/3stxJy8ijzg==", + "version": "11.1.23", + "resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-11.1.23.tgz", + "integrity": "sha512-VNqfKDOctZIxn8nGGyaVA2o8qfFDVNoqCF5PkbsbgdFN07LcobzGe24/PepW4KMrjLtAiX9PhBa3/h3HUVuhVQ==", "license": "MIT", "dependencies": { "iterare": "1.2.1", @@ -4863,19 +4615,18 @@ "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", + "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", + "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", "license": "BSD-3-Clause", "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "@protobufjs/aspromise": "^1.1.1" } }, "node_modules/@protobufjs/float": { @@ -4885,9 +4636,9 @@ "license": "BSD-3-Clause" }, "node_modules/@protobufjs/inquire": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.1.tgz", - "integrity": "sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.2.tgz", + "integrity": "sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/path": { @@ -4918,492 +4669,126 @@ "node_modules/@sendgrid/client": { "version": "8.1.6", "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-8.1.6.tgz", - "integrity": "sha512-/BHu0hqwXNHr2aLhcXU7RmmlVqrdfrbY9KpaNj00KZHlVOVoRxRVrpOCabIB+91ISXJ6+mLM9vpaVUhK6TwBWA==", - "license": "MIT", - "dependencies": { - "@sendgrid/helpers": "^8.0.0", - "axios": "^1.12.0" - }, - "engines": { - "node": ">=12.*" - } - }, - "node_modules/@sendgrid/helpers": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-8.0.0.tgz", - "integrity": "sha512-Ze7WuW2Xzy5GT5WRx+yEv89fsg/pgy3T1E3FS0QEx0/VvRmigMZ5qyVGhJz4SxomegDkzXv/i0aFPpHKN8qdAA==", - "license": "MIT", - "dependencies": { - "deepmerge": "^4.2.2" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/@sendgrid/mail": { - "version": "8.1.6", - "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-8.1.6.tgz", - "integrity": "sha512-/ZqxUvKeEztU9drOoPC/8opEPOk+jLlB2q4+xpx6HVLq6aFu3pMpalkTpAQz8XfRfpLp8O25bh6pGPcHDCYpqg==", - "license": "MIT", - "dependencies": { - "@sendgrid/client": "^8.1.5", - "@sendgrid/helpers": "^8.0.0" - }, - "engines": { - "node": ">=12.*" - } - }, - "node_modules/@simple-git/args-pathspec": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz", - "integrity": "sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==", - "license": "MIT" - }, - "node_modules/@simple-git/argv-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@simple-git/argv-parser/-/argv-parser-1.1.1.tgz", - "integrity": "sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==", - "license": "MIT", - "dependencies": { - "@simple-git/args-pathspec": "^1.0.3" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@smithy/config-resolver": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.5.1.tgz", - "integrity": "sha512-abXk3LhODsvRHsk0ZS9ztrg/fZatTa9Z/z4pgx65YSLR+rY6kvUG/1IgcDKEUciR8MfdnkT5oPeHJTy/HhzDIQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/core": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.1.tgz", - "integrity": "sha512-3mT7o4qQyUWttYnVK3A0Z/u3Xha3E81tXn32Tz6vjZiUXhBrkEivpw1hBYfh84iFF9CSzkBU9Y1DJ3Q6RQ231g==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/credential-provider-imds": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.1.tgz", - "integrity": "sha512-0S/acwHnqX4WrjXzhdiDRxsG2s9SC0cpPIK9nZ1R6UOHd+j7uL28+4bHu22urbLk2TVw3fkp6na/+fkUt/pLNQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.3.1.tgz", - "integrity": "sha512-X7MyI1fu8M84IPKk49kO4kb27Mqp6un9/0o/MsA1ngZ5OxxWKGUxPS3S/AJ9q1cPVTSGmRcbaGNfGUSsflTJkg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.4.1.tgz", - "integrity": "sha512-JZGbSXaBk7JY8VPzsh66ksJ0nTWXbApduFDkA/pEl3aTm2EoAiUZE1Iltp6c+X1bB8kxPQW0mHDfVdYCpWTOzg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.3.1.tgz", - "integrity": "sha512-6Cn4xTNVxn9PWTHSbvf8zmcDhQW8lrLE1Xq5CJgmX6wEvdjS2S0KuE79Aiznv/jx51jpFJ98OuWyE+Bt+oG1MQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/fetch-http-handler": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.1.tgz", - "integrity": "sha512-r7bN6spQ+caZC8AnyvSxkRUb57zt2jhhRw3Z+2Ez8hjq6coIikDBFUUI/+CQ1xx9K6eX1Gx6wUKo4ylU66TIqw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-blob-browser": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.3.1.tgz", - "integrity": "sha512-2fbltQVQYmGd0OzPv2oDMRF0pxkzeIx8cbpx2x6W3UJWGaEyUzVPxF4d0sDXZ/r2obg+RbTyhTidXWlPDsKRKw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-node": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.3.1.tgz", - "integrity": "sha512-u0/zo11mg7yNneoYgTkH4sXwSmcBpbl49o4UNCtQ7hYsXxynsN25KYHmXzqi7TPk5HQL5klGnpU5koOY0O+9hw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-stream-node": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.3.1.tgz", - "integrity": "sha512-4NOnngIoXngbJw9By3u8KXRgqt4vYATpAobNBnNWxOREP7JY3kB0bUmbBNhZ7dtZV/b4auO1eFMD4cLj9OauVg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/invalid-dependency": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.3.1.tgz", - "integrity": "sha512-cLmwtDoulyZvRepAfyV+3rx5oMvuh51dbE+6En3vGC09j3uVSRt1U4oguNu32ub3soGX0oYtBs8E7S2Q4SxTqg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/is-array-buffer": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.3.1.tgz", - "integrity": "sha512-9aVG6VjOFVFHC6Z4hGAzIIrsVWpp1QOO4ERQ2k1S19VrgCamUGIBE2ilAnMWCfr+mlowHlLRXBStsTk/2c5HfA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/md5-js": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.3.1.tgz", - "integrity": "sha512-98NalujRdzv6ggVQNYPWpL2K57UKeUB8roIr61u6+JiHd7KUlMQ+sn/vk6IG4XxEjw2vlC7eu/xjYXshUE4XXg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-content-length": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.3.1.tgz", - "integrity": "sha512-l4BUIP+wljW/Ar+0/QcGdmElI9lalrywfzNijXMBG34Z510FRzPyrDLx/blNTZOAm0C4Mvx5t/bf760CZo1ajg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-endpoint": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.5.1.tgz", - "integrity": "sha512-qtqu5TS+8Y18ZDkJoiXN5AMW1G4JAg1+xytzpsUvIR5a4EUsgd5HQg12lekEHWpm2TDUmOgg+hBaHK7dvyWdkA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.6.1.tgz", - "integrity": "sha512-eTaQhxs0rfUuAkL2MSKrH8DTO7YCeAgrdN0B2/RAeuHmXQ+x52dk5qUBsi/jtcqe5LxItgq5AG5tI6Cp8c0sow==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-serde": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.3.1.tgz", - "integrity": "sha512-t7YtUe076zWVypVmy1rX91oKi2TFJCkpfFpfMhJFpEIRPP0iL9JxjeSyFQ+1bF45JUfDzOzslUJa150WcSrBug==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-stack": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.3.1.tgz", - "integrity": "sha512-1jKwiKZxCMQNqmp4uVPYA6r+MLGjEtH07gnOUdPgbnjuOIrl/0JY/ICdpQtFgeBsQ/Up01gnSv8GYEL0fb8yvg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-config-provider": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.4.1.tgz", - "integrity": "sha512-q7tDJEJXcaSG/8TVpu2f2l9bzxTzDM9geWmltbzsY6Hfh3yiuXXTpLIO8+zwYASPPVFaTJpdKwjSSjdoDoccgw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-http-handler": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.1.tgz", - "integrity": "sha512-BdEYko85f/ldp68uH8XEyIvo810xFk6eyPH81SRggTOApYHWA+Xu7B2EzLuHbe37WVLaUA7F1fWR3/zBeme2WA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/property-provider": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.3.1.tgz", - "integrity": "sha512-3NHoqVBhzpY2b4YBx9AqyKC4C8nnEjl5FyKuxrCjvnjinG0ODj+yg1xX360nNahT6wghYjSw1SooCt3kIdnqIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/protocol-http": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.4.1.tgz", - "integrity": "sha512-8irPNCQgYxcSFp1aGcnDNFkTwSA+xPUaFq9V/v1+JXWu8sKr5b3cFmg2kBTkjkvypDmGeNffuNu0x5iqw1NoAw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.5.1.tgz", - "integrity": "sha512-FKoKxVzdFPhyynFI+SPTWrgOP60fZ4l1UwukWYj4eyhpSmEI7MJ6p58hawIIt9bwp+aek9NEm8Zika7E+GEoeg==", - "license": "Apache-2.0", + "integrity": "sha512-/BHu0hqwXNHr2aLhcXU7RmmlVqrdfrbY9KpaNj00KZHlVOVoRxRVrpOCabIB+91ISXJ6+mLM9vpaVUhK6TwBWA==", + "license": "MIT", "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" + "@sendgrid/helpers": "^8.0.0", + "axios": "^1.12.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=12.*" } }, - "node_modules/@smithy/signature-v4": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.1.tgz", - "integrity": "sha512-728lZZEWYWubBESrfntNslZQYDKRlJDY4dcDnYbL50+gu35pGPLblu4S0/RH/RDLF6me1M87ECHsHELGL7dA/Q==", - "license": "Apache-2.0", + "node_modules/@sendgrid/helpers": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-8.0.0.tgz", + "integrity": "sha512-Ze7WuW2Xzy5GT5WRx+yEv89fsg/pgy3T1E3FS0QEx0/VvRmigMZ5qyVGhJz4SxomegDkzXv/i0aFPpHKN8qdAA==", + "license": "MIT", "dependencies": { - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" + "deepmerge": "^4.2.2" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.0.0" } }, - "node_modules/@smithy/smithy-client": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.13.1.tgz", - "integrity": "sha512-IcznNM8Qd9u1X3oflp12tkzyOB4HbT+sfYWlWiyEysgNzSHoWcHUUsTT4y1jjDjtVuuVVQbYks+g1kVd7u1eGQ==", - "license": "Apache-2.0", + "node_modules/@sendgrid/mail": { + "version": "8.1.6", + "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-8.1.6.tgz", + "integrity": "sha512-/ZqxUvKeEztU9drOoPC/8opEPOk+jLlB2q4+xpx6HVLq6aFu3pMpalkTpAQz8XfRfpLp8O25bh6pGPcHDCYpqg==", + "license": "MIT", "dependencies": { - "@smithy/core": "^3.24.1", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" + "@sendgrid/client": "^8.1.5", + "@sendgrid/helpers": "^8.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=12.*" } }, - "node_modules/@smithy/types": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", - "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", - "license": "Apache-2.0", + "node_modules/@simple-git/args-pathspec": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@simple-git/args-pathspec/-/args-pathspec-1.0.3.tgz", + "integrity": "sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==", + "license": "MIT" + }, + "node_modules/@simple-git/argv-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@simple-git/argv-parser/-/argv-parser-1.1.1.tgz", + "integrity": "sha512-Q9lBcfQ+VQCpQqGJFHe5yooOS5hGdLFFbJ5R+R5aDsnkPCahtn1hSkMcORX65J2Z5lxSkD0lQorMsncuBQxYUw==", + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@simple-git/args-pathspec": "^1.0.3" } }, - "node_modules/@smithy/url-parser": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.3.1.tgz", - "integrity": "sha512-tuelFlF2PZR/wogFC58NIrPOv+Zna4N1+3kA161/33D1Gbwvl6Nh4WsAsW05ZyPp0O6CMGsdbb0S2b/qVjRMCw==", - "license": "Apache-2.0", + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "type-detect": "4.0.8" } }, - "node_modules/@smithy/util-base64": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.4.1.tgz", - "integrity": "sha512-fTHiwW2xbiRiWzfSk4IGAr3gNZCH4fuRYqt8+IuarsP/YON35576iVdePraZ6yJlFxlCL0eMec3/F7xYqoKzlg==", - "license": "Apache-2.0", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@smithy/util-body-length-browser": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.3.1.tgz", - "integrity": "sha512-1scg5t4nV3hV7CZs996/XHb80aDZ5YotH4NcvkW/w/rHj+cSz0aCIzwz8aUNKB4nCDPSHRCbrKoj+TvycYefmw==", + "node_modules/@smithy/core": { + "version": "3.24.4", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.4.tgz", + "integrity": "sha512-3UNRKEyQyAgVgM0LGlerCLm+ChZWZ1GPfde+jBEW6bm6bSBGU1p0EbblaUV3unbhwvidjLA5Zs3sOs7mnZwvAw==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.1", + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-body-length-node": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.3.1.tgz", - "integrity": "sha512-VRC8MKVPKrgUYThTA7ughcKMfjW6/X92H0wXGJoda0Apw4O5xbXL0GMLz40DTWlsb5hh2iItk6+XL72uJdxYcw==", + "node_modules/@smithy/credential-provider-imds": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.4.tgz", + "integrity": "sha512-vKW0MEFRU4Y3MkVZUkpJm+g9qyPGLCXhc0YLggUdSdBB4g7IaSSsCE75P9rBXyWHrXY1UYSQUl8/DwsTR7QciA==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.1", + "@smithy/core": "^3.24.4", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "node_modules/@smithy/fetch-http-handler": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.4.tgz", + "integrity": "sha512-qM7AUKI4G6d7lNgaZD3lA1tWSolh5r6gcixfTZAPstVURfjIbvreVTPz+994M0yC3HbX4YYhDRgr31Xy3XwWOQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", + "@smithy/core": "^3.24.4", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, - "node_modules/@smithy/util-buffer-from/node_modules/@smithy/is-array-buffer": { + "node_modules/@smithy/is-array-buffer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", @@ -5415,121 +4800,70 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-config-provider": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.3.1.tgz", - "integrity": "sha512-lw6L5GF5+W19vO6o3fZwRT2cXEG+8b2LH0b9ppjDT6nIxjUgmljEQGninx5XorylwKZZ4XLVABeroJ8oaF9RmQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.4.1.tgz", - "integrity": "sha512-1rA7w+LjK1WJClsffC81Z/ZtjFt22QsKhBjUYEnZsGVS2nOTfOENKBzdg4SxhdwFvBCjcbpjscUfXOPwE3UHWQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.3.1.tgz", - "integrity": "sha512-1fk1wfQHBenQD5NitVKOFgW0wsISYAFPIXGyStJWAeCtMyRhgHYvtJxBk2rwGWA0L5QX6oM6yeHSLKPFMk59ww==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-endpoints": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.5.1.tgz", - "integrity": "sha512-yORYzJD5zoGbSDkAACr0dIjDiSEA3X8h8lggDENl1dkKpCG0TQIoItPBqtvuJHzFFjRXumcoH+/09xIuixGyCw==", + "node_modules/@smithy/node-http-handler": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.4.tgz", + "integrity": "sha512-HIeF+1vrDGzPkkv39Hj2vlHSXHY3p958jd/8ZnePIY6+ZOsQX8coyEUKO5yQu4r0bQIVsbpotVIrXXwyycMStQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.1", + "@smithy/core": "^3.24.4", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-middleware": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.3.1.tgz", - "integrity": "sha512-SRRMDcIgVXVhVbxviBaSZbuWuVW3jD08wv4ESV0V2oiw0Mki8TPVQ5IxwD3MvSTPg52QYsRP+JoMw5WdUdeWAg==", + "node_modules/@smithy/signature-v4": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.4.tgz", + "integrity": "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.1", + "@smithy/core": "^3.24.4", + "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-retry": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.4.1.tgz", - "integrity": "sha512-qkgWgwn1xw0GoY9Ea/B6FrYSPfHA0zyOtJkokwxZuvucRf2+2lfTut6adi4e4Y7LEAaxsFG7r6i05mtDCxbHKA==", + "node_modules/@smithy/types": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.2.tgz", + "integrity": "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-stream": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.6.1.tgz", - "integrity": "sha512-GjZfEft0M0V3n2YM/LGkr5LeLd8gxHUIzW0rUz6VtTtlAq245GxHlJghvoPEjJHKTj255iHFAiA4IsIdK40Ueg==", + "node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.1", + "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=14.0.0" } }, "node_modules/@smithy/util-utf8": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.3.1.tgz", - "integrity": "sha512-FtRrSnriXtOs4+J8/y9SbQ1xmN71hrOsN/YJr5PQQj5nR1l7YNkGS/TEk4gr0WN7gyrUqw8/RFaYVjI18732ZA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-waiter": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.4.1.tgz", - "integrity": "sha512-G/gWDykZNL0NVcd1qXkoKm45jxJECp6q53DSomM5QKMsyAMEsGksVq+HwgonqYxfFJEzzHi6ljtWKXVS1pl0/Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.1", + "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=14.0.0" } }, "node_modules/@so-ric/colorspace": { @@ -5956,12 +5290,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.7.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.7.0.tgz", - "integrity": "sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==", + "version": "25.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz", + "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==", "license": "MIT", "dependencies": { - "undici-types": "~7.21.0" + "undici-types": ">=7.24.0 <7.24.7" } }, "node_modules/@types/node-fetch": { @@ -6067,9 +5401,9 @@ "license": "MIT" }, "node_modules/@types/superagent": { - "version": "8.1.9", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", - "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", + "version": "8.1.10", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.10.tgz", + "integrity": "sha512-nbt4IWXABhW0jGmmpRzCFNlbmwCTzZ2gTUsNIr+X+ItdqPms+PAJZbWsNzpS2USqXjcoNLQcO6nXo60zcPQiIg==", "dev": true, "license": "MIT", "dependencies": { @@ -6609,6 +5943,18 @@ "node": ">=0.4.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/agentkeepalive": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", @@ -6919,13 +6265,14 @@ } }, "node_modules/axios": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz", - "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz", + "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==", "license": "MIT", "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", + "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, @@ -7097,9 +6444,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.29", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.29.tgz", - "integrity": "sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==", + "version": "2.10.31", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.31.tgz", + "integrity": "sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==", "dev": true, "license": "Apache-2.0", "bin": { @@ -7445,9 +6792,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001792", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", - "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", + "version": "1.0.30001793", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", + "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", "dev": true, "funding": [ { @@ -8581,9 +7928,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.353", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.353.tgz", - "integrity": "sha512-kOrWphBi8TOZyiJZqsgqIle0lw+tzmnQK83pV9dZUd01Nm2POECSyFQMAuarzZdYqQW7FH9RaYOuaRo3h+bQ3w==", + "version": "1.5.361", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.361.tgz", + "integrity": "sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA==", "dev": true, "license": "ISC" }, @@ -8622,9 +7969,9 @@ } }, "node_modules/engine.io": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.7.tgz", - "integrity": "sha512-DgOngfDKM2EviOH3Mr9m7ks1q8roetLy/IMmYthAYzbpInMbYc/GS+fWFA3rl1gvwKVsQrVV61fo5emD1y3OJQ==", + "version": "6.6.8", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.8.tgz", + "integrity": "sha512-2agL3ueZhqxoVrfmntO8yuVj+uNSlIOnhykYHk3Cq0ShYPdUjjUiSJrQvXjq01I9jAuI0Zl2YO8Evv5Mqytm5g==", "license": "MIT", "dependencies": { "@types/cors": "^2.8.12", @@ -8636,46 +7983,25 @@ "cors": "~2.8.5", "debug": "~4.4.1", "engine.io-parser": "~5.2.1", - "ws": "~8.18.3" + "ws": "~8.20.1" }, "engines": { "node": ">=10.2.0" } }, "node_modules/engine.io-client": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.4.tgz", - "integrity": "sha512-+kjUJnZGwzewFDw951CDWcwj35vMNf2fcj7xQWOctq1F2i1jkDdVvdFG9kM/BEChymCH36KgjnW0NsL58JYRxw==", + "version": "6.6.5", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.5.tgz", + "integrity": "sha512-QCwxUDULPlXv8F6tqMMKx5dNkTe6OaBYRMPYeXKBlyOoKvAmE0ac6pW7fFhSscJ/5SI7666/U/B+MElbsrJlIg==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1", "engine.io-parser": "~5.2.1", - "ws": "~8.18.3", + "ws": "~8.20.1", "xmlhttprequest-ssl": "~2.1.1" } }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/engine.io-parser": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", @@ -8728,31 +8054,10 @@ "node": ">= 0.6" } }, - "node_modules/engine.io/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/enhanced-resolve": { - "version": "5.21.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.3.tgz", - "integrity": "sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.0.tgz", + "integrity": "sha512-xYcDWrpELkFzz9SpZ3PlI6Eu6eD93Yf0WLDRxikGhWJ3MAir2SNZTIVCVZqZ/NUyx8AdMc2gT9C0gPiw18kG+A==", "dev": true, "license": "MIT", "dependencies": { @@ -9452,9 +8757,9 @@ } }, "node_modules/fast-xml-parser": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz", - "integrity": "sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.3.tgz", + "integrity": "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==", "funding": [ { "type": "github", @@ -9464,7 +8769,7 @@ "license": "MIT", "dependencies": { "@nodable/entities": "^2.1.0", - "fast-xml-builder": "^1.1.5", + "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, @@ -10410,6 +9715,19 @@ "url": "https://opencollective.com/express" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -11765,9 +11083,9 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.13.1.tgz", - "integrity": "sha512-GEw0GLL7YUUA6nv21IsCvVjtI5Ejn84sjbdfQ9KxdbqEVOk1PZh7xejn01EEiniKw+dBeCfim+8MGeuvVuE2BA==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.13.3.tgz", + "integrity": "sha512-xMkdAMqcyG7iN2WZZmGIfWbYxW4orRkny+0/AXIbwL0xll2zkDX0Vzo/BXFa6+7mh2UvJl9MbcTtHk0YXkFtBA==", "license": "MIT" }, "node_modules/limiter": { @@ -11994,9 +11312,9 @@ "license": "Apache-2.0" }, "node_modules/lru-cache": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz", - "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz", + "integrity": "sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -12650,11 +11968,14 @@ } }, "node_modules/node-releases": { - "version": "2.0.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", - "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.46.tgz", + "integrity": "sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/normalize-path": { "version": "3.0.0", @@ -13008,14 +12329,14 @@ } }, "node_modules/pg": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", - "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.21.0.tgz", + "integrity": "sha512-AUP1EYJuHraQGsVoCQVIcM7TEJVGtDzxWtGFZd8rds9d+CCXlU5Js1rYgfLNvxy9iJrpHjGrRjoi/3BT9fRyiA==", "license": "MIT", "dependencies": { - "pg-connection-string": "^2.12.0", - "pg-pool": "^3.13.0", - "pg-protocol": "^1.13.0", + "pg-connection-string": "^2.13.0", + "pg-pool": "^3.14.0", + "pg-protocol": "^1.14.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, @@ -13023,7 +12344,7 @@ "node": ">= 16.0.0" }, "optionalDependencies": { - "pg-cloudflare": "^1.3.0" + "pg-cloudflare": "^1.4.0" }, "peerDependencies": { "pg-native": ">=3.0.1" @@ -13035,16 +12356,16 @@ } }, "node_modules/pg-cloudflare": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", - "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.0.tgz", + "integrity": "sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==", "license": "MIT", "optional": true }, "node_modules/pg-connection-string": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", - "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.13.0.tgz", + "integrity": "sha512-EMnU9E2fSULdsbErBbMaXJvFeD9B4+nPcM3f+4lsiCR0BHLPrLVjv3DbyM2hgQQviKJaTWIRRTjKjWlHg3p2ig==", "license": "MIT" }, "node_modules/pg-int8": { @@ -13057,18 +12378,18 @@ } }, "node_modules/pg-pool": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", - "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.14.0.tgz", + "integrity": "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==", "license": "MIT", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", - "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.14.0.tgz", + "integrity": "sha512-n5taZ1kO3s9ngDTVxsEznOqCyToTgz0FLuPq0B33COy5pPpuWJpY3/2oRBVETuOgzdqRXfWpM9HIhp2LBBT1BA==", "license": "MIT" }, "node_modules/pg-types": { @@ -13371,24 +12692,24 @@ "license": "MIT" }, "node_modules/protobufjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.7.tgz", - "integrity": "sha512-NGnrxS/nLKUo5nkbVQxlC71sB4hdfImdYIbFeSCidxtwATx0AHRPcANSLd0q5Bb2BkoSWo2iisQhGg5/r+ihbA==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.1.tgz", + "integrity": "sha512-4K0myLaWL5EteuSAro91EGFgcfVgxb64Jx+7oDAY6GOkXD4M69yuSEljNcInGVCA5sOPxmZ/EqDLj2x0Q0+Ygg==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", + "@protobufjs/eventemitter": "^1.1.1", + "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.1", + "@protobufjs/inquire": "^1.1.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", - "long": "^5.0.0" + "long": "^5.3.2" }, "engines": { "node": ">=12.0.0" @@ -13449,9 +12770,9 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.15.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", - "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "version": "6.15.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", + "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -14040,9 +13361,9 @@ "license": "Apache-2.0" }, "node_modules/semver": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", - "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", + "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -14205,9 +13526,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", - "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.4.tgz", + "integrity": "sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -14353,34 +13674,13 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz", - "integrity": "sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.7.tgz", + "integrity": "sha512-e0LyK91f3cUxTmv95/KzoLg47+zF+s/sbxRGDNsyG4dmIP8ZSX8ax6byOxfJXeNNtS/8AZlfD+uP7gBeR7DLlg==", "license": "MIT", "dependencies": { "debug": "~4.4.1", - "ws": "~8.18.3" - } - }, - "node_modules/socket.io-adapter/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "ws": "~8.20.1" } }, "node_modules/socket.io-client": { @@ -14858,9 +14158,9 @@ } }, "node_modules/swagger-ui-dist": { - "version": "5.32.4", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.32.4.tgz", - "integrity": "sha512-0AADFFQNJzExEN49SrD/34Nn9cxNxVLiydYl2MBwSZFPVXNkVwC/EFAjoezGGqE8oDegiDC+p47t8lKObCinMQ==", + "version": "5.32.6", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.32.6.tgz", + "integrity": "sha512-75ttZNaYCLoFPnozPZcTUU6mS3wKT8l7WLjU5zJSHFeJa23i5vtnze6IiCl4jDMPeQTXVXIgovq4M11NNfQvSA==", "license": "Apache-2.0", "dependencies": { "@scarf/scarf": "=1.4.0" @@ -14915,9 +14215,9 @@ } }, "node_modules/terser": { - "version": "5.47.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.47.1.tgz", - "integrity": "sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==", + "version": "5.48.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz", + "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -15266,9 +14566,9 @@ } }, "node_modules/ts-jest": { - "version": "29.4.9", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.9.tgz", - "integrity": "sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==", + "version": "29.4.11", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.11.tgz", + "integrity": "sha512-IrFl7l9AuB/qrNw5quqvAv/hmKMb8dhWOH4jQOGo0Oq8tCeo1O86/iTFG1FaRimgUkF13l4PcepO8ATFT6Ns4g==", "dev": true, "license": "MIT", "dependencies": { @@ -15278,7 +14578,7 @@ "json5": "^2.2.3", "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", - "semver": "^7.7.4", + "semver": "^7.8.0", "type-fest": "^4.41.0", "yargs-parser": "^21.1.1" }, @@ -15523,17 +14823,34 @@ } }, "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.1.0.tgz", + "integrity": "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==", "license": "MIT", "dependencies": { - "content-type": "^1.0.5", + "content-type": "^2.0.0", "media-typer": "^1.1.0", "mime-types": "^3.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/type-is/node_modules/content-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", + "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/typed-array-buffer": { @@ -15557,9 +14874,9 @@ "license": "MIT" }, "node_modules/typeorm": { - "version": "0.3.29", - "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.29.tgz", - "integrity": "sha512-wwPEX/df4l72gCmOsrs0otJZYLGA9lLQkUZCkukbsymEycV4zXv2KM7wU7v2r8L01TaCgY9ApSSqHQWBOUhEoQ==", + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.30.tgz", + "integrity": "sha512-8T35PzjefOdqc2ZR9mwLQj0pUGp6lQhMbK2EvVMwJVJWlaoHm0v/Q6dThNOZkFchD+0yMg8gwjKM28ePiLSXSQ==", "license": "MIT", "dependencies": { "@sqltools/formatter": "^1.2.5", @@ -15803,9 +15120,9 @@ } }, "node_modules/undici-types": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.21.0.tgz", - "integrity": "sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", + "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", "license": "MIT" }, "node_modules/universalify": { @@ -15978,13 +15295,12 @@ } }, "node_modules/webpack": { - "version": "5.106.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz", - "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==", + "version": "5.107.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.107.1.tgz", + "integrity": "sha512-mvdIWxj/H6QsfgDdH9djne3a5dYcmEmtsXGESkypaGN5jXjF/b+9KDlmTDQ2TKlFUeA2fI9Y65kihD30JOdB+Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", @@ -15994,20 +15310,20 @@ "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.20.0", - "es-module-lexer": "^2.0.0", + "enhanced-resolve": "^5.21.4", + "es-module-lexer": "^2.1.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", - "loader-runner": "^4.3.1", + "loader-runner": "^4.3.2", "mime-db": "^1.54.0", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.17", + "terser-webpack-plugin": "^5.5.0", "watchpack": "^2.5.1", - "webpack-sources": "^3.3.4" + "webpack-sources": "^3.4.1" }, "bin": { "webpack": "bin/webpack.js" @@ -16036,9 +15352,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.1.tgz", - "integrity": "sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.0.tgz", + "integrity": "sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ==", "dev": true, "license": "MIT", "engines": { @@ -16296,9 +15612,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", - "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz", + "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==", "license": "MIT", "engines": { "node": ">=10.0.0" diff --git a/package.json b/package.json index db06c4056..f7efbc9d8 100644 --- a/package.json +++ b/package.json @@ -89,14 +89,14 @@ "@golevelup/nestjs-rabbitmq": "^9.0.0", "@multiversx/sdk-core": "^15.4.0", "@multiversx/sdk-exchange": "^0.2.24", - "@multiversx/sdk-nestjs-auth": "7.0.0", - "@multiversx/sdk-nestjs-cache": "7.0.0", - "@multiversx/sdk-nestjs-common": "7.0.0", - "@multiversx/sdk-nestjs-elastic": "7.0.0", - "@multiversx/sdk-nestjs-http": "7.0.0", - "@multiversx/sdk-nestjs-monitoring": "7.0.0", - "@multiversx/sdk-nestjs-rabbitmq": "7.0.0", - "@multiversx/sdk-nestjs-redis": "7.0.0", + "@multiversx/sdk-nestjs-auth": "^7.0.0", + "@multiversx/sdk-nestjs-cache": "^7.0.0", + "@multiversx/sdk-nestjs-common": "^7.0.0", + "@multiversx/sdk-nestjs-elastic": "^7.0.0", + "@multiversx/sdk-nestjs-http": "^7.0.0", + "@multiversx/sdk-nestjs-monitoring": "^7.0.0", + "@multiversx/sdk-nestjs-rabbitmq": "^7.0.0", + "@multiversx/sdk-nestjs-redis": "^7.0.0", "@multiversx/sdk-transaction-processor": "^0.1.35", "@nestjs/apollo": "^13.3.0", "@nestjs/common": "^11.1.19", From 5ea8ea8d74d32db303b89acd1ba323444fdfd4d1 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 22 May 2026 17:45:38 +0300 Subject: [PATCH 173/206] add log --- src/test/chain-simulator/tokens.cs-e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/chain-simulator/tokens.cs-e2e.ts b/src/test/chain-simulator/tokens.cs-e2e.ts index abe7c026c..d56c9b06a 100644 --- a/src/test/chain-simulator/tokens.cs-e2e.ts +++ b/src/test/chain-simulator/tokens.cs-e2e.ts @@ -44,7 +44,7 @@ describe('Tokens e2e tests with chain simulator', () => { it('should support pagination and return 2 tokens', async () => { const response = await axios.get(`${config.apiServiceUrl}/tokens?size=2`); const tokens = response.data; - + console.log('Tokens response:', tokens); expect(response.status).toBe(200); expect(tokens.length).toBe(2); expect(Array.isArray(tokens)).toBe(true); From 1a5d8c1aa5ab6ccc1200789a81a0355b72c0a40d Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 22 May 2026 18:03:50 +0300 Subject: [PATCH 174/206] increase ws e2e waiting time + remove log --- src/test/chain-simulator/tokens.cs-e2e.ts | 2 +- src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/chain-simulator/tokens.cs-e2e.ts b/src/test/chain-simulator/tokens.cs-e2e.ts index d56c9b06a..abe7c026c 100644 --- a/src/test/chain-simulator/tokens.cs-e2e.ts +++ b/src/test/chain-simulator/tokens.cs-e2e.ts @@ -44,7 +44,7 @@ describe('Tokens e2e tests with chain simulator', () => { it('should support pagination and return 2 tokens', async () => { const response = await axios.get(`${config.apiServiceUrl}/tokens?size=2`); const tokens = response.data; - console.log('Tokens response:', tokens); + expect(response.status).toBe(200); expect(tokens.length).toBe(2); expect(Array.isArray(tokens)).toBe(true); diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index 579125423..3456f9479 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -207,7 +207,7 @@ describe('Websocket subscriptions e2e tests', () => { await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/10`); log("Waiting for WS messages..."); - await new Promise(resolve => setTimeout(resolve, 30000)); + await new Promise(resolve => setTimeout(resolve, 40000)); } catch (e: any) { console.error("Error in beforeAll:", e.message); From fd0a186842b481353d38a45d6e3084b483e95ed9 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Mon, 25 May 2026 16:25:15 +0300 Subject: [PATCH 175/206] config git ignore --- .gitignore | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 3006a9c0c..b8f3a1790 100644 --- a/.gitignore +++ b/.gitignore @@ -2,11 +2,7 @@ /dist /node_modules /config/config.yaml -/config/config.custom.yaml -/config/config.custom.devnet.yaml -/config/config.custom.testnet.yaml -/config/config.custom.mainnet.yaml -/config/config.custom.cs-e2e.yaml +/config/config.custom.* __snapshots__ # Logs From 7ce5cb95d91278c7ab3246eb087b78c706bc209d Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Tue, 26 May 2026 19:04:33 +0300 Subject: [PATCH 176/206] package-lock --- package-lock.json | 344 ++++++++++++++++++++++------------------------ 1 file changed, 165 insertions(+), 179 deletions(-) diff --git a/package-lock.json b/package-lock.json index bdee78681..20e08b208 100644 --- a/package-lock.json +++ b/package-lock.json @@ -674,9 +674,9 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1052.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1052.0.tgz", - "integrity": "sha512-8fgQHfk1WjGUyowyqtMwq9HzZvIQQ86cqn9IZW5Qkq8kaolVjMmZez60qVYxKYvKhVRYUP5hWYPVCyraoud0AA==", + "version": "3.1053.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1053.0.tgz", + "integrity": "sha512-/oGxoB6p1Nqs935Blt+v1o+anSCEf2n3RjIrcLz84i4cn2Gr+Z7JpDdUkG5+74r5ctqEPG7k/phTGbJ9fNKnHg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", @@ -1083,13 +1083,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", + "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -1098,9 +1098,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.29.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", - "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", "dev": true, "license": "MIT", "engines": { @@ -1108,21 +1108,21 @@ } }, "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -1149,14 +1149,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -1166,14 +1166,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -1203,9 +1203,9 @@ } }, "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "dev": true, "license": "MIT", "engines": { @@ -1213,29 +1213,29 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1245,9 +1245,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", "dev": true, "license": "MIT", "engines": { @@ -1255,9 +1255,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "dev": true, "license": "MIT", "engines": { @@ -1265,9 +1265,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, "license": "MIT", "engines": { @@ -1275,9 +1275,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", "dev": true, "license": "MIT", "engines": { @@ -1285,27 +1285,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.29.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz", - "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.29.0" + "@babel/types": "^7.29.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -1370,13 +1370,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", - "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz", + "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1412,13 +1412,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", - "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz", + "integrity": "sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1538,13 +1538,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", - "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz", + "integrity": "sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -1554,42 +1554,42 @@ } }, "node_modules/@babel/runtime": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", - "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", "debug": "^4.3.1" }, "engines": { @@ -1597,14 +1597,14 @@ } }, "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -2879,9 +2879,9 @@ } }, "node_modules/@ioredis/commands": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.5.1.tgz", - "integrity": "sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.10.0.tgz", + "integrity": "sha512-UmeW7z4LfctwoQ5wkhVzgq8tXkreED2xZGpX+Bg+zA+WJFZCT6c062AfCK/Dfk81xZnnwdhJCUMkitihRaoC2Q==", "license": "MIT" }, "node_modules/@isaacs/cliui": { @@ -4061,9 +4061,9 @@ } }, "node_modules/@nestjs/common": { - "version": "11.1.23", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.23.tgz", - "integrity": "sha512-qKgEqwQXHIVu8TwiISmgbTrGHAFBsseP86KNolBZwAiHQryinJ5FPiDpp0ZJBBryY+WEMnsqaCa4TSxVuQEWug==", + "version": "11.1.24", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.24.tgz", + "integrity": "sha512-9zHxaDDM+oXW9As6UsP5yYB+UqczBmpeSCIFWdPEtEukMnZhxODG1BBjaUcdBB8Sc1uzojSJSJlp3yFp853t1g==", "license": "MIT", "dependencies": { "file-type": "21.3.4", @@ -4107,9 +4107,9 @@ } }, "node_modules/@nestjs/core": { - "version": "11.1.23", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.23.tgz", - "integrity": "sha512-Yd+mVFUilw4A6PzV7tyfiW+zrG2wmRXnFZVmNQA+fl1N0k6km4bhhNboxjLu//dzl+XiZI5AsOHHOTegzvOgNQ==", + "version": "11.1.24", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.24.tgz", + "integrity": "sha512-K4bzT+lEdd0Hhcsw3jtk56QAW6s6skK3ViN7hIROSN0kUf4ROwWEAKopJID6yhPQxB45kDtP2wEcjzE8171J3g==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -4226,9 +4226,9 @@ } }, "node_modules/@nestjs/microservices": { - "version": "11.1.23", - "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-11.1.23.tgz", - "integrity": "sha512-iVPp3u274Xx6XAEbKPWDCzUHP6wlt7L7RXUIyIpf3caJ3ldFh/dG3uyHva1lgjHG+ukz+XCXafl1cx352TPW0w==", + "version": "11.1.24", + "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-11.1.24.tgz", + "integrity": "sha512-ALu/7qk3obFlw7KVSPRz+BjuyWPLmv9isknhLG8UYXkjx3aPhJGp52i3qiTqucM1jKtoBgPa3+SK4e9fVvglGA==", "license": "MIT", "dependencies": { "iterare": "1.2.1", @@ -4284,9 +4284,9 @@ } }, "node_modules/@nestjs/platform-express": { - "version": "11.1.23", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.23.tgz", - "integrity": "sha512-7TQ9v2Z9lej8btTYK1VUVB3nZr0lXFNFiyI/iOc0jAOg31dHdpAWtnMMm9iUvyAfq/ssw7dsBhjCHOmEJJKr0A==", + "version": "11.1.24", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.24.tgz", + "integrity": "sha512-CeMKbRBm05aOBiWhIHWO2xDeHbxynBF9ySQv3gRjObz2N5+uJnYriAYkHvVqvC4JIydmMPmT5VdICFNlNz3qyA==", "license": "MIT", "dependencies": { "cors": "2.8.6", @@ -4305,9 +4305,9 @@ } }, "node_modules/@nestjs/platform-socket.io": { - "version": "11.1.23", - "resolved": "https://registry.npmjs.org/@nestjs/platform-socket.io/-/platform-socket.io-11.1.23.tgz", - "integrity": "sha512-Rxemh9HpYMbv+jxkEeeIdLoIfYq7/fStCfj9p/QGfKzzbYip+M4JicCR/2hBndB+M0lEoV0KmsFlQRbVC48gcg==", + "version": "11.1.24", + "resolved": "https://registry.npmjs.org/@nestjs/platform-socket.io/-/platform-socket.io-11.1.24.tgz", + "integrity": "sha512-ImdR9G8W5Y2Hhcptdci+tNaG6JV/dzDguFTgtXOL5ie/gD9O9ARw8Cd9RzF2+oteyzQ+1sPK/+wgVOPOyYGVCA==", "license": "MIT", "dependencies": { "socket.io": "4.8.3", @@ -4393,9 +4393,9 @@ } }, "node_modules/@nestjs/testing": { - "version": "11.1.23", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.23.tgz", - "integrity": "sha512-cpE+WzbZiUxT9Wd4TvYvfDFJ7LAGlFE4qCubIfpuqXuSQkjNJfLGfVv2wif1/2Ery1zXGPVH0yz/TQcctL10aA==", + "version": "11.1.24", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.24.tgz", + "integrity": "sha512-+4M4UAnhtprBQN0J2uI6IP0wDqhy9aH8XCMu5SO8oCi0oB04YXA4a4PAEkxmsPn7gHW4dj1u4GFteNQOWgvTJw==", "dev": true, "license": "MIT", "dependencies": { @@ -4434,9 +4434,9 @@ } }, "node_modules/@nestjs/websockets": { - "version": "11.1.23", - "resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-11.1.23.tgz", - "integrity": "sha512-VNqfKDOctZIxn8nGGyaVA2o8qfFDVNoqCF5PkbsbgdFN07LcobzGe24/PepW4KMrjLtAiX9PhBa3/h3HUVuhVQ==", + "version": "11.1.24", + "resolved": "https://registry.npmjs.org/@nestjs/websockets/-/websockets-11.1.24.tgz", + "integrity": "sha512-37Z/QYzZ4nPHcGyGGjhjoKVOcpSPMhmRQj5DS1l0RKlRYgq8S0cmgaZ6kQ8PI3259PdchLx41oQibXh22iEUiA==", "license": "MIT", "dependencies": { "iterare": "1.2.1", @@ -6444,9 +6444,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.31", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.31.tgz", - "integrity": "sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==", + "version": "2.10.32", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.32.tgz", + "integrity": "sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -6574,9 +6574,9 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", "dev": true, "license": "MIT", "dependencies": { @@ -7034,9 +7034,9 @@ } }, "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz", + "integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==", "license": "Apache-2.0", "engines": { "node": ">=0.10.0" @@ -7521,9 +7521,9 @@ "license": "MIT" }, "node_modules/dayjs": { - "version": "1.11.20", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", - "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "version": "1.11.21", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.21.tgz", + "integrity": "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==", "license": "MIT" }, "node_modules/dc-polyfill": { @@ -8104,9 +8104,9 @@ "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -9880,20 +9880,18 @@ "license": "ISC" }, "node_modules/ioredis": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.10.1.tgz", - "integrity": "sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.11.0.tgz", + "integrity": "sha512-EZBErytyVovD8f6pDfG3Kb37N6Y3lmDA9NNj+4+IP13CzzHGeX+OyeRM2Um13khRzoBSzzL+5lVnCX8V2RLeMg==", "license": "MIT", "dependencies": { - "@ioredis/commands": "1.5.1", - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.4", - "denque": "^2.1.0", - "lodash.defaults": "^4.2.0", - "lodash.isarguments": "^3.1.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" + "@ioredis/commands": "1.10.0", + "cluster-key-slot": "1.1.1", + "debug": "4.4.3", + "denque": "2.1.0", + "redis-errors": "1.2.0", + "redis-parser": "3.0.0", + "standard-as-callback": "2.1.0" }, "engines": { "node": ">=12.22.0" @@ -11161,24 +11159,12 @@ "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==", "license": "MIT" }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "license": "MIT" - }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "license": "MIT" }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", - "license": "MIT" - }, "node_modules/lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", @@ -13116,9 +13102,9 @@ } }, "node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -14073,9 +14059,9 @@ } }, "node_modules/subscriptions-transport-ws/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "version": "7.5.11", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.11.tgz", + "integrity": "sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==", "license": "MIT", "engines": { "node": ">=8.3.0" @@ -14976,9 +14962,9 @@ } }, "node_modules/typeorm/node_modules/brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", + "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -15295,9 +15281,9 @@ } }, "node_modules/webpack": { - "version": "5.107.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.107.1.tgz", - "integrity": "sha512-mvdIWxj/H6QsfgDdH9djne3a5dYcmEmtsXGESkypaGN5jXjF/b+9KDlmTDQ2TKlFUeA2fI9Y65kihD30JOdB+Q==", + "version": "5.107.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.107.2.tgz", + "integrity": "sha512-v7RhXaJbpMlV0D7hC7lb2EbnxkoeUqf9qhKr6lozx3Q48pmFrqqNRmZFUEGmi7pSwm6fCQ2H1IjvCkHqdpVdjQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15310,7 +15296,7 @@ "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.21.4", + "enhanced-resolve": "^5.22.0", "es-module-lexer": "^2.1.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -15323,7 +15309,7 @@ "tapable": "^2.3.0", "terser-webpack-plugin": "^5.5.0", "watchpack": "^2.5.1", - "webpack-sources": "^3.4.1" + "webpack-sources": "^3.5.0" }, "bin": { "webpack": "bin/webpack.js" From e4d8ae73405289957c7cd9aad981b8b1e31ce400 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 27 May 2026 14:46:03 +0300 Subject: [PATCH 177/206] remove duplicate imports --- src/endpoints/endpoints.controllers.module.ts | 2 +- src/endpoints/endpoints.services.module.ts | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/endpoints/endpoints.controllers.module.ts b/src/endpoints/endpoints.controllers.module.ts index 318e527f0..0a92da038 100644 --- a/src/endpoints/endpoints.controllers.module.ts +++ b/src/endpoints/endpoints.controllers.module.ts @@ -46,7 +46,7 @@ export class EndpointsControllersModule { const controllers: Type[] = [ AccountController, BlockController, CollectionController, DelegationController, DelegationLegacyController, IdentitiesController, KeysController, MiniBlockController, NetworkController, NftController, TagController, NodeController, - ProviderController, GatewayProxyController, RoundController, SmartContractResultController, ShardController, StakeController, StakeController, + ProviderController, GatewayProxyController, RoundController, SmartContractResultController, ShardController, StakeController, TokenController, TransactionController, UsernameController, VmQueryController, WaitingListController, HealthCheckController, DappConfigController, WebsocketController, TransferController, ProcessNftsPublicController, TransactionsBatchController, ApplicationController, EventsController, diff --git a/src/endpoints/endpoints.services.module.ts b/src/endpoints/endpoints.services.module.ts index fc8531828..34251bd74 100644 --- a/src/endpoints/endpoints.services.module.ts +++ b/src/endpoints/endpoints.services.module.ts @@ -58,7 +58,6 @@ import { EventsModule } from "./events/events.module"; ShardModule, StakeModule, TokenModule, - RoundModule, TransactionModule, UsernameModule, VmQueryModule, @@ -81,7 +80,7 @@ import { EventsModule } from "./events/events.module"; exports: [ AccountModule, CollectionModule, BlockModule, DelegationModule, DelegationLegacyModule, IdentitiesModule, KeysModule, MiniBlockModule, NetworkModule, NftModule, NftMediaModule, TagModule, NodeModule, ProviderModule, - RoundModule, SmartContractResultModule, ShardModule, StakeModule, TokenModule, RoundModule, TransactionModule, UsernameModule, VmQueryModule, + RoundModule, SmartContractResultModule, ShardModule, StakeModule, TokenModule, TransactionModule, UsernameModule, VmQueryModule, WaitingListModule, EsdtModule, BlsModule, DappConfigModule, TransferModule, PoolModule, TransactionActionModule, WebsocketModule, MexModule, ProcessNftsModule, NftMarketplaceModule, TransactionsBatchModule, TpsModule, ApplicationModule, EventsModule, ], From ea0a56023f19c594999ee34c732ee82272f9f108 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 27 May 2026 14:47:24 +0300 Subject: [PATCH 178/206] use forRoot imports only at the root module --- src/crons/nft/nft.cron.module.ts | 2 -- src/endpoints/vm.query/vm.query.module.ts | 2 -- src/public.app.module.ts | 2 ++ src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/crons/nft/nft.cron.module.ts b/src/crons/nft/nft.cron.module.ts index 91e48823b..39f0afb73 100644 --- a/src/crons/nft/nft.cron.module.ts +++ b/src/crons/nft/nft.cron.module.ts @@ -1,5 +1,4 @@ import { Module } from '@nestjs/common'; -import { ScheduleModule } from '@nestjs/schedule'; import { NftWorkerModule } from 'src/queue.worker/nft.worker/nft.worker.module'; import { CollectionModule } from 'src/endpoints/collections/collection.module'; import { NftModule } from 'src/endpoints/nfts/nft.module'; @@ -9,7 +8,6 @@ import { NftAssetModule } from 'src/queue.worker/nft.worker/queue/job-services/a @Module({ imports: [ - ScheduleModule.forRoot(), NftWorkerModule, NftModule, CollectionModule, diff --git a/src/endpoints/vm.query/vm.query.module.ts b/src/endpoints/vm.query/vm.query.module.ts index c6a31a03c..01937df2e 100644 --- a/src/endpoints/vm.query/vm.query.module.ts +++ b/src/endpoints/vm.query/vm.query.module.ts @@ -1,5 +1,4 @@ import { Module } from "@nestjs/common"; -import { EventEmitterModule } from "@nestjs/event-emitter"; import { ApiConfigModule } from "src/common/api-config/api.config.module"; import { GatewayModule } from "src/common/gateway/gateway.module"; import { ProtocolModule } from "src/common/protocol/protocol.module"; @@ -14,7 +13,6 @@ import { VmQueryService } from "./vm.query.service"; ProtocolModule, ApiConfigModule, SettingsModule, - EventEmitterModule.forRoot({ maxListeners: 1 }), ], providers: [ VmQueryService, diff --git a/src/public.app.module.ts b/src/public.app.module.ts index 524185e66..31cd187ed 100644 --- a/src/public.app.module.ts +++ b/src/public.app.module.ts @@ -11,9 +11,11 @@ import { DynamicModuleUtils } from './utils/dynamic.module.utils'; import { LocalCacheController } from './endpoints/caching/local.cache.controller'; import { RestrictedRoutesMiddleware } from './utils/restricted.routes.middleware'; import { ApiMetricsModule } from './common/metrics/api.metrics.module'; +import { ScheduleModule } from '@nestjs/schedule'; @Module({ imports: [ + ScheduleModule.forRoot(), LoggingModule, EndpointsServicesModule, EndpointsControllersModule.forRoot(), diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index 3456f9479..579125423 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -207,7 +207,7 @@ describe('Websocket subscriptions e2e tests', () => { await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/10`); log("Waiting for WS messages..."); - await new Promise(resolve => setTimeout(resolve, 40000)); + await new Promise(resolve => setTimeout(resolve, 30000)); } catch (e: any) { console.error("Error in beforeAll:", e.message); From 90058da2d8f220b9d8a98f395ca513c87815156a Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 27 May 2026 14:57:17 +0300 Subject: [PATCH 179/206] add manual trigger for github actions tests --- .github/workflows/chain-simulator-e2e-tests.yml | 1 + .github/workflows/lint.yml | 1 + .github/workflows/load-tests.yml | 1 + .github/workflows/unit.tests.yml | 1 + 4 files changed, 4 insertions(+) diff --git a/.github/workflows/chain-simulator-e2e-tests.yml b/.github/workflows/chain-simulator-e2e-tests.yml index e42234b57..4fe9d286f 100644 --- a/.github/workflows/chain-simulator-e2e-tests.yml +++ b/.github/workflows/chain-simulator-e2e-tests.yml @@ -5,6 +5,7 @@ on: branches: [main, development] pull_request: branches: [main, development] + workflow_dispatch: jobs: test-chainsimulator-e2e: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 34d5285e4..fbfa63f35 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -8,6 +8,7 @@ on: branches: [main, development] pull_request: branches: [main, development] + workflow_dispatch: jobs: build: diff --git a/.github/workflows/load-tests.yml b/.github/workflows/load-tests.yml index faa6466ee..2adcdb14b 100644 --- a/.github/workflows/load-tests.yml +++ b/.github/workflows/load-tests.yml @@ -3,6 +3,7 @@ name: Load Tests on: pull_request: branches: [main, development] + workflow_dispatch: jobs: test-base: diff --git a/.github/workflows/unit.tests.yml b/.github/workflows/unit.tests.yml index b1a4919e0..6d35337c2 100644 --- a/.github/workflows/unit.tests.yml +++ b/.github/workflows/unit.tests.yml @@ -8,6 +8,7 @@ on: branches: [main, development] pull_request: branches: [main, development] + workflow_dispatch: jobs: build: From 73fbb4b176478333b14446fc618a80c5eb9ee322 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 27 May 2026 15:32:20 +0300 Subject: [PATCH 180/206] rename import naming --- .../transactions.batch/transactions.batch.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/endpoints/transactions.batch/transactions.batch.service.ts b/src/endpoints/transactions.batch/transactions.batch.service.ts index f6176b838..356a2eefa 100644 --- a/src/endpoints/transactions.batch/transactions.batch.service.ts +++ b/src/endpoints/transactions.batch/transactions.batch.service.ts @@ -1,4 +1,4 @@ -import { Address, Transaction as ErdJsTransaction, TransactionComputer } from "@multiversx/sdk-core"; +import { Address, Transaction as TransactionFromSdk, TransactionComputer } from "@multiversx/sdk-core"; import { CacheService } from "@multiversx/sdk-nestjs-cache"; import { Injectable, Logger } from "@nestjs/common"; import { TransactionBatch } from "./entities/transaction.batch"; @@ -36,7 +36,7 @@ export class TransactionsBatchService { for (const item of group.items) { const tx = item.transaction.tx; - const trans = new ErdJsTransaction({ + const trans = new TransactionFromSdk({ nonce: BigInt(tx.nonce), value: BigInt(tx.value), receiver: new Address(tx.receiver), From 1318dc4039183ee33408433458242d979e0338ca Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 27 May 2026 15:42:18 +0300 Subject: [PATCH 181/206] remove workflow dispatch triggering --- .github/workflows/chain-simulator-e2e-tests.yml | 1 - .github/workflows/lint.yml | 1 - .github/workflows/load-tests.yml | 1 - .github/workflows/unit.tests.yml | 1 - 4 files changed, 4 deletions(-) diff --git a/.github/workflows/chain-simulator-e2e-tests.yml b/.github/workflows/chain-simulator-e2e-tests.yml index 4fe9d286f..e42234b57 100644 --- a/.github/workflows/chain-simulator-e2e-tests.yml +++ b/.github/workflows/chain-simulator-e2e-tests.yml @@ -5,7 +5,6 @@ on: branches: [main, development] pull_request: branches: [main, development] - workflow_dispatch: jobs: test-chainsimulator-e2e: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index fbfa63f35..34d5285e4 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -8,7 +8,6 @@ on: branches: [main, development] pull_request: branches: [main, development] - workflow_dispatch: jobs: build: diff --git a/.github/workflows/load-tests.yml b/.github/workflows/load-tests.yml index 2adcdb14b..faa6466ee 100644 --- a/.github/workflows/load-tests.yml +++ b/.github/workflows/load-tests.yml @@ -3,7 +3,6 @@ name: Load Tests on: pull_request: branches: [main, development] - workflow_dispatch: jobs: test-base: diff --git a/.github/workflows/unit.tests.yml b/.github/workflows/unit.tests.yml index 6d35337c2..b1a4919e0 100644 --- a/.github/workflows/unit.tests.yml +++ b/.github/workflows/unit.tests.yml @@ -8,7 +8,6 @@ on: branches: [main, development] pull_request: branches: [main, development] - workflow_dispatch: jobs: build: From f07996c1cf52418b27265e8e0bfac900c66f8d2a Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 27 May 2026 17:11:30 +0300 Subject: [PATCH 182/206] fix unit tests --- src/test/unit/controllers/accounts.controller.spec.ts | 6 ++++++ src/test/unit/controllers/collections.controller.spec.ts | 4 ++++ src/test/unit/controllers/delegation.controller.spec.ts | 9 ++++++++- src/test/unit/controllers/network.controller.spec.ts | 9 ++++++++- src/test/unit/controllers/pool.controller.spec.ts | 9 +++++++-- .../services.mock/event.emitter2.services.mock.ts | 8 ++++++++ src/test/unit/controllers/shard.controller.spec.ts | 9 ++++++++- src/test/unit/services/collections.spec.ts | 6 ++++++ 8 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 src/test/unit/controllers/services.mock/event.emitter2.services.mock.ts diff --git a/src/test/unit/controllers/accounts.controller.spec.ts b/src/test/unit/controllers/accounts.controller.spec.ts index ab99de595..eca0c0810 100644 --- a/src/test/unit/controllers/accounts.controller.spec.ts +++ b/src/test/unit/controllers/accounts.controller.spec.ts @@ -31,6 +31,8 @@ import { AccountDeferred } from "src/endpoints/accounts/entities/account.deferre import request = require('supertest'); import { mockAccountService, mockTokenService, mockNftService, mockDelegationLegacyService, mockWaitingListService, mockStakeService, mockTransactionService, mockSmartContractResultService, mockCollectionService, mockTransferService, mockApiConfigService, mockDelegationService } from "./services.mock/account.services.mock"; import { AccountFetchOptions } from "src/endpoints/accounts/entities/account.fetch.options"; +import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter"; +import { mockEventEmitterService } from "./services.mock/event.emitter2.services.mock"; describe('AccountController', () => { let app: INestApplication; @@ -56,6 +58,7 @@ describe('AccountController', () => { ApiConfigModule, DelegationModule, ConfigModule.forRoot({}), + EventEmitterModule.forRoot({ maxListeners: 1 }), ], }) .overrideProvider(AccountService).useValue(accountServiceMocks) @@ -70,12 +73,15 @@ describe('AccountController', () => { .overrideProvider(TransferService).useValue(mockTransferService()) .overrideProvider(ApiConfigService).useValue(mockApiConfigService()) .overrideProvider(DelegationService).useValue(mockDelegationService()) + .overrideProvider(EventEmitter2).useValue(mockEventEmitterService()) .compile(); app = moduleFixture.createNestApplication(); await app.init(); }); + afterEach(() => { jest.clearAllMocks(); }); + describe("GET /accounts", () => { it('should return the default list of 25 accounts', async () => { const defaultAccountsList = createMockAccountsList(25); diff --git a/src/test/unit/controllers/collections.controller.spec.ts b/src/test/unit/controllers/collections.controller.spec.ts index 2ffef1f26..d8dea7ea6 100644 --- a/src/test/unit/controllers/collections.controller.spec.ts +++ b/src/test/unit/controllers/collections.controller.spec.ts @@ -23,6 +23,8 @@ import { TransactionStatus } from "src/endpoints/transactions/entities/transacti import { mockTransferService } from "./services.mock/transfer.services.mock"; import { TransferService } from "src/endpoints/transfers/transfer.service"; import { TransferModule } from "src/endpoints/transfers/transfer.module"; +import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter"; +import { mockEventEmitterService } from "./services.mock/event.emitter2.services.mock"; describe('CollectionController', () => { let app: INestApplication; @@ -43,12 +45,14 @@ describe('CollectionController', () => { TransactionModule, TransferModule, ConfigModule.forRoot({}), + EventEmitterModule.forRoot({ maxListeners: 1 }) ], }) .overrideProvider(CollectionService).useValue(collectionServiceMocks) .overrideProvider(NftService).useValue(nftServiceMocks) .overrideProvider(TransactionService).useValue(transactionServiceMocks) .overrideProvider(TransferService).useValue(transferServiceMocks) + .overrideProvider(EventEmitter2).useValue(mockEventEmitterService()) .compile(); app = moduleFixture.createNestApplication(); diff --git a/src/test/unit/controllers/delegation.controller.spec.ts b/src/test/unit/controllers/delegation.controller.spec.ts index 9b7c85b26..5549fb1b7 100644 --- a/src/test/unit/controllers/delegation.controller.spec.ts +++ b/src/test/unit/controllers/delegation.controller.spec.ts @@ -5,6 +5,8 @@ import { mockDelegationService } from "./services.mock/delegation.services.mock" import { DelegationController } from "src/endpoints/delegation/delegation.controller"; import { DelegationModule } from "src/endpoints/delegation/delegation.module"; import { DelegationService } from "src/endpoints/delegation/delegation.service"; +import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter"; +import { mockEventEmitterService } from "./services.mock/event.emitter2.services.mock"; describe('DelegationController', () => { let app: INestApplication; @@ -15,10 +17,15 @@ describe('DelegationController', () => { jest.resetAllMocks(); const moduleFixture = await Test.createTestingModule({ controllers: [DelegationController], - imports: [DelegationModule], + imports: [ + DelegationModule, + EventEmitterModule.forRoot({ maxListeners: 1 }) + ], }) .overrideProvider(DelegationService) .useValue(delegationServiceMocks) + .overrideProvider(EventEmitter2) + .useValue(mockEventEmitterService()) .compile(); app = moduleFixture.createNestApplication(); diff --git a/src/test/unit/controllers/network.controller.spec.ts b/src/test/unit/controllers/network.controller.spec.ts index e4ba8bee8..54c7f2fe4 100644 --- a/src/test/unit/controllers/network.controller.spec.ts +++ b/src/test/unit/controllers/network.controller.spec.ts @@ -10,6 +10,8 @@ import { Economics } from "src/endpoints/network/entities/economics"; import { Stats } from "src/endpoints/network/entities/stats"; import { About } from "src/endpoints/network/entities/about"; import { FeatureConfigs } from "../../../endpoints/network/entities/feature.configs"; +import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter"; +import { mockEventEmitterService } from "./services.mock/event.emitter2.services.mock"; describe("NetworkController", () => { let app: INestApplication; @@ -19,10 +21,15 @@ describe("NetworkController", () => { jest.resetAllMocks(); const moduleFixture = await Test.createTestingModule({ controllers: [NetworkController], - imports: [NetworkModule], + imports: [ + NetworkModule, + EventEmitterModule.forRoot({ maxListeners: 1 }) + ], }) .overrideProvider(NetworkService) .useValue(networkServiceMocks) + .overrideProvider(EventEmitter2) + .useValue(mockEventEmitterService()) .compile(); app = moduleFixture.createNestApplication(); diff --git a/src/test/unit/controllers/pool.controller.spec.ts b/src/test/unit/controllers/pool.controller.spec.ts index 6b6b746cc..ff8757490 100644 --- a/src/test/unit/controllers/pool.controller.spec.ts +++ b/src/test/unit/controllers/pool.controller.spec.ts @@ -8,6 +8,8 @@ import request = require('supertest'); import { QueryPagination } from "src/common/entities/query.pagination"; import { PoolFilter } from "src/endpoints/pool/entities/pool.filter"; import { TransactionType } from "src/endpoints/transactions/entities/transaction.type"; +import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter"; +import { mockEventEmitterService } from "./services.mock/event.emitter2.services.mock"; describe('PoolController', () => { let app: INestApplication; @@ -19,8 +21,11 @@ describe('PoolController', () => { jest.resetAllMocks(); const moduleFixture: TestingModule = await Test.createTestingModule({ controllers: [PoolController], - imports: [PoolModule], - }).overrideProvider(PoolService).useValue(poolServiceMocks) + imports: [PoolModule, EventEmitterModule.forRoot({ maxListeners: 1 })], + }).overrideProvider(PoolService) + .useValue(poolServiceMocks) + .overrideProvider(EventEmitter2) + .useValue(mockEventEmitterService()) .compile(); app = moduleFixture.createNestApplication(); diff --git a/src/test/unit/controllers/services.mock/event.emitter2.services.mock.ts b/src/test/unit/controllers/services.mock/event.emitter2.services.mock.ts new file mode 100644 index 000000000..38f6ec83a --- /dev/null +++ b/src/test/unit/controllers/services.mock/event.emitter2.services.mock.ts @@ -0,0 +1,8 @@ +export const mockEventEmitterService = () => ({ + emit: jest.fn().mockReturnValue(true), + emitAsync: jest.fn().mockResolvedValue([]), + on: jest.fn().mockReturnThis(), + once: jest.fn().mockReturnThis(), + off: jest.fn().mockReturnThis(), + removeAllListeners: jest.fn().mockReturnThis(), +}); diff --git a/src/test/unit/controllers/shard.controller.spec.ts b/src/test/unit/controllers/shard.controller.spec.ts index 99aaf5521..74ec4460e 100644 --- a/src/test/unit/controllers/shard.controller.spec.ts +++ b/src/test/unit/controllers/shard.controller.spec.ts @@ -6,6 +6,8 @@ import { ShardService } from "src/endpoints/shards/shard.service"; import { mockShardService } from "./services.mock/shard.service.mock"; import request = require('supertest'); import { QueryPagination } from "src/common/entities/query.pagination"; +import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter"; +import { mockEventEmitterService } from "./services.mock/event.emitter2.services.mock"; describe('ShardController', () => { let app: INestApplication; @@ -15,10 +17,15 @@ describe('ShardController', () => { beforeAll(async () => { const moduleRef = await Test.createTestingModule({ controllers: [ShardController], - imports: [ShardModule], + imports: [ + ShardModule, + EventEmitterModule.forRoot({ maxListeners: 1 }) + ], }) .overrideProvider(ShardService) .useValue(shardServiceMock) + .overrideProvider(EventEmitter2) + .useValue(mockEventEmitterService()) .compile(); app = moduleRef.createNestApplication(); diff --git a/src/test/unit/services/collections.spec.ts b/src/test/unit/services/collections.spec.ts index 3d47d0e4f..4faada264 100644 --- a/src/test/unit/services/collections.spec.ts +++ b/src/test/unit/services/collections.spec.ts @@ -14,6 +14,8 @@ import { EsdtService } from "src/endpoints/esdt/esdt.service"; import { CollectionRoles } from "src/endpoints/tokens/entities/collection.roles"; import { TokenAssetStatus } from "src/endpoints/tokens/entities/token.asset.status"; import { VmQueryService } from "src/endpoints/vm.query/vm.query.service"; +import { mockEventEmitterService } from "../controllers/services.mock/event.emitter2.services.mock"; +import { EventEmitter2 } from "@nestjs/event-emitter"; describe('CollectionService', () => { let service: CollectionService; @@ -143,6 +145,10 @@ describe('CollectionService', () => { processCollections: jest.fn(), }, }, + { + provide: EventEmitter2, + useValue: mockEventEmitterService(), + } ], }).compile(); From 40e0f11b2366836060d440b55650e840cc9cbe93 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 27 May 2026 17:13:55 +0300 Subject: [PATCH 183/206] fix lint --- src/test/unit/controllers/collections.controller.spec.ts | 2 +- src/test/unit/controllers/delegation.controller.spec.ts | 2 +- src/test/unit/controllers/network.controller.spec.ts | 2 +- src/test/unit/controllers/shard.controller.spec.ts | 2 +- src/test/unit/services/collections.spec.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/unit/controllers/collections.controller.spec.ts b/src/test/unit/controllers/collections.controller.spec.ts index d8dea7ea6..469668610 100644 --- a/src/test/unit/controllers/collections.controller.spec.ts +++ b/src/test/unit/controllers/collections.controller.spec.ts @@ -45,7 +45,7 @@ describe('CollectionController', () => { TransactionModule, TransferModule, ConfigModule.forRoot({}), - EventEmitterModule.forRoot({ maxListeners: 1 }) + EventEmitterModule.forRoot({ maxListeners: 1 }), ], }) .overrideProvider(CollectionService).useValue(collectionServiceMocks) diff --git a/src/test/unit/controllers/delegation.controller.spec.ts b/src/test/unit/controllers/delegation.controller.spec.ts index 5549fb1b7..53f6e1045 100644 --- a/src/test/unit/controllers/delegation.controller.spec.ts +++ b/src/test/unit/controllers/delegation.controller.spec.ts @@ -19,7 +19,7 @@ describe('DelegationController', () => { controllers: [DelegationController], imports: [ DelegationModule, - EventEmitterModule.forRoot({ maxListeners: 1 }) + EventEmitterModule.forRoot({ maxListeners: 1 }), ], }) .overrideProvider(DelegationService) diff --git a/src/test/unit/controllers/network.controller.spec.ts b/src/test/unit/controllers/network.controller.spec.ts index 54c7f2fe4..14963a056 100644 --- a/src/test/unit/controllers/network.controller.spec.ts +++ b/src/test/unit/controllers/network.controller.spec.ts @@ -23,7 +23,7 @@ describe("NetworkController", () => { controllers: [NetworkController], imports: [ NetworkModule, - EventEmitterModule.forRoot({ maxListeners: 1 }) + EventEmitterModule.forRoot({ maxListeners: 1 }), ], }) .overrideProvider(NetworkService) diff --git a/src/test/unit/controllers/shard.controller.spec.ts b/src/test/unit/controllers/shard.controller.spec.ts index 74ec4460e..4c002b08d 100644 --- a/src/test/unit/controllers/shard.controller.spec.ts +++ b/src/test/unit/controllers/shard.controller.spec.ts @@ -19,7 +19,7 @@ describe('ShardController', () => { controllers: [ShardController], imports: [ ShardModule, - EventEmitterModule.forRoot({ maxListeners: 1 }) + EventEmitterModule.forRoot({ maxListeners: 1 }), ], }) .overrideProvider(ShardService) diff --git a/src/test/unit/services/collections.spec.ts b/src/test/unit/services/collections.spec.ts index 4faada264..9fab5eedc 100644 --- a/src/test/unit/services/collections.spec.ts +++ b/src/test/unit/services/collections.spec.ts @@ -148,7 +148,7 @@ describe('CollectionService', () => { { provide: EventEmitter2, useValue: mockEventEmitterService(), - } + }, ], }).compile(); From 0d99560f6bfbe68b310ad9529dd2bf9aa8e99e5d Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 27 May 2026 17:29:58 +0300 Subject: [PATCH 184/206] remove schedule module from public app --- src/public.app.module.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/public.app.module.ts b/src/public.app.module.ts index 31cd187ed..524185e66 100644 --- a/src/public.app.module.ts +++ b/src/public.app.module.ts @@ -11,11 +11,9 @@ import { DynamicModuleUtils } from './utils/dynamic.module.utils'; import { LocalCacheController } from './endpoints/caching/local.cache.controller'; import { RestrictedRoutesMiddleware } from './utils/restricted.routes.middleware'; import { ApiMetricsModule } from './common/metrics/api.metrics.module'; -import { ScheduleModule } from '@nestjs/schedule'; @Module({ imports: [ - ScheduleModule.forRoot(), LoggingModule, EndpointsServicesModule, EndpointsControllersModule.forRoot(), From 4827d6cf595c1d489a3a758be741da81bed12227 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 28 May 2026 12:00:51 +0300 Subject: [PATCH 185/206] update dockerfile --- Dockerfile | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index bc1fe8199..6fe9e18dd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,8 +7,11 @@ USER node RUN mkdir -p /app/dist/src COPY --chown=node . /app -RUN npm install +RUN npm install + +# should be removed if you are using custom plugins RUN npm run init + RUN npm run build FROM node:24.14.0-alpine @@ -17,6 +20,8 @@ ENV PYTHONUNBUFFERED=1 RUN apk add --no-cache python3 py3-pip py3-ruamel.yaml git WORKDIR /app +RUN mkdir -p /app/src/plugins + RUN chown -R node:node /app @@ -24,10 +29,13 @@ COPY --from=build --chown=node /app/*.json /app/ COPY --from=build --chown=node /app/dist /app/dist COPY --from=build --chown=node /app/node_modules /app/node_modules COPY --from=build --chown=node /app/config /app/config +COPY --from=build --chown=node /app/.git /app/.git +COPY --from=build --chown=node /app/src/plugins /app/src/plugins + + COPY entrypoint.py /app/entrypoint.py USER node EXPOSE 3001 CMD ["python", "entrypoint.py"] - From 9ef7205b1a14acc213c98a640250308444d4652d Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 28 May 2026 12:49:31 +0300 Subject: [PATCH 186/206] increase wait ws messages time --- src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts index 579125423..7721f4508 100644 --- a/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts +++ b/src/test/chain-simulator/websocket.subscriptions.cs-e2e.ts @@ -207,7 +207,7 @@ describe('Websocket subscriptions e2e tests', () => { await axios.post(`${config.chainSimulatorUrl}/simulator/generate-blocks/10`); log("Waiting for WS messages..."); - await new Promise(resolve => setTimeout(resolve, 30000)); + await new Promise(resolve => setTimeout(resolve, 35000)); } catch (e: any) { console.error("Error in beforeAll:", e.message); From 57bc165072229b9e667b52967f25d4707c34642d Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 28 May 2026 12:56:23 +0300 Subject: [PATCH 187/206] test --- src/public.app.module.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/public.app.module.ts b/src/public.app.module.ts index 524185e66..31cd187ed 100644 --- a/src/public.app.module.ts +++ b/src/public.app.module.ts @@ -11,9 +11,11 @@ import { DynamicModuleUtils } from './utils/dynamic.module.utils'; import { LocalCacheController } from './endpoints/caching/local.cache.controller'; import { RestrictedRoutesMiddleware } from './utils/restricted.routes.middleware'; import { ApiMetricsModule } from './common/metrics/api.metrics.module'; +import { ScheduleModule } from '@nestjs/schedule'; @Module({ imports: [ + ScheduleModule.forRoot(), LoggingModule, EndpointsServicesModule, EndpointsControllersModule.forRoot(), From 9fec2aaf67381b2653067a07dba0d326d70650bc Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 28 May 2026 13:02:26 +0300 Subject: [PATCH 188/206] revert test commit --- src/public.app.module.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/public.app.module.ts b/src/public.app.module.ts index 31cd187ed..524185e66 100644 --- a/src/public.app.module.ts +++ b/src/public.app.module.ts @@ -11,11 +11,9 @@ import { DynamicModuleUtils } from './utils/dynamic.module.utils'; import { LocalCacheController } from './endpoints/caching/local.cache.controller'; import { RestrictedRoutesMiddleware } from './utils/restricted.routes.middleware'; import { ApiMetricsModule } from './common/metrics/api.metrics.module'; -import { ScheduleModule } from '@nestjs/schedule'; @Module({ imports: [ - ScheduleModule.forRoot(), LoggingModule, EndpointsServicesModule, EndpointsControllersModule.forRoot(), From ec6064792162a84921a194f91d399f5c60d6971c Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 28 May 2026 13:17:07 +0300 Subject: [PATCH 189/206] use latest git actions tools --- .github/workflows/build-docker-image.yaml | 4 ++-- .../workflows/chain-simulator-e2e-tests.yml | 4 ++-- .github/workflows/lint.yml | 4 ++-- .github/workflows/load-tests.yml | 20 +++++++++---------- .github/workflows/unit.tests.yml | 4 ++-- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build-docker-image.yaml b/.github/workflows/build-docker-image.yaml index 2bb16577a..a72e8c61d 100644 --- a/.github/workflows/build-docker-image.yaml +++ b/.github/workflows/build-docker-image.yaml @@ -15,10 +15,10 @@ jobs: attestations: write steps: - name: Check out the repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: '24' # Specify your Node.js version diff --git a/.github/workflows/chain-simulator-e2e-tests.yml b/.github/workflows/chain-simulator-e2e-tests.yml index e42234b57..3295931b6 100644 --- a/.github/workflows/chain-simulator-e2e-tests.yml +++ b/.github/workflows/chain-simulator-e2e-tests.yml @@ -14,10 +14,10 @@ jobs: node-version: [24.x] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} cache: 'npm' diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 34d5285e4..6d00b8e53 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -19,9 +19,9 @@ jobs: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} cache: 'npm' diff --git a/.github/workflows/load-tests.yml b/.github/workflows/load-tests.yml index faa6466ee..2900ff179 100644 --- a/.github/workflows/load-tests.yml +++ b/.github/workflows/load-tests.yml @@ -9,12 +9,12 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: ref: ${{ github.event.pull_request.base.sha }} - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: '24' @@ -58,7 +58,7 @@ jobs: run: k6 run ./k6/script.js - name: Upload result file for base branch - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: base-results path: k6/output/summary.json @@ -70,12 +70,12 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: ref: ${{ github.event.pull_request.head.sha }} - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: '24' @@ -119,7 +119,7 @@ jobs: run: k6 run ./k6/script.js - name: Upload result file for head branch - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: head-results path: k6/output/summary.json @@ -132,15 +132,15 @@ jobs: needs: [test-base, test-head] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Download all artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: path: artifacts - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: '24' @@ -159,7 +159,7 @@ jobs: head: ${{ github.event.pull_request.head.sha }} - name: Upload the report markdown - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 if: github.event_name == 'pull_request' with: name: report-markdown diff --git a/.github/workflows/unit.tests.yml b/.github/workflows/unit.tests.yml index b1a4919e0..b09b59f53 100644 --- a/.github/workflows/unit.tests.yml +++ b/.github/workflows/unit.tests.yml @@ -19,9 +19,9 @@ jobs: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} cache: 'npm' From f392348cdd413e0e5682fa9e9bf406b5472c7476 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 28 May 2026 17:38:39 +0300 Subject: [PATCH 190/206] upgrade dev tools + linter --- .eslintrc.js | 34 - eslint.config.js | 42 + package-lock.json | 1573 +++++++++-------- package.json | 18 +- src/endpoints/network/network.service.ts | 4 +- .../providers/provider.controller.ts | 2 +- src/test/jest-chain-simulator.json | 2 +- tsconfig.json | 3 +- 8 files changed, 919 insertions(+), 759 deletions(-) delete mode 100644 .eslintrc.js create mode 100644 eslint.config.js diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index f5700ffbd..000000000 --- a/.eslintrc.js +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = { - parser: '@typescript-eslint/parser', - parserOptions: { - project: 'tsconfig.json', - sourceType: 'module', - }, - plugins: ['@typescript-eslint/eslint-plugin'], - extends: [ - 'plugin:@typescript-eslint/recommended', - // 'plugin:prettier/recommended', - ], - root: true, - env: { - node: true, - jest: true, - }, - rules: { - "@typescript-eslint/no-explicit-any": ["off"], - "@typescript-eslint/no-unused-vars": ["off"], - "@typescript-eslint/ban-ts-comment": ["off"], - "@typescript-eslint/no-empty-function": ["off"], - "@typescript-eslint/ban-types": ["off"], - "@typescript-eslint/no-var-requires": ["off"], - "@typescript-eslint/no-inferrable-types": ["off"], - "require-await": ["error"], - "@typescript-eslint/no-floating-promises": ["error"], - "max-len": ["off"], - "semi": ["error"], - "comma-dangle": ["error", "always-multiline"], - "eol-last": ["error"], - "@typescript-eslint/await-thenable": "error", - }, - ignorePatterns: ['.eslintrc.js'], -}; \ No newline at end of file diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..50ea61d6c --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,42 @@ +const tsParser = require('@typescript-eslint/parser'); +const tsPlugin = require('@typescript-eslint/eslint-plugin'); + +module.exports = [ + { + ignores: [ + 'dist/**', + 'node_modules/**', + 'eslint.config.js' + ], + }, + { + files: ['**/*.ts', '**/*.tsx'], + languageOptions: { + parser: tsParser, + parserOptions: { + project: './tsconfig.json', + sourceType: 'module' + }, + }, + plugins: { + '@typescript-eslint': tsPlugin + }, + rules: { + "require-await": ["error"], + "max-len": ["off"], + "semi": ["error"], + "comma-dangle": ["error", "only-multiline"], + "eol-last": ["error"], + + "@typescript-eslint/no-explicit-any": ["off"], + "@typescript-eslint/no-unused-vars": ["off"], + "@typescript-eslint/ban-ts-comment": ["off"], + "@typescript-eslint/no-empty-function": ["off"], + "@typescript-eslint/ban-types": ["off"], + "@typescript-eslint/no-var-requires": ["off"], + "@typescript-eslint/no-inferrable-types": ["off"], + "@typescript-eslint/no-floating-promises": ["error"], + "@typescript-eslint/await-thenable": ["error"], + }, + }, +]; diff --git a/package-lock.json b/package-lock.json index 20e08b208..1772b9cad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -104,20 +104,20 @@ "@types/sharp": "^0.28.3", "@types/supertest": "^2.0.11", "@types/tiny-async-pool": "^1.0.0", - "@typescript-eslint/eslint-plugin": "^5.14.0", - "@typescript-eslint/parser": "^5.14.0", - "eslint": "^8.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^4.0.0", + "@typescript-eslint/eslint-plugin": "^8.60.0", + "@typescript-eslint/parser": "^8.60.0", + "eslint": "^10.4.0", + "eslint-config-prettier": "^10.1.0", + "eslint-plugin-prettier": "^5.5.6", "jest": "29.5.0", "prettier": "^3.5.3", "run-script-os": "^1.1.6", "supertest": "^6.2.2", - "ts-jest": "^29.0.5", - "ts-loader": "9.4.2", - "ts-node": "10.7.0", + "ts-jest": "29.4.11", + "ts-loader": "9.5.7", + "ts-node": "10.9.2", "tsconfig-paths": "^4.0.0", - "typescript": "^4.6.2", + "typescript": "^6.0.3", "webpack": "^5.73.0" } }, @@ -674,23 +674,23 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1053.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1053.0.tgz", - "integrity": "sha512-/oGxoB6p1Nqs935Blt+v1o+anSCEf2n3RjIrcLz84i4cn2Gr+Z7JpDdUkG5+74r5ctqEPG7k/phTGbJ9fNKnHg==", + "version": "3.1055.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1055.0.tgz", + "integrity": "sha512-FxVwuw86c2Mw4p+0tOtoE+1sDTk+eOBZD/NwwK+wwx1gHkdO/EYSv231O9A1YM8HPjUrI0vZ/hP/szckBxHW0A==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.13", - "@aws-sdk/credential-provider-node": "^3.972.44", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.15", + "@aws-sdk/core": "^3.974.14", + "@aws-sdk/credential-provider-node": "^3.972.45", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.16", "@aws-sdk/middleware-expect-continue": "^3.972.13", - "@aws-sdk/middleware-flexible-checksums": "^3.974.21", + "@aws-sdk/middleware-flexible-checksums": "^3.974.22", "@aws-sdk/middleware-location-constraint": "^3.972.11", - "@aws-sdk/middleware-sdk-s3": "^3.972.42", + "@aws-sdk/middleware-sdk-s3": "^3.972.43", "@aws-sdk/middleware-ssec": "^3.972.11", - "@aws-sdk/signature-v4-multi-region": "^3.996.28", + "@aws-sdk/signature-v4-multi-region": "^3.996.29", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/fetch-http-handler": "^5.4.3", @@ -703,13 +703,13 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.974.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.13.tgz", - "integrity": "sha512-+Y5/4tHki0uYgyx8eun146DegRVQBpdKGK5RbV0FTKJPpaKTchvqVxrrRFK6Wk0JksO4iAZKw3eqxGEIwtO98w==", + "version": "3.974.14", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.14.tgz", + "integrity": "sha512-ppamm04uoj3hhNO5IlQSs5D6rWX1fWkzcn6a4pZrojk8Y6ObY9wzLDdT/Eq3gv6O9hOebi9tYTNB8b8fQj9XJw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.9", - "@aws-sdk/xml-builder": "^3.972.25", + "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.3", "@smithy/signature-v4": "^5.4.2", @@ -735,12 +735,12 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.39", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.39.tgz", - "integrity": "sha512-29wX9zpAvEt1vcj0psha+y6ygBHy2V/S72mp6e7q0KARLWXq+pwE/lR6qGkwknQvruh52lXvlqZIga8Hdxkucw==", + "version": "3.972.40", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.40.tgz", + "integrity": "sha512-jjT0p0Y7KZtcvExYiPCLJnqM9lkXDV1KBEg/13OE2DXv/9batzlyJHVKUEnRNJccY0O2Sul17E1su38CgdBhGQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.13", + "@aws-sdk/core": "^3.974.14", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", @@ -751,12 +751,12 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.41", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.41.tgz", - "integrity": "sha512-IA3CQTjtJkb6u1H4mE4936c8OPBMa9Jggtwe8U2Mqw/vvb/tZ5Ebd0mcZcX0uKWQhOyYo/+qNIwkV5Xh+FeJJA==", + "version": "3.972.42", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.42.tgz", + "integrity": "sha512-+3fsKtWybe5BjKEUA3/07oh7Ayfd82IED2+gyyaVfS/4PU78E3TaOQxSGOJ1t7Imefoidw/ne9QA7apX8wEnJg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.13", + "@aws-sdk/core": "^3.974.14", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/fetch-http-handler": "^5.4.3", @@ -769,19 +769,19 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.43", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.43.tgz", - "integrity": "sha512-4mzII+3mZEVXXE1xzrLQrCJL7/r62A63bA6SVzZoNL5rqCJghpf+xgGltVrIBBs0n+mOZBKrQl2tRREtvZ5l6A==", + "version": "3.972.44", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.44.tgz", + "integrity": "sha512-gZFw5wBefCIPg9vpT+gV5FdhfNKhYTVDZa1IsZCcn3SRoYUOJ/E05vwIogkJoonqBL0ttBGi5vhthX7xceekRg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.13", - "@aws-sdk/credential-provider-env": "^3.972.39", - "@aws-sdk/credential-provider-http": "^3.972.41", - "@aws-sdk/credential-provider-login": "^3.972.43", - "@aws-sdk/credential-provider-process": "^3.972.39", - "@aws-sdk/credential-provider-sso": "^3.972.43", - "@aws-sdk/credential-provider-web-identity": "^3.972.43", - "@aws-sdk/nested-clients": "^3.997.11", + "@aws-sdk/core": "^3.974.14", + "@aws-sdk/credential-provider-env": "^3.972.40", + "@aws-sdk/credential-provider-http": "^3.972.42", + "@aws-sdk/credential-provider-login": "^3.972.44", + "@aws-sdk/credential-provider-process": "^3.972.40", + "@aws-sdk/credential-provider-sso": "^3.972.44", + "@aws-sdk/credential-provider-web-identity": "^3.972.44", + "@aws-sdk/nested-clients": "^3.997.12", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/credential-provider-imds": "^4.3.2", @@ -793,13 +793,13 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.43", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.43.tgz", - "integrity": "sha512-HG7kQCwXtbv3oBV61Ins0oNX8KKyvrMqqRkb6ZiAfQHbMuHaiNaEb2KnpKLPkNpqImSBK82UkVE/kaY6IfWikA==", + "version": "3.972.44", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.44.tgz", + "integrity": "sha512-QqEGHfQeZgUDqh7zpqHufrZ8T644ELEWvB+4gUdewLyRw4IRF+6CJqeQuRWqucZdQzoQeMh7fNAD9BWxFAdNig==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.13", - "@aws-sdk/nested-clients": "^3.997.11", + "@aws-sdk/core": "^3.974.14", + "@aws-sdk/nested-clients": "^3.997.12", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", @@ -810,17 +810,17 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.44", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.44.tgz", - "integrity": "sha512-sDaBIT0yrNNIPfvlsiTCmANm07zKju+ipWODjEXgZlsjMeIJR3LVp7RDyAOzUoAsTbDfYKDWp+i5WrFiQP6rmQ==", + "version": "3.972.45", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.45.tgz", + "integrity": "sha512-3YCv52ExXIRz3LAVNysevd+s7akSpg9dl39v9LJ7dOQH+s5rHi3jMZYQyxwMmglxQGMuzYRfQ0o1VSP2UOlIRw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.39", - "@aws-sdk/credential-provider-http": "^3.972.41", - "@aws-sdk/credential-provider-ini": "^3.972.43", - "@aws-sdk/credential-provider-process": "^3.972.39", - "@aws-sdk/credential-provider-sso": "^3.972.43", - "@aws-sdk/credential-provider-web-identity": "^3.972.43", + "@aws-sdk/credential-provider-env": "^3.972.40", + "@aws-sdk/credential-provider-http": "^3.972.42", + "@aws-sdk/credential-provider-ini": "^3.972.44", + "@aws-sdk/credential-provider-process": "^3.972.40", + "@aws-sdk/credential-provider-sso": "^3.972.44", + "@aws-sdk/credential-provider-web-identity": "^3.972.44", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/credential-provider-imds": "^4.3.2", @@ -832,12 +832,12 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.39", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.39.tgz", - "integrity": "sha512-2k/amBifLd75eXNwgvPw/2lKYSQ3NhvHQgkVKVjfUq13/eJ3JRtHmznuFenn74OK3sSfp4SMy1YB2w+UVXoKqA==", + "version": "3.972.40", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.40.tgz", + "integrity": "sha512-cXaozlgJCOwmE6D7x4npcPdyk7kiFZdrGjN3D6tXXtItJJMNGPafDfAJn4YQmciMooG/X+b0Y6RTqdVVMx26jg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.13", + "@aws-sdk/core": "^3.974.14", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", @@ -848,14 +848,14 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.43", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.43.tgz", - "integrity": "sha512-LPc3+Y4vhH1T4x6CMqwCM6hk5+SRf/Lwmgm8INm95wxTtIRHcMwQUVkDzWu4Iw/RSncxYM2BC01OrYbxOPZvyg==", + "version": "3.972.44", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.44.tgz", + "integrity": "sha512-YePoj5kQuPmE0MHnyftXCfsO8ZSBd2kDr50XEIUrdejSbGFlayYvUuCohdb8drhGhPm6b65o7H1eC26EZhwUvA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.13", - "@aws-sdk/nested-clients": "^3.997.11", - "@aws-sdk/token-providers": "3.1052.0", + "@aws-sdk/core": "^3.974.14", + "@aws-sdk/nested-clients": "^3.997.12", + "@aws-sdk/token-providers": "3.1054.0", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", @@ -866,13 +866,13 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.43", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.43.tgz", - "integrity": "sha512-wQtL34lUD/09VXjwAUo2T+I3aEXRDxMB3DKmTJL/Zj0Gi6sLDTrVhae1XVt01yzkquOWajI/sZW72JGDZ1ciTw==", + "version": "3.972.44", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.44.tgz", + "integrity": "sha512-Ys/JJe++8Z2Y5meR1taMBaVcrGBA0/XsVTQR+qOKZbdNyg+8Jlv5rYZSwh8SqEHY00goSOZy7PHzZ2rLNQxDLg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.13", - "@aws-sdk/nested-clients": "^3.997.11", + "@aws-sdk/core": "^3.974.14", + "@aws-sdk/nested-clients": "^3.997.12", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", @@ -883,12 +883,12 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.972.15", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.15.tgz", - "integrity": "sha512-O2HDANa+MrvbxpaRVQDiH3T13uAa9AkMjKyZmDygwauAmmvqZ5B0iRmKW+fuVGW6NPXuyXurFgIx69lSvmAWGA==", + "version": "3.972.16", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.16.tgz", + "integrity": "sha512-FhasMTBDBmMN7EEa1hUeHwo5p5Mv3Dm8w0VEbdXX/6ola/uyhRuJt8zGkH09mLTmab20USTzEpPqyqEoe1MqNg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.13", + "@aws-sdk/core": "^3.974.14", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", @@ -914,15 +914,15 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.974.21", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.21.tgz", - "integrity": "sha512-alAu9heyiBK/OmRNXVxq8mmPTgeW2AQ6EYjRsI38kPZa1MZvt2Jh+BlGq7/GG9OVXOaEgD7DlGj/Lzfy5OmuEg==", + "version": "3.974.22", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.22.tgz", + "integrity": "sha512-ot1kZ1JGHUxcXPOARhej/n/+Odfx9VPt60pNrUq8Lf/U2blIF3+uj5v56gw76VD70dZvrfeLNo9jKz6pQJfOlA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.974.13", + "@aws-sdk/core": "^3.974.14", "@aws-sdk/crc64-nvme": "^3.972.9", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", @@ -948,16 +948,15 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.42", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.42.tgz", - "integrity": "sha512-/xNqNGXv9LaxZd25L9VV4pnSOw9OdDNO4rAHamM+h3KQBSITljIH9vk3dveGga1I2j36lQd0rdG3gjNEXvtNew==", + "version": "3.972.43", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.43.tgz", + "integrity": "sha512-CBmixMY36JdAdt9ALgm7yVlvOXGUCHt9Z2kn5p9XVO5StO6HCH+cayV7YYV1CDLsXvVyebaXgBmif9wHoxCeNA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.13", - "@aws-sdk/signature-v4-multi-region": "^3.996.28", + "@aws-sdk/core": "^3.974.14", + "@aws-sdk/signature-v4-multi-region": "^3.996.29", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", - "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -980,15 +979,15 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.11", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.11.tgz", - "integrity": "sha512-nWXXJ1r/r8N2Gw1pWolRgED38/A9A8DHR2ETWIv220zh4PZHcybbR4hUVWWktmNXTRHzDJwRluapHn0rZxuoqA==", + "version": "3.997.12", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.12.tgz", + "integrity": "sha512-Js2VYaCM269feB0cs0cGmlIhdOgT9aMqzdBx68lCy6kVCYfzr0T36ovUFDvfUmatkuBeyBJhCwaLBh7P8meH5Q==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.13", - "@aws-sdk/signature-v4-multi-region": "^3.996.28", + "@aws-sdk/core": "^3.974.14", + "@aws-sdk/signature-v4-multi-region": "^3.996.29", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/fetch-http-handler": "^5.4.3", @@ -1001,13 +1000,12 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.28", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.28.tgz", - "integrity": "sha512-qs9z5LqXO/CZC2Lg9SGKpoLU8Rhi+m2pFKZqfO9pytX1clc0katqtsDNupJxFy0xT9wsZSPzM2v1y+/H/zfp5Q==", + "version": "3.996.29", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.29.tgz", + "integrity": "sha512-Few9FoQqOt/0KSvZYP+qdW0dfOhfQ9N+gl2UUDvCPW6mkPKHli9LMbKxWj+wZ5zKPaOoqxuR3Hhy3OTpndkfSw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", "@smithy/signature-v4": "^5.4.2", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" @@ -1017,13 +1015,13 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1052.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1052.0.tgz", - "integrity": "sha512-QqZNB3so7UIDxZtroc85TQaLVxdZRFm0eWM1CSR2N+b06as9TOrilvrlTZuj3guYlxMs6yLOgGxnklJ5qMYtTw==", + "version": "3.1054.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1054.0.tgz", + "integrity": "sha512-hG9YKApmZOw+drJ9Nuoaf/OvC8e5W1+3eoLeN5p2uVCZRWsv27teIS0b4kiH6Sfv3WMmamqYJxmE2WMwyp/L/A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.13", - "@aws-sdk/nested-clients": "^3.997.11", + "@aws-sdk/core": "^3.974.14", + "@aws-sdk/nested-clients": "^3.997.12", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.3", "@smithy/types": "^4.14.2", @@ -1059,12 +1057,11 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.25", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.25.tgz", - "integrity": "sha512-GH+Kjz4nPKWKHnsiQpnhP1MJdTGIcK4rAka6tzakgjjUkVgNsmPeEbbRAf09SzS1hjGu6duGHCBsxYke0BhHjQ==", + "version": "3.972.26", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.26.tgz", + "integrity": "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g==", "license": "Apache-2.0", "dependencies": { - "@nodable/entities": "2.1.0", "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" @@ -1638,29 +1635,30 @@ "node": ">=0.1.90" } }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "devOptional": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 12" - } - }, "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "devOptional": true, "license": "MIT", "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { "node": ">=12" } }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@dabh/diagnostics": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", @@ -1812,72 +1810,76 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz", + "integrity": "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", - "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@types/json-schema": "^7.0.15" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "node_modules/@eslint/plugin-kit": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz", + "integrity": "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@golevelup/nestjs-discovery": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-7.0.1.tgz", - "integrity": "sha512-dGQ6FbEk1TPS1jdnjUN9qiNrHyjvacIEFY6KgAwHjGvwihctVQ4N8eM/28wF1G9gYJ0reBG+HBZGyJ6FyZr3GQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@golevelup/nestjs-discovery/-/nestjs-discovery-7.0.3.tgz", + "integrity": "sha512-wBlSxU1wgBS+x4adwgp2qklXKCC9sufn8zrrSJ1WSCEHb48OBMrn0FskU862CFPwyotJaElRrirHTICAOsl1Mg==", "license": "MIT", - "dependencies": { - "lodash": "^4.18.1" - }, "peerDependencies": { "@nestjs/common": "^11.1.21", "@nestjs/core": "^11.1.21" @@ -1977,20 +1979,42 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -2007,13 +2031,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, - "license": "BSD-3-Clause" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@img/colour": { "version": "1.1.0", @@ -3293,6 +3323,24 @@ } } }, + "node_modules/@jest/reporters/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@jest/reporters/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -3315,6 +3363,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -3446,7 +3507,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -3467,7 +3528,7 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { @@ -3954,6 +4015,30 @@ } } }, + "node_modules/@nestjs/cli/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@nestjs/cli/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/@nestjs/cli/node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -4481,9 +4566,9 @@ "license": "MIT" }, "node_modules/@nodable/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.1.tgz", + "integrity": "sha512-Pig3HxDIoMgjdEH8OCf/dkcTmLFjJRjWuq8jSnklu284/TKOPibSRERmOykiwmyXTtv61mP+44f3GMx0tLAyjg==", "funding": [ { "type": "github", @@ -4596,6 +4681,19 @@ "node": ">=14" } }, + "node_modules/@pkgr/core": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.3.6.tgz", + "integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -4747,9 +4845,9 @@ } }, "node_modules/@smithy/core": { - "version": "3.24.4", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.4.tgz", - "integrity": "sha512-3UNRKEyQyAgVgM0LGlerCLm+ChZWZ1GPfde+jBEW6bm6bSBGU1p0EbblaUV3unbhwvidjLA5Zs3sOs7mnZwvAw==", + "version": "3.24.5", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.24.5.tgz", + "integrity": "sha512-Kt8phUg45M15EjhYAbZ+fFikYneijLu9Liugz8ZsYz2i8j0hzGv27LWKpEHYRfvj+LyCOSijpcR/2i8RouV+cA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", @@ -4761,12 +4859,12 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.4.tgz", - "integrity": "sha512-vKW0MEFRU4Y3MkVZUkpJm+g9qyPGLCXhc0YLggUdSdBB4g7IaSSsCE75P9rBXyWHrXY1UYSQUl8/DwsTR7QciA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.3.5.tgz", + "integrity": "sha512-yiF8xHpdkaTfzLVqFzsP6WvNghEK+qZzLYWFD13L2SsFhbXwBGlxdocKF95qjr7s5lE5NRage+EJFK4mAsx88Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.4", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -4775,12 +4873,12 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.4.tgz", - "integrity": "sha512-qM7AUKI4G6d7lNgaZD3lA1tWSolh5r6gcixfTZAPstVURfjIbvreVTPz+994M0yC3HbX4YYhDRgr31Xy3XwWOQ==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.4.5.tgz", + "integrity": "sha512-SK3VMeH0fibgdTg2QeB+O4p7Yy/2E5HBOHJeC58FshkDdeuX8lOgO7PfjYfLyPLP1ch55j91cQqKBzDS0mRjSQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.4", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -4801,12 +4899,12 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.4.tgz", - "integrity": "sha512-HIeF+1vrDGzPkkv39Hj2vlHSXHY3p958jd/8ZnePIY6+ZOsQX8coyEUKO5yQu4r0bQIVsbpotVIrXXwyycMStQ==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.7.5.tgz", + "integrity": "sha512-3dA9TQ+ybRSZ/m0wnbZhiBy4Dezjgq1Ib/ZZrYTpJDBgpoLLU/SDzZc/g0x0MNAdOJe1wPcM+x2PBRmoOur+Sw==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.4", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -4815,12 +4913,12 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.4.tgz", - "integrity": "sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.4.5.tgz", + "integrity": "sha512-QBJKWGqIknH0dc9LWpfH1mkdokAx6iXYN3UcQ3eY6uIEyScuoQAhfl94ge7ozUy9WgFUdE8xsvwBjaYBbWmPNA==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.24.4", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -5128,6 +5226,13 @@ "@types/estree": "*" } }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", @@ -5343,13 +5448,6 @@ "@types/node": "*" } }, - "node_modules/@types/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/send": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", @@ -5484,122 +5582,149 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.60.0.tgz", + "integrity": "sha512-QYb/sa74/s7OKMbACMjrYnGspj9Hs5YI5aaffSL65UfeBUzVzBJfVo3oWSpbzPurvm7yaCCo2Lk7lVj610HqKw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.60.0", + "@typescript-eslint/type-utils": "8.60.0", + "@typescript-eslint/utils": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@typescript-eslint/parser": "^8.60.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.60.0.tgz", + "integrity": "sha512-fcqpj/MyK4sxDPcbe7STNPbpQL4RLZOPWuaTmwZYuc+hJKzRf58yRxfhqGpc6PIq9ZyfSBpfHgmUHmHs0KwHwg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" + "@typescript-eslint/scope-manager": "8.60.0", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0", + "debug": "^4.4.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.60.0.tgz", + "integrity": "sha512-aZu74NNKJeUWqCjDddzdiKaS82dgYgV/vmf+Ui3ZdZejmgfXR/q+pRumgobnQ2cCJTgGTWp4ypiwsuofFubavg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.60.0", + "@typescript-eslint/types": "^8.60.0", + "debug": "^4.4.3" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.60.0.tgz", + "integrity": "sha512-pFzqhllJMs+jghLQWzV00ds39xLzuyqPSev5pd8f4Ir0rtKR3ZLUB4/4dhjOFighWb9larvtfJvqL+4yKDI3Xw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.60.0.tgz", + "integrity": "sha512-BZPR3RGYlAXnly6ymAxfkVn5rCbZzQNou0rxv3GfWZ8cTQp+hhVd73khbGLAd8k1TlAPLISH337M+tAgAnaJDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.60.0.tgz", + "integrity": "sha512-SX46wEUtitCpq7AN38HkUU/+zvUpdKf7ephtWAFgckH8O7PQIyL5gvrhQgBLuEYgLfuKWOVvWVskMbuFHAz5xg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0", + "@typescript-eslint/utils": "8.60.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.60.0.tgz", + "integrity": "sha512-AsE7x2XaAK+CVbeih0Fvbn+r1qHxtpLDJ3XUuFcIinT318T90yHMJC+Zgv+jUuDjQQd06HKwxnDu6sz1IcTilA==", "dev": true, "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -5607,84 +5732,87 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.60.0.tgz", + "integrity": "sha512-3AcZNBGMClm6CXDyo8kYvVGT/sx29sS0oBsIb9oZI2gunA4Vm2M3YHzRLPvsUBBsl+yB5FPtltq7gGH0iTlp9g==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "@typescript-eslint/project-service": "8.60.0", + "@typescript-eslint/tsconfig-utils": "8.60.0", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/visitor-keys": "8.60.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.60.0.tgz", + "integrity": "sha512-HtXuPfrHTyBDkameWpl+vJb1Uevu2tznAyahM1Oc4AENidCLTPiZDWIo4GfcxNdC/RcfGcadzzkqbRG87dUrQA==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.60.0", + "@typescript-eslint/types": "8.60.0", + "@typescript-eslint/typescript-estree": "8.60.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "8.60.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.60.0.tgz", + "integrity": "sha512-9WI52t8ZGLVGrPMBet25yAftqY/n95+zmoUUtJBBQTKDSKUu7OsPTroT2op7U9JatkoRccL0YkWDNMFfC4Sjxg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "8.60.0", + "eslint-visitor-keys": "^5.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz", - "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "license": "ISC" + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", @@ -6076,19 +6204,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -6194,16 +6309,6 @@ "dev": true, "license": "MIT" }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -6409,10 +6514,14 @@ "license": "MIT" }, "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } }, "node_modules/base64-js": { "version": "1.5.1", @@ -6574,14 +6683,16 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/braces": { @@ -7580,6 +7691,15 @@ "node": ">=18" } }, + "node_modules/dd-trace/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/dd-trace/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -7771,32 +7891,6 @@ "node": "*" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/dom-accessibility-api": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", @@ -7928,9 +8022,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.361", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.361.tgz", - "integrity": "sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA==", + "version": "1.5.363", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.363.tgz", + "integrity": "sha512-VjUKPyWzGnT1fujlkEGC/BvN70Hh70KXtAqcmniXviYlJC/ivcT+BWGPyxWVbJZLfvtKR6dqg1L7T7pgAMBtWA==", "dev": true, "license": "ISC" }, @@ -8211,109 +8305,125 @@ } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.4.0.tgz", + "integrity": "sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.6.0", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.1", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^10.2.4", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz", - "integrity": "sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, "peerDependencies": { "eslint": ">=7.0.0" } }, "node_modules/eslint-plugin-prettier": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz", - "integrity": "sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==", + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.6.tgz", + "integrity": "sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.13" }, "engines": { - "node": ">=12.0.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" }, "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, "eslint-config-prettier": { "optional": true } } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { @@ -8346,31 +8456,27 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">= 4" } }, "node_modules/eslint/node_modules/json-schema-traverse": { @@ -8396,18 +8502,31 @@ } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^5.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" @@ -8440,16 +8559,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -8463,7 +8572,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -8473,16 +8582,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -8796,6 +8895,24 @@ "bser": "2.1.1" } }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/fecha": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", @@ -8803,16 +8920,16 @@ "license": "MIT" }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/file-stream-rotator": { @@ -8893,57 +9010,17 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "keyv": "^4.5.4" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=16" } }, "node_modules/flatted": { @@ -9064,6 +9141,37 @@ "webpack": "^5.11.0" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/form-data": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", @@ -9266,85 +9374,26 @@ "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/glob/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.5" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { "node": "18 || 20 || >=22" @@ -9353,42 +9402,25 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "type-fest": "^0.20.2" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.13.0" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "BSD-2-Clause" }, "node_modules/gopd": { "version": "1.2.0", @@ -9409,13 +9441,6 @@ "dev": true, "license": "ISC" }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, "node_modules/graphql": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.14.0.tgz", @@ -9784,9 +9809,10 @@ "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" @@ -10004,16 +10030,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", @@ -10342,6 +10358,24 @@ } } }, + "node_modules/jest-config/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/jest-config/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -10364,6 +10398,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/jest-config/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", @@ -10659,6 +10706,24 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-runtime/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/jest-runtime/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -10681,6 +10746,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -11210,13 +11288,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.omit": { "version": "4.18.0", "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.18.0.tgz", @@ -11298,9 +11369,9 @@ "license": "Apache-2.0" }, "node_modules/lru-cache": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.0.tgz", - "integrity": "sha512-5YgH9UJd7wVb9hIouI2adWpgqrrICkt070Dnj8EUY1+B4B2P9eRLPAkAAo6NICA7CEhOIeBHl46u9zSNpNu7zA==", + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", + "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -11571,16 +11642,19 @@ } }, "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.5" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -11761,9 +11835,9 @@ } }, "node_modules/mysql2": { - "version": "3.22.3", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.22.3.tgz", - "integrity": "sha512-uWWxvZSRvRhtBdh2CdcuK83YcOfPdmEeEYB069bAmPnV93QApDGVPuvCQOLjlh7tYHEWdgQPrn6kosDxHBVLkA==", + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.22.4.tgz", + "integrity": "sha512-CtXYlmL7ZamiYKbmqkamQHWJROUHSfm+f3kByzGfknw7kW51mcB2ouMUqYq1XfYxbXmnWo6RhPydx6OCqdgcmQ==", "license": "MIT", "dependencies": { "aws-ssl-profiles": "^1.1.2", @@ -11819,13 +11893,6 @@ "dev": true, "license": "MIT" }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true, - "license": "MIT" - }, "node_modules/negotiator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", @@ -12298,9 +12365,9 @@ } }, "node_modules/pbkdf2": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz", - "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.6.tgz", + "integrity": "sha512-BT6eelPB1EyGHo8pC0o9Bl6k6SYVhKO1jEbd3lcTrtr7XHdjP8BW1YpfCV3G9Kwkxgattk+S5q2/RvuttCsS1g==", "license": "MIT", "dependencies": { "create-hash": "^1.2.0", @@ -12308,7 +12375,7 @@ "ripemd160": "^2.0.3", "safe-buffer": "^5.2.1", "sha.js": "^2.4.12", - "to-buffer": "^1.2.1" + "to-buffer": "^1.2.2" }, "engines": { "node": ">= 0.10" @@ -13101,6 +13168,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, "node_modules/rimraf/node_modules/brace-expansion": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", @@ -14177,6 +14250,22 @@ "node": ">=0.10" } }, + "node_modules/synckit": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz", + "integrity": "sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.3.6" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, "node_modules/tapable": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", @@ -14220,9 +14309,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.0.tgz", - "integrity": "sha512-Eum+5ajkaOhf5KbM26osvv21kLD7BaGqQ1UA4Ami4arYwylmGUQTgHFpHDdmJod1q4QXa66p0to/FBKID+J1vA==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.1.tgz", + "integrity": "sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14392,6 +14481,24 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", + "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -14414,19 +14521,25 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", "license": "MIT" }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/timers-ext": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", @@ -14458,6 +14571,23 @@ "semver": "bin/semver" } }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, "node_modules/tlhunter-sorted-set": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/tlhunter-sorted-set/-/tlhunter-sorted-set-0.1.0.tgz", @@ -14551,6 +14681,19 @@ "node": ">= 14.0.0" } }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/ts-jest": { "version": "29.4.11", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.11.tgz", @@ -14618,16 +14761,17 @@ } }, "node_modules/ts-loader": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", - "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", + "version": "9.5.7", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.7.tgz", + "integrity": "sha512-/ZNrKgA3K3PtpMYOC71EeMWIloGw3IYEa5/t1cyz2r5/PyUwTXGzYJvcD3kfUvmhlfpz1rhV8B2O6IVTQ0avsg==", "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", - "semver": "^7.3.4" + "semver": "^7.3.4", + "source-map": "^0.7.4" }, "engines": { "node": ">=12.0.0" @@ -14638,13 +14782,13 @@ } }, "node_modules/ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "devOptional": true, "license": "MIT", "dependencies": { - "@cspotcode/source-map-support": "0.7.0", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -14655,7 +14799,7 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "bin": { @@ -14728,29 +14872,6 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, "node_modules/ttl-set": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/ttl-set/-/ttl-set-1.0.0.tgz", @@ -14796,9 +14917,9 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -14961,6 +15082,12 @@ } } }, + "node_modules/typeorm/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, "node_modules/typeorm/node_modules/brace-expansion": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", @@ -15054,9 +15181,9 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -15064,7 +15191,7 @@ "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/uglify-js": { @@ -15365,6 +15492,30 @@ } } }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/webpack/node_modules/schema-utils": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", @@ -15423,13 +15574,13 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", - "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.21.tgz", + "integrity": "sha512-zbRA8cVm6io/d5W8uIe2hblzN76/Wm3v/yiythQvr+dpBWeqhPSWIDNj4zOyHi4zKbMK6DN34Xsr9jPHJERAEw==", "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", + "call-bind": "^1.0.9", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", diff --git a/package.json b/package.json index f7efbc9d8..77f949e1b 100644 --- a/package.json +++ b/package.json @@ -179,20 +179,20 @@ "@types/sharp": "^0.28.3", "@types/supertest": "^2.0.11", "@types/tiny-async-pool": "^1.0.0", - "@typescript-eslint/eslint-plugin": "^5.14.0", - "@typescript-eslint/parser": "^5.14.0", - "eslint": "^8.11.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^4.0.0", + "@typescript-eslint/eslint-plugin": "^8.60.0", + "@typescript-eslint/parser": "^8.60.0", + "eslint": "^10.4.0", + "eslint-config-prettier": "^10.1.0", + "eslint-plugin-prettier": "^5.5.6", "jest": "29.5.0", "prettier": "^3.5.3", "run-script-os": "^1.1.6", "supertest": "^6.2.2", - "ts-jest": "^29.0.5", - "ts-loader": "9.4.2", - "ts-node": "10.7.0", + "ts-jest": "29.4.11", + "ts-loader": "9.5.7", + "ts-node": "10.9.2", "tsconfig-paths": "^4.0.0", - "typescript": "^4.6.2", + "typescript": "^6.0.3", "webpack": "^5.73.0" }, "jest": { diff --git a/src/endpoints/network/network.service.ts b/src/endpoints/network/network.service.ts index bd7daba4b..ddfef2868 100644 --- a/src/endpoints/network/network.service.ts +++ b/src/endpoints/network/network.service.ts @@ -264,7 +264,7 @@ export class NetworkService { } if (yearIndex >= inflationAmounts.length) { - throw new Error(`There is no inflation information for year with index ${yearIndex}`,); + throw new Error(`There is no inflation information for year with index ${yearIndex}`); } const inflation = inflationAmounts[yearIndex]; @@ -374,7 +374,7 @@ export class NetworkService { version: apiVersion, indexerVersion: indexerVersion, gatewayVersion: gatewayVersion, - features: features, + features: features }); await this.pluginService.processAbout(about); diff --git a/src/endpoints/providers/provider.controller.ts b/src/endpoints/providers/provider.controller.ts index eb444c9ee..3b522e412 100644 --- a/src/endpoints/providers/provider.controller.ts +++ b/src/endpoints/providers/provider.controller.ts @@ -44,7 +44,7 @@ export class ProviderController { async getProviderAccounts( @Param('address', ParseAddressPipe) address: string, @Query('from', new DefaultValuePipe(0), ParseIntPipe) from: number, - @Query('size', new DefaultValuePipe(25), ParseIntPipe) size: number,): Promise { + @Query('size', new DefaultValuePipe(25), ParseIntPipe) size: number): Promise { const provider = await this.providerService.getProviderAccounts(address, new QueryPagination({ from, size })); if (provider === undefined) { diff --git a/src/test/jest-chain-simulator.json b/src/test/jest-chain-simulator.json index b3beb1ab2..30a1e9cb6 100644 --- a/src/test/jest-chain-simulator.json +++ b/src/test/jest-chain-simulator.json @@ -18,4 +18,4 @@ "./src/**/*.(t|j)s" ], "testTimeout": 180000 -} \ No newline at end of file +} diff --git a/tsconfig.json b/tsconfig.json index cfa7d8246..d03130455 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "ignoreDeprecations": "6.0", "module": "commonjs", "declaration": true, "removeComments": true, @@ -46,4 +47,4 @@ "src/**/*", "test/**/*" ] -} \ No newline at end of file +} From ce4fc807c643e22fae06a06f41b10b9165da2ec3 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 28 May 2026 17:48:37 +0300 Subject: [PATCH 191/206] use && instead of & for sequential operations --- package.json | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 77f949e1b..3e62aa65a 100644 --- a/package.json +++ b/package.json @@ -11,37 +11,37 @@ "prebuild:windows": "rd /s /q dist", "build": "nest build", "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", - "start:custom": "npm run copy-custom-config & nest start", - "start:custom:debug": "npm run copy-custom-config & nest start --watch --debug", - "start:custom:devnet": "npm run copy-custom-devnet-config & nest start", - "start:custom:testnet": "npm run copy-custom-testnet-config & nest start", - "start:custom:mainnet": "npm run copy-custom-mainnet-config & nest start", - "start:devnet": "npm run copy-devnet-config & nest start", - "start:devnet:watch": "npm run copy-devnet-config & nest start --watch", - "start:devnet:debug": "npm run copy-devnet-config & nest start --watch --debug", - "start:devnet-old": "npm run copy-devnet-old-config & nest start", - "start:devnet-old:watch": "npm run copy-devnet-old-config & nest start --watch", - "start:devnet-old:debug": "npm run copy-devnet-old-config & nest start --watch --debug", - "start:testnet": "npm run copy-testnet-config & nest start", - "start:testnet:watch": "npm run copy-testnet-config & nest start --watch", - "start:testnet:debug": "npm run copy-testnet-config & nest start --watch --debug", - "start:mainnet": "npm run copy-mainnet-config & nest start", - "start:mainnet:watch": "npm run copy-mainnet-config & nest start --watch", - "start:mainnet:debug": "npm run copy-mainnet-config & nest start --watch --debug", - "start:mainnet:e2e": "npm run copy-e2e-mainnet-config & nest start", - "start:mainnet:e2e:watch": "npm run copy-e2e-mainnet-config & nest start --watch", - "start:mainnet:e2e:debug": "npm run copy-e2e-mainnet-config & nest start --watch --debug", + "start:custom": "npm run copy-custom-config && nest start", + "start:custom:debug": "npm run copy-custom-config && nest start --watch --debug", + "start:custom:devnet": "npm run copy-custom-devnet-config && nest start", + "start:custom:testnet": "npm run copy-custom-testnet-config && nest start", + "start:custom:mainnet": "npm run copy-custom-mainnet-config && nest start", + "start:devnet": "npm run copy-devnet-config && nest start", + "start:devnet:watch": "npm run copy-devnet-config && nest start --watch", + "start:devnet:debug": "npm run copy-devnet-config && nest start --watch --debug", + "start:devnet-old": "npm run copy-devnet-old-config && nest start", + "start:devnet-old:watch": "npm run copy-devnet-old-config && nest start --watch", + "start:devnet-old:debug": "npm run copy-devnet-old-config && nest start --watch --debug", + "start:testnet": "npm run copy-testnet-config && nest start", + "start:testnet:watch": "npm run copy-testnet-config && nest start --watch", + "start:testnet:debug": "npm run copy-testnet-config && nest start --watch --debug", + "start:mainnet": "npm run copy-mainnet-config && nest start", + "start:mainnet:watch": "npm run copy-mainnet-config && nest start --watch", + "start:mainnet:debug": "npm run copy-mainnet-config && nest start --watch --debug", + "start:mainnet:e2e": "npm run copy-e2e-mainnet-config && nest start", + "start:mainnet:e2e:watch": "npm run copy-e2e-mainnet-config && nest start --watch", + "start:mainnet:e2e:debug": "npm run copy-e2e-mainnet-config && nest start --watch --debug", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\"", "lint:fix": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", - "test": "npm run copy-mainnet-config & nest build & jest", + "test": "npm run copy-mainnet-config && nest build && jest", "test:watch": "jest --watch", "test:cov": "jest --coverage --forceExit --detectOpenHandles --config ./src/test/jest-unit-config.json", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", "test:e2e": "jest --config ./src/test/jest-e2e.json --forceExit --maxWorkers=4", - "test:e2e:warm": "npm run copy-e2e-mainnet-config & nest build & jest --config ./src/test/jest-e2e-warm.json --forceExit", - "test:e2e:warm:mocked": "npm run copy-e2e-mocked-mainnet-config & nest build & jest --config ./src/test/jest-e2e-warm.json --forceExit", + "test:e2e:warm": "npm run copy-e2e-mainnet-config && nest build && jest --config ./src/test/jest-e2e-warm.json --forceExit", + "test:e2e:warm:mocked": "npm run copy-e2e-mocked-mainnet-config && nest build && jest --config ./src/test/jest-e2e-warm.json --forceExit", "test:e2e:cov": "node --expose-gc --no-compilation-cache ./node_modules/.bin/jest --config ./src/test/jest-e2e.json --coverage --forceExit --logHeapUsage --maxWorkers=4", - "test:e2e:local": "npm run test:e2e:warm & npm run test:e2e", + "test:e2e:local": "npm run test:e2e:warm && npm run test:e2e", "test:api": "jest --config ./src/test/jest-api.json --runInBand --detectOpenHandles --forceExit", "test:graph": "jest --config ./src/test/jest-graph-spec.json --runInBand --detectOpenHandles --forceExit", "test:cs-e2e": "jest --config ./src/test/jest-chain-simulator.json --runInBand --detectOpenHandles --forceExit", From 9878a67aef28d83ebf0b8c0b02c2c8e400030f9f Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Thu, 28 May 2026 18:15:06 +0300 Subject: [PATCH 192/206] use native fetch in accounts cs tests --- src/test/chain-simulator/accounts.cs-e2e.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/chain-simulator/accounts.cs-e2e.ts b/src/test/chain-simulator/accounts.cs-e2e.ts index f1182d86e..a5068e466 100644 --- a/src/test/chain-simulator/accounts.cs-e2e.ts +++ b/src/test/chain-simulator/accounts.cs-e2e.ts @@ -4,6 +4,8 @@ import { NftType } from "src/endpoints/nfts/entities/nft.type"; import { NftSubType } from "src/endpoints/nfts/entities/nft.sub.type"; import { transferNftFromTo } from "./utils/chain.simulator.operations"; +axios.defaults.adapter = 'fetch'; + describe('Accounts e2e tests with chain simulator', () => { describe('GET /accounts with query parameters', () => { it('should return paginated results with from and size parameters', async () => { From d59968738d559c0183b1b8e206e3ddcfd920e29e Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 29 May 2026 10:10:03 +0300 Subject: [PATCH 193/206] set axios connection to close after request --- src/test/chain-simulator/accounts.cs-e2e.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/chain-simulator/accounts.cs-e2e.ts b/src/test/chain-simulator/accounts.cs-e2e.ts index a5068e466..755d5fa3e 100644 --- a/src/test/chain-simulator/accounts.cs-e2e.ts +++ b/src/test/chain-simulator/accounts.cs-e2e.ts @@ -5,6 +5,7 @@ import { NftSubType } from "src/endpoints/nfts/entities/nft.sub.type"; import { transferNftFromTo } from "./utils/chain.simulator.operations"; axios.defaults.adapter = 'fetch'; +axios.defaults.headers.common['Connection'] = 'close'; describe('Accounts e2e tests with chain simulator', () => { describe('GET /accounts with query parameters', () => { From 9878cb0f0d82f4b6b93564f7bd13a77714bab0ce Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 29 May 2026 10:19:12 +0300 Subject: [PATCH 194/206] use custom axios config for all cs-e2e tests --- src/test/chain-simulator/accounts.cs-e2e.ts | 3 --- src/test/chain-simulator/jest.setup.ts | 4 ++++ src/test/jest-chain-simulator.json | 3 +++ 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 src/test/chain-simulator/jest.setup.ts diff --git a/src/test/chain-simulator/accounts.cs-e2e.ts b/src/test/chain-simulator/accounts.cs-e2e.ts index 755d5fa3e..f1182d86e 100644 --- a/src/test/chain-simulator/accounts.cs-e2e.ts +++ b/src/test/chain-simulator/accounts.cs-e2e.ts @@ -4,9 +4,6 @@ import { NftType } from "src/endpoints/nfts/entities/nft.type"; import { NftSubType } from "src/endpoints/nfts/entities/nft.sub.type"; import { transferNftFromTo } from "./utils/chain.simulator.operations"; -axios.defaults.adapter = 'fetch'; -axios.defaults.headers.common['Connection'] = 'close'; - describe('Accounts e2e tests with chain simulator', () => { describe('GET /accounts with query parameters', () => { it('should return paginated results with from and size parameters', async () => { diff --git a/src/test/chain-simulator/jest.setup.ts b/src/test/chain-simulator/jest.setup.ts new file mode 100644 index 000000000..771fcf2f3 --- /dev/null +++ b/src/test/chain-simulator/jest.setup.ts @@ -0,0 +1,4 @@ +import axios from "axios"; + +axios.defaults.adapter = 'fetch'; +axios.defaults.headers.common['Connection'] = 'close'; diff --git a/src/test/jest-chain-simulator.json b/src/test/jest-chain-simulator.json index 30a1e9cb6..8b9a7a526 100644 --- a/src/test/jest-chain-simulator.json +++ b/src/test/jest-chain-simulator.json @@ -6,6 +6,9 @@ ], "rootDir": "../../", "testEnvironment": "node", + "setupFilesAfterEnv": [ + "/src/test/chain-simulator/jest.setup.ts" + ], "testSequencer": "/src/test/chain-simulator/utils/testSequencer.js", "testRegex": ".cs-e2e.ts$", "transform": { From 732017e9f5ea812c8e112eb3b04ccf613e9a7712 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 29 May 2026 10:25:25 +0300 Subject: [PATCH 195/206] add log --- src/test/chain-simulator/jest.setup.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/chain-simulator/jest.setup.ts b/src/test/chain-simulator/jest.setup.ts index 771fcf2f3..2b5c68026 100644 --- a/src/test/chain-simulator/jest.setup.ts +++ b/src/test/chain-simulator/jest.setup.ts @@ -2,3 +2,4 @@ import axios from "axios"; axios.defaults.adapter = 'fetch'; axios.defaults.headers.common['Connection'] = 'close'; +console.log('Axios default adapter set to fetch and Connection header set to close'); From 7450c4afe5b3e3b57342976a40c352a6e0b6b0bb Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 29 May 2026 10:31:54 +0300 Subject: [PATCH 196/206] add axios config in preparation scripts --- src/test/chain-simulator/utils/chain.simulator.operations.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/chain-simulator/utils/chain.simulator.operations.ts b/src/test/chain-simulator/utils/chain.simulator.operations.ts index 87050fe53..0e9e7bb64 100644 --- a/src/test/chain-simulator/utils/chain.simulator.operations.ts +++ b/src/test/chain-simulator/utils/chain.simulator.operations.ts @@ -1,6 +1,9 @@ import axios from 'axios'; import { AddressUtils } from "@multiversx/sdk-nestjs-common"; +axios.defaults.adapter = 'fetch'; +axios.defaults.headers.common['Connection'] = 'close'; + const VM_TYPE = '0500'; const CODE_METADATA = '0100'; const SC_DEPLOY_ADDRESS = From 14c7c024e820d09446716406efd62a1e8d15e6fb Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 29 May 2026 11:33:34 +0300 Subject: [PATCH 197/206] fixes after review --- Dockerfile | 2 +- package-lock.json | 266 +++++++++++++++++++++++----------------------- package.json | 2 +- 3 files changed, 135 insertions(+), 135 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6fe9e18dd..f88d590f6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ RUN npm run build FROM node:24.14.0-alpine ENV PYTHONUNBUFFERED=1 -RUN apk add --no-cache python3 py3-pip py3-ruamel.yaml git +RUN apk add --no-cache python3 py3-pip py3-ruamel.yaml git ffmpeg WORKDIR /app RUN mkdir -p /app/src/plugins diff --git a/package-lock.json b/package-lock.json index 1772b9cad..f04c475e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -97,7 +97,7 @@ "@types/js-yaml": "^4.0.5", "@types/json-diff": "^0.7.0", "@types/jsonwebtoken": "^8.5.8", - "@types/node": "^25.0.0", + "@types/node": "^24.1.0", "@types/node-fetch": "^2.6.13", "@types/redis": "^2.8.32", "@types/request-ip": "0.0.37", @@ -674,27 +674,27 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1055.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1055.0.tgz", - "integrity": "sha512-FxVwuw86c2Mw4p+0tOtoE+1sDTk+eOBZD/NwwK+wwx1gHkdO/EYSv231O9A1YM8HPjUrI0vZ/hP/szckBxHW0A==", + "version": "3.1056.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1056.0.tgz", + "integrity": "sha512-WfMZEM2eC96anIT0RzR/QmhaefWKsNjOHNv09ORBkcA++ULBnm1fRau+KKGEIbr5nDnf9BTG7E7U3oOVklQS8g==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.14", - "@aws-sdk/credential-provider-node": "^3.972.45", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.16", - "@aws-sdk/middleware-expect-continue": "^3.972.13", - "@aws-sdk/middleware-flexible-checksums": "^3.974.22", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/credential-provider-node": "^3.972.46", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.17", + "@aws-sdk/middleware-expect-continue": "^3.972.14", + "@aws-sdk/middleware-flexible-checksums": "^3.974.23", "@aws-sdk/middleware-location-constraint": "^3.972.11", - "@aws-sdk/middleware-sdk-s3": "^3.972.43", + "@aws-sdk/middleware-sdk-s3": "^3.972.44", "@aws-sdk/middleware-ssec": "^3.972.11", - "@aws-sdk/signature-v4-multi-region": "^3.996.29", + "@aws-sdk/signature-v4-multi-region": "^3.996.30", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", - "@smithy/fetch-http-handler": "^5.4.3", - "@smithy/node-http-handler": "^4.7.3", + "@smithy/core": "^3.24.5", + "@smithy/fetch-http-handler": "^5.4.5", + "@smithy/node-http-handler": "^4.7.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -703,16 +703,16 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.974.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.14.tgz", - "integrity": "sha512-ppamm04uoj3hhNO5IlQSs5D6rWX1fWkzcn6a4pZrojk8Y6ObY9wzLDdT/Eq3gv6O9hOebi9tYTNB8b8fQj9XJw==", + "version": "3.974.15", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.15.tgz", + "integrity": "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/core": "^3.24.3", - "@smithy/signature-v4": "^5.4.2", + "@smithy/core": "^3.24.5", + "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" @@ -735,14 +735,14 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.40", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.40.tgz", - "integrity": "sha512-jjT0p0Y7KZtcvExYiPCLJnqM9lkXDV1KBEg/13OE2DXv/9batzlyJHVKUEnRNJccY0O2Sul17E1su38CgdBhGQ==", + "version": "3.972.41", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.41.tgz", + "integrity": "sha512-n1EbJ98yvPWWdHZZv8bRBMqqDQJrtgtxyJ4xLy2Uqrh25BCOZQ7nnS1CsFXvuH8r0b0KVHDZEGEH5FxmEMP8jg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.14", + "@aws-sdk/core": "^3.974.15", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -751,16 +751,16 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.42", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.42.tgz", - "integrity": "sha512-+3fsKtWybe5BjKEUA3/07oh7Ayfd82IED2+gyyaVfS/4PU78E3TaOQxSGOJ1t7Imefoidw/ne9QA7apX8wEnJg==", + "version": "3.972.43", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.43.tgz", + "integrity": "sha512-TT76RN1NkI9WoyZqCNxOw6/WBMF7pYOTJcXbMokNFU+euSG40Kaf/t/FhDACVZWP+43wEM6ZynIPIkzS1wR1iA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.14", + "@aws-sdk/core": "^3.974.15", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", - "@smithy/fetch-http-handler": "^5.4.3", - "@smithy/node-http-handler": "^4.7.3", + "@smithy/core": "^3.24.5", + "@smithy/fetch-http-handler": "^5.4.5", + "@smithy/node-http-handler": "^4.7.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -769,22 +769,22 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.44", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.44.tgz", - "integrity": "sha512-gZFw5wBefCIPg9vpT+gV5FdhfNKhYTVDZa1IsZCcn3SRoYUOJ/E05vwIogkJoonqBL0ttBGi5vhthX7xceekRg==", + "version": "3.972.45", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.45.tgz", + "integrity": "sha512-sJe5ZWibO4s7RWjFQ8Zol76KxoJcIYyEZH1/wxQSBMSIAAxzaJ8cS/ITAaIHWUQvDKQdt18+cJAHKWB7n1Jmrg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.14", - "@aws-sdk/credential-provider-env": "^3.972.40", - "@aws-sdk/credential-provider-http": "^3.972.42", - "@aws-sdk/credential-provider-login": "^3.972.44", - "@aws-sdk/credential-provider-process": "^3.972.40", - "@aws-sdk/credential-provider-sso": "^3.972.44", - "@aws-sdk/credential-provider-web-identity": "^3.972.44", - "@aws-sdk/nested-clients": "^3.997.12", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/credential-provider-env": "^3.972.41", + "@aws-sdk/credential-provider-http": "^3.972.43", + "@aws-sdk/credential-provider-login": "^3.972.45", + "@aws-sdk/credential-provider-process": "^3.972.41", + "@aws-sdk/credential-provider-sso": "^3.972.45", + "@aws-sdk/credential-provider-web-identity": "^3.972.45", + "@aws-sdk/nested-clients": "^3.997.13", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", - "@smithy/credential-provider-imds": "^4.3.2", + "@smithy/core": "^3.24.5", + "@smithy/credential-provider-imds": "^4.3.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -793,15 +793,15 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.44", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.44.tgz", - "integrity": "sha512-QqEGHfQeZgUDqh7zpqHufrZ8T644ELEWvB+4gUdewLyRw4IRF+6CJqeQuRWqucZdQzoQeMh7fNAD9BWxFAdNig==", + "version": "3.972.45", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.45.tgz", + "integrity": "sha512-MZQv4SNjByk1iOKmrqmzcUF/uCB05wjvEHyXKxmGQTUANTIVayX6HPUF0bzkWLvtnkH7sAn9kUCfkXbSpj9sDA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.14", - "@aws-sdk/nested-clients": "^3.997.12", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/nested-clients": "^3.997.13", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -810,20 +810,20 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.45", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.45.tgz", - "integrity": "sha512-3YCv52ExXIRz3LAVNysevd+s7akSpg9dl39v9LJ7dOQH+s5rHi3jMZYQyxwMmglxQGMuzYRfQ0o1VSP2UOlIRw==", + "version": "3.972.46", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.46.tgz", + "integrity": "sha512-cS4w0jzDRb1jOlkiJS3y80OxddHzkky/MN9k3NYs5jganNKVLjF0lpvjlwS118oGMr3cdAfOlVdo8gLurTSE7w==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.40", - "@aws-sdk/credential-provider-http": "^3.972.42", - "@aws-sdk/credential-provider-ini": "^3.972.44", - "@aws-sdk/credential-provider-process": "^3.972.40", - "@aws-sdk/credential-provider-sso": "^3.972.44", - "@aws-sdk/credential-provider-web-identity": "^3.972.44", + "@aws-sdk/credential-provider-env": "^3.972.41", + "@aws-sdk/credential-provider-http": "^3.972.43", + "@aws-sdk/credential-provider-ini": "^3.972.45", + "@aws-sdk/credential-provider-process": "^3.972.41", + "@aws-sdk/credential-provider-sso": "^3.972.45", + "@aws-sdk/credential-provider-web-identity": "^3.972.45", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", - "@smithy/credential-provider-imds": "^4.3.2", + "@smithy/core": "^3.24.5", + "@smithy/credential-provider-imds": "^4.3.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -832,14 +832,14 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.40", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.40.tgz", - "integrity": "sha512-cXaozlgJCOwmE6D7x4npcPdyk7kiFZdrGjN3D6tXXtItJJMNGPafDfAJn4YQmciMooG/X+b0Y6RTqdVVMx26jg==", + "version": "3.972.41", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.41.tgz", + "integrity": "sha512-7I/n1zkysouLOWvkEhjNEP4vMnD2v4kzzr3/3QBdrripEpn7ap1/I5DF3Hou1SUqkKWo1f3oPGMyFAA1FAMvsQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.14", + "@aws-sdk/core": "^3.974.15", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -848,16 +848,16 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.44", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.44.tgz", - "integrity": "sha512-YePoj5kQuPmE0MHnyftXCfsO8ZSBd2kDr50XEIUrdejSbGFlayYvUuCohdb8drhGhPm6b65o7H1eC26EZhwUvA==", + "version": "3.972.45", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.45.tgz", + "integrity": "sha512-oHgbz/eFD8IKiksqDsz9ZMU4A59BpQq4QwJedBnGD80ZqYcHPPHZBwjBnxLVkB7iRVVHWpDclR8yWdD2PkQIUA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.14", - "@aws-sdk/nested-clients": "^3.997.12", - "@aws-sdk/token-providers": "3.1054.0", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/nested-clients": "^3.997.13", + "@aws-sdk/token-providers": "3.1056.0", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -866,15 +866,15 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.44", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.44.tgz", - "integrity": "sha512-Ys/JJe++8Z2Y5meR1taMBaVcrGBA0/XsVTQR+qOKZbdNyg+8Jlv5rYZSwh8SqEHY00goSOZy7PHzZ2rLNQxDLg==", + "version": "3.972.45", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.45.tgz", + "integrity": "sha512-CDhzKdb2onv5bpnjn/acgdNmJOQthPDLsPizU7rZflsEcgMMp8Mlri+U5hdxf8ldvZJpvM3vLU6D56vfJm5AMQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.14", - "@aws-sdk/nested-clients": "^3.997.12", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/nested-clients": "^3.997.13", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -883,14 +883,14 @@ } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.972.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.16.tgz", - "integrity": "sha512-FhasMTBDBmMN7EEa1hUeHwo5p5Mv3Dm8w0VEbdXX/6ola/uyhRuJt8zGkH09mLTmab20USTzEpPqyqEoe1MqNg==", + "version": "3.972.17", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.17.tgz", + "integrity": "sha512-lbDmWuHenc+kiwCNrxz4MyN6nkxCWyTXPIWuspJN0ibziu+8CXci7vI1bK9MAkwy8cwJOEXNu0gBM5S0uTGRIg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.14", + "@aws-sdk/core": "^3.974.15", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -899,13 +899,13 @@ } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.972.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.13.tgz", - "integrity": "sha512-sHiqIFg8o2ipT7t40B89Vj0ubSUtY6OSt/+Ee/OXhHch5K4+81zP2+QX8Lkc/nJ2QSmCySxOke7TEbmX69fe2g==", + "version": "3.972.14", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.14.tgz", + "integrity": "sha512-3TNFEVGO4sWZj9TEXOCZLzGEctXHnaO4fk2EQ8KVaboTbwHmEPEQrm17Xb9koImUIXEw0sgi2xtHjg7LuTS3rA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -914,18 +914,18 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.974.22", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.22.tgz", - "integrity": "sha512-ot1kZ1JGHUxcXPOARhej/n/+Odfx9VPt60pNrUq8Lf/U2blIF3+uj5v56gw76VD70dZvrfeLNo9jKz6pQJfOlA==", + "version": "3.974.23", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.23.tgz", + "integrity": "sha512-4nPKARo2lfKvQGUt2fPA5NlS/mEohckdxpuC9ecbjVfj7B7NFFYHeTg+Bf5BEQwdn3yRfUIzFiEkPp8Yuaw3wA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", "@aws-crypto/crc32c": "5.2.0", "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.974.14", + "@aws-sdk/core": "^3.974.15", "@aws-sdk/crc64-nvme": "^3.972.9", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -948,15 +948,15 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.43", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.43.tgz", - "integrity": "sha512-CBmixMY36JdAdt9ALgm7yVlvOXGUCHt9Z2kn5p9XVO5StO6HCH+cayV7YYV1CDLsXvVyebaXgBmif9wHoxCeNA==", + "version": "3.972.44", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.44.tgz", + "integrity": "sha512-8HQsRg1NpX8vR4vNl1E8pyLnqZroq9VSL2vZQVSgBqp6wv6365LzYD08/c9FFh/9FTg7YRc7aTtEmXF0ir/pqg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.14", - "@aws-sdk/signature-v4-multi-region": "^3.996.29", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/signature-v4-multi-region": "^3.996.30", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -979,19 +979,19 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.12", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.12.tgz", - "integrity": "sha512-Js2VYaCM269feB0cs0cGmlIhdOgT9aMqzdBx68lCy6kVCYfzr0T36ovUFDvfUmatkuBeyBJhCwaLBh7P8meH5Q==", + "version": "3.997.13", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.13.tgz", + "integrity": "sha512-2pA6eyb5nSo/ZD2cayhOTEMoGQYgspq0RI05GDLkzQ3ajZ6isS6waV6E92Am/hz4LIlLUTrbwPLurJ/fuiHvkg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.14", - "@aws-sdk/signature-v4-multi-region": "^3.996.29", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/signature-v4-multi-region": "^3.996.30", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", - "@smithy/fetch-http-handler": "^5.4.3", - "@smithy/node-http-handler": "^4.7.3", + "@smithy/core": "^3.24.5", + "@smithy/fetch-http-handler": "^5.4.5", + "@smithy/node-http-handler": "^4.7.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -1000,13 +1000,13 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.29", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.29.tgz", - "integrity": "sha512-Few9FoQqOt/0KSvZYP+qdW0dfOhfQ9N+gl2UUDvCPW6mkPKHli9LMbKxWj+wZ5zKPaOoqxuR3Hhy3OTpndkfSw==", + "version": "3.996.30", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.30.tgz", + "integrity": "sha512-HULDLMVzkmTSEv6//7kx2kRevp/VYUpm8hJNNFbmhxDn0fUiGTxVcM9yg31TukvTq8nyOBDUN2gH0o5IRbKjdw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.973.9", - "@smithy/signature-v4": "^5.4.2", + "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -1015,15 +1015,15 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1054.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1054.0.tgz", - "integrity": "sha512-hG9YKApmZOw+drJ9Nuoaf/OvC8e5W1+3eoLeN5p2uVCZRWsv27teIS0b4kiH6Sfv3WMmamqYJxmE2WMwyp/L/A==", + "version": "3.1056.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1056.0.tgz", + "integrity": "sha512-81duvlltQlsfn5K+o8zILcystBRdbT1G2JJYVCML5NZHBz4CL/zf+sAemCtBh/uh6RQUMyInGeZLQ7/8igZhbA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.14", - "@aws-sdk/nested-clients": "^3.997.12", + "@aws-sdk/core": "^3.974.15", + "@aws-sdk/nested-clients": "^3.997.13", "@aws-sdk/types": "^3.973.9", - "@smithy/core": "^3.24.3", + "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" }, @@ -5395,12 +5395,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz", - "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==", + "version": "24.12.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.4.tgz", + "integrity": "sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==", "license": "MIT", "dependencies": { - "undici-types": ">=7.24.0 <7.24.7" + "undici-types": "~7.16.0" } }, "node_modules/@types/node-fetch": { @@ -8022,9 +8022,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.363", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.363.tgz", - "integrity": "sha512-VjUKPyWzGnT1fujlkEGC/BvN70Hh70KXtAqcmniXviYlJC/ivcT+BWGPyxWVbJZLfvtKR6dqg1L7T7pgAMBtWA==", + "version": "1.5.364", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.364.tgz", + "integrity": "sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw==", "dev": true, "license": "ISC" }, @@ -8149,9 +8149,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.0.tgz", - "integrity": "sha512-xYcDWrpELkFzz9SpZ3PlI6Eu6eD93Yf0WLDRxikGhWJ3MAir2SNZTIVCVZqZ/NUyx8AdMc2gT9C0gPiw18kG+A==", + "version": "5.22.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.1.tgz", + "integrity": "sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww==", "dev": true, "license": "MIT", "dependencies": { @@ -9696,9 +9696,9 @@ "license": "MIT" }, "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -15233,9 +15233,9 @@ } }, "node_modules/undici-types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", - "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "license": "MIT" }, "node_modules/universalify": { diff --git a/package.json b/package.json index 3e62aa65a..29566f986 100644 --- a/package.json +++ b/package.json @@ -172,7 +172,7 @@ "@types/js-yaml": "^4.0.5", "@types/json-diff": "^0.7.0", "@types/jsonwebtoken": "^8.5.8", - "@types/node": "^25.0.0", + "@types/node": "^24.1.0", "@types/node-fetch": "^2.6.13", "@types/redis": "^2.8.32", "@types/request-ip": "0.0.37", From 217937d9fae1191d5d825aea85460e363f31e837 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 29 May 2026 11:55:30 +0300 Subject: [PATCH 198/206] remove forceExit for cs tests --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 29566f986..d06c8ac47 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "test:e2e:local": "npm run test:e2e:warm && npm run test:e2e", "test:api": "jest --config ./src/test/jest-api.json --runInBand --detectOpenHandles --forceExit", "test:graph": "jest --config ./src/test/jest-graph-spec.json --runInBand --detectOpenHandles --forceExit", - "test:cs-e2e": "jest --config ./src/test/jest-chain-simulator.json --runInBand --detectOpenHandles --forceExit", + "test:cs-e2e": "jest --config ./src/test/jest-chain-simulator.json --runInBand --detectOpenHandles", "init": "run-script-os", "copy-mainnet-config": "run-script-os", "copy-testnet-config": "run-script-os", From 4127576aa8e0c4d3c72e30818bab4fc109b71005 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 29 May 2026 12:08:30 +0300 Subject: [PATCH 199/206] upgrade elastic version --- src/test/chain-simulator/docker/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/chain-simulator/docker/docker-compose.yml b/src/test/chain-simulator/docker/docker-compose.yml index 71d59fe30..07daeb424 100644 --- a/src/test/chain-simulator/docker/docker-compose.yml +++ b/src/test/chain-simulator/docker/docker-compose.yml @@ -3,7 +3,7 @@ services: ports: - "9200:9200" container_name: es-container - image: docker.elastic.co/elasticsearch/elasticsearch:7.17.18 + image: docker.elastic.co/elasticsearch/elasticsearch:7.17.29 environment: - "discovery.type=single-node" - "xpack.security.enabled=false" From 21a3113ccbe19649a78e3d2501646308a1ffffd2 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 29 May 2026 12:49:42 +0300 Subject: [PATCH 200/206] use specific node versions for actions --- .github/workflows/build-docker-image.yaml | 2 +- .github/workflows/chain-simulator-e2e-tests.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/load-tests.yml | 6 +++--- .github/workflows/unit.tests.yml | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-docker-image.yaml b/.github/workflows/build-docker-image.yaml index a72e8c61d..8a1f9a835 100644 --- a/.github/workflows/build-docker-image.yaml +++ b/.github/workflows/build-docker-image.yaml @@ -20,7 +20,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v6 with: - node-version: '24' # Specify your Node.js version + node-version: '24.14.0' # Specify your Node.js version - name: Log in to Docker Hub uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a diff --git a/.github/workflows/chain-simulator-e2e-tests.yml b/.github/workflows/chain-simulator-e2e-tests.yml index 3295931b6..93d0d32fd 100644 --- a/.github/workflows/chain-simulator-e2e-tests.yml +++ b/.github/workflows/chain-simulator-e2e-tests.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [24.x] + node-version: [24.14.x] steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 6d00b8e53..9bf96b2da 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: - node-version: [24.x] + node-version: [24.14.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: diff --git a/.github/workflows/load-tests.yml b/.github/workflows/load-tests.yml index 2900ff179..55ca02537 100644 --- a/.github/workflows/load-tests.yml +++ b/.github/workflows/load-tests.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v6 with: - node-version: '24' + node-version: '24.14.0' - name: Install dependencies run: npm ci @@ -77,7 +77,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v6 with: - node-version: '24' + node-version: '24.14.0' - name: Install dependencies run: npm ci @@ -142,7 +142,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v6 with: - node-version: '24' + node-version: '24.14.0' - name: Compare test results run: | diff --git a/.github/workflows/unit.tests.yml b/.github/workflows/unit.tests.yml index b09b59f53..f52dfb997 100644 --- a/.github/workflows/unit.tests.yml +++ b/.github/workflows/unit.tests.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: - node-version: [24.x] + node-version: [24.14.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: From 025e59e369753741be3776b96de1f5955553cd5a Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 29 May 2026 13:32:13 +0300 Subject: [PATCH 201/206] allow new patches for node version in github actions --- .github/workflows/build-docker-image.yaml | 2 +- .github/workflows/load-tests.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-docker-image.yaml b/.github/workflows/build-docker-image.yaml index 8a1f9a835..20004d8d9 100644 --- a/.github/workflows/build-docker-image.yaml +++ b/.github/workflows/build-docker-image.yaml @@ -20,7 +20,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v6 with: - node-version: '24.14.0' # Specify your Node.js version + node-version: '24.14' # Specify your Node.js version - name: Log in to Docker Hub uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a diff --git a/.github/workflows/load-tests.yml b/.github/workflows/load-tests.yml index 55ca02537..38365ef98 100644 --- a/.github/workflows/load-tests.yml +++ b/.github/workflows/load-tests.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v6 with: - node-version: '24.14.0' + node-version: '24.14' - name: Install dependencies run: npm ci @@ -77,7 +77,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v6 with: - node-version: '24.14.0' + node-version: '24.14' - name: Install dependencies run: npm ci @@ -142,7 +142,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v6 with: - node-version: '24.14.0' + node-version: '24.14' - name: Compare test results run: | From 899d17592ccfb79875fd32d84435b4b47b8a2688 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 29 May 2026 17:04:36 +0300 Subject: [PATCH 202/206] add scheduleModule in public app --- src/public.app.module.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/public.app.module.ts b/src/public.app.module.ts index 524185e66..eb70311e7 100644 --- a/src/public.app.module.ts +++ b/src/public.app.module.ts @@ -11,9 +11,11 @@ import { DynamicModuleUtils } from './utils/dynamic.module.utils'; import { LocalCacheController } from './endpoints/caching/local.cache.controller'; import { RestrictedRoutesMiddleware } from './utils/restricted.routes.middleware'; import { ApiMetricsModule } from './common/metrics/api.metrics.module'; +import { ScheduleModule } from '@nestjs/schedule'; @Module({ imports: [ + ScheduleModule.forRoot(), // for plugins, best practice not to have crons in public API LoggingModule, EndpointsServicesModule, EndpointsControllersModule.forRoot(), From 751139e26105abd483c6e1cf994260e77eb25381 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 29 May 2026 17:23:48 +0300 Subject: [PATCH 203/206] import event emitter at each app root level module --- src/common/metrics/api.metrics.module.ts | 2 -- src/common/pubsub/pub.sub.listener.module.ts | 2 ++ src/common/websockets/web-socket-publisher-module.ts | 2 ++ src/crons/cache.warmer/cache.warmer.module.ts | 2 ++ src/crons/elastic.updater/elastic.updater.module.ts | 2 ++ src/crons/status.checker/status.checker.module.ts | 2 ++ .../transaction.processor/batch.transaction.processor.module.ts | 2 ++ src/crons/transaction.processor/transaction.completed.module.ts | 2 ++ src/crons/transaction.processor/transaction.processor.module.ts | 2 ++ src/crons/websocket/websocket.subscription.module.ts | 2 ++ src/endpoints/vm.query/vm.query.module.ts | 2 ++ src/private.app.module.ts | 2 ++ src/public.app.module.ts | 2 ++ src/queue.worker/nft.worker/queue/nft.queue.module.ts | 2 ++ 14 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/common/metrics/api.metrics.module.ts b/src/common/metrics/api.metrics.module.ts index 452f287cc..69b99cb3c 100644 --- a/src/common/metrics/api.metrics.module.ts +++ b/src/common/metrics/api.metrics.module.ts @@ -1,6 +1,5 @@ import { MetricsModule } from "@multiversx/sdk-nestjs-monitoring"; import { Global, Module } from "@nestjs/common"; -import { EventEmitterModule } from "@nestjs/event-emitter"; import { ApiMetricsService } from "./api.metrics.service"; import { ApiConfigModule } from "src/common/api-config/api.config.module"; import { GatewayModule } from "src/common/gateway/gateway.module"; @@ -10,7 +9,6 @@ import { ProtocolModule } from "src/common/protocol/protocol.module"; @Module({ imports: [ MetricsModule, - EventEmitterModule.forRoot({ maxListeners: 1 }), ApiConfigModule, GatewayModule, ProtocolModule, diff --git a/src/common/pubsub/pub.sub.listener.module.ts b/src/common/pubsub/pub.sub.listener.module.ts index 7ca1a80c0..5f1dc224f 100644 --- a/src/common/pubsub/pub.sub.listener.module.ts +++ b/src/common/pubsub/pub.sub.listener.module.ts @@ -3,11 +3,13 @@ import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; import { PubSubListenerController } from './pub.sub.listener.controller'; import { LoggingModule } from '@multiversx/sdk-nestjs-common'; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; +import { EventEmitterModule } from '@nestjs/event-emitter'; @Module({ imports: [ DynamicModuleUtils.getCacheModule(), LoggingModule, + EventEmitterModule.forRoot({ maxListeners: 1 }), ApiMetricsModule, ], controllers: [ diff --git a/src/common/websockets/web-socket-publisher-module.ts b/src/common/websockets/web-socket-publisher-module.ts index 3a7971915..cc0266249 100644 --- a/src/common/websockets/web-socket-publisher-module.ts +++ b/src/common/websockets/web-socket-publisher-module.ts @@ -4,10 +4,12 @@ import { WebSocketPublisherService } from "./web-socket-publisher-service"; import { WebSocketPublisherController } from "./web-socket-publisher-controller"; import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; +import { EventEmitterModule } from "@nestjs/event-emitter"; @Module({ imports: [ TransactionActionModule, + EventEmitterModule.forRoot({ maxListeners: 1 }), ApiMetricsModule, ], controllers: [ diff --git a/src/crons/cache.warmer/cache.warmer.module.ts b/src/crons/cache.warmer/cache.warmer.module.ts index 1561d888b..005c887fb 100644 --- a/src/crons/cache.warmer/cache.warmer.module.ts +++ b/src/crons/cache.warmer/cache.warmer.module.ts @@ -12,10 +12,12 @@ import { PluginModule } from 'src/plugins/plugin.module'; import { TpsWarmerService } from '../tps/tps-warmer.service'; import { TpsModule } from 'src/endpoints/tps/tps.module'; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; +import { EventEmitterModule } from '@nestjs/event-emitter'; @Module({ imports: [ ScheduleModule.forRoot(), + EventEmitterModule.forRoot({ maxListeners: 1 }), EndpointsServicesModule, KeybaseModule, MexModule.forRoot(), diff --git a/src/crons/elastic.updater/elastic.updater.module.ts b/src/crons/elastic.updater/elastic.updater.module.ts index 3558388d6..787a305de 100644 --- a/src/crons/elastic.updater/elastic.updater.module.ts +++ b/src/crons/elastic.updater/elastic.updater.module.ts @@ -5,10 +5,12 @@ import { PersistenceModule } from 'src/common/persistence/persistence.module'; import { EndpointsServicesModule } from 'src/endpoints/endpoints.services.module'; import { ElasticUpdaterService } from './elastic.updater.service'; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; +import { EventEmitterModule } from '@nestjs/event-emitter'; @Module({ imports: [ ScheduleModule.forRoot(), + EventEmitterModule.forRoot({ maxListeners: 1 }), EndpointsServicesModule, AssetsModule, forwardRef(() => PersistenceModule), diff --git a/src/crons/status.checker/status.checker.module.ts b/src/crons/status.checker/status.checker.module.ts index 0586952ba..d9bd48cff 100644 --- a/src/crons/status.checker/status.checker.module.ts +++ b/src/crons/status.checker/status.checker.module.ts @@ -5,10 +5,12 @@ import { EndpointsServicesModule } from "src/endpoints/endpoints.services.module import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; import { StatusCheckerService } from "./status.checker.service"; import { ApiMetricsModule } from "src/common/metrics/api.metrics.module"; +import { EventEmitterModule } from "@nestjs/event-emitter"; @Module({ imports: [ ScheduleModule.forRoot(), + EventEmitterModule.forRoot({ maxListeners: 1 }), EndpointsServicesModule, ApiMetricsModule, ], diff --git a/src/crons/transaction.processor/batch.transaction.processor.module.ts b/src/crons/transaction.processor/batch.transaction.processor.module.ts index 10dfece28..9811c9d33 100644 --- a/src/crons/transaction.processor/batch.transaction.processor.module.ts +++ b/src/crons/transaction.processor/batch.transaction.processor.module.ts @@ -6,10 +6,12 @@ import { TransactionModule } from "src/endpoints/transactions/transaction.module import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; import { BatchTransactionProcessorService } from "./batch.transaction.processor.service"; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; +import { EventEmitterModule } from "@nestjs/event-emitter"; @Module({ imports: [ ScheduleModule.forRoot(), + EventEmitterModule.forRoot({ maxListeners: 1 }), ApiConfigModule, DynamicModuleUtils.getCacheModule(), TransactionsBatchModule, diff --git a/src/crons/transaction.processor/transaction.completed.module.ts b/src/crons/transaction.processor/transaction.completed.module.ts index 4bf021c84..fef98b90c 100644 --- a/src/crons/transaction.processor/transaction.completed.module.ts +++ b/src/crons/transaction.processor/transaction.completed.module.ts @@ -6,10 +6,12 @@ import { TransactionCompletedService } from './transaction.completed.service'; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { GatewayModule } from 'src/common/gateway/gateway.module'; import { ProtocolModule } from 'src/common/protocol/protocol.module'; +import { EventEmitterModule } from '@nestjs/event-emitter'; @Module({ imports: [ ScheduleModule.forRoot(), + EventEmitterModule.forRoot({ maxListeners: 1 }), ApiConfigModule, ApiMetricsModule, GatewayModule, diff --git a/src/crons/transaction.processor/transaction.processor.module.ts b/src/crons/transaction.processor/transaction.processor.module.ts index ef3df67c6..add0f1be2 100644 --- a/src/crons/transaction.processor/transaction.processor.module.ts +++ b/src/crons/transaction.processor/transaction.processor.module.ts @@ -8,10 +8,12 @@ import { NftWorkerModule } from 'src/queue.worker/nft.worker/nft.worker.module'; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; import { TransactionProcessorService } from './transaction.processor.service'; +import { EventEmitterModule } from '@nestjs/event-emitter'; @Module({ imports: [ ScheduleModule.forRoot(), + EventEmitterModule.forRoot({ maxListeners: 1 }), TransactionModule, ShardModule, NodeModule, diff --git a/src/crons/websocket/websocket.subscription.module.ts b/src/crons/websocket/websocket.subscription.module.ts index 8146dc3a6..d6cbd505d 100644 --- a/src/crons/websocket/websocket.subscription.module.ts +++ b/src/crons/websocket/websocket.subscription.module.ts @@ -19,10 +19,12 @@ import { ApiConfigModule } from 'src/common/api-config/api.config.module'; import { TransfersCustomGateway } from './transfers.custom.gateway'; import { TransferModule } from 'src/endpoints/transfers/transfer.module'; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; +import { EventEmitterModule } from '@nestjs/event-emitter'; @Module({ imports: [ ScheduleModule.forRoot(), + EventEmitterModule.forRoot({ maxListeners: 1 }), TransactionModule, BlockModule, NetworkModule, diff --git a/src/endpoints/vm.query/vm.query.module.ts b/src/endpoints/vm.query/vm.query.module.ts index 01937df2e..f88cb45d4 100644 --- a/src/endpoints/vm.query/vm.query.module.ts +++ b/src/endpoints/vm.query/vm.query.module.ts @@ -5,6 +5,7 @@ import { ProtocolModule } from "src/common/protocol/protocol.module"; import { SettingsModule } from "src/common/settings/settings.module"; import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; import { VmQueryService } from "./vm.query.service"; +import { EventEmitterModule } from "@nestjs/event-emitter"; @Module({ imports: [ @@ -13,6 +14,7 @@ import { VmQueryService } from "./vm.query.service"; ProtocolModule, ApiConfigModule, SettingsModule, + EventEmitterModule.forRoot(), ], providers: [ VmQueryService, diff --git a/src/private.app.module.ts b/src/private.app.module.ts index 92428731e..f79db59b1 100644 --- a/src/private.app.module.ts +++ b/src/private.app.module.ts @@ -7,10 +7,12 @@ import { ProcessNftsModule } from './endpoints/process-nfts/process.nfts.module' import { LoggingModule } from '@multiversx/sdk-nestjs-common'; import { DynamicModuleUtils } from './utils/dynamic.module.utils'; import { ApiMetricsModule } from './common/metrics/api.metrics.module'; +import { EventEmitterModule } from '@nestjs/event-emitter'; @Module({ imports: [ LoggingModule, + EventEmitterModule.forRoot({ maxListeners: 1 }), ProcessNftsModule, ApiMetricsModule, ], diff --git a/src/public.app.module.ts b/src/public.app.module.ts index eb70311e7..7c083f1ba 100644 --- a/src/public.app.module.ts +++ b/src/public.app.module.ts @@ -12,10 +12,12 @@ import { LocalCacheController } from './endpoints/caching/local.cache.controller import { RestrictedRoutesMiddleware } from './utils/restricted.routes.middleware'; import { ApiMetricsModule } from './common/metrics/api.metrics.module'; import { ScheduleModule } from '@nestjs/schedule'; +import { EventEmitterModule } from '@nestjs/event-emitter'; @Module({ imports: [ ScheduleModule.forRoot(), // for plugins, best practice not to have crons in public API + EventEmitterModule.forRoot({ maxListeners: 1 }), LoggingModule, EndpointsServicesModule, EndpointsControllersModule.forRoot(), diff --git a/src/queue.worker/nft.worker/queue/nft.queue.module.ts b/src/queue.worker/nft.worker/queue/nft.queue.module.ts index e2e42c4da..3f3b13de3 100644 --- a/src/queue.worker/nft.worker/queue/nft.queue.module.ts +++ b/src/queue.worker/nft.worker/queue/nft.queue.module.ts @@ -4,11 +4,13 @@ import { NftJobProcessorModule } from './job-services/nft.job.processor.module'; import { NftModule } from 'src/endpoints/nfts/nft.module'; import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; +import { EventEmitterModule } from '@nestjs/event-emitter'; @Module({ imports: [ NftJobProcessorModule, NftModule, + EventEmitterModule.forRoot({ maxListeners: 1 }), ApiMetricsModule, ], providers: [ From 47b279f7ceb205f89fba7af649f039333f6c5c89 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Fri, 29 May 2026 17:44:02 +0300 Subject: [PATCH 204/206] refactor modules --- src/common/pubsub/pub.sub.listener.module.ts | 4 +++- src/common/rabbitmq/rabbitmq.module.ts | 4 ++++ src/common/websockets/web-socket-publisher-module.ts | 4 +++- src/endpoints/vm.query/vm.query.module.ts | 2 -- src/private.app.module.ts | 4 +++- src/queue.worker/nft.worker/queue/nft.queue.module.ts | 4 +++- 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/common/pubsub/pub.sub.listener.module.ts b/src/common/pubsub/pub.sub.listener.module.ts index 5f1dc224f..7c72bedb2 100644 --- a/src/common/pubsub/pub.sub.listener.module.ts +++ b/src/common/pubsub/pub.sub.listener.module.ts @@ -4,12 +4,14 @@ import { PubSubListenerController } from './pub.sub.listener.controller'; import { LoggingModule } from '@multiversx/sdk-nestjs-common'; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { EventEmitterModule } from '@nestjs/event-emitter'; +import { ScheduleModule } from '@nestjs/schedule'; @Module({ imports: [ + ScheduleModule.forRoot(), + EventEmitterModule.forRoot({ maxListeners: 1 }), DynamicModuleUtils.getCacheModule(), LoggingModule, - EventEmitterModule.forRoot({ maxListeners: 1 }), ApiMetricsModule, ], controllers: [ diff --git a/src/common/rabbitmq/rabbitmq.module.ts b/src/common/rabbitmq/rabbitmq.module.ts index 11eea01dd..ec5e445ac 100644 --- a/src/common/rabbitmq/rabbitmq.module.ts +++ b/src/common/rabbitmq/rabbitmq.module.ts @@ -9,9 +9,13 @@ import { ApiConfigService } from '../api-config/api.config.service'; import { RabbitMqConsumer } from './rabbitmq.consumer'; import { RabbitMqNftHandlerService } from './rabbitmq.nft.handler.service'; import { RabbitMqTokenHandlerService } from './rabbitmq.token.handler.service'; +import { EventEmitterModule } from '@nestjs/event-emitter'; +import { ScheduleModule } from '@nestjs/schedule'; @Module({ imports: [ + ScheduleModule.forRoot(), + EventEmitterModule.forRoot({ maxListeners: 1 }), ApiConfigModule, NftModule, NftWorkerModule, diff --git a/src/common/websockets/web-socket-publisher-module.ts b/src/common/websockets/web-socket-publisher-module.ts index cc0266249..a5b9c66df 100644 --- a/src/common/websockets/web-socket-publisher-module.ts +++ b/src/common/websockets/web-socket-publisher-module.ts @@ -5,11 +5,13 @@ import { WebSocketPublisherController } from "./web-socket-publisher-controller" import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { EventEmitterModule } from "@nestjs/event-emitter"; +import { ScheduleModule } from "@nestjs/schedule"; @Module({ imports: [ - TransactionActionModule, + ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + TransactionActionModule, ApiMetricsModule, ], controllers: [ diff --git a/src/endpoints/vm.query/vm.query.module.ts b/src/endpoints/vm.query/vm.query.module.ts index f88cb45d4..01937df2e 100644 --- a/src/endpoints/vm.query/vm.query.module.ts +++ b/src/endpoints/vm.query/vm.query.module.ts @@ -5,7 +5,6 @@ import { ProtocolModule } from "src/common/protocol/protocol.module"; import { SettingsModule } from "src/common/settings/settings.module"; import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; import { VmQueryService } from "./vm.query.service"; -import { EventEmitterModule } from "@nestjs/event-emitter"; @Module({ imports: [ @@ -14,7 +13,6 @@ import { EventEmitterModule } from "@nestjs/event-emitter"; ProtocolModule, ApiConfigModule, SettingsModule, - EventEmitterModule.forRoot(), ], providers: [ VmQueryService, diff --git a/src/private.app.module.ts b/src/private.app.module.ts index f79db59b1..1ea44382f 100644 --- a/src/private.app.module.ts +++ b/src/private.app.module.ts @@ -8,11 +8,13 @@ import { LoggingModule } from '@multiversx/sdk-nestjs-common'; import { DynamicModuleUtils } from './utils/dynamic.module.utils'; import { ApiMetricsModule } from './common/metrics/api.metrics.module'; import { EventEmitterModule } from '@nestjs/event-emitter'; +import { ScheduleModule } from '@nestjs/schedule'; @Module({ imports: [ - LoggingModule, + ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + LoggingModule, ProcessNftsModule, ApiMetricsModule, ], diff --git a/src/queue.worker/nft.worker/queue/nft.queue.module.ts b/src/queue.worker/nft.worker/queue/nft.queue.module.ts index 3f3b13de3..277d2e8ac 100644 --- a/src/queue.worker/nft.worker/queue/nft.queue.module.ts +++ b/src/queue.worker/nft.worker/queue/nft.queue.module.ts @@ -5,12 +5,14 @@ import { NftModule } from 'src/endpoints/nfts/nft.module'; import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { EventEmitterModule } from '@nestjs/event-emitter'; +import { ScheduleModule } from '@nestjs/schedule'; @Module({ imports: [ + ScheduleModule.forRoot(), + EventEmitterModule.forRoot({ maxListeners: 1 }), NftJobProcessorModule, NftModule, - EventEmitterModule.forRoot({ maxListeners: 1 }), ApiMetricsModule, ], providers: [ From e2d4ce4330f9c87b8f90c4d7f669aa4675d61091 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 3 Jun 2026 11:20:28 +0300 Subject: [PATCH 205/206] reduce-db-connections --- src/common/keybase/keybase.module.ts | 2 -- src/common/rabbitmq/rabbitmq.module.ts | 2 ++ src/common/websockets/web-socket-publisher-module.ts | 2 ++ src/crons/cache.warmer/cache.warmer.module.ts | 2 ++ src/crons/elastic.updater/elastic.updater.module.ts | 4 ++-- src/crons/status.checker/status.checker.module.ts | 2 ++ .../batch.transaction.processor.module.ts | 2 ++ .../transaction.completed.module.ts | 2 ++ .../transaction.processor.module.ts | 2 ++ src/crons/websocket/websocket.subscription.module.ts | 2 ++ src/private.app.module.ts | 2 ++ src/public.app.module.ts | 2 ++ src/queue.worker/nft.worker/nft.worker.module.ts | 2 -- .../queue/job-services/media/nft.media.module.ts | 2 -- src/queue.worker/nft.worker/queue/nft.queue.module.ts | 2 ++ src/queue.worker/queue.worker.module.ts | 11 ----------- 16 files changed, 24 insertions(+), 19 deletions(-) delete mode 100644 src/queue.worker/queue.worker.module.ts diff --git a/src/common/keybase/keybase.module.ts b/src/common/keybase/keybase.module.ts index e2bb07fa2..f766051d8 100644 --- a/src/common/keybase/keybase.module.ts +++ b/src/common/keybase/keybase.module.ts @@ -3,7 +3,6 @@ import { NodeModule } from "src/endpoints/nodes/node.module"; import { ProviderModule } from "src/endpoints/providers/provider.module"; import { ApiConfigModule } from "../api-config/api.config.module"; import { GithubModule } from "../github/github.module"; -import { PersistenceModule } from "../persistence/persistence.module"; import { KeybaseService } from "./keybase.service"; import { AssetsModule } from "../assets/assets.module"; @@ -13,7 +12,6 @@ import { AssetsModule } from "../assets/assets.module"; forwardRef(() => ProviderModule), forwardRef(() => GithubModule), ApiConfigModule, - PersistenceModule.forRoot(), AssetsModule, ], providers: [ diff --git a/src/common/rabbitmq/rabbitmq.module.ts b/src/common/rabbitmq/rabbitmq.module.ts index ec5e445ac..f1a5ba8a5 100644 --- a/src/common/rabbitmq/rabbitmq.module.ts +++ b/src/common/rabbitmq/rabbitmq.module.ts @@ -11,11 +11,13 @@ import { RabbitMqNftHandlerService } from './rabbitmq.nft.handler.service'; import { RabbitMqTokenHandlerService } from './rabbitmq.token.handler.service'; import { EventEmitterModule } from '@nestjs/event-emitter'; import { ScheduleModule } from '@nestjs/schedule'; +import { PersistenceModule } from '../persistence/persistence.module'; @Module({ imports: [ ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), ApiConfigModule, NftModule, NftWorkerModule, diff --git a/src/common/websockets/web-socket-publisher-module.ts b/src/common/websockets/web-socket-publisher-module.ts index a5b9c66df..29a628c39 100644 --- a/src/common/websockets/web-socket-publisher-module.ts +++ b/src/common/websockets/web-socket-publisher-module.ts @@ -6,11 +6,13 @@ import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { EventEmitterModule } from "@nestjs/event-emitter"; import { ScheduleModule } from "@nestjs/schedule"; +import { PersistenceModule } from "../persistence/persistence.module"; @Module({ imports: [ ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), TransactionActionModule, ApiMetricsModule, ], diff --git a/src/crons/cache.warmer/cache.warmer.module.ts b/src/crons/cache.warmer/cache.warmer.module.ts index 005c887fb..eb70fe555 100644 --- a/src/crons/cache.warmer/cache.warmer.module.ts +++ b/src/crons/cache.warmer/cache.warmer.module.ts @@ -13,11 +13,13 @@ import { TpsWarmerService } from '../tps/tps-warmer.service'; import { TpsModule } from 'src/endpoints/tps/tps.module'; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { EventEmitterModule } from '@nestjs/event-emitter'; +import { PersistenceModule } from 'src/common/persistence/persistence.module'; @Module({ imports: [ ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), EndpointsServicesModule, KeybaseModule, MexModule.forRoot(), diff --git a/src/crons/elastic.updater/elastic.updater.module.ts b/src/crons/elastic.updater/elastic.updater.module.ts index 787a305de..3cc608a9d 100644 --- a/src/crons/elastic.updater/elastic.updater.module.ts +++ b/src/crons/elastic.updater/elastic.updater.module.ts @@ -1,4 +1,4 @@ -import { forwardRef, Module } from '@nestjs/common'; +import { Module } from '@nestjs/common'; import { ScheduleModule } from '@nestjs/schedule'; import { AssetsModule } from 'src/common/assets/assets.module'; import { PersistenceModule } from 'src/common/persistence/persistence.module'; @@ -11,9 +11,9 @@ import { EventEmitterModule } from '@nestjs/event-emitter'; imports: [ ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), EndpointsServicesModule, AssetsModule, - forwardRef(() => PersistenceModule), ApiMetricsModule, ], providers: [ diff --git a/src/crons/status.checker/status.checker.module.ts b/src/crons/status.checker/status.checker.module.ts index d9bd48cff..d4027c18a 100644 --- a/src/crons/status.checker/status.checker.module.ts +++ b/src/crons/status.checker/status.checker.module.ts @@ -6,11 +6,13 @@ import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; import { StatusCheckerService } from "./status.checker.service"; import { ApiMetricsModule } from "src/common/metrics/api.metrics.module"; import { EventEmitterModule } from "@nestjs/event-emitter"; +import { PersistenceModule } from "src/common/persistence/persistence.module"; @Module({ imports: [ ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), EndpointsServicesModule, ApiMetricsModule, ], diff --git a/src/crons/transaction.processor/batch.transaction.processor.module.ts b/src/crons/transaction.processor/batch.transaction.processor.module.ts index 9811c9d33..45d6eaff2 100644 --- a/src/crons/transaction.processor/batch.transaction.processor.module.ts +++ b/src/crons/transaction.processor/batch.transaction.processor.module.ts @@ -7,11 +7,13 @@ import { DynamicModuleUtils } from "src/utils/dynamic.module.utils"; import { BatchTransactionProcessorService } from "./batch.transaction.processor.service"; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { EventEmitterModule } from "@nestjs/event-emitter"; +import { PersistenceModule } from "src/common/persistence/persistence.module"; @Module({ imports: [ ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), ApiConfigModule, DynamicModuleUtils.getCacheModule(), TransactionsBatchModule, diff --git a/src/crons/transaction.processor/transaction.completed.module.ts b/src/crons/transaction.processor/transaction.completed.module.ts index fef98b90c..2b7f63d24 100644 --- a/src/crons/transaction.processor/transaction.completed.module.ts +++ b/src/crons/transaction.processor/transaction.completed.module.ts @@ -7,11 +7,13 @@ import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { GatewayModule } from 'src/common/gateway/gateway.module'; import { ProtocolModule } from 'src/common/protocol/protocol.module'; import { EventEmitterModule } from '@nestjs/event-emitter'; +import { PersistenceModule } from 'src/common/persistence/persistence.module'; @Module({ imports: [ ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), ApiConfigModule, ApiMetricsModule, GatewayModule, diff --git a/src/crons/transaction.processor/transaction.processor.module.ts b/src/crons/transaction.processor/transaction.processor.module.ts index add0f1be2..ec5030b33 100644 --- a/src/crons/transaction.processor/transaction.processor.module.ts +++ b/src/crons/transaction.processor/transaction.processor.module.ts @@ -9,11 +9,13 @@ import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; import { TransactionProcessorService } from './transaction.processor.service'; import { EventEmitterModule } from '@nestjs/event-emitter'; +import { PersistenceModule } from 'src/common/persistence/persistence.module'; @Module({ imports: [ ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), TransactionModule, ShardModule, NodeModule, diff --git a/src/crons/websocket/websocket.subscription.module.ts b/src/crons/websocket/websocket.subscription.module.ts index d6cbd505d..dc57125e3 100644 --- a/src/crons/websocket/websocket.subscription.module.ts +++ b/src/crons/websocket/websocket.subscription.module.ts @@ -20,11 +20,13 @@ import { TransfersCustomGateway } from './transfers.custom.gateway'; import { TransferModule } from 'src/endpoints/transfers/transfer.module'; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { EventEmitterModule } from '@nestjs/event-emitter'; +import { PersistenceModule } from 'src/common/persistence/persistence.module'; @Module({ imports: [ ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), TransactionModule, BlockModule, NetworkModule, diff --git a/src/private.app.module.ts b/src/private.app.module.ts index 1ea44382f..0f048c8ac 100644 --- a/src/private.app.module.ts +++ b/src/private.app.module.ts @@ -9,11 +9,13 @@ import { DynamicModuleUtils } from './utils/dynamic.module.utils'; import { ApiMetricsModule } from './common/metrics/api.metrics.module'; import { EventEmitterModule } from '@nestjs/event-emitter'; import { ScheduleModule } from '@nestjs/schedule'; +import { PersistenceModule } from './common/persistence/persistence.module'; @Module({ imports: [ ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), LoggingModule, ProcessNftsModule, ApiMetricsModule, diff --git a/src/public.app.module.ts b/src/public.app.module.ts index 7c083f1ba..85484c9a1 100644 --- a/src/public.app.module.ts +++ b/src/public.app.module.ts @@ -11,6 +11,7 @@ import { DynamicModuleUtils } from './utils/dynamic.module.utils'; import { LocalCacheController } from './endpoints/caching/local.cache.controller'; import { RestrictedRoutesMiddleware } from './utils/restricted.routes.middleware'; import { ApiMetricsModule } from './common/metrics/api.metrics.module'; +import { PersistenceModule } from './common/persistence/persistence.module'; import { ScheduleModule } from '@nestjs/schedule'; import { EventEmitterModule } from '@nestjs/event-emitter'; @@ -18,6 +19,7 @@ import { EventEmitterModule } from '@nestjs/event-emitter'; imports: [ ScheduleModule.forRoot(), // for plugins, best practice not to have crons in public API EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), LoggingModule, EndpointsServicesModule, EndpointsControllersModule.forRoot(), diff --git a/src/queue.worker/nft.worker/nft.worker.module.ts b/src/queue.worker/nft.worker/nft.worker.module.ts index 4dbf81139..799a4116c 100644 --- a/src/queue.worker/nft.worker/nft.worker.module.ts +++ b/src/queue.worker/nft.worker/nft.worker.module.ts @@ -1,7 +1,6 @@ import { Module } from '@nestjs/common'; import { ClientProxyFactory, Transport } from '@nestjs/microservices'; import { ApiConfigService } from 'src/common/api-config/api.config.service'; -import { PersistenceModule } from 'src/common/persistence/persistence.module'; import { NftWorkerService } from './nft.worker.service'; import { NftAssetModule } from './queue/job-services/assets/nft.asset.module'; import { NftMediaModule } from './queue/job-services/media/nft.media.module'; @@ -14,7 +13,6 @@ import { NftThumbnailModule } from './queue/job-services/thumbnails/nft.thumbnai NftMetadataModule, NftThumbnailModule, NftAssetModule, - PersistenceModule.forRoot(), ], providers: [ NftWorkerService, diff --git a/src/queue.worker/nft.worker/queue/job-services/media/nft.media.module.ts b/src/queue.worker/nft.worker/queue/job-services/media/nft.media.module.ts index e5c5e8771..86f263fcd 100644 --- a/src/queue.worker/nft.worker/queue/job-services/media/nft.media.module.ts +++ b/src/queue.worker/nft.worker/queue/job-services/media/nft.media.module.ts @@ -1,11 +1,9 @@ import { Module } from '@nestjs/common'; -import { PersistenceModule } from 'src/common/persistence/persistence.module'; import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; import { NftMediaService } from './nft.media.service'; @Module({ imports: [ - PersistenceModule.forRoot(), ], controllers: [], providers: [ diff --git a/src/queue.worker/nft.worker/queue/nft.queue.module.ts b/src/queue.worker/nft.worker/queue/nft.queue.module.ts index 277d2e8ac..314d3cca3 100644 --- a/src/queue.worker/nft.worker/queue/nft.queue.module.ts +++ b/src/queue.worker/nft.worker/queue/nft.queue.module.ts @@ -6,11 +6,13 @@ import { DynamicModuleUtils } from 'src/utils/dynamic.module.utils'; import { ApiMetricsModule } from 'src/common/metrics/api.metrics.module'; import { EventEmitterModule } from '@nestjs/event-emitter'; import { ScheduleModule } from '@nestjs/schedule'; +import { PersistenceModule } from 'src/common/persistence/persistence.module'; @Module({ imports: [ ScheduleModule.forRoot(), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), NftJobProcessorModule, NftModule, ApiMetricsModule, diff --git a/src/queue.worker/queue.worker.module.ts b/src/queue.worker/queue.worker.module.ts deleted file mode 100644 index 20b23d8ac..000000000 --- a/src/queue.worker/queue.worker.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Module } from '@nestjs/common'; -import { NftQueueModule } from './nft.worker/queue/nft.queue.module'; - -@Module({ - imports: [ - NftQueueModule, - ], - controllers: [], - providers: [], -}) -export class QueueWorkerModule { } From 71234de891b1cca900b7d61cc3c352c4b1b226d3 Mon Sep 17 00:00:00 2001 From: GuticaStefan Date: Wed, 3 Jun 2026 11:45:12 +0300 Subject: [PATCH 206/206] fix unit tests --- src/test/unit/controllers/accounts.controller.spec.ts | 2 ++ src/test/unit/controllers/collections.controller.spec.ts | 2 ++ src/test/unit/controllers/delegation.controller.spec.ts | 2 ++ src/test/unit/controllers/network.controller.spec.ts | 2 ++ src/test/unit/controllers/pool.controller.spec.ts | 7 ++++++- src/test/unit/controllers/shard.controller.spec.ts | 2 ++ 6 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/test/unit/controllers/accounts.controller.spec.ts b/src/test/unit/controllers/accounts.controller.spec.ts index eca0c0810..c9335edee 100644 --- a/src/test/unit/controllers/accounts.controller.spec.ts +++ b/src/test/unit/controllers/accounts.controller.spec.ts @@ -33,6 +33,7 @@ import { mockAccountService, mockTokenService, mockNftService, mockDelegationLeg import { AccountFetchOptions } from "src/endpoints/accounts/entities/account.fetch.options"; import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter"; import { mockEventEmitterService } from "./services.mock/event.emitter2.services.mock"; +import { PersistenceModule } from "src/common/persistence/persistence.module"; describe('AccountController', () => { let app: INestApplication; @@ -59,6 +60,7 @@ describe('AccountController', () => { DelegationModule, ConfigModule.forRoot({}), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot() ], }) .overrideProvider(AccountService).useValue(accountServiceMocks) diff --git a/src/test/unit/controllers/collections.controller.spec.ts b/src/test/unit/controllers/collections.controller.spec.ts index 469668610..d1ad6fbe4 100644 --- a/src/test/unit/controllers/collections.controller.spec.ts +++ b/src/test/unit/controllers/collections.controller.spec.ts @@ -25,6 +25,7 @@ import { TransferService } from "src/endpoints/transfers/transfer.service"; import { TransferModule } from "src/endpoints/transfers/transfer.module"; import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter"; import { mockEventEmitterService } from "./services.mock/event.emitter2.services.mock"; +import { PersistenceModule } from "src/common/persistence/persistence.module"; describe('CollectionController', () => { let app: INestApplication; @@ -46,6 +47,7 @@ describe('CollectionController', () => { TransferModule, ConfigModule.forRoot({}), EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), ], }) .overrideProvider(CollectionService).useValue(collectionServiceMocks) diff --git a/src/test/unit/controllers/delegation.controller.spec.ts b/src/test/unit/controllers/delegation.controller.spec.ts index 53f6e1045..745c22c4d 100644 --- a/src/test/unit/controllers/delegation.controller.spec.ts +++ b/src/test/unit/controllers/delegation.controller.spec.ts @@ -7,6 +7,7 @@ import { DelegationModule } from "src/endpoints/delegation/delegation.module"; import { DelegationService } from "src/endpoints/delegation/delegation.service"; import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter"; import { mockEventEmitterService } from "./services.mock/event.emitter2.services.mock"; +import { PersistenceModule } from "src/common/persistence/persistence.module"; describe('DelegationController', () => { let app: INestApplication; @@ -20,6 +21,7 @@ describe('DelegationController', () => { imports: [ DelegationModule, EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot() ], }) .overrideProvider(DelegationService) diff --git a/src/test/unit/controllers/network.controller.spec.ts b/src/test/unit/controllers/network.controller.spec.ts index 14963a056..2d90e6927 100644 --- a/src/test/unit/controllers/network.controller.spec.ts +++ b/src/test/unit/controllers/network.controller.spec.ts @@ -12,6 +12,7 @@ import { About } from "src/endpoints/network/entities/about"; import { FeatureConfigs } from "../../../endpoints/network/entities/feature.configs"; import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter"; import { mockEventEmitterService } from "./services.mock/event.emitter2.services.mock"; +import { PersistenceModule } from "src/common/persistence/persistence.module"; describe("NetworkController", () => { let app: INestApplication; @@ -24,6 +25,7 @@ describe("NetworkController", () => { imports: [ NetworkModule, EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot() ], }) .overrideProvider(NetworkService) diff --git a/src/test/unit/controllers/pool.controller.spec.ts b/src/test/unit/controllers/pool.controller.spec.ts index ff8757490..a11afcd01 100644 --- a/src/test/unit/controllers/pool.controller.spec.ts +++ b/src/test/unit/controllers/pool.controller.spec.ts @@ -10,6 +10,7 @@ import { PoolFilter } from "src/endpoints/pool/entities/pool.filter"; import { TransactionType } from "src/endpoints/transactions/entities/transaction.type"; import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter"; import { mockEventEmitterService } from "./services.mock/event.emitter2.services.mock"; +import { PersistenceModule } from "src/common/persistence/persistence.module"; describe('PoolController', () => { let app: INestApplication; @@ -21,7 +22,11 @@ describe('PoolController', () => { jest.resetAllMocks(); const moduleFixture: TestingModule = await Test.createTestingModule({ controllers: [PoolController], - imports: [PoolModule, EventEmitterModule.forRoot({ maxListeners: 1 })], + imports: [ + PoolModule, + EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), + ], }).overrideProvider(PoolService) .useValue(poolServiceMocks) .overrideProvider(EventEmitter2) diff --git a/src/test/unit/controllers/shard.controller.spec.ts b/src/test/unit/controllers/shard.controller.spec.ts index 4c002b08d..2bba077b9 100644 --- a/src/test/unit/controllers/shard.controller.spec.ts +++ b/src/test/unit/controllers/shard.controller.spec.ts @@ -8,6 +8,7 @@ import request = require('supertest'); import { QueryPagination } from "src/common/entities/query.pagination"; import { EventEmitter2, EventEmitterModule } from "@nestjs/event-emitter"; import { mockEventEmitterService } from "./services.mock/event.emitter2.services.mock"; +import { PersistenceModule } from "src/common/persistence/persistence.module"; describe('ShardController', () => { let app: INestApplication; @@ -20,6 +21,7 @@ describe('ShardController', () => { imports: [ ShardModule, EventEmitterModule.forRoot({ maxListeners: 1 }), + PersistenceModule.forRoot(), ], }) .overrideProvider(ShardService)