From dba064732f89135668cdebe109f71f59ada5da30 Mon Sep 17 00:00:00 2001 From: PratRanj07 Date: Fri, 29 Aug 2025 12:44:44 +0530 Subject: [PATCH 1/2] test --- examples/seektesting.spec.ts | 279 +++++++++++++++++++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100644 examples/seektesting.spec.ts diff --git a/examples/seektesting.spec.ts b/examples/seektesting.spec.ts new file mode 100644 index 00000000..d068da02 --- /dev/null +++ b/examples/seektesting.spec.ts @@ -0,0 +1,279 @@ +import {KafkaJS as Confluent, RdKafka, TopicPartitionOffset} from "@confluentinc/kafka-javascript"; +import {Admin, Consumer, EachMessagePayload, Kafka, logLevel, Producer} from "kafkajs"; +jest.setTimeout(120000); + +const topicFn = () => `test-offset-topic-${Date.now()}`; +const standardGroupIdFn = () => `test-standard-group-${Date.now()}`; +const offsetGroupIdFn = () => `test-offset-group-${Date.now()}`; + +describe("Seek offsets", () => { + let kafka: Kafka | Confluent.Kafka; + let admin: Admin | Confluent.Admin | undefined; + let producer: Producer | Confluent.Producer | undefined; + let standardConsumer: Consumer | Confluent.Consumer | undefined; + let offsetConsumer: Consumer | Confluent.Consumer | undefined; + + let standardReady: boolean; + let offsetReady: boolean; + const total = 4; + let received: number; + let replayed: number; + let offsets: (TopicPartitionOffset | Confluent.TopicPartitionOffset)[]; + + beforeEach(() => { + standardReady = false; + offsetReady = false; + received = 0; + replayed = 0; + offsets = []; + }); + + afterEach(async () => { + await offsetConsumer?.disconnect(); + await standardConsumer?.disconnect(); + await producer?.disconnect(); + await admin?.disconnect(); + }); + + // it("supports seeking consumer offsets with KafkaJS", async () => { + // console.log("Running seek offsets test with KafkaJS"); + // kafka = new Kafka({brokers: ["localhost:9092"], logLevel: logLevel.NOTHING}); + // admin = kafka.admin(); + // await admin.connect(); + + // const topic = topicFn(); + // await admin.createTopics({topics: [{topic, numPartitions: 1}]}); + // producer = kafka.producer(); + // await producer.connect(); + + // await sendMessages(topic); + + // standardConsumer = kafka.consumer({groupId: standardGroupIdFn()}); + // standardConsumer.on(standardConsumer.events.GROUP_JOIN, (event: any) => { + // standardReady = true; + // }); + // await standardConsumer.connect(); + // await standardConsumer.subscribe({topic, fromBeginning: true}); + // await standardConsumer.run({eachMessage: doStandardConsumer}); + + // offsetConsumer = kafka.consumer({groupId: offsetGroupIdFn()}); + // offsetConsumer.on(offsetConsumer.events.GROUP_JOIN, (event: any) => { + // offsetReady = true; + // }); + // await offsetConsumer.connect(); + // await offsetConsumer.subscribe({topic: topic, fromBeginning: true}); + // await offsetConsumer.run({eachMessage: doOffsetConsumer}); + + // await doTest(topic); + // }); + + it("supports seeking consumer offsets with Confluent", async () => { + console.log("Running seek offsets test with Confluent"); + kafka = new Confluent.Kafka({kafkaJS: {brokers: ["localhost:9092"], logLevel: Confluent.logLevel.NOTHING}}); + admin = kafka.admin(); + await admin.connect(); + + const topic = topicFn(); + await admin.createTopics({topics: [{topic, numPartitions: 1}]}); + producer = kafka.producer(); + await producer.connect(); + + await sendMessages(topic); + + standardConsumer = kafka.consumer({ + kafkaJS: {groupId: standardGroupIdFn(), fromBeginning: true, autoCommit: true, autoCommitInterval: 500}, + rebalance_cb: (err: any, assignment: any, consumer: any) => { + if (err.code !== RdKafka.CODES.ERRORS.ERR__ASSIGN_PARTITIONS) return; + if (!standardReady) standardReady = true; + } + }); + await standardConsumer.connect(); + await standardConsumer.subscribe({topic}); + await standardConsumer.run({eachMessage: doStandardConsumer}); + + offsetConsumer = kafka.consumer({ + kafkaJS: { + groupId: offsetGroupIdFn(), + fromBeginning: true, + autoCommit: true, + autoCommitInterval: 500, + // If the Confluent client supports a 'config' property, move configs here: + // config: { + // 'fetch.max.wait.ms': 100, + // 'fetch.min.bytes': 1, + // 'fetch.max.bytes': 10485760, + // 'max.partition.fetch.bytes': 1048576, + // 'session.timeout.ms': 30000, + // 'heartbeat.interval.ms': 3000, + // } + }, + rebalance_cb: (err: any, assignment: any, consumer: any) => { + if (err.code !== RdKafka.CODES.ERRORS.ERR__ASSIGN_PARTITIONS) return; + if (!offsetReady) offsetReady = true; + } + }); + await offsetConsumer.connect(); + await offsetConsumer.subscribe({topic}); + await offsetConsumer.run({eachMessage: doOffsetConsumer}); + + await doTest(topic); + }); + + it("pause and resume without seek (confluent)", async () => { + console.log("Testing pause/resume without seek"); + kafka = new Confluent.Kafka({ kafkaJS: { brokers: ["localhost:9092"], logLevel: Confluent.logLevel.NOTHING } }); + admin = kafka.admin(); + await admin.connect(); + + const topic = topicFn(); + await admin.createTopics({ topics: [{ topic, numPartitions: 1 }] }); + producer = kafka.producer(); + await producer.connect(); + await sendMessages(topic); + + offsetConsumer = kafka.consumer({ + kafkaJS: { + groupId: offsetGroupIdFn(), + fromBeginning: true, + autoCommit: true, + autoCommitInterval: 500, + }, + rebalance_cb: (err, assignment, consumer) => { + if (err.code !== RdKafka.CODES.ERRORS.ERR__ASSIGN_PARTITIONS) return; + offsetReady = true; + } + }); + await offsetConsumer.connect(); + await offsetConsumer.subscribe({ topic }); + replayed = 0; + + await offsetConsumer.run({ + eachMessage: async (payload) => { + if (offsetConsumer) { + offsetConsumer.pause([{ topic: payload.topic }]); + offsetConsumer.resume([{ topic: payload.topic }]); + } + replayed++; + console.log(`[${Date.now()}] Pause/Resume received offset: ${payload.message.offset}`); + } + }); + + await until(() => replayed === total); + await offsetConsumer.disconnect(); + await admin.disconnect(); + await producer.disconnect(); +}); + +it("seek without pause/resume (confluent)", async () => { + console.log("Testing seek without pause/resume"); + kafka = new Confluent.Kafka({ kafkaJS: { brokers: ["localhost:9092"], logLevel: Confluent.logLevel.NOTHING } }); + admin = kafka.admin(); + await admin.connect(); + + const topic = topicFn(); + await admin.createTopics({ topics: [{ topic, numPartitions: 1 }] }); + producer = kafka.producer(); + await producer.connect(); + await sendMessages(topic); + + offsetConsumer = kafka.consumer({ + kafkaJS: { + groupId: offsetGroupIdFn(), + fromBeginning: true, + autoCommit: true, + autoCommitInterval: 500, + }, + rebalance_cb: (err, assignment, consumer) => { + if (err.code !== RdKafka.CODES.ERRORS.ERR__ASSIGN_PARTITIONS) return; + offsetReady = true; + } + }); + await offsetConsumer.connect(); + await offsetConsumer.subscribe({ topic }); + replayed = 0; + + await offsetConsumer.run({ + eachMessage: async (payload) => { + const offsetNum = typeof payload.message.offset === 'string' ? parseInt(payload.message.offset) : payload.message.offset; + // Only seek, never pause/resume + if (offsetNum % 3 === 0 && offsetNum + 1 < total) { + // Example: seek forward by 1 + if (offsetConsumer) { + offsetConsumer.seek({ topic: payload.topic, partition: payload.partition, offset: String(offsetNum + 1) }); + console.log(`[${Date.now()}] Seek from offset: ${offsetNum} to offset: ${offsetNum+1}`); + } + } + replayed++; + } + }); + + await until(() => replayed === total); + await offsetConsumer.disconnect(); + await admin.disconnect(); + await producer.disconnect(); +}); + + + async function sendMessages(topic: string) { + for (let i = 0; i < total; i++) { + await producer!.send({topic: topic, messages: [{value: "data"}]}); + } + } + + async function doStandardConsumer(payload: EachMessagePayload | Confluent.EachMessagePayload) { + const offset = + typeof payload.message.offset === "string" ? parseInt(payload.message.offset) : payload.message.offset; + console.log( + `[${Date.now()}] Standard consumer received => partition: ${payload.partition}; offset: ${offset}` + ); + received++; + if (offset % 3 === 0) { + offsets.push({topic: payload.topic, partition: payload.partition, offset}); + } + } + + async function doOffsetConsumer(payload: EachMessagePayload | Confluent.EachMessagePayload) { + const now = new Date(); + const localTimeWithMs = `${now.toLocaleString()}.${now.getMilliseconds().toString().padStart(3, '0')}`; + console.log(`[${localTimeWithMs}] Offset consumer received => partition: ${payload.partition}; offset: ${payload.message.offset}`); + replayed++; + offsetConsumer!.pause([{topic: payload.topic}]); + offsetConsumer!.resume([{topic: payload.topic}]); + //seekNextOffset(payload.topic); + } + + async function doTest(topic: string) { + await until(() => standardReady && offsetReady); + offsetConsumer!.pause([{topic}]); + + await until(() => received === total); + seekNextOffset(topic); + + await until(() => replayed === Math.ceil(total / 3)); + } + + function seekNextOffset(topic: string) { + if (offsets.length) { + const offset = offsets.shift(); + const now = new Date(); + const localTimeWithMs = `${now.toLocaleString()}.${now.getMilliseconds().toString().padStart(3, '0')}`; + console.log(`[${localTimeWithMs}] GOINGG TO RESUME (no seek)`, offset); + // Remove or comment out the seek operation: + // offsetConsumer!.seek(offset! as any); + // const seekTime = `${new Date().toLocaleString()}.${new Date().getMilliseconds().toString().padStart(3, '0')}`; + // console.log(`[${seekTime}] Seek to offset: ${offset!.offset}`); + offsetConsumer!.resume([{topic: offset!.topic}]); + } +} + + async function until(condition: () => boolean) { + const timeout = 60000; + const finish = Date.now() + timeout; + while (Date.now() <= finish) { + const result = condition(); + if (result) return; + await new Promise(resolve => setTimeout(resolve, 50)); + } + throw new Error(`Failed within ${timeout!}ms`); + } +}); From 452838da5d8f7e1545a99be84c5dfba42d0829e7 Mon Sep 17 00:00:00 2001 From: PratRanj07 Date: Fri, 29 Aug 2025 12:54:36 +0530 Subject: [PATCH 2/2] Testing --- examples/package.json | 3 +- examples/seektesting.spec.ts | 36 ++- package-lock.json | 530 +++++++++++++++++------------------ package.json | 6 +- tsconfig.json | 4 +- 5 files changed, 301 insertions(+), 278 deletions(-) diff --git a/examples/package.json b/examples/package.json index b8eb8b2a..b9310a66 100644 --- a/examples/package.json +++ b/examples/package.json @@ -9,6 +9,7 @@ "author": "", "license": "MIT", "dependencies": { - "@confluentinc/kafka-javascript": "file:.." + "@confluentinc/kafka-javascript": "file:..", + "kafkajs": "^2.2.4" } } diff --git a/examples/seektesting.spec.ts b/examples/seektesting.spec.ts index d068da02..edfaf784 100644 --- a/examples/seektesting.spec.ts +++ b/examples/seektesting.spec.ts @@ -1,5 +1,5 @@ import {KafkaJS as Confluent, RdKafka, TopicPartitionOffset} from "@confluentinc/kafka-javascript"; -import {Admin, Consumer, EachMessagePayload, Kafka, logLevel, Producer} from "kafkajs"; +import {Admin, Consumer, EachMessagePayload, Kafka, Producer} from "kafkajs"; jest.setTimeout(120000); const topicFn = () => `test-offset-topic-${Date.now()}`; @@ -137,10 +137,19 @@ describe("Seek offsets", () => { fromBeginning: true, autoCommit: true, autoCommitInterval: 500, + // If the Confluent client supports a 'config' property, move configs here: + // config: { + // 'fetch.max.wait.ms': 100, + // 'fetch.min.bytes': 1, + // 'fetch.max.bytes': 10485760, + // 'max.partition.fetch.bytes': 1048576, + // 'session.timeout.ms': 30000, + // 'heartbeat.interval.ms': 3000, + // } }, - rebalance_cb: (err, assignment, consumer) => { + rebalance_cb: (err: any, assignment: any, consumer: any) => { if (err.code !== RdKafka.CODES.ERRORS.ERR__ASSIGN_PARTITIONS) return; - offsetReady = true; + if (!offsetReady) offsetReady = true; } }); await offsetConsumer.connect(); @@ -154,7 +163,9 @@ describe("Seek offsets", () => { offsetConsumer.resume([{ topic: payload.topic }]); } replayed++; - console.log(`[${Date.now()}] Pause/Resume received offset: ${payload.message.offset}`); + const now = new Date(); + const localTimeWithMs = `${now.toLocaleString()}.${now.getMilliseconds().toString().padStart(3, '0')}`; + console.log(`[${localTimeWithMs}] Pause/Resume received offset: ${payload.message.offset}`); } }); @@ -182,10 +193,19 @@ it("seek without pause/resume (confluent)", async () => { fromBeginning: true, autoCommit: true, autoCommitInterval: 500, + // If the Confluent client supports a 'config' property, move configs here: + // config: { + // 'fetch.max.wait.ms': 100, + // 'fetch.min.bytes': 1, + // 'fetch.max.bytes': 10485760, + // 'max.partition.fetch.bytes': 1048576, + // 'session.timeout.ms': 30000, + // 'heartbeat.interval.ms': 3000, + // } }, - rebalance_cb: (err, assignment, consumer) => { + rebalance_cb: (err: any, assignment: any, consumer: any) => { if (err.code !== RdKafka.CODES.ERRORS.ERR__ASSIGN_PARTITIONS) return; - offsetReady = true; + if (!offsetReady) offsetReady = true; } }); await offsetConsumer.connect(); @@ -200,7 +220,9 @@ it("seek without pause/resume (confluent)", async () => { // Example: seek forward by 1 if (offsetConsumer) { offsetConsumer.seek({ topic: payload.topic, partition: payload.partition, offset: String(offsetNum + 1) }); - console.log(`[${Date.now()}] Seek from offset: ${offsetNum} to offset: ${offsetNum+1}`); + const now = new Date(); + const localTimeWithMs = `${now.toLocaleString()}.${now.getMilliseconds().toString().padStart(3, '0')}`; + console.log(`[${localTimeWithMs}] Seek from offset: ${offsetNum} to offset: ${offsetNum+1}`); } } replayed++; diff --git a/package-lock.json b/package-lock.json index a20c3bf4..e82723eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,8 +25,8 @@ "@eslint/js": "^9.9.0", "@hapi/boom": "^10.0.1", "@types/eslint__js": "^8.42.3", - "@types/jest": "^29.5.13", - "@types/node": "^20.16.1", + "@types/jest": "^29.5.14", + "@types/node": "^20.19.11", "axios-mock-adapter": "^2.1.0", "bluebird": "^3.5.3", "eslint": "^8.57.0", @@ -36,7 +36,7 @@ "mocha": "^10.7.0", "node-gyp": "^9.3.1", "nyc": "^17.1.0", - "ts-jest": "^29.2.5", + "ts-jest": "^29.4.1", "typescript": "^5.9.2", "typescript-eslint": "^8.2.0" }, @@ -184,24 +184,24 @@ } }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.864.0.tgz", - "integrity": "sha512-IH3RSg/Zy2+yXQ2d4jmMk2U8A+BuJ9uNUYPWAg144yUUxanN1Czb+GyFKeJO4NGhVnn5D+j1YoRLpJN8PW2B0g==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.873.0.tgz", + "integrity": "sha512-/nqCaiIT1VFGYM427i6SfvBiohC9qjD3JtGP3/hdg70V6RRN8VXNSQgpeFplBwXTOumbb4KxKZjTws+S+4yrig==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.864.0", - "@aws-sdk/credential-provider-node": "3.864.0", - "@aws-sdk/middleware-host-header": "3.862.0", - "@aws-sdk/middleware-logger": "3.862.0", - "@aws-sdk/middleware-recursion-detection": "3.862.0", - "@aws-sdk/middleware-user-agent": "3.864.0", - "@aws-sdk/region-config-resolver": "3.862.0", + "@aws-sdk/core": "3.873.0", + "@aws-sdk/credential-provider-node": "3.873.0", + "@aws-sdk/middleware-host-header": "3.873.0", + "@aws-sdk/middleware-logger": "3.873.0", + "@aws-sdk/middleware-recursion-detection": "3.873.0", + "@aws-sdk/middleware-user-agent": "3.873.0", + "@aws-sdk/region-config-resolver": "3.873.0", "@aws-sdk/types": "3.862.0", - "@aws-sdk/util-endpoints": "3.862.0", - "@aws-sdk/util-user-agent-browser": "3.862.0", - "@aws-sdk/util-user-agent-node": "3.864.0", + "@aws-sdk/util-endpoints": "3.873.0", + "@aws-sdk/util-user-agent-browser": "3.873.0", + "@aws-sdk/util-user-agent-node": "3.873.0", "@smithy/config-resolver": "^4.1.5", "@smithy/core": "^3.8.0", "@smithy/fetch-http-handler": "^5.1.1", @@ -246,24 +246,24 @@ } }, "node_modules/@aws-sdk/client-kms": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-kms/-/client-kms-3.864.0.tgz", - "integrity": "sha512-qEnSPGSB+LKWmetlxQ5qt3mmEcktp9dhPCmB7vdLiOPoRFyPAVIIqLG1jhrwspUgxVYil7Lq+ygHhW72D+7zOg==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-kms/-/client-kms-3.873.0.tgz", + "integrity": "sha512-kNuwYpqwhBnCRpapTBJ87q9mM3PcZgfjdyuFBOpRWHQ+ffMDYtn94IJzqTFhRu8vPiPnE9Ycngn1oChWEHGJZA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.864.0", - "@aws-sdk/credential-provider-node": "3.864.0", - "@aws-sdk/middleware-host-header": "3.862.0", - "@aws-sdk/middleware-logger": "3.862.0", - "@aws-sdk/middleware-recursion-detection": "3.862.0", - "@aws-sdk/middleware-user-agent": "3.864.0", - "@aws-sdk/region-config-resolver": "3.862.0", + "@aws-sdk/core": "3.873.0", + "@aws-sdk/credential-provider-node": "3.873.0", + "@aws-sdk/middleware-host-header": "3.873.0", + "@aws-sdk/middleware-logger": "3.873.0", + "@aws-sdk/middleware-recursion-detection": "3.873.0", + "@aws-sdk/middleware-user-agent": "3.873.0", + "@aws-sdk/region-config-resolver": "3.873.0", "@aws-sdk/types": "3.862.0", - "@aws-sdk/util-endpoints": "3.862.0", - "@aws-sdk/util-user-agent-browser": "3.862.0", - "@aws-sdk/util-user-agent-node": "3.864.0", + "@aws-sdk/util-endpoints": "3.873.0", + "@aws-sdk/util-user-agent-browser": "3.873.0", + "@aws-sdk/util-user-agent-node": "3.873.0", "@smithy/config-resolver": "^4.1.5", "@smithy/core": "^3.8.0", "@smithy/fetch-http-handler": "^5.1.1", @@ -308,23 +308,23 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.864.0.tgz", - "integrity": "sha512-THiOp0OpQROEKZ6IdDCDNNh3qnNn/kFFaTSOiugDpgcE5QdsOxh1/RXq7LmHpTJum3cmnFf8jG59PHcz9Tjnlw==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.873.0.tgz", + "integrity": "sha512-EmcrOgFODWe7IsLKFTeSXM9TlQ80/BO1MBISlr7w2ydnOaUYIiPGRRJnDpeIgMaNqT4Rr2cRN2RiMrbFO7gDdA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.864.0", - "@aws-sdk/middleware-host-header": "3.862.0", - "@aws-sdk/middleware-logger": "3.862.0", - "@aws-sdk/middleware-recursion-detection": "3.862.0", - "@aws-sdk/middleware-user-agent": "3.864.0", - "@aws-sdk/region-config-resolver": "3.862.0", + "@aws-sdk/core": "3.873.0", + "@aws-sdk/middleware-host-header": "3.873.0", + "@aws-sdk/middleware-logger": "3.873.0", + "@aws-sdk/middleware-recursion-detection": "3.873.0", + "@aws-sdk/middleware-user-agent": "3.873.0", + "@aws-sdk/region-config-resolver": "3.873.0", "@aws-sdk/types": "3.862.0", - "@aws-sdk/util-endpoints": "3.862.0", - "@aws-sdk/util-user-agent-browser": "3.862.0", - "@aws-sdk/util-user-agent-node": "3.864.0", + "@aws-sdk/util-endpoints": "3.873.0", + "@aws-sdk/util-user-agent-browser": "3.873.0", + "@aws-sdk/util-user-agent-node": "3.873.0", "@smithy/config-resolver": "^4.1.5", "@smithy/core": "^3.8.0", "@smithy/fetch-http-handler": "^5.1.1", @@ -369,13 +369,13 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.864.0.tgz", - "integrity": "sha512-LFUREbobleHEln+Zf7IG83lAZwvHZG0stI7UU0CtwyuhQy5Yx0rKksHNOCmlM7MpTEbSCfntEhYi3jUaY5e5lg==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.873.0.tgz", + "integrity": "sha512-WrROjp8X1VvmnZ4TBzwM7RF+EB3wRaY9kQJLXw+Aes0/3zRjUXvGIlseobGJMqMEGnM0YekD2F87UaVfot1xeQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.862.0", - "@aws-sdk/xml-builder": "3.862.0", + "@aws-sdk/xml-builder": "3.873.0", "@smithy/core": "^3.8.0", "@smithy/node-config-provider": "^4.1.4", "@smithy/property-provider": "^4.0.5", @@ -407,12 +407,12 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.864.0.tgz", - "integrity": "sha512-jF6xJS67nPvJ/ElvdA2Q/EDArTcd0fKS3R6zImupOkTMm9PwmEM/BM7hpQCUFkVcaUhtvPpYCtuolGq9ezuKng==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.873.0.tgz", + "integrity": "sha512-/FABOYGD5yU8+L1qjvsvEhwkzzvA9zincme7019oOhEoaGu4hsul3eEFTGBcY5je36ckIXoGD4QQepWi9Ysy4g==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.864.0", + "@aws-sdk/client-cognito-identity": "3.873.0", "@aws-sdk/types": "3.862.0", "@smithy/property-provider": "^4.0.5", "@smithy/types": "^4.3.2", @@ -435,12 +435,12 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.864.0.tgz", - "integrity": "sha512-StJPOI2Rt8UE6lYjXUpg6tqSZaM72xg46ljPg8kIevtBAAfdtq9K20qT/kSliWGIBocMFAv0g2mC0hAa+ECyvg==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.873.0.tgz", + "integrity": "sha512-FWj1yUs45VjCADv80JlGshAttUHBL2xtTAbJcAxkkJZzLRKVkdyrepFWhv/95MvDyzfbT6PgJiWMdW65l/8ooA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.864.0", + "@aws-sdk/core": "3.873.0", "@aws-sdk/types": "3.862.0", "@smithy/property-provider": "^4.0.5", "@smithy/types": "^4.3.2", @@ -463,12 +463,12 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.864.0.tgz", - "integrity": "sha512-E/RFVxGTuGnuD+9pFPH2j4l6HvrXzPhmpL8H8nOoJUosjx7d4v93GJMbbl1v/fkDLqW9qN4Jx2cI6PAjohA6OA==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.873.0.tgz", + "integrity": "sha512-0sIokBlXIsndjZFUfr3Xui8W6kPC4DAeBGAXxGi9qbFZ9PWJjn1vt2COLikKH3q2snchk+AsznREZG8NW6ezSg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.864.0", + "@aws-sdk/core": "3.873.0", "@aws-sdk/types": "3.862.0", "@smithy/fetch-http-handler": "^5.1.1", "@smithy/node-http-handler": "^4.1.1", @@ -496,18 +496,18 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.864.0.tgz", - "integrity": "sha512-PlxrijguR1gxyPd5EYam6OfWLarj2MJGf07DvCx9MAuQkw77HBnsu6+XbV8fQriFuoJVTBLn9ROhMr/ROAYfUg==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.864.0", - "@aws-sdk/credential-provider-env": "3.864.0", - "@aws-sdk/credential-provider-http": "3.864.0", - "@aws-sdk/credential-provider-process": "3.864.0", - "@aws-sdk/credential-provider-sso": "3.864.0", - "@aws-sdk/credential-provider-web-identity": "3.864.0", - "@aws-sdk/nested-clients": "3.864.0", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.873.0.tgz", + "integrity": "sha512-bQdGqh47Sk0+2S3C+N46aNQsZFzcHs7ndxYLARH/avYXf02Nl68p194eYFaAHJSQ1re5IbExU1+pbums7FJ9fA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.873.0", + "@aws-sdk/credential-provider-env": "3.873.0", + "@aws-sdk/credential-provider-http": "3.873.0", + "@aws-sdk/credential-provider-process": "3.873.0", + "@aws-sdk/credential-provider-sso": "3.873.0", + "@aws-sdk/credential-provider-web-identity": "3.873.0", + "@aws-sdk/nested-clients": "3.873.0", "@aws-sdk/types": "3.862.0", "@smithy/credential-provider-imds": "^4.0.7", "@smithy/property-provider": "^4.0.5", @@ -532,17 +532,17 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.864.0.tgz", - "integrity": "sha512-2BEymFeXURS+4jE9tP3vahPwbYRl0/1MVaFZcijj6pq+nf5EPGvkFillbdBRdc98ZI2NedZgSKu3gfZXgYdUhQ==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.873.0.tgz", + "integrity": "sha512-+v/xBEB02k2ExnSDL8+1gD6UizY4Q/HaIJkNSkitFynRiiTQpVOSkCkA0iWxzksMeN8k1IHTE5gzeWpkEjNwbA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.864.0", - "@aws-sdk/credential-provider-http": "3.864.0", - "@aws-sdk/credential-provider-ini": "3.864.0", - "@aws-sdk/credential-provider-process": "3.864.0", - "@aws-sdk/credential-provider-sso": "3.864.0", - "@aws-sdk/credential-provider-web-identity": "3.864.0", + "@aws-sdk/credential-provider-env": "3.873.0", + "@aws-sdk/credential-provider-http": "3.873.0", + "@aws-sdk/credential-provider-ini": "3.873.0", + "@aws-sdk/credential-provider-process": "3.873.0", + "@aws-sdk/credential-provider-sso": "3.873.0", + "@aws-sdk/credential-provider-web-identity": "3.873.0", "@aws-sdk/types": "3.862.0", "@smithy/credential-provider-imds": "^4.0.7", "@smithy/property-provider": "^4.0.5", @@ -567,12 +567,12 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.864.0.tgz", - "integrity": "sha512-Zxnn1hxhq7EOqXhVYgkF4rI9MnaO3+6bSg/tErnBQ3F8kDpA7CFU24G1YxwaJXp2X4aX3LwthefmSJHwcVP/2g==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.873.0.tgz", + "integrity": "sha512-ycFv9WN+UJF7bK/ElBq1ugWA4NMbYS//1K55bPQZb2XUpAM2TWFlEjG7DIyOhLNTdl6+CbHlCdhlKQuDGgmm0A==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.864.0", + "@aws-sdk/core": "3.873.0", "@aws-sdk/types": "3.862.0", "@smithy/property-provider": "^4.0.5", "@smithy/shared-ini-file-loader": "^4.0.5", @@ -596,14 +596,14 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.864.0.tgz", - "integrity": "sha512-UPyPNQbxDwHVGmgWdGg9/9yvzuedRQVF5jtMkmP565YX9pKZ8wYAcXhcYdNPWFvH0GYdB0crKOmvib+bmCuwkw==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.873.0.tgz", + "integrity": "sha512-SudkAOZmjEEYgUrqlUUjvrtbWJeI54/0Xo87KRxm4kfBtMqSx0TxbplNUAk8Gkg4XQNY0o7jpG8tK7r2Wc2+uw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.864.0", - "@aws-sdk/core": "3.864.0", - "@aws-sdk/token-providers": "3.864.0", + "@aws-sdk/client-sso": "3.873.0", + "@aws-sdk/core": "3.873.0", + "@aws-sdk/token-providers": "3.873.0", "@aws-sdk/types": "3.862.0", "@smithy/property-provider": "^4.0.5", "@smithy/shared-ini-file-loader": "^4.0.5", @@ -627,13 +627,13 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.864.0.tgz", - "integrity": "sha512-nNcjPN4SYg8drLwqK0vgVeSvxeGQiD0FxOaT38mV2H8cu0C5NzpvA+14Xy+W6vT84dxgmJYKk71Cr5QL2Oz+rA==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.873.0.tgz", + "integrity": "sha512-Gw2H21+VkA6AgwKkBtTtlGZ45qgyRZPSKWs0kUwXVlmGOiPz61t/lBX0vG6I06ZIz2wqeTJ5OA1pWZLqw1j0JQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.864.0", - "@aws-sdk/nested-clients": "3.864.0", + "@aws-sdk/core": "3.873.0", + "@aws-sdk/nested-clients": "3.873.0", "@aws-sdk/types": "3.862.0", "@smithy/property-provider": "^4.0.5", "@smithy/types": "^4.3.2", @@ -656,22 +656,22 @@ } }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.864.0.tgz", - "integrity": "sha512-k4K7PzvHpdHQLczgWT26Yk6t+VBwZ35jkIQ3dKODvBjfzlYHTX0y+VgemmDWrat1ahKfYb/OAw/gdwmnyxsAsw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.864.0", - "@aws-sdk/core": "3.864.0", - "@aws-sdk/credential-provider-cognito-identity": "3.864.0", - "@aws-sdk/credential-provider-env": "3.864.0", - "@aws-sdk/credential-provider-http": "3.864.0", - "@aws-sdk/credential-provider-ini": "3.864.0", - "@aws-sdk/credential-provider-node": "3.864.0", - "@aws-sdk/credential-provider-process": "3.864.0", - "@aws-sdk/credential-provider-sso": "3.864.0", - "@aws-sdk/credential-provider-web-identity": "3.864.0", - "@aws-sdk/nested-clients": "3.864.0", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.873.0.tgz", + "integrity": "sha512-kr44YgYDcNsKqy9Ko2SuNn424TSFHjq22MnhR3jrqaHri2DembF/5FLi42WK83h/SdQp5fU8CxZ8XVE3QgrU2Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.873.0", + "@aws-sdk/core": "3.873.0", + "@aws-sdk/credential-provider-cognito-identity": "3.873.0", + "@aws-sdk/credential-provider-env": "3.873.0", + "@aws-sdk/credential-provider-http": "3.873.0", + "@aws-sdk/credential-provider-ini": "3.873.0", + "@aws-sdk/credential-provider-node": "3.873.0", + "@aws-sdk/credential-provider-process": "3.873.0", + "@aws-sdk/credential-provider-sso": "3.873.0", + "@aws-sdk/credential-provider-web-identity": "3.873.0", + "@aws-sdk/nested-clients": "3.873.0", "@aws-sdk/types": "3.862.0", "@smithy/config-resolver": "^4.1.5", "@smithy/core": "^3.8.0", @@ -698,9 +698,9 @@ } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.862.0.tgz", - "integrity": "sha512-jDje8dCFeFHfuCAxMDXBs8hy8q9NCTlyK4ThyyfAj3U4Pixly2mmzY2u7b7AyGhWsjJNx8uhTjlYq5zkQPQCYw==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.873.0.tgz", + "integrity": "sha512-KZ/W1uruWtMOs7D5j3KquOxzCnV79KQW9MjJFZM/M0l6KI8J6V3718MXxFHsTjUE4fpdV6SeCNLV1lwGygsjJA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.862.0", @@ -725,9 +725,9 @@ } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.862.0.tgz", - "integrity": "sha512-N/bXSJznNBR/i7Ofmf9+gM6dx/SPBK09ZWLKsW5iQjqKxAKn/2DozlnE54uiEs1saHZWoNDRg69Ww4XYYSlG1Q==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.873.0.tgz", + "integrity": "sha512-QhNZ8X7pW68kFez9QxUSN65Um0Feo18ZmHxszQZNUhKDsXew/EG9NPQE/HgYcekcon35zHxC4xs+FeNuPurP2g==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.862.0", @@ -751,9 +751,9 @@ } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.862.0.tgz", - "integrity": "sha512-KVoo3IOzEkTq97YKM4uxZcYFSNnMkhW/qj22csofLegZi5fk90ztUnnaeKfaEJHfHp/tm1Y3uSoOXH45s++kKQ==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.873.0.tgz", + "integrity": "sha512-OtgY8EXOzRdEWR//WfPkA/fXl0+WwE8hq0y9iw2caNyKPtca85dzrrZWnPqyBK/cpImosrpR1iKMYr41XshsCg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.862.0", @@ -778,14 +778,14 @@ } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.864.0.tgz", - "integrity": "sha512-wrddonw4EyLNSNBrApzEhpSrDwJiNfjxDm5E+bn8n32BbAojXASH8W8jNpxz/jMgNkkJNxCfyqybGKzBX0OhbQ==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.873.0.tgz", + "integrity": "sha512-gHqAMYpWkPhZLwqB3Yj83JKdL2Vsb64sryo8LN2UdpElpS+0fT4yjqSxKTfp7gkhN6TCIxF24HQgbPk5FMYJWw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.864.0", + "@aws-sdk/core": "3.873.0", "@aws-sdk/types": "3.862.0", - "@aws-sdk/util-endpoints": "3.862.0", + "@aws-sdk/util-endpoints": "3.873.0", "@smithy/core": "^3.8.0", "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", @@ -808,23 +808,23 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.864.0.tgz", - "integrity": "sha512-H1C+NjSmz2y8Tbgh7Yy89J20yD/hVyk15hNoZDbCYkXg0M358KS7KVIEYs8E2aPOCr1sK3HBE819D/yvdMgokA==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.873.0.tgz", + "integrity": "sha512-yg8JkRHuH/xO65rtmLOWcd9XQhxX1kAonp2CliXT44eA/23OBds6XoheY44eZeHfCTgutDLTYitvy3k9fQY6ZA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.864.0", - "@aws-sdk/middleware-host-header": "3.862.0", - "@aws-sdk/middleware-logger": "3.862.0", - "@aws-sdk/middleware-recursion-detection": "3.862.0", - "@aws-sdk/middleware-user-agent": "3.864.0", - "@aws-sdk/region-config-resolver": "3.862.0", + "@aws-sdk/core": "3.873.0", + "@aws-sdk/middleware-host-header": "3.873.0", + "@aws-sdk/middleware-logger": "3.873.0", + "@aws-sdk/middleware-recursion-detection": "3.873.0", + "@aws-sdk/middleware-user-agent": "3.873.0", + "@aws-sdk/region-config-resolver": "3.873.0", "@aws-sdk/types": "3.862.0", - "@aws-sdk/util-endpoints": "3.862.0", - "@aws-sdk/util-user-agent-browser": "3.862.0", - "@aws-sdk/util-user-agent-node": "3.864.0", + "@aws-sdk/util-endpoints": "3.873.0", + "@aws-sdk/util-user-agent-browser": "3.873.0", + "@aws-sdk/util-user-agent-node": "3.873.0", "@smithy/config-resolver": "^4.1.5", "@smithy/core": "^3.8.0", "@smithy/fetch-http-handler": "^5.1.1", @@ -869,9 +869,9 @@ } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.862.0.tgz", - "integrity": "sha512-VisR+/HuVFICrBPY+q9novEiE4b3mvDofWqyvmxHcWM7HumTz9ZQSuEtnlB/92GVM3KDUrR9EmBHNRrfXYZkcQ==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.873.0.tgz", + "integrity": "sha512-q9sPoef+BBG6PJnc4x60vK/bfVwvRWsPgcoQyIra057S/QGjq5VkjvNk6H8xedf6vnKlXNBwq9BaANBXnldUJg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.862.0", @@ -898,13 +898,13 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.864.0.tgz", - "integrity": "sha512-gTc2QHOBo05SCwVA65dUtnJC6QERvFaPiuppGDSxoF7O5AQNK0UR/kMSenwLqN8b5E1oLYvQTv3C1idJLRX0cg==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.873.0.tgz", + "integrity": "sha512-BWOCeFeV/Ba8fVhtwUw/0Hz4wMm9fjXnMb4Z2a5he/jFlz5mt1/rr6IQ4MyKgzOaz24YrvqsJW2a0VUKOaYDvg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.864.0", - "@aws-sdk/nested-clients": "3.864.0", + "@aws-sdk/core": "3.873.0", + "@aws-sdk/nested-clients": "3.873.0", "@aws-sdk/types": "3.862.0", "@smithy/property-provider": "^4.0.5", "@smithy/shared-ini-file-loader": "^4.0.5", @@ -953,9 +953,9 @@ } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.862.0.tgz", - "integrity": "sha512-eCZuScdE9MWWkHGM2BJxm726MCmWk/dlHjOKvkM0sN1zxBellBMw5JohNss1Z8/TUmnW2gb9XHTOiHuGjOdksA==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.873.0.tgz", + "integrity": "sha512-YByHrhjxYdjKRf/RQygRK1uh0As1FIi9+jXTcIEX/rBgN8mUByczr2u4QXBzw7ZdbdcOBMOkPnLRjNOWW1MkFg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.862.0", @@ -981,9 +981,9 @@ } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz", - "integrity": "sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.873.0.tgz", + "integrity": "sha512-xcVhZF6svjM5Rj89T1WzkjQmrTF6dpR2UvIHPMTnSZoNe6CixejPZ6f0JJ2kAhO8H+dUHwNBlsUgOTIKiK/Syg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -993,9 +993,9 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.862.0.tgz", - "integrity": "sha512-BmPTlm0r9/10MMr5ND9E92r8KMZbq5ltYXYpVcUbAsnB1RJ8ASJuRoLne5F7mB3YMx0FJoOTuSq7LdQM3LgW3Q==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.873.0.tgz", + "integrity": "sha512-AcRdbK6o19yehEcywI43blIBhOCSo6UgyWcuOJX5CFF8k39xm1ILCjQlRRjchLAxWrm0lU0Q7XV90RiMMFMZtA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.862.0", @@ -1017,12 +1017,12 @@ } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.864.0.tgz", - "integrity": "sha512-d+FjUm2eJEpP+FRpVR3z6KzMdx1qwxEYDz8jzNKwxYLBBquaBaP/wfoMtMQKAcbrR7aT9FZVZF7zDgzNxUvQlQ==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.873.0.tgz", + "integrity": "sha512-9MivTP+q9Sis71UxuBaIY3h5jxH0vN3/ZWGxO8ADL19S2OIfknrYSAfzE5fpoKROVBu0bS4VifHOFq4PY1zsxw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.864.0", + "@aws-sdk/middleware-user-agent": "3.873.0", "@aws-sdk/types": "3.862.0", "@smithy/node-config-provider": "^4.1.4", "@smithy/types": "^4.3.2", @@ -1053,9 +1053,9 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.862.0.tgz", - "integrity": "sha512-6Ed0kmC1NMbuFTEgNmamAUU1h5gShgxL1hBVLbEzUa3trX5aJBz1vU4bXaBTvOYUAnOHtiy1Ml4AMStd6hJnFA==", + "version": "3.873.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.873.0.tgz", + "integrity": "sha512-kLO7k7cGJ6KaHiExSJWojZurF7SnGMDHXRuQunFnEoD0n1yB6Lqy/S/zHiQ7oJnBhPr9q0TW9qFkrsZb1Uc54w==", "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.3.2", @@ -1301,33 +1301,33 @@ } }, "node_modules/@azure/msal-browser": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.20.0.tgz", - "integrity": "sha512-JBGaxnYAvzFsT5TU6XhVpqc4XVMFjzsi6rrAVINX0PL3+wzs+k12fnvN/XFICvzCfV28NvHzxGfRRBoqE6GxNg==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.21.0.tgz", + "integrity": "sha512-vgzhz1F3DIB8qcjeJ3DLxMAha4iEaV2BDd1nxPP0ovTjIrpFUGlbhI+Z0pnK+GXctf2UmCwujH2L8xd8CdlMvw==", "license": "MIT", "dependencies": { - "@azure/msal-common": "15.11.0" + "@azure/msal-common": "15.12.0" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.11.0.tgz", - "integrity": "sha512-1IseGNH6XGWe+5xhZlhasTJP6Ob7tnVSlfFUnjdeH4Kik0n1SORTmdB6xxTwbx9Ro8EuO0XaRzpdABWSf15sdg==", + "version": "15.12.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.12.0.tgz", + "integrity": "sha512-4ucXbjVw8KJ5QBgnGJUeA07c8iznwlk5ioHIhI4ASXcXgcf2yRFhWzYOyWg/cI49LC9ekpFJeQtO3zjDTbl6TQ==", "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-node": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.7.1.tgz", - "integrity": "sha512-ZTopY+BmE/OubqTXEQ5Eq+h6M5NKTchQBtvLj1tgiAf26lk2C+9jJTvtHjcyzE3iWn3wzySJLa4ArcjHJaZMQw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.7.2.tgz", + "integrity": "sha512-pZ4GdPL9sBqgbdlQOIBDOrcqoFtCHkOVvvDYdhZOGHzpXp/nEwcL0PZt+qCHyy21fnK2GavvnFA4PeNb1ZGpDg==", "license": "MIT", "dependencies": { - "@azure/msal-common": "15.11.0", + "@azure/msal-common": "15.12.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -2043,29 +2043,29 @@ } }, "node_modules/@bufbuild/protobuf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.6.3.tgz", - "integrity": "sha512-w/gJKME9mYN7ZoUAmSMAWXk4hkVpxRKvEJCb3dV5g9wwWdxTJJ0ayOJAVcNxtdqaxDyFuC0uz4RSGVacJ030PQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.7.0.tgz", + "integrity": "sha512-qn6tAIZEw5i/wiESBF4nQxZkl86aY4KoO0IkUa2Lh+rya64oTOdJQFlZuMwI1Qz9VBJQrQC4QlSA2DNek5gCOA==", "license": "(Apache-2.0 AND BSD-3-Clause)" }, "node_modules/@bufbuild/protoc-gen-es": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@bufbuild/protoc-gen-es/-/protoc-gen-es-2.6.3.tgz", - "integrity": "sha512-20o4U/Th0yLK/ayQGJ8hwh+fmcI/2PWZFkTS4gv08AtOx31YA05/X/wbn+pLZLJCDP2ik4KTIWuV1j4gERs15A==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protoc-gen-es/-/protoc-gen-es-2.7.0.tgz", + "integrity": "sha512-xVz0PCo4Q/MzVvYtCmr4MgAb1/q7EXSHNh/eSwJRs3KfTG5GbT0YUY+J53+aVjQB6ELIIXvAkvOPX2WHa0Bbgw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@bufbuild/protobuf": "2.6.3", - "@bufbuild/protoplugin": "2.6.3" + "@bufbuild/protobuf": "2.7.0", + "@bufbuild/protoplugin": "2.7.0" }, "bin": { "protoc-gen-es": "bin/protoc-gen-es" }, "engines": { - "node": ">=14" + "node": ">=20" }, "peerDependencies": { - "@bufbuild/protobuf": "2.6.3" + "@bufbuild/protobuf": "2.7.0" }, "peerDependenciesMeta": { "@bufbuild/protobuf": { @@ -2074,13 +2074,13 @@ } }, "node_modules/@bufbuild/protoplugin": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/@bufbuild/protoplugin/-/protoplugin-2.6.3.tgz", - "integrity": "sha512-VceMuxeRukxGeABfo34SXq0VqY1MU+mzS+PBf0HAWo97ylFut8F6sQ3mV0tKiM08UQ/xQco7lxCn83BkoxrWrA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protoplugin/-/protoplugin-2.7.0.tgz", + "integrity": "sha512-yUdg8hXzFGR6K8ren7aXly2hT9BxClId814VB142YeZPatY0wqD3c0D8KfIz5nIeMdoPt0/Pm/RycFJCNGMD6w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@bufbuild/protobuf": "2.6.3", + "@bufbuild/protobuf": "2.7.0", "@typescript/vfs": "^1.5.2", "typescript": "5.4.5" } @@ -2200,9 +2200,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.33.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.33.0.tgz", - "integrity": "sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==", + "version": "9.34.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.34.0.tgz", + "integrity": "sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==", "dev": true, "license": "MIT", "engines": { @@ -4332,17 +4332,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.39.1.tgz", - "integrity": "sha512-yYegZ5n3Yr6eOcqgj2nJH8cH/ZZgF+l0YIdKILSDjYFRjgYQMgv/lRjV5Z7Up04b9VYUondt8EPMqg7kTWgJ2g==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.41.0.tgz", + "integrity": "sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.39.1", - "@typescript-eslint/type-utils": "8.39.1", - "@typescript-eslint/utils": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1", + "@typescript-eslint/scope-manager": "8.41.0", + "@typescript-eslint/type-utils": "8.41.0", + "@typescript-eslint/utils": "8.41.0", + "@typescript-eslint/visitor-keys": "8.41.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -4356,7 +4356,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.39.1", + "@typescript-eslint/parser": "^8.41.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -4372,16 +4372,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.39.1.tgz", - "integrity": "sha512-pUXGCuHnnKw6PyYq93lLRiZm3vjuslIy7tus1lIQTYVK9bL8XBgJnCWm8a0KcTtHC84Yya1Q6rtll+duSMj0dg==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.41.0.tgz", + "integrity": "sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.39.1", - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/typescript-estree": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1", + "@typescript-eslint/scope-manager": "8.41.0", + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/typescript-estree": "8.41.0", + "@typescript-eslint/visitor-keys": "8.41.0", "debug": "^4.3.4" }, "engines": { @@ -4397,14 +4397,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.39.1.tgz", - "integrity": "sha512-8fZxek3ONTwBu9ptw5nCKqZOSkXshZB7uAxuFF0J/wTMkKydjXCzqqga7MlFMpHi9DoG4BadhmTkITBcg8Aybw==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.41.0.tgz", + "integrity": "sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.39.1", - "@typescript-eslint/types": "^8.39.1", + "@typescript-eslint/tsconfig-utils": "^8.41.0", + "@typescript-eslint/types": "^8.41.0", "debug": "^4.3.4" }, "engines": { @@ -4419,14 +4419,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.39.1.tgz", - "integrity": "sha512-RkBKGBrjgskFGWuyUGz/EtD8AF/GW49S21J8dvMzpJitOF1slLEbbHnNEtAHtnDAnx8qDEdRrULRnWVx27wGBw==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.41.0.tgz", + "integrity": "sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1" + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/visitor-keys": "8.41.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4437,9 +4437,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.39.1.tgz", - "integrity": "sha512-ePUPGVtTMR8XMU2Hee8kD0Pu4NDE1CN9Q1sxGSGd/mbOtGZDM7pnhXNJnzW63zk/q+Z54zVzj44HtwXln5CvHA==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.41.0.tgz", + "integrity": "sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==", "dev": true, "license": "MIT", "engines": { @@ -4454,15 +4454,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.39.1.tgz", - "integrity": "sha512-gu9/ahyatyAdQbKeHnhT4R+y3YLtqqHyvkfDxaBYk97EcbfChSJXyaJnIL3ygUv7OuZatePHmQvuH5ru0lnVeA==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.41.0.tgz", + "integrity": "sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/typescript-estree": "8.39.1", - "@typescript-eslint/utils": "8.39.1", + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/typescript-estree": "8.41.0", + "@typescript-eslint/utils": "8.41.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -4479,9 +4479,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.39.1.tgz", - "integrity": "sha512-7sPDKQQp+S11laqTrhHqeAbsCfMkwJMrV7oTDvtDds4mEofJYir414bYKUEb8YPUm9QL3U+8f6L6YExSoAGdQw==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.41.0.tgz", + "integrity": "sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==", "dev": true, "license": "MIT", "engines": { @@ -4493,16 +4493,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.39.1.tgz", - "integrity": "sha512-EKkpcPuIux48dddVDXyQBlKdeTPMmALqBUbEk38McWv0qVEZwOpVJBi7ugK5qVNgeuYjGNQxrrnoM/5+TI/BPw==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.41.0.tgz", + "integrity": "sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.39.1", - "@typescript-eslint/tsconfig-utils": "8.39.1", - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/visitor-keys": "8.39.1", + "@typescript-eslint/project-service": "8.41.0", + "@typescript-eslint/tsconfig-utils": "8.41.0", + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/visitor-keys": "8.41.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -4548,16 +4548,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.39.1.tgz", - "integrity": "sha512-VF5tZ2XnUSTuiqZFXCZfZs1cgkdd3O/sSYmdo2EpSyDlC86UM/8YytTmKnehOW3TGAlivqTDT6bS87B/GQ/jyg==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.41.0.tgz", + "integrity": "sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.39.1", - "@typescript-eslint/types": "8.39.1", - "@typescript-eslint/typescript-estree": "8.39.1" + "@typescript-eslint/scope-manager": "8.41.0", + "@typescript-eslint/types": "8.41.0", + "@typescript-eslint/typescript-estree": "8.41.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4572,13 +4572,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.39.1.tgz", - "integrity": "sha512-W8FQi6kEh2e8zVhQ0eeRnxdvIoOkAp/CPAahcNio6nO9dsIwb9b34z90KOlheoyuVf6LSOEdjlkxSkapNEc+4A==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.41.0.tgz", + "integrity": "sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.39.1", + "@typescript-eslint/types": "8.41.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -5161,9 +5161,9 @@ "license": "MIT" }, "node_modules/bowser": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.0.tgz", - "integrity": "sha512-HcOcTudTeEWgbHh0Y1Tyb6fdeR71m4b/QACf0D4KswGTsNeIJQmg38mRENZPAYPZvGFN3fk3604XbQEPdxXdKg==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", + "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==", "license": "MIT" }, "node_modules/brace-expansion": { @@ -5197,9 +5197,9 @@ "license": "ISC" }, "node_modules/browserslist": { - "version": "4.25.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.2.tgz", - "integrity": "sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==", + "version": "4.25.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.3.tgz", + "integrity": "sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==", "dev": true, "funding": [ { @@ -5217,8 +5217,8 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001733", - "electron-to-chromium": "^1.5.199", + "caniuse-lite": "^1.0.30001735", + "electron-to-chromium": "^1.5.204", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.3" }, @@ -5427,9 +5427,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001735", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz", - "integrity": "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==", + "version": "1.0.30001737", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001737.tgz", + "integrity": "sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==", "dev": true, "funding": [ { @@ -5965,9 +5965,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.203", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.203.tgz", - "integrity": "sha512-uz4i0vLhfm6dLZWbz/iH88KNDV+ivj5+2SA+utpgjKaj9Q0iDLuwk6Idhe9BTxciHudyx6IvTvijhkPvFGUQ0g==", + "version": "1.5.209", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.209.tgz", + "integrity": "sha512-Xoz0uMrim9ZETCQt8UgM5FxQF9+imA7PBpokoGcZloA1uw2LeHzTlip5cb5KOAsXZLjh/moN2vReN3ZjJmjI9A==", "dev": true, "license": "ISC" }, @@ -6467,9 +6467,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "funding": [ { "type": "github", @@ -11439,16 +11439,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.39.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.39.1.tgz", - "integrity": "sha512-GDUv6/NDYngUlNvwaHM1RamYftxf782IyEDbdj3SeaIHHv8fNQVRC++fITT7kUJV/5rIA/tkoRSSskt6osEfqg==", + "version": "8.41.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.41.0.tgz", + "integrity": "sha512-n66rzs5OBXW3SFSnZHr2T685q1i4ODm2nulFJhMZBotaTavsS8TrI3d7bDlRSs9yWo7HmyWrN9qDu14Qv7Y0Dw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.39.1", - "@typescript-eslint/parser": "8.39.1", - "@typescript-eslint/typescript-estree": "8.39.1", - "@typescript-eslint/utils": "8.39.1" + "@typescript-eslint/eslint-plugin": "8.41.0", + "@typescript-eslint/parser": "8.41.0", + "@typescript-eslint/typescript-estree": "8.41.0", + "@typescript-eslint/utils": "8.41.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/package.json b/package.json index 012f1c92..4e751f98 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,8 @@ "@eslint/js": "^9.9.0", "@hapi/boom": "^10.0.1", "@types/eslint__js": "^8.42.3", - "@types/jest": "^29.5.13", - "@types/node": "^20.16.1", + "@types/jest": "^29.5.14", + "@types/node": "^20.19.11", "axios-mock-adapter": "^2.1.0", "bluebird": "^3.5.3", "eslint": "^8.57.0", @@ -48,7 +48,7 @@ "mocha": "^10.7.0", "node-gyp": "^9.3.1", "nyc": "^17.1.0", - "ts-jest": "^29.2.5", + "ts-jest": "^29.4.1", "typescript": "^5.9.2", "typescript-eslint": "^8.2.0" }, diff --git a/tsconfig.json b/tsconfig.json index c9e6c6fe..968cd86d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,8 +6,8 @@ "noImplicitThis": true, "strictNullChecks": true, "baseUrl": ".", - "types": ["./node_modules/@types/node"], - "typeRoots": ["."], + "types": ["jest", "node"], + "typeRoots": ["./node_modules/@types"], "noEmit": true, "forceConsistentCasingInFileNames": true, "strictFunctionTypes": true