diff --git a/firestore.indexes.json b/firestore.indexes.json
index 427795d41..724872329 100644
--- a/firestore.indexes.json
+++ b/firestore.indexes.json
@@ -18,6 +18,40 @@
}
]
},
+ {
+ "collectionGroup": "publishedTestimony",
+ "queryScope": "COLLECTION_GROUP",
+ "fields": [
+ {
+ "fieldPath": "billId",
+ "order": "ASCENDING"
+ },
+ {
+ "fieldPath": "vector_embedding",
+ "vectorConfig": {
+ "dimension": 3072,
+ "flat": {}
+ }
+ }
+ ]
+ },
+ {
+ "collectionGroup": "publishedTestimony",
+ "queryScope": "COLLECTION_GROUP",
+ "fields": [
+ {
+ "fieldPath": "ballotQuestionId",
+ "order": "ASCENDING"
+ },
+ {
+ "fieldPath": "vector_embedding",
+ "vectorConfig": {
+ "dimension": 3072,
+ "flat": {}
+ }
+ }
+ ]
+ },
{
"collectionGroup": "archivedTestimony",
"queryScope": "COLLECTION",
@@ -923,6 +957,45 @@
"queryScope": "COLLECTION_GROUP"
}
]
+ },
+ {
+ "collectionGroup": "bills",
+ "fieldPath": "vector_embedding",
+ "indexes": [
+ {
+ "queryScope": "COLLECTION_GROUP",
+ "vectorConfig": {
+ "dimension": 3072,
+ "flat": {}
+ }
+ }
+ ]
+ },
+ {
+ "collectionGroup": "publishedTestimony",
+ "fieldPath": "vector_embedding",
+ "indexes": [
+ {
+ "queryScope": "COLLECTION_GROUP",
+ "vectorConfig": {
+ "dimension": 3072,
+ "flat": {}
+ }
+ }
+ ]
+ },
+ {
+ "collectionGroup": "ballotQuestions",
+ "fieldPath": "vector_embedding",
+ "indexes": [
+ {
+ "queryScope": "COLLECTION",
+ "vectorConfig": {
+ "dimension": 3072,
+ "flat": {}
+ }
+ }
+ ]
}
]
}
diff --git a/functions/package.json b/functions/package.json
index d459dda2d..b90bc358a 100644
--- a/functions/package.json
+++ b/functions/package.json
@@ -18,7 +18,8 @@
"assemblyai": "^4.9.0",
"axios": "^0.25.0",
"date-fns": "^2.30.0",
- "firebase-admin": "^11.11.1",
+ "firebase-admin": "^12.0.0",
+ "@google-cloud/aiplatform": "^3.9.0",
"firebase-functions": "^5.1.1",
"fluent-ffmpeg": "^2.1.3",
"fuse.js": "6.5.3",
diff --git a/functions/src/ballotQuestions/vector.ts b/functions/src/ballotQuestions/vector.ts
new file mode 100644
index 000000000..5c7b2019f
--- /dev/null
+++ b/functions/src/ballotQuestions/vector.ts
@@ -0,0 +1,8 @@
+import { createVectorIndexer } from "../search/createVectorIndexer"
+
+export const syncBallotQuestionToVectorIndex = createVectorIndexer({
+ documentTrigger: "ballotQuestions/{id}",
+ textFields: ["title", "description", "fullSummary"],
+ vectorField: "vector_embedding",
+ titleField: "title"
+})
diff --git a/functions/src/bills/vector.ts b/functions/src/bills/vector.ts
new file mode 100644
index 000000000..cdc28a723
--- /dev/null
+++ b/functions/src/bills/vector.ts
@@ -0,0 +1,8 @@
+import { createVectorIndexer } from "../search/createVectorIndexer"
+
+export const syncBillToVectorIndex = createVectorIndexer({
+ documentTrigger: "generalCourts/{court}/bills/{id}",
+ textFields: ["content.Title", "content.DocumentText"],
+ vectorField: "vector_embedding",
+ titleField: "content.Title"
+})
diff --git a/functions/src/search/createVectorIndexer.ts b/functions/src/search/createVectorIndexer.ts
new file mode 100644
index 000000000..ff3e0457b
--- /dev/null
+++ b/functions/src/search/createVectorIndexer.ts
@@ -0,0 +1,98 @@
+import { runWith } from "firebase-functions"
+import * as admin from "firebase-admin"
+import { PredictionServiceClient, helpers } from "@google-cloud/aiplatform"
+import hash from "object-hash"
+
+export interface VectorIndexerConfig {
+ documentTrigger: string
+ textFields: string[] // Fields to combine for the embedding
+ vectorField: string // Destination field for the embedding (e.g., 'vector_embedding')
+ titleField?: string // Optional field to use as the title for prefixing
+}
+
+export function createVectorIndexer(config: VectorIndexerConfig) {
+ const location = "us-central1"
+ const publisher = "google"
+ const model = "gemini-embedding-2"
+
+ return runWith({
+ timeoutSeconds: 60,
+ memory: "512MB",
+ secrets: ["GOOGLE_APPLICATION_CREDENTIALS"] // If needed, though usually automatic on GCP
+ })
+ .firestore.document(config.documentTrigger)
+ .onWrite(async change => {
+ const data = change.after.exists ? change.after.data() : null
+ if (!data) return // Deleted
+
+ // Extract text to embed
+ const textToEmbed = config.textFields
+ .map(field => {
+ const parts = field.split(".")
+ let val: any = data
+ for (const part of parts) val = val?.[part]
+ return val
+ })
+ .filter(Boolean)
+ .join("\n\n")
+
+ if (!textToEmbed) return
+
+ // Extract title for gemini-embedding-2 prefixing
+ let title = "none"
+ if (config.titleField) {
+ const parts = config.titleField.split(".")
+ let val: any = data
+ for (const part of parts) val = val?.[part]
+ title = val || "none"
+ }
+
+ // Check if text has changed to avoid redundant API calls
+ const textHash = hash({ textToEmbed, title })
+ const previousHash = (
+ change.before.exists ? change.before.data() : null
+ )?.[`${config.vectorField}_hash`]
+
+ if (textHash === previousHash && data[config.vectorField]) {
+ return // Nothing changed
+ }
+
+ // Initialize Vertex AI client
+ const project = admin.app().options.projectId
+ const endpoint = `projects/${project}/locations/${location}/publishers/${publisher}/models/${model}`
+ const client = new PredictionServiceClient({
+ apiEndpoint: `${location}-aiplatform.googleapis.com`
+ })
+
+ // Get embedding with multimodal/task prefix
+ const formattedText = `title: ${title} | text: ${textToEmbed}`
+ const instance = helpers.toValue({ content: formattedText })!
+ const responseArray = (await client.predict({
+ endpoint,
+ instances: [instance]
+ })) as any
+ const response = responseArray[0]
+
+ if (!response.predictions || response.predictions.length === 0) {
+ throw new Error("No predictions returned from Vertex AI")
+ }
+
+ const prediction = helpers.fromValue(
+ response.predictions[0] as any
+ ) as any
+ const embedding =
+ prediction.embeddings?.values || prediction.embedding?.values
+
+ if (!embedding) {
+ throw new Error(
+ `Unexpected prediction format: ${JSON.stringify(prediction)}`
+ )
+ }
+
+ // Update document
+ await change.after.ref.update({
+ [config.vectorField]: embedding,
+ [`${config.vectorField}_hash`]: textHash // Store hash to track changes
+ })
+ })
+}
diff --git a/functions/src/testimony/vector.ts b/functions/src/testimony/vector.ts
new file mode 100644
index 000000000..52d49c431
--- /dev/null
+++ b/functions/src/testimony/vector.ts
@@ -0,0 +1,8 @@
+import { createVectorIndexer } from "../search/createVectorIndexer"
+
+export const syncTestimonyToVectorIndex = createVectorIndexer({
+ documentTrigger: "users/{uid}/publishedTestimony/{id}",
+ textFields: ["content"],
+ vectorField: "vector_embedding",
+ titleField: "billTitle"
+})
diff --git a/functions/yarn.lock b/functions/yarn.lock
index 6289a53f7..e507c7736 100644
--- a/functions/yarn.lock
+++ b/functions/yarn.lock
@@ -526,77 +526,89 @@
resolved "https://registry.yarnpkg.com/@electric-sql/pglite/-/pglite-0.2.17.tgz#23d53a9b7ddd1590d59d7c701aba23b037f08108"
integrity sha512-qEpKRT2oUaWDH6tjRxLHjdzMqRUGYDnGZlKrnL4dJ77JVMcP2Hpo3NYnOSPKdZdeec57B6QPprCUFg0picx5Pw==
-"@fastify/busboy@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-1.2.1.tgz#9c6db24a55f8b803b5222753b24fe3aea2ba9ca3"
- integrity sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q==
- dependencies:
- text-decoding "^1.0.0"
+"@fastify/busboy@^3.0.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-3.2.0.tgz#13ed8212f3b9ba697611529d15347f8528058cea"
+ integrity sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==
-"@firebase/app-types@0.9.0":
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.9.0.tgz#35b5c568341e9e263b29b3d2ba0e9cfc9ec7f01e"
- integrity sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==
+"@firebase/app-check-interop-types@0.3.2":
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz#455b6562c7a3de3ef75ea51f72dfec5829ad6997"
+ integrity sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==
-"@firebase/auth-interop-types@0.2.1":
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz#78884f24fa539e34a06c03612c75f222fcc33742"
- integrity sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==
+"@firebase/app-types@0.9.2":
+ version "0.9.2"
+ resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.9.2.tgz#8cbcceba784753a7c0066a4809bc22f93adee080"
+ integrity sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==
+
+"@firebase/auth-interop-types@0.2.3":
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz#927f1f2139a680b55fef0bddbff2c982b08587e8"
+ integrity sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==
-"@firebase/component@0.6.4":
- version "0.6.4"
- resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.6.4.tgz#8981a6818bd730a7554aa5e0516ffc9b1ae3f33d"
- integrity sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==
+"@firebase/component@0.6.9":
+ version "0.6.9"
+ resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.6.9.tgz#4248cfeab222245ada0d7f78ece95a87574532b4"
+ integrity sha512-gm8EUEJE/fEac86AvHn8Z/QW8BvR56TBw3hMW0O838J/1mThYQXAIQBgUv75EqlCZfdawpWLrKt1uXvp9ciK3Q==
dependencies:
- "@firebase/util" "1.9.3"
+ "@firebase/util" "1.10.0"
tslib "^2.1.0"
-"@firebase/database-compat@^0.3.4":
- version "0.3.4"
- resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-0.3.4.tgz#4e57932f7a5ba761cd5ac946ab6b6ab3f660522c"
- integrity sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg==
- dependencies:
- "@firebase/component" "0.6.4"
- "@firebase/database" "0.14.4"
- "@firebase/database-types" "0.10.4"
- "@firebase/logger" "0.4.0"
- "@firebase/util" "1.9.3"
+"@firebase/database-compat@1.0.8":
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-1.0.8.tgz#69ab03d00e27a89f65486896ea219094aa38c27f"
+ integrity sha512-OpeWZoPE3sGIRPBKYnW9wLad25RaWbGyk7fFQe4xnJQKRzlynWeFBSRRAoLE2Old01WXwskUiucNqUUVlFsceg==
+ dependencies:
+ "@firebase/component" "0.6.9"
+ "@firebase/database" "1.0.8"
+ "@firebase/database-types" "1.0.5"
+ "@firebase/logger" "0.4.2"
+ "@firebase/util" "1.10.0"
tslib "^2.1.0"
-"@firebase/database-types@0.10.4", "@firebase/database-types@^0.10.4":
- version "0.10.4"
- resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.10.4.tgz#47ba81113512dab637abace61cfb65f63d645ca7"
- integrity sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ==
+"@firebase/database-types@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-1.0.5.tgz#2d923f42e3d9911b9eec537ed8b5ecaa0ce95c37"
+ integrity sha512-fTlqCNwFYyq/C6W7AJ5OCuq5CeZuBEsEwptnVxlNPkWCo5cTTyukzAHRSO/jaQcItz33FfYrrFk1SJofcu2AaQ==
dependencies:
- "@firebase/app-types" "0.9.0"
- "@firebase/util" "1.9.3"
+ "@firebase/app-types" "0.9.2"
+ "@firebase/util" "1.10.0"
-"@firebase/database@0.14.4":
- version "0.14.4"
- resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.14.4.tgz#9e7435a16a540ddfdeb5d99d45618e6ede179aa6"
- integrity sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ==
- dependencies:
- "@firebase/auth-interop-types" "0.2.1"
- "@firebase/component" "0.6.4"
- "@firebase/logger" "0.4.0"
- "@firebase/util" "1.9.3"
+"@firebase/database@1.0.8":
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/@firebase/database/-/database-1.0.8.tgz#01bb0d0cb5653ae6a6641523f6f085b4c1be9c2f"
+ integrity sha512-dzXALZeBI1U5TXt6619cv0+tgEhJiwlUtQ55WNZY7vGAjv7Q1QioV969iYwt1AQQ0ovHnEW0YW9TiBfefLvErg==
+ dependencies:
+ "@firebase/app-check-interop-types" "0.3.2"
+ "@firebase/auth-interop-types" "0.2.3"
+ "@firebase/component" "0.6.9"
+ "@firebase/logger" "0.4.2"
+ "@firebase/util" "1.10.0"
faye-websocket "0.11.4"
tslib "^2.1.0"
-"@firebase/logger@0.4.0":
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.4.0.tgz#15ecc03c452525f9d47318ad9491b81d1810f113"
- integrity sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==
+"@firebase/logger@0.4.2":
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.4.2.tgz#74dfcfeedee810deb8a7080d5b7eba56aa16ffa2"
+ integrity sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==
dependencies:
tslib "^2.1.0"
-"@firebase/util@1.9.3":
- version "1.9.3"
- resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.9.3.tgz#45458dd5cd02d90e55c656e84adf6f3decf4b7ed"
- integrity sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==
+"@firebase/util@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.10.0.tgz#9ec8ab54da82bfc31baff0c43cb281998cbeddab"
+ integrity sha512-xKtx4A668icQqoANRxyDLBLz51TAbDP9KRfpbKGxiCAW346d0BeJe5vN6/hKxxmWwnZ0mautyv39JxviwwQMOQ==
dependencies:
tslib "^2.1.0"
+"@google-cloud/aiplatform@^3.9.0":
+ version "3.35.0"
+ resolved "https://registry.yarnpkg.com/@google-cloud/aiplatform/-/aiplatform-3.35.0.tgz#7b9dc00656be589106067fcce955ad660904d599"
+ integrity sha512-Eo+ckr1KbTxAOew9P+MeeR0aQXeW5PeOzrSM1JyGny/SGKejwX/RcGWSFpeapnlegTfI9N9xJeUeo3M+XBOeFg==
+ dependencies:
+ google-gax "^4.0.3"
+ protobuf.js "^1.1.2"
+
"@google-cloud/cloud-sql-connector@^1.3.3":
version "1.8.3"
resolved "https://registry.yarnpkg.com/@google-cloud/cloud-sql-connector/-/cloud-sql-connector-1.8.3.tgz#2bab57161bda7ea9507e893b8281a2f43bb6f8bf"
@@ -617,23 +629,16 @@
google-gax "^2.24.1"
protobufjs "^6.8.6"
-"@google-cloud/firestore@^6.8.0":
- version "6.8.0"
- resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-6.8.0.tgz#d8c852844c381afaf62592796606c10e178400b5"
- integrity sha512-JRpk06SmZXLGz0pNx1x7yU3YhkUXheKgH5hbDZ4kMsdhtfV5qPLJLRI4wv69K0cZorIk+zTMOwptue7hizo0eA==
+"@google-cloud/firestore@^7.7.0":
+ version "7.11.6"
+ resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-7.11.6.tgz#0a2b26e215aa4f903267f82370450753b84db16a"
+ integrity sha512-EW/O8ktzwLfyWBOsNuhRoMi8lrC3clHM5LVFhGvO1HCsLozCOOXRAlHrYBoE6HL42Sc8yYMuCb2XqcnJ4OOEpw==
dependencies:
+ "@opentelemetry/api" "^1.3.0"
fast-deep-equal "^3.1.1"
functional-red-black-tree "^1.0.1"
- google-gax "^3.5.7"
- protobufjs "^7.2.5"
-
-"@google-cloud/paginator@^3.0.7":
- version "3.0.7"
- resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz"
- integrity sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==
- dependencies:
- arrify "^2.0.0"
- extend "^3.0.2"
+ google-gax "^4.3.3"
+ protobufjs "^7.2.6"
"@google-cloud/paginator@^4.0.0":
version "4.0.1"
@@ -671,21 +676,16 @@
resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-4.0.0.tgz#d600e0433daf51b88c1fa95ac7f02e38e80a07be"
integrity sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==
+"@google-cloud/promisify@<4.1.0", "@google-cloud/promisify@~4.0.0":
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-4.0.0.tgz#a906e533ebdd0f754dca2509933334ce58b8c8b1"
+ integrity sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==
+
"@google-cloud/promisify@^2.0.0":
version "2.0.4"
resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-2.0.4.tgz"
integrity sha512-j8yRSSqswWi1QqUGKVEKOG03Q7qOoZP6/h2zN2YO+F5h2+DHU0bSrHCK9Y7lo2DI9fBd8qGAw795sf+3Jva4yA==
-"@google-cloud/promisify@^3.0.0":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-3.0.1.tgz#8d724fb280f47d1ff99953aee0c1669b25238c2e"
- integrity sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==
-
-"@google-cloud/promisify@~4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-4.0.0.tgz#a906e533ebdd0f754dca2509933334ce58b8c8b1"
- integrity sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==
-
"@google-cloud/pubsub@^3.0.1":
version "3.7.5"
resolved "https://registry.npmjs.org/@google-cloud/pubsub/-/pubsub-3.7.5.tgz"
@@ -728,28 +728,25 @@
lodash.snakecase "^4.1.1"
p-defer "^3.0.0"
-"@google-cloud/storage@^6.9.5":
- version "6.12.0"
- resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-6.12.0.tgz#a5d3093cc075252dca5bd19a3cfda406ad3a9de1"
- integrity sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw==
+"@google-cloud/storage@^7.7.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-7.19.0.tgz#34fb7cc4eacede5a2f1f0d6cefa0c70a22078c5b"
+ integrity sha512-n2FjE7NAOYyshogdc7KQOl/VZb4sneqPjWouSyia9CMDdMhRX5+RIbqalNmC7LOLzuLAN89VlF2HvG8na9G+zQ==
dependencies:
- "@google-cloud/paginator" "^3.0.7"
- "@google-cloud/projectify" "^3.0.0"
- "@google-cloud/promisify" "^3.0.0"
+ "@google-cloud/paginator" "^5.0.0"
+ "@google-cloud/projectify" "^4.0.0"
+ "@google-cloud/promisify" "<4.1.0"
abort-controller "^3.0.0"
async-retry "^1.3.3"
- compressible "^2.0.12"
- duplexify "^4.0.0"
- ent "^2.2.0"
- extend "^3.0.2"
- fast-xml-parser "^4.2.2"
- gaxios "^5.0.0"
- google-auth-library "^8.0.1"
+ duplexify "^4.1.3"
+ fast-xml-parser "^5.3.4"
+ gaxios "^6.0.2"
+ google-auth-library "^9.6.3"
+ html-entities "^2.5.2"
mime "^3.0.0"
- mime-types "^2.0.8"
p-limit "^3.0.1"
- retry-request "^5.0.0"
- teeny-request "^8.0.0"
+ retry-request "^7.0.0"
+ teeny-request "^9.0.0"
uuid "^8.0.0"
"@googleapis/sqladmin@^31.0.0":
@@ -1120,6 +1117,11 @@
dependencies:
lodash "^4.17.21"
+"@nodable/entities@^2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@nodable/entities/-/entities-2.1.0.tgz#f543e5c6446720d4cf9e498a83019dd159973bc2"
+ integrity sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==
+
"@npmcli/agent@^2.0.0":
version "2.2.2"
resolved "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz"
@@ -1138,6 +1140,11 @@
dependencies:
semver "^7.3.5"
+"@opentelemetry/api@^1.3.0":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.1.tgz#c1b0346de336ba55af2d5a7970882037baedec05"
+ integrity sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==
+
"@opentelemetry/api@^1.6.0":
version "1.7.0"
resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.7.0.tgz"
@@ -1199,6 +1206,11 @@
resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz"
integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
+"@protobufjs/codegen@^2.0.5":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.5.tgz#d9315ad7cf3f30aac70bda3c068443dc6f143659"
+ integrity sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==
+
"@protobufjs/eventemitter@^1.1.0":
version "1.1.0"
resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz"
@@ -1222,6 +1234,11 @@
resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz"
integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==
+"@protobufjs/inquire@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.1.tgz#6cb936f4ac50965230af1e9d0bbfd57ea3675aa4"
+ integrity sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew==
+
"@protobufjs/path@^1.1.2":
version "1.1.2"
resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz"
@@ -1237,6 +1254,11 @@
resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz"
integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
+"@protobufjs/utf8@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.1.tgz#eaee5900122c110a3dbcb728c0597014a2621774"
+ integrity sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==
+
"@sinclair/typebox@^0.27.8":
version "0.27.10"
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.10.tgz#beefe675f1853f73676aecc915b2bd2ac98c4fc6"
@@ -1348,16 +1370,6 @@
"@types/range-parser" "*"
"@types/send" "*"
-"@types/express-serve-static-core@^4.17.33":
- version "4.19.6"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267"
- integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==
- dependencies:
- "@types/node" "*"
- "@types/qs" "*"
- "@types/range-parser" "*"
- "@types/send" "*"
-
"@types/express@4.17.3":
version "4.17.3"
resolved "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz"
@@ -1367,16 +1379,6 @@
"@types/express-serve-static-core" "*"
"@types/serve-static" "*"
-"@types/express@^4.17.20":
- version "4.17.23"
- resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.23.tgz#35af3193c640bfd4d7fe77191cd0ed411a433bef"
- integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==
- dependencies:
- "@types/body-parser" "*"
- "@types/express-serve-static-core" "^4.17.33"
- "@types/qs" "*"
- "@types/serve-static" "*"
-
"@types/fluent-ffmpeg@^2.1.27":
version "2.1.27"
resolved "https://registry.npmjs.org/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.27.tgz"
@@ -1513,6 +1515,13 @@
dependencies:
undici-types "~5.26.4"
+"@types/node@^22.0.1":
+ version "22.19.19"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.19.tgz#3124bf26ded54168b768138321fef99b420c6112"
+ integrity sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==
+ dependencies:
+ undici-types "~6.21.0"
+
"@types/object-hash@^2.2.1":
version "2.2.1"
resolved "https://registry.npmjs.org/@types/object-hash/-/object-hash-2.2.1.tgz"
@@ -2180,7 +2189,7 @@ call-bind@^1.0.0:
get-intrinsic "^1.2.1"
set-function-length "^1.1.1"
-call-bound@^1.0.2, call-bound@^1.0.3:
+call-bound@^1.0.2:
version "1.0.4"
resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz"
integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
@@ -2466,7 +2475,7 @@ compress-commons@^6.0.2:
normalize-path "^3.0.0"
readable-stream "^4.0.0"
-compressible@^2.0.12, compressible@~2.0.16:
+compressible@~2.0.16:
version "2.0.18"
resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz"
integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
@@ -2812,7 +2821,7 @@ dunder-proto@^1.0.1:
es-errors "^1.3.0"
gopd "^1.2.0"
-duplexify@^4.0.0:
+duplexify@^4.0.0, duplexify@^4.1.3:
version "4.1.3"
resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz"
integrity sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==
@@ -2893,16 +2902,6 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1:
dependencies:
once "^1.4.0"
-ent@^2.2.0:
- version "2.2.2"
- resolved "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz"
- integrity sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==
- dependencies:
- call-bound "^1.0.3"
- es-errors "^1.3.0"
- punycode "^1.4.1"
- safe-regex-test "^1.1.0"
-
entities@^4.5.0:
version "4.5.0"
resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz"
@@ -3199,6 +3198,11 @@ extend@^3.0.2:
resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+farmhash-modern@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/farmhash-modern/-/farmhash-modern-1.1.0.tgz#c36b34ad196290d57b0b482dc89e637d0b59835f"
+ integrity sha512-6ypT4XfgqJk/F3Yuv4SX26I3doUjt0GTG4a+JgWxXQpxXzTBq8fPUeGHfcYMMDPHJHm3yPOSjaeBwBGAHWXCdA==
+
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
@@ -3229,12 +3233,24 @@ fast-uri@^3.0.1:
resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748"
integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==
-fast-xml-parser@^4.2.2:
- version "4.5.3"
- resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz#c54d6b35aa0f23dc1ea60b6c884340c006dc6efb"
- integrity sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==
+fast-xml-builder@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz#abd2363145a7625d9789ad96da375fabe3cff28c"
+ integrity sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==
+ dependencies:
+ path-expression-matcher "^1.5.0"
+ xml-naming "^0.1.0"
+
+fast-xml-parser@^5.3.4:
+ version "5.8.0"
+ resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.8.0.tgz#64d71f0f8d4bf23621dffd762aef7e98c1884fc1"
+ integrity sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg==
dependencies:
- strnum "^1.1.1"
+ "@nodable/entities" "^2.1.0"
+ fast-xml-builder "^1.2.0"
+ path-expression-matcher "^1.5.0"
+ strnum "^2.3.0"
+ xml-naming "^0.1.0"
faye-websocket@0.11.4:
version "0.11.4"
@@ -3316,22 +3332,23 @@ find-up@^4.0.0, find-up@^4.1.0:
locate-path "^5.0.0"
path-exists "^4.0.0"
-firebase-admin@^11.11.1:
- version "11.11.1"
- resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-11.11.1.tgz#6712923de70d218c9f514d73005d976d03339605"
- integrity sha512-UyEbq+3u6jWzCYbUntv/HuJiTixwh36G1R9j0v71mSvGAx/YZEWEW7uSGLYxBYE6ckVRQoKMr40PYUEzrm/4dg==
+firebase-admin@^12.0.0:
+ version "12.7.0"
+ resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-12.7.0.tgz#586c9ed852c4bb2d4d72f0d52c1c48a2b6dee793"
+ integrity sha512-raFIrOyTqREbyXsNkSHyciQLfv8AUZazehPaQS1lZBSCDYW74FYXU0nQZa3qHI4K+hawohlDbywZ4+qce9YNxA==
dependencies:
- "@fastify/busboy" "^1.2.1"
- "@firebase/database-compat" "^0.3.4"
- "@firebase/database-types" "^0.10.4"
- "@types/node" ">=12.12.47"
+ "@fastify/busboy" "^3.0.0"
+ "@firebase/database-compat" "1.0.8"
+ "@firebase/database-types" "1.0.5"
+ "@types/node" "^22.0.1"
+ farmhash-modern "^1.1.0"
jsonwebtoken "^9.0.0"
- jwks-rsa "^3.0.1"
+ jwks-rsa "^3.1.0"
node-forge "^1.3.1"
- uuid "^9.0.0"
+ uuid "^10.0.0"
optionalDependencies:
- "@google-cloud/firestore" "^6.8.0"
- "@google-cloud/storage" "^6.9.5"
+ "@google-cloud/firestore" "^7.7.0"
+ "@google-cloud/storage" "^7.7.0"
firebase-functions-test@^0.3.3:
version "0.3.3"
@@ -3565,7 +3582,7 @@ gaxios@^5.0.0, gaxios@^5.0.1:
is-stream "^2.0.0"
node-fetch "^2.6.9"
-gaxios@^6.0.0, gaxios@^6.1.1, gaxios@^6.7.0:
+gaxios@^6.0.0, gaxios@^6.0.2, gaxios@^6.1.1, gaxios@^6.7.0:
version "6.7.1"
resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-6.7.1.tgz#ebd9f7093ede3ba502685e73390248bb5b7f71fb"
integrity sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==
@@ -3768,7 +3785,7 @@ google-auth-library@^7.14.0:
jws "^4.0.0"
lru-cache "^6.0.0"
-google-auth-library@^8.0.1, google-auth-library@^8.0.2:
+google-auth-library@^8.0.2:
version "8.9.0"
resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz"
integrity sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==
@@ -3783,7 +3800,7 @@ google-auth-library@^8.0.1, google-auth-library@^8.0.2:
jws "^4.0.0"
lru-cache "^6.0.0"
-google-auth-library@^9.11.0, google-auth-library@^9.3.0:
+google-auth-library@^9.11.0, google-auth-library@^9.3.0, google-auth-library@^9.6.3:
version "9.15.1"
resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.15.1.tgz#0c5d84ed1890b2375f1cd74f03ac7b806b392928"
integrity sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==
@@ -3814,7 +3831,7 @@ google-gax@^2.24.1:
protobufjs "6.11.3"
retry-request "^4.0.0"
-google-gax@^3.5.7, google-gax@^3.6.1:
+google-gax@^3.6.1:
version "3.6.1"
resolved "https://registry.npmjs.org/google-gax/-/google-gax-3.6.1.tgz"
integrity sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w==
@@ -3835,7 +3852,7 @@ google-gax@^3.5.7, google-gax@^3.6.1:
protobufjs-cli "1.1.1"
retry-request "^5.0.0"
-google-gax@^4.3.3:
+google-gax@^4.0.3, google-gax@^4.3.3:
version "4.6.1"
resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-4.6.1.tgz#57f8e3d893d4c708a71167cdcf47eb3afab95929"
integrity sha512-V6eky/xz2mcKfAd1Ioxyd6nmA61gao3n01C+YeuIwu3vzM9EDR6wcVzMSIbLMDXWeoi9SHYctXuKYC5uJUT3eQ==
@@ -4007,6 +4024,11 @@ html-encoding-sniffer@^4.0.0:
dependencies:
whatwg-encoding "^3.1.1"
+html-entities@^2.5.2:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.6.0.tgz#7c64f1ea3b36818ccae3d3fb48b6974208e984f8"
+ integrity sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==
+
html-escaper@^2.0.0:
version "2.0.2"
resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz"
@@ -4312,16 +4334,6 @@ is-promise@^4.0.0:
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3"
integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==
-is-regex@^1.2.1:
- version "1.2.1"
- resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz"
- integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==
- dependencies:
- call-bound "^1.0.2"
- gopd "^1.2.0"
- has-tostringtag "^1.0.2"
- hasown "^2.0.2"
-
is-stream-ended@^0.1.4:
version "0.1.4"
resolved "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz"
@@ -5005,12 +5017,11 @@ jwa@^2.0.0:
ecdsa-sig-formatter "1.0.11"
safe-buffer "^5.0.1"
-jwks-rsa@^3.0.1:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/jwks-rsa/-/jwks-rsa-3.2.0.tgz#132bc8bfa7b03928a273bbc93486f70226449e04"
- integrity sha512-PwchfHcQK/5PSydeKCs1ylNym0w/SSv8a62DgHJ//7x2ZclCoinlsjAfDxAAbpoTPybOum/Jgy+vkvMmKz89Ww==
+jwks-rsa@^3.1.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/jwks-rsa/-/jwks-rsa-3.2.2.tgz#f6d528306befacdbc62c8c0272761faac55ffbb3"
+ integrity sha512-BqTyEDV+lS8F2trk3A+qJnxV5Q9EqKCBJOPti3W97r7qTympCZjb7h2X6f2kc+0K3rsSTY1/6YG2eaXKoj497w==
dependencies:
- "@types/express" "^4.17.20"
"@types/jsonwebtoken" "^9.0.4"
debug "^4.3.4"
jose "^4.15.4"
@@ -5225,6 +5236,11 @@ long@^5.0.0:
resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz"
integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==
+long@~1.1.2:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/long/-/long-1.1.5.tgz#b5c2c10a3d83ee0ec0aaffb3e4e711d01f607e9a"
+ integrity sha512-TU6nAF5SdasnTr28c7e74P4Crbn9o3/zwo1pM22Wvg2i2vlZ4Eelxwu4QT7j21z0sDBlJDEnEZjXTZg2J8WJrg==
+
lru-cache@6.0.0, lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
@@ -5396,7 +5412,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34:
+mime-types@^2.1.12, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.35"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
@@ -5931,6 +5947,11 @@ path-exists@^4.0.0:
resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+path-expression-matcher@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz#3b98545dc88ffebb593e2d8458d0929da9275f4a"
+ integrity sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==
+
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
@@ -6166,6 +6187,13 @@ proto3-json-serializer@^2.0.2:
dependencies:
protobufjs "^7.2.5"
+protobuf.js@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/protobuf.js/-/protobuf.js-1.1.2.tgz#85870a1734a06a2ef0074d876cd7fe0b2ea0cf26"
+ integrity sha512-USO7Xus/pzPw549M1TguiyoOrKEhm9VMXv+CkDufcjMC8Rd7EPbxeRQPEjCV8ua1tm0k7z9xHkogcxovZogWdA==
+ dependencies:
+ long "~1.1.2"
+
protobufjs-cli@1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz"
@@ -6274,6 +6302,24 @@ protobufjs@^7.2.4:
"@types/node" ">=13.7.0"
long "^5.0.0"
+protobufjs@^7.2.6:
+ version "7.5.8"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.8.tgz#51b153a06da6e47153a1aa6800cb1253bc502436"
+ integrity sha512-dvpCIeLPbXZS/Ete7yLaO7RenOdken2NHKykBXbsaGxZT0UTltcarBciw+A78SRQs9iMAAVpsYA+l8b1hTePIA==
+ dependencies:
+ "@protobufjs/aspromise" "^1.1.2"
+ "@protobufjs/base64" "^1.1.2"
+ "@protobufjs/codegen" "^2.0.5"
+ "@protobufjs/eventemitter" "^1.1.0"
+ "@protobufjs/fetch" "^1.1.0"
+ "@protobufjs/float" "^1.0.2"
+ "@protobufjs/inquire" "^1.1.1"
+ "@protobufjs/path" "^1.1.2"
+ "@protobufjs/pool" "^1.1.0"
+ "@protobufjs/utf8" "^1.1.1"
+ "@types/node" ">=13.7.0"
+ long "^5.0.0"
+
proxy-addr@~2.0.7:
version "2.0.7"
resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz"
@@ -6309,11 +6355,6 @@ pump@^3.0.0:
end-of-stream "^1.1.0"
once "^1.3.1"
-punycode@^1.4.1:
- version "1.4.1"
- resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
- integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
-
punycode@^2.1.0, punycode@^2.3.1:
version "2.3.1"
resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
@@ -6638,15 +6679,6 @@ safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.2.1,
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-safe-regex-test@^1.1.0:
- version "1.1.0"
- resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz"
- integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==
- dependencies:
- call-bound "^1.0.2"
- es-errors "^1.3.0"
- is-regex "^1.2.1"
-
safe-stable-stringify@^2.3.1:
version "2.4.3"
resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz"
@@ -6989,16 +7021,7 @@ string-length@^4.0.1:
char-regex "^1.0.2"
strip-ansi "^6.0.0"
-"string-width-cjs@npm:string-width@^4.2.0":
- version "4.2.3"
- resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
-
-string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
+"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -7035,14 +7058,7 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
- version "6.0.1"
- resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
- dependencies:
- ansi-regex "^5.0.1"
-
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -7076,10 +7092,10 @@ strip-json-comments@~2.0.1:
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
-strnum@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4"
- integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==
+strnum@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.3.0.tgz#81bfbfef53db8c3217ea62a98c026886ec4a2761"
+ integrity sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==
stubs@^3.0.0:
version "3.0.0"
@@ -7191,17 +7207,6 @@ tcp-port-used@^1.0.2:
debug "4.3.1"
is2 "^2.0.6"
-teeny-request@^8.0.0:
- version "8.0.3"
- resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-8.0.3.tgz#5cb9c471ef5e59f2fca8280dc3c5909595e6ca24"
- integrity sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==
- dependencies:
- http-proxy-agent "^5.0.0"
- https-proxy-agent "^5.0.0"
- node-fetch "^2.6.1"
- stream-events "^1.0.5"
- uuid "^9.0.0"
-
teeny-request@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-9.0.0.tgz#18140de2eb6595771b1b02203312dfad79a4716d"
@@ -7229,11 +7234,6 @@ text-decoder@^1.1.0:
dependencies:
b4a "^1.6.4"
-text-decoding@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/text-decoding/-/text-decoding-1.0.0.tgz"
- integrity sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA==
-
text-hex@1.0.x:
version "1.0.0"
resolved "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz"
@@ -7443,6 +7443,11 @@ undici-types@~5.26.4:
resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz"
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+undici-types@~6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb"
+ integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
+
unicode-emoji-modifier-base@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz#dbbd5b54ba30f287e2a8d5a249da6c0cef369459"
@@ -7557,6 +7562,11 @@ utils-merge@1.0.1:
resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
+uuid@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294"
+ integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==
+
uuid@^8.0.0, uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz"
@@ -7733,7 +7743,7 @@ wordwrap@^1.0.0:
resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"
integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -7751,15 +7761,6 @@ wrap-ansi@^6.0.1:
string-width "^4.1.0"
strip-ansi "^6.0.0"
-wrap-ansi@^7.0.0:
- version "7.0.0"
- resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
@@ -7812,6 +7813,11 @@ xml-name-validator@^5.0.0:
resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz"
integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==
+xml-naming@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/xml-naming/-/xml-naming-0.1.0.tgz#8ab7106c5b8d23caa2fabac1cadf17136379fbd8"
+ integrity sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==
+
xmlchars@^2.2.0:
version "2.2.0"
resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz"
diff --git a/mcp-server/.env.example b/mcp-server/.env.example
new file mode 100644
index 000000000..c6ca48631
--- /dev/null
+++ b/mcp-server/.env.example
@@ -0,0 +1,3 @@
+FIREBASE_PROJECT_ID=digital-testimony-dev
+GOOGLE_APPLICATION_CREDENTIALS=path/to/your/service-account-key.json
+PORT=3000
diff --git a/mcp-server/auth.ts b/mcp-server/auth.ts
new file mode 100644
index 000000000..942fc5197
--- /dev/null
+++ b/mcp-server/auth.ts
@@ -0,0 +1,55 @@
+import * as admin from "firebase-admin"
+import { Request, Response, NextFunction } from "express"
+
+export async function hybridAuthMiddleware(
+ req: Request,
+ res: Response,
+ next: NextFunction
+) {
+ const authHeader = req.headers.authorization
+
+ // Allow the initial SSE connection if configured via query param for ease of use in some clients
+ // but strictly prefer Bearer header.
+ const token = authHeader?.startsWith("Bearer ")
+ ? authHeader.split(" ")[1]
+ : (req.query.token as string)
+
+ if (!token) {
+ return res.status(401).json({ error: "Unauthorized: Missing token" })
+ }
+
+ try {
+ // 1. Try to verify as Firebase ID Token
+ try {
+ const decodedToken = await admin.auth().verifyIdToken(token)
+ ;(req as any).user = decodedToken
+ return next()
+ } catch (e) {
+ // Not a valid Firebase token, proceed to Agent Key check
+ }
+
+ // 2. Try to verify as Agent Key
+ // We use the token itself as the document ID in the agentKeys collection
+ const keyDoc = await admin
+ .firestore()
+ .collection("agentKeys")
+ .doc(token)
+ .get()
+
+ if (keyDoc.exists) {
+ const data = keyDoc.data()
+ if (data?.active === false) {
+ return res
+ .status(403)
+ .json({ error: "Forbidden: Agent key is inactive" })
+ }
+ ;(req as any).agent = data
+ return next()
+ }
+
+ return res.status(401).json({ error: "Unauthorized: Invalid token" })
+ } catch (error) {
+ console.error("Auth middleware error:", error)
+ return res.status(500).json({ error: "Internal Server Error" })
+ }
+}
diff --git a/mcp-server/implementation_plan.md b/mcp-server/implementation_plan.md
new file mode 100644
index 000000000..81fb52be8
--- /dev/null
+++ b/mcp-server/implementation_plan.md
@@ -0,0 +1,154 @@
+This document outlines the implementation for a Model Context Protocol (MCP) server enabling RAG operations over MAPLE data.
+
+| Category | Description |
+| :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **Goals** | • Inform and empower constituents for policy change
• Increase engagement between legislature and constituents
• Grow MAPLE usage by organizations, advocates, and journalists |
+| **Jobs** | • "Tell me about bills that would..." (RAG over bills)
• "Tell me what people are saying about..." (RAG over testimony)
• "Tell me about the 2026 ballot questions regarding..." (RAG over ballot questions)
• "Tell me what other states are doing..." or "if it is true that..." (RAG over MAPLE + Web) |
+| **Mechanisms** | • Deploy AI features on MAPLE
• Enable 3rd parties (sites, Agent Skills)
• Enable individual authorized users to leverage MAPLE data |
+
+## Architecture
+
+```mermaid
+graph TD
+ FB[(Firebase: Bills, Testimony, Ballot Qs)] --> FV[Firebase Vector DB]
+ FV --> MCP[MCP Server]
+ MCP --> M1[MAPLE App]
+ MCP --> M2[3rd Party Apps / Agent Skills]
+ MCP --> M3[Authorized Users]
+```
+
+## Environments
+
+- **DEV**: Project `digital-testimony-dev`. All initial development, backfilling, and prototype testing will occur here.
+- **PROD**: Project `digital-testimony-prod`. Final deployment only after successful verification in DEV. **DO NOT MODIFY PROD DURING INITIAL PROTOTYPING.**
+
+## Development Flow
+
+1. **Infrastructure**: Create `agentKeys` in Firestore (DEV) and deploy vector indexes via `firebase deploy --only firestore:indexes`.
+2. **Indexing**: Implement and run `backfill-embeddings.ts` against the DEV project to populate `vector_embedding` fields.
+3. **MCP Core**: Initialize `mcp-server` package and implement `tools.ts` with Vertex AI + Firestore `findNearest` logic.
+4. **Auth & Local Test**: Implement Hybrid Auth and verify the prototype locally using Stdio transport and the MCP Inspector.
+5. **Remote Deployment**: Deploy to Cloud Run (DEV) using SSE transport and verify with a remote agent.
+
+## Proposed Changes
+
+### Firestore Vector Search Setup
+
+We need to prepare Firestore to support vector queries.
+
+#### [MODIFY] [firestore.indexes.json](../firestore.indexes.json)
+
+- Add vector indexes for `bills`, `publishedTestimony`, and `ballotQuestions` collections (dimension 3072 for Gemini Embedding 2).
+
+#### [NEW] `scripts/backfill-embeddings.ts`
+
+- A script to iterate through all bills, testimony, and ballot questions, generate embeddings using **Vertex AI**, and save them to a new `vector_embedding` field in Firestore.
+
+#### [MODIFY] [bill_on_document_created.py](../llm/bill_on_document_created.py) (and similar triggers)
+
+- Update existing LLM triggers to generate embeddings using Vertex AI whenever a new bill, testimony, or ballot question is added/updated.
+
+### Continuous Synchronization
+
+To keep the vector database updated in real-time, we will implement **Firestore Triggers** (Vector Indexers) for the following paths:
+
+| Data Type | Firestore Path | Logic Location |
+| :------------ | :------------------------------------ | :---------------------------------------- |
+| **Bills** | `generalCourts/{court}/bills/{id}` | `functions/src/bills/vector.ts` |
+| **Testimony** | `users/{uid}/publishedTestimony/{id}` | `functions/src/testimony/vector.ts` |
+| **Ballot Qs** | `ballotQuestions/{id}` | `functions/src/ballotQuestions/vector.ts` |
+
+- **Pattern**: Create a `createVectorIndexer` utility in TypeScript (mirroring the existing `createSearchIndexer`) to standardize embedding generation across all collections.
+
+---
+
+### MCP Server Implementation
+
+#### [NEW] `mcp-server/` (New Package)
+
+Initialize a new Node.js package with the following structure:
+
+- `package.json`: Include `@modelcontextprotocol/sdk`, `firebase-admin`, `@google-cloud/aiplatform`.
+- `index.ts`: Main entry point implementing the MCP server with **SSE transport**.
+- `tools.ts`: Implementation of RAG tools:
+ - `search_policies`: Unified vector search across both **bills** and **ballot questions**.
+ - `search_bills`: Focused vector search on legislative bills.
+ - `search_ballot_questions`: Focused vector search on ballot questions.
+ - `search_testimony`: Vector search on testimony, with optional `policyType` (bill/ballot) and `policyId` filters.
+ - `get_bill_details`: Fetch full bill content.
+ - `get_testimony_details`: Fetch testimony content.
+ - `get_ballot_question_details`: Fetch ballot question content.
+- `auth.ts`: Middleware for **Hybrid Auth**:
+ 1. Check for `Authorization: Bearer `.
+ 2. If token is a Firebase ID Token, verify via `admin.auth()`.
+ 3. If token is an Agent Key, verify via lookup in `/agentKeys/{key}` Firestore collection.
+
+---
+
+### Deployment
+
+#### [NEW] `mcp-server/Dockerfile`
+
+- Containerize the MCP server for Cloud Run deployment.
+
+#### [NEW] `infra/deploy-mcp.sh`
+
+- Script to build and deploy the container to Google Cloud Run, supporting `--env dev` and `--env prod` targets.
+
+## Scalability & Cost Estimates
+
+### Scalability Analysis
+
+- **Cloud Run**: Scales from 0 to 1000+ instances. Initial users (5/day) will stay within the free tier. Scaling to 100+ users will trigger horizontal scaling with minimal latency impact.
+- **Firestore Vector Search**: Managed by Google to scale transparently with document count and search volume.
+- **Vertex AI**: High-throughput API that handles concurrent embedding requests effortlessly.
+
+### Estimated Monthly Costs
+
+| Component | Initial (25 queries/day) | Scale (500 queries/day) | Notes |
+| :----------------------- | :----------------------- | :---------------------- | :------------------------------ |
+| **Vertex AI Embeddings** | ~$0.00 / month | ~$0.08 / month | $0.025 per 1M characters |
+| **Firestore Reads** | $0.00 (Free Tier) | $0.00 (Free Tier) | Free up to 50k reads/day |
+| **Cloud Run Compute** | $0.00 (Free Tier) | $0.00 (Free Tier) | Free tier: 180k vCPU-s/mo |
+| **Network Egress** | ~$0.00 / month | ~$0.05 / month | Standard GCP rates |
+| **Total Monthly Cost** | **~$0.00** | **~$0.15** | **Mostly covered by Free Tier** |
+
+> [!NOTE] > **One-time Backfill Cost**: ~$1.50 (assuming 10k documents and 50M characters).
+
+## Verification Plan
+
+### Automated Tests
+
+- Unit tests for `mcp-server` tools using mocked Firestore and Vertex AI.
+- Integration tests using the Firebase Emulator.
+
+### Manual Verification
+
+- Deploy to Cloud Run staging environment.
+- Use the **MCP Inspector** or a custom script to connect via SSE.
+- Verify that `search_bills` and `search_testimony` return relevant results for various queries using both Firebase Auth tokens and Agent Keys.
+
+---
+
+# Integration and Configuration
+
+#### [MODIFY] [package.json](../package.json)
+
+- Add a script to start the MCP server: `"mcp:start": "ts-node mcp-server/index.ts"`.
+
+#### [NEW] `mcp-server/.env.example`
+
+- Template for required environment variables: `FIREBASE_PROJECT_ID`, `GOOGLE_APPLICATION_CREDENTIALS`, `MCP_API_KEY`.
+
+## Verification Plan
+
+### Automated Tests
+
+- Unit tests for `mcp-server` tools using mocked Firestore and Vertex AI.
+- Integration tests using the Firebase Emulator (if it supports vector search, otherwise against a dev project).
+
+### Manual Verification
+
+- Start the MCP server locally.
+- Connect it to Claude Desktop or use an MCP inspector tool.
+- Verify that `search_bills` and `search_testimony` return relevant results for various queries.
diff --git a/mcp-server/index.ts b/mcp-server/index.ts
new file mode 100644
index 000000000..0fa2d271b
--- /dev/null
+++ b/mcp-server/index.ts
@@ -0,0 +1,50 @@
+import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"
+import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js"
+import express from "express"
+import * as admin from "firebase-admin"
+import dotenv from "dotenv"
+import { registerTools } from "./tools"
+import { hybridAuthMiddleware } from "./auth"
+
+dotenv.config()
+
+// Initialize Firebase Admin
+if (!admin.apps.length) {
+ admin.initializeApp({
+ projectId: process.env.FIREBASE_PROJECT_ID
+ })
+}
+
+const server = new McpServer({
+ name: "maple-mcp-server",
+ version: "0.1.0"
+})
+
+// Register all RAG tools
+registerTools(server)
+
+const app = express()
+app.use(express.json())
+
+let transport: SSEServerTransport | null = null
+
+// SSE Endpoint - requires authentication
+app.get("/sse", hybridAuthMiddleware, async (req, res) => {
+ console.log("New SSE connection established")
+ transport = new SSEServerTransport("/message", res)
+ await server.connect(transport)
+})
+
+// Message Endpoint - handles incoming MCP messages
+app.post("/message", async (req, res) => {
+ if (!transport) {
+ return res.status(400).json({ error: "No active SSE transport" })
+ }
+ await transport.handlePostMessage(req, res)
+})
+
+const PORT = process.env.PORT || 3000
+app.listen(PORT, () => {
+ console.log(`MAPLE MCP Server running on http://localhost:${PORT}`)
+ console.log(`SSE endpoint: http://localhost:${PORT}/sse`)
+})
diff --git a/mcp-server/package.json b/mcp-server/package.json
new file mode 100644
index 000000000..86118ec0d
--- /dev/null
+++ b/mcp-server/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "maple-mcp-server",
+ "version": "0.1.0",
+ "private": true,
+ "main": "index.js",
+ "scripts": {
+ "start": "ts-node index.ts",
+ "dev": "ts-node-dev --respawn index.ts",
+ "build": "tsc"
+ },
+ "dependencies": {
+ "@modelcontextprotocol/sdk": "^1.0.3",
+ "firebase-admin": "^11.11.1",
+ "@google-cloud/aiplatform": "^3.9.0",
+ "express": "^4.18.2",
+ "dotenv": "^16.4.5",
+ "runtypes": "6.6.0"
+ },
+ "devDependencies": {
+ "typescript": "5.3.3",
+ "ts-node": "^10.5.0",
+ "ts-node-dev": "^2.0.0",
+ "@types/node": "^17.0.36",
+ "@types/express": "^4.17.17"
+ }
+}
diff --git a/mcp-server/tools.ts b/mcp-server/tools.ts
new file mode 100644
index 000000000..f5171eb68
--- /dev/null
+++ b/mcp-server/tools.ts
@@ -0,0 +1,242 @@
+import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"
+import { z } from "zod"
+import * as admin from "firebase-admin"
+import { PredictionServiceClient, helpers } from "@google-cloud/aiplatform"
+
+// Initialize Firebase Admin (assume it's already initialized or will be in index.ts)
+const db = admin.firestore()
+
+// Vertex AI Configuration
+const project = process.env.FIREBASE_PROJECT_ID
+const location = "us-central1"
+const publisher = "google"
+const model = "gemini-embedding-2"
+const endpoint = `projects/${project}/locations/${location}/publishers/${publisher}/models/${model}`
+
+const client = new PredictionServiceClient({
+ apiEndpoint: `${location}-aiplatform.googleapis.com`
+})
+
+async function getEmbedding(
+ text: string,
+ isQuery: boolean,
+ title?: string
+): Promise {
+ const formattedText = isQuery
+ ? `task: search result | query: ${text}`
+ : `title: ${title || "none"} | text: ${text}`
+
+ const instance = helpers.toValue({ content: formattedText })!
+ const responseArray = (await client.predict({
+ endpoint,
+ instances: [instance]
+ })) as any
+ const response = responseArray[0]
+
+ if (!response.predictions || response.predictions.length === 0) {
+ throw new Error("No predictions returned from Vertex AI")
+ }
+
+ const prediction = helpers.fromValue(response.predictions[0] as any) as any
+ const embedding =
+ prediction.embeddings?.values || prediction.embedding?.values
+
+ if (!embedding) {
+ throw new Error(
+ `Unexpected prediction format: ${JSON.stringify(prediction)}`
+ )
+ }
+
+ return embedding
+}
+
+const SearchSchema = {
+ query: z.string().describe("The search query"),
+ limit: z
+ .number()
+ .optional()
+ .default(5)
+ .describe("Maximum number of results to return")
+}
+
+const TestimonySearchSchema = {
+ query: z.string().describe("The search query"),
+ policyType: z
+ .enum(["bill", "ballot"])
+ .optional()
+ .describe("Filter by policy type"),
+ policyId: z.string().optional().describe("Filter by specific policy ID"),
+ limit: z.number().optional().default(5)
+}
+
+export function registerTools(server: McpServer) {
+ server.registerTool(
+ "search_bills",
+ {
+ description: "Search legislative bills using natural language",
+ inputSchema: SearchSchema as any
+ },
+ async ({ query, limit }: any) => {
+ const embedding = await getEmbedding(query as string, true)
+ const billsRef = db.collectionGroup("bills")
+
+ const results = await (billsRef as any)
+ .findNearest({
+ vectorField: "vector_embedding",
+ queryVector: embedding,
+ distanceMeasure: "COSINE",
+ limit: limit as number
+ })
+ .get()
+
+ const bills = results.docs.map((doc: any) => ({
+ id: doc.id,
+ path: doc.ref.path,
+ ...doc.data(),
+ vector_embedding: undefined // Hide embedding from output
+ }))
+
+ return {
+ content: [
+ { type: "text" as const, text: JSON.stringify(bills, null, 2) }
+ ]
+ }
+ }
+ )
+
+ server.registerTool(
+ "search_testimony",
+ {
+ description: "Search testimony using natural language",
+ inputSchema: TestimonySearchSchema as any
+ },
+ async ({ query, policyType, policyId, limit }: any) => {
+ const embedding = await getEmbedding(query as string, true)
+ let testimonyRef: any = db.collectionGroup("publishedTestimony")
+
+ if (policyType === "bill" && policyId) {
+ testimonyRef = testimonyRef.where("billId", "==", policyId)
+ } else if (policyType === "ballot" && policyId) {
+ testimonyRef = testimonyRef.where("ballotQuestionId", "==", policyId)
+ }
+
+ const results = await testimonyRef
+ .findNearest({
+ vectorField: "vector_embedding",
+ queryVector: embedding,
+ distanceMeasure: "COSINE",
+ limit: limit as number
+ })
+ .get()
+
+ const testimony = results.docs.map((doc: any) => ({
+ id: doc.id,
+ path: doc.ref.path,
+ ...doc.data(),
+ vector_embedding: undefined
+ }))
+
+ return {
+ content: [
+ { type: "text" as const, text: JSON.stringify(testimony, null, 2) }
+ ]
+ }
+ }
+ )
+
+ server.registerTool(
+ "search_ballot_questions",
+ {
+ description: "Search ballot questions using natural language",
+ inputSchema: SearchSchema as any
+ },
+ async ({ query, limit }: any) => {
+ const embedding = await getEmbedding(query as string, true)
+ const bqRef = db.collection("ballotQuestions")
+
+ const results = await (bqRef as any)
+ .findNearest({
+ vectorField: "vector_embedding",
+ queryVector: embedding,
+ distanceMeasure: "COSINE",
+ limit: limit as number
+ })
+ .get()
+
+ const questions = results.docs.map((doc: any) => ({
+ id: doc.id,
+ path: doc.ref.path,
+ ...doc.data(),
+ vector_embedding: undefined
+ }))
+
+ return {
+ content: [
+ { type: "text" as const, text: JSON.stringify(questions, null, 2) }
+ ]
+ }
+ }
+ )
+
+ server.registerTool(
+ "search_policies",
+ {
+ description: "Unified search across bills and ballot questions",
+ inputSchema: SearchSchema as any
+ },
+ async ({ query, limit }: any) => {
+ const embedding = await getEmbedding(query as string, true)
+
+ const billsPromise = (db.collectionGroup("bills") as any)
+ .findNearest({
+ vectorField: "vector_embedding",
+ queryVector: embedding,
+ distanceMeasure: "COSINE",
+ limit: limit as number
+ })
+ .get()
+
+ const bqPromise = (db.collection("ballotQuestions") as any)
+ .findNearest({
+ vectorField: "vector_embedding",
+ queryVector: embedding,
+ distanceMeasure: "COSINE",
+ limit: limit as number
+ })
+ .get()
+
+ const [billsResults, bqResults] = await Promise.all([
+ billsPromise,
+ bqPromise
+ ])
+
+ const results = [
+ ...(billsResults as any).docs.map((doc: any) => ({
+ type: "bill",
+ id: doc.id,
+ ...doc.data(),
+ vector_embedding: undefined
+ })),
+ ...(bqResults as any).docs.map((doc: any) => ({
+ type: "ballot_question",
+ id: doc.id,
+ ...doc.data(),
+ vector_embedding: undefined
+ }))
+ ]
+
+ return {
+ content: [
+ {
+ type: "text" as const,
+ text: JSON.stringify(
+ results.slice(0, (limit as number) * 2),
+ null,
+ 2
+ )
+ }
+ ]
+ }
+ }
+ )
+}
diff --git a/package.json b/package.json
index b4b40980d..3b856ec88 100644
--- a/package.json
+++ b/package.json
@@ -93,7 +93,9 @@
"dompurify": "^2.3.10",
"express": "^4.18.2",
"firebase": "9.6.10",
- "firebase-admin": "^11.11.1",
+ "firebase-admin": "^12.0.0",
+ "@google-cloud/aiplatform": "^3.9.0",
+ "@modelcontextprotocol/sdk": "^1.0.3",
"fuse.js": "6.5.3",
"handlebars": "^4.7.8",
"i18next": "^23.10.0",
@@ -164,7 +166,7 @@
"@types/luxon": "^2.0.9",
"@types/marked": "^4.0.8",
"@types/mustache": "^4.2.1",
- "@types/node": "^17.0.36",
+ "@types/node": "^20.0.0",
"@types/papaparse": "^5.3.5",
"@types/react": "^18.2.43",
"@types/react-copy-to-clipboard": "^5.0.4",
diff --git a/scripts/firebase-admin/backfill-embeddings.ts b/scripts/firebase-admin/backfill-embeddings.ts
new file mode 100644
index 000000000..fe65817eb
--- /dev/null
+++ b/scripts/firebase-admin/backfill-embeddings.ts
@@ -0,0 +1,117 @@
+import { Script } from "./types"
+import { PredictionServiceClient, helpers } from "@google-cloud/aiplatform"
+
+const location = "us-central1"
+const publisher = "google"
+const model = "gemini-embedding-2"
+
+async function getEmbedding(
+ client: PredictionServiceClient,
+ endpoint: string,
+ text: string,
+ title?: string
+): Promise {
+ const formattedText = `title: ${title || "none"} | text: ${text}`
+ const instance = helpers.toValue({ content: formattedText })!
+ const responseArray = (await client.predict({
+ endpoint,
+ instances: [instance]
+ })) as any
+ const response = responseArray[0]
+
+ if (!response.predictions || response.predictions.length === 0) {
+ throw new Error("No predictions returned from Vertex AI")
+ }
+
+ const prediction = helpers.fromValue(response.predictions[0] as any) as any
+ const embedding =
+ prediction.embeddings?.values || prediction.embedding?.values
+
+ if (!embedding) {
+ throw new Error(
+ `Unexpected prediction format: ${JSON.stringify(prediction)}`
+ )
+ }
+
+ return embedding
+}
+
+export const script: Script = async ({ db, firebase, args }) => {
+ const project = firebase.options.projectId
+ const endpoint = `projects/${project}/locations/${location}/publishers/${publisher}/models/${model}`
+ const client = new PredictionServiceClient({
+ apiEndpoint: `${location}-aiplatform.googleapis.com`
+ })
+
+ console.log(`Starting backfill for project: ${project}`)
+
+ const collections = [
+ {
+ name: "bills",
+ group: true,
+ textFields: ["content.Title", "content.DocumentText"]
+ },
+ { name: "publishedTestimony", group: true, textFields: ["content"] },
+ {
+ name: "ballotQuestions",
+ group: false,
+ textFields: ["title", "description", "fullSummary"]
+ }
+ ]
+
+ for (const col of collections) {
+ console.log(`Processing collection: ${col.name}`)
+ const ref = col.group
+ ? db.collectionGroup(col.name)
+ : db.collection(col.name)
+ const snapshot = await ref.get()
+
+ console.log(`Found ${snapshot.size} documents in ${col.name}`)
+
+ for (const doc of snapshot.docs) {
+ const data = doc.data()
+ if (data.vector_embedding) {
+ console.log(`Skipping ${doc.id} (already indexed)`)
+ continue
+ }
+
+ const textToEmbed = col.textFields
+ .map(field => {
+ const parts = field.split(".")
+ let val = data
+ for (const part of parts) val = val?.[part]
+ return val
+ })
+ .filter(Boolean)
+ .join("\n\n")
+
+ if (!textToEmbed) {
+ console.log(`Skipping ${doc.id} (no content)`)
+ continue
+ }
+
+ // Extract title for gemini-embedding-2 prefixing
+ let title = "none"
+ if (col.name === "bills") title = data.content?.Title || "none"
+ else if (col.name === "ballotQuestions") title = data.title || "none"
+ else if (col.name === "publishedTestimony")
+ title = data.billTitle || "none"
+
+ try {
+ console.log(`Generating embedding for ${doc.id}...`)
+ const embedding = await getEmbedding(
+ client,
+ endpoint,
+ textToEmbed,
+ title
+ )
+ await doc.ref.update({ vector_embedding: embedding })
+ console.log(`Updated ${doc.id}`)
+ } catch (e) {
+ console.error(`Failed to index ${doc.id}:`, e)
+ }
+ }
+ }
+
+ console.log("Backfill complete!")
+}
diff --git a/scripts/firebase-admin/syncBallotQuestions.ts b/scripts/firebase-admin/syncBallotQuestions.ts
index 0ae53e8c2..b010ba9af 100644
--- a/scripts/firebase-admin/syncBallotQuestions.ts
+++ b/scripts/firebase-admin/syncBallotQuestions.ts
@@ -10,7 +10,6 @@ export const script: Script = async ({ db, args }) => {
? args.dir
: path.resolve(process.cwd(), "ballotQuestions")
- // @ts-expect-error Node supports recursive readdir here; the repo's fs typings do not.
const files = (fs.readdirSync(dir, { recursive: true }) as string[]).filter(
f => f.endsWith(".yaml")
)
diff --git a/tsconfig.json b/tsconfig.json
index d1d31636c..fb15c426d 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,7 +1,7 @@
{
"compilerOptions": {
"baseUrl": "./",
- "target": "es5",
+ "target": "es2020",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
@@ -16,7 +16,8 @@
"isolatedModules": true,
"jsx": "preserve",
"incremental": true,
- "types": ["node"]
+ "types": ["node"],
+ "ignoreDeprecations": "5.0"
},
"include": [
"next-env.d.ts",
diff --git a/yarn.lock b/yarn.lock
index 67a9bdca8..2d0c0348b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -372,7 +372,7 @@
"@babel/template" "^7.28.6"
"@babel/types" "^7.29.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.15", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.5", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5":
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.5", "@babel/parser@^7.27.2", "@babel/parser@^7.28.5":
version "7.28.5"
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz"
integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==
@@ -1675,12 +1675,10 @@
resolved "https://registry.npmjs.org/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz"
integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==
-"@fastify/busboy@^1.2.1":
- version "1.2.1"
- resolved "https://registry.npmjs.org/@fastify/busboy/-/busboy-1.2.1.tgz"
- integrity sha512-7PQA7EH43S0CxcOa9OeAnaeA0oQ+e/DHNPZwSQM9CQHW76jle5+OvLdibRp/Aafs9KXbLhxyjOTkRjWUbQEd3Q==
- dependencies:
- text-decoding "^1.0.0"
+"@fastify/busboy@^3.0.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-3.2.0.tgz#13ed8212f3b9ba697611529d15347f8528058cea"
+ integrity sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==
"@firebase/analytics-compat@0.1.8":
version "0.1.8"
@@ -1726,6 +1724,11 @@
resolved "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.1.0.tgz"
integrity sha512-uZfn9s4uuRsaX5Lwx+gFP3B6YsyOKUE+Rqa6z9ojT4VSRAsZFko9FRn6OxQUA1z5t5d08fY4pf+/+Dkd5wbdbA==
+"@firebase/app-check-interop-types@0.3.2":
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz#455b6562c7a3de3ef75ea51f72dfec5829ad6997"
+ integrity sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==
+
"@firebase/app-check-types@0.4.0":
version "0.4.0"
resolved "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.4.0.tgz"
@@ -1757,10 +1760,10 @@
resolved "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.7.0.tgz"
integrity sha512-6fbHQwDv2jp/v6bXhBw2eSRbNBpxHcd1NBF864UksSMVIqIyri9qpJB1Mn6sGZE+bnDsSQBC5j2TbMxYsJQkQg==
-"@firebase/app-types@0.9.0":
- version "0.9.0"
- resolved "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz"
- integrity sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==
+"@firebase/app-types@0.9.2":
+ version "0.9.2"
+ resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.9.2.tgz#8cbcceba784753a7c0066a4809bc22f93adee080"
+ integrity sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==
"@firebase/app@0.7.20":
version "0.7.20"
@@ -1790,10 +1793,10 @@
resolved "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.1.6.tgz"
integrity sha512-etIi92fW3CctsmR9e3sYM3Uqnoq861M0Id9mdOPF6PWIg38BXL5k4upCNBggGUpLIS0H1grMOvy/wn1xymwe2g==
-"@firebase/auth-interop-types@0.2.1":
- version "0.2.1"
- resolved "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz"
- integrity sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==
+"@firebase/auth-interop-types@0.2.3":
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz#927f1f2139a680b55fef0bddbff2c982b08587e8"
+ integrity sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==
"@firebase/auth-types@0.11.0":
version "0.11.0"
@@ -1820,12 +1823,12 @@
"@firebase/util" "1.5.1"
tslib "^2.1.0"
-"@firebase/component@0.6.4":
- version "0.6.4"
- resolved "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz"
- integrity sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==
+"@firebase/component@0.6.9":
+ version "0.6.9"
+ resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.6.9.tgz#4248cfeab222245ada0d7f78ece95a87574532b4"
+ integrity sha512-gm8EUEJE/fEac86AvHn8Z/QW8BvR56TBw3hMW0O838J/1mThYQXAIQBgUv75EqlCZfdawpWLrKt1uXvp9ciK3Q==
dependencies:
- "@firebase/util" "1.9.3"
+ "@firebase/util" "1.10.0"
tslib "^2.1.0"
"@firebase/database-compat@0.1.7":
@@ -1840,26 +1843,18 @@
"@firebase/util" "1.5.1"
tslib "^2.1.0"
-"@firebase/database-compat@^0.3.4":
- version "0.3.4"
- resolved "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.4.tgz"
- integrity sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg==
- dependencies:
- "@firebase/component" "0.6.4"
- "@firebase/database" "0.14.4"
- "@firebase/database-types" "0.10.4"
- "@firebase/logger" "0.4.0"
- "@firebase/util" "1.9.3"
+"@firebase/database-compat@1.0.8":
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/@firebase/database-compat/-/database-compat-1.0.8.tgz#69ab03d00e27a89f65486896ea219094aa38c27f"
+ integrity sha512-OpeWZoPE3sGIRPBKYnW9wLad25RaWbGyk7fFQe4xnJQKRzlynWeFBSRRAoLE2Old01WXwskUiucNqUUVlFsceg==
+ dependencies:
+ "@firebase/component" "0.6.9"
+ "@firebase/database" "1.0.8"
+ "@firebase/database-types" "1.0.5"
+ "@firebase/logger" "0.4.2"
+ "@firebase/util" "1.10.0"
tslib "^2.1.0"
-"@firebase/database-types@0.10.4", "@firebase/database-types@^0.10.4":
- version "0.10.4"
- resolved "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.4.tgz"
- integrity sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ==
- dependencies:
- "@firebase/app-types" "0.9.0"
- "@firebase/util" "1.9.3"
-
"@firebase/database-types@0.9.6":
version "0.9.6"
resolved "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.9.6.tgz"
@@ -1868,6 +1863,14 @@
"@firebase/app-types" "0.7.0"
"@firebase/util" "1.5.1"
+"@firebase/database-types@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-1.0.5.tgz#2d923f42e3d9911b9eec537ed8b5ecaa0ce95c37"
+ integrity sha512-fTlqCNwFYyq/C6W7AJ5OCuq5CeZuBEsEwptnVxlNPkWCo5cTTyukzAHRSO/jaQcItz33FfYrrFk1SJofcu2AaQ==
+ dependencies:
+ "@firebase/app-types" "0.9.2"
+ "@firebase/util" "1.10.0"
+
"@firebase/database@0.12.7":
version "0.12.7"
resolved "https://registry.npmjs.org/@firebase/database/-/database-0.12.7.tgz"
@@ -1880,15 +1883,16 @@
faye-websocket "0.11.4"
tslib "^2.1.0"
-"@firebase/database@0.14.4":
- version "0.14.4"
- resolved "https://registry.npmjs.org/@firebase/database/-/database-0.14.4.tgz"
- integrity sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ==
- dependencies:
- "@firebase/auth-interop-types" "0.2.1"
- "@firebase/component" "0.6.4"
- "@firebase/logger" "0.4.0"
- "@firebase/util" "1.9.3"
+"@firebase/database@1.0.8":
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/@firebase/database/-/database-1.0.8.tgz#01bb0d0cb5653ae6a6641523f6f085b4c1be9c2f"
+ integrity sha512-dzXALZeBI1U5TXt6619cv0+tgEhJiwlUtQ55WNZY7vGAjv7Q1QioV969iYwt1AQQ0ovHnEW0YW9TiBfefLvErg==
+ dependencies:
+ "@firebase/app-check-interop-types" "0.3.2"
+ "@firebase/auth-interop-types" "0.2.3"
+ "@firebase/component" "0.6.9"
+ "@firebase/logger" "0.4.2"
+ "@firebase/util" "1.10.0"
faye-websocket "0.11.4"
tslib "^2.1.0"
@@ -1967,10 +1971,10 @@
dependencies:
tslib "^2.1.0"
-"@firebase/logger@0.4.0":
- version "0.4.0"
- resolved "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz"
- integrity sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==
+"@firebase/logger@0.4.2":
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.4.2.tgz#74dfcfeedee810deb8a7080d5b7eba56aa16ffa2"
+ integrity sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==
dependencies:
tslib "^2.1.0"
@@ -2091,6 +2095,13 @@
node-fetch "2.6.7"
tslib "^2.1.0"
+"@firebase/util@1.10.0":
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/@firebase/util/-/util-1.10.0.tgz#9ec8ab54da82bfc31baff0c43cb281998cbeddab"
+ integrity sha512-xKtx4A668icQqoANRxyDLBLz51TAbDP9KRfpbKGxiCAW346d0BeJe5vN6/hKxxmWwnZ0mautyv39JxviwwQMOQ==
+ dependencies:
+ tslib "^2.1.0"
+
"@firebase/util@1.5.1":
version "1.5.1"
resolved "https://registry.npmjs.org/@firebase/util/-/util-1.5.1.tgz"
@@ -2098,13 +2109,6 @@
dependencies:
tslib "^2.1.0"
-"@firebase/util@1.9.3":
- version "1.9.3"
- resolved "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz"
- integrity sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==
- dependencies:
- tslib "^2.1.0"
-
"@firebase/webchannel-wrapper@0.6.1":
version "0.6.1"
resolved "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.6.1.tgz"
@@ -2163,6 +2167,14 @@
dependencies:
prop-types "^15.8.1"
+"@google-cloud/aiplatform@^3.9.0":
+ version "3.35.0"
+ resolved "https://registry.yarnpkg.com/@google-cloud/aiplatform/-/aiplatform-3.35.0.tgz#7b9dc00656be589106067fcce955ad660904d599"
+ integrity sha512-Eo+ckr1KbTxAOew9P+MeeR0aQXeW5PeOzrSM1JyGny/SGKejwX/RcGWSFpeapnlegTfI9N9xJeUeo3M+XBOeFg==
+ dependencies:
+ google-gax "^4.0.3"
+ protobuf.js "^1.1.2"
+
"@google-cloud/cloud-sql-connector@^1.3.3":
version "1.8.1"
resolved "https://registry.npmjs.org/@google-cloud/cloud-sql-connector/-/cloud-sql-connector-1.8.1.tgz"
@@ -2173,23 +2185,16 @@
google-auth-library "^9.2.0"
p-throttle "^7.0.0"
-"@google-cloud/firestore@^6.8.0":
- version "6.8.0"
- resolved "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-6.8.0.tgz"
- integrity sha512-JRpk06SmZXLGz0pNx1x7yU3YhkUXheKgH5hbDZ4kMsdhtfV5qPLJLRI4wv69K0cZorIk+zTMOwptue7hizo0eA==
+"@google-cloud/firestore@^7.7.0":
+ version "7.11.6"
+ resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-7.11.6.tgz#0a2b26e215aa4f903267f82370450753b84db16a"
+ integrity sha512-EW/O8ktzwLfyWBOsNuhRoMi8lrC3clHM5LVFhGvO1HCsLozCOOXRAlHrYBoE6HL42Sc8yYMuCb2XqcnJ4OOEpw==
dependencies:
+ "@opentelemetry/api" "^1.3.0"
fast-deep-equal "^3.1.1"
functional-red-black-tree "^1.0.1"
- google-gax "^3.5.7"
- protobufjs "^7.2.5"
-
-"@google-cloud/paginator@^3.0.7":
- version "3.0.7"
- resolved "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-3.0.7.tgz"
- integrity sha512-jJNutk0arIQhmpUUQJPJErsojqo834KcyB6X7a1mxuic8i1tKXxde8E69IZxNZawRIlZdIK2QY4WALvlK5MzYQ==
- dependencies:
- arrify "^2.0.0"
- extend "^3.0.2"
+ google-gax "^4.3.3"
+ protobufjs "^7.2.6"
"@google-cloud/paginator@^5.0.0":
version "5.0.2"
@@ -2204,24 +2209,14 @@
resolved "https://registry.npmjs.org/@google-cloud/precise-date/-/precise-date-4.0.0.tgz"
integrity sha512-1TUx3KdaU3cN7nfCdNf+UVqA/PSX29Cjcox3fZZBtINlRrXVTmUkQnCKv2MbBUbCopbK4olAT1IHl76uZyCiVA==
-"@google-cloud/projectify@^3.0.0":
- version "3.0.0"
- resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-3.0.0.tgz"
- integrity sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA==
-
"@google-cloud/projectify@^4.0.0":
version "4.0.0"
resolved "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz"
integrity sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==
-"@google-cloud/promisify@^3.0.0":
- version "3.0.1"
- resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-3.0.1.tgz"
- integrity sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA==
-
-"@google-cloud/promisify@~4.0.0":
+"@google-cloud/promisify@<4.1.0", "@google-cloud/promisify@~4.0.0":
version "4.0.0"
- resolved "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.0.0.tgz"
+ resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-4.0.0.tgz#a906e533ebdd0f754dca2509933334ce58b8c8b1"
integrity sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==
"@google-cloud/pubsub@^4.5.0":
@@ -2244,28 +2239,25 @@
lodash.snakecase "^4.1.1"
p-defer "^3.0.0"
-"@google-cloud/storage@^6.9.5":
- version "6.12.0"
- resolved "https://registry.npmjs.org/@google-cloud/storage/-/storage-6.12.0.tgz"
- integrity sha512-78nNAY7iiZ4O/BouWMWTD/oSF2YtYgYB3GZirn0To6eBOugjXVoK+GXgUXOl+HlqbAOyHxAVXOlsj3snfbQ1dw==
+"@google-cloud/storage@^7.7.0":
+ version "7.19.0"
+ resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-7.19.0.tgz#34fb7cc4eacede5a2f1f0d6cefa0c70a22078c5b"
+ integrity sha512-n2FjE7NAOYyshogdc7KQOl/VZb4sneqPjWouSyia9CMDdMhRX5+RIbqalNmC7LOLzuLAN89VlF2HvG8na9G+zQ==
dependencies:
- "@google-cloud/paginator" "^3.0.7"
- "@google-cloud/projectify" "^3.0.0"
- "@google-cloud/promisify" "^3.0.0"
+ "@google-cloud/paginator" "^5.0.0"
+ "@google-cloud/projectify" "^4.0.0"
+ "@google-cloud/promisify" "<4.1.0"
abort-controller "^3.0.0"
async-retry "^1.3.3"
- compressible "^2.0.12"
- duplexify "^4.0.0"
- ent "^2.2.0"
- extend "^3.0.2"
- fast-xml-parser "^4.2.2"
- gaxios "^5.0.0"
- google-auth-library "^8.0.1"
+ duplexify "^4.1.3"
+ fast-xml-parser "^5.3.4"
+ gaxios "^6.0.2"
+ google-auth-library "^9.6.3"
+ html-entities "^2.5.2"
mime "^3.0.0"
- mime-types "^2.0.8"
p-limit "^3.0.1"
- retry-request "^5.0.0"
- teeny-request "^8.0.0"
+ retry-request "^7.0.0"
+ teeny-request "^9.0.0"
uuid "^8.0.0"
"@googleapis/sqladmin@^29.0.0":
@@ -2291,14 +2283,6 @@
"@grpc/proto-loader" "^0.7.8"
"@types/node" ">=12.12.47"
-"@grpc/grpc-js@~1.8.0":
- version "1.8.22"
- resolved "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.22.tgz"
- integrity sha512-oAjDdN7fzbUi+4hZjKG96MR6KTEubAeMpQEb+77qy+3r0Ua5xTFuie6JOLr4ZZgl5g+W5/uRTS2M1V8mVAFPuA==
- dependencies:
- "@grpc/proto-loader" "^0.7.0"
- "@types/node" ">=12.12.47"
-
"@grpc/proto-loader@^0.6.0":
version "0.6.13"
resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz"
@@ -2310,7 +2294,7 @@
protobufjs "^6.11.3"
yargs "^16.2.0"
-"@grpc/proto-loader@^0.7.0", "@grpc/proto-loader@^0.7.13", "@grpc/proto-loader@^0.7.8":
+"@grpc/proto-loader@^0.7.13", "@grpc/proto-loader@^0.7.8":
version "0.7.15"
resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz"
integrity sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==
@@ -2332,6 +2316,11 @@
dependencies:
"@hapi/hoek" "^9.0.0"
+"@hono/node-server@^1.19.9":
+ version "1.19.14"
+ resolved "https://registry.yarnpkg.com/@hono/node-server/-/node-server-1.19.14.tgz#e30f844bc77e3ce7be442aac3b1f73ad8b58d181"
+ integrity sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==
+
"@humanwhocodes/config-array@^0.11.13":
version "0.11.13"
resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz"
@@ -2351,18 +2340,6 @@
resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz"
integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==
-"@isaacs/balanced-match@^4.0.1":
- version "4.0.1"
- resolved "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz"
- integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==
-
-"@isaacs/brace-expansion@^5.0.0":
- version "5.0.0"
- resolved "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz"
- integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==
- dependencies:
- "@isaacs/balanced-match" "^4.0.1"
-
"@istanbuljs/load-nyc-config@^1.0.0":
version "1.1.0"
resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz"
@@ -2642,13 +2619,6 @@
resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz"
integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==
-"@jsdoc/salty@^0.2.1":
- version "0.2.9"
- resolved "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.9.tgz"
- integrity sha512-yYxMVH7Dqw6nO0d5NIV8OQWnitU8k6vXH8NtgqAfIa/IUqRMxRv/NUJJ08VEKbAakwxlgBl5PJdrU0dMPStsnw==
- dependencies:
- lodash "^4.17.21"
-
"@juggle/resize-observer@^3.3.1":
version "3.4.0"
resolved "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz"
@@ -2662,6 +2632,29 @@
"@types/mdx" "^2.0.0"
"@types/react" ">=16"
+"@modelcontextprotocol/sdk@^1.0.3":
+ version "1.29.0"
+ resolved "https://registry.yarnpkg.com/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz#79786d8b525e269de850ac82b1f1f757f3915f44"
+ integrity sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==
+ dependencies:
+ "@hono/node-server" "^1.19.9"
+ ajv "^8.17.1"
+ ajv-formats "^3.0.1"
+ content-type "^1.0.5"
+ cors "^2.8.5"
+ cross-spawn "^7.0.5"
+ eventsource "^3.0.2"
+ eventsource-parser "^3.0.0"
+ express "^5.2.1"
+ express-rate-limit "^8.2.1"
+ hono "^4.11.4"
+ jose "^6.1.3"
+ json-schema-typed "^8.0.2"
+ pkce-challenge "^5.0.0"
+ raw-body "^3.0.0"
+ zod "^3.25 || ^4.0"
+ zod-to-json-schema "^3.25.1"
+
"@mui/base@5.0.0-beta.26":
version "5.0.0-beta.26"
resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.26.tgz"
@@ -2903,6 +2896,11 @@
resolved "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.4.tgz"
integrity sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==
+"@nodable/entities@^2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@nodable/entities/-/entities-2.1.0.tgz#f543e5c6446720d4cf9e498a83019dd159973bc2"
+ integrity sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==
+
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
@@ -2942,6 +2940,11 @@
dependencies:
semver "^7.3.5"
+"@opentelemetry/api@^1.3.0":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.1.tgz#c1b0346de336ba55af2d5a7970882037baedec05"
+ integrity sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==
+
"@opentelemetry/api@~1.9.0":
version "1.9.0"
resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz"
@@ -3020,6 +3023,11 @@
resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz"
integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
+"@protobufjs/codegen@^2.0.5":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.5.tgz#d9315ad7cf3f30aac70bda3c068443dc6f143659"
+ integrity sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==
+
"@protobufjs/eventemitter@^1.1.0":
version "1.1.0"
resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz"
@@ -3043,6 +3051,11 @@
resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz"
integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==
+"@protobufjs/inquire@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.1.tgz#6cb936f4ac50965230af1e9d0bbfd57ea3675aa4"
+ integrity sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew==
+
"@protobufjs/path@^1.1.2":
version "1.1.2"
resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz"
@@ -3058,6 +3071,11 @@
resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz"
integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
+"@protobufjs/utf8@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.1.tgz#eaee5900122c110a3dbcb728c0597014a2621774"
+ integrity sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==
+
"@radix-ui/number@1.0.1":
version "1.0.1"
resolved "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz"
@@ -4709,16 +4727,6 @@
"@types/range-parser" "*"
"@types/send" "*"
-"@types/express@^4.17.20":
- version "4.17.23"
- resolved "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz"
- integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==
- dependencies:
- "@types/body-parser" "*"
- "@types/express-serve-static-core" "^4.17.33"
- "@types/qs" "*"
- "@types/serve-static" "*"
-
"@types/express@^4.7.0":
version "4.17.21"
resolved "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz"
@@ -4734,13 +4742,6 @@
resolved "https://registry.npmjs.org/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz"
integrity sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==
-"@types/glob@*":
- version "9.0.0"
- resolved "https://registry.npmjs.org/@types/glob/-/glob-9.0.0.tgz"
- integrity sha512-00UxlRaIUvYm4R4W9WYkN8/J+kV8fmOQ7okeH6YFtGWFMt3odD45tpG5yA5wnL7HE6lLgjaTW5n14ju2hl2NNA==
- dependencies:
- glob "*"
-
"@types/google.maps@^3.45.3":
version "3.54.10"
resolved "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.54.10.tgz"
@@ -4846,11 +4847,6 @@
"@types/ms" "*"
"@types/node" "*"
-"@types/linkify-it@^5":
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76"
- integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==
-
"@types/lodash@^4.14.167", "@types/lodash@^4.14.178", "@types/lodash@^4.14.72":
version "4.14.202"
resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz"
@@ -4866,14 +4862,6 @@
resolved "https://registry.npmjs.org/@types/luxon/-/luxon-2.4.0.tgz"
integrity sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw==
-"@types/markdown-it@^14.1.1":
- version "14.1.2"
- resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-14.1.2.tgz#57f2532a0800067d9b934f3521429a2e8bfb4c61"
- integrity sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==
- dependencies:
- "@types/linkify-it" "^5"
- "@types/mdurl" "^2"
-
"@types/marked@^4.0.8":
version "4.3.2"
resolved "https://registry.npmjs.org/@types/marked/-/marked-4.3.2.tgz"
@@ -4886,11 +4874,6 @@
dependencies:
"@types/unist" "^2"
-"@types/mdurl@^2":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd"
- integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==
-
"@types/mdx@^2.0.0":
version "2.0.10"
resolved "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz"
@@ -4939,7 +4922,7 @@
"@types/node" "*"
form-data "^4.0.0"
-"@types/node@*", "@types/node@^17.0.36":
+"@types/node@*":
version "17.0.45"
resolved "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz"
integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==
@@ -4958,6 +4941,20 @@
dependencies:
undici-types "~5.26.4"
+"@types/node@^20.0.0":
+ version "20.19.41"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.19.41.tgz#bb266a1e0aaa2f4537d14ae8ebf238dd9ca73ce6"
+ integrity sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==
+ dependencies:
+ undici-types "~6.21.0"
+
+"@types/node@^22.0.1":
+ version "22.19.19"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.19.tgz#3124bf26ded54168b768138321fef99b420c6112"
+ integrity sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==
+ dependencies:
+ undici-types "~6.21.0"
+
"@types/normalize-package-data@^2.4.0":
version "2.4.4"
resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz"
@@ -5057,14 +5054,6 @@
resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz"
integrity sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==
-"@types/rimraf@^3.0.2":
- version "3.0.2"
- resolved "https://registry.npmjs.org/@types/rimraf/-/rimraf-3.0.2.tgz"
- integrity sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==
- dependencies:
- "@types/glob" "*"
- "@types/node" "*"
-
"@types/scheduler@*":
version "0.16.8"
resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz"
@@ -5449,6 +5438,14 @@ abort-controller@^3.0.0:
dependencies:
event-target-shim "^5.0.0"
+accepts@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-2.0.0.tgz#bbcf4ba5075467f3f2131eab3cffc73c2f5d7895"
+ integrity sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==
+ dependencies:
+ mime-types "^3.0.0"
+ negotiator "^1.0.0"
+
accepts@~1.3.5, accepts@~1.3.8:
version "1.3.8"
resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz"
@@ -5552,9 +5549,9 @@ aggregate-error@^3.0.0:
clean-stack "^2.0.0"
indent-string "^4.0.0"
-ajv-formats@3.0.1:
+ajv-formats@3.0.1, ajv-formats@^3.0.1:
version "3.0.1"
- resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz"
+ resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578"
integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==
dependencies:
ajv "^8.0.0"
@@ -6325,11 +6322,6 @@ bl@^4.0.3, bl@^4.1.0:
inherits "^2.0.4"
readable-stream "^3.4.0"
-bluebird@^3.7.2:
- version "3.7.2"
- resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz"
- integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
-
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
version "4.12.0"
resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz"
@@ -6376,6 +6368,21 @@ body-parser@^1.18.3, body-parser@^1.19.0:
type-is "~1.6.18"
unpipe "1.0.0"
+body-parser@^2.2.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.2.tgz#1a32cdb966beaf68de50a9dfbe5b58f83cb8890c"
+ integrity sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==
+ dependencies:
+ bytes "^3.1.2"
+ content-type "^1.0.5"
+ debug "^4.4.3"
+ http-errors "^2.0.0"
+ iconv-lite "^0.7.0"
+ on-finished "^2.4.1"
+ qs "^6.14.1"
+ raw-body "^3.0.1"
+ type-is "^2.0.1"
+
boolbase@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
@@ -6597,7 +6604,7 @@ bytes@3.0.0:
resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz"
integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==
-bytes@3.1.2:
+bytes@3.1.2, bytes@^3.1.2, bytes@~3.1.2:
version "3.1.2"
resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz"
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
@@ -6661,7 +6668,7 @@ call-bind@^1.0.6, call-bind@^1.0.7:
get-intrinsic "^1.2.4"
set-function-length "^1.2.1"
-call-bound@^1.0.2, call-bound@^1.0.3:
+call-bound@^1.0.2:
version "1.0.4"
resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz"
integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
@@ -6739,13 +6746,6 @@ case-sensitive-paths-webpack-plugin@^2.4.0:
resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz"
integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==
-catharsis@^0.9.0:
- version "0.9.0"
- resolved "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz"
- integrity sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==
- dependencies:
- lodash "^4.17.15"
-
chalk@^2.4.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
@@ -7161,7 +7161,7 @@ compress-commons@^6.0.2:
normalize-path "^3.0.0"
readable-stream "^4.0.0"
-compressible@^2.0.12, compressible@~2.0.16:
+compressible@~2.0.16:
version "2.0.18"
resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz"
integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
@@ -7263,11 +7263,21 @@ content-disposition@0.5.4:
dependencies:
safe-buffer "5.2.1"
-content-type@^1.0.4, content-type@~1.0.4, content-type@~1.0.5:
+content-disposition@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-1.1.0.tgz#f3db789c752d45564cc7e9e1e0b31790d4a38e17"
+ integrity sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==
+
+content-type@^1.0.4, content-type@^1.0.5, content-type@~1.0.4, content-type@~1.0.5:
version "1.0.5"
resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz"
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
+content-type@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-2.0.0.tgz#2fb3ede69dffa0af78ca7c4ce7589680638b56df"
+ integrity sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==
+
convert-source-map@^1.5.0, convert-source-map@^1.7.0:
version "1.9.0"
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
@@ -7283,11 +7293,21 @@ cookie-signature@1.0.6:
resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
+cookie-signature@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.2.2.tgz#57c7fc3cc293acab9fec54d73e15690ebe4a1793"
+ integrity sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==
+
cookie@0.5.0:
version "0.5.0"
resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz"
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
+cookie@^0.7.1:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7"
+ integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
+
copy-to-clipboard@^3.3.1:
version "3.3.3"
resolved "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz"
@@ -7436,7 +7456,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
shebang-command "^2.0.0"
which "^2.0.1"
-cross-spawn@^7.0.1, cross-spawn@^7.0.5, cross-spawn@^7.0.6:
+cross-spawn@^7.0.1, cross-spawn@^7.0.5:
version "7.0.6"
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz"
integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
@@ -7651,6 +7671,13 @@ debug@^4.4.0:
dependencies:
ms "^2.1.3"
+debug@^4.4.3:
+ version "4.4.3"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
+ integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
+ dependencies:
+ ms "^2.1.3"
+
decamelize-keys@^1.1.0:
version "1.1.1"
resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz"
@@ -7747,7 +7774,7 @@ deep-freeze@0.0.1:
resolved "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz"
integrity sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==
-deep-is@^0.1.3, deep-is@~0.1.3:
+deep-is@^0.1.3:
version "0.1.4"
resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
@@ -8125,6 +8152,16 @@ duplexify@^4.0.0:
readable-stream "^3.1.1"
stream-shift "^1.0.0"
+duplexify@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.3.tgz#a07e1c0d0a2c001158563d32592ba58bddb0236f"
+ integrity sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==
+ dependencies:
+ end-of-stream "^1.4.1"
+ inherits "^2.0.3"
+ readable-stream "^3.1.1"
+ stream-shift "^1.0.2"
+
ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11:
version "1.0.11"
resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz"
@@ -8192,6 +8229,11 @@ enabled@2.0.x:
resolved "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz"
integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
+encodeurl@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
+ integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
+
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz"
@@ -8228,26 +8270,11 @@ enhanced-resolve@^5.12.0, enhanced-resolve@^5.15.0, enhanced-resolve@^5.7.0:
graceful-fs "^4.2.4"
tapable "^2.2.0"
-ent@^2.2.0:
- version "2.2.2"
- resolved "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz"
- integrity sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==
- dependencies:
- call-bound "^1.0.3"
- es-errors "^1.3.0"
- punycode "^1.4.1"
- safe-regex-test "^1.1.0"
-
entities@^2.0.0:
version "2.2.0"
resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
-entities@^4.4.0:
- version "4.5.0"
- resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz"
- integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
-
entities@^6.0.0:
version "6.0.1"
resolved "https://registry.yarnpkg.com/entities/-/entities-6.0.1.tgz#c28c34a43379ca7f61d074130b2f5f7020a30694"
@@ -8574,7 +8601,7 @@ escape-goat@^2.0.0:
resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz"
integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==
-escape-html@~1.0.3:
+escape-html@^1.0.3, escape-html@~1.0.3:
version "1.0.3"
resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"
integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
@@ -8594,18 +8621,6 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-escodegen@^1.13.0:
- version "1.14.3"
- resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz"
- integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
- dependencies:
- esprima "^4.0.1"
- estraverse "^4.2.0"
- esutils "^2.0.2"
- optionator "^0.8.1"
- optionalDependencies:
- source-map "~0.6.1"
-
escodegen@^2.0.0, escodegen@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz"
@@ -8833,7 +8848,7 @@ eslint@^8.7.0:
strip-ansi "^6.0.1"
text-table "^0.2.0"
-espree@^9.0.0, espree@^9.6.0, espree@^9.6.1:
+espree@^9.6.0, espree@^9.6.1:
version "9.6.1"
resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz"
integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
@@ -8861,7 +8876,7 @@ esrecurse@^4.3.0:
dependencies:
estraverse "^5.2.0"
-estraverse@^4.1.1, estraverse@^4.2.0:
+estraverse@^4.1.1:
version "4.3.0"
resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
@@ -8881,7 +8896,7 @@ esutils@^2.0.2:
resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-etag@~1.8.1:
+etag@^1.8.1, etag@~1.8.1:
version "1.8.1"
resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz"
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
@@ -8906,6 +8921,18 @@ events@^3.2.0, events@^3.3.0:
resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+eventsource-parser@^3.0.0, eventsource-parser@^3.0.1:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/eventsource-parser/-/eventsource-parser-3.0.8.tgz#1c792503e4080455d00701bb1f7a1d60734d0e58"
+ integrity sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ==
+
+eventsource@^3.0.2:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-3.0.7.tgz#1157622e2f5377bb6aef2114372728ba0c156989"
+ integrity sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==
+ dependencies:
+ eventsource-parser "^3.0.1"
+
evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
version "1.0.3"
resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz"
@@ -9034,6 +9061,13 @@ exponential-backoff@^3.1.1:
resolved "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz"
integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==
+express-rate-limit@^8.2.1:
+ version "8.5.2"
+ resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-8.5.2.tgz#5922dbf76df2124611cea955d93432b37514b2f3"
+ integrity sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==
+ dependencies:
+ ip-address "^10.2.0"
+
express@^4.16.4, express@^4.17.3, express@^4.18.2:
version "4.18.2"
resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz"
@@ -9071,6 +9105,40 @@ express@^4.16.4, express@^4.17.3, express@^4.18.2:
utils-merge "1.0.1"
vary "~1.1.2"
+express@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/express/-/express-5.2.1.tgz#8f21d15b6d327f92b4794ecf8cb08a72f956ac04"
+ integrity sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==
+ dependencies:
+ accepts "^2.0.0"
+ body-parser "^2.2.1"
+ content-disposition "^1.0.0"
+ content-type "^1.0.5"
+ cookie "^0.7.1"
+ cookie-signature "^1.2.1"
+ debug "^4.4.0"
+ depd "^2.0.0"
+ encodeurl "^2.0.0"
+ escape-html "^1.0.3"
+ etag "^1.8.1"
+ finalhandler "^2.1.0"
+ fresh "^2.0.0"
+ http-errors "^2.0.0"
+ merge-descriptors "^2.0.0"
+ mime-types "^3.0.0"
+ on-finished "^2.4.1"
+ once "^1.4.0"
+ parseurl "^1.3.3"
+ proxy-addr "^2.0.7"
+ qs "^6.14.0"
+ range-parser "^1.2.1"
+ router "^2.2.0"
+ send "^1.1.0"
+ serve-static "^2.2.0"
+ statuses "^2.0.1"
+ type-is "^2.0.1"
+ vary "^1.1.2"
+
extend@^3.0.0, extend@^3.0.2:
version "3.0.2"
resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz"
@@ -9095,6 +9163,11 @@ extract-zip@^1.6.6:
mkdirp "^0.5.4"
yauzl "^2.10.0"
+farmhash-modern@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/farmhash-modern/-/farmhash-modern-1.1.0.tgz#c36b34ad196290d57b0b482dc89e637d0b59835f"
+ integrity sha512-6ypT4XfgqJk/F3Yuv4SX26I3doUjt0GTG4a+JgWxXQpxXzTBq8fPUeGHfcYMMDPHJHm3yPOSjaeBwBGAHWXCdA==
+
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
@@ -9126,27 +9199,34 @@ fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
+fast-levenshtein@^2.0.6:
version "2.0.6"
resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
-fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3:
- version "1.0.6"
- resolved "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz"
- integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==
-
fast-uri@^3.0.1:
version "3.0.6"
resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz"
integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==
-fast-xml-parser@^4.2.2:
- version "4.5.3"
- resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz"
- integrity sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==
+fast-xml-builder@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.2.0.tgz#abd2363145a7625d9789ad96da375fabe3cff28c"
+ integrity sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==
dependencies:
- strnum "^1.1.1"
+ path-expression-matcher "^1.5.0"
+ xml-naming "^0.1.0"
+
+fast-xml-parser@^5.3.4:
+ version "5.8.0"
+ resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.8.0.tgz#64d71f0f8d4bf23621dffd762aef7e98c1884fc1"
+ integrity sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg==
+ dependencies:
+ "@nodable/entities" "^2.1.0"
+ fast-xml-builder "^1.2.0"
+ path-expression-matcher "^1.5.0"
+ strnum "^2.3.0"
+ xml-naming "^0.1.0"
fastq@^1.6.0:
version "1.15.0"
@@ -9285,6 +9365,18 @@ finalhandler@1.2.0:
statuses "2.0.1"
unpipe "~1.0.0"
+finalhandler@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-2.1.1.tgz#a2c517a6559852bcdb06d1f8bd7f51b68fad8099"
+ integrity sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==
+ dependencies:
+ debug "^4.4.0"
+ encodeurl "^2.0.0"
+ escape-html "^1.0.3"
+ on-finished "^2.4.1"
+ parseurl "^1.3.3"
+ statuses "^2.0.1"
+
find-cache-dir@^2.0.0:
version "2.1.0"
resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz"
@@ -9365,22 +9457,23 @@ findup-sync@^5.0.0:
micromatch "^4.0.4"
resolve-dir "^1.0.1"
-firebase-admin@^11.11.1:
- version "11.11.1"
- resolved "https://registry.npmjs.org/firebase-admin/-/firebase-admin-11.11.1.tgz"
- integrity sha512-UyEbq+3u6jWzCYbUntv/HuJiTixwh36G1R9j0v71mSvGAx/YZEWEW7uSGLYxBYE6ckVRQoKMr40PYUEzrm/4dg==
+firebase-admin@^12.0.0:
+ version "12.7.0"
+ resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-12.7.0.tgz#586c9ed852c4bb2d4d72f0d52c1c48a2b6dee793"
+ integrity sha512-raFIrOyTqREbyXsNkSHyciQLfv8AUZazehPaQS1lZBSCDYW74FYXU0nQZa3qHI4K+hawohlDbywZ4+qce9YNxA==
dependencies:
- "@fastify/busboy" "^1.2.1"
- "@firebase/database-compat" "^0.3.4"
- "@firebase/database-types" "^0.10.4"
- "@types/node" ">=12.12.47"
+ "@fastify/busboy" "^3.0.0"
+ "@firebase/database-compat" "1.0.8"
+ "@firebase/database-types" "1.0.5"
+ "@types/node" "^22.0.1"
+ farmhash-modern "^1.1.0"
jsonwebtoken "^9.0.0"
- jwks-rsa "^3.0.1"
+ jwks-rsa "^3.1.0"
node-forge "^1.3.1"
- uuid "^9.0.0"
+ uuid "^10.0.0"
optionalDependencies:
- "@google-cloud/firestore" "^6.8.0"
- "@google-cloud/storage" "^6.9.5"
+ "@google-cloud/firestore" "^7.7.0"
+ "@google-cloud/storage" "^7.7.0"
firebase-tools@^13.18.0:
version "13.35.1"
@@ -9532,14 +9625,6 @@ foreground-child@^3.1.0:
cross-spawn "^7.0.0"
signal-exit "^4.0.1"
-foreground-child@^3.3.1:
- version "3.3.1"
- resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz"
- integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==
- dependencies:
- cross-spawn "^7.0.6"
- signal-exit "^4.0.1"
-
fork-ts-checker-webpack-plugin@^8.0.0:
version "8.0.0"
resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz"
@@ -9599,6 +9684,11 @@ fresh@0.5.2:
resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"
integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
+fresh@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4"
+ integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==
+
fs-constants@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz"
@@ -9700,17 +9790,7 @@ fuzzy@^0.1.3:
resolved "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz"
integrity sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w==
-gaxios@^5.0.0, gaxios@^5.0.1:
- version "5.1.3"
- resolved "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz"
- integrity sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==
- dependencies:
- extend "^3.0.2"
- https-proxy-agent "^5.0.0"
- is-stream "^2.0.0"
- node-fetch "^2.6.9"
-
-gaxios@^6.0.0, gaxios@^6.0.3, gaxios@^6.1.1, gaxios@^6.7.0:
+gaxios@^6.0.0, gaxios@^6.0.2, gaxios@^6.0.3, gaxios@^6.1.1, gaxios@^6.7.0:
version "6.7.1"
resolved "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz"
integrity sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==
@@ -9721,14 +9801,6 @@ gaxios@^6.0.0, gaxios@^6.0.3, gaxios@^6.1.1, gaxios@^6.7.0:
node-fetch "^2.6.9"
uuid "^9.0.1"
-gcp-metadata@^5.3.0:
- version "5.3.0"
- resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz"
- integrity sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==
- dependencies:
- gaxios "^5.0.0"
- json-bigint "^1.0.0"
-
gcp-metadata@^6.1.0:
version "6.1.1"
resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz"
@@ -9932,18 +10004,6 @@ glob-to-regexp@^0.4.1:
resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-glob@*:
- version "11.0.3"
- resolved "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz"
- integrity sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==
- dependencies:
- foreground-child "^3.3.1"
- jackspeak "^4.1.1"
- minimatch "^10.0.3"
- minipass "^7.1.2"
- package-json-from-dist "^1.0.0"
- path-scurry "^2.0.0"
-
glob@7.1.7:
version "7.1.7"
resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz"
@@ -9991,17 +10051,6 @@ glob@^7.1.3, glob@^7.1.4:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^8.0.0:
- version "8.1.0"
- resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz"
- integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^5.0.1"
- once "^1.3.0"
-
global-dirs@^3.0.0:
version "3.0.1"
resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz"
@@ -10076,22 +10125,7 @@ globby@^11.0.1, globby@^11.0.2, globby@^11.1.0:
merge2 "^1.4.1"
slash "^3.0.0"
-google-auth-library@^8.0.1, google-auth-library@^8.0.2:
- version "8.9.0"
- resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz"
- integrity sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==
- dependencies:
- arrify "^2.0.0"
- base64-js "^1.3.0"
- ecdsa-sig-formatter "^1.0.11"
- fast-text-encoding "^1.0.0"
- gaxios "^5.0.0"
- gcp-metadata "^5.3.0"
- gtoken "^6.1.0"
- jws "^4.0.0"
- lru-cache "^6.0.0"
-
-google-auth-library@^9.11.0, google-auth-library@^9.2.0, google-auth-library@^9.3.0, google-auth-library@^9.7.0:
+google-auth-library@^9.11.0, google-auth-library@^9.2.0, google-auth-library@^9.3.0, google-auth-library@^9.6.3, google-auth-library@^9.7.0:
version "9.15.1"
resolved "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz"
integrity sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==
@@ -10103,28 +10137,7 @@ google-auth-library@^9.11.0, google-auth-library@^9.2.0, google-auth-library@^9.
gtoken "^7.0.0"
jws "^4.0.0"
-google-gax@^3.5.7:
- version "3.6.1"
- resolved "https://registry.npmjs.org/google-gax/-/google-gax-3.6.1.tgz"
- integrity sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w==
- dependencies:
- "@grpc/grpc-js" "~1.8.0"
- "@grpc/proto-loader" "^0.7.0"
- "@types/long" "^4.0.0"
- "@types/rimraf" "^3.0.2"
- abort-controller "^3.0.0"
- duplexify "^4.0.0"
- fast-text-encoding "^1.0.3"
- google-auth-library "^8.0.2"
- is-stream-ended "^0.1.4"
- node-fetch "^2.6.1"
- object-hash "^3.0.0"
- proto3-json-serializer "^1.0.0"
- protobufjs "7.2.4"
- protobufjs-cli "1.1.1"
- retry-request "^5.0.0"
-
-google-gax@^4.3.3:
+google-gax@^4.0.3, google-gax@^4.3.3:
version "4.6.1"
resolved "https://registry.npmjs.org/google-gax/-/google-gax-4.6.1.tgz"
integrity sha512-V6eky/xz2mcKfAd1Ioxyd6nmA61gao3n01C+YeuIwu3vzM9EDR6wcVzMSIbLMDXWeoi9SHYctXuKYC5uJUT3eQ==
@@ -10147,13 +10160,6 @@ google-logging-utils@^0.0.2:
resolved "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz"
integrity sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==
-google-p12-pem@^4.0.0:
- version "4.0.1"
- resolved "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz"
- integrity sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==
- dependencies:
- node-forge "^1.3.1"
-
googleapis-common@^7.0.0:
version "7.2.0"
resolved "https://registry.npmjs.org/googleapis-common/-/googleapis-common-7.2.0.tgz"
@@ -10200,7 +10206,7 @@ graceful-fs@4.2.10:
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
-graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
version "4.2.11"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
@@ -10210,15 +10216,6 @@ graphemer@^1.4.0:
resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
-gtoken@^6.1.0:
- version "6.1.2"
- resolved "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz"
- integrity sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==
- dependencies:
- gaxios "^5.0.1"
- google-p12-pem "^4.0.0"
- jws "^4.0.0"
-
gtoken@^7.0.0:
version "7.1.0"
resolved "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz"
@@ -10427,6 +10424,11 @@ homedir-polyfill@^1.0.1:
dependencies:
parse-passwd "^1.0.0"
+hono@^4.11.4:
+ version "4.12.18"
+ resolved "https://registry.yarnpkg.com/hono/-/hono-4.12.18.tgz#f6d301938868c3a8bdb639495f4e326a19181505"
+ integrity sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==
+
hosted-git-info@^2.1.4:
version "2.8.9"
resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz"
@@ -10461,6 +10463,11 @@ html-entities@^2.1.0:
resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz"
integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==
+html-entities@^2.5.2:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.6.0.tgz#7c64f1ea3b36818ccae3d3fb48b6974208e984f8"
+ integrity sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==
+
html-escaper@^2.0.0:
version "2.0.2"
resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz"
@@ -10528,6 +10535,17 @@ http-errors@2.0.0:
statuses "2.0.1"
toidentifier "1.0.1"
+http-errors@^2.0.0, http-errors@^2.0.1, http-errors@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b"
+ integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==
+ dependencies:
+ depd "~2.0.0"
+ inherits "~2.0.4"
+ setprototypeof "~1.2.0"
+ statuses "~2.0.2"
+ toidentifier "~1.0.1"
+
http-parser-js@>=0.5.1:
version "0.5.8"
resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz"
@@ -10638,6 +10656,13 @@ iconv-lite@0.6.3, iconv-lite@^0.6.2:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
+iconv-lite@^0.7.0, iconv-lite@~0.7.0:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.7.2.tgz#d0bdeac3f12b4835b7359c2ad89c422a4d1cc72e"
+ integrity sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
icss-utils@^5.0.0, icss-utils@^5.1.0:
version "5.1.0"
resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz"
@@ -10913,6 +10938,11 @@ invariant@^2.2.4:
dependencies:
loose-envify "^1.0.0"
+ip-address@^10.2.0:
+ version "10.2.0"
+ resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-10.2.0.tgz#805fc178b20c518bd4c8548b24fe30892d7f3206"
+ integrity sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==
+
ip-address@^9.0.5:
version "9.0.5"
resolved "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz"
@@ -11234,16 +11264,6 @@ is-regex@^1.1.4:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
-is-regex@^1.2.1:
- version "1.2.1"
- resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz"
- integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==
- dependencies:
- call-bound "^1.0.2"
- gopd "^1.2.0"
- has-tostringtag "^1.0.2"
- hasown "^2.0.2"
-
is-set@^2.0.1, is-set@^2.0.2:
version "2.0.2"
resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz"
@@ -11474,7 +11494,7 @@ iterator.prototype@^1.1.2:
reflect.getprototypeof "^1.0.4"
set-function-name "^2.0.1"
-jackspeak@2.1.1, jackspeak@^2.3.5, jackspeak@^3.1.2, jackspeak@^4.1.1:
+jackspeak@2.1.1, jackspeak@^2.3.5, jackspeak@^3.1.2:
version "2.1.1"
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.1.1.tgz#2a42db4cfbb7e55433c28b6f75d8b796af9669cd"
integrity sha512-juf9stUEwUaILepraGOWIJTLwg48bUnBmRqd2ln2Os1sW987zeoj/hzhbvRB95oMuS2ZTpjULmdwHNX4rzZIZw==
@@ -11924,6 +11944,11 @@ jose@^4.15.4:
resolved "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz"
integrity sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==
+jose@^6.1.3:
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/jose/-/jose-6.2.3.tgz#0975197ad973251221c658a3cddc4b951a250c2d"
+ integrity sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==
+
js-sha3@0.8.0:
version "0.8.0"
resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz"
@@ -11954,13 +11979,6 @@ js-yaml@^4.1.0:
dependencies:
argparse "^2.0.1"
-js2xmlparser@^4.0.2:
- version "4.0.2"
- resolved "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz"
- integrity sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==
- dependencies:
- xmlcreate "^2.0.4"
-
jsbn@1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz"
@@ -11992,27 +12010,6 @@ jscodeshift@^0.15.1:
temp "^0.8.4"
write-file-atomic "^2.3.0"
-jsdoc@^4.0.0:
- version "4.0.4"
- resolved "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.4.tgz"
- integrity sha512-zeFezwyXeG4syyYHbvh1A967IAqq/67yXtXvuL5wnqCkFZe8I0vKfm+EO+YEvLguo6w9CDUbrAXVtJSHh2E8rw==
- dependencies:
- "@babel/parser" "^7.20.15"
- "@jsdoc/salty" "^0.2.1"
- "@types/markdown-it" "^14.1.1"
- bluebird "^3.7.2"
- catharsis "^0.9.0"
- escape-string-regexp "^2.0.0"
- js2xmlparser "^4.0.2"
- klaw "^3.0.0"
- markdown-it "^14.1.0"
- markdown-it-anchor "^8.6.7"
- marked "^4.0.10"
- mkdirp "^1.0.4"
- requizzle "^0.2.3"
- strip-json-comments "^3.1.0"
- underscore "~1.13.2"
-
jsdom@^20.0.0:
version "20.0.3"
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db"
@@ -12108,6 +12105,11 @@ json-schema-traverse@^1.0.0:
resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz"
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+json-schema-typed@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/json-schema-typed/-/json-schema-typed-8.0.2.tgz#e98ee7b1899ff4a184534d1f167c288c66bbeff4"
+ integrity sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==
+
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
@@ -12193,12 +12195,11 @@ jwa@^2.0.0:
ecdsa-sig-formatter "1.0.11"
safe-buffer "^5.0.1"
-jwks-rsa@^3.0.1:
- version "3.2.0"
- resolved "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.2.0.tgz"
- integrity sha512-PwchfHcQK/5PSydeKCs1ylNym0w/SSv8a62DgHJ//7x2ZclCoinlsjAfDxAAbpoTPybOum/Jgy+vkvMmKz89Ww==
+jwks-rsa@^3.1.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/jwks-rsa/-/jwks-rsa-3.2.2.tgz#f6d528306befacdbc62c8c0272761faac55ffbb3"
+ integrity sha512-BqTyEDV+lS8F2trk3A+qJnxV5Q9EqKCBJOPti3W97r7qTympCZjb7h2X6f2kc+0K3rsSTY1/6YG2eaXKoj497w==
dependencies:
- "@types/express" "^4.17.20"
"@types/jsonwebtoken" "^9.0.4"
debug "^4.3.4"
jose "^4.15.4"
@@ -12247,13 +12248,6 @@ kind-of@^6.0.2, kind-of@^6.0.3:
resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-klaw@^3.0.0:
- version "3.0.0"
- resolved "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz"
- integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==
- dependencies:
- graceful-fs "^4.1.9"
-
kleur@^3.0.3:
version "3.0.3"
resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz"
@@ -12322,14 +12316,6 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
-levn@~0.3.0:
- version "0.3.0"
- resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"
- integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==
- dependencies:
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
-
libsodium-wrappers@^0.7.10:
version "0.7.13"
resolved "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz"
@@ -12359,13 +12345,6 @@ lines-and-columns@^1.1.6:
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
-linkify-it@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz"
- integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==
- dependencies:
- uc.micro "^2.0.0"
-
load-yaml-file@^0.2.0:
version "0.2.0"
resolved "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz"
@@ -12546,6 +12525,11 @@ long@^5.0.0:
resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz"
integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==
+long@~1.1.2:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/long/-/long-1.1.5.tgz#b5c2c10a3d83ee0ec0aaffb3e4e711d01f607e9a"
+ integrity sha512-TU6nAF5SdasnTr28c7e74P4Crbn9o3/zwo1pM22Wvg2i2vlZ4Eelxwu4QT7j21z0sDBlJDEnEZjXTZg2J8WJrg==
+
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
@@ -12594,11 +12578,6 @@ lru-cache@^10.2.0:
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz"
integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
-lru-cache@^11.0.0:
- version "11.1.0"
- resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz"
- integrity sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==
-
lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
@@ -12710,23 +12689,6 @@ map-or-similar@^1.5.0:
resolved "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz"
integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==
-markdown-it-anchor@^8.6.7:
- version "8.6.7"
- resolved "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz"
- integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==
-
-markdown-it@^14.1.0:
- version "14.1.0"
- resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz"
- integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==
- dependencies:
- argparse "^2.0.1"
- entities "^4.4.0"
- linkify-it "^5.0.0"
- mdurl "^2.0.0"
- punycode.js "^2.3.1"
- uc.micro "^2.1.0"
-
markdown-to-jsx@^7.1.8:
version "7.3.2"
resolved "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz"
@@ -12750,7 +12712,7 @@ marked@^13.0.2:
resolved "https://registry.npmjs.org/marked/-/marked-13.0.3.tgz"
integrity sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==
-marked@^4.0.10, marked@^4.2.5:
+marked@^4.2.5:
version "4.3.0"
resolved "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz"
integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==
@@ -12837,16 +12799,16 @@ mdast-util-to-string@^3.1.0:
dependencies:
"@types/mdast" "^3.0.0"
-mdurl@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz"
- integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==
-
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
+media-typer@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561"
+ integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==
+
memfs@^3.4.1, memfs@^3.4.12:
version "3.6.0"
resolved "https://registry.npmjs.org/memfs/-/memfs-3.6.0.tgz"
@@ -12889,6 +12851,11 @@ merge-descriptors@1.0.1:
resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
+merge-descriptors@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz#ea922f660635a2249ee565e0449f951e6b603808"
+ integrity sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==
+
merge-stream@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"
@@ -13124,13 +13091,25 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34:
+mime-db@^1.54.0:
+ version "1.54.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5"
+ integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==
+
+mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.35"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
+mime-types@^3.0.0, mime-types@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.2.tgz#39002d4182575d5af036ffa118100f2524b2e2ab"
+ integrity sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==
+ dependencies:
+ mime-db "^1.54.0"
+
mime@1.6.0:
version "1.6.0"
resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"
@@ -13186,13 +13165,6 @@ minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz"
integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
-minimatch@^10.0.3:
- version "10.0.3"
- resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz"
- integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==
- dependencies:
- "@isaacs/brace-expansion" "^5.0.0"
-
minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
@@ -13335,7 +13307,7 @@ mkdirp@^0.5.4, mkdirp@^0.5.6:
dependencies:
minimist "^1.2.6"
-mkdirp@^1.0.3, mkdirp@^1.0.4:
+mkdirp@^1.0.3:
version "1.0.4"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
@@ -13458,6 +13430,11 @@ negotiator@0.6.3, negotiator@^0.6.3:
resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz"
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
+negotiator@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a"
+ integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==
+
neo-async@^2.5.0, neo-async@^2.6.2:
version "2.6.2"
resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
@@ -13875,7 +13852,7 @@ ohash@^1.1.3:
resolved "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz"
integrity sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==
-on-finished@2.4.1, on-finished@^2.2.0:
+on-finished@2.4.1, on-finished@^2.2.0, on-finished@^2.4.1:
version "2.4.1"
resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz"
integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
@@ -13952,18 +13929,6 @@ openapi3-ts@^3.1.1:
dependencies:
yaml "^2.2.1"
-optionator@^0.8.1:
- version "0.8.3"
- resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz"
- integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
- dependencies:
- deep-is "~0.1.3"
- fast-levenshtein "~2.0.6"
- levn "~0.3.0"
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
- word-wrap "~1.2.3"
-
optionator@^0.9.3:
version "0.9.3"
resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz"
@@ -14227,6 +14192,11 @@ path-exists@^5.0.0:
resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz"
integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==
+path-expression-matcher@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz#3b98545dc88ffebb593e2d8458d0929da9275f4a"
+ integrity sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==
+
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
@@ -14263,14 +14233,6 @@ path-scurry@^1.11.1:
lru-cache "^10.2.0"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
-path-scurry@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz"
- integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==
- dependencies:
- lru-cache "^11.0.0"
- minipass "^7.1.2"
-
path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
@@ -14421,6 +14383,11 @@ pirates@^4.0.4, pirates@^4.0.6:
resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz"
integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==
+pkce-challenge@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/pkce-challenge/-/pkce-challenge-5.0.1.tgz#3b4446865b17b1745e9ace2016a31f48ddf6230d"
+ integrity sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==
+
pkg-dir@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz"
@@ -14626,11 +14593,6 @@ prelude-ls@^1.2.1:
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
-prelude-ls@~1.1.2:
- version "1.1.2"
- resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"
- integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==
-
prepend-http@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz"
@@ -14750,13 +14712,6 @@ proto-list@~1.2.1:
resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz"
integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==
-proto3-json-serializer@^1.0.0:
- version "1.1.1"
- resolved "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz"
- integrity sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw==
- dependencies:
- protobufjs "^7.0.0"
-
proto3-json-serializer@^2.0.2:
version "2.0.2"
resolved "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-2.0.2.tgz"
@@ -14764,26 +14719,17 @@ proto3-json-serializer@^2.0.2:
dependencies:
protobufjs "^7.2.5"
-protobufjs-cli@1.1.1:
- version "1.1.1"
- resolved "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz"
- integrity sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA==
+protobuf.js@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/protobuf.js/-/protobuf.js-1.1.2.tgz#85870a1734a06a2ef0074d876cd7fe0b2ea0cf26"
+ integrity sha512-USO7Xus/pzPw549M1TguiyoOrKEhm9VMXv+CkDufcjMC8Rd7EPbxeRQPEjCV8ua1tm0k7z9xHkogcxovZogWdA==
dependencies:
- chalk "^4.0.0"
- escodegen "^1.13.0"
- espree "^9.0.0"
- estraverse "^5.1.0"
- glob "^8.0.0"
- jsdoc "^4.0.0"
- minimist "^1.2.0"
- semver "^7.1.2"
- tmp "^0.2.1"
- uglify-js "^3.7.7"
+ long "~1.1.2"
-protobufjs@7.2.4:
- version "7.2.4"
- resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.4.tgz#3fc1ec0cdc89dd91aef9ba6037ba07408485c3ae"
- integrity sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==
+protobufjs@^6.11.3:
+ version "6.11.4"
+ resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz"
+ integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==
dependencies:
"@protobufjs/aspromise" "^1.1.2"
"@protobufjs/base64" "^1.1.2"
@@ -14795,13 +14741,14 @@ protobufjs@7.2.4:
"@protobufjs/path" "^1.1.2"
"@protobufjs/pool" "^1.1.0"
"@protobufjs/utf8" "^1.1.0"
+ "@types/long" "^4.0.1"
"@types/node" ">=13.7.0"
- long "^5.0.0"
+ long "^4.0.0"
-protobufjs@^6.11.3:
- version "6.11.4"
- resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz"
- integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==
+protobufjs@^7.2.5, protobufjs@^7.3.2:
+ version "7.5.3"
+ resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz"
+ integrity sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==
dependencies:
"@protobufjs/aspromise" "^1.1.2"
"@protobufjs/base64" "^1.1.2"
@@ -14813,29 +14760,28 @@ protobufjs@^6.11.3:
"@protobufjs/path" "^1.1.2"
"@protobufjs/pool" "^1.1.0"
"@protobufjs/utf8" "^1.1.0"
- "@types/long" "^4.0.1"
"@types/node" ">=13.7.0"
- long "^4.0.0"
+ long "^5.0.0"
-protobufjs@^7.0.0, protobufjs@^7.2.5, protobufjs@^7.3.2:
- version "7.5.3"
- resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz"
- integrity sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==
+protobufjs@^7.2.6:
+ version "7.5.8"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.8.tgz#51b153a06da6e47153a1aa6800cb1253bc502436"
+ integrity sha512-dvpCIeLPbXZS/Ete7yLaO7RenOdken2NHKykBXbsaGxZT0UTltcarBciw+A78SRQs9iMAAVpsYA+l8b1hTePIA==
dependencies:
"@protobufjs/aspromise" "^1.1.2"
"@protobufjs/base64" "^1.1.2"
- "@protobufjs/codegen" "^2.0.4"
+ "@protobufjs/codegen" "^2.0.5"
"@protobufjs/eventemitter" "^1.1.0"
"@protobufjs/fetch" "^1.1.0"
"@protobufjs/float" "^1.0.2"
- "@protobufjs/inquire" "^1.1.0"
+ "@protobufjs/inquire" "^1.1.1"
"@protobufjs/path" "^1.1.2"
"@protobufjs/pool" "^1.1.0"
- "@protobufjs/utf8" "^1.1.0"
+ "@protobufjs/utf8" "^1.1.1"
"@types/node" ">=13.7.0"
long "^5.0.0"
-proxy-addr@~2.0.7:
+proxy-addr@^2.0.7, proxy-addr@~2.0.7:
version "2.0.7"
resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz"
integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
@@ -14904,11 +14850,6 @@ pumpify@^1.3.3:
inherits "^2.0.3"
pump "^2.0.0"
-punycode.js@^2.3.1:
- version "2.3.1"
- resolved "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz"
- integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==
-
punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz"
@@ -14961,6 +14902,13 @@ qs@^6.10.0, qs@^6.11.2, qs@^6.6.0:
dependencies:
side-channel "^1.0.4"
+qs@^6.14.0, qs@^6.14.1:
+ version "6.15.1"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.15.1.tgz#bdb55aed06bfac257a90c44a446a73fba5575c8f"
+ integrity sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==
+ dependencies:
+ side-channel "^1.1.0"
+
"qs@^6.5.1 < 6.10":
version "6.9.7"
resolved "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz"
@@ -15124,6 +15072,16 @@ raw-body@2.5.2, raw-body@^2.3.3:
iconv-lite "0.4.24"
unpipe "1.0.0"
+raw-body@^3.0.0, raw-body@^3.0.1:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-3.0.2.tgz#3e3ada5ae5568f9095d84376fd3a49b8fb000a51"
+ integrity sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==
+ dependencies:
+ bytes "~3.1.2"
+ http-errors "~2.0.1"
+ iconv-lite "~0.7.0"
+ unpipe "~1.0.0"
+
rc-config-loader@^4.0.0:
version "4.1.3"
resolved "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz"
@@ -15809,13 +15767,6 @@ requires-port@^1.0.0:
resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz"
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
-requizzle@^0.2.3:
- version "0.2.4"
- resolved "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz"
- integrity sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==
- dependencies:
- lodash "^4.17.21"
-
reselect@^4.1.8:
version "4.1.8"
resolved "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz"
@@ -15913,14 +15864,6 @@ ret@~0.1.10:
resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-retry-request@^5.0.0:
- version "5.0.2"
- resolved "https://registry.npmjs.org/retry-request/-/retry-request-5.0.2.tgz"
- integrity sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==
- dependencies:
- debug "^4.1.1"
- extend "^3.0.2"
-
retry-request@^7.0.0:
version "7.0.2"
resolved "https://registry.npmjs.org/retry-request/-/retry-request-7.0.2.tgz"
@@ -15974,9 +15917,9 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^3.0.0"
inherits "^2.0.1"
-router@^2.0.0:
+router@^2.0.0, router@^2.2.0:
version "2.2.0"
- resolved "https://registry.npmjs.org/router/-/router-2.2.0.tgz"
+ resolved "https://registry.yarnpkg.com/router/-/router-2.2.0.tgz#019be620b711c87641167cc79b99090f00b146ef"
integrity sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==
dependencies:
debug "^4.4.0"
@@ -16078,15 +16021,6 @@ safe-regex-test@^1.0.3:
es-errors "^1.3.0"
is-regex "^1.1.4"
-safe-regex-test@^1.1.0:
- version "1.1.0"
- resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz"
- integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==
- dependencies:
- call-bound "^1.0.2"
- es-errors "^1.3.0"
- is-regex "^1.2.1"
-
safe-stable-stringify@^2.3.1:
version "2.4.3"
resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz"
@@ -16203,7 +16137,7 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0, semver@^6.3.1:
resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.0.0, semver@^7.1.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4:
+semver@^7.0.0, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.2, semver@^7.5.3, semver@^7.5.4:
version "7.7.3"
resolved "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz"
integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==
@@ -16227,6 +16161,23 @@ send@0.18.0:
range-parser "~1.2.1"
statuses "2.0.1"
+send@^1.1.0, send@^1.2.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/send/-/send-1.2.1.tgz#9eab743b874f3550f40a26867bf286ad60d3f3ed"
+ integrity sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==
+ dependencies:
+ debug "^4.4.3"
+ encodeurl "^2.0.0"
+ escape-html "^1.0.3"
+ etag "^1.8.1"
+ fresh "^2.0.0"
+ http-errors "^2.0.1"
+ mime-types "^3.0.2"
+ ms "^2.1.3"
+ on-finished "^2.4.1"
+ range-parser "^1.2.1"
+ statuses "^2.0.2"
+
serialize-javascript@^6.0.1:
version "6.0.1"
resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz"
@@ -16244,6 +16195,16 @@ serve-static@1.15.0:
parseurl "~1.3.3"
send "0.18.0"
+serve-static@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-2.2.1.tgz#7f186a4a4e5f5b663ad7a4294ff1bf37cf0e98a9"
+ integrity sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==
+ dependencies:
+ encodeurl "^2.0.0"
+ escape-html "^1.0.3"
+ parseurl "^1.3.3"
+ send "^1.2.0"
+
set-blocking@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
@@ -16285,7 +16246,7 @@ setimmediate@^1.0.4, setimmediate@^1.0.5:
resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"
integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
-setprototypeof@1.2.0:
+setprototypeof@1.2.0, setprototypeof@~1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz"
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
@@ -16623,6 +16584,11 @@ statuses@2.0.1:
resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+statuses@^2.0.1, statuses@^2.0.2, statuses@~2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382"
+ integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==
+
statuses@~1.5.0:
version "1.5.0"
resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
@@ -16689,6 +16655,11 @@ stream-shift@^1.0.0:
resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz"
integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
+stream-shift@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b"
+ integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==
+
streamsearch@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz"
@@ -16879,7 +16850,7 @@ strip-indent@^4.0.0:
dependencies:
min-indent "^1.0.1"
-strip-json-comments@^3.0.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+strip-json-comments@^3.0.1, strip-json-comments@^3.1.1:
version "3.1.1"
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
@@ -16889,10 +16860,10 @@ strip-json-comments@~2.0.1:
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
-strnum@^1.1.1:
- version "1.1.2"
- resolved "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz"
- integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==
+strnum@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.3.0.tgz#81bfbfef53db8c3217ea62a98c026886ec4a2761"
+ integrity sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==
stubs@^3.0.0:
version "3.0.0"
@@ -17086,17 +17057,6 @@ tcp-port-used@^1.0.2:
debug "4.3.1"
is2 "^2.0.6"
-teeny-request@^8.0.0:
- version "8.0.3"
- resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-8.0.3.tgz"
- integrity sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww==
- dependencies:
- http-proxy-agent "^5.0.0"
- https-proxy-agent "^5.0.0"
- node-fetch "^2.6.1"
- stream-events "^1.0.5"
- uuid "^9.0.0"
-
teeny-request@^9.0.0:
version "9.0.0"
resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-9.0.0.tgz"
@@ -17168,11 +17128,6 @@ test-exclude@^6.0.0:
glob "^7.1.4"
minimatch "^3.0.4"
-text-decoding@^1.0.0:
- version "1.0.0"
- resolved "https://registry.npmjs.org/text-decoding/-/text-decoding-1.0.0.tgz"
- integrity sha512-/0TJD42KDnVwKmDK6jj3xP7E2MG7SHAOG4tyTgyUCRPdHwvkquYNLEQltmdMa3owq3TkddCVcTsoctJI8VQNKA==
-
text-hex@1.0.x:
version "1.0.0"
resolved "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz"
@@ -17273,7 +17228,7 @@ toggle-selection@^1.0.6:
resolved "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz"
integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==
-toidentifier@1.0.1:
+toidentifier@1.0.1, toidentifier@~1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz"
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
@@ -17433,13 +17388,6 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"
-type-check@~0.3.2:
- version "0.3.2"
- resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"
- integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==
- dependencies:
- prelude-ls "~1.1.2"
-
type-detect@4.0.8:
version "4.0.8"
resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz"
@@ -17480,6 +17428,15 @@ type-fest@^2.14.0, type-fest@^2.19.0, type-fest@~2.19:
resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz"
integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
+type-is@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.1.0.tgz#71d1a7053293582e16ac9f3ebaf1ab9aa49e5570"
+ integrity sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==
+ dependencies:
+ content-type "^2.0.0"
+ media-typer "^1.1.0"
+ mime-types "^3.0.0"
+
type-is@~1.6.18:
version "1.6.18"
resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz"
@@ -17603,11 +17560,6 @@ typesense@^1.2.2, typesense@^1.7.0:
axios "^0.26.0"
loglevel "^1.8.0"
-uc.micro@^2.0.0, uc.micro@^2.1.0:
- version "2.1.0"
- resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz"
- integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==
-
ufo@^1.3.2:
version "1.4.0"
resolved "https://registry.npmjs.org/ufo/-/ufo-1.4.0.tgz"
@@ -17618,11 +17570,6 @@ uglify-js@^3.1.4:
resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz"
integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==
-uglify-js@^3.7.7:
- version "3.19.3"
- resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz"
- integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==
-
unbox-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
@@ -17648,16 +17595,16 @@ uncontrollable@^8.0.1:
resolved "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz"
integrity sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==
-underscore@~1.13.2:
- version "1.13.7"
- resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz"
- integrity sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==
-
undici-types@~5.26.4:
version "5.26.5"
resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz"
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
+undici-types@~6.21.0:
+ version "6.21.0"
+ resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb"
+ integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
+
unicode-canonical-property-names-ecmascript@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz"
@@ -17984,6 +17931,11 @@ utils-merge@1.0.1:
resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
+uuid@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294"
+ integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==
+
uuid@^8.0.0, uuid@^8.3.2:
version "8.3.2"
resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz"
@@ -18031,7 +17983,7 @@ validate-npm-package-license@^3.0.1:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
-vary@^1, vary@~1.1.2:
+vary@^1, vary@^1.1.2, vary@~1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
@@ -18360,11 +18312,6 @@ winston@^3.0.0:
triple-beam "^1.3.0"
winston-transport "^4.5.0"
-word-wrap@~1.2.3:
- version "1.2.5"
- resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz"
- integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
-
wordwrap@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"
@@ -18452,16 +18399,16 @@ xml-name-validator@^4.0.0:
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
+xml-naming@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/xml-naming/-/xml-naming-0.1.0.tgz#8ab7106c5b8d23caa2fabac1cadf17136379fbd8"
+ integrity sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==
+
xmlchars@^2.2.0:
version "2.2.0"
resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz"
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
-xmlcreate@^2.0.4:
- version "2.0.4"
- resolved "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz"
- integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==
-
xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"
@@ -18595,7 +18542,17 @@ zip-stream@^6.0.1:
compress-commons "^6.0.2"
readable-stream "^4.0.0"
+zod-to-json-schema@^3.25.1:
+ version "3.25.2"
+ resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz#3fa799a7badd554541472fb65843fdc460b2e5aa"
+ integrity sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==
+
zod@^3.20.2:
version "3.22.4"
resolved "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz"
integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==
+
+"zod@^3.25 || ^4.0":
+ version "4.4.3"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-4.4.3.tgz#b680f172885d18bbebf21a834ea25e55a1bbf356"
+ integrity sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==