diff --git a/Node/call-vertex-remote-config-server/README.md b/Node/call-vertex-remote-config-server/README.md
new file mode 100644
index 0000000000..2b85fba344
--- /dev/null
+++ b/Node/call-vertex-remote-config-server/README.md
@@ -0,0 +1,81 @@
+Call the Vertex AI Gemini API with Remote Config and App Check
+==============================================================
+
+Introduction
+------------
+
+This is a sample callable function that authenticates clients with App
+Check and then sends queries to Gemini using the Vertex AI Gemini API. Vertex
+AI model parameters (including the model itself) are controlled by
+Remote Config server features included in the Firebase Admin SDK for
+Node.js.
+
+Use the web client provided in `client/` to test the function.
+
+- [Read more about Remote Config for servers](https://firebase.google.com/docs/remote-config/server).
+- [Read more about App Check](https://firebase.google.com/docs/app-check).
+- [Read more about the Vertex AI Node.js Client library](https://cloud.google.com/nodejs/docs/reference/aiplatform/latest).
+
+Important: Vertex AI and Cloud Functions require a billing account. Review
+[Vertex AI pricing](https://cloud.google.com/vertex-ai/pricing) and
+[Firebase pricing](https://firebase.google.com/pricing) before running
+this function. If you're new to Firebase and Google Cloud, check to see if
+you're eligible for a
+[$300 credit](https://firebase.google.com/support/faq#pricing-free-trial) and
+a Free Trial Cloud Billing account.
+
+Get Started
+---------------
+
+ 1. Follow the instructions in client/README.md to create a Firebase project,
+ enable ReCAPTCHA Enterprise, enable and enforce Firebase App Check, and add
+ your Firebase config and ReCAPTCHA Enterprise key to the client config.
+
+ 2. Enable [recommended Vertex AI APIs](https://console.cloud.google.com/vertex-ai).
+
+ 3. Configure a Remote Config server template on the Firebase console. Use the template
+ described in
+ [Use server side Remote Config with Cloud Functions and Vertex
+ AI](https://firebase.google.com/docs/remote-config/solution-server#implementation-create-template),
+ which contains all of the parameters used in this function sample.
+
+ 4. Install dependencies: `cd functions && npm install`
+
+ 5. If you haven't already done so, install firebase-tools:
+
+ `npm i firebase-tools@latest`
+
+ 6. Log into Firebase:
+
+ `firebase login`
+
+ 7. Deploy the function. We recommend testing in the
+ [Firebase emulator](https://firebase.google.com/docs/remote-config/solution-server#implementation-deploy-and-test-in-emulator):
+
+ `firebase emulators:start`
+
+ 8. If testing in the emulator, verify that `testMode` is set to `true` in
+ `client/main.ts`, then start the client:
+
+ `cd client && npm run dev`
+
+ TIP: If you're using the emulator, you can deploy both the function and hosting
+ to the emulator. From the `client` directory, run `npm run build`.
+ Then, from the parent directory, run `firebase server --only functions,hosting`.
+ Open http://localhost:5000 to access and test the web client's connection
+ to the `callVertexWithRC` function.
+
+ 0. Open the [client app in a browser](http://localhost:5173) and enter a
+ prompt. To access the Vertex AI Gemini API, make sure that you have
+ set the `is_vertex_enabled` boolean parameter in your Remote Config
+ server template to `true`.
+
+Support
+-------
+
+- [Firebase Support](https://firebase.google.com/support/)
+
+License
+-------
+
+© Google, 2024. Licensed under an [Apache-2](../../LICENSE) license.
diff --git a/Node/call-vertex-remote-config-server/client/README.md b/Node/call-vertex-remote-config-server/client/README.md
new file mode 100644
index 0000000000..e4bacdab35
--- /dev/null
+++ b/Node/call-vertex-remote-config-server/client/README.md
@@ -0,0 +1,59 @@
+Test client for call-vertex-remote-config-server
+================================================
+
+Introduction
+------------
+
+This is a basic web app that calls the `callVertexWithRC` function. The
+function uses values stored in Remote Config server templates with
+the Firebase Admin SDK to dynamically update Vertex AI Gemini API
+parameters. Access is controlled using Firebase App Check.
+
+- [Read more about Remote Config for servers](https://firebase.google.com/docs/remote-config/server).
+- [Read more about App Check](https://firebase.google.com/docs/app-check).
+- [Read more about the Vertex AI Node.js Client library](https://cloud.google.com/nodejs/docs/reference/aiplatform/latest).
+
+Important: Vertex AI and Cloud Functions require a billing account. Review
+[Vertex AI pricing](https://cloud.google.com/vertex-ai/pricing) and
+[Firebase pricing](https://firebase.google.com/pricing) before running
+this function. If you're new to Firebase and Google Cloud, check to see if
+you're eligible for a
+[$300 credit](https://firebase.google.com/support/faq#pricing-free-trial) and
+a Free Trial Cloud Billing account.
+
+Get started
+---------------
+
+ 1. Create a [Firebase project and register a web app](https://firebase.google.com/docs/web/setup#create-firebase-project-and-app).
+ 2. [Create a ReCAPTCHA Enterprise key](https://firebase.google.com/docs/app-check/web/recaptcha-enterprise-provider#project-setup)
+ in the same project.
+ 3. [Enable App Check](https://firebase.google.com/docs/app-check/web/recaptcha-enterprise-provider)
+ in the Firebase console with the ReCAPTCHA Enterprise site key you created.
+ 4. Copy your Firebase project config and your ReCAPTCHA Enterprise site key
+ into the appropriate places in `config.ts` in this directory.
+ 5. In this directory, run `npm install`.
+ 6. Set up and deploy the function as described in [../README.md](../README.md).
+ 7. In this directory, run `npm run dev` to run the client.
+
+To run this app against the `callVertexWithRC` function running in the Firebase
+emulator, ensure that `testMode`in `main.ts` is set to `true`. Before testing
+with a deployed (i.e., not emulated) function, set `testMode` to `false`.
+
+TIP: You can build the client and deploy to Firebase Hosting by running
+ `npm run build` from the `client` directory. Hosting deliverables are
+ generated and saved in `client/dist` and you can then deploy to
+ the emulator or Firebase Hosting from the parent directory. We recommend
+ deploying to the emulator first--you can use the following command to
+ deploy the function and web client simultaneously:
+
+ firebase serve --only functions,hosting
+
+Support
+-------
+
+- [Firebase Support](https://firebase.google.com/support/)
+
+License
+-------
+
+© Google, 2024. Licensed under an [Apache-2](../../../LICENSE) license.
diff --git a/Node/call-vertex-remote-config-server/client/config.ts b/Node/call-vertex-remote-config-server/client/config.ts
new file mode 100644
index 0000000000..30cfc6363e
--- /dev/null
+++ b/Node/call-vertex-remote-config-server/client/config.ts
@@ -0,0 +1,8 @@
+export const firebaseConfig = {
+ YOUR_FIREBASE_CONFIG
+};
+
+ // Your ReCAPTCHA Enterprise site key (must be from the same project
+ // as the Firebase config above).
+export const RECAPTCHA_ENTERPRISE_SITE_KEY =
+ "YOUR_RECAPTCHA_KEY";
diff --git a/Node/call-vertex-remote-config-server/client/index.html b/Node/call-vertex-remote-config-server/client/index.html
new file mode 100644
index 0000000000..fac205fd9e
--- /dev/null
+++ b/Node/call-vertex-remote-config-server/client/index.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+ Client app for Remote Config server function with Vertex AI and App Check
+
+
+
+
+
+
Client app for Remote Config server function with Vertex AI and App Check
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Node/call-vertex-remote-config-server/client/main.ts b/Node/call-vertex-remote-config-server/client/main.ts
new file mode 100644
index 0000000000..f749d56450
--- /dev/null
+++ b/Node/call-vertex-remote-config-server/client/main.ts
@@ -0,0 +1,117 @@
+/**
+ * @license
+ * Copyright 2024 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import { initializeApp } from "firebase/app";
+import { firebaseConfig, RECAPTCHA_ENTERPRISE_SITE_KEY } from "./config";
+import {
+ initializeAppCheck,
+ ReCaptchaEnterpriseProvider,
+} from "firebase/app-check";
+import {
+ getFunctions,
+ httpsCallable,
+ connectFunctionsEmulator,
+} from "firebase/functions";
+
+// Set to true to test in emulator.
+const testMode = true;
+
+// Use showdown to convert Gemini-provided Markdown to HTML
+import { Converter } from "showdown";
+const converter = new Converter();
+
+// Set up output elements.
+const outputDiv = document.createElement("div");
+document.body.appendChild(outputDiv);
+
+// Initialize Firebase app.
+const app = initializeApp(firebaseConfig);
+
+// Initialize App Check.
+initializeAppCheck(app, {
+ provider: new ReCaptchaEnterpriseProvider(RECAPTCHA_ENTERPRISE_SITE_KEY),
+});
+
+// Define callVertexWithRC as a call to the callVertexWithRC function.
+const callVertexWithRC = httpsCallable(getFunctions(), "callVertexWithRC", {
+ limitedUseAppCheckTokens: true,
+});
+
+// Enable emulator so that it can be used in test mode.
+const functions = getFunctions(app, "us-central1"); // Replace with your region
+
+if (testMode) {
+ connectFunctionsEmulator(functions, "localhost", 5001);
+}
+
+// Generate body for index.html.
+document.body.innerHTML += `
+
+
+
+
+
+
+`;
+
+const promptForm = document.getElementById("promptForm") as HTMLFormElement;
+
+promptForm.addEventListener("submit", async (event) => {
+ event.preventDefault();
+ const promptInput = document.getElementById(
+ "promptInput"
+ ) as HTMLInputElement;
+ const prompt = promptInput.value;
+
+ const waitingMessageElement = document.getElementById("waitingMessage");
+
+ // Define a variable to keep track of the number of dots
+ let dotCount = 0;
+
+ // Set interval to add dots every second
+ const intervalId = setInterval(() => {
+ // Increment dotCount
+ dotCount = (dotCount + 1) % 7;
+ const dots = ".".repeat(dotCount);
+ waitingMessageElement.textContent = "Waiting for response" + dots;
+ }, 1000);
+
+ const errorMessageElement = document.getElementById("errorMessage");
+ errorMessageElement.textContent = "";
+
+ try {
+ const { data } = await callVertexWithRC({ prompt });
+ const generatedTextElement = document.getElementById("generatedText"); // Access the element
+ const htmlContent = converter.makeHtml(data);
+ if (!generatedTextElement) {
+ throw new Error("Missing generated text.");
+ }
+ generatedTextElement.innerHTML = htmlContent; // Set the element's content
+ waitingMessageElement.textContent = "";
+ errorMessageElement.textContent = "";
+
+ } catch (error) {
+ errorMessageElement.textContent = "Error calling function: " + error.message;
+ waitingMessageElement.textContent = "";
+ }
+ // Clear welcome dots.
+ clearInterval(intervalId);
+});
diff --git a/Node/call-vertex-remote-config-server/client/package.json b/Node/call-vertex-remote-config-server/client/package.json
new file mode 100644
index 0000000000..a889a350c3
--- /dev/null
+++ b/Node/call-vertex-remote-config-server/client/package.json
@@ -0,0 +1,33 @@
+{
+ "name": "call-vertex-remote-config-server-client",
+ "version": "1.0.0",
+ "description": "JavaScript quickstart for Vertex AI, Firebase Remote Config server, and App Check.",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/firebase/functions-samples.git"
+ },
+ "author": "",
+ "license": "Apache-2.0",
+ "bugs": {
+ "url": "https://github.com/firebase/functions-samples/issues"
+ },
+ "engines": {
+ "npm": ">=9.0.0 <10.0.0",
+ "node": ">=18.0.0 <=20.0.0"
+ },
+ "homepage": "https://github.com/firebase/functions-samples#readme",
+ "devDependencies": {
+ "typescript": "^5.1.6",
+ "vite": "^4.4.9"
+ },
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "format": "prettier --write ."
+ },
+ "dependencies": {
+ "@firebase/functions": "^0.11.5",
+ "firebase": "^10.12.1",
+ "showdown": "^2.1.0"
+ }
+}
diff --git a/Node/call-vertex-remote-config-server/client/vite-env.d.ts b/Node/call-vertex-remote-config-server/client/vite-env.d.ts
new file mode 100644
index 0000000000..11f02fe2a0
--- /dev/null
+++ b/Node/call-vertex-remote-config-server/client/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/Node/call-vertex-remote-config-server/client/vite.config.js b/Node/call-vertex-remote-config-server/client/vite.config.js
new file mode 100644
index 0000000000..4567aa2961
--- /dev/null
+++ b/Node/call-vertex-remote-config-server/client/vite.config.js
@@ -0,0 +1,11 @@
+import { defineConfig } from 'vite';
+
+export default defineConfig({
+ base: '',
+ build: {
+ rollupOptions: {
+ input: ['index.html','main.ts'],
+ },
+ },
+ logLevel: 'info',
+});
diff --git a/Node/call-vertex-remote-config-server/firebase.json b/Node/call-vertex-remote-config-server/firebase.json
new file mode 100644
index 0000000000..996774f319
--- /dev/null
+++ b/Node/call-vertex-remote-config-server/firebase.json
@@ -0,0 +1,32 @@
+{
+ "functions": [
+ {
+ "source": "functions",
+ "codebase": "call-vertex-remote-config-server",
+ "ignore": [
+ "node_modules",
+ ".git",
+ "firebase-debug.log",
+ "firebase-debug.*.log",
+ "*.local",
+ "*.bak"
+ ]
+ }
+ ],
+ "emulators": {
+ "functions": {
+ "port": 5001
+ },
+ "ui": {
+ "enabled": true
+ },
+ "singleProjectMode": true
+ },
+ "hosting": {
+ "public": "client/dist",
+ "ignore": [
+ "firebase.json",
+ "**/node_modules/**"
+ ]
+ }
+}
diff --git a/Node/call-vertex-remote-config-server/functions/index.js b/Node/call-vertex-remote-config-server/functions/index.js
new file mode 100644
index 0000000000..9cf167572a
--- /dev/null
+++ b/Node/call-vertex-remote-config-server/functions/index.js
@@ -0,0 +1,159 @@
+/**
+ * @license
+ * Copyright 2024 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// [START remote_config_server_vertex_init]
+const { onCall, HttpsError } = require("firebase-functions/v2/https");
+const logger = require("firebase-functions/logger");
+
+const { initializeApp } = require("firebase-admin/app");
+const { VertexAI } = require("@google-cloud/vertexai");
+const { getRemoteConfig } = require("firebase-admin/remote-config");
+
+// Allow all origins. Set origin to restrict domain access.
+const cors = require("cors")({ origin: true });
+
+// Set and check environment variables.
+const project = process.env.GCLOUD_PROJECT;
+
+// Enable App Check
+const appCheckRequired = true;
+
+// Initialize Firebase.
+const app = initializeApp();
+// [END remote_config_server_vertex_init]
+
+// [START remote_config_server_vertex_default_values]
+// Define default (fallback) parameter values for Remote Config.
+const defaultConfig = {
+ // Default values for Vertex AI.
+ model_name: "gemini-1.5-flash-preview-0514",
+ generation_config: [
+ {
+ stopSequences: [],
+ temperature: 0.7,
+ maxOutputTokens: 64,
+ topP: 0.1,
+ topK: 20,
+ },
+ ],
+ prompt:
+ "I'm a developer who wants to learn about Firebase and you are a \
+ helpful assistant who knows everything there is to know about Firebase!",
+ safety_settings: [
+ {
+ category: "HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT",
+ threshold: "HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE",
+ },
+ ],
+
+ // Vertex AI location.
+ location: "us-central1",
+
+ // Disable Vertex AI Gemini API access for testing.
+ vertex_enabled: false,
+};
+// [END remote_config_server_vertex_default_values]
+
+// [START remote_config_server_vertex_create_function]
+// Export the function.
+exports.callVertexWithRC = onCall(
+ {
+ enforceAppCheck: appCheckRequired, // Enable App Check enforcement
+ consumeAppCheckToken: false, // Don't consume the token (optional)
+ },
+ async (data, context) => {
+ try {
+ // Set up Remote Config.
+ const rc = getRemoteConfig(app);
+
+ // Get the Remote Config template and assign default values.
+ const template = await rc.getServerTemplate({
+ defaultConfig: defaultConfig,
+ });
+
+ // Add the template evaluation to a constant.
+ const config = template.evaluate();
+
+ // Obtain values from Remote Config.
+ const textModel =
+ config.getString("model_name") || defaultConfig.model_name;
+ const textPrompt = config.getString("prompt") || defaultConfig.prompt;
+ const generationConfig =
+ config.getString("generation_config") ||
+ defaultConfig.generation_config;
+ const safetySettings =
+ config.getString("safety_settings") || defaultConfig.safety_settings;
+ const location = config.getString("location") || defaultConfig.location;
+ const vertexEnabled =
+ config.getBoolean("is_vertex_enabled") || defaultConfig.vertex_enabled;
+ // [END remote_config_server_vertex_create_function]
+
+ // [START remote_config_server_vertex_function_logic]
+ // Allow user input.
+ const userInput = data.data.prompt || "";
+
+ // Instantiate Vertex AI.
+ const vertex_ai = new VertexAI({ project: project, location: location });
+ const generativeModel = vertex_ai.getGenerativeModel({
+ model: textModel,
+ safety_settings: safetySettings,
+ generation_config: generationConfig,
+ });
+
+ // Combine prompt from Remote Config with optional user input.
+ const chatInput = textPrompt + " " + userInput;
+
+ if (!chatInput) {
+ throw new HttpsError("invalid-argument", "Missing text prompt");
+ }
+
+ // Check if Vertex AI is enabled
+ if (vertexEnabled !== true) {
+ logger.log("Vertex AI is not enabled");
+ return;
+ }
+ logger.log(
+ "\nRunning with model ",
+ textModel,
+ ", prompt: ",
+ textPrompt,
+ ", generationConfig: ",
+ generationConfig,
+ ", safetySettings: ",
+ safetySettings,
+ " in ",
+ location,
+ "\n"
+ );
+
+ const result = await generativeModel.generateContentStream(chatInput);
+
+ const chunks = [];
+ for await (const item of result.stream) {
+ const chunk = item.candidates[0].content.parts[0].text;
+ logger.log("Received chunk:", chunk);
+ chunks.push(chunk);
+ }
+
+ return chunks.join(""); // Return the concatenated chunks
+ } catch (error) {
+ logger.error(error);
+ throw new HttpsError("internal", "Internal server error");
+ }
+ }
+);
+// [END remote_config_server_vertex_function_logic]
diff --git a/Node/call-vertex-remote-config-server/functions/package.json b/Node/call-vertex-remote-config-server/functions/package.json
new file mode 100644
index 0000000000..7e8b956414
--- /dev/null
+++ b/Node/call-vertex-remote-config-server/functions/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "call-vertex-remote-config-server",
+ "description": "An example of a callable function that uses the Admin SDK with server-side Remote Config, App Check, and Vertex AI",
+ "scripts": {
+ "serve": "firebase emulators:start --only functions",
+ "shell": "firebase functions:shell",
+ "start": "npm run shell",
+ "deploy": "firebase deploy --only functions",
+ "logs": "firebase functions:log"
+ },
+ "engines": {
+ "node": "18"
+ },
+ "main": "index.js",
+ "dependencies": {
+ "@google-cloud/vertexai": "^1.2.0",
+ "cors": "^2.8.5",
+ "firebase-admin": "^12.1.0",
+ "firebase-functions": "^5.0.0"
+ },
+ "devDependencies": {
+ "firebase-functions-test": "^3.1.0"
+ },
+ "private": true
+}
diff --git a/Node/remote-config-server-with-vertex/README.md b/Node/remote-config-server-with-vertex/README.md
new file mode 100644
index 0000000000..c3c5260197
--- /dev/null
+++ b/Node/remote-config-server-with-vertex/README.md
@@ -0,0 +1,51 @@
+# Use server-side Remote Config with Cloud Functions and Vertex AI
+
+This Cloud Function (`generateWithVertex`) demonstrates how to generate text
+using Google's Vertex AI Gemini API. It uses
+the Firebase Admin SDK for Node.js and Remote Config to manage model parameters,
+safety settings, and feature flags.
+
+To protect your API endpoints, function is intended to run with a service
+account with unauthenticated access blocked as described in
+[Use server-side Remote Config with Cloud Functions and Vertex
+AI](https://firebase.google.com/docs/remote-config/solution-server).
+
+For a callable function with App Check enabled, try the
+[Call the Vertex AI Gemini API with Remote Config and App Check](../call-vertex-remote-config-server)
+sample function and client.
+
+## Set up the sample
+
+Follow the [User server-side Remote Config with Cloud Functions and Vertex AI
+guide](https://firebase.google.com/docs/remote-config/solution-server) to:
+
+* Set up your Firebase project.
+* Enable required APIs and SDKs.
+* Configure IAM permissions.
+* Test your function in the Firebase emulator.
+* Deploy your function.
+
+Important: Vertex AI and Cloud Functions require a billing account. Review
+[Vertex AI pricing](https://cloud.google.com/vertex-ai/pricing) and
+[Cloud Functions pricing](https://firebase.google.com/pricing) before running
+this function. If you're new to Firebase and Google Cloud, check to see if
+you're eligible for a
+[$300 credit](https://firebase.google.com/support/faq#pricing-free-trial) and
+a Free Trial Cloud Billing account.
+
+## Next steps
+
+Learn more about Remote Config server implementations at
+[Use Remote Config in server
+environments](https://firebase.google.com/docs/remote-config/server).
+
+Support
+-------
+
+- [Firebase Support](https://firebase.google.com/support/)
+
+License
+-------
+
+© Google, 2024. Licensed under an [Apache-2](../../LICENSE) license.
+
diff --git a/Node/remote-config-server-with-vertex/firebase.json b/Node/remote-config-server-with-vertex/firebase.json
new file mode 100644
index 0000000000..d76e84112d
--- /dev/null
+++ b/Node/remote-config-server-with-vertex/firebase.json
@@ -0,0 +1,5 @@
+{
+ "functions": {
+ "codebase": "remote-config-server-with-vertex"
+ }
+}
diff --git a/Node/remote-config-server-with-vertex/functions/index.js b/Node/remote-config-server-with-vertex/functions/index.js
new file mode 100644
index 0000000000..2f4d1d4519
--- /dev/null
+++ b/Node/remote-config-server-with-vertex/functions/index.js
@@ -0,0 +1,118 @@
+// [START remote_config_server_vertex_init]
+const { onRequest } = require("firebase-functions/v2/https");
+const logger = require("firebase-functions/logger");
+
+const { initializeApp } = require("firebase-admin/app");
+const { VertexAI } = require('@google-cloud/vertexai');
+const { getRemoteConfig } = require("firebase-admin/remote-config");
+
+// Set and check environment variables.
+const project = process.env.GCLOUD_PROJECT;
+
+// Initialize Firebase.
+const app = initializeApp();
+// [END remote_config_server_vertex_init]
+
+// [START remote_config_server_vertex_default_values]
+// Define default (fallback) parameter values for Remote Config.
+const defaultConfig = {
+
+ // Default values for Vertex AI.
+ model_name: "gemini-1.5-flash-preview-0514",
+ generation_config: [{
+ "stopSequences": [], "temperature": 0.7,
+ "maxOutputTokens": 64, "topP": 0.1, "topK": 20
+ }],
+ prompt: "I'm a developer who wants to learn about Firebase and you are a \
+ helpful assistant who knows everything there is to know about Firebase!",
+ safety_settings: [{
+ "category":
+ "HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT",
+ "threshold": "HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE"
+ }],
+ location: 'us-central1',
+
+ // Disable Vertex AI Gemini API access for testing.
+ vertex_enabled: false
+};
+// [END remote_config_server_vertex_default_values]
+
+// [START remote_config_server_vertex_create_function]
+// Export the function.
+exports.generateWithVertex = onRequest(async (request, response) => {
+
+ try {
+
+ // Set up Remote Config.
+ const rc = getRemoteConfig(app);
+
+ // Get the Remote Config template and assign default values.
+ const template = await rc.getServerTemplate({
+ defaultConfig: defaultConfig
+ });
+
+ // Add the template evaluation to a constant.
+ const config = template.evaluate();
+
+ // Obtain values from Remote Config.
+ const textModel = config.getString("model_name") ||
+ defaultConfig.model_name;
+ const textPrompt = config.getString("prompt") || defaultConfig.prompt;
+ const generationConfig = config.getString("generation_config") ||
+ defaultConfig.generation_config;
+ const safetySettings = config.getString("safety_settings") ||
+ defaultConfig.safety_settings;
+ const location = config.getString("location") ||
+ defaultConfig.location;
+ const vertexEnabled = config.getBoolean("is_vertex_enabled") ||
+ defaultConfig.vertex_enabled;
+// [END remote_config_server_vertex_create_function]
+
+// [START remote_config_server_vertex_function_logic]
+ // Allow user input.
+ const userInput = request.query.prompt || '';
+
+ // Instantiate Vertex AI.
+ const vertex_ai = new VertexAI({ project: project, location: location });
+ const generativeModel = vertex_ai.getGenerativeModel({
+ model: textModel,
+ safety_settings: safetySettings,
+ generation_config: generationConfig,
+ });
+
+ // Combine prompt from Remote Config with optional user input.
+ const chatInput = textPrompt + " " + userInput;
+
+ if (!chatInput) {
+ return res.status(400).send('Missing text prompt');
+ }
+ // If vertexEnabled isn't true, do not send queries to Vertex AI.
+ if (vertexEnabled !== true) {
+ response.status(200).send({
+ message: "Vertex AI call skipped. Vertex is not enabled."
+ });
+ return;
+ }
+
+ logger.log("\nRunning with model ", textModel, ", prompt: ", textPrompt,
+ ", generationConfig: ", generationConfig, ", safetySettings: ",
+ safetySettings, " in ", location, "\n");
+
+ const result = await generativeModel.generateContentStream(chatInput);
+ response.writeHead(200, { 'Content-Type': 'text/plain' });
+
+ for await (const item of result.stream) {
+ const chunk = item.candidates[0].content.parts[0].text;
+ logger.log("Received chunk:", chunk);
+ response.write(chunk);
+ }
+
+ response.end();
+
+ } catch (error) {
+ logger.error(error);
+ response.status(500).send('Internal server error');
+ }
+});
+// [END remote_config_server_vertex_function_logic]
+
diff --git a/Node/remote-config-server-with-vertex/functions/package.json b/Node/remote-config-server-with-vertex/functions/package.json
new file mode 100644
index 0000000000..54834a3604
--- /dev/null
+++ b/Node/remote-config-server-with-vertex/functions/package.json
@@ -0,0 +1,24 @@
+{
+ "name": "remote-config-server-with-vertex",
+ "description": "Cloud Functions for Firebase",
+ "scripts": {
+ "serve": "firebase emulators:start --only functions",
+ "shell": "firebase functions:shell",
+ "start": "npm run shell",
+ "deploy": "firebase deploy --only functions",
+ "logs": "firebase functions:log"
+ },
+ "engines": {
+ "node": "18"
+ },
+ "main": "index.js",
+ "dependencies": {
+ "@google-cloud/vertexai": "^1.1.0",
+ "firebase-admin": "^12.1.0",
+ "firebase-functions": "^4.3.0"
+ },
+ "devDependencies": {
+ "firebase-functions-test": "^3.1.0"
+ },
+ "private": true
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f84cadcd89..132ac9ee96 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1074,6 +1074,44 @@ importers:
specifier: ^0.14.0
version: 0.14.0(eslint@8.44.0)
+ Node/call-vertex-remote-config-server/client:
+ dependencies:
+ '@firebase/functions':
+ specifier: ^0.11.5
+ version: 0.11.5(@firebase/app@0.10.4)
+ firebase:
+ specifier: ^10.12.1
+ version: 10.12.1
+ showdown:
+ specifier: ^2.1.0
+ version: 2.1.0
+ devDependencies:
+ typescript:
+ specifier: ^5.1.6
+ version: 5.1.6
+ vite:
+ specifier: ^4.4.9
+ version: 4.4.9
+
+ Node/call-vertex-remote-config-server/functions:
+ dependencies:
+ '@google-cloud/vertexai':
+ specifier: ^1.2.0
+ version: 1.2.0
+ cors:
+ specifier: ^2.8.5
+ version: 2.8.5
+ firebase-admin:
+ specifier: ^12.1.0
+ version: 12.1.0
+ firebase-functions:
+ specifier: ^5.0.0
+ version: 5.0.0(firebase-admin@12.1.0)
+ devDependencies:
+ firebase-functions-test:
+ specifier: ^3.1.0
+ version: 3.1.0(firebase-admin@12.1.0)(firebase-functions@5.0.0)(jest@28.1.3)
+
Node/delete-unused-accounts-cron/functions:
dependencies:
es6-promise-pool:
@@ -1113,7 +1151,7 @@ importers:
dependencies:
'@google-cloud/opentelemetry-cloud-trace-exporter':
specifier: ^1.1.0
- version: 1.1.0(@opentelemetry/api@1.2.0)(@opentelemetry/core@1.15.0)(@opentelemetry/resources@1.15.0)(@opentelemetry/sdk-trace-base@1.15.0)(@opentelemetry/semantic-conventions@1.15.0)
+ version: 1.1.0(@opentelemetry/api@1.2.0)(@opentelemetry/core@1.15.0)(@opentelemetry/resources@1.15.0)(@opentelemetry/sdk-trace-base@1.15.0)(@opentelemetry/semantic-conventions@1.21.0)
'@google-cloud/opentelemetry-cloud-trace-propagator':
specifier: ^0.14.0
version: 0.14.0(@opentelemetry/api@1.2.0)(@opentelemetry/core@1.15.0)
@@ -1386,6 +1424,22 @@ importers:
specifier: ^8.40.0
version: 8.44.0
+ Node/remote-config-server-with-vertex/functions:
+ dependencies:
+ '@google-cloud/vertexai':
+ specifier: ^1.1.0
+ version: 1.1.0
+ firebase-admin:
+ specifier: ^12.1.0
+ version: 12.1.0
+ firebase-functions:
+ specifier: ^4.3.0
+ version: 4.9.0(firebase-admin@12.1.0)
+ devDependencies:
+ firebase-functions-test:
+ specifier: ^3.1.0
+ version: 3.1.0(firebase-admin@12.1.0)(firebase-functions@4.9.0)(jest@28.1.3)
+
Node/taskqueues-backup-images/functions:
dependencies:
firebase-admin:
@@ -1989,6 +2043,204 @@ packages:
- supports-color
dev: false
+ /@esbuild/android-arm64@0.18.20:
+ resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-arm@0.18.20:
+ resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/android-x64@0.18.20:
+ resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-arm64@0.18.20:
+ resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/darwin-x64@0.18.20:
+ resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-arm64@0.18.20:
+ resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/freebsd-x64@0.18.20:
+ resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm64@0.18.20:
+ resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-arm@0.18.20:
+ resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ia32@0.18.20:
+ resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-loong64@0.18.20:
+ resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-mips64el@0.18.20:
+ resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-ppc64@0.18.20:
+ resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-riscv64@0.18.20:
+ resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-s390x@0.18.20:
+ resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-x64@0.18.20:
+ resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/netbsd-x64@0.18.20:
+ resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/openbsd-x64@0.18.20:
+ resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/sunos-x64@0.18.20:
+ resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-arm64@0.18.20:
+ resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-ia32@0.18.20:
+ resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/win32-x64@0.18.20:
+ resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@eslint-community/eslint-utils@4.4.0(eslint@8.44.0):
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -2038,18 +2290,178 @@ packages:
dependencies:
text-decoding: 1.0.0
+ /@fastify/busboy@2.1.1:
+ resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
+ engines: {node: '>=14'}
+
+ /@firebase/analytics-compat@0.2.10(@firebase/app-compat@0.2.34)(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-ia68RcLQLLMFWrM10JfmFod7eJGwqr4/uyrtzHpTDnxGX/6gNCBTOuxdAbyWIqXI5XmcMQdz9hDijGKOHgDfPw==}
+ peerDependencies:
+ '@firebase/app-compat': 0.x
+ peerDependenciesMeta:
+ '@firebase/app-compat':
+ optional: true
+ dependencies:
+ '@firebase/analytics': 0.10.4(@firebase/app@0.10.4)
+ '@firebase/analytics-types': 0.8.2
+ '@firebase/app-compat': 0.2.34
+ '@firebase/component': 0.6.7
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ transitivePeerDependencies:
+ - '@firebase/app'
+ dev: false
+
+ /@firebase/analytics-types@0.8.2:
+ resolution: {integrity: sha512-EnzNNLh+9/sJsimsA/FGqzakmrAUKLeJvjRHlg8df1f97NLUlFidk9600y0ZgWOp3CAxn6Hjtk+08tixlUOWyw==}
+ dev: false
+
+ /@firebase/analytics@0.10.4(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-OJEl/8Oye/k+vJ1zV/1L6eGpc1XzAj+WG2TPznJ7PszL7sOFLBXkL9IjHfOCGDGpXeO3btozy/cYUqv4zgNeHg==}
+ peerDependencies:
+ '@firebase/app': 0.x
+ dependencies:
+ '@firebase/app': 0.10.4
+ '@firebase/component': 0.6.7
+ '@firebase/installations': 0.6.7(@firebase/app@0.10.4)
+ '@firebase/logger': 0.4.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ dev: false
+
+ /@firebase/app-check-compat@0.3.11(@firebase/app-compat@0.2.34)(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-t01zaH3RJpKEey0nGduz3Is+uSz7Sj4U5nwOV6lWb+86s5xtxpIvBJzu/lKxJfYyfZ29eJwpdjEgT1/lm4iQyA==}
+ peerDependencies:
+ '@firebase/app-compat': 0.x
+ peerDependenciesMeta:
+ '@firebase/app-compat':
+ optional: true
+ dependencies:
+ '@firebase/app-check': 0.8.4(@firebase/app@0.10.4)
+ '@firebase/app-check-types': 0.5.2
+ '@firebase/app-compat': 0.2.34
+ '@firebase/component': 0.6.7
+ '@firebase/logger': 0.4.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ transitivePeerDependencies:
+ - '@firebase/app'
+ dev: false
+
+ /@firebase/app-check-interop-types@0.3.2:
+ resolution: {integrity: sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==}
+
+ /@firebase/app-check-types@0.5.2:
+ resolution: {integrity: sha512-FSOEzTzL5bLUbD2co3Zut46iyPWML6xc4x+78TeaXMSuJap5QObfb+rVvZJtla3asN4RwU7elaQaduP+HFizDA==}
+ dev: false
+
+ /@firebase/app-check@0.8.4(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-2tjRDaxcM5G7BEpytiDcIl+NovV99q8yEqRMKDbn4J4i/XjjuThuB4S+4PkmTnZiCbdLXQiBhkVxNlUDcfog5Q==}
+ peerDependencies:
+ '@firebase/app': 0.x
+ dependencies:
+ '@firebase/app': 0.10.4
+ '@firebase/component': 0.6.7
+ '@firebase/logger': 0.4.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ dev: false
+
+ /@firebase/app-compat@0.2.34:
+ resolution: {integrity: sha512-enteBla1gBYObauvsC9bRRoqHZnOW48ahYABZ+l+FEiWil1rw0gVihl8D4eLqtQp/ci8+fbOBf3ZL19uFq/OCw==}
+ dependencies:
+ '@firebase/app': 0.10.4
+ '@firebase/component': 0.6.7
+ '@firebase/logger': 0.4.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ dev: false
+
/@firebase/app-types@0.9.0:
resolution: {integrity: sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==}
+ /@firebase/app-types@0.9.2:
+ resolution: {integrity: sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==}
+
+ /@firebase/app@0.10.4:
+ resolution: {integrity: sha512-oKd5cT+fDbQ22X8Am3tBOrSFdDp8n4NJDqld4uo+H/PL9F+D3ogtTeiPyDWw1lZK7FsMbmtRrPRozlmJFzSKAQ==}
+ dependencies:
+ '@firebase/component': 0.6.7
+ '@firebase/logger': 0.4.2
+ '@firebase/util': 1.9.6
+ idb: 7.1.1
+ tslib: 2.6.0
+ dev: false
+
+ /@firebase/auth-compat@0.5.8(@firebase/app-compat@0.2.34)(@firebase/app-types@0.9.2)(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-qUgmv/mcth9wHPTOCKgAOeHe5c+BIOJVcbX2RfcjlXO3xnd8nRafwEkZKBNJUjy4oihYhqFMEMnTHLhwLJwLig==}
+ peerDependencies:
+ '@firebase/app-compat': 0.x
+ peerDependenciesMeta:
+ '@firebase/app-compat':
+ optional: true
+ dependencies:
+ '@firebase/app-compat': 0.2.34
+ '@firebase/auth': 1.7.3(@firebase/app@0.10.4)
+ '@firebase/auth-types': 0.12.2(@firebase/app-types@0.9.2)(@firebase/util@1.9.6)
+ '@firebase/component': 0.6.7
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ undici: 5.28.4
+ transitivePeerDependencies:
+ - '@firebase/app'
+ - '@firebase/app-types'
+ - '@react-native-async-storage/async-storage'
+ dev: false
+
/@firebase/auth-interop-types@0.2.1:
resolution: {integrity: sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==}
+ /@firebase/auth-interop-types@0.2.3:
+ resolution: {integrity: sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==}
+
+ /@firebase/auth-types@0.12.2(@firebase/app-types@0.9.2)(@firebase/util@1.9.6):
+ resolution: {integrity: sha512-qsEBaRMoGvHO10unlDJhaKSuPn4pyoTtlQuP1ghZfzB6rNQPuhp/N/DcFZxm9i4v0SogjCbf9reWupwIvfmH6w==}
+ peerDependencies:
+ '@firebase/app-types': 0.x
+ '@firebase/util': 1.x
+ peerDependenciesMeta:
+ '@firebase/app-types':
+ optional: true
+ dependencies:
+ '@firebase/app-types': 0.9.2
+ '@firebase/util': 1.9.6
+ dev: false
+
+ /@firebase/auth@1.7.3(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-RiU1PjziOxLuyswtYtLK2qSjHIQJQGCk1h986SUFRbMQfzLXbQg8ZgXwxac1UAfDOzgzqPNCXhBuIlSK2UomoQ==}
+ peerDependencies:
+ '@firebase/app': 0.x
+ '@react-native-async-storage/async-storage': ^1.18.1
+ peerDependenciesMeta:
+ '@react-native-async-storage/async-storage':
+ optional: true
+ dependencies:
+ '@firebase/app': 0.10.4
+ '@firebase/component': 0.6.7
+ '@firebase/logger': 0.4.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ undici: 5.28.4
+ dev: false
+
/@firebase/component@0.6.4:
resolution: {integrity: sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==}
dependencies:
'@firebase/util': 1.9.3
tslib: 2.6.0
+ /@firebase/component@0.6.7:
+ resolution: {integrity: sha512-baH1AA5zxfaz4O8w0vDwETByrKTQqB5CDjRls79Sa4eAGAoERw4Tnung7XbMl3jbJ4B/dmmtsMrdki0KikwDYA==}
+ dependencies:
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+
/@firebase/database-compat@0.3.4:
resolution: {integrity: sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg==}
dependencies:
@@ -2060,12 +2472,28 @@ packages:
'@firebase/util': 1.9.3
tslib: 2.6.0
+ /@firebase/database-compat@1.0.5:
+ resolution: {integrity: sha512-NDSMaDjQ+TZEMDMmzJwlTL05kh1+0Y84C+kVMaOmNOzRGRM7VHi29I6YUhCetXH+/b1Wh4ZZRyp1CuWkd8s6hg==}
+ dependencies:
+ '@firebase/component': 0.6.7
+ '@firebase/database': 1.0.5
+ '@firebase/database-types': 1.0.3
+ '@firebase/logger': 0.4.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+
/@firebase/database-types@0.10.4:
resolution: {integrity: sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ==}
dependencies:
'@firebase/app-types': 0.9.0
'@firebase/util': 1.9.3
+ /@firebase/database-types@1.0.3:
+ resolution: {integrity: sha512-39V/Riv2R3O/aUjYKh0xypj7NTNXNAK1bcgY5Kx+hdQPRS/aPTS8/5c0CGFYKgVuFbYlnlnhrCTYsh2uNhGwzA==}
+ dependencies:
+ '@firebase/app-types': 0.9.2
+ '@firebase/util': 1.9.6
+
/@firebase/database@0.14.4:
resolution: {integrity: sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ==}
dependencies:
@@ -2076,16 +2504,339 @@ packages:
faye-websocket: 0.11.4
tslib: 2.6.0
+ /@firebase/database@1.0.5:
+ resolution: {integrity: sha512-cAfwBqMQuW6HbhwI3Cb/gDqZg7aR0OmaJ85WUxlnoYW2Tm4eR0hFl5FEijI3/gYPUiUcUPQvTkGV222VkT7KPw==}
+ dependencies:
+ '@firebase/app-check-interop-types': 0.3.2
+ '@firebase/auth-interop-types': 0.2.3
+ '@firebase/component': 0.6.7
+ '@firebase/logger': 0.4.2
+ '@firebase/util': 1.9.6
+ faye-websocket: 0.11.4
+ tslib: 2.6.0
+
+ /@firebase/firestore-compat@0.3.32(@firebase/app-compat@0.2.34)(@firebase/app-types@0.9.2)(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-at71mwK7a/mUXH0OgyY0+gUzedm/EUydDFYSFsBoO8DYowZ23Mgd6P4Rzq/Ll3zI/3xJN7LGe7Qp4iE/V/3Arg==}
+ peerDependencies:
+ '@firebase/app-compat': 0.x
+ peerDependenciesMeta:
+ '@firebase/app-compat':
+ optional: true
+ dependencies:
+ '@firebase/app-compat': 0.2.34
+ '@firebase/component': 0.6.7
+ '@firebase/firestore': 4.6.3(@firebase/app@0.10.4)
+ '@firebase/firestore-types': 3.0.2(@firebase/app-types@0.9.2)(@firebase/util@1.9.6)
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ transitivePeerDependencies:
+ - '@firebase/app'
+ - '@firebase/app-types'
+ dev: false
+
+ /@firebase/firestore-types@3.0.2(@firebase/app-types@0.9.2)(@firebase/util@1.9.6):
+ resolution: {integrity: sha512-wp1A+t5rI2Qc/2q7r2ZpjUXkRVPtGMd6zCLsiWurjsQpqPgFin3AhNibKcIzoF2rnToNa/XYtyWXuifjOOwDgg==}
+ peerDependencies:
+ '@firebase/app-types': 0.x
+ '@firebase/util': 1.x
+ peerDependenciesMeta:
+ '@firebase/app-types':
+ optional: true
+ dependencies:
+ '@firebase/app-types': 0.9.2
+ '@firebase/util': 1.9.6
+ dev: false
+
+ /@firebase/firestore@4.6.3(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-d/+N2iUsiJ/Dc7fApdpdmmTXzwuTCromsdA1lKwYfZtMIOd1fI881NSLwK2wV4I38wkLnvfKJUV6WpU1f3/ONg==}
+ engines: {node: '>=10.10.0'}
+ peerDependencies:
+ '@firebase/app': 0.x
+ dependencies:
+ '@firebase/app': 0.10.4
+ '@firebase/component': 0.6.7
+ '@firebase/logger': 0.4.2
+ '@firebase/util': 1.9.6
+ '@firebase/webchannel-wrapper': 1.0.0
+ '@grpc/grpc-js': 1.9.14
+ '@grpc/proto-loader': 0.7.13
+ tslib: 2.6.0
+ undici: 5.28.4
+ dev: false
+
+ /@firebase/functions-compat@0.3.11(@firebase/app-compat@0.2.34)(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-Qn+ts/M6Lj2/6i1cp5V5TRR+Hi9kyXyHbo+w9GguINJ87zxrCe6ulx3TI5AGQkoQa8YFHUhT3DMGmLFiJjWTSQ==}
+ peerDependencies:
+ '@firebase/app-compat': 0.x
+ peerDependenciesMeta:
+ '@firebase/app-compat':
+ optional: true
+ dependencies:
+ '@firebase/app-compat': 0.2.34
+ '@firebase/component': 0.6.7
+ '@firebase/functions': 0.11.5(@firebase/app@0.10.4)
+ '@firebase/functions-types': 0.6.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ transitivePeerDependencies:
+ - '@firebase/app'
+ dev: false
+
+ /@firebase/functions-types@0.6.2:
+ resolution: {integrity: sha512-0KiJ9lZ28nS2iJJvimpY4nNccV21rkQyor5Iheu/nq8aKXJqtJdeSlZDspjPSBBiHRzo7/GMUttegnsEITqR+w==}
+ dev: false
+
+ /@firebase/functions@0.11.5(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-qrHJ+l62mZiU5UZiVi84t/iLXZlhRuSvBQsa2qvNLgPsEWR7wdpWhRmVdB7AU8ndkSHJjGlMICqrVnz47sgU7Q==}
+ peerDependencies:
+ '@firebase/app': 0.x
+ dependencies:
+ '@firebase/app': 0.10.4
+ '@firebase/app-check-interop-types': 0.3.2
+ '@firebase/auth-interop-types': 0.2.3
+ '@firebase/component': 0.6.7
+ '@firebase/messaging-interop-types': 0.2.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ undici: 5.28.4
+ dev: false
+
+ /@firebase/installations-compat@0.2.7(@firebase/app-compat@0.2.34)(@firebase/app-types@0.9.2)(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-RPcbD+3nqHbnhVjIOpWK2H5qzZ8pAAAScceiWph0VNTqpKyPQ5tDcp4V5fS0ELpfgsHYvroMLDKfeHxpfvm8cw==}
+ peerDependencies:
+ '@firebase/app-compat': 0.x
+ peerDependenciesMeta:
+ '@firebase/app-compat':
+ optional: true
+ dependencies:
+ '@firebase/app-compat': 0.2.34
+ '@firebase/component': 0.6.7
+ '@firebase/installations': 0.6.7(@firebase/app@0.10.4)
+ '@firebase/installations-types': 0.5.2(@firebase/app-types@0.9.2)
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ transitivePeerDependencies:
+ - '@firebase/app'
+ - '@firebase/app-types'
+ dev: false
+
+ /@firebase/installations-types@0.5.2(@firebase/app-types@0.9.2):
+ resolution: {integrity: sha512-que84TqGRZJpJKHBlF2pkvc1YcXrtEDOVGiDjovP/a3s6W4nlbohGXEsBJo0JCeeg/UG9A+DEZVDUV9GpklUzA==}
+ peerDependencies:
+ '@firebase/app-types': 0.x
+ peerDependenciesMeta:
+ '@firebase/app-types':
+ optional: true
+ dependencies:
+ '@firebase/app-types': 0.9.2
+ dev: false
+
+ /@firebase/installations@0.6.7(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-i6iGoXRu5mX4rTsiMSSKrgh9pSEzD4hwBEzRh5kEhOTr8xN/wvQcCPZDSMVYKwM2XyCPBLVq0JzjyerwL0Rihg==}
+ peerDependencies:
+ '@firebase/app': 0.x
+ dependencies:
+ '@firebase/app': 0.10.4
+ '@firebase/component': 0.6.7
+ '@firebase/util': 1.9.6
+ idb: 7.1.1
+ tslib: 2.6.0
+ dev: false
+
/@firebase/logger@0.4.0:
resolution: {integrity: sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==}
dependencies:
tslib: 2.6.0
+ /@firebase/logger@0.4.2:
+ resolution: {integrity: sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==}
+ dependencies:
+ tslib: 2.6.0
+
+ /@firebase/messaging-compat@0.2.9(@firebase/app-compat@0.2.34)(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-5jN6wyhwPgBH02zOtmmoOeyfsmoD7ty48D1m0vVPsFg55RqN2Z3Q9gkZ5GmPklFPjTPLcxB1ObcHOZvThTkm7g==}
+ peerDependencies:
+ '@firebase/app-compat': 0.x
+ peerDependenciesMeta:
+ '@firebase/app-compat':
+ optional: true
+ dependencies:
+ '@firebase/app-compat': 0.2.34
+ '@firebase/component': 0.6.7
+ '@firebase/messaging': 0.12.9(@firebase/app@0.10.4)
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ transitivePeerDependencies:
+ - '@firebase/app'
+ dev: false
+
+ /@firebase/messaging-interop-types@0.2.2:
+ resolution: {integrity: sha512-l68HXbuD2PPzDUOFb3aG+nZj5KA3INcPwlocwLZOzPp9rFM9yeuI9YLl6DQfguTX5eAGxO0doTR+rDLDvQb5tA==}
+ dev: false
+
+ /@firebase/messaging@0.12.9(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-IH+JJmzbFGZXV3+TDyKdqqKPVfKRqBBg2BfYYOy7cm7J+SwV+uJMe8EnDKYeQLEQhtpwciPfJ3qQXJs2lbxDTw==}
+ peerDependencies:
+ '@firebase/app': 0.x
+ dependencies:
+ '@firebase/app': 0.10.4
+ '@firebase/component': 0.6.7
+ '@firebase/installations': 0.6.7(@firebase/app@0.10.4)
+ '@firebase/messaging-interop-types': 0.2.2
+ '@firebase/util': 1.9.6
+ idb: 7.1.1
+ tslib: 2.6.0
+ dev: false
+
+ /@firebase/performance-compat@0.2.7(@firebase/app-compat@0.2.34)(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-cb8ge/5iTstxfIGW+iiY+7l3FtN8gobNh9JSQNZgLC9xmcfBYWEs8IeEWMI6S8T+At0oHc3lv+b2kpRMUWr8zQ==}
+ peerDependencies:
+ '@firebase/app-compat': 0.x
+ peerDependenciesMeta:
+ '@firebase/app-compat':
+ optional: true
+ dependencies:
+ '@firebase/app-compat': 0.2.34
+ '@firebase/component': 0.6.7
+ '@firebase/logger': 0.4.2
+ '@firebase/performance': 0.6.7(@firebase/app@0.10.4)
+ '@firebase/performance-types': 0.2.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ transitivePeerDependencies:
+ - '@firebase/app'
+ dev: false
+
+ /@firebase/performance-types@0.2.2:
+ resolution: {integrity: sha512-gVq0/lAClVH5STrIdKnHnCo2UcPLjJlDUoEB/tB4KM+hAeHUxWKnpT0nemUPvxZ5nbdY/pybeyMe8Cs29gEcHA==}
+ dev: false
+
+ /@firebase/performance@0.6.7(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-d+Q4ltjdJZqjzcdms5i0UC9KLYX7vKGcygZ+7zHA/Xk+bAbMD2CPU0nWTnlNFWifZWIcXZ/2mAMvaGMW3lypUA==}
+ peerDependencies:
+ '@firebase/app': 0.x
+ dependencies:
+ '@firebase/app': 0.10.4
+ '@firebase/component': 0.6.7
+ '@firebase/installations': 0.6.7(@firebase/app@0.10.4)
+ '@firebase/logger': 0.4.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ dev: false
+
+ /@firebase/remote-config-compat@0.2.7(@firebase/app-compat@0.2.34)(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-Fq0oneQ4SluLnfr5/HfzRS1TZf1ANj1rWbCCW3+oC98An3nE+sCdp+FSuHsEVNwgMg4Tkwx9Oom2lkKeU+Vn+w==}
+ peerDependencies:
+ '@firebase/app-compat': 0.x
+ peerDependenciesMeta:
+ '@firebase/app-compat':
+ optional: true
+ dependencies:
+ '@firebase/app-compat': 0.2.34
+ '@firebase/component': 0.6.7
+ '@firebase/logger': 0.4.2
+ '@firebase/remote-config': 0.4.7(@firebase/app@0.10.4)
+ '@firebase/remote-config-types': 0.3.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ transitivePeerDependencies:
+ - '@firebase/app'
+ dev: false
+
+ /@firebase/remote-config-types@0.3.2:
+ resolution: {integrity: sha512-0BC4+Ud7y2aPTyhXJTMTFfrGGLqdYXrUB9sJVAB8NiqJswDTc4/2qrE/yfUbnQJhbSi6ZaTTBKyG3n1nplssaA==}
+ dev: false
+
+ /@firebase/remote-config@0.4.7(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-5oPNrPFLsbsjpq0lUEIXoDF2eJK7vAbyXe/DEuZQxnwJlfR7aQbtUlEkRgQWcicXpyDmAmDLo7q7lDbCYa6CpA==}
+ peerDependencies:
+ '@firebase/app': 0.x
+ dependencies:
+ '@firebase/app': 0.10.4
+ '@firebase/component': 0.6.7
+ '@firebase/installations': 0.6.7(@firebase/app@0.10.4)
+ '@firebase/logger': 0.4.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ dev: false
+
+ /@firebase/storage-compat@0.3.8(@firebase/app-compat@0.2.34)(@firebase/app-types@0.9.2)(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-qDfY9kMb6Ch2hZb40sBjDQ8YPxbjGOxuT+gU1Z0iIVSSpSX0f4YpGJCypUXiA0T11n6InCXB+T/Dknh2yxVTkg==}
+ peerDependencies:
+ '@firebase/app-compat': 0.x
+ peerDependenciesMeta:
+ '@firebase/app-compat':
+ optional: true
+ dependencies:
+ '@firebase/app-compat': 0.2.34
+ '@firebase/component': 0.6.7
+ '@firebase/storage': 0.12.5(@firebase/app@0.10.4)
+ '@firebase/storage-types': 0.8.2(@firebase/app-types@0.9.2)(@firebase/util@1.9.6)
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ transitivePeerDependencies:
+ - '@firebase/app'
+ - '@firebase/app-types'
+ dev: false
+
+ /@firebase/storage-types@0.8.2(@firebase/app-types@0.9.2)(@firebase/util@1.9.6):
+ resolution: {integrity: sha512-0vWu99rdey0g53lA7IShoA2Lol1jfnPovzLDUBuon65K7uKG9G+L5uO05brD9pMw+l4HRFw23ah3GwTGpEav6g==}
+ peerDependencies:
+ '@firebase/app-types': 0.x
+ '@firebase/util': 1.x
+ peerDependenciesMeta:
+ '@firebase/app-types':
+ optional: true
+ dependencies:
+ '@firebase/app-types': 0.9.2
+ '@firebase/util': 1.9.6
+ dev: false
+
+ /@firebase/storage@0.12.5(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-nGWBOGFNr10j0LA4NJ3/Yh3us/lb0Q1xSIKZ38N6FcS+vY54nqJ7k3zE3PENregHC8+8txRow++A568G3v8hOA==}
+ peerDependencies:
+ '@firebase/app': 0.x
+ dependencies:
+ '@firebase/app': 0.10.4
+ '@firebase/component': 0.6.7
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ undici: 5.28.4
+ dev: false
+
/@firebase/util@1.9.3:
resolution: {integrity: sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==}
dependencies:
tslib: 2.6.0
+ /@firebase/util@1.9.6:
+ resolution: {integrity: sha512-IBr1MZbp4d5MjBCXL3TW1dK/PDXX4yOGbiwRNh1oAbE/+ci5Uuvy9KIrsFYY80as1I0iOaD5oOMA9Q8j4TJWcw==}
+ dependencies:
+ tslib: 2.6.0
+
+ /@firebase/vertexai-preview@0.0.1(@firebase/app-types@0.9.2)(@firebase/app@0.10.4):
+ resolution: {integrity: sha512-N8m9Xr0YZKy0t9SpQDuHrL2ppEAT/iqf88Y/O00QNA/Td/BMCL8sJ0c+Savh1TVrqh0rNp9n6HkZ39e/O5mwhA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@firebase/app': 0.x
+ '@firebase/app-types': 0.x
+ peerDependenciesMeta:
+ '@firebase/app-types':
+ optional: true
+ dependencies:
+ '@firebase/app': 0.10.4
+ '@firebase/app-check-interop-types': 0.3.2
+ '@firebase/app-types': 0.9.2
+ '@firebase/component': 0.6.7
+ '@firebase/logger': 0.4.2
+ '@firebase/util': 1.9.6
+ tslib: 2.6.0
+ dev: false
+
+ /@firebase/webchannel-wrapper@1.0.0:
+ resolution: {integrity: sha512-zuWxyfXNbsKbm96HhXzainONPFqRcoZblQ++e9cAIGUuHfl2cFSBzW01jtesqWG/lqaUyX3H8O1y9oWboGNQBA==}
+ dev: false
+
/@google-cloud/bigquery@4.7.0:
resolution: {integrity: sha512-u3VN1VUWcbVaW2vH5v2t0Zn5RSC4Hj3VCpf6sUO5xqcNTcHQyrjSd21aIBk28HgQO1H+9Gd1E0tGBfknGNONHw==}
engines: {node: '>=8.10.0'}
@@ -2138,6 +2889,20 @@ packages:
- supports-color
optional: true
+ /@google-cloud/firestore@7.7.0:
+ resolution: {integrity: sha512-41/vBFXOeSYjFI/2mJuJrDwg2umGk+FDrI/SCGzBRUe+UZWDN4GoahIbGZ19YQsY0ANNl6DRiAy4wD6JezK02g==}
+ engines: {node: '>=14.0.0'}
+ requiresBuild: true
+ dependencies:
+ fast-deep-equal: 3.1.3
+ functional-red-black-tree: 1.0.1
+ google-gax: 4.3.3
+ protobufjs: 7.3.0
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ optional: true
+
/@google-cloud/language@3.8.0:
resolution: {integrity: sha512-qWzzmJ18y6PE0LEJKVtKSy/EibKoPlvKc6wsgxqBoNPbVFsxdrDyKx81M3QpXg6kE3ktL0iTkwbSbsqMxX5ysA==}
engines: {node: '>=8.10.0'}
@@ -2176,7 +2941,7 @@ packages:
- supports-color
dev: false
- /@google-cloud/opentelemetry-cloud-trace-exporter@1.1.0(@opentelemetry/api@1.2.0)(@opentelemetry/core@1.15.0)(@opentelemetry/resources@1.15.0)(@opentelemetry/sdk-trace-base@1.15.0)(@opentelemetry/semantic-conventions@1.15.0):
+ /@google-cloud/opentelemetry-cloud-trace-exporter@1.1.0(@opentelemetry/api@1.2.0)(@opentelemetry/core@1.15.0)(@opentelemetry/resources@1.15.0)(@opentelemetry/sdk-trace-base@1.15.0)(@opentelemetry/semantic-conventions@1.21.0):
resolution: {integrity: sha512-pAgk5ieNcOOWBO2OQQsgZ7ZXbutVDCdlVg7srfQT7txTf2UlVajT1DlisEveMpMjjNjHeizjf/4P3NZ8btUlFw==}
engines: {node: '>=10'}
peerDependencies:
@@ -2185,7 +2950,7 @@ packages:
'@opentelemetry/resources': ^1.0.0
'@opentelemetry/sdk-trace-base': ^1.0.0
dependencies:
- '@google-cloud/opentelemetry-resource-util': 1.2.0(@opentelemetry/resources@1.15.0)(@opentelemetry/semantic-conventions@1.15.0)
+ '@google-cloud/opentelemetry-resource-util': 1.2.0(@opentelemetry/resources@1.15.0)(@opentelemetry/semantic-conventions@1.21.0)
'@grpc/grpc-js': 1.8.14
'@grpc/proto-loader': 0.6.13
'@opentelemetry/api': 1.2.0
@@ -2212,7 +2977,7 @@ packages:
hex2dec: 1.1.2
dev: false
- /@google-cloud/opentelemetry-resource-util@1.2.0(@opentelemetry/resources@1.15.0)(@opentelemetry/semantic-conventions@1.15.0):
+ /@google-cloud/opentelemetry-resource-util@1.2.0(@opentelemetry/resources@1.15.0)(@opentelemetry/semantic-conventions@1.21.0):
resolution: {integrity: sha512-1NCk5o4mJEMgeJaCjffwAsbdrfRepFJ0ZbfSQ3eS4IyqnUZn5wyX027xtk7lNy0RBJF7lyhQwxtN7sSbtvp+YA==}
engines: {node: '>=10'}
peerDependencies:
@@ -2220,7 +2985,7 @@ packages:
'@opentelemetry/semantic-conventions': ^1.0.0
dependencies:
'@opentelemetry/resources': 1.15.0(@opentelemetry/api@1.2.0)
- '@opentelemetry/semantic-conventions': 1.15.0
+ '@opentelemetry/semantic-conventions': 1.21.0
dev: false
/@google-cloud/paginator@2.0.3:
@@ -2240,6 +3005,14 @@ packages:
extend: 3.0.2
optional: true
+ /@google-cloud/paginator@5.0.0:
+ resolution: {integrity: sha512-87aeg6QQcEPxGCOthnpUjvw4xAZ57G7pL8FS0C4e/81fr3FjkpUpibf1s2v5XGyGhUVGF4Jfg7yEcxqn2iUw1w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ arrify: 2.0.1
+ extend: 3.0.2
+ optional: true
+
/@google-cloud/projectify@1.0.4:
resolution: {integrity: sha512-ZdzQUN02eRsmTKfBj9FDL0KNDIFNjBn/d6tHQmA/+FImH5DO6ZV8E7FzxMgAUiVAUq41RFAkb25p1oHOZ8psfg==}
engines: {node: '>=8.10.0'}
@@ -2251,6 +3024,11 @@ packages:
requiresBuild: true
optional: true
+ /@google-cloud/projectify@4.0.0:
+ resolution: {integrity: sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==}
+ engines: {node: '>=14.0.0'}
+ optional: true
+
/@google-cloud/promisify@1.0.4:
resolution: {integrity: sha512-VccZDcOql77obTnFh0TbNED/6ZbbmHDf8UMNnzO1d5g9V0Htfm4k5cllY8P1tJsRKC3zWYGRLaViiupcgVjBoQ==}
engines: {node: '>=8.10.0'}
@@ -2267,6 +3045,11 @@ packages:
requiresBuild: true
optional: true
+ /@google-cloud/promisify@4.0.0:
+ resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==}
+ engines: {node: '>=14'}
+ optional: true
+
/@google-cloud/storage@4.7.2:
resolution: {integrity: sha512-nlXYhJyC6ErFQX34tMLruknJ9fljN3JepgXEC9MZlQ64/2h9Ee8MJ7FCowdBnTiZ863IkbvctWtNZRrSxfyqSQ==}
engines: {node: '>=8.10.0'}
@@ -2325,6 +3108,31 @@ packages:
- supports-color
optional: true
+ /@google-cloud/storage@7.11.1:
+ resolution: {integrity: sha512-tibLSvgw7nDohMyIelt26kBpJ59YGWA2Rzep++DFNzEzKaSuCSp56Se9iM13ZlM3j5nLzR21IBkpRN58CmvCIw==}
+ engines: {node: '>=14'}
+ requiresBuild: true
+ dependencies:
+ '@google-cloud/paginator': 5.0.0
+ '@google-cloud/projectify': 4.0.0
+ '@google-cloud/promisify': 4.0.0
+ abort-controller: 3.0.0
+ async-retry: 1.3.3
+ duplexify: 4.1.3
+ fast-xml-parser: 4.4.0
+ gaxios: 6.6.0
+ google-auth-library: 9.10.0
+ html-entities: 2.5.2
+ mime: 3.0.0
+ p-limit: 3.1.0
+ retry-request: 7.0.2
+ teeny-request: 9.0.0
+ uuid: 8.3.2
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ optional: true
+
/@google-cloud/translate@5.3.0:
resolution: {integrity: sha512-bQmPe7LYiPNM7F6m0IzoDxG1FqQJdjq5PboOpXt+OBOUR7UKNmAfn8nMVOdKNZTlA7nQdQwX/YKd2wQT2h1d9g==}
engines: {node: '>=8.10.0'}
@@ -2342,6 +3150,26 @@ packages:
- supports-color
dev: false
+ /@google-cloud/vertexai@1.1.0:
+ resolution: {integrity: sha512-hfwfdlVpJ+kM6o2b5UFfPnweBcz8tgHAFRswnqUKYqLJsvKU0DDD0Z2/YKoHyAUoPJAv20qg6KlC3msNeUKUiw==}
+ engines: {node: '>=18.0.0'}
+ dependencies:
+ google-auth-library: 9.10.0
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: false
+
+ /@google-cloud/vertexai@1.2.0:
+ resolution: {integrity: sha512-EH0dnoMRIBQzJEEOUWN03eWPSdLBFdsZA/am3eU+qYrnNyY9okUueOajZd79U48KwgFbqoFrCA9yHQ30DgfD8Q==}
+ engines: {node: '>=18.0.0'}
+ dependencies:
+ google-auth-library: 9.10.0
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ dev: false
+
/@google-cloud/vision@2.4.2:
resolution: {integrity: sha512-2IazcBR9K0JJtFJWVXq0Ko3VQtcHG1/xAaxpfJ550aSK7gGq6o4gmDt+z6J61qWYlcE9w7Wb3b+lH6YzqF/HgQ==}
engines: {node: '>=10'}
@@ -2354,6 +3182,14 @@ packages:
- supports-color
dev: false
+ /@grpc/grpc-js@1.10.8:
+ resolution: {integrity: sha512-vYVqYzHicDqyKB+NQhAc54I1QWCBLCrYG6unqOIcBTHx+7x8C9lcoLj3KVJXs2VB4lUbpWY+Kk9NipcbXYWmvg==}
+ engines: {node: '>=12.10.0'}
+ dependencies:
+ '@grpc/proto-loader': 0.7.13
+ '@js-sdsl/ordered-map': 4.4.2
+ optional: true
+
/@grpc/grpc-js@1.3.8:
resolution: {integrity: sha512-4qJqqn+CU/nBydz9ePJP+oa8dz0U42Ut/GejlbyaQ1xTkynCc+ndNHHnISlNeHawDsv4MOAyP3mV/EnDNUw2zA==}
engines: {node: ^8.13.0 || >=10.10.0}
@@ -2365,7 +3201,7 @@ packages:
resolution: {integrity: sha512-JmvQ03OTSpVd9JTlj/K3IWHSz4Gk/JMLUTtW7Zb0KvO1LcOYGATh5cNuRYzCAeDR3O8wq+q8FZe97eO9MBrkUw==}
engines: {node: ^8.13.0 || >=10.10.0}
dependencies:
- '@grpc/proto-loader': 0.7.7
+ '@grpc/proto-loader': 0.7.13
'@types/node': 17.0.45
dev: false
@@ -2373,7 +3209,7 @@ packages:
resolution: {integrity: sha512-w84maJ6CKl5aApCMzFll0hxtFNT6or9WwMslobKaqWUEf1K+zhlL43bSQhFreyYWIWR+Z0xnVFC1KtLm4ZpM/A==}
engines: {node: ^8.13.0 || >=10.10.0}
dependencies:
- '@grpc/proto-loader': 0.7.7
+ '@grpc/proto-loader': 0.7.13
'@types/node': 17.0.45
dev: false
@@ -2382,10 +3218,18 @@ packages:
engines: {node: ^8.13.0 || >=10.10.0}
requiresBuild: true
dependencies:
- '@grpc/proto-loader': 0.7.7
+ '@grpc/proto-loader': 0.7.13
'@types/node': 17.0.45
optional: true
+ /@grpc/grpc-js@1.9.14:
+ resolution: {integrity: sha512-nOpuzZ2G3IuMFN+UPPpKrC6NsLmWsTqSsm66IRfnBt1D4pwTqE27lmbpcPM+l2Ua4gE7PfjRHI6uedAy7hoXUw==}
+ engines: {node: ^8.13.0 || >=10.10.0}
+ dependencies:
+ '@grpc/proto-loader': 0.7.13
+ '@types/node': 17.0.45
+ dev: false
+
/@grpc/proto-loader@0.5.6:
resolution: {integrity: sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ==}
engines: {node: '>=6'}
@@ -2406,15 +3250,14 @@ packages:
yargs: 16.2.0
dev: false
- /@grpc/proto-loader@0.7.7:
- resolution: {integrity: sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==}
+ /@grpc/proto-loader@0.7.13:
+ resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==}
engines: {node: '>=6'}
hasBin: true
dependencies:
- '@types/long': 4.0.2
lodash.camelcase: 4.3.0
- long: 4.0.0
- protobufjs: 7.2.4
+ long: 5.2.3
+ protobufjs: 7.3.0
yargs: 17.7.2
/@hapi/address@2.1.4:
@@ -2760,6 +3603,10 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.14
dev: true
+ /@js-sdsl/ordered-map@4.4.2:
+ resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==}
+ optional: true
+
/@jsdoc/salty@0.2.5:
resolution: {integrity: sha512-TfRP53RqunNe2HBobVBJ0VLhK1HbfvBYeTC1ahnN64PWvyYyGebmMiPkuwvD9fpw2ZbkoPb8Q7mwy0aR8Z9rvw==}
engines: {node: '>=v12.0.0'}
@@ -2876,7 +3723,7 @@ packages:
engines: {node: '>=8.12.0'}
deprecated: Please use @opentelemetry/api >= 1.3.0
dependencies:
- '@opentelemetry/api': 1.2.0
+ '@opentelemetry/api': 1.8.0
dev: false
/@opentelemetry/api-metrics@0.33.0:
@@ -2884,7 +3731,7 @@ packages:
engines: {node: '>=14'}
deprecated: Please use @opentelemetry/api >= 1.3.0
dependencies:
- '@opentelemetry/api': 1.2.0
+ '@opentelemetry/api': 1.8.0
dev: false
/@opentelemetry/api@1.2.0:
@@ -2892,6 +3739,11 @@ packages:
engines: {node: '>=8.0.0'}
dev: false
+ /@opentelemetry/api@1.8.0:
+ resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==}
+ engines: {node: '>=8.0.0'}
+ dev: false
+
/@opentelemetry/context-async-hooks@1.7.0(@opentelemetry/api@1.2.0):
resolution: {integrity: sha512-g4bMzyVW5dVBeMkyadaf3NRFpmNrdD4Pp9OJsrP29HwIam/zVMNfIWQpT5IBzjtTSMhl/ED5YQYR+UOSjVq3sQ==}
engines: {node: '>=14'}
@@ -3120,6 +3972,11 @@ packages:
tslib: 2.6.0
dev: false
+ /@opentelemetry/semantic-conventions@1.21.0:
+ resolution: {integrity: sha512-lkC8kZYntxVKr7b8xmjCVUgE0a8xgDakPyDo9uSWavXPyYqLgYYGdEd2j8NxihRyb6UwpX3G/hFUF4/9q2V+/g==}
+ engines: {node: '>=14'}
+ dev: false
+
/@opentelemetry/semantic-conventions@1.7.0:
resolution: {integrity: sha512-FGBx/Qd09lMaqQcogCHyYrFEpTx4cAjeS+48lMIR12z7LdH+zofGDVQSubN59nL6IpubfKqTeIDu9rNO28iHVA==}
engines: {node: '>=14'}
@@ -3285,6 +4142,10 @@ packages:
'@types/connect': 3.4.35
'@types/node': 17.0.45
+ /@types/caseless@0.12.5:
+ resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==}
+ optional: true
+
/@types/connect@3.4.35:
resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==}
dependencies:
@@ -3464,6 +4325,11 @@ packages:
/@types/node@17.0.45:
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
+ /@types/node@20.12.12:
+ resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==}
+ dependencies:
+ undici-types: 5.26.5
+
/@types/prettier@2.7.3:
resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==}
dev: true
@@ -3474,6 +4340,15 @@ packages:
/@types/range-parser@1.2.4:
resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==}
+ /@types/request@2.48.12:
+ resolution: {integrity: sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==}
+ dependencies:
+ '@types/caseless': 0.12.5
+ '@types/node': 17.0.45
+ '@types/tough-cookie': 4.0.2
+ form-data: 2.5.1
+ optional: true
+
/@types/responselike@1.0.0:
resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==}
dependencies:
@@ -3511,7 +4386,6 @@ packages:
/@types/tough-cookie@4.0.2:
resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==}
- dev: false
/@types/yargs-parser@21.0.0:
resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==}
@@ -3712,6 +4586,14 @@ packages:
transitivePeerDependencies:
- supports-color
+ /agent-base@7.1.1:
+ resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
+ engines: {node: '>= 14'}
+ dependencies:
+ debug: 4.3.4(supports-color@8.1.1)
+ transitivePeerDependencies:
+ - supports-color
+
/aggregate-error@3.1.0:
resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
engines: {node: '>=8'}
@@ -3811,6 +4693,7 @@ packages:
/are-we-there-yet@2.0.0:
resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
engines: {node: '>=10'}
+ deprecated: This package is no longer supported.
dependencies:
delegates: 1.0.0
readable-stream: 3.6.2
@@ -3916,7 +4799,6 @@ packages:
/asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
- dev: false
/available-typed-arrays@1.0.5:
resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
@@ -4077,7 +4959,6 @@ packages:
buffer: 5.7.1
inherits: 2.0.4
readable-stream: 3.6.2
- dev: false
/bluebird@3.7.2:
resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
@@ -4182,7 +5063,6 @@ packages:
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
- dev: false
/bytes@3.1.2:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
@@ -4342,7 +5222,6 @@ packages:
/chownr@1.1.4:
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
- dev: false
/chownr@2.0.0:
resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==}
@@ -4465,6 +5344,10 @@ packages:
engines: {node: '>= 0.8'}
dependencies:
delayed-stream: 1.0.0
+
+ /commander@9.5.0:
+ resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
+ engines: {node: ^12.20.0 || >=14}
dev: false
/component-emitter@1.3.0:
@@ -4733,7 +5616,6 @@ packages:
engines: {node: '>=10'}
dependencies:
mimic-response: 3.1.0
- dev: false
/dedent@0.7.0:
resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
@@ -4749,7 +5631,6 @@ packages:
/deep-extend@0.6.0:
resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
engines: {node: '>=4.0.0'}
- dev: false
/deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
@@ -4773,7 +5654,6 @@ packages:
/delayed-stream@1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
- dev: false
/delegates@1.0.0:
resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
@@ -4795,7 +5675,6 @@ packages:
/detect-libc@2.0.1:
resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==}
engines: {node: '>=8'}
- dev: false
/detect-newline@3.1.0:
resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
@@ -4934,6 +5813,15 @@ packages:
readable-stream: 3.6.2
stream-shift: 1.0.1
+ /duplexify@4.1.3:
+ resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==}
+ dependencies:
+ end-of-stream: 1.4.4
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ stream-shift: 1.0.3
+ optional: true
+
/ecc-jsbn@0.1.2:
resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
dependencies:
@@ -5095,6 +5983,36 @@ packages:
es6-promise: 4.2.8
dev: false
+ /esbuild@0.18.20:
+ resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/android-arm': 0.18.20
+ '@esbuild/android-arm64': 0.18.20
+ '@esbuild/android-x64': 0.18.20
+ '@esbuild/darwin-arm64': 0.18.20
+ '@esbuild/darwin-x64': 0.18.20
+ '@esbuild/freebsd-arm64': 0.18.20
+ '@esbuild/freebsd-x64': 0.18.20
+ '@esbuild/linux-arm': 0.18.20
+ '@esbuild/linux-arm64': 0.18.20
+ '@esbuild/linux-ia32': 0.18.20
+ '@esbuild/linux-loong64': 0.18.20
+ '@esbuild/linux-mips64el': 0.18.20
+ '@esbuild/linux-ppc64': 0.18.20
+ '@esbuild/linux-riscv64': 0.18.20
+ '@esbuild/linux-s390x': 0.18.20
+ '@esbuild/linux-x64': 0.18.20
+ '@esbuild/netbsd-x64': 0.18.20
+ '@esbuild/openbsd-x64': 0.18.20
+ '@esbuild/sunos-x64': 0.18.20
+ '@esbuild/win32-arm64': 0.18.20
+ '@esbuild/win32-ia32': 0.18.20
+ '@esbuild/win32-x64': 0.18.20
+ dev: true
+
/escalade@3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
@@ -5364,7 +6282,6 @@ packages:
/expand-template@2.0.3:
resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
engines: {node: '>=6'}
- dev: false
/expect@28.1.3:
resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==}
@@ -5438,6 +6355,14 @@ packages:
engines: {'0': node >=0.6.0}
dev: false
+ /farmhash@3.3.1:
+ resolution: {integrity: sha512-XUizHanzlr/v7suBr/o85HSakOoWh6HKXZjFYl5C2+Gj0f0rkw+XTUZzrd9odDsgI9G5tRUcF4wSbKaX04T0DQ==}
+ engines: {node: '>=10'}
+ requiresBuild: true
+ dependencies:
+ node-addon-api: 5.1.0
+ prebuild-install: 7.1.2
+
/fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
@@ -5461,6 +6386,13 @@ packages:
/fast-text-encoding@1.0.6:
resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==}
+ /fast-xml-parser@4.4.0:
+ resolution: {integrity: sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==}
+ hasBin: true
+ dependencies:
+ strnum: 1.0.5
+ optional: true
+
/fastq@1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
dependencies:
@@ -5555,17 +6487,38 @@ packages:
resolution: {integrity: sha512-My7qrInVZFmImX8aTulrp9kgY6d88Wn+ie8UIXKzZ3SJqQQhDwFT7Q3pgQXK9RfdsUtcxJJ3rCK7MWBm4GGtuw==}
engines: {node: '>=14'}
dependencies:
- '@fastify/busboy': 1.2.1
- '@firebase/database-compat': 0.3.4
- '@firebase/database-types': 0.10.4
- '@types/node': 17.0.45
+ '@fastify/busboy': 1.2.1
+ '@firebase/database-compat': 0.3.4
+ '@firebase/database-types': 0.10.4
+ '@types/node': 17.0.45
+ jsonwebtoken: 9.0.1
+ jwks-rsa: 3.0.1
+ node-forge: 1.3.1
+ uuid: 9.0.0
+ optionalDependencies:
+ '@google-cloud/firestore': 6.6.1
+ '@google-cloud/storage': 6.11.0
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
+ /firebase-admin@12.1.0:
+ resolution: {integrity: sha512-bU7uPKMmIXAihWxntpY/Ma9zucn5y3ec+HQPqFQ/zcEfP9Avk9E/6D8u+yT/VwKHNZyg7yDVWOoJi73TIdR4Ww==}
+ engines: {node: '>=14'}
+ dependencies:
+ '@fastify/busboy': 2.1.1
+ '@firebase/database-compat': 1.0.5
+ '@firebase/database-types': 1.0.3
+ '@types/node': 20.12.12
+ farmhash: 3.3.1
jsonwebtoken: 9.0.1
jwks-rsa: 3.0.1
+ long: 5.2.3
node-forge: 1.3.1
- uuid: 9.0.0
+ uuid: 9.0.1
optionalDependencies:
- '@google-cloud/firestore': 6.6.1
- '@google-cloud/storage': 6.11.0
+ '@google-cloud/firestore': 7.7.0
+ '@google-cloud/storage': 7.11.1
transitivePeerDependencies:
- encoding
- supports-color
@@ -5586,6 +6539,38 @@ packages:
ts-deepmerge: 2.0.7
dev: true
+ /firebase-functions-test@3.1.0(firebase-admin@12.1.0)(firebase-functions@4.9.0)(jest@28.1.3):
+ resolution: {integrity: sha512-yfm9ToguShxmRXb7TINN88zE2bM9gsBbs7vMWVKJAxGcl/n1f/U0sT5k2yho676QIcSqXVSjCONU8W4cUEL+Sw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ firebase-admin: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0
+ firebase-functions: '>=4.3.0'
+ jest: '>=28.0.0'
+ dependencies:
+ '@types/lodash': 4.14.194
+ firebase-admin: 12.1.0
+ firebase-functions: 4.9.0(firebase-admin@12.1.0)
+ jest: 28.1.3(@types/node@17.0.45)
+ lodash: 4.17.21
+ ts-deepmerge: 2.0.7
+ dev: true
+
+ /firebase-functions-test@3.1.0(firebase-admin@12.1.0)(firebase-functions@5.0.0)(jest@28.1.3):
+ resolution: {integrity: sha512-yfm9ToguShxmRXb7TINN88zE2bM9gsBbs7vMWVKJAxGcl/n1f/U0sT5k2yho676QIcSqXVSjCONU8W4cUEL+Sw==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ firebase-admin: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0
+ firebase-functions: '>=4.3.0'
+ jest: '>=28.0.0'
+ dependencies:
+ '@types/lodash': 4.14.194
+ firebase-admin: 12.1.0
+ firebase-functions: 5.0.0(firebase-admin@12.1.0)
+ jest: 28.1.3(@types/node@17.0.45)
+ lodash: 4.17.21
+ ts-deepmerge: 2.0.7
+ dev: true
+
/firebase-functions@4.4.1(firebase-admin@11.9.0):
resolution: {integrity: sha512-3no53Lg12ToNlPSgLZtAFLQAz6si7ilHvzO8NC3/2EybyUwegpj5YhHwNiCw839lmAWp3znjATJDTvADFiZMrg==}
engines: {node: '>=14.10.0'}
@@ -5621,6 +6606,72 @@ packages:
- supports-color
dev: false
+ /firebase-functions@4.9.0(firebase-admin@12.1.0):
+ resolution: {integrity: sha512-IqxOEsVAWGcRv9KRGzWQR5mOFuNsil3vsfkRPPiaV1U/ATC27/jbahh4z8I4rW8Xqa6cQE5xqnw0ueyMH7i7Ag==}
+ engines: {node: '>=14.10.0'}
+ hasBin: true
+ peerDependencies:
+ firebase-admin: ^10.0.0 || ^11.0.0 || ^12.0.0
+ dependencies:
+ '@types/cors': 2.8.13
+ '@types/express': 4.17.3
+ cors: 2.8.5
+ express: 4.18.2
+ firebase-admin: 12.1.0
+ protobufjs: 7.2.4
+ transitivePeerDependencies:
+ - supports-color
+
+ /firebase-functions@5.0.0(firebase-admin@12.1.0):
+ resolution: {integrity: sha512-iGG41MavOS+RtEsbcq2j/ltQ8L2Oji71dRpwVur+meIQWkvXCYb2QJtnyp0ryQVnV3NyjV+3Vdx7OnmD+Hanuw==}
+ engines: {node: '>=14.10.0'}
+ hasBin: true
+ peerDependencies:
+ firebase-admin: ^11.10.0 || ^12.0.0
+ dependencies:
+ '@types/cors': 2.8.13
+ '@types/express': 4.17.3
+ cors: 2.8.5
+ express: 4.18.2
+ firebase-admin: 12.1.0
+ protobufjs: 7.3.0
+ transitivePeerDependencies:
+ - supports-color
+
+ /firebase@10.12.1:
+ resolution: {integrity: sha512-B/R3BX26OAgreA64JN0lYspYRHMS36E19/Sv9WsyQu1RqPGBzWkBlt1RW6+38SdtMDlAnk3ibKL/SRSQHb1xRw==}
+ dependencies:
+ '@firebase/analytics': 0.10.4(@firebase/app@0.10.4)
+ '@firebase/analytics-compat': 0.2.10(@firebase/app-compat@0.2.34)(@firebase/app@0.10.4)
+ '@firebase/app': 0.10.4
+ '@firebase/app-check': 0.8.4(@firebase/app@0.10.4)
+ '@firebase/app-check-compat': 0.3.11(@firebase/app-compat@0.2.34)(@firebase/app@0.10.4)
+ '@firebase/app-compat': 0.2.34
+ '@firebase/app-types': 0.9.2
+ '@firebase/auth': 1.7.3(@firebase/app@0.10.4)
+ '@firebase/auth-compat': 0.5.8(@firebase/app-compat@0.2.34)(@firebase/app-types@0.9.2)(@firebase/app@0.10.4)
+ '@firebase/database': 1.0.5
+ '@firebase/database-compat': 1.0.5
+ '@firebase/firestore': 4.6.3(@firebase/app@0.10.4)
+ '@firebase/firestore-compat': 0.3.32(@firebase/app-compat@0.2.34)(@firebase/app-types@0.9.2)(@firebase/app@0.10.4)
+ '@firebase/functions': 0.11.5(@firebase/app@0.10.4)
+ '@firebase/functions-compat': 0.3.11(@firebase/app-compat@0.2.34)(@firebase/app@0.10.4)
+ '@firebase/installations': 0.6.7(@firebase/app@0.10.4)
+ '@firebase/installations-compat': 0.2.7(@firebase/app-compat@0.2.34)(@firebase/app-types@0.9.2)(@firebase/app@0.10.4)
+ '@firebase/messaging': 0.12.9(@firebase/app@0.10.4)
+ '@firebase/messaging-compat': 0.2.9(@firebase/app-compat@0.2.34)(@firebase/app@0.10.4)
+ '@firebase/performance': 0.6.7(@firebase/app@0.10.4)
+ '@firebase/performance-compat': 0.2.7(@firebase/app-compat@0.2.34)(@firebase/app@0.10.4)
+ '@firebase/remote-config': 0.4.7(@firebase/app@0.10.4)
+ '@firebase/remote-config-compat': 0.2.7(@firebase/app-compat@0.2.34)(@firebase/app@0.10.4)
+ '@firebase/storage': 0.12.5(@firebase/app@0.10.4)
+ '@firebase/storage-compat': 0.3.8(@firebase/app-compat@0.2.34)(@firebase/app-types@0.9.2)(@firebase/app@0.10.4)
+ '@firebase/util': 1.9.6
+ '@firebase/vertexai-preview': 0.0.1(@firebase/app-types@0.9.2)(@firebase/app@0.10.4)
+ transitivePeerDependencies:
+ - '@react-native-async-storage/async-storage'
+ dev: false
+
/flat-cache@3.0.4:
resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
engines: {node: ^10.12.0 || >=12.0.0}
@@ -5698,7 +6749,6 @@ packages:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.35
- dev: false
/formdata-polyfill@4.0.10:
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
@@ -5722,7 +6772,6 @@ packages:
/fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
- dev: false
/fs-minipass@2.1.0:
resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
@@ -5776,6 +6825,7 @@ packages:
/gauge@3.0.2:
resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
engines: {node: '>=10'}
+ deprecated: This package is no longer supported.
dependencies:
aproba: 2.0.0
color-support: 1.1.3
@@ -5867,6 +6917,19 @@ packages:
- encoding
- supports-color
+ /gaxios@6.6.0:
+ resolution: {integrity: sha512-bpOZVQV5gthH/jVCSuYuokRo2bTKOcuBiVWpjmTn6C5Agl5zclGfTljuGsQZxwwDBkli+YhZhP4TdlqTnhOezQ==}
+ engines: {node: '>=14'}
+ dependencies:
+ extend: 3.0.2
+ https-proxy-agent: 7.0.4
+ is-stream: 2.0.1
+ node-fetch: 2.6.12
+ uuid: 9.0.1
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
/gcp-metadata@0.6.3:
resolution: {integrity: sha512-MSmczZctbz91AxCvqp9GHBoZOSbJKAICV7Ow/AIWSJZRrRchUd5NL1b2P4OfP+4m490BEUPhhARfpHdqCxuCvg==}
engines: {node: '>=4'}
@@ -5934,6 +6997,16 @@ packages:
- supports-color
optional: true
+ /gcp-metadata@6.1.0:
+ resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==}
+ engines: {node: '>=14'}
+ dependencies:
+ gaxios: 6.6.0
+ json-bigint: 1.0.0
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
/gcs-resumable-upload@2.3.3:
resolution: {integrity: sha512-sf896I5CC/1AxeaGfSFg3vKMjUq/r+A3bscmVzZm10CElyRanN0XwPu/MxeIO4LSP+9uF6yKzXvNsaTsMXUG6Q==}
engines: {node: '>=8.10.0'}
@@ -6011,7 +7084,6 @@ packages:
/github-from-package@0.0.0:
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
- dev: false
/glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
@@ -6227,6 +7299,20 @@ packages:
- supports-color
optional: true
+ /google-auth-library@9.10.0:
+ resolution: {integrity: sha512-ol+oSa5NbcGdDqA+gZ3G3mev59OHBZksBTxY/tYwjtcp1H/scAFwJfSQU9/1RALoyZ7FslNbke8j4i3ipwlyuQ==}
+ engines: {node: '>=14'}
+ dependencies:
+ base64-js: 1.5.1
+ ecdsa-sig-formatter: 1.0.11
+ gaxios: 6.6.0
+ gcp-metadata: 6.1.0
+ gtoken: 7.1.0
+ jws: 4.0.0
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
/google-gax@1.15.4:
resolution: {integrity: sha512-Wzl43ueWEKNsLcMJ33sPps179nD7wn6Jcl/P+ZQNS+HxdCJcoQEgJe3AmulsJnatwjBE3pVPIE4HFJNhpRGvUw==}
engines: {node: '>=8.10.0'}
@@ -6282,11 +7368,11 @@ packages:
requiresBuild: true
dependencies:
'@grpc/grpc-js': 1.8.17
- '@grpc/proto-loader': 0.7.7
+ '@grpc/proto-loader': 0.7.13
'@types/long': 4.0.2
'@types/rimraf': 3.0.2
abort-controller: 3.0.0
- duplexify: 4.1.2
+ duplexify: 4.1.3
fast-text-encoding: 1.0.6
google-auth-library: 8.9.0
is-stream-ended: 0.1.4
@@ -6301,6 +7387,27 @@ packages:
- supports-color
optional: true
+ /google-gax@4.3.3:
+ resolution: {integrity: sha512-f4F2Y9X4+mqsrJuLZsuTljYuQpcBnQsCt9ScvZpdM8jGjqrcxyJi5JUiqtq0jtpdHVPzyit0N7f5t07e+kH5EA==}
+ engines: {node: '>=14'}
+ dependencies:
+ '@grpc/grpc-js': 1.10.8
+ '@grpc/proto-loader': 0.7.13
+ '@types/long': 4.0.2
+ abort-controller: 3.0.0
+ duplexify: 4.1.3
+ google-auth-library: 9.10.0
+ node-fetch: 2.6.12
+ object-hash: 3.0.0
+ proto3-json-serializer: 2.0.1
+ protobufjs: 7.2.6
+ retry-request: 7.0.2
+ uuid: 9.0.1
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ optional: true
+
/google-p12-pem@1.0.5:
resolution: {integrity: sha512-50rTrqYPTPPwlu9TNl/HkJbBENEpbRzTOVLFJ4YWM86njZgXHFy+FP+tLRSd9m132Li9Dqi27Z3KIWDEv5y+EA==}
hasBin: true
@@ -6508,6 +7615,16 @@ packages:
- encoding
- supports-color
+ /gtoken@7.1.0:
+ resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ gaxios: 6.6.0
+ jws: 4.0.0
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+
/handlebars@4.7.7:
resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==}
engines: {node: '>=0.4.7'}
@@ -6600,6 +7717,10 @@ packages:
resolution: {integrity: sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==}
dev: false
+ /html-entities@2.5.2:
+ resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==}
+ optional: true
+
/html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
dev: true
@@ -6704,6 +7825,15 @@ packages:
transitivePeerDependencies:
- supports-color
+ /https-proxy-agent@7.0.4:
+ resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==}
+ engines: {node: '>= 14'}
+ dependencies:
+ agent-base: 7.1.1
+ debug: 4.3.4(supports-color@8.1.1)
+ transitivePeerDependencies:
+ - supports-color
+
/human-signals@2.1.0:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
@@ -6715,9 +7845,12 @@ packages:
dependencies:
safer-buffer: 2.1.2
+ /idb@7.1.1:
+ resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==}
+ dev: false
+
/ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
- dev: false
/ignore@5.2.4:
resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
@@ -6752,6 +7885,7 @@ packages:
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
dependencies:
once: 1.4.0
wrappy: 1.0.2
@@ -6761,7 +7895,6 @@ packages:
/ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
- dev: false
/internal-slot@1.0.5:
resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
@@ -7829,6 +8962,7 @@ packages:
/long@4.0.0:
resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==}
+ dev: false
/long@5.2.3:
resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==}
@@ -8016,7 +9150,6 @@ packages:
/mimic-response@3.1.0:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
engines: {node: '>=10'}
- dev: false
/minimatch@3.0.4:
resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==}
@@ -8075,7 +9208,6 @@ packages:
/mkdirp-classic@0.5.3:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
- dev: false
/mkdirp@0.5.5:
resolution: {integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==}
@@ -8179,9 +9311,14 @@ packages:
hasBin: true
dev: true
+ /nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: true
+
/napi-build-utils@1.0.2:
resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
- dev: false
/natural-compare-lite@1.4.0:
resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
@@ -8233,7 +9370,9 @@ packages:
engines: {node: '>=10'}
dependencies:
semver: 7.5.3
- dev: false
+
+ /node-addon-api@5.1.0:
+ resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==}
/node-addon-api@6.1.0:
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
@@ -8357,6 +9496,7 @@ packages:
/npmlog@5.0.1:
resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==}
+ deprecated: This package is no longer supported.
dependencies:
are-we-there-yet: 2.0.0
console-control-strings: 1.1.0
@@ -8699,6 +9839,15 @@ packages:
hasBin: true
dev: true
+ /postcss@8.4.38:
+ resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.0.0
+ source-map-js: 1.2.0
+ dev: true
+
/prebuild-install@7.1.1:
resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==}
engines: {node: '>=10'}
@@ -8718,6 +9867,24 @@ packages:
tunnel-agent: 0.6.0
dev: false
+ /prebuild-install@7.1.2:
+ resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ detect-libc: 2.0.1
+ expand-template: 2.0.3
+ github-from-package: 0.0.0
+ minimist: 1.2.8
+ mkdirp-classic: 0.5.3
+ napi-build-utils: 1.0.2
+ node-abi: 3.40.0
+ pump: 3.0.0
+ rc: 1.2.8
+ simple-get: 4.0.1
+ tar-fs: 2.1.1
+ tunnel-agent: 0.6.0
+
/prelude-ls@1.1.2:
resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
engines: {node: '>= 0.8.0'}
@@ -8791,7 +9958,14 @@ packages:
engines: {node: '>=12.0.0'}
requiresBuild: true
dependencies:
- protobufjs: 7.2.4
+ protobufjs: 7.3.0
+ optional: true
+
+ /proto3-json-serializer@2.0.1:
+ resolution: {integrity: sha512-8awBvjO+FwkMd6gNoGFZyqkHZXCFd54CIYTb6De7dPaufGJ2XNW+QUNqbMr8MaAocMdb+KpsD4rxEOaTBDCffA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ protobufjs: 7.3.0
optional: true
/protobufjs-cli@1.1.1(protobufjs@7.2.3):
@@ -8872,6 +10046,43 @@ packages:
'@types/node': 17.0.45
long: 5.2.3
+ /protobufjs@7.2.6:
+ resolution: {integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==}
+ engines: {node: '>=12.0.0'}
+ requiresBuild: true
+ dependencies:
+ '@protobufjs/aspromise': 1.1.2
+ '@protobufjs/base64': 1.1.2
+ '@protobufjs/codegen': 2.0.4
+ '@protobufjs/eventemitter': 1.1.0
+ '@protobufjs/fetch': 1.1.0
+ '@protobufjs/float': 1.0.2
+ '@protobufjs/inquire': 1.1.0
+ '@protobufjs/path': 1.1.2
+ '@protobufjs/pool': 1.1.0
+ '@protobufjs/utf8': 1.1.0
+ '@types/node': 17.0.45
+ long: 5.2.3
+ optional: true
+
+ /protobufjs@7.3.0:
+ resolution: {integrity: sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==}
+ engines: {node: '>=12.0.0'}
+ requiresBuild: true
+ dependencies:
+ '@protobufjs/aspromise': 1.1.2
+ '@protobufjs/base64': 1.1.2
+ '@protobufjs/codegen': 2.0.4
+ '@protobufjs/eventemitter': 1.1.0
+ '@protobufjs/fetch': 1.1.0
+ '@protobufjs/float': 1.0.2
+ '@protobufjs/inquire': 1.1.0
+ '@protobufjs/path': 1.1.2
+ '@protobufjs/pool': 1.1.0
+ '@protobufjs/utf8': 1.1.0
+ '@types/node': 17.0.45
+ long: 5.2.3
+
/proxy-addr@2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
@@ -8891,7 +10102,6 @@ packages:
dependencies:
end-of-stream: 1.4.4
once: 1.4.0
- dev: false
/pumpify@2.0.1:
resolution: {integrity: sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==}
@@ -8976,7 +10186,6 @@ packages:
ini: 1.3.8
minimist: 1.2.8
strip-json-comments: 2.0.1
- dev: false
/react-is@17.0.2:
resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
@@ -9184,6 +10393,18 @@ packages:
- supports-color
optional: true
+ /retry-request@7.0.2:
+ resolution: {integrity: sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w==}
+ engines: {node: '>=14'}
+ dependencies:
+ '@types/request': 2.48.12
+ extend: 3.0.2
+ teeny-request: 9.0.0
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ optional: true
+
/retry@0.13.1:
resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
engines: {node: '>= 4'}
@@ -9205,6 +10426,14 @@ packages:
resolution: {integrity: sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw==}
dev: false
+ /rollup@3.29.4:
+ resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==}
+ engines: {node: '>=14.18.0', npm: '>=8.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
/run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
dependencies:
@@ -9348,6 +10577,13 @@ packages:
resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==}
dev: false
+ /showdown@2.1.0:
+ resolution: {integrity: sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==}
+ hasBin: true
+ dependencies:
+ commander: 9.5.0
+ dev: false
+
/side-channel@1.0.4:
resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
dependencies:
@@ -9360,7 +10596,6 @@ packages:
/simple-concat@1.0.1:
resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
- dev: false
/simple-get@3.1.1:
resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==}
@@ -9376,7 +10611,6 @@ packages:
decompress-response: 6.0.0
once: 1.4.0
simple-concat: 1.0.1
- dev: false
/simple-oauth2@3.4.0:
resolution: {integrity: sha512-gDPCC/xjq82FJnzF7+XGUUMWWfHeibuGsp3OYOV7yHwIibxHkq4+WSxywY63/3BF9j8SfIDygGqBrPLynx/iuQ==}
@@ -9441,6 +10675,11 @@ packages:
resolution: {integrity: sha512-ot3bb6pQt6IVq5G/JQ640ceSYTPtriVrwNyfoUw1LmQQGzPMAGxE5F+ded2UwSUCyf2PW1fFAYUnVEX21PWbpQ==}
dev: false
+ /source-map-js@1.2.0:
+ resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/source-map-support@0.5.13:
resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
dependencies:
@@ -9509,6 +10748,10 @@ packages:
/stream-shift@1.0.1:
resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==}
+ /stream-shift@1.0.3:
+ resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==}
+ optional: true
+
/string-format-obj@1.1.1:
resolution: {integrity: sha512-Mm+sROy+pHJmx0P/0Bs1uxIX6UhGJGj6xDGQZ5zh9v/SZRmLGevp+p0VJxV7lirrkAmQ2mvva/gHKpnF/pTb+Q==}
dev: false
@@ -9643,6 +10886,10 @@ packages:
qs: 6.11.1
dev: false
+ /strnum@1.0.5:
+ resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
+ optional: true
+
/stubs@3.0.0:
resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==}
@@ -9710,7 +10957,6 @@ packages:
mkdirp-classic: 0.5.3
pump: 3.0.0
tar-stream: 2.2.0
- dev: false
/tar-stream@2.2.0:
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
@@ -9721,7 +10967,6 @@ packages:
fs-constants: 1.0.0
inherits: 2.0.4
readable-stream: 3.6.2
- dev: false
/tar@6.1.14:
resolution: {integrity: sha512-piERznXu0U7/pW7cdSn7hjqySIVTYT6F76icmFk7ptU7dDYlXTm5r9A6K04R2vU3olYgoKeo1Cg3eeu5nhftAw==}
@@ -9757,7 +11002,21 @@ packages:
https-proxy-agent: 5.0.1
node-fetch: 2.6.12
stream-events: 1.0.5
- uuid: 9.0.0
+ uuid: 9.0.1
+ transitivePeerDependencies:
+ - encoding
+ - supports-color
+ optional: true
+
+ /teeny-request@9.0.0:
+ resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==}
+ engines: {node: '>=14'}
+ dependencies:
+ http-proxy-agent: 5.0.0
+ https-proxy-agent: 5.0.1
+ node-fetch: 2.6.12
+ stream-events: 1.0.5
+ uuid: 9.0.1
transitivePeerDependencies:
- encoding
- supports-color
@@ -9931,7 +11190,6 @@ packages:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
dependencies:
safe-buffer: 5.2.1
- dev: false
/tweetnacl@0.14.5:
resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==}
@@ -10008,6 +11266,12 @@ packages:
hasBin: true
dev: true
+ /typescript@5.1.6:
+ resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+ dev: true
+
/typesense@0.13.0(@babel/runtime@7.20.1):
resolution: {integrity: sha512-ERSwH5CLgM69UWGVk8WuNR7VQ4wGRc8g/0vbsTqu0gNnuVCLxN4sI5AjNmn6mHBrdCXS9DfOvcN+6h9ldRfbwA==}
peerDependencies:
@@ -10053,6 +11317,16 @@ packages:
requiresBuild: true
optional: true
+ /undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+
+ /undici@5.28.4:
+ resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==}
+ engines: {node: '>=14.0'}
+ dependencies:
+ '@fastify/busboy': 2.1.1
+ dev: false
+
/unique-string@2.0.0:
resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==}
engines: {node: '>=8'}
@@ -10117,6 +11391,10 @@ packages:
resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==}
hasBin: true
+ /uuid@9.0.1:
+ resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
+ hasBin: true
+
/v8-to-istanbul@9.1.0:
resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==}
engines: {node: '>=10.12.0'}
@@ -10147,6 +11425,41 @@ packages:
resolution: {integrity: sha512-yLTU+/TMf4gaHnbfcV0DQJRQuhp6dh0Jsl1g26sXNV93wLswly6/azFwvZrtm/QBMD8r82/N3+5YpsiQ+jcdkA==}
dev: false
+ /vite@4.4.9:
+ resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ dependencies:
+ esbuild: 0.18.20
+ postcss: 8.4.38
+ rollup: 3.29.4
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
/walkdir@0.4.1:
resolution: {integrity: sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ==}
engines: {node: '>=6.0.0'}