diff --git a/packages/api/src/graphql/client.ts b/packages/api/src/graphql/client.ts index 77678bf1..ffee71de 100644 --- a/packages/api/src/graphql/client.ts +++ b/packages/api/src/graphql/client.ts @@ -17,6 +17,7 @@ import { ownership } from "./ownership"; import { permission } from "./permission"; import { proof } from "./proof"; import { user } from "./user"; +import { transaction } from "./transaction"; export interface IApiClient { api: ApiClient; @@ -30,6 +31,8 @@ export interface IApiClient { permission: ReturnType; merkle: ReturnType; proof: ReturnType; + + transaction: ReturnType; } export class ApiClient { @@ -87,7 +90,6 @@ export class ApiClient { }, }; }); - this.#client = new ApolloClient({ link: ApolloLink.from([removeTypenameLink, authLink, httpLink]), @@ -108,6 +110,7 @@ export class ApiClient { permission: permission(api.apollo), merkle: merkle(api.apollo), proof: proof(api.apollo), + transaction: transaction(api.apollo), }; } } diff --git a/packages/api/src/graphql/database.ts b/packages/api/src/graphql/database.ts index cb725afa..ecbe6e51 100644 --- a/packages/api/src/graphql/database.ts +++ b/packages/api/src/graphql/database.ts @@ -19,16 +19,8 @@ const DATABASE_CHANGE_OWNER = gql` `; const DATABASE_CREATE = gql` - mutation DbCreate( - $databaseName: String! - $merkleHeight: Int! - $publicKey: String! - ) { - dbCreate( - databaseName: $databaseName - merkleHeight: $merkleHeight - publicKey: $publicKey - ) + mutation DbCreate($databaseName: String!, $merkleHeight: Int!) { + dbCreate(databaseName: $databaseName, merkleHeight: $merkleHeight) } `; @@ -106,7 +98,7 @@ export const database = (client: TApolloClient) => ({ >(client, DATABASE_CHANGE_OWNER, (data) => data.dbChangeOwner), create: createMutateFunction< boolean, - { databaseName: string; merkleHeight: number; publicKey: string }, + { databaseName: string; merkleHeight: number }, { dbCreate: boolean } >(client, DATABASE_CREATE, (data) => data.dbCreate), setting: createQueryFunction< diff --git a/packages/api/src/graphql/transaction.ts b/packages/api/src/graphql/transaction.ts new file mode 100644 index 00000000..c7fac32c --- /dev/null +++ b/packages/api/src/graphql/transaction.ts @@ -0,0 +1,28 @@ +import { gql } from "@apollo/client"; +import { createQueryFunction, TApolloClient } from "./common.js"; +import { TDbTransaction, TTransactionRequest } from "./types/transaction.js"; + +const TRANSACTION_GET = gql` + query GetTransaction( + $databaseName: String! + $transactionType: TransactionType! + ) { + getTransaction( + databaseName: $databaseName + transactionType: $transactionType + ) { + databaseName + transactionType + tx + zkAppPublicKey + } + } +`; + +export const transaction = (client: TApolloClient) => ({ + getTransaction: createQueryFunction< + TDbTransaction, + TTransactionRequest, + { getTransaction: TDbTransaction } + >(client, TRANSACTION_GET, (data) => data.getTransaction), +}); diff --git a/packages/api/src/graphql/types/transaction.ts b/packages/api/src/graphql/types/transaction.ts new file mode 100644 index 00000000..daeb69e2 --- /dev/null +++ b/packages/api/src/graphql/types/transaction.ts @@ -0,0 +1,20 @@ +export type TTransactionRequest = { + databaseName: string; + transactionType: "deploy" | "rollup"; +}; +export type TTransactionType = "deploy" | "rollup"; +export type TTransactionStatus = + | "start" + | "ready" + | "pending" + | "failed" + | "success" + | "unknown"; +export type TDbTransaction = { + id: string; + databaseName: string; + status: TTransactionStatus; + transactionType: TTransactionType; + tx: string; + zkAppPublicKey: string; +}; diff --git a/packages/broker-service/src/apollo/app/task.ts b/packages/broker-service/src/apollo/app/task.ts index d31a96ce..26c17420 100644 --- a/packages/broker-service/src/apollo/app/task.ts +++ b/packages/broker-service/src/apollo/app/task.ts @@ -1,5 +1,5 @@ -import GraphQLJSON from 'graphql-type-json'; -import { getNextTaskId } from '../../domain/get-next-task.js'; +import GraphQLJSON from "graphql-type-json"; +import { getNextTaskId } from "../../domain/get-next-task.js"; export const typeDefsTask = `#graphql scalar JSON @@ -16,5 +16,5 @@ export const resolversTask = { JSON: GraphQLJSON, Query: { taskId, - } -}; \ No newline at end of file + }, +}; diff --git a/packages/broker-service/src/domain/get-next-task.ts b/packages/broker-service/src/domain/get-next-task.ts index c11e5307..ce880196 100644 --- a/packages/broker-service/src/domain/get-next-task.ts +++ b/packages/broker-service/src/domain/get-next-task.ts @@ -1,7 +1,12 @@ -import { ModelQueueTask, withTransaction } from "@zkdb/storage"; +import { ModelQueueTask, TransactionManager } from "@zkdb/storage"; +import { proofDb } from "../helper/config.js"; export async function getNextTaskId(): Promise { - return withTransaction(async (session) => { + TransactionManager.addSession({ + name: "proof", + session: proofDb.client.startSession(), + }); + return TransactionManager.withSingleTransaction("proof", async (session) => { const modelQueueTask = ModelQueueTask.getInstance(); const task = await modelQueueTask.getLatestQueuedTaskByDatabase(session); @@ -11,5 +16,5 @@ export async function getNextTaskId(): Promise { } return null; - }, "proof"); + }); } diff --git a/packages/broker-service/src/helper/config.ts b/packages/broker-service/src/helper/config.ts index 99274363..33cb609c 100644 --- a/packages/broker-service/src/helper/config.ts +++ b/packages/broker-service/src/helper/config.ts @@ -1,4 +1,5 @@ import { ConfigLoader, Joi } from "@orochi-network/framework"; +import { DatabaseEngine } from "@zkdb/storage"; export const NODE_ENV_VALUES = [ "development", "production", @@ -45,3 +46,4 @@ const configLoader = new ConfigLoader( ); export const { config } = configLoader; +export const proofDb = DatabaseEngine.getInstance(config.PROOF_MONGODB_URL); diff --git a/packages/broker-service/src/index.ts b/packages/broker-service/src/index.ts index e7aed929..f094a4cd 100644 --- a/packages/broker-service/src/index.ts +++ b/packages/broker-service/src/index.ts @@ -1,26 +1,24 @@ -import { DatabaseEngine } from "@zkdb/storage"; +import { + DatabaseEngine, + ModelQueueTask, + TransactionManager, +} from "@zkdb/storage"; import { ApolloServer } from "apollo-server-express"; import express from "express"; import http from "http"; import { ResolversApp, TypedefsApp } from "./apollo/index.js"; -import { config } from "./helper/config.js"; +import { config, proofDb } from "./helper/config.js"; import logger from "./helper/logger.js"; (async () => { const app = express(); - // DB service - const serviceDb = DatabaseEngine.getInstance(config.MONGODB_URL); - // DB proof - const proofDb = DatabaseEngine.getInstance(config.PROOF_MONGODB_URL); - if (!serviceDb.isConnected()) { - await serviceDb.connect(); - } - if (!proofDb.isConnected()) { await proofDb.connect(); } + ModelQueueTask.createModel(proofDb); + app.use(express.json()); const httpServer = http.createServer(app); diff --git a/packages/compile-service/src/helper/model-loader.ts b/packages/compile-service/src/helper/model-loader.ts new file mode 100644 index 00000000..b4436aa0 --- /dev/null +++ b/packages/compile-service/src/helper/model-loader.ts @@ -0,0 +1,26 @@ +import { + DatabaseEngine, + ModelDbSetting, + ModelDbTransaction, + ModelProof, + ModelSecureStorage, +} from "@zkdb/storage"; +import { config } from "./config"; + +export async function initModelLoader() { + const serviceDb = DatabaseEngine.getInstance(config.MONGODB_URL); + const proofDb = DatabaseEngine.getInstance(config.PROOF_MONGODB_URL); + + if (!serviceDb.isConnected()) { + await serviceDb.connect(); + } + + if (!proofDb.isConnected()) { + await proofDb.connect(); + } + + ModelDbTransaction.createModel(serviceDb); + ModelDbSetting.createModel(serviceDb); + ModelProof.createModel(proofDb); + ModelSecureStorage.createModel(proofDb); +} diff --git a/packages/compile-service/src/index.ts b/packages/compile-service/src/index.ts index 60afce8c..c29bbd39 100644 --- a/packages/compile-service/src/index.ts +++ b/packages/compile-service/src/index.ts @@ -2,16 +2,16 @@ import { logger } from "@helper"; import { EncryptionKey } from "@orochi-network/vault"; import { UnsignedTransaction, ZkCompileService } from "@service"; import { - DatabaseEngine, ModelDbSetting, ModelDbTransaction, ModelProof, ModelSecureStorage, } from "@zkdb/storage"; import { PrivateKey, PublicKey } from "o1js"; +import { setTimeout } from "timers/promises"; import { config } from "./helper/config"; +import { initModelLoader } from "./helper/model-loader"; import { RedisQueueService } from "./message-queue"; -import { setTimeout } from 'timers/promises'; export type TransactionType = "deploy" | "rollup"; @@ -60,16 +60,7 @@ async function findTransactionWithRetry( { url: config.REDIS_URL } ); // Connect to db - const serviceDb = DatabaseEngine.getInstance(config.MONGODB_URL); - const proofDb = DatabaseEngine.getInstance(config.PROOF_MONGODB_URL); - - if (!serviceDb.isConnected()) { - await serviceDb.connect(); - } - - if (!proofDb.isConnected()) { - await proofDb.connect(); - } + await initModelLoader(); const modelTransaction = ModelDbTransaction.getInstance(); const modelDbSettings = ModelDbSetting.getInstance(); diff --git a/packages/compile-service/src/service/zk-compile.ts b/packages/compile-service/src/service/zk-compile.ts index 935bb727..2394f18f 100644 --- a/packages/compile-service/src/service/zk-compile.ts +++ b/packages/compile-service/src/service/zk-compile.ts @@ -72,7 +72,7 @@ export class ZkCompileService { return partialSignedTx.toJSON(); } catch (error) { - logger.error(`Cannot compile & deploy: ${databaseName}`, logger); + logger.error(`Cannot compile & deploy: ${databaseName}`); await ModelDbSetting.getInstance().updateSetting(databaseName, { appPublicKey: undefined, }); diff --git a/packages/proof-service/src/domain/create-proof.ts b/packages/proof-service/src/domain/create-proof.ts index b030050f..797909fc 100644 --- a/packages/proof-service/src/domain/create-proof.ts +++ b/packages/proof-service/src/domain/create-proof.ts @@ -8,7 +8,7 @@ import { ModelMerkleTree, ModelProof, ModelQueueTask, - withTransaction, + TransactionManager, } from '@zkdb/storage'; import { ObjectId } from 'mongodb'; import { @@ -119,7 +119,7 @@ export async function createProof(taskId: string) { } else { const rollupProof = await modelProof.findOne({ merkleRoot: onChainRootState.toString(), - database: task.database + database: task.database, }); if (rollupProof) { proof = await circuit.updateTransition( @@ -150,7 +150,7 @@ export async function createProof(taskId: string) { // TODO: Should we consider both on-chain action and off-chain leaf. Off-chain leaf = On-chain action - await withTransaction(async (session) => { + await TransactionManager.withSingleTransaction('proof', async (session) => { await modelProof.saveProof( { ...proof.toJSON(), @@ -162,7 +162,7 @@ export async function createProof(taskId: string) { { session } ); await queue.markTaskProcessed(task._id, { session }); - }, 'proof'); + }); logger.debug('Task processed successfully.'); } catch (error) { diff --git a/packages/proof-service/src/helper/model-loader.ts b/packages/proof-service/src/helper/model-loader.ts new file mode 100644 index 00000000..a88fb905 --- /dev/null +++ b/packages/proof-service/src/helper/model-loader.ts @@ -0,0 +1,37 @@ +import { + DatabaseEngine, + ModelDbSetting, + ModelDbTransaction, + ModelMerkleTree, + ModelProof, + ModelQueueTask, + ModelSecureStorage, + TransactionManager, +} from '@zkdb/storage'; +import { config } from './config.js'; + +export async function initModelLoader() { + // db service + const serviceDb = DatabaseEngine.getInstance(config.MONGODB_URL); + // db proof + const proofDb = DatabaseEngine.getInstance(config.PROOF_MONGODB_URL); + console.log('🚀 ~ initModelLoader ~ L:', config.PROOF_MONGODB_URL); + if (!serviceDb.isConnected()) { + await serviceDb.connect(); + } + + if (!proofDb.isConnected()) { + await proofDb.connect(); + } + + TransactionManager.addSession({ + name: 'proof', + session: proofDb.client.startSession(), + }); + console.log('🚀 ~ initModelLoader ~ TransactionManager:', TransactionManager); + + ModelDbSetting.createModel(serviceDb); + ModelMerkleTree.createModel(serviceDb); + ModelQueueTask.createModel(proofDb); + ModelProof.createModel(proofDb); +} diff --git a/packages/proof-service/src/index.ts b/packages/proof-service/src/index.ts index 90a3557b..c191a68c 100644 --- a/packages/proof-service/src/index.ts +++ b/packages/proof-service/src/index.ts @@ -1,10 +1,12 @@ -import { DatabaseEngine } from '@zkdb/storage'; import TaskService from './service/task-service.js'; import logger from './helper/logger.js'; import { config } from './helper/config.js'; import { Mina } from 'o1js'; +import { initModelLoader } from './helper/model-loader.js'; (async () => { + await initModelLoader(); + const network = Mina.Network({ networkId: config.NETWORK_ID, mina: config.MINA_URL, @@ -12,20 +14,7 @@ import { Mina } from 'o1js'; Mina.setActiveInstance(network); - // db service - const serviceDb = DatabaseEngine.getInstance(config.MONGODB_URL); - // db proof - const proofDb = DatabaseEngine.getInstance(config.PROOF_MONGODB_URL); - if (!serviceDb.isConnected()) { - await serviceDb.connect(); - } - - if (!proofDb.isConnected()) { - await proofDb.connect(); - } - const taskService = new TaskService(); - await taskService.fetchAndProcessTasks(); logger.info('Proof service stopped.'); diff --git a/packages/proof-service/src/service/task-service.ts b/packages/proof-service/src/service/task-service.ts index 20630171..3a7899b5 100644 --- a/packages/proof-service/src/service/task-service.ts +++ b/packages/proof-service/src/service/task-service.ts @@ -19,7 +19,7 @@ class TaskService { let retries = 0; let delay = this.initialDelay; - while (retries < this.maxRetries) { + while (true) { const result = await getNextTaskId(); if (result.type === 'success') { diff --git a/packages/serverless/src/apollo/app/collection.ts b/packages/serverless/src/apollo/app/collection.ts index 95e22384..e9218c22 100644 --- a/packages/serverless/src/apollo/app/collection.ts +++ b/packages/serverless/src/apollo/app/collection.ts @@ -1,6 +1,7 @@ +import { TransactionManager } from '@zkdb/storage'; import Joi from 'joi'; import GraphQLJSON from 'graphql-type-json'; -import { ModelDatabase, withTransaction } from '@zkdb/storage'; +import { ModelDatabase } from '@zkdb/storage'; import { databaseName, collectionName, @@ -103,17 +104,18 @@ const collectionExist = publicWrapper( const collectionCreate = authorizeWrapper( CollectionCreateRequest, async (_root: unknown, args: TCollectionCreateRequest, ctx) => { - const createCollectionResult = await withTransaction((session) => - createCollection( - args.databaseName, - args.collectionName, - ctx.userName, - args.groupName, - args.schema, - args.permissions, - session - ) - ); + const createCollectionResult = + await TransactionManager.withSingleTransaction('service', (session) => + createCollection( + args.databaseName, + args.collectionName, + ctx.userName, + args.groupName, + args.schema, + args.permissions, + session + ) + ); if (args.indexes && args.indexes.length > 0 && createCollectionResult) { const indexResult = await createIndex( diff --git a/packages/serverless/src/apollo/app/database.ts b/packages/serverless/src/apollo/app/database.ts index 7b485778..6c8e9f64 100644 --- a/packages/serverless/src/apollo/app/database.ts +++ b/packages/serverless/src/apollo/app/database.ts @@ -1,5 +1,6 @@ -import { DB, ModelDatabase, ModelDbSetting } from '@zkdb/storage'; +import { ModelDatabase, ModelDbSetting } from '@zkdb/storage'; import GraphQLJSON from 'graphql-type-json'; +import { DB_INSTANCE } from 'helper/model-loader.js'; import Joi from 'joi'; import { changeDatabaseOwner, @@ -9,7 +10,7 @@ import { } from '../../domain/use-case/database.js'; import { Pagination } from '../types/pagination.js'; import publicWrapper, { authorizeWrapper } from '../validation.js'; -import { databaseName, pagination, publicKey, userName } from './common.js'; +import { databaseName, pagination, userName } from './common.js'; export type TDatabaseRequest = { databaseName: string; @@ -26,7 +27,6 @@ export type TDatabaseSearchRequest = { export type TDatabaseCreateRequest = TDatabaseRequest & { merkleHeight: number; - publicKey: string; }; export type TFindIndexRequest = TDatabaseRequest & { @@ -40,7 +40,6 @@ export type TDatabaseChangeOwnerRequest = TDatabaseRequest & { const DatabaseCreateRequest = Joi.object({ databaseName, merkleHeight: Joi.number().integer().positive().min(8).max(256).required(), - publicKey, }); const DatabaseUpdateDeployedRequest = @@ -108,7 +107,7 @@ extend type Query { } extend type Mutation { - dbCreate(databaseName: String!, merkleHeight: Int!, publicKey: String!): Boolean + dbCreate(databaseName: String!, merkleHeight: Int!): Boolean dbChangeOwner(databaseName: String!, newOwner: String!): Boolean dbDeployedUpdate(databaseName: String!, appPublicKey: String!): Boolean #dbDrop(databaseName: String!): Boolean @@ -142,7 +141,10 @@ const dbSetting = publicWrapper( databaseName, }), async (_root: unknown, args: TDatabaseRequest, _ctx) => { - const { databases } = await DB.service.client.db().admin().listDatabases(); + const { databases } = await DB_INSTANCE.service.client + .db() + .admin() + .listDatabases(); const isDatabaseExist = databases.some( (db) => db.name === args.databaseName @@ -176,11 +178,7 @@ const dbDeployedUpdate = authorizeWrapper( const dbCreate = authorizeWrapper( DatabaseCreateRequest, async (_root: unknown, args: TDatabaseCreateRequest, ctx) => - createDatabase( - args.databaseName, - args.merkleHeight, - ctx.userName - ) + createDatabase(args.databaseName, args.merkleHeight, ctx.userName) ); const dbChangeOwner = authorizeWrapper( diff --git a/packages/serverless/src/apollo/app/document-history.ts b/packages/serverless/src/apollo/app/document-history.ts index 08718598..3544621e 100644 --- a/packages/serverless/src/apollo/app/document-history.ts +++ b/packages/serverless/src/apollo/app/document-history.ts @@ -1,4 +1,4 @@ -import { withTransaction } from '@zkdb/storage'; +import { TransactionManager } from '@zkdb/storage'; import GraphQLJSON from 'graphql-type-json'; import Joi from 'joi'; import { authorizeWrapper } from '../validation.js'; @@ -50,14 +50,16 @@ extend type Query { const historyDocumentGet = authorizeWrapper( DOCUMENT_HISTORY_GET_REQUEST, async (_root: unknown, args: TDocumentHistoryGetRequest, ctx) => { - const document = await withTransaction((session) => - readHistoryDocument( - args.databaseName, - args.collectionName, - ctx.userName, - args.docId, - session - ) + const document = await TransactionManager.withSingleTransaction( + 'service', + (session) => + readHistoryDocument( + args.databaseName, + args.collectionName, + ctx.userName, + args.docId, + session + ) ); if (!document) { @@ -76,17 +78,20 @@ const historyDocumentGet = authorizeWrapper( const documentsHistoryList = authorizeWrapper( Joi.object().optional(), async (_root: unknown, args: TDocumentHistoryListRequest, ctx) => { - return withTransaction(async (session) => { - const documents = await listHistoryDocuments( - args.databaseName, - args.collectionName, - ctx.userName, - mapPagination(args.pagination), - session - ); + return TransactionManager.withSingleTransaction( + 'service', + async (session) => { + const documents = await listHistoryDocuments( + args.databaseName, + args.collectionName, + ctx.userName, + mapPagination(args.pagination), + session + ); - return documents; - }); + return documents; + } + ); } ); diff --git a/packages/serverless/src/apollo/app/document.ts b/packages/serverless/src/apollo/app/document.ts index 9ed3d412..27200ba2 100644 --- a/packages/serverless/src/apollo/app/document.ts +++ b/packages/serverless/src/apollo/app/document.ts @@ -1,4 +1,4 @@ -import { withCompoundTransaction, withTransaction } from '@zkdb/storage'; +import { TransactionManager } from '@zkdb/storage'; import GraphQLJSON from 'graphql-type-json'; import Joi from 'joi'; import { @@ -15,7 +15,7 @@ import mapPagination from '../mapper/pagination.js'; import { TDocumentFields } from '../types/document.js'; import { Pagination } from '../types/pagination.js'; import { PermissionsData } from '../types/permission.js'; -import publicWrapper, { authorizeWrapper } from '../validation.js'; +import { authorizeWrapper } from '../validation.js'; import { TCollectionRequest } from './collection.js'; import { collectionName, @@ -155,14 +155,16 @@ export const typeDefsDocument = gql` const documentFind = authorizeWrapper( DOCUMENT_FIND_REQUEST, async (_root: unknown, args: TDocumentFindRequest, ctx) => { - const document = await withTransaction((session) => - readDocument( - args.databaseName, - args.collectionName, - ctx.userName, - args.documentQuery, - session - ) + const document = await TransactionManager.withSingleTransaction( + 'service', + (session) => + readDocument( + args.databaseName, + args.collectionName, + ctx.userName, + args.documentQuery, + session + ) ); if (!document) { @@ -180,36 +182,42 @@ const documentFind = authorizeWrapper( const documentsFind = authorizeWrapper( DOCUMENTS_FIND_REQUEST, async (_root: unknown, args: TDocumentsFindRequest, ctx) => { - return withTransaction(async (session) => { - const documents = await searchDocuments( - args.databaseName, - args.collectionName, - ctx.userName, - args.documentQuery, - mapPagination(args.pagination), - session - ); + return TransactionManager.withSingleTransaction( + 'service', + async (session) => { + const documents = await searchDocuments( + args.databaseName, + args.collectionName, + ctx.userName, + args.documentQuery, + mapPagination(args.pagination), + session + ); - return documents; - }); + return documents; + } + ); } ); const documentsWithMetadataFind = authorizeWrapper( Joi.object().optional(), async (_root: unknown, args: TDocumentsFindRequest, ctx) => { - return withTransaction(async (session) => { - const documents = await findDocumentsWithMetadata( - args.databaseName, - args.collectionName, - ctx.userName, - args.documentQuery, - mapPagination(args.pagination), - session - ); + return TransactionManager.withSingleTransaction( + 'service', + async (session) => { + const documents = await findDocumentsWithMetadata( + args.databaseName, + args.collectionName, + ctx.userName, + args.documentQuery, + mapPagination(args.pagination), + session + ); - return documents; - }); + return documents; + } + ); } ); @@ -217,16 +225,17 @@ const documentsWithMetadataFind = authorizeWrapper( const documentCreate = authorizeWrapper( DOCUMENT_CREATE_REQUEST, async (_root: unknown, args: TDocumentCreateRequest, ctx) => - withCompoundTransaction((compoundSession) => - createDocument( + TransactionManager.withCompoundTransaction((compoundSession) => { + console.log('🚀 ~ compoundSession:', compoundSession); + return createDocument( args.databaseName, args.collectionName, ctx.userName, args.documentRecord as any, args.documentPermission, - compoundSession - ) - ) + undefined + ); + }) ); const documentUpdate = authorizeWrapper( @@ -240,26 +249,32 @@ const documentUpdate = authorizeWrapper( ); } - return updateDocument( - args.databaseName, - args.collectionName, - ctx.userName, - args.documentQuery, - args.documentRecord as any - ); + TransactionManager.withCompoundTransaction((compoundSession) => { + console.log('🚀 ~ compoundSession:', compoundSession); + return updateDocument( + args.databaseName, + args.collectionName, + ctx.userName, + args.documentQuery, + args.documentRecord as any, + undefined + ); + }); } ); const documentDrop = authorizeWrapper( DOCUMENT_FIND_REQUEST, - async (_root: unknown, args: TDocumentFindRequest, ctx) => { - return deleteDocument( - args.databaseName, - args.collectionName, - ctx.userName, - args.documentQuery - ); - } + async (_root: unknown, args: TDocumentFindRequest, ctx) => + TransactionManager.withCompoundTransaction((session) => + deleteDocument( + args.databaseName, + args.collectionName, + ctx.userName, + args.documentQuery, + undefined + ) + ) ); type TDocumentResolver = { diff --git a/packages/serverless/src/apollo/app/group.ts b/packages/serverless/src/apollo/app/group.ts index ddd30e57..54477b1d 100644 --- a/packages/serverless/src/apollo/app/group.ts +++ b/packages/serverless/src/apollo/app/group.ts @@ -1,4 +1,3 @@ -import { withTransaction } from '@zkdb/storage'; import GraphQLJSON from 'graphql-type-json'; import Joi from 'joi'; import { @@ -20,6 +19,7 @@ import { userName, } from './common.js'; import { TDatabaseRequest } from './database.js'; +import { TransactionManager } from '@zkdb/storage'; export type TGroupRequest = TDatabaseRequest & { groupName: string; @@ -164,7 +164,7 @@ const groupRename = authorizeWrapper( newGroupName: groupName, }), async (_root: unknown, args: TGroupRenameRequest, ctx) => - withTransaction(async (session) => + TransactionManager.withSingleTransaction('service', async (session) => renameGroup( args.databaseName, ctx.userName, @@ -178,7 +178,7 @@ const groupRename = authorizeWrapper( const groupCreate = authorizeWrapper( GroupCreateRequest, async (_root: unknown, args: TGroupCreateRequest, ctx) => - withTransaction(async (session) => + TransactionManager.withSingleTransaction('service', async (session) => createGroup( args.databaseName, ctx.userName, @@ -196,7 +196,7 @@ const groupAddUsers = authorizeWrapper( userNames: Joi.array().items(Joi.string().required()).required(), }), async (_root: unknown, args: TGroupAddUsersRequest, ctx) => - withTransaction(async (session) => + TransactionManager.withSingleTransaction('service', async (session) => addUsersToGroup( args.databaseName, ctx.userName, @@ -214,7 +214,7 @@ const groupRemoveUsers = authorizeWrapper( userNames: Joi.array().items(Joi.string().required()).required(), }), async (_root: unknown, args: TGroupAddUsersRequest, ctx) => - withTransaction(async (session) => + TransactionManager.withSingleTransaction('service', async (session) => excludeUsersToGroup( args.databaseName, ctx.userName, @@ -228,7 +228,7 @@ const groupRemoveUsers = authorizeWrapper( const groupChangeDescription = authorizeWrapper( GroupDescriptionChangeRequest, async (_root: unknown, args: TGroupCreateRequest, ctx) => - withTransaction(async (session) => + TransactionManager.withSingleTransaction('service', async (session) => changeGroupDescription( args.databaseName, ctx.userName, diff --git a/packages/serverless/src/apollo/app/merkle-tree.ts b/packages/serverless/src/apollo/app/merkle-tree.ts index 4172f16d..7a3c018c 100644 --- a/packages/serverless/src/apollo/app/merkle-tree.ts +++ b/packages/serverless/src/apollo/app/merkle-tree.ts @@ -1,4 +1,4 @@ -import { ModelMerkleTree, withTransaction } from '@zkdb/storage'; +import { ModelMerkleTree, TransactionManager } from '@zkdb/storage'; import GraphQLJSON from 'graphql-type-json'; import Joi from 'joi'; import { @@ -117,7 +117,7 @@ const getWitness = publicWrapper( const getWitnessByDocument = publicWrapper( MerkleTreeWitnessByDocumentRequest, async (_root: unknown, args: TMerkleTreeWitnessByDocumentRequest) => { - return withTransaction((session) => + return TransactionManager.withSingleTransaction('service', (session) => getWitnessByDocumentId(args.databaseName, args.docId, session) ); } @@ -127,7 +127,7 @@ const getNode = publicWrapper( MerkleTreeGetNodeRequest, async (_root: unknown, args: TMerkleTreeGetNodeRequest) => { const merkleTreeService = await ModelMerkleTree.load(args.databaseName); - return withTransaction((session) => + return TransactionManager.withSingleTransaction('service', (session) => merkleTreeService.getNode(args.level, args.index, new Date(), { session }) ); } diff --git a/packages/serverless/src/apollo/app/metadata.ts b/packages/serverless/src/apollo/app/metadata.ts index 0a3726ec..75de4115 100644 --- a/packages/serverless/src/apollo/app/metadata.ts +++ b/packages/serverless/src/apollo/app/metadata.ts @@ -1,25 +1,25 @@ -import Joi from 'joi'; +import { TransactionManager } from '@zkdb/storage'; import GraphQLJSON from 'graphql-type-json'; -import { withTransaction } from '@zkdb/storage'; -import publicWrapper, { authorizeWrapper } from '../validation.js'; -import { - databaseName, - userName, - collectionName, - objectId, - permissionDetail, -} from './common.js'; -import { TCollectionRequest } from './collection.js'; +import Joi from 'joi'; import { PermissionRecord } from '../../common/permission.js'; -import { FullPermissionsData, TPermissionGroup } from '../types/permission.js'; -import { setPermissions } from '../../domain/use-case/permission.js'; +import { readMetadata } from '../../domain/use-case/metadata.js'; import { changeCollectionOwnership, changeDocumentOwnership, } from '../../domain/use-case/ownership.js'; -import { TOwnershipGroup } from '../types/ownership.js'; -import { readMetadata } from '../../domain/use-case/metadata.js'; +import { setPermissions } from '../../domain/use-case/permission.js'; import { getSchemaDefinition } from '../../domain/use-case/schema.js'; +import { TOwnershipGroup } from '../types/ownership.js'; +import { FullPermissionsData, TPermissionGroup } from '../types/permission.js'; +import { authorizeWrapper } from '../validation.js'; +import { TCollectionRequest } from './collection.js'; +import { + collectionName, + databaseName, + objectId, + permissionDetail, + userName, +} from './common.js'; const ownershipGroup = Joi.string().valid('User', 'Group').required(); @@ -98,7 +98,7 @@ const permissionList = authorizeWrapper( docId: objectId.optional(), }), async (_root: unknown, args: TPermissionRequest, ctx) => { - return withTransaction((session) => + return TransactionManager.withSingleTransaction('service', (session) => readMetadata( args.databaseName, args.collectionName, @@ -129,7 +129,7 @@ const permissionSet = authorizeWrapper( permission: permissionDetail.required(), }), async (_root: unknown, args: TPermissionUpdateRequest, context) => { - await withTransaction((session) => + await TransactionManager.withSingleTransaction('service', (session) => setPermissions( args.databaseName, args.collectionName, @@ -140,7 +140,7 @@ const permissionSet = authorizeWrapper( ) ); - return withTransaction((session) => + return TransactionManager.withSingleTransaction('service', (session) => readMetadata( args.databaseName, args.collectionName, @@ -163,7 +163,7 @@ const permissionOwn = authorizeWrapper( }), async (_root: unknown, args: TPermissionOwnRequest, context) => { if (args.docId) { - await withTransaction((session) => + await TransactionManager.withSingleTransaction('service', (session) => changeDocumentOwnership( args.databaseName, args.collectionName, @@ -175,7 +175,7 @@ const permissionOwn = authorizeWrapper( ) ); } else { - await withTransaction((session) => + await TransactionManager.withSingleTransaction('service', (session) => changeCollectionOwnership( args.databaseName, args.collectionName, @@ -187,7 +187,7 @@ const permissionOwn = authorizeWrapper( ); } - return withTransaction((session) => + return TransactionManager.withSingleTransaction('service', (session) => readMetadata( args.databaseName, args.collectionName, diff --git a/packages/serverless/src/apollo/app/proof.ts b/packages/serverless/src/apollo/app/proof.ts index 0979dc0a..9f97900d 100644 --- a/packages/serverless/src/apollo/app/proof.ts +++ b/packages/serverless/src/apollo/app/proof.ts @@ -1,6 +1,6 @@ import Joi from 'joi'; import GraphQLJSON from 'graphql-type-json'; -import { ModelProof, ModelQueueTask, withTransaction } from '@zkdb/storage'; +import { ModelProof, ModelQueueTask, TransactionManager } from '@zkdb/storage'; import publicWrapper, { authorizeWrapper } from '../validation.js'; import { collectionName, databaseName, objectId } from './common.js'; import { hasDocumentPermission } from '../../domain/use-case/permission.js'; @@ -50,45 +50,48 @@ const getProofStatus = authorizeWrapper( docId: objectId.optional(), }), async (_root: unknown, args: TProofRequest, ctx) => { - return withTransaction(async (session) => { - const modelProof = ModelQueueTask.getInstance(); - - if ( - await hasDocumentPermission( - args.databaseName, - args.collectionName, - ctx.userName, - args.docId, - 'read', - session - ) - ) { - const proof = await modelProof.findOne({ - database: args.databaseName, - docId: args.docId, - }); - - if (proof) { - switch (proof.status) { - case 'queued': - return 'QUEUED'; - case 'proving': - return 'PROVING'; - case 'proved': - return 'PROVED'; - case 'failed': - return 'FAILED'; - default: - throw new Error(`Unknown proof status: ${proof.status}`); + return TransactionManager.withSingleTransaction( + 'service', + async (session) => { + const modelProof = ModelQueueTask.getInstance(); + + if ( + await hasDocumentPermission( + args.databaseName, + args.collectionName, + ctx.userName, + args.docId, + 'read', + session + ) + ) { + const proof = await modelProof.findOne({ + database: args.databaseName, + docId: args.docId, + }); + + if (proof) { + switch (proof.status) { + case 'queued': + return 'QUEUED'; + case 'proving': + return 'PROVING'; + case 'proved': + return 'PROVED'; + case 'failed': + return 'FAILED'; + default: + throw new Error(`Unknown proof status: ${proof.status}`); + } } + throw Error('Proof has not been found'); } - throw Error('Proof has not been found'); - } - throw new Error( - `Access denied: Actor '${ctx.userName}' does not have 'read' permission for the specified document.` - ); - }); + throw new Error( + `Access denied: Actor '${ctx.userName}' does not have 'read' permission for the specified document.` + ); + } + ); } ); diff --git a/packages/serverless/src/apollo/app/rollup.ts b/packages/serverless/src/apollo/app/rollup.ts index 89fa9a91..feafc1fc 100644 --- a/packages/serverless/src/apollo/app/rollup.ts +++ b/packages/serverless/src/apollo/app/rollup.ts @@ -1,13 +1,13 @@ -import Joi from 'joi'; -import { authorizeWrapper } from '../validation.js'; -import { databaseName, transactionType } from './common.js'; -import { TDatabaseRequest } from './database.js'; +import { TransactionManager } from '@zkdb/storage'; import GraphQLJSON from 'graphql-type-json'; +import Joi from 'joi'; import { - getRollUpHistory as getRollUpHistoryDomain, createRollUp as createRollUpDomain, + getRollUpHistory as getRollUpHistoryDomain, } from '../../domain/use-case/rollup.js'; -import { withCompoundTransaction, withTransaction } from '@zkdb/storage'; +import { authorizeWrapper } from '../validation.js'; +import { databaseName, transactionType } from './common.js'; +import { TDatabaseRequest } from './database.js'; export const typeDefsRollUp = `#graphql scalar Date @@ -53,11 +53,11 @@ const getRollUpHistory = authorizeWrapper( const createRollUp = authorizeWrapper( Joi.object({ - databaseName + databaseName, }), async (_root: unknown, args: TDatabaseRequest, ctx) => - withCompoundTransaction((compoundSession) => - createRollUpDomain(args.databaseName, ctx.userName, compoundSession) + TransactionManager.withCompoundTransaction((compoundSession) => + createRollUpDomain(args.databaseName, ctx.userName, undefined) ) ); diff --git a/packages/serverless/src/apollo/app/user.ts b/packages/serverless/src/apollo/app/user.ts index a50a28b5..ea12bf62 100644 --- a/packages/serverless/src/apollo/app/user.ts +++ b/packages/serverless/src/apollo/app/user.ts @@ -1,4 +1,3 @@ -import { withTransaction } from '@zkdb/storage'; import { randomUUID } from 'crypto'; import GraphQLJSON from 'graphql-type-json'; import Joi from 'joi'; @@ -24,6 +23,7 @@ import { Pagination } from '../types/pagination.js'; import publicWrapper, { authorizeWrapper } from '../validation.js'; import { pagination } from './common.js'; import config from '../../helper/config.js'; +import { TransactionManager } from '@zkdb/storage'; // We extend express session to define session expiration time declare module 'express-session' { @@ -228,8 +228,10 @@ const searchUser = publicWrapper( const findUser = publicWrapper( USER_FIND_REQUEST, async (_root: unknown, args: TUserFindRequest) => { - return withTransaction(async (session) => - findUserDomain(args.query, mapPagination(args.pagination), session) + return TransactionManager.withSingleTransaction( + 'service', + async (session) => + findUserDomain(args.query, mapPagination(args.pagination), session) ); } ); diff --git a/packages/serverless/src/domain/use-case/collection.ts b/packages/serverless/src/domain/use-case/collection.ts index 2c57ab3f..8ac8e2c1 100644 --- a/packages/serverless/src/domain/use-case/collection.ts +++ b/packages/serverless/src/domain/use-case/collection.ts @@ -1,5 +1,5 @@ import { Fill } from '@orochi-network/queue'; -import { DB, ModelCollection, ModelDatabase } from '@zkdb/storage'; +import { ModelCollection, ModelDatabase } from '@zkdb/storage'; import { ClientSession } from 'mongodb'; import { PermissionBinary } from '../../common/permission.js'; import { ModelCollectionMetadata } from '../../model/database/collection-metadata.js'; @@ -18,6 +18,7 @@ import { isGroupExist } from './group.js'; import { readMetadata } from './metadata.js'; import { hasCollectionPermission } from './permission.js'; import { getSchemaDefinition } from './schema.js'; +import { DB_INSTANCE } from 'helper/model-loader.js'; function mapSorting(sorting: Sorting): 1 | -1 { return sorting === 'ASC' ? 1 : -1; @@ -53,7 +54,11 @@ async function createIndex( ); } - return ModelCollection.getInstance(databaseName, DB.service, collectionName).index( + return ModelCollection.getInstance( + databaseName, + DB_INSTANCE.service, + collectionName + ).index( indexes.map((index) => ({ [index.name]: mapSorting(index.sorting) })) ); } @@ -112,7 +117,7 @@ async function readCollectionInfo( ) { const modelCollection = ModelCollection.getInstance( databaseName, - DB.service, + DB_INSTANCE.service, collectionName ); const indexes = await modelCollection.listIndexes(); @@ -132,7 +137,11 @@ async function readCollectionInfo( actor ); - await ModelCollection.getInstance(databaseName, DB.service, collectionName).size(); + await ModelCollection.getInstance( + databaseName, + DB_INSTANCE.service, + collectionName + ).size(); return { name: collectionName, indexes, schema, ownership, sizeOnDisk }; } @@ -209,7 +218,7 @@ async function listIndexes( // TODO: Should we check if index fields exist for a collection return ModelCollection.getInstance( databaseName, - DB.service, + DB_INSTANCE.service, collectionName ).listIndexes(); } @@ -229,7 +238,7 @@ export async function listIndexesInfo( ) { const modelCollection = ModelCollection.getInstance( databaseName, - DB.service, + DB_INSTANCE.service, collectionName ); @@ -296,9 +305,11 @@ async function doesIndexExist( session ) ) { - return ModelCollection.getInstance(databaseName, DB.service, collectionName).isIndexed( - indexName - ); + return ModelCollection.getInstance( + databaseName, + DB_INSTANCE.service, + collectionName + ).isIndexed(indexName); } throw Error( @@ -319,7 +330,7 @@ async function dropIndex( if (await doesIndexExist(databaseName, actor, collectionName, indexName)) { return ModelCollection.getInstance( databaseName, - DB.service, + DB_INSTANCE.service, collectionName ).dropIndex(indexName); } diff --git a/packages/serverless/src/domain/use-case/database.ts b/packages/serverless/src/domain/use-case/database.ts index 4d7062f6..15723bb4 100644 --- a/packages/serverless/src/domain/use-case/database.ts +++ b/packages/serverless/src/domain/use-case/database.ts @@ -1,12 +1,7 @@ import { Fill } from '@orochi-network/queue'; -import { - DB, - DbSetting, - ModelDbTransaction, - ModelDbSetting, -} from '@zkdb/storage'; +import { DbSetting, ModelDbSetting, ModelDbTransaction } from '@zkdb/storage'; +import { DB_INSTANCE } from 'helper/model-loader.js'; import { ClientSession } from 'mongodb'; -import { redisQueue } from '../../helper/mq.js'; import { ModelCollectionMetadata } from '../../model/database/collection-metadata.js'; import ModelDocumentMetadata from '../../model/database/document-metadata.js'; import ModelGroup from '../../model/database/group.js'; @@ -16,8 +11,8 @@ import { Database } from '../types/database.js'; import { Pagination, PaginationReturn } from '../types/pagination.js'; import { FilterCriteria } from '../utils/document.js'; import { listCollections } from './collection.js'; -import { isUserExist } from './user.js'; import { enqueueTransaction, getLatestTransaction } from './transaction.js'; +import { isUserExist } from './user.js'; // eslint-disable-next-line import/prefer-default-export export async function createDatabase( @@ -29,7 +24,7 @@ export async function createDatabase( if (user) { // Case database already exist - if (await DB.service.isDatabase(databaseName)) { + if (await DB_INSTANCE.service.isDatabase(databaseName)) { // Ensure database existing throw new Error(`Database name ${databaseName} already taken`); } @@ -73,7 +68,10 @@ export async function getDatabases( filter: FilterCriteria, pagination?: Pagination ): Promise> { - const databasesInfo = await DB.service.client.db().admin().listDatabases(); + const databasesInfo = await DB_INSTANCE.service.client + .db() + .admin() + .listDatabases(); if (!databasesInfo?.databases?.length) { return { @@ -118,7 +116,8 @@ export async function getDatabases( const collections = await listCollections(databaseName, actor); - const deployStatus = (await getLatestTransaction(databaseName, 'deploy'))?.status ?? null; + const deployStatus = + (await getLatestTransaction(databaseName, 'deploy'))?.status ?? null; return { databaseName, @@ -127,7 +126,7 @@ export async function getDatabases( databaseSize, collections, appPublicKey, - deployStatus + deployStatus, } as Database; }) ) diff --git a/packages/serverless/src/domain/use-case/document-history.ts b/packages/serverless/src/domain/use-case/document-history.ts index 824bcf10..813b06a0 100644 --- a/packages/serverless/src/domain/use-case/document-history.ts +++ b/packages/serverless/src/domain/use-case/document-history.ts @@ -1,5 +1,6 @@ /* eslint-disable import/prefer-default-export */ -import { DB, zkDatabaseConstants } from '@zkdb/storage'; +import { zkDatabaseConstants } from '@zkdb/storage'; +import { DB_INSTANCE } from 'helper/model-loader.js'; import { ClientSession } from 'mongodb'; import { PermissionBinary } from '../../common/permission.js'; import ModelDocument from '../../model/abstract/document.js'; @@ -101,7 +102,7 @@ async function listHistoryDocuments( session ) ) { - const { client } = DB.service; + const { client } = DB_INSTANCE.service; const database = client.db(databaseName); const documentsCollection = database.collection(collectionName); diff --git a/packages/serverless/src/domain/use-case/document.ts b/packages/serverless/src/domain/use-case/document.ts index 4030ea98..888cedb2 100644 --- a/packages/serverless/src/domain/use-case/document.ts +++ b/packages/serverless/src/domain/use-case/document.ts @@ -1,10 +1,7 @@ import { - CompoundSession, - DB, ModelQueueTask, ModelSequencer, TaskEntity, - withTransaction, zkDatabaseConstants, } from '@zkdb/storage'; import { ClientSession, WithId } from 'mongodb'; @@ -39,6 +36,7 @@ import { proveDeleteDocument, proveUpdateDocument, } from './prover.js'; +import { CompoundSession, DB_INSTANCE } from 'helper/model-loader.js'; export function buildDocumentFields( documentRecord: WithId @@ -180,11 +178,17 @@ async function createDocument( documentFieldsToDocumentRecord(document); // Save the document to the database - const insertResult = await modelDocument.insertOne(documentRecord, compoundSession?.sessionService); + const insertResult = await modelDocument.insertOne( + documentRecord, + compoundSession?.sessionService + ); // 2. Create new sequence value const sequencer = ModelSequencer.getInstance(databaseName); - const merkleIndex = await sequencer.getNextValue('merkle-index', compoundSession?.sessionService); + const merkleIndex = await sequencer.getNextValue( + 'merkle-index', + compoundSession?.sessionService + ); // 3. Create Metadata const modelDocumentMetadata = new ModelDocumentMetadata(databaseName); @@ -267,14 +271,16 @@ async function updateDocument( collectionName: string, actor: string, filter: FilterCriteria, - update: DocumentFields + update: DocumentFields, + session?: CompoundSession ) { if ( !(await hasCollectionPermission( databaseName, collectionName, actor, - 'write' + 'write', + session?.sessionService )) ) { throw new Error( @@ -283,54 +289,51 @@ async function updateDocument( } const modelDocument = ModelDocument.getInstance(databaseName, collectionName); - const documentRecord = await withTransaction(async (session) => { - const oldDocumentRecord = await modelDocument.findOne( - parseQuery(filter), - session - ); - - if (oldDocumentRecord) { - if ( - !(await hasDocumentPermission( - databaseName, - collectionName, - actor, - oldDocumentRecord.docId, - 'write', - session - )) - ) { - throw new Error( - `Access denied: Actor '${actor}' does not have 'write' permission for the specified document.` - ); - } - - if (update.length === 0) { - throw new Error( - 'Document array is empty. At least one field is required.' - ); - } - - const documentRecord: DocumentRecord = - documentFieldsToDocumentRecord(update); + const oldDocumentRecord = await modelDocument.findOne( + parseQuery(filter), + session?.sessionService + ); - await modelDocument.updateOne( + if (oldDocumentRecord) { + if ( + !(await hasDocumentPermission( + databaseName, + collectionName, + actor, oldDocumentRecord.docId, - documentRecord, - session + 'write', + session?.sessionService + )) + ) { + throw new Error( + `Access denied: Actor '${actor}' does not have 'write' permission for the specified document.` ); - return oldDocumentRecord; } - }); - if (documentRecord) { - const witness = await proveUpdateDocument( - databaseName, - collectionName, - documentRecord.docId, - update + if (update.length === 0) { + throw new Error( + 'Document array is empty. At least one field is required.' + ); + } + + const documentRecord: DocumentRecord = + documentFieldsToDocumentRecord(update); + + await modelDocument.updateOne( + oldDocumentRecord.docId, + documentRecord, + session?.sessionService! ); - return witness; + + if (documentRecord) { + const witness = await proveUpdateDocument( + databaseName, + collectionName, + documentRecord.docId, + update + ); + return witness; + } } throw Error( @@ -342,66 +345,64 @@ async function deleteDocument( databaseName: string, collectionName: string, actor: string, - filter: FilterCriteria + filter: FilterCriteria, + session?: CompoundSession ) { - const result = await withTransaction(async (session) => { + if ( + !(await hasCollectionPermission( + databaseName, + collectionName, + actor, + 'delete', + session?.sessionService + )) + ) { + throw new Error( + `Access denied: Actor '${actor}' does not have 'delete' permission for collection '${collectionName}'.` + ); + } + + const modelDocument = ModelDocument.getInstance(databaseName, collectionName); + + const findResult = await modelDocument.findOne( + parseQuery(filter), + session?.sessionService + ); + + if (findResult) { if ( - !(await hasCollectionPermission( + !(await hasDocumentPermission( databaseName, collectionName, actor, + findResult.docId, 'delete', - session + session?.sessionService )) ) { throw new Error( - `Access denied: Actor '${actor}' does not have 'delete' permission for collection '${collectionName}'.` + `Access denied: Actor '${actor}' does not have 'delete' permission for the specified document.` ); } - - const modelDocument = ModelDocument.getInstance( - databaseName, - collectionName - ); - - const findResult = await modelDocument.findOne(parseQuery(filter), session); - - if (findResult) { - if ( - !(await hasDocumentPermission( - databaseName, - collectionName, - actor, - findResult.docId, - 'delete', - session - )) - ) { - throw new Error( - `Access denied: Actor '${actor}' does not have 'delete' permission for the specified document.` - ); - } - await modelDocument.dropOne(findResult.docId); - } - - return findResult; - }); - if (result) { const witness = await proveDeleteDocument( databaseName, collectionName, - result.docId + findResult.docId, + session ); - return witness; - // TODO: Should we remove document metadata ??????? - // const modelDocumentMetadata = new ModelDocumentMetadata(databaseName); - // await modelDocumentMetadata.deleteOne( - // { docId: findResult[0].docId }, - // { session } - // ); + await modelDocument.dropOne(findResult.docId); + + return witness; } + // TODO: Should we remove document metadata ??????? + // const modelDocumentMetadata = new ModelDocumentMetadata(databaseName); + // await modelDocumentMetadata.deleteOne( + // { docId: findResult[0].docId }, + // { session } + // ); + throw Error('Document not found'); } @@ -482,7 +483,7 @@ async function findDocumentsWithMetadata( session ) ) { - const { client } = DB.service; + const { client } = DB_INSTANCE.service; const database = client.db(databaseName); const documentsCollection = database.collection(collectionName); @@ -575,7 +576,7 @@ async function searchDocuments( session ) ) { - const { client } = DB.service; + const { client } = DB_INSTANCE.service; const database = client.db(databaseName); const documentsCollection = database.collection(collectionName); diff --git a/packages/serverless/src/domain/use-case/prover.ts b/packages/serverless/src/domain/use-case/prover.ts index 1a5b36b1..86c88ea7 100644 --- a/packages/serverless/src/domain/use-case/prover.ts +++ b/packages/serverless/src/domain/use-case/prover.ts @@ -6,7 +6,6 @@ import { ModelMerkleTree, ModelQueueTask, ModelSequencer, - CompoundSession, } from '@zkdb/storage'; import ModelDocumentMetadata from '../../model/database/document-metadata.js'; @@ -21,7 +20,7 @@ export async function proveCreateDocument( collectionName: string, docId: string, document: DocumentFields, - compoundSession?: CompoundSession + compoundSession?: Record ): Promise { const merkleTree = await ModelMerkleTree.load(databaseName); @@ -85,10 +84,13 @@ export async function proveUpdateDocument( collectionName: string, docId: string, newDocument: DocumentFields, - session?: ClientSession + session?: Record ) { const modelDocument = ModelDocument.getInstance(databaseName, collectionName); - const oldDocument = await modelDocument.findOne({ docId }, session); + const oldDocument = await modelDocument.findOne( + { docId }, + session?.sessionService + ); if (!oldDocument) { throw new Error('Document does not exist'); @@ -101,7 +103,7 @@ export async function proveUpdateDocument( { docId, }, - { session } + { session: session?.sessionService } ); if (!documentMetadata) { @@ -112,7 +114,7 @@ export async function proveUpdateDocument( databaseName, collectionName, newDocument, - session + session?.sessionService ); const currDate = new Date(); const hash = schema.hash(); @@ -121,11 +123,14 @@ export async function proveUpdateDocument( BigInt(documentMetadata.merkleIndex), hash, currDate, - { session } + { session: session?.sessionService } ); const sequencer = ModelSequencer.getInstance(databaseName); - const operationNumber = await sequencer.getNextValue('operation', session); + const operationNumber = await sequencer.getNextValue( + 'operation', + session?.sessionService + ); await ModelQueueTask.getInstance().queueTask( { @@ -139,11 +144,11 @@ export async function proveUpdateDocument( operationNumber, merkleRoot: newRoot.toString(), }, - { session } + { session: session?.sessionProof } ); return merkleTree.getWitness(BigInt(documentMetadata.merkleIndex), currDate, { - session, + session: session?.sessionService, }); } @@ -152,10 +157,13 @@ export async function proveDeleteDocument( databaseName: string, collectionName: string, docId: string, - session?: ClientSession + session?: Record ) { const modelDocument = ModelDocument.getInstance(databaseName, collectionName); - const document = await modelDocument.findOne({ docId }, session); + const document = await modelDocument.findOne( + { docId }, + session?.sessionService + ); if (!document) { throw new Error('Document does not exist to be proved'); @@ -168,7 +176,7 @@ export async function proveDeleteDocument( { docId, }, - { session } + { session: session?.sessionService } ); if (!documentMetadata) { @@ -180,11 +188,14 @@ export async function proveDeleteDocument( BigInt(documentMetadata.merkleIndex), Field(0), currDate, - { session } + { session: session?.sessionService } ); const sequencer = ModelSequencer.getInstance(databaseName); - const operationNumber = await sequencer.getNextValue('operation', session); + const operationNumber = await sequencer.getNextValue( + 'operation', + session?.sessionService + ); await ModelQueueTask.getInstance().queueTask( { @@ -198,10 +209,10 @@ export async function proveDeleteDocument( operationNumber, merkleRoot: newRoot.toString(), }, - { session } + { session: session?.sessionProof } ); return merkleTree.getWitness(BigInt(documentMetadata.merkleIndex), currDate, { - session, + session: session?.sessionService, }); } diff --git a/packages/serverless/src/domain/use-case/rollup.ts b/packages/serverless/src/domain/use-case/rollup.ts index 824d0124..958bfa32 100644 --- a/packages/serverless/src/domain/use-case/rollup.ts +++ b/packages/serverless/src/domain/use-case/rollup.ts @@ -1,5 +1,4 @@ import { - CompoundSession, DbTransaction, ModelDbSetting, ModelDbTransaction, @@ -20,7 +19,7 @@ import { PublicKey } from 'o1js'; export async function createRollUp( databaseName: string, actor: string, - compoundSession?: CompoundSession + compoundSession?: Record ) { const modelProof = ModelProof.getInstance(); const latestProofForDb = await modelProof.getProof(databaseName, { diff --git a/packages/serverless/src/helper/model-loader.ts b/packages/serverless/src/helper/model-loader.ts new file mode 100644 index 00000000..af51e2c2 --- /dev/null +++ b/packages/serverless/src/helper/model-loader.ts @@ -0,0 +1,52 @@ +import { + DatabaseEngine, + ModelDatabase, + ModelDbSetting, + ModelMerkleTree, + ModelProof, + ModelQueueTask, + ModelSecureStorage, + TransactionManager, +} from '@zkdb/storage'; +import config from './config.js'; +import { ClientSession } from 'mongodb'; + +export const DB_INSTANCE = { + proof: DatabaseEngine.getInstance(config.PROOF_MONGODB_URL), + service: DatabaseEngine.getInstance(config.MONGODB_URL), +}; + +export type CompoundSession = { + sessionProof: ClientSession; + sessionService: ClientSession; +}; + +export async function initModelLoader() { + const { service: serviceDb, proof: proofDb } = DB_INSTANCE; + + if (!serviceDb.isConnected()) { + await serviceDb.connect(); + } + + if (!proofDb.isConnected()) { + await proofDb.connect(); + } + + TransactionManager.addSession( + { + name: 'proof', + session: proofDb.client.startSession(), + }, + { + name: 'service', + session: serviceDb.client.startSession(), + } + ); + + ModelDatabase.createModel(serviceDb); + ModelDbSetting.createModel(serviceDb); + ModelMerkleTree.createModel(serviceDb); + ModelQueueTask.createModel(proofDb); + ModelProof.createModel(proofDb); + ModelSecureStorage.createModel(proofDb); +} diff --git a/packages/serverless/src/index.ts b/packages/serverless/src/index.ts index bb6ab5bd..37b555fb 100644 --- a/packages/serverless/src/index.ts +++ b/packages/serverless/src/index.ts @@ -1,7 +1,12 @@ import { ApolloServer } from '@apollo/server'; import { expressMiddleware } from '@apollo/server/express4'; import { ApolloServerPluginDrainHttpServer } from '@apollo/server/plugin/drainHttpServer'; -import { DatabaseEngine, ModelDbTransaction, ModelQueueTask, ModelSecureStorage } from '@zkdb/storage'; +import { + DatabaseEngine, + ModelDbTransaction, + ModelQueueTask, + ModelSecureStorage, +} from '@zkdb/storage'; import RedisStore from 'connect-redis'; import cors from 'cors'; import { randomUUID } from 'crypto'; @@ -22,26 +27,14 @@ import logger from './helper/logger.js'; import RedisInstance from './helper/redis.js'; import { NetworkId } from 'o1js'; import { MinaNetwork } from '@zkdb/smart-contract'; +import { initModelLoader } from 'helper/model-loader.js'; const EXPRESS_SESSION_EXPIRE_TIME = 86400; (async () => { const app = express(); - // DB service - const serviceDb = DatabaseEngine.getInstance(config.MONGODB_URL); - // DB proof - const proofDb = DatabaseEngine.getInstance(config.PROOF_MONGODB_URL); - if (!serviceDb.isConnected()) { - await serviceDb.connect(); - } - - if (!proofDb.isConnected()) { - await proofDb.connect(); - } - await ModelDbTransaction.init(); - await ModelQueueTask.init(); - await ModelSecureStorage.init() + await initModelLoader(); MinaNetwork.getInstance().connect( config.NETWORK_ID as NetworkId, diff --git a/packages/serverless/src/model/abstract/document.ts b/packages/serverless/src/model/abstract/document.ts index d86fe594..624275ea 100644 --- a/packages/serverless/src/model/abstract/document.ts +++ b/packages/serverless/src/model/abstract/document.ts @@ -1,11 +1,12 @@ /* eslint-disable no-await-in-loop */ // eslint-disable-next-line max-classes-per-file -import { DB, ModelBasic, ModelCollection, ModelDatabase } from '@zkdb/storage'; +import { ModelBasic, ModelCollection, ModelDatabase } from '@zkdb/storage'; import { randomUUID } from 'crypto'; import { ClientSession, Document, Filter, ObjectId } from 'mongodb'; import { PermissionBasic } from '../../common/permission.js'; import logger from '../../helper/logger.js'; import { SchemaField } from '../database/collection-metadata.js'; +import { DB_INSTANCE } from 'helper/model-loader.js'; export type DocumentField = Pick; @@ -32,7 +33,7 @@ export class ModelDocument extends ModelBasic { public static instances = new Map(); private constructor(databaseName: string, collectionName: string) { - super(databaseName, DB.service, collectionName, { + super(databaseName, DB_INSTANCE.service, collectionName, { timeseries: { timeField: 'timestamp', granularity: 'seconds', @@ -47,7 +48,7 @@ export class ModelDocument extends ModelBasic { get modelCollection() { return ModelCollection.getInstance( this.databaseName!, - DB.service, + DB_INSTANCE.service, this.collectionName! ); } diff --git a/packages/serverless/src/model/database/collection-metadata.ts b/packages/serverless/src/model/database/collection-metadata.ts index 1ac52c99..3cbc7b2f 100644 --- a/packages/serverless/src/model/database/collection-metadata.ts +++ b/packages/serverless/src/model/database/collection-metadata.ts @@ -1,5 +1,4 @@ import { - DB, ModelCollection, ModelGeneral, zkDatabaseConstants, @@ -7,6 +6,7 @@ import { import { Document, FindOptions } from 'mongodb'; import { PermissionBasic } from '../../common/permission.js'; import { ProvableTypeString } from '../../domain/common/schema.js'; +import { DB_INSTANCE } from 'helper/model-loader.js'; // Every data type will be treaded as string when store/transfer /* @@ -83,7 +83,11 @@ export class ModelCollectionMetadata extends ModelGeneral { } private constructor(databaseName: string) { - super(databaseName, DB.service, ModelCollectionMetadata.collectionName); + super( + databaseName, + DB_INSTANCE.service, + ModelCollectionMetadata.collectionName + ); } public static getInstance(databaseName: string): ModelCollectionMetadata { @@ -111,7 +115,7 @@ export class ModelCollectionMetadata extends ModelGeneral { public static async init(databaseName: string) { const collection = ModelCollection.getInstance( databaseName, - DB.service, + DB_INSTANCE.service, ModelCollectionMetadata.collectionName ); if (!(await collection.isExist())) { diff --git a/packages/serverless/src/model/database/document-metadata.ts b/packages/serverless/src/model/database/document-metadata.ts index 544d9e4a..326145cd 100644 --- a/packages/serverless/src/model/database/document-metadata.ts +++ b/packages/serverless/src/model/database/document-metadata.ts @@ -1,11 +1,11 @@ import { - DB, ModelCollection, ModelGeneral, zkDatabaseConstants, } from '@zkdb/storage'; import { Document } from 'mongodb'; import { PermissionBasic } from '../../common/permission.js'; +import { DB_INSTANCE } from 'helper/model-loader.js'; export interface DocumentMetadataSchema extends PermissionBasic, Document { collection: string; @@ -29,13 +29,17 @@ export class ModelDocumentMetadata extends ModelGeneral zkDatabaseConstants.databaseCollections.permission; constructor(databaseName: string) { - super(databaseName, DB.service, ModelDocumentMetadata.collectionName); + super( + databaseName, + DB_INSTANCE.service, + ModelDocumentMetadata.collectionName + ); } public static async init(databaseName: string) { const collection = new ModelCollection( databaseName, - DB.service, + DB_INSTANCE.service, ModelDocumentMetadata.collectionName ); if (!(await collection.isExist())) { diff --git a/packages/serverless/src/model/database/group.ts b/packages/serverless/src/model/database/group.ts index f1ebfba7..edb45b88 100644 --- a/packages/serverless/src/model/database/group.ts +++ b/packages/serverless/src/model/database/group.ts @@ -1,5 +1,4 @@ import { - DB, ModelCollection, ModelGeneral, zkDatabaseConstants, @@ -7,6 +6,7 @@ import { import { ClientSession, Document, InsertOneOptions } from 'mongodb'; import { ZKDATABASE_USER_SYSTEM } from '../../common/const.js'; import { getCurrentTime } from '../../helper/common.js'; +import { DB_INSTANCE } from 'helper/model-loader.js'; export interface GroupSchema extends Document { groupName: string; @@ -21,7 +21,7 @@ export class ModelGroup extends ModelGeneral { zkDatabaseConstants.databaseCollections.group; constructor(databaseName: string) { - super(databaseName, DB.service, ModelGroup.collectionName); + super(databaseName, DB_INSTANCE.service, ModelGroup.collectionName); } public async createGroup( @@ -52,7 +52,7 @@ export class ModelGroup extends ModelGeneral { public static async init(databaseName: string) { const collection = ModelCollection.getInstance( databaseName, - DB.service, + DB_INSTANCE.service, ModelGroup.collectionName ); if (!(await collection.isExist())) { diff --git a/packages/serverless/src/model/database/user-group.ts b/packages/serverless/src/model/database/user-group.ts index 7051e7de..a725ffaf 100644 --- a/packages/serverless/src/model/database/user-group.ts +++ b/packages/serverless/src/model/database/user-group.ts @@ -1,11 +1,11 @@ import { - DB, ModelCollection, ModelGeneral, zkDatabaseConstants, } from '@zkdb/storage'; import { BulkWriteOptions, Document, FindOptions, ObjectId } from 'mongodb'; import ModelGroup, { GroupSchema } from './group.js'; +import { DB_INSTANCE } from 'helper/model-loader.js'; export interface DocumentUserGroup extends Document { userName: string; @@ -21,7 +21,7 @@ export class ModelUserGroup extends ModelGeneral { zkDatabaseConstants.databaseCollections.userGroup; constructor(databaseName: string) { - super(databaseName, DB.service, ModelUserGroup.collectionName); + super(databaseName, DB_INSTANCE.service, ModelUserGroup.collectionName); } public async checkMembership( @@ -129,7 +129,7 @@ export class ModelUserGroup extends ModelGeneral { public static async init(databaseName: string) { const collection = ModelCollection.getInstance( databaseName, - DB.service, + DB_INSTANCE.service, ModelUserGroup.collectionName ); if (!(await collection.isExist())) { diff --git a/packages/serverless/src/model/global/ownership.ts b/packages/serverless/src/model/global/ownership.ts index e257b5be..03a95216 100644 --- a/packages/serverless/src/model/global/ownership.ts +++ b/packages/serverless/src/model/global/ownership.ts @@ -1,9 +1,9 @@ import { - DB, ModelCollection, ModelGeneral, zkDatabaseConstants, } from '@zkdb/storage'; +import { DB_INSTANCE } from 'helper/model-loader'; import { Document } from 'mongodb'; export interface DocumentOwnership extends Document { @@ -19,7 +19,7 @@ export class ModelOwnership extends ModelGeneral { constructor() { super( zkDatabaseConstants.globalDatabase, - DB.service, + DB_INSTANCE.service, ModelOwnership.collectionName ); } @@ -27,7 +27,7 @@ export class ModelOwnership extends ModelGeneral { public static async init() { const collection = ModelCollection.getInstance( zkDatabaseConstants.globalDatabase, - DB.service, + DB_INSTANCE.service, ModelOwnership.collectionName ); if (!(await collection.isExist())) { diff --git a/packages/serverless/src/model/global/user.ts b/packages/serverless/src/model/global/user.ts index baa79c2f..e5eac841 100644 --- a/packages/serverless/src/model/global/user.ts +++ b/packages/serverless/src/model/global/user.ts @@ -1,5 +1,4 @@ import { - DB, ModelCollection, ModelGeneral, zkDatabaseConstants, @@ -10,6 +9,7 @@ import { ZKDATABASE_USER_SYSTEM, } from '../../common/const.js'; import { getCurrentTime, objectToLookupPattern } from '../../helper/common.js'; +import { DB_INSTANCE } from 'helper/model-loader.js'; export interface DocumentUser extends Document { userName: string; @@ -33,7 +33,7 @@ export class ModelUser extends ModelGeneral { constructor() { super( zkDatabaseConstants.globalDatabase, - DB.service, + DB_INSTANCE.service, ModelUser.collectionName ); } @@ -41,7 +41,7 @@ export class ModelUser extends ModelGeneral { public static async init() { const collection = ModelCollection.getInstance( zkDatabaseConstants.globalDatabase, - DB.service, + DB_INSTANCE.service, ModelUser.collectionName ); if (!(await collection.isExist())) { diff --git a/packages/storage/.env.example b/packages/storage/.env.example deleted file mode 100644 index d3531533..00000000 --- a/packages/storage/.env.example +++ /dev/null @@ -1,4 +0,0 @@ -# Mandatory -NODE_ENV=development -MONGODB_URL=mongodb://admin:password@127.0.0.1:27017/?directConnection=true -PROOF_MONGODB_URL=mongodb://admin:password@127.0.0.1:27018/?directConnection=true \ No newline at end of file diff --git a/packages/storage/package.json b/packages/storage/package.json index f22bd40e..22f1f088 100644 --- a/packages/storage/package.json +++ b/packages/storage/package.json @@ -18,7 +18,7 @@ "main": "build/src/index.js", "types": "build/src/index.d.ts", "scripts": { - "build": "tsc", + "build": "rm -rf ./build && rollup -c", "buildw": "tsc --watch", "coverage": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage", "format": "prettier --write --ignore-unknown **/*", @@ -34,6 +34,10 @@ "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.12.0", "@jest/globals": "^29.7.0", + "@rollup/plugin-alias": "^5.1.1", + "@rollup/plugin-commonjs": "^28.0.1", + "@rollup/plugin-node-resolve": "^15.3.0", + "@rollup/plugin-typescript": "^12.1.1", "@shelf/jest-mongodb": "^4.2.0", "@types/cors": "^2.8.14", "@types/jest": "^29.5.12", @@ -52,12 +56,13 @@ "eslint-plugin-require-extensions": "^0.1.3", "jest": "29.7.0", "prettier": "^3.0.3", + "rollup": "^4.27.2", "ts-jest": "^29.1.2", "typedoc": "^0.26.7", "typescript": "^5.6.2" }, "peerDependencies": { - "o1js": "1.9.*" + "o1js": "2.x.*" }, "dependencies": { "@orochi-network/framework": "^2.3.19", diff --git a/packages/storage/rollup.config.js b/packages/storage/rollup.config.js new file mode 100644 index 00000000..cfb2b29d --- /dev/null +++ b/packages/storage/rollup.config.js @@ -0,0 +1,28 @@ +import typescript from '@rollup/plugin-typescript'; +import alias from '@rollup/plugin-alias'; +import commonjs from '@rollup/plugin-commonjs'; +import resolve from '@rollup/plugin-node-resolve'; + +export default { + input: 'src/index.ts', + output: { + entryFileNames: 'src/index.js', + dir: 'build', + preserveModules: false, // If will build to a single index.js file if it 'false' + sourcemap: true, + }, + external: ['@orochi-network/framework', 'o1js', 'mongodb', 'crypto'], + plugins: [ + alias({ + entries: [ + { find: '@', replacement: 'src' }, + { find: '@common', replacement: 'src/common' }, + { find: '@database', replacement: 'src/database' }, + { find: '@helper', replacement: 'src/helper' }, + ], + }), + resolve(), + commonjs(), + typescript({ sourceMap: true, tsconfig: 'tsconfig.json' }), + ], +}; diff --git a/packages/storage/src/common/index.ts b/packages/storage/src/common/index.ts index 939967a0..e47ea3a4 100644 --- a/packages/storage/src/common/index.ts +++ b/packages/storage/src/common/index.ts @@ -1,3 +1 @@ -import { zkDatabaseConstants, zkDatabaseMetadataCollections } from './const.js'; - -export { zkDatabaseConstants, zkDatabaseMetadataCollections }; +export * from './const'; diff --git a/packages/storage/src/database/base/basic.ts b/packages/storage/src/database/base/basic.ts index 1d62d837..a2961778 100644 --- a/packages/storage/src/database/base/basic.ts +++ b/packages/storage/src/database/base/basic.ts @@ -1,12 +1,12 @@ import { ClientSession, CreateCollectionOptions, Document } from 'mongodb'; -import logger from '../../helper/logger.js'; -import { DatabaseEngine } from '../database-engine.js'; +import { DatabaseEngine } from '../database-engine'; +import { logger } from '@helper'; /** * ModelBasic is the most basic model of data. It interacts directly with DatabaseEngine * and provides .db and .collection to allow other models to interact with the database/collection. */ -export default abstract class ModelBasic { +export abstract class ModelBasic { protected dbEngine: DatabaseEngine; protected databaseName: string; diff --git a/packages/storage/src/database/base/general.ts b/packages/storage/src/database/base/general.ts index ab31ab9f..91563c8d 100644 --- a/packages/storage/src/database/base/general.ts +++ b/packages/storage/src/database/base/general.ts @@ -17,8 +17,8 @@ import { WithoutId, ReplaceOptions, } from 'mongodb'; -import ModelBasic from './basic.js'; -import logger from '../../helper/logger.js'; +import { ModelBasic } from './basic'; +import { logger } from '@helper'; /** * ModelGeneral was build to handle global metadata, this is mongodb general model and it have nothing diff --git a/packages/storage/src/database/base/index.ts b/packages/storage/src/database/base/index.ts new file mode 100644 index 00000000..952eb24c --- /dev/null +++ b/packages/storage/src/database/base/index.ts @@ -0,0 +1,2 @@ +export * from './basic'; +export * from './general'; diff --git a/packages/storage/src/database/common-model/index.ts b/packages/storage/src/database/common-model/index.ts new file mode 100644 index 00000000..6b9b69e2 --- /dev/null +++ b/packages/storage/src/database/common-model/index.ts @@ -0,0 +1,5 @@ +export * from './merkle-tree'; +export * from './rollup-history'; +export * from './sequencer'; +export * from './setting'; +export * from './transactions'; diff --git a/packages/storage/src/database/common/merkle-tree.ts b/packages/storage/src/database/common-model/merkle-tree.ts similarity index 94% rename from packages/storage/src/database/common/merkle-tree.ts rename to packages/storage/src/database/common-model/merkle-tree.ts index a515842a..3e25b6b6 100644 --- a/packages/storage/src/database/common/merkle-tree.ts +++ b/packages/storage/src/database/common-model/merkle-tree.ts @@ -1,18 +1,11 @@ import crypto from 'crypto'; -import { - BulkWriteOptions, - ClientSession, - Document, - FindOptions, - ObjectId, -} from 'mongodb'; +import { BulkWriteOptions, Document, FindOptions, ObjectId } from 'mongodb'; import { Field, MerkleTree, Poseidon } from 'o1js'; -import { zkDatabaseConstants } from '../../common/const.js'; -import { DB } from '../../helper/db-instance.js'; -import createExtendedMerkleWitness from '../../helper/extended-merkle-witness.js'; -import logger from '../../helper/logger.js'; -import ModelGeneral from '../base/general.js'; -import { ModelDbSetting } from './setting.js'; +import { logger, createExtendedMerkleWitness } from '@helper'; +import { zkDatabaseConstants } from '@common'; +import { ModelGeneral } from '../base'; +import { DatabaseEngine } from '../database-engine'; +import { ModelDbSetting } from './setting'; // Data type for merkle tree to be able to store in database export interface MerkleProof extends Document { @@ -44,6 +37,7 @@ export type TMerkleWitnessNode = { export class ModelMerkleTree extends ModelGeneral { private static instances = new Map(); + private static dbEngine: DatabaseEngine; private zeroes: Field[] = []; private _height: number = 0; @@ -51,7 +45,7 @@ export class ModelMerkleTree extends ModelGeneral { private constructor(databaseName: string) { super( databaseName, - DB.service, + ModelMerkleTree.dbEngine, zkDatabaseConstants.databaseCollections.merkleTree, { timeseries: { @@ -61,7 +55,9 @@ export class ModelMerkleTree extends ModelGeneral { } ); } - + public static createModel(dbEngine: DatabaseEngine) { + ModelMerkleTree.dbEngine = dbEngine; + } private static getInstance(databaseName: string): ModelMerkleTree { if (!ModelMerkleTree.instances.has(databaseName)) { ModelMerkleTree.instances.set( diff --git a/packages/storage/src/database/common/rollup-history.ts b/packages/storage/src/database/common-model/rollup-history.ts similarity index 78% rename from packages/storage/src/database/common/rollup-history.ts rename to packages/storage/src/database/common-model/rollup-history.ts index 33db5e36..4c6fcbe6 100644 --- a/packages/storage/src/database/common/rollup-history.ts +++ b/packages/storage/src/database/common-model/rollup-history.ts @@ -1,8 +1,8 @@ import { ObjectId, ReplaceOptions, UpdateResult } from 'mongodb'; -import { zkDatabaseConstants } from '../../common/index.js'; -import { DB } from '../../helper/db-instance.js'; -import logger from '../../helper/logger.js'; -import ModelBasic from '../base/basic.js'; +import { ModelBasic } from '../base'; +import { DatabaseEngine } from '../database-engine'; +import { zkDatabaseConstants } from '@common'; +import { logger } from '@helper'; export type RollupHistory = { merkleRoot: string; @@ -13,14 +13,20 @@ export type RollupHistory = { export class ModelRollup extends ModelBasic { private static instance: ModelRollup; + private static dbEngine: DatabaseEngine; + private constructor() { super( zkDatabaseConstants.globalDatabase, - DB.service, + ModelRollup.dbEngine, zkDatabaseConstants.globalCollections.rollup ); } + public static createModel(dbEngine: DatabaseEngine) { + ModelRollup.dbEngine = dbEngine; + } + public static getInstance() { if (!ModelRollup.instance) { this.instance = new ModelRollup(); diff --git a/packages/storage/src/database/common/sequencer.ts b/packages/storage/src/database/common-model/sequencer.ts similarity index 74% rename from packages/storage/src/database/common/sequencer.ts rename to packages/storage/src/database/common-model/sequencer.ts index f71ef623..0f9c3710 100644 --- a/packages/storage/src/database/common/sequencer.ts +++ b/packages/storage/src/database/common-model/sequencer.ts @@ -1,9 +1,9 @@ import { ClientSession } from 'mongodb'; -import { zkDatabaseConstants } from '../../common/index.js'; -import { DB } from '../../helper/db-instance.js'; -import ModelBasic from '../base/basic.js'; +import { ModelBasic } from '../base'; +import { DatabaseEngine } from '../database-engine'; +import { zkDatabaseConstants } from '@common'; -export type Sequence = "merkle-index" | "operation"; +export type Sequence = 'merkle-index' | 'operation'; export type SequencedItem = { _id: string; @@ -12,15 +12,18 @@ export type SequencedItem = { export class ModelSequencer extends ModelBasic { private static instances = new Map(); + private static dbEngine: DatabaseEngine; private constructor(databaseName: string) { super( databaseName, - DB.service, + ModelSequencer.dbEngine, zkDatabaseConstants.databaseCollections.sequencer ); } - + public static createModel(dbEngine: DatabaseEngine) { + ModelSequencer.dbEngine = dbEngine; + } public static getInstance(databaseName: string) { const key = databaseName; if (!ModelSequencer.instances.has(key)) { diff --git a/packages/storage/src/database/common/setting.ts b/packages/storage/src/database/common-model/setting.ts similarity index 90% rename from packages/storage/src/database/common/setting.ts rename to packages/storage/src/database/common-model/setting.ts index 7444a67e..95661535 100644 --- a/packages/storage/src/database/common/setting.ts +++ b/packages/storage/src/database/common-model/setting.ts @@ -5,9 +5,9 @@ import { InsertOneResult, UpdateResult, } from 'mongodb'; -import { zkDatabaseConstants } from '../../common/const.js'; -import { DB } from '../../helper/db-instance.js'; -import ModelBasic from '../base/basic.js'; +import { ModelBasic } from '../base'; +import { DatabaseEngine } from '../database-engine'; +import { zkDatabaseConstants } from '@common'; export type DbSetting = { databaseName: string; @@ -18,14 +18,18 @@ export type DbSetting = { export class ModelDbSetting extends ModelBasic { private static instance: ModelDbSetting; + private static dbEngine: DatabaseEngine; private constructor() { super( zkDatabaseConstants.globalDatabase, - DB.service, + ModelDbSetting.dbEngine, zkDatabaseConstants.globalCollections.setting ); } + public static createModel(dbEngine: DatabaseEngine) { + ModelDbSetting.dbEngine = dbEngine; + } public static getInstance() { if (!ModelDbSetting.instance) { diff --git a/packages/storage/src/database/common/transactions.ts b/packages/storage/src/database/common-model/transactions.ts similarity index 83% rename from packages/storage/src/database/common/transactions.ts rename to packages/storage/src/database/common-model/transactions.ts index 1dad587f..d5efa043 100644 --- a/packages/storage/src/database/common/transactions.ts +++ b/packages/storage/src/database/common-model/transactions.ts @@ -1,17 +1,17 @@ import { + Document, Filter, FindOptions, - ReplaceOptions, - UpdateResult, - Document, InsertOneResult, ObjectId, + ReplaceOptions, + UpdateResult, WithId, } from 'mongodb'; -import { zkDatabaseConstants } from '../../common/const.js'; -import { DB } from '../../helper/db-instance.js'; -import ModelBasic from '../base/basic.js'; -import ModelCollection from '../general/collection.js'; +import { ModelBasic } from '../base'; +import { DatabaseEngine } from '../database-engine'; +import { zkDatabaseConstants } from '@common'; +import { ModelCollection } from '../general'; export type TransactionType = 'deploy' | 'rollup'; @@ -21,7 +21,7 @@ export type TransactionStatus = | 'pending' | 'failed' | 'success' - | 'unknown' + | 'unknown'; export type DbTransaction = { transactionType: TransactionType; @@ -35,14 +35,18 @@ export type DbTransaction = { export class ModelDbTransaction extends ModelBasic { private static instance: ModelDbTransaction; + private static dbEngine: DatabaseEngine; private constructor() { super( zkDatabaseConstants.globalDatabase, - DB.service, + ModelDbTransaction.dbEngine, zkDatabaseConstants.globalCollections.transaction ); } + public static createModel(dbEngine: DatabaseEngine) { + ModelDbTransaction.dbEngine = dbEngine; + } public static getInstance() { if (!ModelDbTransaction.instance) { @@ -104,10 +108,11 @@ export class ModelDbTransaction extends ModelBasic { return await this.collection.countDocuments(filter); } - public static async init() { + public static async init(dbEngine: DatabaseEngine) { + ModelDbTransaction.createModel(dbEngine); const collection = ModelCollection.getInstance( zkDatabaseConstants.globalDatabase, - DB.service, + dbEngine, zkDatabaseConstants.globalCollections.transaction ); if (!(await collection.isExist())) { diff --git a/packages/storage/src/database/database-engine.ts b/packages/storage/src/database/database-engine.ts index c8450434..eea7778e 100644 --- a/packages/storage/src/database/database-engine.ts +++ b/packages/storage/src/database/database-engine.ts @@ -1,5 +1,5 @@ import { MongoClient, ServerApiVersion } from 'mongodb'; -import logger from '../helper/logger.js'; +import { logger } from '@helper'; export class DatabaseEngine { private static instances: Record = {}; diff --git a/packages/storage/src/database/general/collection.ts b/packages/storage/src/database/general/collection.ts index 4c43a71d..70ab0f30 100644 --- a/packages/storage/src/database/general/collection.ts +++ b/packages/storage/src/database/general/collection.ts @@ -4,12 +4,10 @@ import { DropIndexesOptions, IndexSpecification, } from 'mongodb'; -import { isOk } from '../../helper/common.js'; -import { DB } from '../../helper/db-instance.js'; -import logger from '../../helper/logger.js'; -import ModelBasic from '../base/basic.js'; -import ModelDatabase from './database.js'; -import { DatabaseEngine } from '../database-engine.js'; +import { ModelBasic } from '../base'; +import ModelDatabase from './database'; +import { DatabaseEngine } from '../database-engine'; +import { isOk, logger } from '@helper'; /** * Handles collection operations. Extends ModelBasic. diff --git a/packages/storage/src/database/general/database.ts b/packages/storage/src/database/general/database.ts index 894fae7c..dae74f6f 100644 --- a/packages/storage/src/database/general/database.ts +++ b/packages/storage/src/database/general/database.ts @@ -4,12 +4,9 @@ import { ListDatabasesResult, ObjectId, } from 'mongodb'; -import { - zkDatabaseConstants, - zkDatabaseMetadataCollections, -} from '../../common/index.js'; -import { DB } from '../../helper/db-instance.js'; -import ModelBasic from '../base/basic.js'; +import { ModelBasic } from '../base'; +import { DatabaseEngine } from '../database-engine'; +import { zkDatabaseConstants, zkDatabaseMetadataCollections } from '@common'; export type DocumentMetaIndex = { collection: string; @@ -23,11 +20,18 @@ export type DocumentMetaIndex = { */ export class ModelDatabase extends ModelBasic { private static instances: Map> = new Map(); + private static dbEngine: DatabaseEngine; constructor(databaseName?: string) { - super(databaseName || zkDatabaseConstants.globalDatabase, DB.service); + super( + databaseName || zkDatabaseConstants.globalDatabase, + ModelDatabase.dbEngine + ); } + public static createModel(dbEngine: DatabaseEngine) { + ModelDatabase.dbEngine = dbEngine; + } public static getInstance( databaseName: string ): ModelDatabase { diff --git a/packages/storage/src/database/general/index.ts b/packages/storage/src/database/general/index.ts new file mode 100644 index 00000000..f69d439a --- /dev/null +++ b/packages/storage/src/database/general/index.ts @@ -0,0 +1,2 @@ +export * from './collection'; +export * from './database'; diff --git a/packages/storage/src/database/global/index.ts b/packages/storage/src/database/global/index.ts new file mode 100644 index 00000000..048857e4 --- /dev/null +++ b/packages/storage/src/database/global/index.ts @@ -0,0 +1,3 @@ +export * from './proof'; +export * from './queue'; +export * from './secure-storage'; diff --git a/packages/storage/src/database/global/proof.ts b/packages/storage/src/database/global/proof.ts index af009c77..dbf1ab31 100644 --- a/packages/storage/src/database/global/proof.ts +++ b/packages/storage/src/database/global/proof.ts @@ -1,8 +1,8 @@ import { FindOptions, InsertOneOptions } from 'mongodb'; -import { zkDatabaseConstants } from '../../common/const.js'; -import { DB } from '../../helper/db-instance.js'; -import logger from '../../helper/logger.js'; -import ModelGeneral from '../base/general.js'; +import { ModelGeneral } from '../base'; +import { DatabaseEngine } from '../database-engine'; +import { zkDatabaseConstants } from '@common'; +import { logger } from '@helper'; export type ZKProof = { publicInput: string[]; @@ -23,12 +23,16 @@ export type ProofDetails = ZKProof & ProofMetadata; export class ModelProof extends ModelGeneral { public static instance: ModelProof; + private static dbEngine: DatabaseEngine; + public static createModel(dbEngine: DatabaseEngine) { + ModelProof.dbEngine = dbEngine; + } public static getInstance(): ModelProof { if (!this.instance) { this.instance = new ModelProof( zkDatabaseConstants.globalProofDatabase, - DB.proof, + ModelProof.dbEngine, zkDatabaseConstants.globalCollections.proof ); } diff --git a/packages/storage/src/database/global/queue.ts b/packages/storage/src/database/global/queue.ts index 77912a6f..72666b2e 100644 --- a/packages/storage/src/database/global/queue.ts +++ b/packages/storage/src/database/global/queue.ts @@ -1,6 +1,5 @@ import { ClientSession, - Db, Filter, FindOptions, InsertOneOptions, @@ -8,10 +7,11 @@ import { UpdateOptions, WithId, } from 'mongodb'; -import { zkDatabaseConstants } from '../../common/const.js'; -import { DB } from '../../helper/db-instance.js'; -import ModelGeneral from '../base/general.js'; -import ModelCollection from '../general/collection.js'; +import { ModelGeneral } from '../base'; +import { DatabaseEngine } from '../database-engine'; +import { zkDatabaseConstants } from '@common'; +import { ModelCollection } from '../general'; + export type Status = 'queued' | 'proving' | 'proved' | 'failed'; @@ -31,14 +31,18 @@ export type TaskEntity = { export class ModelQueueTask extends ModelGeneral { private static instance: ModelQueueTask | null = null; + private static dbEngine: DatabaseEngine; + private constructor() { super( zkDatabaseConstants.globalProofDatabase, - DB.proof, + ModelQueueTask.dbEngine, zkDatabaseConstants.globalCollections.queue ); } - + public static createModel(dbEngine: DatabaseEngine) { + ModelQueueTask.dbEngine = dbEngine; + } public static getInstance(): ModelQueueTask { if (!ModelQueueTask.instance) { ModelQueueTask.instance = new ModelQueueTask(); @@ -211,10 +215,11 @@ export class ModelQueueTask extends ModelGeneral { ); } - public static async init() { + public static async init(dbEngine: DatabaseEngine) { + ModelQueueTask.createModel(dbEngine); const collection = ModelCollection.getInstance( zkDatabaseConstants.globalProofDatabase, - DB.proof, + dbEngine, zkDatabaseConstants.globalCollections.queue ); if (!(await collection.isExist())) { diff --git a/packages/storage/src/database/global/secure-storage.ts b/packages/storage/src/database/global/secure-storage.ts index a84fd902..da4c8b70 100644 --- a/packages/storage/src/database/global/secure-storage.ts +++ b/packages/storage/src/database/global/secure-storage.ts @@ -1,6 +1,6 @@ import { zkDatabaseConstants } from '../../common/index.js'; -import { DB } from '../../helper/db-instance.js'; import ModelGeneral from '../base/general.js'; +import { DatabaseEngine } from '../database-engine.js'; import ModelCollection from '../general/collection.js'; export type PrivateKey = { @@ -10,15 +10,20 @@ export type PrivateKey = { export class ModelSecureStorage extends ModelGeneral { private static instance: ModelSecureStorage | null = null; + private static dbEngine: DatabaseEngine; + // proof private constructor() { super( zkDatabaseConstants.globalProofDatabase, - DB.proof, + ModelSecureStorage.dbEngine, zkDatabaseConstants.globalCollections.secure ); } + public static createModel(dbEngine: DatabaseEngine) { + ModelSecureStorage.dbEngine = dbEngine; + } public static getInstance(): ModelSecureStorage { if (!ModelSecureStorage.instance) { ModelSecureStorage.instance = new ModelSecureStorage(); @@ -27,10 +32,11 @@ export class ModelSecureStorage extends ModelGeneral { return ModelSecureStorage.instance; } - public static async init() { + public static async init(dbEngine: DatabaseEngine) { + ModelSecureStorage.createModel(dbEngine); const collection = ModelCollection.getInstance( zkDatabaseConstants.globalProofDatabase, - DB.proof, + dbEngine, zkDatabaseConstants.globalCollections.queue ); if (!(await collection.isExist())) { diff --git a/packages/storage/src/database/index.ts b/packages/storage/src/database/index.ts index 2a29583d..9269050c 100644 --- a/packages/storage/src/database/index.ts +++ b/packages/storage/src/database/index.ts @@ -1,44 +1,6 @@ -import { DatabaseEngine } from './database-engine.js'; -import { ModelGeneral } from './base/general.js'; -import ModelBasic from './base/basic.js'; -import { ModelQueueTask, TaskEntity } from './global/queue.js'; -import { ModelProof } from './global/proof.js'; -import { ModelDatabase, DocumentMetaIndex } from './general/database.js'; -import { ModelCollection } from './general/collection.js'; -import { ModelMerkleTree, TMerkleProof } from './common/merkle-tree.js'; -import { ModelDbSetting, DbSetting } from './common/setting.js'; -import { ModelDbTransaction, TransactionStatus, DbTransaction } from './common/transactions.js'; - -import { ModelSequencer, SequencedItem } from './common/sequencer.js'; -import withTransaction from './transaction/transaction-manager.js'; -import { ModelSecureStorage, PrivateKey } from './global/secure-storage.js'; -import { ModelRollup, RollupHistory } from './common/rollup-history.js'; -import {withCompoundTransaction, CompoundSession} from './transaction/compound-transaction-manager.js'; - -export { - DatabaseEngine, - ModelBasic, - ModelQueueTask, - ModelProof, - ModelDatabase, - DocumentMetaIndex, - ModelCollection, - ModelGeneral, - ModelMerkleTree, - TMerkleProof, - ModelDbSetting, - ModelDbTransaction, - DbSetting, - TaskEntity, - ModelSequencer, - SequencedItem, - withTransaction, - ModelSecureStorage, - PrivateKey, - ModelRollup, - RollupHistory, - TransactionStatus, - DbTransaction, - withCompoundTransaction, - CompoundSession -}; +export * from './base'; +export * from './common-model'; +export * from './general'; +export * from './transaction'; +export * from './database-engine'; +export * from './global'; diff --git a/packages/storage/src/database/transaction/compound-transaction-manager.ts b/packages/storage/src/database/transaction/compound-transaction-manager.ts deleted file mode 100644 index 039ca5b6..00000000 --- a/packages/storage/src/database/transaction/compound-transaction-manager.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { ClientSession, MongoError } from 'mongodb'; -import { DB } from '../../helper/db-instance.js'; -import logger from '../../helper/logger.js'; - -export type CompoundSession = { - sessionService: ClientSession; - sessionProof: ClientSession; -}; - -export async function withCompoundTransaction( - callback: (session: CompoundSession) => Promise -): Promise { - const sessionService = DB['service'].client.startSession(); - const sessionProof = DB['proof'].client.startSession(); - let result: T | null = null; - - try { - sessionService.startTransaction({ - readPreference: 'primary', - readConcern: { level: 'local' }, - writeConcern: { w: 'majority' }, - }); - sessionProof.startTransaction({ - readPreference: 'primary', - readConcern: { level: 'local' }, - writeConcern: { w: 'majority' }, - }); - - result = await callback({ sessionService, sessionProof }); - - await sessionService.commitTransaction(); - await sessionProof.commitTransaction(); - } catch (error) { - logger.error('DatabaseEngine::withCompoundTransaction()', { - message: (error as MongoError).message, - code: (error as MongoError).code, - stack: (error as Error).stack, - }); - if (sessionService.inTransaction()) { - try { - await sessionService.abortTransaction(); - } catch (abortError) { - logger.error( - 'DatabaseEngine::withCompoundTransaction() - Abort failed for service', - { - message: (abortError as MongoError).message, - code: (abortError as MongoError).code, - stack: (abortError as Error).stack, - } - ); - } - } - - if (sessionProof.inTransaction()) { - try { - await sessionProof.abortTransaction(); - } catch (abortError) { - logger.error( - 'DatabaseEngine::withCompoundTransaction() - Abort failed for proof', - { - message: (abortError as MongoError).message, - code: (abortError as MongoError).code, - stack: (abortError as Error).stack, - } - ); - } - } - - throw error; - } finally { - await sessionService.endSession(); - await sessionProof.endSession(); - } - - return result; -} diff --git a/packages/storage/src/database/transaction/index.ts b/packages/storage/src/database/transaction/index.ts new file mode 100644 index 00000000..9b1dd790 --- /dev/null +++ b/packages/storage/src/database/transaction/index.ts @@ -0,0 +1,135 @@ +import { MongoError, ClientSession } from 'mongodb'; + +type DatabaseSession = { + name: string; // Identifier for the session + session: ClientSession; +}; + +export class TransactionManager { + private static sessions: DatabaseSession[] = []; + + // Add a database session to the manager + public static addSession(...args: DatabaseSession[]): void { + for (let { name, session } of args) { + TransactionManager.sessions.push({ name, session }); + } + console.log( + '🚀 ~ TransactionManager ~ addSession ~ args:', + TransactionManager.sessions + ); + } + + // Start transactions for all sessions + public static async startTransactions(): Promise { + for (const { session } of TransactionManager.sessions) { + session.startTransaction(); + } + } + + // Abort all transactions + public static async abortTransactions(): Promise { + for (const { name, session } of TransactionManager.sessions) { + if (session.inTransaction()) { + try { + await session.abortTransaction(); + } catch (error) { + console.error( + `TransactionManager::abortTransactions() - Abort failed for ${name}`, + { + message: (error as MongoError).message, + code: (error as MongoError).code, + stack: (error as Error).stack, + } + ); + } + } + } + } + + // End all sessions + public static async endSessions(): Promise { + for (const { session } of TransactionManager.sessions) { + await session.endSession(); + } + TransactionManager.sessions = []; // Clear sessions after ending + } + + // Execute a compound transaction (multiple sessions) + public static async withCompoundTransaction( + operation: (sessions: Record) => Promise + ): Promise { + let result: T; + try { + await TransactionManager.startTransactions(); + const sessionMap = Object.fromEntries( + TransactionManager.sessions.map(({ name, session }) => [name, session]) + ); + result = await operation(sessionMap); + for (const { session } of TransactionManager.sessions) { + await session.commitTransaction(); + } + } catch (error) { + console.error( + 'TransactionManager::withCompoundTransaction() - Error occurred', + { + message: (error as MongoError).message, + code: (error as MongoError).code, + stack: (error as Error).stack, + } + ); + await TransactionManager.abortTransactions(); + throw error; + } finally { + await TransactionManager.endSessions(); + } + return result; + } + + // Execute a transaction for a single database session + public static async withSingleTransaction( + sessionName: string, + operation: (session: ClientSession) => Promise + ): Promise { + const sessionData = TransactionManager.sessions.find( + (s) => s.name === sessionName + ); + console.log( + '🚀 ~ TransactionManager ~ TransactionManager.sessions:', + TransactionManager.sessions + ); + if (!sessionData) { + throw new Error(`Session with name "${sessionName}" not found.`); + } + + const { session } = sessionData; + let result: T; + + try { + session.startTransaction(); + result = await operation(session); + await session.commitTransaction(); + } catch (error) { + console.error( + `TransactionManager::withSingleTransaction() - Error in session "${sessionName}"`, + { + message: (error as MongoError).message, + code: (error as MongoError).code, + stack: (error as Error).stack, + } + ); + + if (session.inTransaction()) { + await session.abortTransaction(); + } + + throw error; + } finally { + await session.endSession(); + TransactionManager.sessions = TransactionManager.sessions.filter( + (s) => s.name !== sessionName + ); // Remove session after use + } + + return result; + } +} diff --git a/packages/storage/src/database/transaction/transaction-manager.ts b/packages/storage/src/database/transaction/transaction-manager.ts deleted file mode 100644 index d8332fe8..00000000 --- a/packages/storage/src/database/transaction/transaction-manager.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { ClientSession, MongoError } from 'mongodb'; -import { DB } from '../../helper/db-instance.js'; -import logger from '../../helper/logger.js'; - -export default async function withTransaction( - callback: (session: ClientSession) => Promise, - type: 'service' | 'proof' = 'service' -): Promise { - const session = DB[type].client.startSession(); - let result: T | null = null; - try { - result = await session.withTransaction( - async () => { - return await callback(session); - }, - { - readPreference: 'primary', - readConcern: { level: 'local' }, - writeConcern: { w: 'majority' }, - } - ); - - // If the transaction has succeeded, commit it - await session.commitTransaction(); - } catch (error) { - // Log the error and handle the transaction abort - logger.error('DatabaseEngine::withTransaction()', { - message: (error as MongoError).message, - code: (error as MongoError).code, - stack: (error as Error).stack, - }); - - // Only attempt to abort if an error occurred and transaction is still active - if (session.inTransaction()) { - try { - await session.abortTransaction(); - } catch (abortError) { - // Log the abort error and rethrow the original error - logger.error('DatabaseEngine::withTransaction() - Abort failed', { - message: (abortError as MongoError).message, - code: (abortError as MongoError).code, - stack: (abortError as Error).stack, - }); - throw error; - } - } - - throw error; - } finally { - await session.endSession(); - } - - return result; -} diff --git a/packages/storage/src/helper/common.ts b/packages/storage/src/helper/common.ts index c0bdd50c..5abcb230 100644 --- a/packages/storage/src/helper/common.ts +++ b/packages/storage/src/helper/common.ts @@ -1,4 +1,4 @@ -import logger from './logger.js'; +import { logger } from './logger'; export interface AppContext { userName: string; diff --git a/packages/storage/src/helper/config.ts b/packages/storage/src/helper/config.ts deleted file mode 100644 index 5cecf371..00000000 --- a/packages/storage/src/helper/config.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* eslint-disable no-param-reassign */ -import { ConfigLoader } from '@orochi-network/framework'; -import Joi from 'joi'; - -export const NODE_ENV_VALUES = [ - 'development', - 'production', - 'staging', -] as const; - -type TNodeEnv = (typeof NODE_ENV_VALUES)[number]; - -type TApplicationConfig = { - NODE_ENV: TNodeEnv; - MONGODB_URL: string; - PROOF_MONGODB_URL: string; -}; - -const configLoader = new ConfigLoader((raw: any) => raw, { - NODE_ENV: Joi.string() - .required() - .trim() - .valid(...NODE_ENV_VALUES) - .default('production'), - MONGODB_URL: Joi.string() - .trim() - .required() - .regex(/^mongodb([+a-z]+|):\/\//), - PROOF_MONGODB_URL: Joi.string() - .trim() - .required() - .regex(/^mongodb([+a-z]+|):\/\//), -}); - -export const { config } = configLoader; diff --git a/packages/storage/src/helper/db-instance.ts b/packages/storage/src/helper/db-instance.ts deleted file mode 100644 index 0cd37425..00000000 --- a/packages/storage/src/helper/db-instance.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DatabaseEngine } from '../database/index.js'; -import { config } from './config.js'; - -export const DB = { - proof: DatabaseEngine.getInstance(config.PROOF_MONGODB_URL), - service: DatabaseEngine.getInstance(config.MONGODB_URL), -}; diff --git a/packages/storage/src/helper/extended-merkle-witness.ts b/packages/storage/src/helper/extended-merkle-witness.ts index 5fc6933b..6e7a51c8 100644 --- a/packages/storage/src/helper/extended-merkle-witness.ts +++ b/packages/storage/src/helper/extended-merkle-witness.ts @@ -10,7 +10,7 @@ import { MerkleWitness, Field, Poseidon, Provable } from 'o1js'; * @returns ExtendedMerkleWitness class with the specified height. */ -export default function createExtendedMerkleWitness(height: number): any { +export function createExtendedMerkleWitness(height: number): any { const BaseWitness = MerkleWitness(height); class ExtendedMerkleWitness extends BaseWitness { diff --git a/packages/storage/src/helper/index.ts b/packages/storage/src/helper/index.ts index 7c252fef..8cb9425f 100644 --- a/packages/storage/src/helper/index.ts +++ b/packages/storage/src/helper/index.ts @@ -1 +1,4 @@ -export { DB } from './db-instance.js'; +export * from './common'; +export * from './extended-merkle-witness'; +export * from './logger'; +export * from './model-registry'; diff --git a/packages/storage/src/helper/logger.ts b/packages/storage/src/helper/logger.ts index 49d10123..8a473b52 100644 --- a/packages/storage/src/helper/logger.ts +++ b/packages/storage/src/helper/logger.ts @@ -1,3 +1,3 @@ import { LoggerLoader } from '@orochi-network/framework'; -export default new LoggerLoader('Storage', 'debug', 'string'); +export const logger = new LoggerLoader('Storage', 'debug', 'string'); diff --git a/packages/storage/src/helper/model-registry.ts b/packages/storage/src/helper/model-registry.ts new file mode 100644 index 00000000..130b585b --- /dev/null +++ b/packages/storage/src/helper/model-registry.ts @@ -0,0 +1,38 @@ +import { DatabaseEngine } from '@database'; + +export class ModelRegistry { + private static dbMap = new Map(); + private static instanceMap = new Map(); + + // Register a database configuration + public static registerDatabaseConfig( + ...args: { key: string; db: DatabaseEngine }[] + ) { + for (const { key, db } of args) { + ModelRegistry.dbMap.set(key, db); + } + } + + // Initialize and register a model + public static registerModel( + modelKey: string, + modelFactory: (config: DatabaseEngine) => any + ) { + const config = ModelRegistry.dbMap.get(modelKey); + if (!config) { + throw new Error(`Configuration for "${modelKey}" is not registered.`); + } + if (!ModelRegistry.instanceMap.has(modelKey)) { + ModelRegistry.instanceMap.set(modelKey, modelFactory(config)); + } + } + + // Get a model instance by key + public static getModel(modelKey: string): T { + const instance = ModelRegistry.instanceMap.get(modelKey); + if (!instance) { + throw new Error(`Model "${modelKey}" is not registered.`); + } + return instance as T; + } +} diff --git a/packages/storage/src/index.ts b/packages/storage/src/index.ts index 66e93f2d..a7d35c04 100644 --- a/packages/storage/src/index.ts +++ b/packages/storage/src/index.ts @@ -1,3 +1,3 @@ -export * from './common/index.js'; -export * from './database/index.js'; -export * from './helper/index.js'; +export * from './common'; +export * from './helper'; +export * from './database'; diff --git a/packages/storage/tsconfig.json b/packages/storage/tsconfig.json index 5d046e3c..be2d206b 100644 --- a/packages/storage/tsconfig.json +++ b/packages/storage/tsconfig.json @@ -8,7 +8,13 @@ "esModuleInterop": true, "outDir": "./build/", "rootDir": ".", - "types": ["node", "jest"] + "types": ["node", "jest"], + "baseUrl": ".", + "paths": { + "@common": ["./src/common"], + "@database": ["./src/database"], + "@helper": ["./src/helper"], + } }, "include": ["**/*.ts"], "exclude": [ diff --git a/packages/zkdb/package.json b/packages/zkdb/package.json index 534573f0..08434582 100644 --- a/packages/zkdb/package.json +++ b/packages/zkdb/package.json @@ -95,10 +95,10 @@ "typescript": "^5.6.2" }, "peerDependencies": { - "o1js": "^1.1.0" + "o1js": "^2.1.0" }, "dependencies": { - "@zkdb/api": "^1.1.3", + "@zkdb/api": "file:../api", "@zkdb/smart-contract": "^1.1.4", "graphql": "^16.9.0", "graphql-request": "^7.1.0", diff --git a/packages/zkdb/src/sdk/impl/database.ts b/packages/zkdb/src/sdk/impl/database.ts index 0b68b474..8197012d 100644 --- a/packages/zkdb/src/sdk/impl/database.ts +++ b/packages/zkdb/src/sdk/impl/database.ts @@ -1,7 +1,13 @@ import { JsonProof, PublicKey } from 'o1js'; import { IApiClient } from '@zkdb/api'; import { ZKCollection, ZKDatabase, ZKGroup } from '../interfaces'; -import { DatabaseSettings, Permissions, GroupDescription } from '../../types'; +import { + DatabaseSettings, + Permissions, + GroupDescription, + TDbTransaction, + TTransactionType, +} from '../../types'; import { SchemaDefinition } from '../schema'; import { CollectionQueryImpl } from './collection'; import { ZKGroupImpl } from './group'; @@ -92,11 +98,10 @@ export class ZKDatabaseImpl implements ZKDatabase { return result.unwrap().map((collection) => collection.name); } - async create(merkleHeight: number, publicKey: PublicKey): Promise { + async create(merkleHeight: number): Promise { const result = await this.apiClient.db.create({ databaseName: this.databaseName, merkleHeight, - publicKey: publicKey.toBase58(), }); return result.unwrap(); @@ -117,4 +122,14 @@ export class ZKDatabaseImpl implements ZKDatabase { return result.unwrap(); } + + async getTransaction( + transactionType: TTransactionType + ): Promise { + const result = await this.apiClient.transaction.getTransaction({ + databaseName: this.databaseName, + transactionType, + }); + return result.unwrap(); + } } diff --git a/packages/zkdb/src/sdk/impl/global-context.ts b/packages/zkdb/src/sdk/impl/global-context.ts index 08db19a2..c5dd4411 100644 --- a/packages/zkdb/src/sdk/impl/global-context.ts +++ b/packages/zkdb/src/sdk/impl/global-context.ts @@ -48,13 +48,11 @@ export class GlobalContextImpl implements GlobalContext { async createDatabase( databaseName: string, - merkleHeight: number, - publicKey: PublicKey + merkleHeight: number ): Promise { const result = await this.apiClient.db.create({ databaseName, merkleHeight, - publicKey: publicKey.toBase58(), }); return result.unwrap(); diff --git a/packages/zkdb/src/sdk/interfaces/database.ts b/packages/zkdb/src/sdk/interfaces/database.ts index 50777189..e1b38623 100644 --- a/packages/zkdb/src/sdk/interfaces/database.ts +++ b/packages/zkdb/src/sdk/interfaces/database.ts @@ -1,10 +1,16 @@ /* eslint-disable no-unused-vars */ import { JsonProof } from 'o1js'; import { ZKCollection } from './collection'; -import { DatabaseSettings, GroupDescription, Permissions } from '../../types'; +import { + DatabaseSettings, + GroupDescription, + Permissions, + TTransactionType, + IndexField, + TDbTransaction, +} from '../../types'; import { SchemaDefinition } from '../schema'; import { ZKGroup } from './group'; -import { IndexField } from '../../types/collection-index'; export interface ZKDatabase { from(name: string): ZKCollection; @@ -31,4 +37,6 @@ export interface ZKDatabase { changeOwner(newOwner: string): Promise; // Proof getProof(): Promise; + // Transaction + getTransaction(transactionType: TTransactionType): Promise; } diff --git a/packages/zkdb/src/sdk/interfaces/global-context.ts b/packages/zkdb/src/sdk/interfaces/global-context.ts index 72798b5f..a498a181 100644 --- a/packages/zkdb/src/sdk/interfaces/global-context.ts +++ b/packages/zkdb/src/sdk/interfaces/global-context.ts @@ -3,11 +3,7 @@ import { Database, User, FilterCriteria, Pagination } from '../../types'; /* eslint-disable no-unused-vars */ export interface GlobalContext { - createDatabase( - databaseName: string, - merkleHeight: number, - publicKey: PublicKey - ): Promise; + createDatabase(databaseName: string, merkleHeight: number): Promise; databases( filter?: FilterCriteria, pagination?: Pagination diff --git a/packages/zkdb/src/sdk/signer/nodejs-signer.ts b/packages/zkdb/src/sdk/signer/nodejs-signer.ts index 0b4ba8cb..bfc92e4e 100644 --- a/packages/zkdb/src/sdk/signer/nodejs-signer.ts +++ b/packages/zkdb/src/sdk/signer/nodejs-signer.ts @@ -10,7 +10,8 @@ export class NodeSigner implements Signer { constructor(privateKey: PrivateKey) { this.privateKey = privateKey; - this.client = new Client({ network: 'mainnet' }); + // TODO: Need to use config + this.client = new Client({ network: 'testnet' }); } async signTransaction( diff --git a/packages/zkdb/src/types/index.ts b/packages/zkdb/src/types/index.ts index b3fb31d8..78e7db27 100644 --- a/packages/zkdb/src/types/index.ts +++ b/packages/zkdb/src/types/index.ts @@ -11,3 +11,5 @@ export * from './signing'; export * from './user'; export * from './pagination'; export * from './group'; +export * from './transaction'; +export * from './collection-index'; diff --git a/packages/zkdb/src/types/transaction.ts b/packages/zkdb/src/types/transaction.ts new file mode 100644 index 00000000..91708d56 --- /dev/null +++ b/packages/zkdb/src/types/transaction.ts @@ -0,0 +1,16 @@ +export type TTransactionType = 'deploy' | 'rollup'; +export type TTransactionStatus = + | 'start' + | 'ready' + | 'pending' + | 'failed' + | 'success' + | 'unknown'; +export type TDbTransaction = { + id: string; + databaseName: string; + status: TTransactionStatus; + transactionType: TTransactionType; + tx: string; + zkAppPublicKey: string; +}; diff --git a/yarn.lock b/yarn.lock index 910b320b..6e717051 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,9 +28,9 @@ integrity sha512-F17/vCp7QVwom9eG7ToauIKdAxpSoadsJnqIfyryLFSkLSOEqu+eC5Z3N8OXcUVStuOMcNHlyraRsA6rRICu4g== "@apollo/client@^3.10.6": - version "3.11.8" - resolved "https://registry.npmjs.org/@apollo/client/-/client-3.11.8.tgz" - integrity sha512-CgG1wbtMjsV2pRGe/eYITmV5B8lXUCYljB2gB/6jWTFQcrvirUVvKg7qtFdjYkQSFbIffU1IDyxgeaN81eTjbA== + version "3.11.10" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.11.10.tgz#e16ae82ea9b16536ffd109847d24f9293fab5c4d" + integrity sha512-IfGc+X4il0rDqVQBBWdxIKM+ciDCiDzBq9+Bg9z4tJMi87uF6po4v+ddiac1wP0ARgVPsFwEIGxK7jhN4pW8jg== dependencies: "@graphql-typed-document-node/core" "^3.1.1" "@wry/caches" "^1.0.0" @@ -95,9 +95,9 @@ "@apollo/utils.logger" "^2.0.0" "@apollo/server@^4.11.0": - version "4.11.0" - resolved "https://registry.npmjs.org/@apollo/server/-/server-4.11.0.tgz" - integrity sha512-SWDvbbs0wl2zYhKG6aGLxwTJ72xpqp0awb2lotNpfezd9VcAvzaUizzKQqocephin2uMoaA8MguoyBmgtPzNWw== + version "4.11.2" + resolved "https://registry.yarnpkg.com/@apollo/server/-/server-4.11.2.tgz#7e4a5c76456aded36f45f2d87cddd3d8d7960c27" + integrity sha512-WUTHY7DDek8xAMn4Woa9Bl8duQUDzRYQkosX/d1DtCsBWESZyApR7ndnI5d6+W4KSTtqBHhJFkusEI7CWuIJXg== dependencies: "@apollo/cache-control-types" "^1.0.3" "@apollo/server-gateway-interface" "^1.1.1" @@ -115,7 +115,7 @@ "@types/node-fetch" "^2.6.1" async-retry "^1.2.1" cors "^2.8.5" - express "^4.17.1" + express "^4.21.1" loglevel "^1.6.8" lru-cache "^7.10.1" negotiator "^0.6.3" @@ -270,102 +270,104 @@ dependencies: xss "^1.0.8" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz" - integrity sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== dependencies: - "@babel/highlight" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.7", "@babel/compat-data@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz" - integrity sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.9", "@babel/compat-data@^7.26.0": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.2.tgz#278b6b13664557de95b8f35b90d96785850bb56e" + integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.25.2": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz" - integrity sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" + integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.25.7" - "@babel/generator" "^7.25.7" - "@babel/helper-compilation-targets" "^7.25.7" - "@babel/helper-module-transforms" "^7.25.7" - "@babel/helpers" "^7.25.7" - "@babel/parser" "^7.25.8" - "@babel/template" "^7.25.7" - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.8" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.25.7", "@babel/generator@^7.7.2": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz" - integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA== +"@babel/generator@^7.25.9", "@babel/generator@^7.26.0", "@babel/generator@^7.7.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f" + integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw== dependencies: - "@babel/types" "^7.25.7" + "@babel/parser" "^7.26.2" + "@babel/types" "^7.26.0" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz" - integrity sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA== +"@babel/helper-annotate-as-pure@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" + integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== dependencies: - "@babel/types" "^7.25.7" + "@babel/types" "^7.25.9" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz" - integrity sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz#f41752fe772a578e67286e6779a68a5a92de1ee9" + integrity sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g== dependencies: - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz" - integrity sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A== +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== dependencies: - "@babel/compat-data" "^7.25.7" - "@babel/helper-validator-option" "^7.25.7" + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz" - integrity sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.7" - "@babel/helper-member-expression-to-functions" "^7.25.7" - "@babel/helper-optimise-call-expression" "^7.25.7" - "@babel/helper-replace-supers" "^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" - "@babel/traverse" "^7.25.7" +"@babel/helper-create-class-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz#7644147706bb90ff613297d49ed5266bde729f83" + integrity sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/traverse" "^7.25.9" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz" - integrity sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz#3e8999db94728ad2b2458d7a470e7770b7764e26" + integrity sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.7" + "@babel/helper-annotate-as-pure" "^7.25.9" regexpu-core "^6.1.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.2": - version "0.6.2" - resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz" - integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== +"@babel/helper-define-polyfill-provider@^0.6.2", "@babel/helper-define-polyfill-provider@^0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz#f4f2792fae2ef382074bc2d713522cf24e6ddb21" + integrity sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -373,165 +375,154 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-member-expression-to-functions@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz" - integrity sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA== - dependencies: - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/helper-module-imports@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz" - integrity sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw== - dependencies: - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/helper-module-transforms@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz" - integrity sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ== - dependencies: - "@babel/helper-module-imports" "^7.25.7" - "@babel/helper-simple-access" "^7.25.7" - "@babel/helper-validator-identifier" "^7.25.7" - "@babel/traverse" "^7.25.7" - -"@babel/helper-optimise-call-expression@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz" - integrity sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng== - dependencies: - "@babel/types" "^7.25.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.7", "@babel/helper-plugin-utils@^7.8.0": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz" - integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw== - -"@babel/helper-remap-async-to-generator@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz" - integrity sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.7" - "@babel/helper-wrap-function" "^7.25.7" - "@babel/traverse" "^7.25.7" - -"@babel/helper-replace-supers@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz" - integrity sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.25.7" - "@babel/helper-optimise-call-expression" "^7.25.7" - "@babel/traverse" "^7.25.7" - -"@babel/helper-simple-access@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz" - integrity sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ== - dependencies: - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/helper-skip-transparent-expression-wrappers@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz" - integrity sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA== - dependencies: - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/helper-string-parser@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz" - integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g== - -"@babel/helper-validator-identifier@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz" - integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg== - -"@babel/helper-validator-option@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz" - integrity sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ== - -"@babel/helper-wrap-function@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz" - integrity sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg== - dependencies: - "@babel/template" "^7.25.7" - "@babel/traverse" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/helpers@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz" - integrity sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA== - dependencies: - "@babel/template" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/highlight@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz" - integrity sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw== - dependencies: - "@babel/helper-validator-identifier" "^7.25.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" +"@babel/helper-member-expression-to-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" + integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-optimise-call-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" + integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== + dependencies: + "@babel/types" "^7.25.9" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + +"@babel/helper-remap-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" + integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-wrap-function" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-replace-supers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz#ba447224798c3da3f8713fc272b145e33da6a5c5" + integrity sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.7", "@babel/parser@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz" - integrity sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ== +"@babel/helper-simple-access@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz#6d51783299884a2c74618d6ef0f86820ec2e7739" + integrity sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q== dependencies: - "@babel/types" "^7.25.8" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz" - integrity sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ== +"@babel/helper-skip-transparent-expression-wrappers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" + integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/traverse" "^7.25.7" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz" - integrity sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ== +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + +"@babel/helper-wrap-function@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" + integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz" - integrity sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA== +"@babel/helpers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" + integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz" - integrity sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" + integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== + dependencies: + "@babel/types" "^7.26.0" + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" + integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" + integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" - "@babel/plugin-transform-optional-chaining" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz" - integrity sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" + integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/traverse" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" + integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" + integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" @@ -566,19 +557,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-import-assertions@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz" - integrity sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ== +"@babel/plugin-syntax-import-assertions@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" + integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz" - integrity sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw== +"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" @@ -594,12 +585,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.25.7", "@babel/plugin-syntax-jsx@^7.7.2": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz" - integrity sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw== +"@babel/plugin-syntax-jsx@^7.25.9", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -657,12 +648,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.25.7", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.7.tgz" - integrity sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g== +"@babel/plugin-syntax-typescript@^7.25.9", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" + integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -672,465 +663,474 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz" - integrity sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg== +"@babel/plugin-transform-arrow-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" + integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-async-generator-functions@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz" - integrity sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA== +"@babel/plugin-transform-async-generator-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2" + integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-remap-async-to-generator" "^7.25.7" - "@babel/traverse" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-async-to-generator@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz" - integrity sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg== +"@babel/plugin-transform-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" + integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== dependencies: - "@babel/helper-module-imports" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-remap-async-to-generator" "^7.25.7" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" -"@babel/plugin-transform-block-scoped-functions@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz" - integrity sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ== +"@babel/plugin-transform-block-scoped-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz#5700691dbd7abb93de300ca7be94203764fce458" + integrity sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-block-scoping@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz" - integrity sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow== +"@babel/plugin-transform-block-scoping@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1" + integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-class-properties@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz" - integrity sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g== +"@babel/plugin-transform-class-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" + integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-class-static-block@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz" - integrity sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ== +"@babel/plugin-transform-class-static-block@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" + integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-classes@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz" - integrity sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg== +"@babel/plugin-transform-classes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" + integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.7" - "@babel/helper-compilation-targets" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-replace-supers" "^7.25.7" - "@babel/traverse" "^7.25.7" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/traverse" "^7.25.9" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz" - integrity sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA== +"@babel/plugin-transform-computed-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" + integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/template" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/template" "^7.25.9" -"@babel/plugin-transform-destructuring@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz" - integrity sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA== +"@babel/plugin-transform-destructuring@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" + integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dotall-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz" - integrity sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ== +"@babel/plugin-transform-dotall-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" + integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-duplicate-keys@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz" - integrity sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg== +"@babel/plugin-transform-duplicate-keys@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" + integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz" - integrity sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" + integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dynamic-import@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz" - integrity sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A== +"@babel/plugin-transform-dynamic-import@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" + integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-exponentiation-operator@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz" - integrity sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg== +"@babel/plugin-transform-exponentiation-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz#ece47b70d236c1d99c263a1e22b62dc20a4c8b0f" + integrity sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-export-namespace-from@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz" - integrity sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw== +"@babel/plugin-transform-export-namespace-from@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" + integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-for-of@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz" - integrity sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw== +"@babel/plugin-transform-for-of@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz#4bdc7d42a213397905d89f02350c5267866d5755" + integrity sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-function-name@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz" - integrity sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ== +"@babel/plugin-transform-function-name@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" + integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== dependencies: - "@babel/helper-compilation-targets" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/traverse" "^7.25.7" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-json-strings@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz" - integrity sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA== +"@babel/plugin-transform-json-strings@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" + integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-literals@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz" - integrity sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w== +"@babel/plugin-transform-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" + integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-logical-assignment-operators@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz" - integrity sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g== +"@babel/plugin-transform-logical-assignment-operators@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" + integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-member-expression-literals@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz" - integrity sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw== +"@babel/plugin-transform-member-expression-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" + integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-amd@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz" - integrity sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA== +"@babel/plugin-transform-modules-amd@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" + integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== dependencies: - "@babel/helper-module-transforms" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-commonjs@^7.23.3", "@babel/plugin-transform-modules-commonjs@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz" - integrity sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg== +"@babel/plugin-transform-modules-commonjs@^7.23.3", "@babel/plugin-transform-modules-commonjs@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz#d165c8c569a080baf5467bda88df6425fc060686" + integrity sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg== dependencies: - "@babel/helper-module-transforms" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-simple-access" "^7.25.7" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-simple-access" "^7.25.9" -"@babel/plugin-transform-modules-systemjs@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz" - integrity sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g== +"@babel/plugin-transform-modules-systemjs@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" + integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== dependencies: - "@babel/helper-module-transforms" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-validator-identifier" "^7.25.7" - "@babel/traverse" "^7.25.7" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-modules-umd@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz" - integrity sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw== +"@babel/plugin-transform-modules-umd@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" + integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== dependencies: - "@babel/helper-module-transforms" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-named-capturing-groups-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz" - integrity sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow== +"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" + integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-new-target@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz" - integrity sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA== +"@babel/plugin-transform-new-target@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" + integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-nullish-coalescing-operator@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz" - integrity sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ== +"@babel/plugin-transform-nullish-coalescing-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz#bcb1b0d9e948168102d5f7104375ca21c3266949" + integrity sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-numeric-separator@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz" - integrity sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q== +"@babel/plugin-transform-numeric-separator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" + integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-object-rest-spread@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz" - integrity sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g== +"@babel/plugin-transform-object-rest-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" + integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== dependencies: - "@babel/helper-compilation-targets" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/plugin-transform-parameters" "^7.25.7" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" -"@babel/plugin-transform-object-super@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz" - integrity sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA== +"@babel/plugin-transform-object-super@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" + integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-replace-supers" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" -"@babel/plugin-transform-optional-catch-binding@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz" - integrity sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg== +"@babel/plugin-transform-optional-catch-binding@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" + integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-optional-chaining@^7.25.7", "@babel/plugin-transform-optional-chaining@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz" - integrity sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg== +"@babel/plugin-transform-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" + integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-parameters@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz" - integrity sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ== +"@babel/plugin-transform-parameters@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" + integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-methods@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz" - integrity sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA== +"@babel/plugin-transform-private-methods@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" + integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-property-in-object@^7.25.8": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz" - integrity sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow== +"@babel/plugin-transform-private-property-in-object@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" + integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.7" - "@babel/helper-create-class-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-property-literals@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz" - integrity sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw== +"@babel/plugin-transform-property-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" + integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-regenerator@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz" - integrity sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ== +"@babel/plugin-transform-regenerator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" + integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz" - integrity sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng== +"@babel/plugin-transform-regexp-modifiers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850" + integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-reserved-words@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" + integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-shorthand-properties@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz" - integrity sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA== +"@babel/plugin-transform-shorthand-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" + integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-spread@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz" - integrity sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw== +"@babel/plugin-transform-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" + integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-sticky-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz" - integrity sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw== +"@babel/plugin-transform-sticky-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" + integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-template-literals@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz" - integrity sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA== +"@babel/plugin-transform-template-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1" + integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-typeof-symbol@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz" - integrity sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA== +"@babel/plugin-transform-typeof-symbol@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz#224ba48a92869ddbf81f9b4a5f1204bbf5a2bc4b" + integrity sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-typescript@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.7.tgz" - integrity sha512-VKlgy2vBzj8AmEzunocMun2fF06bsSWV+FvVXohtL6FGve/+L217qhHxRTVGHEDO/YR8IANcjzgJsd04J8ge5Q== +"@babel/plugin-transform-typescript@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz#69267905c2b33c2ac6d8fe765e9dc2ddc9df3849" + integrity sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.7" - "@babel/helper-create-class-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" - "@babel/plugin-syntax-typescript" "^7.25.7" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-syntax-typescript" "^7.25.9" -"@babel/plugin-transform-unicode-escapes@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz" - integrity sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ== +"@babel/plugin-transform-unicode-escapes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" + integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-property-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz" - integrity sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w== +"@babel/plugin-transform-unicode-property-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" + integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz" - integrity sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g== +"@babel/plugin-transform-unicode-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" + integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-sets-regex@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz" - integrity sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw== +"@babel/plugin-transform-unicode-sets-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" + integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/preset-env@^7.25.4": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.8.tgz" - integrity sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg== - dependencies: - "@babel/compat-data" "^7.25.8" - "@babel/helper-compilation-targets" "^7.25.7" - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-validator-option" "^7.25.7" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.7" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.7" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.7" + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.0.tgz#30e5c6bc1bcc54865bff0c5a30f6d4ccdc7fa8b1" + integrity sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw== + dependencies: + "@babel/compat-data" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.25.7" - "@babel/plugin-syntax-import-attributes" "^7.25.7" + "@babel/plugin-syntax-import-assertions" "^7.26.0" + "@babel/plugin-syntax-import-attributes" "^7.26.0" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.25.7" - "@babel/plugin-transform-async-generator-functions" "^7.25.8" - "@babel/plugin-transform-async-to-generator" "^7.25.7" - "@babel/plugin-transform-block-scoped-functions" "^7.25.7" - "@babel/plugin-transform-block-scoping" "^7.25.7" - "@babel/plugin-transform-class-properties" "^7.25.7" - "@babel/plugin-transform-class-static-block" "^7.25.8" - "@babel/plugin-transform-classes" "^7.25.7" - "@babel/plugin-transform-computed-properties" "^7.25.7" - "@babel/plugin-transform-destructuring" "^7.25.7" - "@babel/plugin-transform-dotall-regex" "^7.25.7" - "@babel/plugin-transform-duplicate-keys" "^7.25.7" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.7" - "@babel/plugin-transform-dynamic-import" "^7.25.8" - "@babel/plugin-transform-exponentiation-operator" "^7.25.7" - "@babel/plugin-transform-export-namespace-from" "^7.25.8" - "@babel/plugin-transform-for-of" "^7.25.7" - "@babel/plugin-transform-function-name" "^7.25.7" - "@babel/plugin-transform-json-strings" "^7.25.8" - "@babel/plugin-transform-literals" "^7.25.7" - "@babel/plugin-transform-logical-assignment-operators" "^7.25.8" - "@babel/plugin-transform-member-expression-literals" "^7.25.7" - "@babel/plugin-transform-modules-amd" "^7.25.7" - "@babel/plugin-transform-modules-commonjs" "^7.25.7" - "@babel/plugin-transform-modules-systemjs" "^7.25.7" - "@babel/plugin-transform-modules-umd" "^7.25.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.7" - "@babel/plugin-transform-new-target" "^7.25.7" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.8" - "@babel/plugin-transform-numeric-separator" "^7.25.8" - "@babel/plugin-transform-object-rest-spread" "^7.25.8" - "@babel/plugin-transform-object-super" "^7.25.7" - "@babel/plugin-transform-optional-catch-binding" "^7.25.8" - "@babel/plugin-transform-optional-chaining" "^7.25.8" - "@babel/plugin-transform-parameters" "^7.25.7" - "@babel/plugin-transform-private-methods" "^7.25.7" - "@babel/plugin-transform-private-property-in-object" "^7.25.8" - "@babel/plugin-transform-property-literals" "^7.25.7" - "@babel/plugin-transform-regenerator" "^7.25.7" - "@babel/plugin-transform-reserved-words" "^7.25.7" - "@babel/plugin-transform-shorthand-properties" "^7.25.7" - "@babel/plugin-transform-spread" "^7.25.7" - "@babel/plugin-transform-sticky-regex" "^7.25.7" - "@babel/plugin-transform-template-literals" "^7.25.7" - "@babel/plugin-transform-typeof-symbol" "^7.25.7" - "@babel/plugin-transform-unicode-escapes" "^7.25.7" - "@babel/plugin-transform-unicode-property-regex" "^7.25.7" - "@babel/plugin-transform-unicode-regex" "^7.25.7" - "@babel/plugin-transform-unicode-sets-regex" "^7.25.7" + "@babel/plugin-transform-arrow-functions" "^7.25.9" + "@babel/plugin-transform-async-generator-functions" "^7.25.9" + "@babel/plugin-transform-async-to-generator" "^7.25.9" + "@babel/plugin-transform-block-scoped-functions" "^7.25.9" + "@babel/plugin-transform-block-scoping" "^7.25.9" + "@babel/plugin-transform-class-properties" "^7.25.9" + "@babel/plugin-transform-class-static-block" "^7.26.0" + "@babel/plugin-transform-classes" "^7.25.9" + "@babel/plugin-transform-computed-properties" "^7.25.9" + "@babel/plugin-transform-destructuring" "^7.25.9" + "@babel/plugin-transform-dotall-regex" "^7.25.9" + "@babel/plugin-transform-duplicate-keys" "^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-dynamic-import" "^7.25.9" + "@babel/plugin-transform-exponentiation-operator" "^7.25.9" + "@babel/plugin-transform-export-namespace-from" "^7.25.9" + "@babel/plugin-transform-for-of" "^7.25.9" + "@babel/plugin-transform-function-name" "^7.25.9" + "@babel/plugin-transform-json-strings" "^7.25.9" + "@babel/plugin-transform-literals" "^7.25.9" + "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" + "@babel/plugin-transform-member-expression-literals" "^7.25.9" + "@babel/plugin-transform-modules-amd" "^7.25.9" + "@babel/plugin-transform-modules-commonjs" "^7.25.9" + "@babel/plugin-transform-modules-systemjs" "^7.25.9" + "@babel/plugin-transform-modules-umd" "^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-new-target" "^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.9" + "@babel/plugin-transform-numeric-separator" "^7.25.9" + "@babel/plugin-transform-object-rest-spread" "^7.25.9" + "@babel/plugin-transform-object-super" "^7.25.9" + "@babel/plugin-transform-optional-catch-binding" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/plugin-transform-private-methods" "^7.25.9" + "@babel/plugin-transform-private-property-in-object" "^7.25.9" + "@babel/plugin-transform-property-literals" "^7.25.9" + "@babel/plugin-transform-regenerator" "^7.25.9" + "@babel/plugin-transform-regexp-modifiers" "^7.26.0" + "@babel/plugin-transform-reserved-words" "^7.25.9" + "@babel/plugin-transform-shorthand-properties" "^7.25.9" + "@babel/plugin-transform-spread" "^7.25.9" + "@babel/plugin-transform-sticky-regex" "^7.25.9" + "@babel/plugin-transform-template-literals" "^7.25.9" + "@babel/plugin-transform-typeof-symbol" "^7.25.9" + "@babel/plugin-transform-unicode-escapes" "^7.25.9" + "@babel/plugin-transform-unicode-property-regex" "^7.25.9" + "@babel/plugin-transform-unicode-regex" "^7.25.9" + "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.6" @@ -1148,53 +1148,52 @@ esutils "^2.0.2" "@babel/preset-typescript@^7.16.0", "@babel/preset-typescript@^7.23.3": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz" - integrity sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz#4a570f1b8d104a242d923957ffa1eaff142a106d" + integrity sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg== dependencies: - "@babel/helper-plugin-utils" "^7.25.7" - "@babel/helper-validator-option" "^7.25.7" - "@babel/plugin-syntax-jsx" "^7.25.7" - "@babel/plugin-transform-modules-commonjs" "^7.25.7" - "@babel/plugin-transform-typescript" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-syntax-jsx" "^7.25.9" + "@babel/plugin-transform-modules-commonjs" "^7.25.9" + "@babel/plugin-transform-typescript" "^7.25.9" "@babel/runtime@^7.8.4": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz" - integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.25.7", "@babel/template@^7.3.3": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz" - integrity sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA== - dependencies: - "@babel/code-frame" "^7.25.7" - "@babel/parser" "^7.25.7" - "@babel/types" "^7.25.7" - -"@babel/traverse@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz" - integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg== - dependencies: - "@babel/code-frame" "^7.25.7" - "@babel/generator" "^7.25.7" - "@babel/parser" "^7.25.7" - "@babel/template" "^7.25.7" - "@babel/types" "^7.25.7" +"@babel/template@^7.25.9", "@babel/template@^7.3.3": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" + integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.7", "@babel/types@^7.25.8", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.25.8" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz" - integrity sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" + integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== dependencies: - "@babel/helper-string-parser" "^7.25.7" - "@babel/helper-validator-identifier" "^7.25.7" - to-fast-properties "^2.0.0" + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -1244,7 +1243,7 @@ "@esbuild/darwin-arm64@0.23.1": version "0.23.1" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16" integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q== "@esbuild/darwin-x64@0.23.1": @@ -1304,7 +1303,7 @@ "@esbuild/linux-x64@0.23.1": version "0.23.1" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz" integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ== "@esbuild/netbsd-x64@0.23.1": @@ -1343,21 +1342,21 @@ integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0", "@eslint-community/regexpp@^4.5.1": - version "4.11.1" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz" - integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.5.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== "@eslint/compat@^1.1.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.1.tgz" - integrity sha512-JbHG2TWuCeNzh87fXo+/46Z1LEo9DBA9T188d0fZgGxAD+cNyS6sx9fdiyxjGPBMyQVRlCutTByZ6a5+YMkF7g== + version "1.2.2" + resolved "https://registry.yarnpkg.com/@eslint/compat/-/compat-1.2.2.tgz#46d02898df7e32ccc04166b6ea2689c52dee10da" + integrity sha512-jhgiIrsw+tRfcBQ4BFl2C3vCrIUw2trCY0cnDvGZpwTtKCEDmZhAtMfrEUP/KpnwM6PrO0T+Ltm+ccW74olG3Q== "@eslint/config-array@^0.18.0": version "0.18.0" @@ -1388,10 +1387,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.13.0", "@eslint/js@^9.12.0": - version "9.13.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz" - integrity sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA== +"@eslint/js@9.14.0", "@eslint/js@^9.12.0": + version "9.14.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.14.0.tgz#2347a871042ebd11a00fd8c2d3d56a265ee6857e" + integrity sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg== "@eslint/object-schema@^2.1.4": version "2.1.4" @@ -1399,9 +1398,9 @@ integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ== "@eslint/plugin-kit@^0.2.0": - version "0.2.1" - resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.1.tgz" - integrity sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw== + version "0.2.2" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz#5eff371953bc13e3f4d88150e2c53959f64f74f6" + integrity sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw== dependencies: levn "^0.4.1" @@ -1492,17 +1491,17 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@humanfs/core@^0.19.0": - version "0.19.0" - resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz" - integrity sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw== +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== -"@humanfs/node@^0.16.5": - version "0.16.5" - resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz" - integrity sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg== +"@humanfs/node@^0.16.6": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== dependencies: - "@humanfs/core" "^0.19.0" + "@humanfs/core" "^0.19.1" "@humanwhocodes/retry" "^0.3.0" "@humanwhocodes/module-importer@^1.0.1": @@ -1510,11 +1509,16 @@ resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/retry@^0.3.0", "@humanwhocodes/retry@^0.3.1": +"@humanwhocodes/retry@^0.3.0": version "0.3.1" resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz" integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== +"@humanwhocodes/retry@^0.4.0": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" + integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" @@ -1780,30 +1784,6 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@molt/command@^0.9.0": - version "0.9.0" - resolved "https://registry.npmjs.org/@molt/command/-/command-0.9.0.tgz" - integrity sha512-1JI8dAlpqlZoXyKWVQggX7geFNPxBpocHIXQCsnxDjKy+3WX4SGyZVJXuLlqRRrX7FmQCuuMAfx642ovXmPA9g== - dependencies: - "@molt/types" "0.2.0" - alge "0.8.1" - chalk "^5.3.0" - lodash.camelcase "^4.3.0" - lodash.snakecase "^4.1.1" - readline-sync "^1.4.10" - string-length "^6.0.0" - strip-ansi "^7.1.0" - ts-toolbelt "^9.6.0" - type-fest "^4.3.1" - zod "^3.22.2" - -"@molt/types@0.2.0": - version "0.2.0" - resolved "https://registry.npmjs.org/@molt/types/-/types-0.2.0.tgz" - integrity sha512-p6ChnEZDGjg9PYPec9BK6Yp5/DdSrYQvXTBAtgrnqX6N36cZy37ql1c8Tc5LclfIYBNG7EZp8NBcRTYJwyi84g== - dependencies: - ts-toolbelt "^9.6.0" - "@mongodb-js/saslprep@^1.1.0", "@mongodb-js/saslprep@^1.1.5": version "1.1.9" resolved "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz" @@ -1855,12 +1835,12 @@ integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw== "@orochi-network/framework@^2.3.19": - version "2.3.19" - resolved "https://registry.npmjs.org/@orochi-network/framework/-/framework-2.3.19.tgz" - integrity sha512-I0et/kj1Td3Py7tDZ747vmxD3eczYnySFtyp7b9Tfsohodmk879NeAUCRuk7Ytq4Z7Mq7d/NAhoHkqj+BNQc2g== + version "2.3.20" + resolved "https://registry.yarnpkg.com/@orochi-network/framework/-/framework-2.3.20.tgz#427d307a31089c2e57a79058b3689d4fe4dd4a37" + integrity sha512-Sstx2qQPWDggx9z5w/Ei6pOxF3vS0jfnj/ncfTh7yNPeaXIlkJ/8ctZX4ez2XR6UcJs1IiIQLgvleg35gu6vMw== dependencies: "@orochi-network/utilities" "^0.2.40" - "@orochi-network/vault" "^1.4.13" + "@orochi-network/vault" "^1.4.15" change-case "5.4.4" dotenv "16.4.5" ethers "6.13.2" @@ -1888,18 +1868,9 @@ graphql "16.9.0" safer-buffer "2.1.2" -"@orochi-network/vault@^1.4.13": - version "1.4.13" - resolved "https://registry.npmjs.org/@orochi-network/vault/-/vault-1.4.13.tgz" - integrity sha512-WV7Hb5+ighP1cEgv6e3KtisJ8+LGbzgk3IuYwpb58nh5OZAU5pfNcLKtHn7UxcdB3ZPPkHgBvFPFdCs6Ix9u2w== - dependencies: - "@orochi-network/queue" "^0.1.9" - axios "1.7.4" - ethers "6.13.2" - "@orochi-network/vault@^1.4.15": version "1.4.15" - resolved "https://registry.yarnpkg.com/@orochi-network/vault/-/vault-1.4.15.tgz#bf6879bec69fb844f0c4ecd4860b2f2d672b1bc9" + resolved "https://registry.npmjs.org/@orochi-network/vault/-/vault-1.4.15.tgz" integrity sha512-NWPJgZ8M4pTvMW2Rip+EKVMCO6addiYnpx8lEQ9+AK9H+5unrxUWH5CWHknzHqQW5C94H0J+Wv/9i0G+IaneSQ== dependencies: "@orochi-network/queue" "^0.1.9" @@ -1907,88 +1878,94 @@ axios "1.7.4" ethers "6.13.2" -"@parcel/watcher-android-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz#c2c19a3c442313ff007d2d7a9c2c1dd3e1c9ca84" - integrity sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg== +"@parcel/watcher-android-arm64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a" + integrity sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ== -"@parcel/watcher-darwin-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz" - integrity sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA== +"@parcel/watcher-darwin-arm64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz#0d9e680b7e9ec1c8f54944f1b945aa8755afb12f" + integrity sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw== -"@parcel/watcher-darwin-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz#1a3f69d9323eae4f1c61a5f480a59c478d2cb020" - integrity sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg== +"@parcel/watcher-darwin-x64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz#f9f1d5ce9d5878d344f14ef1856b7a830c59d1bb" + integrity sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA== -"@parcel/watcher-freebsd-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz#0d67fef1609f90ba6a8a662bc76a55fc93706fc8" - integrity sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w== +"@parcel/watcher-freebsd-x64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz#2b77f0c82d19e84ff4c21de6da7f7d096b1a7e82" + integrity sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw== -"@parcel/watcher-linux-arm-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz#ce5b340da5829b8e546bd00f752ae5292e1c702d" - integrity sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA== +"@parcel/watcher-linux-arm-glibc@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz#92ed322c56dbafa3d2545dcf2803334aee131e42" + integrity sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA== -"@parcel/watcher-linux-arm64-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz#6d7c00dde6d40608f9554e73998db11b2b1ff7c7" - integrity sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA== +"@parcel/watcher-linux-arm-musl@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz#cd48e9bfde0cdbbd2ecd9accfc52967e22f849a4" + integrity sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA== -"@parcel/watcher-linux-arm64-musl@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz#bd39bc71015f08a4a31a47cd89c236b9d6a7f635" - integrity sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA== +"@parcel/watcher-linux-arm64-glibc@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz#7b81f6d5a442bb89fbabaf6c13573e94a46feb03" + integrity sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA== -"@parcel/watcher-linux-x64-glibc@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz#0ce29966b082fb6cdd3de44f2f74057eef2c9e39" - integrity sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg== +"@parcel/watcher-linux-arm64-musl@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz#dcb8ff01077cdf59a18d9e0a4dff7a0cfe5fd732" + integrity sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q== -"@parcel/watcher-linux-x64-musl@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz#d2ebbf60e407170bb647cd6e447f4f2bab19ad16" - integrity sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ== +"@parcel/watcher-linux-x64-glibc@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz#2e254600fda4e32d83942384d1106e1eed84494d" + integrity sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw== -"@parcel/watcher-win32-arm64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz#eb4deef37e80f0b5e2f215dd6d7a6d40a85f8adc" - integrity sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg== +"@parcel/watcher-linux-x64-musl@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz#01fcea60fedbb3225af808d3f0a7b11229792eef" + integrity sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA== -"@parcel/watcher-win32-ia32@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz#94fbd4b497be39fd5c8c71ba05436927842c9df7" - integrity sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw== +"@parcel/watcher-win32-arm64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz#87cdb16e0783e770197e52fb1dc027bb0c847154" + integrity sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig== -"@parcel/watcher-win32-x64@2.4.1": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz#4bf920912f67cae5f2d264f58df81abfea68dadf" - integrity sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A== +"@parcel/watcher-win32-ia32@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz#778c39b56da33e045ba21c678c31a9f9d7c6b220" + integrity sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA== + +"@parcel/watcher-win32-x64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz#33873876d0bbc588aacce38e90d1d7480ce81cb7" + integrity sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw== "@parcel/watcher@^2.4.1": - version "2.4.1" - resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz" - integrity sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.0.tgz#5c88818b12b8de4307a9d3e6dc3e28eba0dfbd10" + integrity sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ== dependencies: detect-libc "^1.0.3" is-glob "^4.0.3" micromatch "^4.0.5" node-addon-api "^7.0.0" optionalDependencies: - "@parcel/watcher-android-arm64" "2.4.1" - "@parcel/watcher-darwin-arm64" "2.4.1" - "@parcel/watcher-darwin-x64" "2.4.1" - "@parcel/watcher-freebsd-x64" "2.4.1" - "@parcel/watcher-linux-arm-glibc" "2.4.1" - "@parcel/watcher-linux-arm64-glibc" "2.4.1" - "@parcel/watcher-linux-arm64-musl" "2.4.1" - "@parcel/watcher-linux-x64-glibc" "2.4.1" - "@parcel/watcher-linux-x64-musl" "2.4.1" - "@parcel/watcher-win32-arm64" "2.4.1" - "@parcel/watcher-win32-ia32" "2.4.1" - "@parcel/watcher-win32-x64" "2.4.1" + "@parcel/watcher-android-arm64" "2.5.0" + "@parcel/watcher-darwin-arm64" "2.5.0" + "@parcel/watcher-darwin-x64" "2.5.0" + "@parcel/watcher-freebsd-x64" "2.5.0" + "@parcel/watcher-linux-arm-glibc" "2.5.0" + "@parcel/watcher-linux-arm-musl" "2.5.0" + "@parcel/watcher-linux-arm64-glibc" "2.5.0" + "@parcel/watcher-linux-arm64-musl" "2.5.0" + "@parcel/watcher-linux-x64-glibc" "2.5.0" + "@parcel/watcher-linux-x64-musl" "2.5.0" + "@parcel/watcher-win32-arm64" "2.5.0" + "@parcel/watcher-win32-ia32" "2.5.0" + "@parcel/watcher-win32-x64" "2.5.0" "@pkgjs/parseargs@^0.11.0": version "0.11.0" @@ -2102,7 +2079,7 @@ "@rollup/plugin-node-resolve@^15.3.0": version "15.3.0" - resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.0.tgz" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.0.tgz#efbb35515c9672e541c08d59caba2eff492a55d5" integrity sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag== dependencies: "@rollup/pluginutils" "^5.0.1" @@ -2120,93 +2097,193 @@ resolve "^1.22.1" "@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.1.0": - version "5.1.2" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz" - integrity sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw== + version "5.1.3" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.3.tgz#3001bf1a03f3ad24457591f2c259c8e514e0dbdf" + integrity sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" - picomatch "^2.3.1" + picomatch "^4.0.2" -"@rollup/rollup-android-arm-eabi@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz#1661ff5ea9beb362795304cb916049aba7ac9c54" - integrity sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA== - -"@rollup/rollup-android-arm64@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz#2ffaa91f1b55a0082b8a722525741aadcbd3971e" - integrity sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA== - -"@rollup/rollup-darwin-arm64@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz" - integrity sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA== - -"@rollup/rollup-darwin-x64@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz#0605506142b9e796c370d59c5984ae95b9758724" - integrity sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz#62dfd196d4b10c0c2db833897164d2d319ee0cbb" - integrity sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA== - -"@rollup/rollup-linux-arm-musleabihf@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz#53ce72aeb982f1f34b58b380baafaf6a240fddb3" - integrity sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw== - -"@rollup/rollup-linux-arm64-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz#1632990f62a75c74f43e4b14ab3597d7ed416496" - integrity sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA== - -"@rollup/rollup-linux-arm64-musl@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz#8c03a996efb41e257b414b2e0560b7a21f2d9065" - integrity sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz#5b98729628d5bcc8f7f37b58b04d6845f85c7b5d" - integrity sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw== - -"@rollup/rollup-linux-riscv64-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz#48e42e41f4cabf3573cfefcb448599c512e22983" - integrity sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg== - -"@rollup/rollup-linux-s390x-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz#e0b4f9a966872cb7d3e21b9e412a4b7efd7f0b58" - integrity sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g== - -"@rollup/rollup-linux-x64-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz#78144741993100f47bd3da72fce215e077ae036b" - integrity sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A== - -"@rollup/rollup-linux-x64-musl@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz#d9fe32971883cd1bd858336bd33a1c3ca6146127" - integrity sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ== - -"@rollup/rollup-win32-arm64-msvc@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz#71fa3ea369316db703a909c790743972e98afae5" - integrity sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ== - -"@rollup/rollup-win32-ia32-msvc@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz#653f5989a60658e17d7576a3996deb3902e342e2" - integrity sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ== - -"@rollup/rollup-win32-x64-msvc@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz#0574d7e87b44ee8511d08cc7f914bcb802b70818" - integrity sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw== +"@rollup/rollup-android-arm-eabi@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.26.0.tgz#f221c519a6efb5d3652bff32351522e0fb98e392" + integrity sha512-gJNwtPDGEaOEgejbaseY6xMFu+CPltsc8/T+diUTTbOQLqD+bnrJq9ulH6WD69TqwqWmrfRAtUv30cCFZlbGTQ== + +"@rollup/rollup-android-arm-eabi@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.2.tgz#9fa3640a1f435bc3800b8d703d3f18823962b045" + integrity sha512-Tj+j7Pyzd15wAdSJswvs5CJzJNV+qqSUcr/aCD+jpQSBtXvGnV0pnrjoc8zFTe9fcKCatkpFpOO7yAzpO998HA== + +"@rollup/rollup-android-arm64@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.26.0.tgz#196a2379d81011422fe1128e512a8811605ede16" + integrity sha512-YJa5Gy8mEZgz5JquFruhJODMq3lTHWLm1fOy+HIANquLzfIOzE9RA5ie3JjCdVb9r46qfAQY/l947V0zfGJ0OQ== + +"@rollup/rollup-android-arm64@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.2.tgz#272fcb6416c60b2225192379fa2c5e63b48f19dc" + integrity sha512-xsPeJgh2ThBpUqlLgRfiVYBEf/P1nWlWvReG+aBWfNv3XEBpa6ZCmxSVnxJgLgkNz4IbxpLy64h2gCmAAQLneQ== + +"@rollup/rollup-darwin-arm64@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.26.0.tgz#0c83e5f25adae7f0543ac29a0ebd485a0e7cd3e4" + integrity sha512-ErTASs8YKbqTBoPLp/kA1B1Um5YSom8QAc4rKhg7b9tyyVqDBlQxy7Bf2wW7yIlPGPg2UODDQcbkTlruPzDosw== + +"@rollup/rollup-darwin-arm64@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.2.tgz#03c63fd652bd4d522f366b1550526fd8c09c9dd8" + integrity sha512-KnXU4m9MywuZFedL35Z3PuwiTSn/yqRIhrEA9j+7OSkji39NzVkgxuxTYg5F8ryGysq4iFADaU5osSizMXhU2A== + +"@rollup/rollup-darwin-x64@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.26.0.tgz#8131b174ca8cec04e2041e42eb8382afe31095c8" + integrity sha512-wbgkYDHcdWW+NqP2mnf2NOuEbOLzDblalrOWcPyY6+BRbVhliavon15UploG7PpBRQ2bZJnbmh8o3yLoBvDIHA== + +"@rollup/rollup-darwin-x64@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.2.tgz#268f23bc2beb3be98135ab499e4e6cdaf7c8993f" + integrity sha512-Hj77A3yTvUeCIx/Vi+4d4IbYhyTwtHj07lVzUgpUq9YpJSEiGJj4vXMKwzJ3w5zp5v3PFvpJNgc/J31smZey6g== + +"@rollup/rollup-freebsd-arm64@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.26.0.tgz#550a0ebf5bea6ceee79dc2f75a0bcef7d660de2c" + integrity sha512-Y9vpjfp9CDkAG4q/uwuhZk96LP11fBz/bYdyg9oaHYhtGZp7NrbkQrj/66DYMMP2Yo/QPAsVHkV891KyO52fhg== + +"@rollup/rollup-freebsd-arm64@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.2.tgz#ee5421bd8b3b9e1e9402c0328c3b02cde7869404" + integrity sha512-RjgKf5C3xbn8gxvCm5VgKZ4nn0pRAIe90J0/fdHUsgztd3+Zesb2lm2+r6uX4prV2eUByuxJNdt647/1KPRq5g== + +"@rollup/rollup-freebsd-x64@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.26.0.tgz#51ca2e6d9ce72e63d5201607651732e5300a6f81" + integrity sha512-A/jvfCZ55EYPsqeaAt/yDAG4q5tt1ZboWMHEvKAH9Zl92DWvMIbnZe/f/eOXze65aJaaKbL+YeM0Hz4kLQvdwg== + +"@rollup/rollup-freebsd-x64@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.2.tgz#2886b9ef04bca8e8334eaf378717eff87bf3be13" + integrity sha512-duq21FoXwQtuws+V9H6UZ+eCBc7fxSpMK1GQINKn3fAyd9DFYKPJNcUhdIKOrMFjLEJgQskoMoiuizMt+dl20g== + +"@rollup/rollup-linux-arm-gnueabihf@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.26.0.tgz#ae71d6aa81e702c4efb72c1a67a6a4e790267a1b" + integrity sha512-paHF1bMXKDuizaMODm2bBTjRiHxESWiIyIdMugKeLnjuS1TCS54MF5+Y5Dx8Ui/1RBPVRE09i5OUlaLnv8OGnA== + +"@rollup/rollup-linux-arm-gnueabihf@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.2.tgz#0c17a3c31bab9e8519038e7bf15a81e0ac35dcd3" + integrity sha512-6npqOKEPRZkLrMcvyC/32OzJ2srdPzCylJjiTJT2c0bwwSGm7nz2F9mNQ1WrAqCBZROcQn91Fno+khFhVijmFA== + +"@rollup/rollup-linux-arm-musleabihf@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.26.0.tgz#6aa7baa5c39c095fa5f9804e283e126697e0342a" + integrity sha512-cwxiHZU1GAs+TMxvgPfUDtVZjdBdTsQwVnNlzRXC5QzIJ6nhfB4I1ahKoe9yPmoaA/Vhf7m9dB1chGPpDRdGXg== + +"@rollup/rollup-linux-arm-musleabihf@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.2.tgz#6893bfa6d87a4e8d7f79612803ef0a69787bef3c" + integrity sha512-V9Xg6eXtgBtHq2jnuQwM/jr2mwe2EycnopO8cbOvpzFuySCGtKlPCI3Hj9xup/pJK5Q0388qfZZy2DqV2J8ftw== + +"@rollup/rollup-linux-arm64-gnu@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.26.0.tgz#2b06e147ca68c7729ca38e5c7a514d1b00f4d151" + integrity sha512-4daeEUQutGRCW/9zEo8JtdAgtJ1q2g5oHaoQaZbMSKaIWKDQwQ3Yx0/3jJNmpzrsScIPtx/V+1AfibLisb3AMQ== + +"@rollup/rollup-linux-arm64-gnu@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.2.tgz#560ecf7f12dbb33a93fe19d9791211283fe4b0e0" + integrity sha512-uCFX9gtZJoQl2xDTpRdseYuNqyKkuMDtH6zSrBTA28yTfKyjN9hQ2B04N5ynR8ILCoSDOrG/Eg+J2TtJ1e/CSA== + +"@rollup/rollup-linux-arm64-musl@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.26.0.tgz#70f8cacb255800e4cad41bdbe447432354288909" + integrity sha512-eGkX7zzkNxvvS05ROzJ/cO/AKqNvR/7t1jA3VZDi2vRniLKwAWxUr85fH3NsvtxU5vnUUKFHKh8flIBdlo2b3Q== + +"@rollup/rollup-linux-arm64-musl@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.2.tgz#fd555c67a9a99927ef5e904ea4b3143915d1e44f" + integrity sha512-/PU9P+7Rkz8JFYDHIi+xzHabOu9qEWR07L5nWLIUsvserrxegZExKCi2jhMZRd0ATdboKylu/K5yAXbp7fYFvA== + +"@rollup/rollup-linux-powerpc64le-gnu@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.26.0.tgz#21aed3ef42518b7fe33f4037a14b0939a071cf75" + integrity sha512-Odp/lgHbW/mAqw/pU21goo5ruWsytP7/HCC/liOt0zcGG0llYWKrd10k9Fj0pdj3prQ63N5yQLCLiE7HTX+MYw== + +"@rollup/rollup-linux-powerpc64le-gnu@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.2.tgz#c588dbaacc1809a95a49dc2e954b76044eb368f5" + integrity sha512-eCHmol/dT5odMYi/N0R0HC8V8QE40rEpkyje/ZAXJYNNoSfrObOvG/Mn+s1F/FJyB7co7UQZZf6FuWnN6a7f4g== + +"@rollup/rollup-linux-riscv64-gnu@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.26.0.tgz#fe27eb8cbd3a6e0706459781c2463b624f785696" + integrity sha512-MBR2ZhCTzUgVD0OJdTzNeF4+zsVogIR1U/FsyuFerwcqjZGvg2nYe24SAHp8O5sN8ZkRVbHwlYeHqcSQ8tcYew== + +"@rollup/rollup-linux-riscv64-gnu@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.2.tgz#9ebdec626efffe3a8676958ae7e5992cfdd2ec55" + integrity sha512-DEP3Njr9/ADDln3kNi76PXonLMSSMiCir0VHXxmGSHxCxDfQ70oWjHcJGfiBugzaqmYdTC7Y+8Int6qbnxPBIQ== + +"@rollup/rollup-linux-s390x-gnu@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.26.0.tgz#80289a528dd333b0e277efd93bfa8e2cdd27e5eb" + integrity sha512-YYcg8MkbN17fMbRMZuxwmxWqsmQufh3ZJFxFGoHjrE7bv0X+T6l3glcdzd7IKLiwhT+PZOJCblpnNlz1/C3kGQ== + +"@rollup/rollup-linux-s390x-gnu@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.2.tgz#4941df3416caeecd265e718aa9e0a20efcb187bf" + integrity sha512-NHGo5i6IE/PtEPh5m0yw5OmPMpesFnzMIS/lzvN5vknnC1sXM5Z/id5VgcNPgpD+wHmIcuYYgW+Q53v+9s96lQ== + +"@rollup/rollup-linux-x64-gnu@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.26.0.tgz#9909570be5cb738c23858c94308d37dde363eb7e" + integrity sha512-ZuwpfjCwjPkAOxpjAEjabg6LRSfL7cAJb6gSQGZYjGhadlzKKywDkCUnJ+KEfrNY1jH5EEoSIKLCb572jSiglA== + +"@rollup/rollup-linux-x64-gnu@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.2.tgz#8c2df25367b4814727d32d74d7028f901c6288b1" + integrity sha512-PaW2DY5Tan+IFvNJGHDmUrORadbe/Ceh8tQxi8cmdQVCCYsLoQo2cuaSj+AU+YRX8M4ivS2vJ9UGaxfuNN7gmg== + +"@rollup/rollup-linux-x64-musl@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.26.0.tgz#371315e032497f7a46f64b4ebcd207313b7f6669" + integrity sha512-+HJD2lFS86qkeF8kNu0kALtifMpPCZU80HvwztIKnYwym3KnA1os6nsX4BGSTLtS2QVAGG1P3guRgsYyMA0Yhg== + +"@rollup/rollup-linux-x64-musl@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.2.tgz#b93cf65c2beb3d6a7139247ba6a948014502dcfb" + integrity sha512-dOlWEMg2gI91Qx5I/HYqOD6iqlJspxLcS4Zlg3vjk1srE67z5T2Uz91yg/qA8sY0XcwQrFzWWiZhMNERylLrpQ== + +"@rollup/rollup-win32-arm64-msvc@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.26.0.tgz#f4b4e0747710ba287eb2e2a011538ee2ed7f74d3" + integrity sha512-WUQzVFWPSw2uJzX4j6YEbMAiLbs0BUysgysh8s817doAYhR5ybqTI1wtKARQKo6cGop3pHnrUJPFCsXdoFaimQ== + +"@rollup/rollup-win32-arm64-msvc@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.2.tgz#3ccf1f8a7e74ca22ad9cf258d31077320cfac19e" + integrity sha512-euMIv/4x5Y2/ImlbGl88mwKNXDsvzbWUlT7DFky76z2keajCtcbAsN9LUdmk31hAoVmJJYSThgdA0EsPeTr1+w== + +"@rollup/rollup-win32-ia32-msvc@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.26.0.tgz#2eeabbc99342dafe04613a76c441be4ebcca49c3" + integrity sha512-D4CxkazFKBfN1akAIY6ieyOqzoOoBV1OICxgUblWxff/pSjCA2khXlASUx7mK6W1oP4McqhgcCsu6QaLj3WMWg== + +"@rollup/rollup-win32-ia32-msvc@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.2.tgz#9294246ee7ab3021026fdb434f16d9f7d02a9c91" + integrity sha512-RsnE6LQkUHlkC10RKngtHNLxb7scFykEbEwOFDjr3CeCMG+Rr+cKqlkKc2/wJ1u4u990urRHCbjz31x84PBrSQ== + +"@rollup/rollup-win32-x64-msvc@4.26.0": + version "4.26.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.26.0.tgz#a3ae3da434a4ba0785312e963ae4c1239470403a" + integrity sha512-2x8MO1rm4PGEP0xWbubJW5RtbNLk3puzAMaLQd3B3JHVw4KcHlmXcO+Wewx9zCoo7EUFiMlu/aZbCJ7VjMzAag== + +"@rollup/rollup-win32-x64-msvc@4.27.2": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.2.tgz#dd46f94fb22ea3be0b79193f721b3510fb428a1d" + integrity sha512-foJM5vv+z2KQmn7emYdDLyTbkoO5bkHZE1oth2tWbQNGW7mX32d46Hz6T0MqXdWS2vBZhaEtHqdy9WYwGfiliA== "@rtsao/scc@^1.1.0": version "1.1.0" @@ -2221,39 +2298,39 @@ debug "4.3.4" mongodb-memory-server "9.2.0" -"@shikijs/core@1.22.0": - version "1.22.0" - resolved "https://registry.npmjs.org/@shikijs/core/-/core-1.22.0.tgz" - integrity sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q== +"@shikijs/core@1.22.2": + version "1.22.2" + resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-1.22.2.tgz#9c22bd4cc8a4d6c062461cfd35e1faa6c617ca25" + integrity sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg== dependencies: - "@shikijs/engine-javascript" "1.22.0" - "@shikijs/engine-oniguruma" "1.22.0" - "@shikijs/types" "1.22.0" + "@shikijs/engine-javascript" "1.22.2" + "@shikijs/engine-oniguruma" "1.22.2" + "@shikijs/types" "1.22.2" "@shikijs/vscode-textmate" "^9.3.0" "@types/hast" "^3.0.4" hast-util-to-html "^9.0.3" -"@shikijs/engine-javascript@1.22.0": - version "1.22.0" - resolved "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.22.0.tgz" - integrity sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw== +"@shikijs/engine-javascript@1.22.2": + version "1.22.2" + resolved "https://registry.yarnpkg.com/@shikijs/engine-javascript/-/engine-javascript-1.22.2.tgz#62e90dbd2ed1d78b972ad7d0a1f8ffaaf5e43279" + integrity sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw== dependencies: - "@shikijs/types" "1.22.0" + "@shikijs/types" "1.22.2" "@shikijs/vscode-textmate" "^9.3.0" oniguruma-to-js "0.4.3" -"@shikijs/engine-oniguruma@1.22.0": - version "1.22.0" - resolved "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.22.0.tgz" - integrity sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw== +"@shikijs/engine-oniguruma@1.22.2": + version "1.22.2" + resolved "https://registry.yarnpkg.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.22.2.tgz#b12a44e3faf486e19fbcf8952f4b56b9b9b8d9b8" + integrity sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA== dependencies: - "@shikijs/types" "1.22.0" + "@shikijs/types" "1.22.2" "@shikijs/vscode-textmate" "^9.3.0" -"@shikijs/types@1.22.0": - version "1.22.0" - resolved "https://registry.npmjs.org/@shikijs/types/-/types-1.22.0.tgz" - integrity sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww== +"@shikijs/types@1.22.2": + version "1.22.2" + resolved "https://registry.yarnpkg.com/@shikijs/types/-/types-1.22.2.tgz#695a283f19963fe0638fc2646862ba5cfc4623a8" + integrity sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg== dependencies: "@shikijs/vscode-textmate" "^9.3.0" "@types/hast" "^3.0.4" @@ -2446,9 +2523,9 @@ "@types/send" "*" "@types/express-serve-static-core@^5.0.0": - version "5.0.0" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.0.tgz" - integrity sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw== + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.1.tgz#3c9997ae9d00bc236e45c6374e84f2596458d9db" + integrity sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2538,9 +2615,9 @@ "@types/istanbul-lib-report" "*" "@types/jest@^29.5.12", "@types/jest@^29.5.13", "@types/jest@^29.5.6": - version "29.5.13" - resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz" - integrity sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg== + version "29.5.14" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" + integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -2580,19 +2657,19 @@ "@types/node" "*" "@types/node-fetch@^2.6.1": - version "2.6.11" - resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz" - integrity sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g== + version "2.6.12" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.12.tgz#8ab5c3ef8330f13100a7479e2cd56d3386830a03" + integrity sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA== dependencies: "@types/node" "*" form-data "^4.0.0" "@types/node@*", "@types/node@^22.6.1", "@types/node@^22.7.7": - version "22.7.8" - resolved "https://registry.npmjs.org/@types/node/-/node-22.7.8.tgz" - integrity sha512-a922jJy31vqR5sk+kAdIENJjHblqcZ4RmERviFsER4WJcEONqxKcjNOlk0q7OUfrF5sddT+vng070cdfMlrPLg== + version "22.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.9.0.tgz#b7f16e5c3384788542c72dc3d561a7ceae2c0365" + integrity sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ== dependencies: - undici-types "~6.19.2" + undici-types "~6.19.8" "@types/node@18.15.13": version "18.15.13" @@ -2610,9 +2687,9 @@ integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== "@types/qs@*", "@types/qs@^6.2.31": - version "6.9.16" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz" - integrity sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A== + version "6.9.17" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.17.tgz#fc560f60946d0aeff2f914eb41679659d3310e1a" + integrity sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ== "@types/range-parser@*": version "1.2.7" @@ -2721,15 +2798,15 @@ ts-api-utils "^1.0.1" "@typescript-eslint/eslint-plugin@^8.8.1", "@typescript-eslint/eslint-plugin@^8.9.0": - version "8.11.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz" - integrity sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA== + version "8.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz#7dc0e419c87beadc8f554bf5a42e5009ed3748dc" + integrity sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.11.0" - "@typescript-eslint/type-utils" "8.11.0" - "@typescript-eslint/utils" "8.11.0" - "@typescript-eslint/visitor-keys" "8.11.0" + "@typescript-eslint/scope-manager" "8.14.0" + "@typescript-eslint/type-utils" "8.14.0" + "@typescript-eslint/utils" "8.14.0" + "@typescript-eslint/visitor-keys" "8.14.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" @@ -2747,14 +2824,14 @@ debug "^4.3.4" "@typescript-eslint/parser@^8.8.1", "@typescript-eslint/parser@^8.9.0": - version "8.11.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.11.0.tgz" - integrity sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg== - dependencies: - "@typescript-eslint/scope-manager" "8.11.0" - "@typescript-eslint/types" "8.11.0" - "@typescript-eslint/typescript-estree" "8.11.0" - "@typescript-eslint/visitor-keys" "8.11.0" + version "8.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.14.0.tgz#0a7e9dbc11bc07716ab2d7b1226217e9f6b51fc8" + integrity sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA== + dependencies: + "@typescript-eslint/scope-manager" "8.14.0" + "@typescript-eslint/types" "8.14.0" + "@typescript-eslint/typescript-estree" "8.14.0" + "@typescript-eslint/visitor-keys" "8.14.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -2773,13 +2850,13 @@ "@typescript-eslint/types" "6.21.0" "@typescript-eslint/visitor-keys" "6.21.0" -"@typescript-eslint/scope-manager@8.11.0": - version "8.11.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz" - integrity sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ== +"@typescript-eslint/scope-manager@8.14.0": + version "8.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz#01f37c147a735cd78f0ff355e033b9457da1f373" + integrity sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw== dependencies: - "@typescript-eslint/types" "8.11.0" - "@typescript-eslint/visitor-keys" "8.11.0" + "@typescript-eslint/types" "8.14.0" + "@typescript-eslint/visitor-keys" "8.14.0" "@typescript-eslint/type-utils@6.21.0": version "6.21.0" @@ -2791,13 +2868,13 @@ debug "^4.3.4" ts-api-utils "^1.0.1" -"@typescript-eslint/type-utils@8.11.0": - version "8.11.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz" - integrity sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg== +"@typescript-eslint/type-utils@8.14.0": + version "8.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz#455c6af30c336b24a1af28bc4f81b8dd5d74d94d" + integrity sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ== dependencies: - "@typescript-eslint/typescript-estree" "8.11.0" - "@typescript-eslint/utils" "8.11.0" + "@typescript-eslint/typescript-estree" "8.14.0" + "@typescript-eslint/utils" "8.14.0" debug "^4.3.4" ts-api-utils "^1.3.0" @@ -2811,10 +2888,10 @@ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz" integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== -"@typescript-eslint/types@8.11.0": - version "8.11.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.11.0.tgz" - integrity sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw== +"@typescript-eslint/types@8.14.0": + version "8.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.14.0.tgz#0d33d8d0b08479c424e7d654855fddf2c71e4021" + integrity sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -2843,13 +2920,13 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/typescript-estree@8.11.0": - version "8.11.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz" - integrity sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg== +"@typescript-eslint/typescript-estree@8.14.0": + version "8.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz#a7a3a5a53a6c09313e12fb4531d4ff582ee3c312" + integrity sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ== dependencies: - "@typescript-eslint/types" "8.11.0" - "@typescript-eslint/visitor-keys" "8.11.0" + "@typescript-eslint/types" "8.14.0" + "@typescript-eslint/visitor-keys" "8.14.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -2870,15 +2947,15 @@ "@typescript-eslint/typescript-estree" "6.21.0" semver "^7.5.4" -"@typescript-eslint/utils@8.11.0": - version "8.11.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.11.0.tgz" - integrity sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g== +"@typescript-eslint/utils@8.14.0": + version "8.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.14.0.tgz#ac2506875e03aba24e602364e43b2dfa45529dbd" + integrity sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.11.0" - "@typescript-eslint/types" "8.11.0" - "@typescript-eslint/typescript-estree" "8.11.0" + "@typescript-eslint/scope-manager" "8.14.0" + "@typescript-eslint/types" "8.14.0" + "@typescript-eslint/typescript-estree" "8.14.0" "@typescript-eslint/utils@^5.10.0": version "5.62.0" @@ -2910,12 +2987,12 @@ "@typescript-eslint/types" "6.21.0" eslint-visitor-keys "^3.4.1" -"@typescript-eslint/visitor-keys@8.11.0": - version "8.11.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz" - integrity sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw== +"@typescript-eslint/visitor-keys@8.14.0": + version "8.14.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz#2418d5a54669af9658986ade4e6cfb7767d815ad" + integrity sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ== dependencies: - "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/types" "8.14.0" eslint-visitor-keys "^3.4.3" "@ungap/structured-clone@^1.0.0": @@ -2958,6 +3035,16 @@ dependencies: tslib "^2.3.0" +"@zkdb/api@file:packages/api": + version "1.1.6" + dependencies: + "@apollo/client" "^3.10.6" + "@types/node" "^22.6.1" + graphql "^16.9.0" + react "^18.3.1" + react-dom "^18.3.1" + typescript "^5.6.2" + abbrev@1: version "1.1.1" resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" @@ -2968,13 +3055,6 @@ abbrev@^2.0.0: resolved "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz" integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - accepts@^1.3.5, accepts@~1.3.4, accepts@~1.3.8: version "1.3.8" resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" @@ -2995,10 +3075,10 @@ acorn-walk@^8.1.1: dependencies: acorn "^8.11.0" -acorn@^8.11.0, acorn@^8.12.0, acorn@^8.4.1: - version "8.13.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz" - integrity sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w== +acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== aes-js@4.0.0-beta.5: version "4.0.0-beta.5" @@ -3022,16 +3102,6 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -alge@0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/alge/-/alge-0.8.1.tgz" - integrity sha512-kiV9nTt+XIauAXsowVygDxMZLplZxDWt0W8plE/nB32/V2ziM/P/TxDbSVK7FYIUt2Xo16h3/htDh199LNPCKQ== - dependencies: - lodash.ismatch "^4.4.0" - remeda "^1.0.0" - ts-toolbelt "^9.6.0" - zod "^3.17.3" - ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" @@ -3066,13 +3136,6 @@ ansi-styles@^2.2.1: resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" @@ -3410,12 +3473,12 @@ babel-plugin-jest-hoist@^29.6.3: "@types/babel__traverse" "^7.0.6" babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.11" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz" - integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + version "0.4.12" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz#ca55bbec8ab0edeeef3d7b8ffd75322e210879a9" + integrity sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.2" + "@babel/helper-define-polyfill-provider" "^0.6.3" semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.10.6: @@ -3427,11 +3490,11 @@ babel-plugin-polyfill-corejs3@^0.10.6: core-js-compat "^3.38.0" babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.2" - resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz" - integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== + version "0.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz#abeb1f3f1c762eace37587f42548b08b57789bc8" + integrity sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.2" + "@babel/helper-define-polyfill-provider" "^0.6.3" babel-preset-current-node-syntax@^1.0.0: version "1.1.0" @@ -3472,7 +3535,7 @@ bare-events@^2.2.0: resolved "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz" integrity sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A== -base64-js@^1.3.0, base64-js@^1.3.1: +base64-js@^1.3.0: version "1.5.1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -3569,7 +3632,7 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.23.3, browserslist@^4.24.0: +browserslist@^4.24.0, browserslist@^4.24.2: version "4.24.2" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz" integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== @@ -3618,14 +3681,6 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - bunyan@^1.8.12: version "1.8.15" resolved "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz" @@ -3685,9 +3740,9 @@ camelcase@^6.2.0, camelcase@^6.3.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001669: - version "1.0.30001669" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz" - integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== + version "1.0.30001680" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz#5380ede637a33b9f9f1fc6045ea99bd142f3da5e" + integrity sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA== caseless@^0.12.0, caseless@~0.12.0: version "0.12.0" @@ -3710,15 +3765,6 @@ chalk@^1.1.1: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2, chalk@~4.1.0: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" @@ -3727,7 +3773,7 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2, chalk@~4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^5.3.0, chalk@~5.3.0: +chalk@~5.3.0: version "5.3.0" resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== @@ -3869,7 +3915,7 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== -color-convert@^1.9.0, color-convert@^1.9.3: +color-convert@^1.9.3: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -4055,11 +4101,11 @@ cookie@0.7.2: integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== core-js-compat@^3.38.0, core-js-compat@^3.38.1: - version "3.38.1" - resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz" - integrity sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw== + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.39.0.tgz#b12dccb495f2601dc860bdbe7b4e3ffa8ba63f61" + integrity sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw== dependencies: - browserslist "^4.23.3" + browserslist "^4.24.2" core-util-is@~1.0.0: version "1.0.3" @@ -4093,9 +4139,9 @@ create-require@^1.1.0: integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + version "7.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.5.tgz#910aac880ff5243da96b728bc6521a5f6c2f2f82" + integrity sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" @@ -4390,9 +4436,9 @@ ejs@^3.1.10: jake "^10.8.5" electron-to-chromium@^1.5.41: - version "1.5.42" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.42.tgz" - integrity sha512-gIfKavKDw1mhvic9nbzA5lZw8QSHpdMwLwXc0cWidQz9B15pDoDdDH4boIatuFfeoCatb3a/NGL6CYRVFxGZ9g== + version "1.5.58" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.58.tgz#d90bd7a04d9223dce4e72316e14492140ec9af40" + integrity sha512-al2l4r+24ZFL7WzyPTlyD0fC33LLzvxqLCwurtBibVPghRGO9hSTl+tis8t1kD7biPiH/en4U0I7o/nQbYeoVA== emittery@^0.13.1: version "0.13.1" @@ -4697,7 +4743,7 @@ eslint-plugin-import@^2.29.1, eslint-plugin-import@^2.31.0: eslint-plugin-jest@^27.6.3: version "27.9.0" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz#7c98a33605e1d8b8442ace092b60e9919730000b" integrity sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug== dependencies: "@typescript-eslint/utils" "^5.10.0" @@ -4720,10 +4766,10 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz" - integrity sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw== +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -4733,26 +4779,26 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-visitor-keys@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz" - integrity sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg== +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== eslint@^9.12.0: - version "9.13.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz" - integrity sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA== + version "9.14.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.14.0.tgz#534180a97c00af08bcf2b60b0ebf0c4d6c1b2c95" + integrity sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.11.0" + "@eslint-community/regexpp" "^4.12.1" "@eslint/config-array" "^0.18.0" "@eslint/core" "^0.7.0" "@eslint/eslintrc" "^3.1.0" - "@eslint/js" "9.13.0" + "@eslint/js" "9.14.0" "@eslint/plugin-kit" "^0.2.0" - "@humanfs/node" "^0.16.5" + "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.3.1" + "@humanwhocodes/retry" "^0.4.0" "@types/estree" "^1.0.6" "@types/json-schema" "^7.0.15" ajv "^6.12.4" @@ -4760,9 +4806,9 @@ eslint@^9.12.0: cross-spawn "^7.0.2" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.1.0" - eslint-visitor-keys "^4.1.0" - espree "^10.2.0" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -4784,14 +4830,14 @@ esm@^3.2.25: resolved "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz" integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== -espree@^10.0.1, espree@^10.2.0: - version "10.2.0" - resolved "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz" - integrity sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g== +espree@^10.0.1, espree@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== dependencies: - acorn "^8.12.0" + acorn "^8.14.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.1.0" + eslint-visitor-keys "^4.2.0" esprima@^4.0.0: version "4.0.1" @@ -4850,11 +4896,6 @@ ethers@6.13.2: tslib "2.4.0" ws "8.17.1" -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - eventemitter2@~0.4.13: version "0.4.14" resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz" @@ -4865,11 +4906,6 @@ eventemitter3@^5.0.1: resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== -events@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - execa@^5.0.0: version "5.1.1" resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" @@ -4944,7 +4980,7 @@ express-session@^1.18.0: safe-buffer "5.2.1" uid-safe "~2.1.5" -express@^4.17.1, express@^4.21.0: +express@^4.17.1, express@^4.21.0, express@^4.21.1: version "4.21.1" resolved "https://registry.npmjs.org/express/-/express-4.21.1.tgz" integrity sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ== @@ -5256,7 +5292,7 @@ fs.realpath@^1.0.0: fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== ftp-srv@^4.6.3: @@ -5556,13 +5592,11 @@ graphemer@^1.4.0: integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== graphql-request@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/graphql-request/-/graphql-request-7.1.0.tgz" - integrity sha512-Ouu/lYVFhARS1aXeZoVJWnGT6grFJXTLwXJuK4mUGGRo0EUk1JkyYp43mdGmRgUVezpRm6V5Sq3t8jBDQcajng== + version "7.1.2" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-7.1.2.tgz#52d7fd6d8d08c9f0b00c84a091376ce9fbdfa945" + integrity sha512-+XE3iuC55C2di5ZUrB4pjgwe+nIQBuXVIK9J98wrVwojzDW3GMdSBZfxUk8l4j9TieIpjpggclxhNEU9ebGF8w== dependencies: "@graphql-typed-document-node/core" "^3.2.0" - "@molt/command" "^0.9.0" - zod "^3.23.8" graphql-scalars@^1.15.0, graphql-scalars@^1.22.4: version "1.23.0" @@ -5769,11 +5803,6 @@ has-bigints@^1.0.1, has-bigints@^1.0.2: resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - has-flag@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" @@ -5974,20 +6003,15 @@ iconv-lite@0.4.24, iconv-lite@~0.4.13: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1: version "5.3.2" resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== -immutable@^4.0.0: - version "4.3.7" - resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz" - integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== +immutable@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.0.2.tgz#bb8a987349a73efbe6b3b292a9cbaf1b530d296b" + integrity sha512-1NU7hWZDkV7hJ4PJ9dur9gTNQ4ePNPN4k9/0YhwjzykTi/+3Q5pF93YU5QoVj8BuOnhLgaY8gs0U2pj4kSYVcw== import-fresh@^3.2.1: version "3.3.0" @@ -7035,11 +7059,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" @@ -7060,11 +7079,6 @@ lodash.isfinite@^3.3.2: resolved "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz" integrity sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA== -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz" - integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" @@ -7075,11 +7089,6 @@ lodash.merge@^4.6.2: resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.snakecase@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz" - integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" @@ -7106,7 +7115,7 @@ log-update@^6.1.0: strip-ansi "^7.1.0" wrap-ansi "^9.0.0" -logform@2.6.1, logform@^2.6.0, logform@^2.6.1: +logform@2.6.1: version "2.6.1" resolved "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz" integrity sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA== @@ -7118,6 +7127,18 @@ logform@2.6.1, logform@^2.6.0, logform@^2.6.1: safe-stable-stringify "^2.3.1" triple-beam "^1.3.0" +logform@^2.6.0, logform@^2.6.1, logform@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.7.0.tgz#cfca97528ef290f2e125a08396805002b2d060d1" + integrity sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ== + dependencies: + "@colors/colors" "1.6.0" + "@types/triple-beam" "^1.3.2" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + loglevel@^1.6.8: version "1.9.2" resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz" @@ -7374,7 +7395,7 @@ mimic-function@^5.0.0: mina-signer@^3.0.7: version "3.0.7" - resolved "https://registry.yarnpkg.com/mina-signer/-/mina-signer-3.0.7.tgz#9b926464db5ccf78ae7648a35f0b679fbdb111a4" + resolved "https://registry.npmjs.org/mina-signer/-/mina-signer-3.0.7.tgz" integrity sha512-7eYp/6WWj2VzJjvfC8dNeGMud/brdBrzkUsCdysFFXnfV2/FVpVhAGCMfaS6hs0HJtS4+eplmiD2hXfshQS8CQ== dependencies: blakejs "^1.2.1" @@ -7445,9 +7466,9 @@ mkdirp@~0.5.1: minimist "^1.2.6" mock-fs@^5.2.0: - version "5.4.0" - resolved "https://registry.npmjs.org/mock-fs/-/mock-fs-5.4.0.tgz" - integrity sha512-3ROPnEMgBOkusBMYQUW2rnT3wZwsgfOKzJDLvx/TZ7FL1WmWvwSwn3j4aDR5fLDGtgcc1WF0Z1y0di7c9L4FKw== + version "5.4.1" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-5.4.1.tgz#b00abc658cb19dbbf282fde2f05bb751cd1e12a5" + integrity sha512-sz/Q8K1gXXXHR+qr0GZg2ysxCRr323kuN10O7CtQjraJsFDJ4SJ+0I5MzALz7aRp9lHk8Cc/YdsT95h9Ka1aFw== moment@^2.19.3, moment@^2.22.1: version "2.30.1" @@ -7698,9 +7719,9 @@ object-hash@3.0.0: integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== object-inspect@^1.13.1: - version "1.13.2" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz" - integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== + version "1.13.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" + integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== object-keys@^1.1.1: version "1.1.1" @@ -7972,9 +7993,9 @@ parse5-htmlparser2-tree-adapter@^7.0.0: parse5 "^7.0.0" parse5@^7.0.0: - version "7.2.0" - resolved "https://registry.npmjs.org/parse5/-/parse5-7.2.0.tgz" - integrity sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA== + version "7.2.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.2.1.tgz#8928f55915e6125f430cc44309765bf17556a33a" + integrity sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ== dependencies: entities "^4.5.0" @@ -8109,7 +8130,7 @@ picocolors@1.1.0: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz" integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== -picocolors@^1.0.0, picocolors@^1.1.0: +picocolors@^1.0.0, picocolors@^1.1.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -8160,12 +8181,12 @@ possible-typed-array-names@^1.0.0: integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== postcss@^8.4.19: - version "8.4.47" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz" - integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== + version "8.4.49" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" + integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== dependencies: nanoid "^3.3.7" - picocolors "^1.1.0" + picocolors "^1.1.1" source-map-js "^1.2.1" postgres-array@~2.0.0: @@ -8219,11 +8240,6 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.10: - version "0.11.10" - resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - promise@^8.0.0: version "8.3.0" resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" @@ -8383,17 +8399,6 @@ readable-stream@^3.4.0, readable-stream@^3.6.2: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^4.5.2: - version "4.5.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz" - integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== - dependencies: - abort-controller "^3.0.0" - buffer "^6.0.3" - events "^3.3.0" - process "^0.11.10" - string_decoder "^1.3.0" - readdirp@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz" @@ -8406,11 +8411,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -readline-sync@^1.4.10: - version "1.4.10" - resolved "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz" - integrity sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw== - rechoir@^0.7.0: version "0.7.1" resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz" @@ -8467,9 +8467,9 @@ regenerator-transform@^0.15.2: "@babel/runtime" "^7.8.4" regex@^4.3.2: - version "4.3.3" - resolved "https://registry.npmjs.org/regex/-/regex-4.3.3.tgz" - integrity sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg== + version "4.4.0" + resolved "https://registry.yarnpkg.com/regex/-/regex-4.4.0.tgz#cb731e2819f230fad69089e1bd854fef7569e90a" + integrity sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ== regexp.prototype.flags@^1.5.2: version "1.5.3" @@ -8499,9 +8499,9 @@ regjsgen@^0.8.0: integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== regjsparser@^0.11.0: - version "0.11.1" - resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.1.tgz" - integrity sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ== + version "0.11.2" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.11.2.tgz#7404ad42be00226d72bcf1f003f1f441861913d8" + integrity sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA== dependencies: jsesc "~3.0.2" @@ -8510,11 +8510,6 @@ rehackt@^0.1.0: resolved "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz" integrity sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw== -remeda@^1.0.0: - version "1.61.0" - resolved "https://registry.npmjs.org/remeda/-/remeda-1.61.0.tgz" - integrity sha512-caKfSz9rDeSKBQQnlJnVW3mbVdFgxgGWQKq1XlFokqjf+hQD5gxutLGTTY2A/x24UxVyJe9gH5fAkFI63ULw4A== - remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" @@ -8629,28 +8624,57 @@ rimraf@~2.4.0: glob "^6.0.1" rollup@^4.22.4, rollup@^4.24.0: - version "4.24.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz" - integrity sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg== + version "4.26.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.26.0.tgz#a3e5fb29d50953633a2fd4506da6448d93268944" + integrity sha512-ilcl12hnWonG8f+NxU6BlgysVA0gvY2l8N0R84S1HcINbW20bvwuCngJkkInV6LXhwRpucsW5k1ovDwEdBVrNg== dependencies: "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.24.0" - "@rollup/rollup-android-arm64" "4.24.0" - "@rollup/rollup-darwin-arm64" "4.24.0" - "@rollup/rollup-darwin-x64" "4.24.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.24.0" - "@rollup/rollup-linux-arm-musleabihf" "4.24.0" - "@rollup/rollup-linux-arm64-gnu" "4.24.0" - "@rollup/rollup-linux-arm64-musl" "4.24.0" - "@rollup/rollup-linux-powerpc64le-gnu" "4.24.0" - "@rollup/rollup-linux-riscv64-gnu" "4.24.0" - "@rollup/rollup-linux-s390x-gnu" "4.24.0" - "@rollup/rollup-linux-x64-gnu" "4.24.0" - "@rollup/rollup-linux-x64-musl" "4.24.0" - "@rollup/rollup-win32-arm64-msvc" "4.24.0" - "@rollup/rollup-win32-ia32-msvc" "4.24.0" - "@rollup/rollup-win32-x64-msvc" "4.24.0" + "@rollup/rollup-android-arm-eabi" "4.26.0" + "@rollup/rollup-android-arm64" "4.26.0" + "@rollup/rollup-darwin-arm64" "4.26.0" + "@rollup/rollup-darwin-x64" "4.26.0" + "@rollup/rollup-freebsd-arm64" "4.26.0" + "@rollup/rollup-freebsd-x64" "4.26.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.26.0" + "@rollup/rollup-linux-arm-musleabihf" "4.26.0" + "@rollup/rollup-linux-arm64-gnu" "4.26.0" + "@rollup/rollup-linux-arm64-musl" "4.26.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.26.0" + "@rollup/rollup-linux-riscv64-gnu" "4.26.0" + "@rollup/rollup-linux-s390x-gnu" "4.26.0" + "@rollup/rollup-linux-x64-gnu" "4.26.0" + "@rollup/rollup-linux-x64-musl" "4.26.0" + "@rollup/rollup-win32-arm64-msvc" "4.26.0" + "@rollup/rollup-win32-ia32-msvc" "4.26.0" + "@rollup/rollup-win32-x64-msvc" "4.26.0" + fsevents "~2.3.2" + +rollup@^4.27.2: + version "4.27.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.27.2.tgz#3ee2aaa85ac8dfa4aa43ff48ccc54234dda5721e" + integrity sha512-KreA+PzWmk2yaFmZVwe6GB2uBD86nXl86OsDkt1bJS9p3vqWuEQ6HnJJ+j/mZi/q0920P99/MVRlB4L3crpF5w== + dependencies: + "@types/estree" "1.0.6" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.27.2" + "@rollup/rollup-android-arm64" "4.27.2" + "@rollup/rollup-darwin-arm64" "4.27.2" + "@rollup/rollup-darwin-x64" "4.27.2" + "@rollup/rollup-freebsd-arm64" "4.27.2" + "@rollup/rollup-freebsd-x64" "4.27.2" + "@rollup/rollup-linux-arm-gnueabihf" "4.27.2" + "@rollup/rollup-linux-arm-musleabihf" "4.27.2" + "@rollup/rollup-linux-arm64-gnu" "4.27.2" + "@rollup/rollup-linux-arm64-musl" "4.27.2" + "@rollup/rollup-linux-powerpc64le-gnu" "4.27.2" + "@rollup/rollup-linux-riscv64-gnu" "4.27.2" + "@rollup/rollup-linux-s390x-gnu" "4.27.2" + "@rollup/rollup-linux-x64-gnu" "4.27.2" + "@rollup/rollup-linux-x64-musl" "4.27.2" + "@rollup/rollup-win32-arm64-msvc" "4.27.2" + "@rollup/rollup-win32-ia32-msvc" "4.27.2" + "@rollup/rollup-win32-x64-msvc" "4.27.2" fsevents "~2.3.2" run-parallel@^1.1.9: @@ -8710,14 +8734,15 @@ safer-buffer@2.1.2, "safer-buffer@>= 2.1.2 < 3": integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sass@^1.32.13: - version "1.80.3" - resolved "https://registry.npmjs.org/sass/-/sass-1.80.3.tgz" - integrity sha512-ptDWyVmDMVielpz/oWy3YP3nfs7LpJTHIJZboMVs8GEC9eUmtZTZhMHlTW98wY4aEorDfjN38+Wr/XjskFWcfA== + version "1.80.7" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.80.7.tgz#7569334c39220f8ca62fcea38dce60f809ba345c" + integrity sha512-MVWvN0u5meytrSjsU7AWsbhoXi1sc58zADXFllfZzbsBT1GHjjar6JwBINYPRrkx/zqnQ6uqbQuHgE95O+C+eQ== dependencies: - "@parcel/watcher" "^2.4.1" chokidar "^4.0.0" - immutable "^4.0.0" + immutable "^5.0.2" source-map-js ">=0.6.2 <2.0.0" + optionalDependencies: + "@parcel/watcher" "^2.4.1" scheduler@^0.23.2: version "0.23.2" @@ -8836,14 +8861,14 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shiki@^1.16.2: - version "1.22.0" - resolved "https://registry.npmjs.org/shiki/-/shiki-1.22.0.tgz" - integrity sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw== - dependencies: - "@shikijs/core" "1.22.0" - "@shikijs/engine-javascript" "1.22.0" - "@shikijs/engine-oniguruma" "1.22.0" - "@shikijs/types" "1.22.0" + version "1.22.2" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.22.2.tgz#ed109a3d0850504ad5a1edf8496470a2121c5b7b" + integrity sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA== + dependencies: + "@shikijs/core" "1.22.2" + "@shikijs/engine-javascript" "1.22.2" + "@shikijs/engine-oniguruma" "1.22.2" + "@shikijs/types" "1.22.2" "@shikijs/vscode-textmate" "^9.3.0" "@types/hast" "^3.0.4" @@ -9063,13 +9088,6 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-length@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/string-length/-/string-length-6.0.0.tgz" - integrity sha512-1U361pxZHEQ+FeSjzqRpV+cu2vTzYeWeafXFLykiFlv4Vc0n3njgU8HrMbyik5uwm77naWMuVG8fhEF+Ovb1Kg== - dependencies: - strip-ansi "^7.1.0" - string-template@~0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz" @@ -9144,7 +9162,7 @@ string_decoder@0.10: resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== -string_decoder@^1.1.1, string_decoder@^1.3.0: +string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -9229,13 +9247,6 @@ supports-color@^2.0.0: resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" @@ -9365,11 +9376,6 @@ tmpl@1.0.5: resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" @@ -9417,9 +9423,9 @@ triple-beam@^1.3.0: integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== ts-api-utils@^1.0.1, ts-api-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + version "1.4.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.0.tgz#709c6f2076e511a81557f3d07a0cbd566ae8195c" + integrity sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ== ts-invariant@^0.10.3: version "0.10.3" @@ -9478,11 +9484,6 @@ ts-node@^10.4.0, ts-node@^10.9.2: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -ts-toolbelt@^9.6.0: - version "9.6.0" - resolved "https://registry.npmjs.org/ts-toolbelt/-/ts-toolbelt-9.6.0.tgz" - integrity sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w== - tsconfig-paths@^3.15.0: version "3.15.0" resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz" @@ -9514,9 +9515,9 @@ tslib@^1.8.1: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.2: - version "2.8.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz" - integrity sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA== + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== tsutils@^3.21.0: version "3.21.0" @@ -9526,9 +9527,9 @@ tsutils@^3.21.0: tslib "^1.8.1" tsx@^4.19.1: - version "4.19.1" - resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.1.tgz#b7bffdf4b565813e4dea14b90872af279cd0090b" - integrity sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA== + version "4.19.2" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.2.tgz#2d7814783440e0ae42354d0417d9c2989a2ae92c" + integrity sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g== dependencies: esbuild "~0.23.0" get-tsconfig "^4.7.5" @@ -9552,11 +9553,6 @@ type-fest@^0.21.3: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^4.3.1: - version "4.26.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz" - integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" @@ -9615,9 +9611,9 @@ typedarray@^0.0.6: integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== typedoc@^0.26.7: - version "0.26.10" - resolved "https://registry.npmjs.org/typedoc/-/typedoc-0.26.10.tgz" - integrity sha512-xLmVKJ8S21t+JeuQLNueebEuTVphx6IrP06CdV7+0WVflUSW3SPmR+h1fnWVdAR/FQePEgsSWCUHXqKKjzuUAw== + version "0.26.11" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.26.11.tgz#124b43a5637b7f3237b8c721691b44738c5c9dc9" + integrity sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw== dependencies: lunr "^2.3.9" markdown-it "^14.1.0" @@ -9670,9 +9666,9 @@ underscore.string@~3.3.5: sprintf-js "^1.1.1" util-deprecate "^1.0.2" -undici-types@~6.19.2: +undici-types@~6.19.8: version "6.19.8" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== unicode-canonical-property-names-ecmascript@^2.0.0: @@ -9956,12 +9952,12 @@ winston-transport@4.7.1: triple-beam "^1.3.0" winston-transport@^4.7.0: - version "4.8.0" - resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.8.0.tgz" - integrity sha512-qxSTKswC6llEMZKgCQdaWgDuMJQnhuvF5f2Nk3SNXc4byfQ+voo2mX1Px9dkNOuR8p0KAjfPG29PuYUSIb+vSA== + version "4.9.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.9.0.tgz#3bba345de10297654ea6f33519424560003b3bf9" + integrity sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A== dependencies: - logform "^2.6.1" - readable-stream "^4.5.2" + logform "^2.7.0" + readable-stream "^3.6.2" triple-beam "^1.3.0" winston@3.14.2: @@ -10141,9 +10137,9 @@ yargs@^17.3.1: yargs-parser "^21.1.1" yauzl@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/yauzl/-/yauzl-3.1.3.tgz" - integrity sha512-JCCdmlJJWv7L0q/KylOekyRaUrdEoUxWkWVcgorosTROCFWiS9p2NNPE9Yb91ak7b1N5SxAZEliWpspbZccivw== + version "3.2.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-3.2.0.tgz#7b6cb548f09a48a6177ea0be8ece48deb7da45c0" + integrity sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w== dependencies: buffer-crc32 "~0.2.3" pend "~1.2.0" @@ -10170,11 +10166,6 @@ zen-observable@0.8.15: resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz" integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== -zod@^3.17.3, zod@^3.22.2, zod@^3.23.8: - version "3.23.8" - resolved "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz" - integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== - zwitch@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz"