From 6b771721b0519703272221e5be80c5d2c2903cd6 Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Wed, 10 Jun 2026 11:03:57 +0300 Subject: [PATCH 1/3] Add in-browser code execution playground (Pyodide + grpc-web) Replace the remote Cloud Run code executor with in-browser execution: Python snippets run on Pyodide (WebAssembly) in the reader's browser, talking to Weaviate over grpc-web through the new WASM-compatible python client (weaviate-python-client PR #2056). - src/theme/Tabs/pyodideRunner.js: lazy-loads Pyodide 0.29.4 from CDN, installs the client wheels from static/wheels/ via micropip, serializes runs, captures output, 60s timeout with queue recovery - Connect button (playgroundCredentials.js): stores WCD cluster URL + API key in localStorage, injected as WEAVIATE_URL / WEAVIATE_API_KEY env vars before each run - Snippet bar restyled to match main's flat header - Movies quickstart recipe (docs/weaviate/recipes/browser_playground.mdx): end-to-end connect, create collection (text2vec-weaviate via dev embedding endpoint), import, nearText - verified live in browser - Wheels built from PR #2056 branch incl. the fetch-based httpx REST transport; .gitignore anchored so static/wheels/ ships - _build_scripts/browser-playground-smoke.mjs: Pyodide-in-Node harness validating the install path without a browser Java/C#/Go cannot run in the browser; TypeScript planned via the grpc-web TS client (typescript-client PR #437). Co-Authored-By: Claude Fable 5 --- .gitignore | 3 +- BROWSER_PLAYGROUND_README.md | 54 ++++ _build_scripts/browser-playground-smoke.mjs | 66 +++++ .../code/python/quickstart.movies.browser.py | 97 +++++++ docs/weaviate/recipes/browser_playground.mdx | 45 +++ docs/weaviate/testing.mdx | 65 ----- src/theme/Tabs/index.js | 264 ++++++++++-------- src/theme/Tabs/playgroundCredentials.js | 64 +++++ src/theme/Tabs/pyodideRunner.js | 220 +++++++++++++++ src/theme/Tabs/styles.module.css | 139 +++++++-- ...aviate_client-4.21.4.dev5-py3-none-any.whl | Bin 0 -> 644982 bytes ...ython_grpc_web-0.0.1.dev0-py3-none-any.whl | Bin 0 -> 15249 bytes 12 files changed, 811 insertions(+), 206 deletions(-) create mode 100644 BROWSER_PLAYGROUND_README.md create mode 100644 _build_scripts/browser-playground-smoke.mjs create mode 100644 _includes/code/python/quickstart.movies.browser.py create mode 100644 docs/weaviate/recipes/browser_playground.mdx delete mode 100644 docs/weaviate/testing.mdx create mode 100644 src/theme/Tabs/playgroundCredentials.js create mode 100644 src/theme/Tabs/pyodideRunner.js create mode 100644 static/wheels/weaviate_client-4.21.4.dev5-py3-none-any.whl create mode 100644 static/wheels/weaviate_python_grpc_web-0.0.1.dev0-py3-none-any.whl diff --git a/.gitignore b/.gitignore index 5dd4b1f17..12e387a56 100644 --- a/.gitignore +++ b/.gitignore @@ -77,7 +77,8 @@ lib64/ parts/ sdist/ var/ -wheels/ +# Anchored to the repo root so static/wheels/ (browser playground wheels) stays tracked +/wheels/ share/python-wheels/ *.egg-info/ .installed.cfg diff --git a/BROWSER_PLAYGROUND_README.md b/BROWSER_PLAYGROUND_README.md new file mode 100644 index 000000000..21bbedbca --- /dev/null +++ b/BROWSER_PLAYGROUND_README.md @@ -0,0 +1,54 @@ +# Browser Playground + +This document explains how executable code snippets run in the reader's browser and how to maintain the setup. + +## What It Is + +Executable docs snippets run directly in the reader's browser. There is no execution server. Python code runs on Pyodide, which is CPython compiled to WebAssembly. Pyodide is loaded from the jsDelivr CDN, pinned to version 0.29.4. The pin matters because dependencies with native code (pydantic-core, cryptography) only exist as WebAssembly builds inside the Pyodide distribution, so the bundled pydantic version must satisfy the client wheel's pydantic floor. Check the new `pyodide-lock.json` before bumping either side. + +## How It Works + +`src/theme/Tabs/pyodideRunner.js` lazy-loads Pyodide the first time a reader clicks **Run**. It then installs the two wheels from `static/wheels/` with micropip and runs the snippet with top-level `await` support. The interpreter is a module-level singleton that survives client-side page navigation, so imports, variables, and the connected client carry over between runs, even on different pages. + +The two wheels must be installed in a single `micropip.install()` call. The grpc-web wheel declares an unpinned dependency on `weaviate-client`, and installing both together lets the local client wheel satisfy that dependency instead of pulling a release from PyPI. + +## Reader Credentials + +The **Connect** button next to **Run** stores the reader's Weaviate Cloud cluster URL and API key in `localStorage` (`src/theme/Tabs/playgroundCredentials.js`). Before each run the runner injects them into the interpreter as the `WEAVIATE_URL` (normalized to a bare host) and `WEAVIATE_API_KEY` environment variables, and removes them when cleared. Snippets read them with `os.environ.get(...)` and fall back to `localhost` when unset. The values never leave the reader's browser except in the requests the snippet itself makes to their Weaviate instance. + +## The Python Client + +The wheels are built from weaviate-python-client PR #2056 (branch `feat/grpc-web-wasm-transport`). Only the async client works under WebAssembly, the sync client raises an error. gRPC calls are routed over grpc-web using `fetch`. The companion package also reroutes the client's REST calls (httpx) through `fetch`, since httpx normally opens raw sockets that do not exist in the browser. + +Snippets must import `weaviate_grpc_web` before `weaviate`, then connect with `weaviate.use_async_with_custom(...)` using `grpc_path_prefix="/grpc-web"` (which enables grpc-web and lets REST and gRPC share a host and port) and `skip_init_checks=True`. + +### Rebuilding the wheels + +```bash +cd ~/dev/weaviate-python-client && git fetch origin feat/grpc-web-wasm-transport && git worktree add /tmp/wpc-grpcweb FETCH_HEAD +cd /tmp/wpc-grpcweb && SETUPTOOLS_SCM_PRETEND_VERSION=4.21.4.dev5 uv build --wheel --out-dir /tmp/wheels . +cd packages/grpc-web && uv build --wheel --out-dir /tmp/wheels . +cp /tmp/wheels/*.whl /static/wheels/ +``` + +The wheel filenames (`weaviate_client-4.21.4.dev5-py3-none-any.whl` and `weaviate_python_grpc_web-0.0.1.dev0-py3-none-any.whl`) are referenced in `src/theme/Tabs/pyodideRunner.js`. If a rebuild changes a filename, update both together. + +## Server Requirements + +Snippets need a Weaviate instance fronted by a grpc-web transcoder such as Envoy or connectrpc/vanguard-go. The snippet defaults assume REST and grpc-web share `localhost:8080` with the path prefix `/grpc-web` (Weaviate Cloud clusters use port 443). The transcoder must send CORS headers for the docs origin and expose the `grpc-status` and `grpc-message` response headers. The REST passthrough (`/v1/...`) needs the same CORS treatment — without `Access-Control-Allow-Origin` on REST responses and preflights, browsers block `is_ready()` and every other REST call even when grpc-web queries work. Chrome and Firefox allow `http://localhost` fetches from an https page, so a local instance works from the production docs site in those browsers. Safari blocks them, and Chrome's Private Network Access checks may require the transcoder to answer a preflight request. + +## Limitations + +- Async client only, the sync client does not work under WebAssembly. +- No `batch.stream()` or `batch.experimental()`, bidirectional streaming is not possible over grpc-web. +- Java, C#, and Go snippets cannot run in the browser. +- TypeScript support is planned via the grpc-web compatible TS client. +- A run times out after 60 seconds. After a timeout the page keeps working but the old run may still hold the interpreter, so reload the page for a clean session. + +## Validating Without a Browser + +Pyodide also runs under Node, so the install path can be tested locally with `_build_scripts/browser-playground-smoke.mjs` (usage instructions are in the script header). It exercises the package preloads, the micropip install of the local wheels, the import chain, and client construction. Run it after rebuilding the wheels or bumping the Pyodide version. The preload list in the script must mirror the one in `src/theme/Tabs/pyodideRunner.js`. + +## Validation Status + +Verified end to end under WebAssembly (via Node, June 2026) against a Weaviate Cloud dev cluster fronted by a grpc-web transcoder: dependency resolution, wheel install, the import chain, `is_ready()` over REST through the fetch transport, collection listing over REST, and a gRPC-web query that round-trips a clean server error. The only browser-specific leg Node cannot exercise is CORS, which the server must grant on both the grpc-web route and the REST passthrough. diff --git a/_build_scripts/browser-playground-smoke.mjs b/_build_scripts/browser-playground-smoke.mjs new file mode 100644 index 000000000..59107595e --- /dev/null +++ b/_build_scripts/browser-playground-smoke.mjs @@ -0,0 +1,66 @@ +// Smoke test for the browser playground (see BROWSER_PLAYGROUND_README.md). +// +// Pyodide also runs under Node, so this validates the exact install path the +// browser uses — package preloads, micropip resolution of the local wheels, +// and the weaviate_grpc_web + weaviate import chain — without a browser. +// It does NOT validate the network path (grpc-web transcoder, CORS). +// +// Usage: +// mkdir -p /tmp/pyodide-smoke && cd /tmp/pyodide-smoke +// npm install pyodide@ +// node /_build_scripts/browser-playground-smoke.mjs +// +// The pyodide npm package is intentionally not a repo dependency, it caches +// ~30 MB of runtime wheels into node_modules on first run. + +import { readFileSync, readdirSync } from "fs"; +import { dirname, join } from "path"; +import { fileURLToPath } from "url"; +import { createRequire } from "module"; + +// Resolve pyodide from the directory the script is RUN from (the scratch dir +// where it was npm-installed), not from this script's location in the repo +const { loadPyodide } = createRequire(join(process.cwd(), "noop.js"))("pyodide"); + +const WHEELS_DIR = join(dirname(fileURLToPath(import.meta.url)), "..", "static", "wheels"); + +// Must mirror the loadPackage list in src/theme/Tabs/pyodideRunner.js +const PRELOADS = ["micropip", "pydantic", "ssl", "cryptography", "anyio"]; + +const wheels = readdirSync(WHEELS_DIR).filter((f) => f.endsWith(".whl")); +if (wheels.length === 0) { + throw new Error(`No wheels found in ${WHEELS_DIR}`); +} +console.log("wheels:", wheels.join(", ")); + +const py = await loadPyodide(); +console.log("pyodide loaded:", py.runPython("import sys; sys.version")); + +await py.loadPackage(PRELOADS); +console.log("preloads OK, pydantic:", py.runPython("import pydantic; pydantic.VERSION")); + +// Node's fetch cannot load the http wheel URLs the browser uses, so write the +// wheels into the in-memory filesystem and install via emfs: +for (const w of wheels) { + py.FS.writeFile(`/tmp/${w}`, readFileSync(join(WHEELS_DIR, w))); +} +const micropip = py.pyimport("micropip"); +await micropip.install(wheels.map((w) => `emfs:/tmp/${w}`)); +console.log("micropip install OK"); + +const result = await py.runPythonAsync(` +import sys +assert sys.platform == "emscripten", sys.platform +import weaviate_grpc_web # must be imported before weaviate +import weaviate +from weaviate.classes.init import Auth + +client = weaviate.use_async_with_custom( + http_host="localhost", http_port=8080, http_secure=False, + grpc_host="localhost", grpc_port=8080, grpc_secure=False, + grpc_path_prefix="/grpc-web", skip_init_checks=True, +) +f"OK: {type(client).__name__}, weaviate {weaviate.__version__}" +`); +console.log("RESULT:", result); +process.exit(0); diff --git a/_includes/code/python/quickstart.movies.browser.py b/_includes/code/python/quickstart.movies.browser.py new file mode 100644 index 000000000..959c4f13f --- /dev/null +++ b/_includes/code/python/quickstart.movies.browser.py @@ -0,0 +1,97 @@ +# EndToEndExample +import asyncio +import os + +import weaviate_grpc_web # must be imported before weaviate, installs the grpc-web transport +import weaviate +from weaviate.classes.init import Auth +from weaviate.classes.config import Configure, Property, DataType +from weaviate.classes.query import MetadataQuery + +# Step 1: Connect +# Set your credentials via the Connect button next to Run, or edit these values inline +wcd_host = ( + os.environ.get("WEAVIATE_URL", "localhost") + .removeprefix("https://") + .removeprefix("http://") + .split("/")[0] + .split(":")[0] +) +wcd_api_key = os.environ.get("WEAVIATE_API_KEY", "") +is_local = wcd_host == "localhost" + +client = weaviate.use_async_with_custom( + http_host=wcd_host, + http_port=8080 if is_local else 443, + http_secure=not is_local, + grpc_host=wcd_host, + grpc_port=8080 if is_local else 443, + grpc_secure=not is_local, + grpc_path_prefix="/grpc-web", + auth_credentials=Auth.api_key(wcd_api_key) if wcd_api_key else None, + skip_init_checks=True, +) +await client.connect() + +# ready = await client.is_ready() +# print(f"Connected to Weaviate, ready: {ready}") + +# Step 2: Create a collection (deleted first, so the example is safe to re-run) +await client.collections.delete("Movies") + +movies = await client.collections.create( + name="Movies", + properties=[ + Property(name="title", data_type=DataType.TEXT), + Property(name="description", data_type=DataType.TEXT), + Property(name="year", data_type=DataType.INT), + ], + # highlight-start + vector_config=Configure.Vectors.text2vec_weaviate( # Weaviate Embeddings + base_url="https://dev-embedding.labs.weaviate.io", + ), + # highlight-end +) +print(f"Created collection: {movies.name}") + +# Step 3: Import data, vectorized server-side by Weaviate Embeddings +data = [ + {"title": "The Matrix", "description": "A hacker discovers reality is a simulation and joins a rebellion against the machines.", "year": 1999}, + {"title": "Inception", "description": "A thief who steals secrets through dream-sharing technology is given one final job, planting an idea.", "year": 2010}, + {"title": "Interstellar", "description": "Explorers travel through a wormhole in space to ensure humanity's survival.", "year": 2014}, + {"title": "The Godfather", "description": "The aging patriarch of a crime dynasty transfers control to his reluctant son.", "year": 1972}, + {"title": "Spirited Away", "description": "A young girl wanders into a world of spirits and must work in a bathhouse to free her parents.", "year": 2001}, + {"title": "Toy Story", "description": "A cowboy doll feels threatened when a new spaceman action figure becomes the favorite toy.", "year": 1995}, + {"title": "Jaws", "description": "A giant great white shark terrorizes a small beach community.", "year": 1975}, + {"title": "La La Land", "description": "A jazz pianist and an aspiring actress fall in love while chasing their dreams in Los Angeles.", "year": 2016}, + {"title": "Mad Max: Fury Road", "description": "In a post-apocalyptic wasteland, a drifter and a rebel warrior flee a tyrant in an armored war rig.", "year": 2015}, + {"title": "Finding Nemo", "description": "A timid clownfish crosses the ocean to rescue his son, who was captured by a diver.", "year": 2003}, +] + +result = await movies.data.insert_many(data) +if result.has_errors: + print(f"Import errors: {result.errors}") +else: + aggregate = await movies.aggregate.over_all(total_count=True) + print(f"Imported {aggregate.total_count} movies") + +# Step 4: Semantic search +# The vector index updates in the background after import, so retry briefly +response = None +for _ in range(15): + # highlight-start + response = await movies.query.near_text( + query="a science fiction adventure in space", + limit=3, + return_metadata=MetadataQuery(distance=True), + ) + # highlight-end + if response.objects: + break + await asyncio.sleep(1) + +for obj in response.objects: + print(f"{obj.properties['title']} ({obj.properties['year']}) — distance {obj.metadata.distance:.3f}") + +await client.close() # Free up resources +# END EndToEndExample diff --git a/docs/weaviate/recipes/browser_playground.mdx b/docs/weaviate/recipes/browser_playground.mdx new file mode 100644 index 000000000..aa80984e9 --- /dev/null +++ b/docs/weaviate/recipes/browser_playground.mdx @@ -0,0 +1,45 @@ +--- +layout: recipe +toc: True +title: "Movies Quickstart in the Browser Playground" +featured: False +integration: False +agent: False +tags: ["Weaviate Embeddings", "Weaviate Cloud", "Playground"] +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import FilteredTextBlock from "@site/src/components/Documentation/FilteredTextBlock"; +import PyMoviesCode from "!!raw-loader!/_includes/code/python/quickstart.movies.browser.py"; + +# Movies Quickstart in the Browser Playground + +This recipe runs a complete Weaviate workflow directly in your browser through WebAssembly (Pyodide), with no execution server involved. +The snippet connects to your instance, creates a `Movies` collection vectorized by [Weaviate Embeddings](https://docs.weaviate.io/cloud/embeddings) (`text2vec-weaviate`), imports a small movie dataset, and runs a semantic `nearText` search. + +Use the **Connect** button to store your Weaviate Cloud cluster URL and API key — they stay in your browser and are available to the snippet as the `WEAVIATE_URL` and `WEAVIATE_API_KEY` environment variables, or edit the connection values directly with the **Edit** button. +Your instance must be reachable from the browser through a grpc-web proxy that allows cross-origin requests from this site and exposes the `grpc-status` and `grpc-message` response headers. +The example deletes and recreates the `Movies` collection, so it is safe to run repeatedly. + + + + + + + +:::note Dev embedding endpoint +The vectorizer points at the development endpoint of Weaviate Embeddings (`https://dev-embedding.labs.weaviate.io`), which serves `dev` Weaviate Cloud clusters. +On a production Weaviate Cloud cluster, remove the `base_url` argument to use the default endpoint. +::: + +None of the movie descriptions contain the words in the search query, yet the closest matches come back first. +Edit the query and run it again to explore. diff --git a/docs/weaviate/testing.mdx b/docs/weaviate/testing.mdx deleted file mode 100644 index 335eb20da..000000000 --- a/docs/weaviate/testing.mdx +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Docs Playground - Testing -description: "A blank docs page for testing purposes" -image: og/docs/home.jpg ---- - -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; -import FilteredTextBlock from "@site/src/components/Documentation/FilteredTextBlock"; -import PyCode from "!!raw-loader!/_includes/code/python/quickstart.is_ready.py"; -import TSCode from "!!raw-loader!/_includes/code/typescript/quickstart.is_ready.ts"; -import GoCode from "!!raw-loader!/_includes/code/howto/go/docs/quickstart/1_is_ready/main.go"; -import JavaCode from "!!raw-loader!/_includes/code/howto/java/src/test/java/io/weaviate/docs/quickstart/IsReady.java"; - -## Check if Weaviate is Ready - -First, let's verify that your Weaviate instance is ready to accept requests. -Click the **Run** button to execute the code with your configured Weaviate instance. - - - - - - - - - - - - - - - diff --git a/src/theme/Tabs/index.js b/src/theme/Tabs/index.js index ba55ccc3a..9d2e2d4ba 100644 --- a/src/theme/Tabs/index.js +++ b/src/theme/Tabs/index.js @@ -1,5 +1,6 @@ // src/theme/Tabs/index.js -// This overrides the default Docusaurus Tabs component with remote code execution +// This overrides the default Docusaurus Tabs component with in-browser code +// execution: Python snippets run via Pyodide (WebAssembly) in the user's browser import React, { useState, @@ -15,56 +16,47 @@ import styles from "./styles.module.css"; import { DOC_SYSTEMS } from "../../components/Documentation/FilteredTextBlock"; import Tooltip from "/src/components/Tooltip"; import Link from "@docusaurus/Link"; +import { runPythonCode } from "./pyodideRunner"; +import { + CREDENTIALS_CHANGE_EVENT, + loadCredentials, + saveCredentials, + clearCredentials, +} from "./playgroundCredentials"; // Language configuration const LANGUAGE_CONFIG = { py: { label: "Python", icon: "/img/site/logo-py.svg", - runtime: "python3", - fileExtension: ".py", }, py_agents: { label: "Python (Agents)", icon: "/img/site/logo-py.svg", - runtime: "python3", - fileExtension: ".py", }, py_engram: { label: "Python", icon: "/img/site/logo-py.svg", - runtime: "python3", - fileExtension: ".py", }, py_engram_async: { label: "Python (Async)", icon: "/img/site/logo-py.svg", - runtime: "python3", - fileExtension: ".py", }, ts: { label: "JavaScript/TypeScript", icon: "/img/site/logo-ts.svg", - runtime: "typescript", - fileExtension: ".ts", }, ts_agents: { label: "JavaScript/TypeScript (Agents)", icon: "/img/site/logo-ts.svg", - runtime: "typescript", - fileExtension: ".ts", }, go: { label: "Go", icon: "/img/site/logo-go.svg", - runtime: "go", - fileExtension: ".go", }, java: { label: "Java", icon: "/img/site/logo-java.svg", - runtime: "java", - fileExtension: ".java", }, csharp: { label: "C#", @@ -73,35 +65,22 @@ const LANGUAGE_CONFIG = { curl: { label: "Curl", icon: "/img/site/logo-curl.svg", - runtime: "bash", - fileExtension: ".sh", }, bash: { label: "Bash", icon: null, - runtime: "bash", - fileExtension: ".sh", }, shell: { label: "Shell", icon: null, - runtime: "bash", - fileExtension: ".sh", }, }; -// Configuration for the remote execution service -const EXECUTION_CONFIG = { - // Replace with your actual GCP Cloud Run service URL - //API_ENDPOINT: "http://localhost:8088", //local dev - API_ENDPOINT: "https://code-executor-orchestrator-something.a.run.app", - //API_KEY: "local-dev-api-key-123", - API_KEY: "api-key", - USE_GOOGLE_AUTH: false, - MAX_EXECUTION_TIME: 30000, // 30 seconds - SUPPORTED_LANGUAGES: ["py", "ts", "go", "java"], - DEVELOPMENT_MODE: true, - +// Configuration for in-browser code execution. +// "ts" gets added once the TypeScript client gains browser grpc-web support. +// Java, C# and Go cannot run in the browser. +const BROWSER_EXECUTION_CONFIG = { + SUPPORTED_LANGUAGES: ["py"], }; // Predefined docs URL overrides by product name @@ -240,30 +219,12 @@ const extractCodeFromChild = (child) => { return null; }; -// Get Google Auth Token (for authenticated Cloud Run) -const getGoogleAuthToken = async () => { - // This requires the user to be logged in with Google - // You can use Firebase Auth or Google Identity Services - if (typeof window !== "undefined" && window.gapi && window.gapi.auth2) { - try { - const auth2 = window.gapi.auth2.getAuthInstance(); - const user = auth2.currentUser.get(); - const authResponse = user.getAuthResponse(); - return authResponse.id_token; - } catch (err) { - console.error("Failed to get Google auth token:", err); - return null; - } - } - return null; -}; - -// Remote code execution component +// In-browser code execution component (Python via Pyodide) const CodeExecutor = ({ code, language, onExecute, isExecuting }) => { const [output, setOutput] = useState(null); const [error, setError] = useState(null); const [isRunning, setIsRunning] = useState(false); - const [authError, setAuthError] = useState(false); + const [statusText, setStatusText] = useState("Running code…"); const executeCode = async () => { if (!code) { @@ -274,68 +235,13 @@ const CodeExecutor = ({ code, language, onExecute, isExecuting }) => { setIsRunning(true); setOutput(null); setError(null); - setAuthError(false); - - const langConfig = LANGUAGE_CONFIG[language]; - if (!langConfig) { - setError("Language not supported for execution"); - setIsRunning(false); - return; - } + setStatusText("Running code…"); try { - // Prepare headers - const headers = { - "Content-Type": "application/json", - }; - - // Add authentication based on configuration - if (EXECUTION_CONFIG.USE_GOOGLE_AUTH) { - const token = await getGoogleAuthToken(); - if (!token) { - setAuthError(true); - setError( - "Authentication required. Please sign in with Google to run code." - ); - setIsRunning(false); - return; - } - headers["Authorization"] = `Bearer ${token}`; - } else if (EXECUTION_CONFIG.API_KEY) { - console.log("Using API Key for authentication"); - headers["X-API-Key"] = EXECUTION_CONFIG.API_KEY; - } - - const response = await fetch(`${EXECUTION_CONFIG.API_ENDPOINT}/execute`, { - method: "POST", - headers, - body: JSON.stringify({ - code: code, - language: langConfig.runtime, - fileExtension: langConfig.fileExtension, - timeout: EXECUTION_CONFIG.MAX_EXECUTION_TIME / 1000, - }), - }); - - if (response.status === 401 || response.status === 403) { - setAuthError(true); - setError("Authentication failed. Please check your credentials."); - setIsRunning(false); - return; - } - - const result = await response.json(); - - if (response.ok) { - setOutput(result.output); - if (result.error) { - setError(result.error); - } - } else { - setError(result.error || "Execution failed"); - } - } catch (err) { - setError(`Failed to connect to execution service: ${err.message}`); + // Never rejects: resolves to { output, error } + const result = await runPythonCode(code, { onStatus: setStatusText }); + setOutput(result.output); + setError(result.error); } finally { setIsRunning(false); if (onExecute) { @@ -359,7 +265,7 @@ const CodeExecutor = ({ code, language, onExecute, isExecuting }) => { {isRunning && (
- Executing code... + {statusText}
)} @@ -406,6 +312,118 @@ const CodeExecutor = ({ code, language, onExecute, isExecuting }) => { ); }; +// Button + panel for storing the reader's Weaviate Cloud URL and API key. +// They are kept in localStorage and injected as WEAVIATE_URL / +// WEAVIATE_API_KEY environment variables before each in-browser run. +const CredentialsButton = () => { + const [isOpen, setIsOpen] = useState(false); + const [url, setUrl] = useState(""); + const [apiKey, setApiKey] = useState(""); + const [isSaved, setIsSaved] = useState(false); + const wrapperRef = useRef(null); + + // Sync state from storage, including when another instance on the page + // saves or clears credentials. + useEffect(() => { + const sync = () => { + const creds = loadCredentials(); + setUrl(creds.url); + setApiKey(creds.apiKey); + setIsSaved(Boolean(creds.url || creds.apiKey)); + }; + sync(); + window.addEventListener(CREDENTIALS_CHANGE_EVENT, sync); + return () => window.removeEventListener(CREDENTIALS_CHANGE_EVENT, sync); + }, []); + + // Close the panel on outside clicks + useEffect(() => { + if (!isOpen) return undefined; + const handleClickOutside = (event) => { + if (wrapperRef.current && !wrapperRef.current.contains(event.target)) { + setIsOpen(false); + } + }; + document.addEventListener("mousedown", handleClickOutside); + return () => document.removeEventListener("mousedown", handleClickOutside); + }, [isOpen]); + + const handleSave = () => { + saveCredentials({ url, apiKey }); + setIsOpen(false); + }; + + const handleClear = () => { + clearCredentials(); + }; + + return ( +
+ + + {isOpen && ( +
+ + +
+ Stored only in your browser. Available to snippets as{" "} + WEAVIATE_URL and WEAVIATE_API_KEY. +
+
+ + +
+
+ )} +
+ ); +}; + // Code dropdown tabs component with execution const CodeDropdownTabs = ({ children, @@ -489,9 +507,13 @@ const CodeDropdownTabs = ({ : null; const codeToUse = editedCode ?? originalCode; - // Get the actual content block (e.g., FilteredTextBlock) inside the selected TabItem - const contentBlock = - selectedChild && React.Children.only(selectedChild.props.children); + // Get the actual content block (e.g., FilteredTextBlock) inside the selected + // TabItem. A TabItem may contain several children (prose around the code + // block) — only a lone content block can carry executable/editable props. + const tabItemChildren = selectedChild + ? Children.toArray(selectedChild.props.children).filter(isValidElement) + : []; + const contentBlock = tabItemChildren.length === 1 ? tabItemChildren[0] : null; // Check the props of the content block to see if it's executable or editable const isExecutable = contentBlock?.props?.executable === true; @@ -619,7 +641,7 @@ const CodeDropdownTabs = ({ const canExecute = isExecutable && - EXECUTION_CONFIG.SUPPORTED_LANGUAGES.includes(selectedValue) && + BROWSER_EXECUTION_CONFIG.SUPPORTED_LANGUAGES.includes(selectedValue) && codeToUse; const canEdit = isEditable && originalCode !== null; @@ -689,6 +711,8 @@ const CodeDropdownTabs = ({ {isEditing ? "Save" : "Edit"} )} + + {canExecute && } {(overrideDocsUrl || docSystem?.baseUrl) && ( diff --git a/src/theme/Tabs/playgroundCredentials.js b/src/theme/Tabs/playgroundCredentials.js new file mode 100644 index 000000000..c0181b9e2 --- /dev/null +++ b/src/theme/Tabs/playgroundCredentials.js @@ -0,0 +1,64 @@ +// src/theme/Tabs/playgroundCredentials.js +// Stores the reader's Weaviate Cloud cluster URL and API key in localStorage +// so the in-browser playground (pyodideRunner.js) can inject them as +// WEAVIATE_URL / WEAVIATE_API_KEY environment variables before each run. +// +// SSR-safe: window/localStorage are only touched inside functions. + +const URL_STORAGE_KEY = "weaviatePlayground.wcdUrl"; +const API_KEY_STORAGE_KEY = "weaviatePlayground.wcdApiKey"; + +// Other CodeDropdownTabs instances on the page listen for this to keep their +// "Connect" button state in sync (same pattern as codeLanguageChange). +export const CREDENTIALS_CHANGE_EVENT = "wcdCredentialsChange"; + +// Reduce whatever the user pasted (https://abc.weaviate.cloud/, host:port, +// URL with path or query, …) to a bare hostname, which is what +// use_async_with_custom() expects. +export function normalizeClusterUrl(raw) { + if (!raw) return ""; + const stripped = raw.trim().replace(/^https?:\/\//, ""); + try { + return new URL(`https://${stripped}`).hostname; + } catch { + return stripped.replace(/[/?#].*$/, "").replace(/:\d+$/, ""); + } +} + +export function loadCredentials() { + if (typeof window === "undefined") { + return { url: "", apiKey: "" }; + } + return { + url: localStorage.getItem(URL_STORAGE_KEY) || "", + apiKey: localStorage.getItem(API_KEY_STORAGE_KEY) || "", + }; +} + +export function saveCredentials({ url, apiKey }) { + if (typeof window === "undefined") return; + const normalizedUrl = normalizeClusterUrl(url); + if (normalizedUrl) { + localStorage.setItem(URL_STORAGE_KEY, normalizedUrl); + } else { + localStorage.removeItem(URL_STORAGE_KEY); + } + if (apiKey) { + localStorage.setItem(API_KEY_STORAGE_KEY, apiKey.trim()); + } else { + localStorage.removeItem(API_KEY_STORAGE_KEY); + } + window.dispatchEvent(new CustomEvent(CREDENTIALS_CHANGE_EVENT)); +} + +export function clearCredentials() { + if (typeof window === "undefined") return; + localStorage.removeItem(URL_STORAGE_KEY); + localStorage.removeItem(API_KEY_STORAGE_KEY); + window.dispatchEvent(new CustomEvent(CREDENTIALS_CHANGE_EVENT)); +} + +export function hasCredentials() { + const { url, apiKey } = loadCredentials(); + return Boolean(url || apiKey); +} diff --git a/src/theme/Tabs/pyodideRunner.js b/src/theme/Tabs/pyodideRunner.js new file mode 100644 index 000000000..b5497db23 --- /dev/null +++ b/src/theme/Tabs/pyodideRunner.js @@ -0,0 +1,220 @@ +// src/theme/Tabs/pyodideRunner.js +// In-browser Python execution via Pyodide (WebAssembly). +// +// Loads the Pyodide runtime from a CDN, installs the Weaviate Python client +// wheels (built from the grpc-web/WASM transport branch) via micropip, and +// runs user code snippets. The interpreter is a module-level singleton that +// persists across runs, like a notebook session. +// +// This module is SSR-safe: it never touches window/document at the top level +// because Docusaurus server-renders pages. + +import { loadCredentials } from "./playgroundCredentials"; + +// Must be >= 0.29.2: the client needs pydantic >= 2.12 and binary packages +// (pydantic-core, cryptography) can only come from the Pyodide distribution — +// PyPI has no WASM wheels for this Python/ABI generation. 0.29.2+ bundles +// pydantic 2.12.5. When bumping, check the new lockfile still satisfies the +// client wheel's pydantic floor. +const PYODIDE_VERSION = "0.29.4"; +const PYODIDE_BASE_URL = `https://cdn.jsdelivr.net/pyodide/v${PYODIDE_VERSION}/full/`; + +// Snippets are editable, so a run can hang forever (e.g. awaiting an +// unresponsive host). After this deadline the run is orphaned and the queue +// reset so other Run buttons on the page keep working. +const RUN_TIMEOUT_MS = 60000; + +// Wheels served from /static/wheels/, built from weaviate-python-client +// PR #2056 (feat/grpc-web-wasm-transport). +const WEAVIATE_CLIENT_WHEEL_PATH = + "/wheels/weaviate_client-4.21.4.dev5-py3-none-any.whl"; +const GRPC_WEB_SHIM_WHEEL_PATH = + "/wheels/weaviate_python_grpc_web-0.0.1.dev0-py3-none-any.whl"; + +// Singleton promise for the initialized Pyodide instance. +let pyodidePromise = null; + +// Internal chain that serializes runs so two Run clicks never interleave. +let runChain = Promise.resolve(); + +// Monotonic run id. A timed-out run is orphaned but keeps executing; the id +// lets it detect it no longer owns the interpreter's stdout/stderr, so its +// late output is discarded instead of landing in the next run's panel. +let currentRunId = 0; + +const noop = () => {}; + +// Injects the Pyodide loader script, skipping injection if it is already +// available on window (e.g. from a previous page in the SPA session). +function loadPyodideScript() { + if (window.loadPyodide) { + return Promise.resolve(); + } + return new Promise((resolve, reject) => { + const script = document.createElement("script"); + script.src = `${PYODIDE_BASE_URL}pyodide.js`; + script.onload = () => resolve(); + script.onerror = () => + reject(new Error(`Failed to load Pyodide from ${script.src}`)); + document.head.appendChild(script); + }); +} + +// Returns the singleton Pyodide instance, initializing it on first call. +// onStatus receives short human-readable progress strings. +export function getPyodide(onStatus = noop) { + if (!pyodidePromise) { + pyodidePromise = (async () => { + try { + onStatus("Loading Python runtime… (first run can take a while)"); + await loadPyodideScript(); + const pyodide = await window.loadPyodide({ + indexURL: PYODIDE_BASE_URL, + }); + + onStatus("Installing the Weaviate client…"); + // Pre-load the deps with native code from the Pyodide distribution. + // Left to micropip's resolver, pydantic would be fetched from PyPI, + // where pydantic-core has no wheel for this Pyodide ABI. ssl is an + // unvendored stdlib module that httpx imports. anyio is imported by + // authlib's httpx integration but httpx 0.28 stopped declaring it, + // so the resolver never pulls it in. + await pyodide.loadPackage([ + "micropip", + "pydantic", + "ssl", + "cryptography", + "anyio", + ]); + const micropip = pyodide.pyimport("micropip"); + // Both wheels MUST be installed in a single call: the grpc-web shim + // declares an unpinned dependency on weaviate-client, and installing + // them together lets the local client wheel satisfy it instead of + // micropip fetching a release from PyPI. + await micropip.install([ + new URL(WEAVIATE_CLIENT_WHEEL_PATH, window.location.origin).href, + new URL(GRPC_WEB_SHIM_WHEEL_PATH, window.location.origin).href, + ]); + + return pyodide; + } catch (err) { + // Reset the singleton so a later Run click can retry initialization. + pyodidePromise = null; + throw err; + } + })(); + } + return pyodidePromise; +} + +// Injects the stored Weaviate Cloud credentials into the interpreter's +// environment so snippets can read them via os.environ. Values are passed +// through Python globals (not string interpolation) so snippet-breaking +// characters in a key cannot inject code. +function applyCredentials(pyodide) { + const { url, apiKey } = loadCredentials(); + pyodide.globals.set("__wcd_url", url || ""); + pyodide.globals.set("__wcd_api_key", apiKey || ""); + pyodide.runPython(` +import os +try: + if __wcd_url: + os.environ["WEAVIATE_URL"] = __wcd_url + else: + os.environ.pop("WEAVIATE_URL", None) + if __wcd_api_key: + os.environ["WEAVIATE_API_KEY"] = __wcd_api_key + else: + os.environ.pop("WEAVIATE_API_KEY", None) +finally: + del __wcd_url, __wcd_api_key +`); +} + +// Executes a single snippet against the shared interpreter, capturing +// stdout and stderr into one ordered buffer. +async function executeSnippet(code, onStatus) { + let pyodide; + try { + pyodide = await getPyodide(onStatus); + applyCredentials(pyodide); + } catch (err) { + return { + output: "", + error: err && err.message ? err.message : String(err), + }; + } + + onStatus("Running code…"); + + const myRunId = ++currentRunId; + const outputLines = []; + pyodide.setStdout({ + batched: (line) => { + if (myRunId === currentRunId) outputLines.push(line); + }, + }); + pyodide.setStderr({ + batched: (line) => { + if (myRunId === currentRunId) outputLines.push(line); + }, + }); + + try { + // runPythonAsync compiles with top-level-await allowed, so snippets may + // use top-level `await` (required for the async Weaviate client). + const result = await pyodide.runPythonAsync(code); + // A snippet ending in a bare expression returns a PyProxy that would + // otherwise leak for the lifetime of the page. + if (result && typeof result.destroy === "function") { + result.destroy(); + } + return { output: outputLines.join("\n"), error: null }; + } catch (err) { + // For PythonError, err.message contains the Python traceback. + return { + output: outputLines.join("\n"), + error: err && err.message ? err.message : String(err), + }; + } finally { + // Restore the default streams — unless a newer run owns them by now + // (this run timed out and was orphaned). + if (myRunId === currentRunId) { + pyodide.setStdout(); + pyodide.setStderr(); + } + } +} + +// Runs Python code in the browser. Runs are serialized through an internal +// promise chain. Resolves to { output: string, error: string|null } and +// never rejects. +export function runPythonCode(code, { onStatus = noop } = {}) { + const run = runChain + .then(() => executeSnippet(code, onStatus)) + .catch((err) => ({ + output: "", + error: err && err.message ? err.message : String(err), + })); + runChain = run; + + let timer; + const timeout = new Promise((resolve) => { + timer = setTimeout(() => { + // Only reset the queue if this run is still the tail of the chain — + // a later run may already have replaced it. The orphaned run keeps the + // interpreter; output it produces after the timeout is discarded. + if (runChain === run) { + runChain = Promise.resolve(); + } + resolve({ + output: "", + error: `Execution timed out after ${ + RUN_TIMEOUT_MS / 1000 + } seconds. Reload the page to reset the Python session.`, + }); + }, RUN_TIMEOUT_MS); + }); + + return Promise.race([run.finally(() => clearTimeout(timer)), timeout]); +} diff --git a/src/theme/Tabs/styles.module.css b/src/theme/Tabs/styles.module.css index 80de75ff5..99b6fa6cb 100644 --- a/src/theme/Tabs/styles.module.css +++ b/src/theme/Tabs/styles.module.css @@ -9,19 +9,11 @@ .codeDropdownHeader { display: flex; align-items: center; - justify-content: space-between; - gap: 1rem; - margin-bottom: 1.25rem; - border-bottom: 2px solid var(--ifm-color-emphasis-300); - padding-bottom: 1rem; - background-color: var(--ifm-code-background); - padding: 1rem; - border-radius: 8px 8px 0 0; - background: linear-gradient( - to right, - var(--ifm-code-background), - transparent - ); + justify-content: space-between; /* Space between left and right sections */ + gap: 0.5rem; + margin-bottom: 0; + border-bottom: 1px solid var(--ifm-color-emphasis-300); + padding: 0.5rem 0; position: relative; } @@ -95,6 +87,115 @@ html[data-theme="dark"] .editButton { color: var(--ifm-color-emphasis-700); } +/* Weaviate Cloud credentials button + panel */ +.credentialsWrapper { + position: relative; + display: inline-flex; +} + +.credentialsButton { + gap: 0.4rem; +} + +.connectedDot { + width: 8px; + height: 8px; + border-radius: 50%; + background-color: var(--ifm-color-success); + flex-shrink: 0; +} + +.credentialsPanel { + position: absolute; + top: calc(100% + 6px); + left: 0; + z-index: 30; + display: flex; + flex-direction: column; + gap: 0.6rem; + width: min(320px, 90vw); + padding: 0.85rem; + background-color: var(--ifm-background-surface-color); + border: 1px solid var(--ifm-color-emphasis-300); + border-radius: 8px; + box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15); +} + +.credentialsField { + display: flex; + flex-direction: column; + gap: 0.25rem; + + span { + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; + color: var(--ifm-color-emphasis-600); + } + + input { + padding: 0.4rem 0.6rem; + font-size: 13px; + font-family: inherit; + color: var(--ifm-font-color-base); + background-color: var(--ifm-background-color); + border: 1px solid var(--ifm-color-emphasis-400); + border-radius: 4px; + + &:focus { + outline: none; + border-color: var(--ifm-color-primary); + } + } +} + +.credentialsHint { + font-size: 11px; + line-height: 1.4; + color: var(--ifm-color-emphasis-600); + + code { + font-size: 10px; + } +} + +.credentialsActions { + display: flex; + gap: 0.5rem; +} + +.credentialsSave, +.credentialsClear { + padding: 0.35rem 0.9rem; + font-size: 13px; + font-weight: 600; + border-radius: 4px; + cursor: pointer; + transition: all 0.2s ease; +} + +.credentialsSave { + color: var(--ifm-color-primary-contrast-background, #fff); + background-color: var(--ifm-color-primary); + border: 1px solid var(--ifm-color-primary); + + &:hover { + background-color: var(--ifm-color-primary-dark); + } +} + +.credentialsClear { + color: var(--ifm-color-emphasis-700); + background: transparent; + border: 1px solid var(--ifm-color-emphasis-400); + + &:hover { + border-color: var(--ifm-color-danger); + color: var(--ifm-color-danger); + } +} + /* Play Button Spinner Styles */ .playButtonSpinner { animation: rotate 1s linear infinite; @@ -103,7 +204,7 @@ html[data-theme="dark"] .editButton { } .spinnerPath { - stroke: white; + stroke: currentColor; stroke-linecap: round; animation: dash 1.5s ease-in-out infinite; } @@ -479,7 +580,7 @@ html[data-theme="dark"] { border-color: var(--ifm-color-primary); } - outputContainer { + .outputContainer { /* Subtle background for the content */ background-color: rgba(16, 185, 129, 0.1); } @@ -532,6 +633,7 @@ html[data-theme="dark"] { .leftSection { width: 100%; + flex-wrap: wrap; justify-content: space-between; } @@ -560,10 +662,6 @@ html[data-theme="dark"] { min-width: unset; width: 100%; } - - .playButton { - margin-left: auto; - } } /* Smooth transitions for content changes */ @@ -604,6 +702,7 @@ html[data-theme="dark"] { &:focus { outline: none; border-color: var(--ifm-color-primary); - box-shadow: 0 0 0 3px rgba(var(--ifm-color-primary-rgb), 0.25); + box-shadow: 0 0 0 3px + color-mix(in srgb, var(--ifm-color-primary) 25%, transparent); } } diff --git a/static/wheels/weaviate_client-4.21.4.dev5-py3-none-any.whl b/static/wheels/weaviate_client-4.21.4.dev5-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..10e059c9fade35a97dfcffb90cb0a0b3dbbc29ca GIT binary patch literal 644982 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%0A2ax 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∇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%0A+RLk_#N5zh! zCX0NTXMQO>j`L%?Gx6GB$_rpXRe5l!d9H;H0yX|<`!0`zWzEhN-|~Z{L3&4jsx13` z_g?6!!>;w)Z1!%R0>3fS*5=^Dv4@fbhuu^aL;$&|ps_&R}S&_Fchb1w)${XTjUJEInTw#iz zZegguvy#04VPU*W1%8X;Kn)r_%jV9O6Kegg z%0up3Vv8%&W9T%R=SujV5S3=7O67>T){{<9GyaEyWFp1n$4#KQ${yQopa0d=cxiZT z&BRrloM4P6hp4K;>jD8SmJR-TL}MV>^R}2QtQoQv8S%9zbAifQ9a6gQ4guilEf)g` ziL!}NzVa8R2|7q9TMFpZ<`1emq*m7_PSCBt%Chqwm&zo*#*JUsg4}wz!YwSs&4sR0 z^ci7&;z+YjAT)MrFHRmrBmPI88Fm7XYCqTQUr}Eb&wzHzMXy*P!I?ZOv@wuQ+>Z!* z(OOeUk8@cC;Wo!}fzV$6iauh#Qz{(Xfp45QnLEX7TEZ*fTxP-Z>RX#0&+g$XQX{Qw z7PbE^p~nL6*5dvoeO}Qvj*5!8I4`);+Khd4lb@$V1KvdiDQZ5S!zl4(++i~z5V;OH zeGmAUXA3C+eQKxII7kTrXH(WmqG+u}o(I8vNIzDfaN|kv-S$0O@!cr~G`Z!q#-vZa z%-)CUl-aagVGJ8yZS%#9Q-w=QVClu!K6V+EW;>ib%k~S-2y#z0EY)v{ERuO9G6bdl zflN2m9%Z#o2*{*i%LGO?1NDD)%uKW1=Y0+Pz=-LaO9l>V({U&67L?d?8uxgpqhsO% z^A0L(eO|u|HZgIAJn0 z7zR?C=%l6V72OV)i4uCt*;kcht6)V<0C+sjyApmLhoT+Wn+y=rmpb zOO~dAO!sk7n;GBY3UJi9w8zP=6h?5P++v{iQP4Ich;t%p7XDy;J}lRrp+u(9Y=V=` z3hRo4U*fdLiMeC%a%e~KZslVgBw_$}L-?xlDfk=rt6cQpQmUyj+i|xAfM+GWSUByS z650cs6QabGQz^dRNRi-nt($Zc)wf-7ndk_D3gqmRC?18=;p{7N4rG|7g3pz+Al_DK zQL$_*4IDNpyrbzuFPJ6Yb%otY3Zw-LtxvOBGxFh^J*FZMbRdj2Z31HD?sjZ8{dX+Z zW{7^VC>+!3eB2^6vJl}M{jp}1!7{1uFNpF%NgncVhKDQc?lvftOlq;k6V=sONhP2cV($x2If12D_xk19mbvjnOr0S z6F0vcRTdm!>zs1f$VF@=vXLKuriGL0<3*0+Y(X~?h3FO+>)8u)i;0jZ~v<_iOHO|G1Dzx`Q zgetK_3%D15f_!>;B;U;hyMZCTHK2$ob==r40+L{mG@8+qzdKP4jsWy8;{C#X_ZPQ@ z!VD^HU#k*oLcuF@${vO!p~XtXXmW*#Z&BRfLco}HENj#bJhc=6Q@X@Iu_J~>o&~~z zx5@Q&VEcW*+azMl`sR93?&g%h9FN0tpoo7Yf$JS8*YtfIs>UU;=pS_F5vwsGq%Syb z!Dud!QJfa57F##d>1~;($WLP;Co%*+S>pbJepjD+And<-t6O%?G70nieX3$WsRgVY z8Y6_>m~hTEem9FT!5f5{1(dke#D2{P`rgV7hPkL zWEL%FG0349+K)7$dom~vpE~+ip5x5fcW!^!+7nkd-QHjDzp{zYj)wPY0vTpk+mAy>8w2p(yJ9>?smuG$rq0JYPG zfa@JSgN71cAAXq|fy992ij|M~__-H!pSz1D0jt{T5;dCliEuZS0G%=?cInk{I9!9Z zoxHy`i@hX!!z@8gs2kW%b!^i{skBTEkn01iuf8v$;^!8GOnwE=eA0YLsbPEV)E4sP zbGcl{KB(qM^iU$WArA5=6h^m^JY2!-BAM|V8qp@Nn!biQVl1b35d#;qRpQsKDo_8G zGLWOgb?49J0{=uw(X>}SUZ;wM^($CB(CS-X%0wQsTMnj@iB;;;2&lWP7G|Vv!?0Iv z7QYn;5Ye~IQ4;ddc4UeRrzd9*6)RJ{#ft2|)IK{AAKF9!$NQAr5B>E|jurATl06V3 z(F|}2J^5{YTH@YWZF0~{HE?SJAHz)Jo~!Mq+(br{t*0;l#J@FlvB8+XudRs&Y?pW4 zS5`<@fVCwgOR=TrBW6bzU;%;(OFc7~67Ru^^o>2)%H*qO*bKt$Y)>k|bL$3tXgEP! zcEoxuNp_^|XF~zThFF(zt-M6WTwjJJqekN5+ z&F-ticbso0v|sTk#ZC3JmN=L+KMh2=wKg~J)7^>1&(}l&2z!5KhT1=AUz8xt&?{MEl_o}iJ0U(Bvo8p0)$ zIO~$G=d&mLKR7!JsH~Rt;ZqVKjdV(PH;72LbazR2cSxroT_OU~-Q5im(x8MO9ZJWy zz4v-PUj@%O|Gn0%*LBv}zjW+S@Y2cemauQ-A+B@l z+GcXUUt%i5#B12y56oN*o4FWO9pN`}Ogu3b!dpEUWcsw_8@uXz#uTc8E z&y&@GKmQImibsFMkVz$g!u5ygm})ZF}U`Rj@Ys{7h+k&*ljZ(3f3UJH6pYV}G6i;An`s~9wPiA5j; zE>Ni@V{bRn+#eIVPqHIL%hYFChY{H{>dS8`f#rToeh_nX-_@CarP33|=bARM z(-CZ`%DsA7HHl|WcX&-M(1lF<{qql;su8#2&0u;CBJtMdi|!MA#hwC#o9a6@fU*fSmqvXbHt5~(jON;LI@QIN5{=AQ#6M?~`F zx-a8v>j+a!mt}P=P3eBp?U5U5dRGV0`F5xkYqLvgX$L3TGnE7Soj3DZP-_DZG;A<@ z?hwkkyynr0C9$3;Z~4q88~jQOHdO65&WSc-9D-h5Nc_xKn{71joTAJp?$M6JC#qrj z6GIeiI8^9+WS4J5C-x`#lVf|LGrcQ`_TP&7@WA6|y`lsm&8mdy(Vp|_+MjD* zLsglzzlA7mc$xTiWGT*Uu&RTpQj(&EWI)Ya!%gsYNz1tCdPg6;2E?^nSrpH<%?XK$ zI)vpjW5ti{SuUB>2Co*8YlV4SQZIUKrY>9~e9Pl)AJALp9f|5gWx+o?l*x0rA z6pcT~n(=JYqK}X=qw2$Qe`RPHRP_m$UD9%vHU}G+uXF59fWCz&VkRzj`db^Xx%gr4 znk^ViEnlqR%O+2JYFzv{NS{5JSkdmbvfV3Q0@)pjh5f{b1D1g|NF}H5mAJfAcON-e zS*r8nI_#iKzK6#N7I_B7+$gzmlxPuWYX{Ad(u{gA0-MpF_6F@J_vqQ9Pp122sM=sx z6B$P6RgND5A{tz%PA1D#&O|4_zUuWDKBlN*WWR7pv3R^$dO)6w^OZXF!#E#rh&Id- zPXq5l`Lp>$U!t3uzV|l*?9X%9UB;4kHD4SK%xRfR)+Y%!bHzUPNrz!-bWoGi-3hls zTV*I{UlQ|1%$tWq(_+Zn+K?8vBd(y0eVsaiPIFm+mr1_xHEd&1-oq=7#7 z7RoyHG(j&>I#(tHaVQ$g2f43g_0F+$w5%<0DHEfs(xN_4*DXzZK{M^tTj3*aCJ|{d zbk(T|FAc%B$bnN5r5W4kciMwVsn9skTFmIKan?$3*@+Zc(T{8jiz1!DcE!$W)?9W! zm~%oq&h+&^->02==+caRsx*1b^+oapv3w8B5>4HXaV3e##3KR8 z+$*1q3+^^^OB_)Q%P!Jn!3(#Ib5^|EK#E+|H;l$b?Uu2*o< zaZBgvc=?vR77~v^^+spxagm+}Jz7V4KRNkZ7;)7SRefr28FU_W^;#IjfN#4zxF#joS+B~F!GMvei89l54 zG+PLT)j$$R7y99T%~X>C$Zf%Sewi6yeeGH-GFT0b7hW7Jqq%PInY$rmpOkJ5%e`p| zlM->Ycz-iQ{(Pu#qeUoSFRXuDj1WS^!+}Ml9x=CJ6(bgZtJo&IY^fsc+b3nyrgo=L8{J!J?pTH9>Ph%r434oL|WldYjy^ z+V_LMp5&6D5<@;eZ{NGb&cX1RMtNN&X*Omn?;?~2@6yt!_p!z0zxyop2#v{Ho1I5;<18F&bN_cF&z8l|!kGRY|Z7P^~KM z%dxMN;4ca5bV?p9dQfHxtjt3?!pg9D*>W)OJTn;kBs`jvPj4D6)M1F)EO1i^buDw% zHlx_ECEdsxFQqDb`cP$I=^rqv<15PFDPhmDqa+3~e-gH(z-L{xnu6pg8 zK&sWHXpp!+L2t6-Aqd6TsE~6l;!{Gssq^vLrC6MAyY(9c5vxpgLc1B3Gb6s3j}4?+ zu2Zj2C(_PV-iHKfsq4Lt%lB1PW4x6o+b*frFi*-t$`N0{GK!8N%sjC(F41(wW zpJm~NW;2}4IqdeCR8$ZjaHDOJ9JcqxnXUAU_Pj!0N)kO4T8kPw@m{%LRq+`sL>WWn z`{=+*9%E6y{Rk()vvkaTghU1Uv&uy!46c^9U|Gv*Kf{dIL+g#*2gNl)@17ZP8t;_R zM8X%#snX*pJ<{6y@{kQ{aZ%Gu(mAh1iTg3?<0OnvzLwRR(^G6THR_2nJyl;+7r7ZB zjWrBOgAl1))k-(#al?_lX?nd3FB!3=MDxn*!|K^xx^`8*IwXAA7K?sJA6bJIJ&u^V zav_TO?Q`6Q&dXIy%@!Fc{cE#TmvBpXOu`UE4LTl{FrK_);Tm|wX8B!1BCc{C>+VbQ z&`bYaBVHW^KP*4v-H)6*&=Z1gu595s?{;<3bf>Y9B1B(L9j;E5%;BfM^gNU}!qH%b zVASfCZsL|DDI^|x6gSM*>AN*!@;-+t4LzCFE@jSJjVS}zKYpYmV1#4KRFLhwGtIWl zmyAOq{lTTZ%Cu49Blfa?CvCTA)3p&~r$V&}Hx!lDjr{g8<{X8|6n>NaCLv;uoxjBN zQrkQgfofK5SVB*m)ON=9=>hXAWPYu)m0*qa)Be>=grldMIbFUDQdQnen^(kAa$ZQU zH7O@qt?`uvuS=~<_&z^@ObBs0=<&GmhhkoM?r?!`OjUMN(UfzcS zp*gWq`s7_$=b~Ov_E%3<$bh$GeCO)!oIP!;OBM4bsTmhk!xZS+@5WytqZxo1Ti2c4 zqdbcgI*0AjDTeDFVxd^_WiYJsHoSBk{gz+Zkt(%sS-V-yICjaEBOwv!NQuDgnBR)U zzWyl{dntdRWH#bj=zQBxY{+0Z&0f;MZc~LG8$GG{86;#c3m%dX2iKb>l}S~-YA^)f z)0@_FJ?&@y(olT&!yhGzp@pqAj;zw#r!k1GvXbYj(|jvP8+Y(Hb5Fm3Y1YBisnU2U zqeKTGIN-u(^jax^wmnNOY&nEnA#=e%ia$KuZSg_aO_B0N|>5cQlgOL5$n)E2>GV+E>_-*p%RE5Z&6rY?mKPGOa zU0ucM=D-xGX z==+>A@Hcd|p86ium=gxlaCmdR)H7s*{%L__C!L_e!&@vGMKY$_F&qvrxW)jby$Z>if}P$_}pbsB*~+ zoBfsk7TEP1UD;t=K_C21meprJ@7Qv#OM+kWOlCm1xH_82Xb`urer{NG(S%P(mTFaT zNFiZ+Bq17Fg+Si_;yeue5^_D4O0ObZURl0S2Mzc`fDTT)O}z)|ugnUB+k6(68l1*E zdA1I_z^+3N)+y=hykaok%xv5wNl=ZzBC#)AZgX zdt^6w^P?lGRm`XD7xv~<{UM9jCK4YO5|fcR<~a-5={+?w2w-xVzIrq6_V`Jd9qfop z@(M-JGb2SId(8-cKn$ll7?j^htqh?=Gcg+RWb)x(zo@b_gS?P|+vaA77kC*j7;szw zmvNxsT_2`xBiSJ6$rIIfx^V?{Q*C`7c~~|38HR+f&mNg0QAm@80;a9Q?H#_>+Z;!& zvyhX7bLPZ-%&}J4fQ&{qg{w82dZPF@T~~`pV^=Q7x!P^&pFfZ`Ilit8py;%P7}0s~ zQTB_MdL`Q@4bJzxWyOp*7@5#zZ3xfc!e|p4O)#}PoWv%Dfv zS{exuajq{Jk1A+rL08hz5jI52ZW~o9hn-}+7>r-gw=!c$=6L$vR5FKVCK)Q;F|=oG zzXWmf@yfY@9;sfh;v9)6BJwPG+6lK;6Hj|~KX(ZZIj7#sRebTV(RNEzuP$N!mtM&a z6Tlnkv@10OTXpg(sPVZI%5dHyB_h{@VZS;Vq}7Q`bw9nJU(BHLjwE$ts!0{ur2}UG zN93tWbH!VaPq*4F6xQ{JUod-VHMjIFNY%p;>`PSPNO5EeTMqr?wnxvz#n9xzJ!&o( z1dlCks+qRhjw+t&U1n1a<$L-iR_YfdJ3-iE?206Vj`&fIZdyvMvE~V+9`OC%tPLv&!o~1i$`&d5gSZYUu_GV2 z*R-_y-j=8nR*Ks!BTKO0Y@0E@oNnv!;F7O1vcaslSzbO(-J7C7OqPk*1qMRf-i!BH_MyVC5f}%q0~lLy^&wlDDRy1 zPZs4|_&M3xY4}dA_|=S?k3l_xeFh7s2Ka zm0t^dNv717iTLQ1U=IfYcj6V4Mz0gj$^h$K)bmv74IfzU$!c;hvNe8#OrU;tjv{2s zT&Js@qbvU`ZA~9XxQFB5K2oZz@e6`Ix*`FV0LmAuMC;+99bQXwWW*Vzg|QuFsU?C0 za8WB;C41zjkY9ROyj>l+Oxme9zuuDEaedc4rEMhZCa)mlM z$2D*a*CkX%IA7cDD{-VQVeP#WZcF0& zw0%0^L#T5&;rvnZfvZLOQQ^Lu`=qs zaL^(mr$f>dt&qA~Bj!g?ce!!{!;06Mokw0i+VohqdtBvSsov7Kw98RHr7}l$Jeaty zk+gXBs3{%EW;M!g$M`Zr=}A_XNI)3;qb?r5i!6wnwr{z$e695y1kpZ`-K`2&r#3k@ z@C!>S1M9<6A!7511ZtNqf^`hk`%&4l>JQH**@kP;`|>?WkQmqD{A6fxV$=7>t11Xg z<|~$+0@{H8FCmU!bW9&UU#kMG;r)EPWMI0SF{cQ|ps#7EiR zMW>g?e`z@8Fi1R9)wipeuKUp->XT&q4$S%hmJD8)YMBxBaO(@3roR34uj*es)x~2M zO{Dy$&>OTbNk~2Ad~do>&zuet-xIyBrNJQE)-yY)WtLhU1P@R zbYJ&qS>bdKL9ei$}oUQ2@?I+`+gf7NIH3rx0#;eWTon4EFR9!&%fPf0mdKk1=%qH~lEw zjuB-Q&iO6=($lZDLid@NdacDeSYR9~hH3Qn!7rw?L#6Q%o`)2!SY>pCx|++MC)<7D zVsG?NfZ%HG;dVr&&`XKfFJNBr-XLVaN+Lt4T}X8K1brn1SA>VyZPytt2jiax+nbp= z9^*cS=EX9&x1+4|4LDLKrVRU$X#ysq=Xk2W7esH!!O=ZrBsJ@U+|dy>Vs7=XD_?oe zv5yY$_w#Tbd(ZVZEbdNNe1pjk(b8Q_7*K~6@_QZc<$HEStZw|g|707BxA=vKx2%7& zfp@L6UmD`Neu$VzTd5W#i+cnI=ZKVEm}u#OxMS%W=V2*D{Soeqn{-|;nDCq)il(r7 zuNyL6rC1~j=3V(-{wy0NNkxS-%Avi0wyzJ6EhaST<_Hbr=N+KWE?%VY>+5dr9&d@qBr1ibY!}J--Sc@e_4bmvvrT zq%XqmF{Z#rh^3$&)u1i&QrS))yAZDsenU*NYw8 z#U=i%Q-`UK@$_P(3prlJJ8>Qr!jQVaS{hb=ioiRp4-57oLv?a+q12TZ-kS zoYL2aETMdO@9o9;Fo*-rFHjme@tYo2rj;XdaZ9$-io!hDBvHgtNzdr3h zhP1kZHr{EX;APXL!J6f=$=a3HkdSSb^R1KsKkUJ_&J?dn&xJx;a~eo?nI?-W-@cEk7~WgtG|kX{uhsK09+^xx zZfJ%VX>_xq%VyKwPwN;H2R>5QZ{B4FZl=SUFxRVyqe~NxMsG1pgkvDx{b_bL z^Amalfv&5MhXFB;hoJ6e)0kNOc~{qH1!3rdxRBiaiTgt`OxD?#161TDnX-t24|~A} zPV6mqzAZJkeT6)*7cXFhe8yAD#G?vNqf=~x(IOA^BxQ~5J|vq~AQZF>5Uwx&UJA*nCkZTPxdKAH( z@Bs5+u!jGE$tVUpAxklEQVxrQ1o-B23NS(|f%U8OQKUvBFS-Ryc`!)LS7OB@j$J(3jEL>Kl7Q>HzmwA?Mkdy^A;HvCJ@)I<5cJPt%2qRNec8*9s{vQn{Xk-%D1GO_eBCEEuWFj|fTW&`|GpCJ><_4MGjis7t_n=_dVF@LmTR z-I_T(*Aj70=|=aPKTHwWYn?7Mk7S`P=1qm?Q^(Rda+D`*A|9%jvrpMWcnnQ7n-}gY zdU3MX6m6wWe2HJLRO)kPYNR-M%Ao_k>ZO2tJ^8Uj+JM2=@bfbjDi4q8M=P!s{z+?N z?$?i^p9SsG^pN__6>~05oFteA^Gkc}p=s1j!zCb$`*NlzCu77hegOW4fUiFK4fXNr z8u_4KHpcu2yqC;@SK{RdR(m^?I6pBwT&tOg#_R(BL?H>>lxdYu#1D%kvc#jmOq`&p zAYpt?7}6d6WJkh~{K-IXjXBUExX?8xaPS4({88>bAHCVZ(IQ9dvah;&1PH*+m=44P zdJ%zMP4R&76tr-d+=&_s8fpg0VY8G7H)^XaRA@rpZw+xbhR>eE4)TJ@KT?ASH*Iiv zGypdKOyl0r3_JMiFgG#Ye%t(o*fbc77HP2VC-rqsAJat*H5uMoh|LJ5rIveQD9t0H z38T~05J{Cn?kW=We~ z@B6QvRq;K0bjBj(exHDa#=B{nqDpdnTyFFDDb^Of>LG+_O<0yr{YBv<3^`#GSmc9t zg13_eN8ilo&a&C*nrM`$=N^ht<_91V1u6#E8%Y*5u%hyJ#1wSC>uEbKj(@;a#N81`Gh@a!gJ9&|un zeL16b+XCg3YXVNFr`mAi$fMc8E^F9RSD$X#f*RGNYHx(Dk;+A0YkNdN4XJg=*Fud| zjA9RuFd9v;hym573XvQn%HXuiTxs6h6!Q(qC@lNcDrJh7=CkchP$D(B$6*i z+N<3+^#k+$FRzIc-Ci6mifqwnbbos4xY`w1Cz$x9moalZ{!4Kw1|-ZIN765}UD#qc z?Ve7Y*REsTl1Kcm%!ARvOqqyUkB-xjBtKQNpq3Gz~V2(bbFI+k!9SA|E%%U4LoZfM@QC#rdB)d;H;rRT+*5Ow61gCW$B zNj!35g{|{BNwA5lQ;iox;f)q_p|)LTGo1PARMW?Y!-OWgG)5^|)aMr! zSn6<`UNW4Jzj{ALCwM7e;pw{%qgEd>#d;cd40@ks$7}|b!T(JO%U$#Z4{sHd1BmQ;5efF zV}izzD9@QSR1S;Sl57A?xL5klAlbY7Niolp^*ZL*9&}IUxZl@HOR}mDJdGH*@;iLp zgg+Xrr)yMPm|+P7w(xG6HC1#FIGd1G*^A(ql42Y-1iuAiRh)rnOIcJ<7x$Osu-3r zb5T}E8JKb1`Bb5KdG7NpPs`+RMCWji_fhMok3Vd^P2u-B_eWp69?M-nNJLzkCQ)eS ztUj_+v%n_V0E>!h6Tq1}p9S-6Y?H>VI+Aec-#R{KZyJ8$1%4)u_u9x@-^nzhn0oEq zIxm`?sJ^JN5DcC)$1Ge*3S-Oca?=dpdHJ*ojlsiT!f z*vNj~nQ4UsqkO+Mf4Y-f*9joR1UCoc}f*Xnvc`gQsXR$-2l-DnwO))Iwd%+*b zS?IL;SemG#^(11+UJ*p1WG_e7L*AHFk15LQCm9DC0_nz{~++Yq

Df!Kh~b!4)MT`h668bYl{n2(N-B!hHAIBE3=m-X{-UVAk{{f63a(jh#aEjnjgp zQ&NI_-=I(OEo>28XtC&|fMB%)_6T)DkQgk#Ie0$NedEeM%)*!#z(*9UlCc>L`~HE24rl z5TS1%AM-*F&0&WrS;tt$iJ+Ge}C!#_4f{+XLVEf9N^+ERQsvn(*X?&Q~_Z zix}CY6^pkQp-NbO)Fipg58v=(c!dcCojso&27aLBD$C?mKGW&5Q9Z_MlYXkbz?*09 zJ_qfXyiFE2*Dp{h8(UbP+{P7))(+f%;%sK`E{MdtC5W4iY>Ch$Y4-A5g@|7TS1(T$ zQLA`PO%bYOHVUMtd~<4Vp) zau$lyir(|rl<|th%e5-kO!&s1Fz_?s6C^V>qw+Vr@{ zs$5#-$Vvfh14o}dUM}`BG&$=e-_)XIzzcJ(70Q(csL&0_Eq`^i&*_F3J}yQJ6Z?oz zEQbyG8-FDn*`zO z5>KKMK&|+LTfNURC)vo)+`2Fsppe^wnHV>VfOte}r8V0`uP$L^p>~A9U%NTBB%h7_*_ipOuSQR&_1($kjo9_7>B+(uA}^%r815kvQVNH$ z%NDSW*fcAcWK>@~=1^B=tI5TY9yV*3!RBpLP{lDSaCy=$6^>z35xYBa)s5>#H>GL0 zMM=n<3Av0%-TUNOe!Oywl66JC866?2t(V?YmE=l}P`6YH{_-2!O|BwgO-$7h6WAO+ zss-(NEc6j;LpSLXNEe%YqF#wo#kLc>A?wR+@j7U!u2&QNR5N38XlXUim)IySsRLu4 zn4^{JgG+z(PbE&dNK!gA%Dfyh_I~KgyVN-zl8pp>Ofe@}Ve|33qz{ir3Ix!Cqek#n zr!)@ZulWY3wVz(~%w5?R?y(X)dEM&Ywb5ZTvxlR*U;W(u-em>-3v&F7+@lx-CIi); zlQ%6J16aTmx65+_OJm^5lT|k}kn@_N5njW&vr9JUOxMt98KFY~`RKjBKJYz|w z%&78|F!!((ou&VD6a{^|!zX)2E#&5L!oe7Ywu%L(x0?UeGXCdr$Hz*ObRGC#5Xey2 zm0Bx!i+gQR@vDe-{R{J^Ca!Yy{cVI7vE8tlQ$NZOzflhHL+pHy<16oP`Fw z{^b&M*$qkF9v(ez0i_YT@A>mo#;I^Ne9kg0C;d(Pr6M8nd%JnP&9v^$h&s*fvXbnG zqz>W~8@hQqlOzvx72j51a;7rgpGj7Qi3r}ZvBnB$@yJ;x!(Gc~J?pCCOA=)~ z_-OT}(Sl^U?BhgHOA+Q(dZ{- z_@`SD-&}``mp(x|P*y`DJg?~;%Ai(?oz(7JPJ4~R+!Lp(cx2wp*wJKsH2X<=%3^Hb z80wv6po^##JeooJ-1)UldbE%8Bh^jK9+ARs{z2w5jadRrOU^;dfnD|YkJ=U05(tze z8j576<|=YibmwdHJRW=jpPgS1uK0gYVJCAo%=Fc)au5Yvtxz#r{^z7 z_^$I#AU}&gi$(g}43Qjo3Bog$w#q5THECMaLLFh=#9BF4dzaKtsYVVyDZV; z$Sne9Plyt;4;GmI4@*d4Dqok6v?^#M5V;)~9=R!tBA_0bD5Z!ZFU@d&3yUOtKgPrE z_MF`$3R|9*$|M6-rl;5dxr+VUgP7KiCTE0mPQF%a)U~MIS?3OKG3J}nD=B8ofQQ72 z2s@l|L2M`pI1RIiqtjAKzG{Jm{-fjuCsZR#Xl)cYN7%hRAp#wV;YY+Bd91JzW=W|9 zW)M?w{)Yvvicd-E+?Dg5S=VJ)wGw*Uxdj8sJT1(Xz10|oj&D!&azp-eAa$$3oJi;upI2XFBg50{d@v^q&o7%G2+{Hi{KtcR2eXQ{?K2IA!wZmUC2D=IMT@wF}=V*tXsODXB+R zNi1q0-OkihH?mY3Lmf(ag1lAq#Vp%%Mc0P4EA_QKmE|&Bk*k&3=lx{_8k~7==(X5I zb-xOkHWCfGS)vR**F3_C>9D~ZoZiEBr%#l&ge+ z%v{!`89!h?@}EKk$ACg(R&kSr_==TL4xT?z(A8P9P2h%Ya~-02TyNoxGVT->_dKp9 z^_|G2ZTl6p@W^Y@qdHbxrCMM7-KK}@E3)?dU>W^uJ1wD4Kb;+jXN&1Kn^9~pb!aL(%rEAaDwxNUul3Lvsr`(n6ZeL8-mW zPmi=!^Wa;SOG;bSZ#RR#ulMwEd(9NwJ)Os6_GRHual;xoVJRw&lL%`I4AuG;_e)}H zK2cIXFeQ71h{3adCQaKCDcpiGz&4kUOY}+cLoYh~y6gl>yMpk8ZKo%LopyEhP!){f zE-m&Ax#~%bp(K?EZ&>A+`l+L(_fm1>my7*Msob543`}z+#ncb>2m=WSu{}Z$<&@S$ zkTS^Q-o%nEVZuO2uV!k%yr2*lJfzAo^wFK&W1VXl@$klX)iz(F0o!3k3?AyZ2U$$z zG^0=BFyNbC@3=qlRn2w8(&T|Y{l`63ciLA-x^>bc9-k+qwNK+<{Df?~d^^+p?Q2bB z-0j~v89@dcoH((3JtXsd^h&9_Zkt#Pa-M8UAVw}I`u#w#8DfPYoDDaoDcXiyZPap# zBKh?fL66+c2jub5#iEw+)Mem_gP|kOo{}~5JTY@NWi5)O>gE*ey?W~boZkyonThGo z^xBMnw)|sVQ6^eHZ95b9vqMTO`ut+t4Y7X5tOe0;S2V#<&@dCehyB#EY?Ga2Pagl#P`JBsQ)&afAYwsBMTV$BglYkr|MtLIIt1yS+?`>n}9Nk`g_- zc`99YgF7y`hDRuTcU2S!j$d)gsaQ5?B0cgKPq8Y)5RG{CiU2K+_V|708-a$7(=y^F zh8m2eohv)fDCgO9tN{tQ;K^?>YRHxKi9PE0_#BwMaHCLAWK=UryJ+PxCZ8XFp3E(< zop!1=}_0-!jadzC?|5CeCCEon32Q_fQVmBTw0l7xQj@$^6>Z@a&s$&6t^_BT0mm z<|syw<};E@!z>?^T{Q3QlS|L$i-dTWJ?IuKn6Gttq?v0A@JblZ}^_dmgl1Sn0_>=T{=WmIhUd?a!m>M9Ye%ZsWebcA$ zyo(=m=dsR)tINT7s9ipuatV8Vc)g*SJ9oLhr5Kc9dU27|+t{8@O_{zY1M;hA9W9*5 zwyg$S;0P;Yr+tN5+l%YcFA@zJR^?RL5yuQae{JjSxHu6zbvE`!wZ#xtwusZ*fJ>pu zW-llz4tPkLfdqyT-_&|&+(;ZN(-0Ot5_#RV4;fVd!m+BrBnJj;VE$G3deWMJZ+)9A zjBTdBv~^zJW{8~~A>#x7H>a2_+}xGZSkZOQ+l@?!n99V%3wGBsjZjos`kvA=jK_3Y z=DG>;6Ox?iAE!8TmAMS~Fe%2IWs2z`S*I4kmqd3_dc>8I2d-;bwYBnEwj8^<8h)jy z3oGrP^0Roj1Q8PwKhz~^8T$Flc-gd8)WzKLP^Ywv=JjsHexK>mo->~vLrH)x2_Xl1 zmBnUNr>4!Kijd($)s?yp;tvTs?}Y1CWS+DHylp|a-c+9Fw9Qq}E$YDuOH<^pYs7mo zxAAfr;YHh{I3-*b!0z&4BqKYXtQHOuDf|wO-o#MIwQKn-Z;)yUq7K2GkCmO2h4CSH z16z;gHa!SlUDb41CxpJ@JwQ@U>U7)wyzCl(DhbZ2S_3{~BTKXjo0SIbglFGk^;AD2 zl_wY$2x7Dh-0y;*yWwxb!HLG_(=jjCrmmO+cpvq& zXW)fwVwy40w%?C>PS1nO|8BfplxOHHE7xy2K6kE(l6bRNQ_nd|T(Fh)7)3SyA{$%}&DsR|q`|zv^YwMdM z;OnB`5a^KTz=t$p!JY!2*IXJ=AOX&t0DAy5G@$*svVFh*>&J&Y8R$(+9ZXHEtnG|` z1K(oLlbx z^ng7{9|jBzff5W1736MV;M=Bu-TmKBn%;6hExz>OKA?gx@PC6^atgrxe!uCjcBsHI z7F-1U0Ll2P9Znzq2GB8bF*0y;u(rEJl2{~XR&hXMdcYr`njn$<46?Q|HZ{5Be%g`n zbvVEwJ3s?`&W2h2t83SSYh4WX24{+M-Umh`XF)*@mFtxV2 zjgc})Nx1=Zt`B(j`ysJEu54c%>7N*;Rt`occ6xVF1QzQ2?SNZ@fd=XkPMM!57S<*v zMz?wNd#`{1|G7~9_xt@P+jsWo`)yq59b9dU41bL*2Ir5h%)tG&KzM`R4lnyt_jX1O zcCNSBF_lPbA03DVMgRdC4;FGi-EQw-r(y_c4qSH!0uH1>2^m4Q;S(zC>A~uN1{&Jiw~+pK#OZI8sY;TQ z@05C=VFT^QmF=70|GPZjUG&|8L3WfY1pvS`gypEkqmOplNF>AOzh0Gl>64HbfCbcLIptRel6QZh!H+thSCu zcCLTq^{PyLa0fUYKm)d?|GKh$T>^jSIoRo0*&AEiS^mACJieGUK&AuJ1{!Fr@CN-1 zwlD?GuLZH@uTe+B6GM^$P)>mc>gCGYNPr#nZX3wD_x+u}`(zntI6(VxW%~vKsqz1h zg8vEh*Ad*minB#JvH}6*lR}7JM-z9*pE$n-iANn4i6|6s2Kd8YE#w$_3+NA%t~C+9 zk1L?hEYLtl({bc2r2idk_N!tqscLi10fH}}7^t1!M%_*MO)dR~XSHqs=6mdeW}6Su zKVkIs49p#EevZvw<&iHDPX8X7t3U&lCnV-~(4GF$w0UoI4ftyU_E*32y!->^H@!{| zLog12RIUNkSfJwA#{JIuuX?x42y{ihJ1T%UzJTXJ2XIp2T^Jn;YlHucxLbIY6`A>x zK%v28@T<8QlYi&^A&3-mBCuQlQ_lnK`=M7qu591Ryx&20#E>_`ec=;8yLW)GK_gM` z-JOu%Ox+s#N#;I4c>+WtXzqwC_=$2$CjK>s8rjD-bOBAiD~A6=Bj7jNcdYOh67U6D zJ0lZ4hwle!|BA|vd>#o{6wDJ43P|{sljdYkBvh=f;~W~1{$cL+ioL$U$Wj}XpR%CRT;ol zJwPS`%|d2CRrc2`_G4)LrvSJGGt+WEz!VT9>o;Ncs&2v90nvO5<$-$P{&%k{0F4l6 zKdx-wNI=Wqgt0TS0S;!nE0MA8yX|BHgs*^hpz{W>m;F1;!N^JvC|7Th%5QnV2S_$x zt^kPWhe*J0w(tI}AZv3YtN)c=x6pP+2noK|m_Xe85=v7*O#GyyqrHQX-Jj;OH9MIh zz_?)9fLx%#9awh@>COoa!mwGE1;~sPK#m19lzsi5IKQRYWO?Vq7r!++(3^(N>50|6`sFb}9SN&UBQ z?wEi!@)NwN0OM=}%T3Vn;WuzMFfRIB8~o$d1pW&`8Vd+0Lmr-TV7-! z#EE}M{LOy#!M@%_z|0g17!OqOps_y+`G*1pANQ4$4n$^=`!_4<{hEJ(gR;* z4ydgUs7(UGRpyS{4aA$hsD>NJ50{l1!_umu3ekhUcn+E+aH291E+qfq^4&o02X21d< zNC0^5^+ilR+vX`~o{{(arZ4$_MX+Q01O zFHiqkqGU88>6ZZfE+CI`fb_u&>{0*!Qs=I*@RKHg_3@jzs-h70IDu$d2BuC>b3MWM zm!13}qSOiAuYO-;ec#CfjoD$mf7#0&QPqjPvYrpn3jt%Xff%b0|Nqv*Z>ADIt`-pn z&~`xM0_ox%;Xm%eTHg$qjsFx{Pw`6?zlRngpbef$$BjVE)zl>^e2E3ga%wbc~Ezw6@6cJe~M4{>|Wa^(8Q zJvadw%leO-4Z6@Fao?lr_nd_SyzlT2r>g&T^Ow_q%~?qhBaK~vwVngk0?k>+|MyOQ zvskX>l|w!dS#N>z3N&Y-@cmm={t#P6=Ta1rfW>~#S*Sw)wwpVm>-DU7Ydv5u+26+D z(f_rJ->lWldPFGzs9_8=(6J6K`cKrbb~3Wl(X+7l(}Y;JZ!7-YRKFJw@&B%mJ0pv> z*EC8EuoNyZSAiA}PGbK`i@$pK%}^!Uae)KC7KJOY>I5~^BZ+_2#UElyo@sdWdzEz# zG|;7ufb75OepuhAUtSiXUPEzuCTz6#gmm zH}z!%NVqwH7$L>{RsC|n?6+poAL{=hD!xkFd%plgg8{@P1re1Ii1|NK?}&r1{t1i1 z08JfGo(zO|@(+o>seZ80B;^614uD1ug7nt7Q%K-Z)t~YPS3{0?BL*0l6HrirD$cL@ zN9LVgZ+O1CVh79%p1@oOx+lm7>`&cc%I{L%v6;OSRBE^k4-6>fUtfpVi~buPK-F=! z)3X8I=D1}uX>PLh;v10mae!0gF*dPM?00O^Kqk)z09}H?@XJeqFuXp>yN~^Ts6g*&u&+0pQmcK#3?V_@abnU z;5}17Su@NCeiG0)i3)`qO}zluZEQZv_1h6NrEN+l;z5N?L`73=lmeC>j`;IS?D5>O(I59T%97ZV3jw9-sYsV7LJ1r2H~#K0Nvx z;`jHg?SR)bZ=o7{D-lQm8&MYozdlNQ2n+e=%yIj(r^$Iz!EaDtV1Y!xdMOL(Z-95d z7@=)v6s-mx1;fA_67t2hg$&+G-bNr-i7?D{Pj8vh@BXT8X6=`Cpj6v{AwZ9(TEI*Px?-jUuPUwa$U1C!euV0Qu( zIz##Q&^xMzm@)WKV15Jh1sW~Teq7nUQmlUq{p0HEg5IU77qCG#5DK7!b@88&@3gHC zpJ=K#kgFJgy=Bl?*k%6*692{hZ7D(+Jc)({tZcl22?(@+s^T z!c+k=c3*rubSjB0q?vU0Jb=WC!Ifkaq8<;NRVTq27JrR~(pE>06G2LyBk%78_>MH@ zc->kgn{ zY3rk}a$$3O*xZP6ojLPWz%ds8-Jorv2XF$IevV(r!6Rk7sGmn&YJDc5tWI|venSt# zPZo(FMKx#R=ARU_fpdEz%cIS%xI%=<+ikO~O7oecF|1!tmHXmsg9tA&*l(QT3xQVA zaW7C+>K2xh`(n%eB0zpBMmiTAU3Ae?#OQ+@L}G1-_)VENKYlcFR#lWyfjXVtdvx++ z(C;;cN+wCsHlQ)l3+4|6R5orJdd9CN8tgyD$ywx5ud2r#?+V!2xUo7WT?V~vmKtc| z&N2~)^{nsxe*yA7^dem)pU}p^jaMVW&Ybc>7;ptV{lwx{wk9hi24*<#xPQcIfF%~= zJ>^2pIIoF95YYyna}GZNp|IE|E0*oAXyV|6xLOmV-Q6J51FSFMpL7}Y9#_r5XGEHE zI({>m+hTCj1edO>At(weB3D}K;WgwWz_&pmdO2j=4fO<4FU#k>2Tqf(=OZ+vAiC0z zjON`m1D?_6iQSSN5r|{UQLNDV9J;L@U*JKGt$&z$6#8t2KJ;4e0y_AEe8m5BN(v5!aXMF0$TDUVZC`;Vb{>ImWh_mPxd=mkhf!DFM-Ye}y93OM_e))pD!&V8ZeIZd0)ly!YO~Pn4 z@=BM2kw7OU5$ZHA*-7GdU5%cp3DEwQ;DKV&{C*_ser&xCw(g7@6>E z(1*R%WROJ0_3HtJA9(IT6nKJCxFbciT31FnlQ(8h#m8x+153s9)1B0`JYNfJC&y9= zt>KTQ&EpdIcj=9DEzZKAOVE%WNP$-7k#T%{aTk3ad4c%|6l_l^IKM)Ph#37kc(y&= z3k<7p(@aY$Yhp4vF+WbP--d{n3-Rb^*Wp7mn7H1TY+I0z$2Pk8$h7HB3aU~P9!9#V z4uuUo5mp=G;RP*S>FQ<>3H)wEd~6+(*=IpII^=DsZ3Yv^>1xch_)kX&Hw41bv)<`C z=Cd%eW%P>gGX}w##PGQZZ2te?V?_Pq zyQ%>`AliYOCT!5c972;3x%%5LH(dr9dHbdlWnpd!2qmwPmrgAvjO^kGL2Dqs&>dLW z-hBHcI!4dbfIoKzl+o#?*OlwJ-_d+Nfrm~yf3ra@bR@?a(YeTEXY&a;?%8m`*4FM& z^HvosYEYfG)1|~@jFtm46L${>%kQ}9sHq8I3nc-%{i4H5yP z(zX$2oX8HAu3qwvi0`X~LEud}FI_V-p%S|)cX6l|3XUs{Js0>KPcC&%5Qtut`(v0H z@Qgy|o;}(Yfad>$o9^WA{Y~H(d#O;6HO@Tn)2GU1SZ7ROiVwexC37(XDL@IBCjH%N z&v}@^mSGRgVUoN`9tsb*IXQeU2NcMS3Z-^h=*g$CSeq-QNiz43c{o} zCU;sfyD3^(1YTA*{P9ro00Wz&Wz%AtIa+BrF6Ny*BdHqn(nBvg73w?JObSM=)E4W~ zltbphST!8j^co`E((u!ml@`h&GweI{1ZqO&J%{q$$kHhrGHb_~!NhgrKV5_SC!$-* zB3{xVv(x;N@GyOo*3~`rTZGJJedQt3eUTYN0%va9x?*?bkl8fe3?`00PqYZywi&`D zVO^0PnO)bI&%(&IDDHZ)a>#Vspq|EL$ee%2%||(8;?!;xxxl-T^Nxn=Ynzvx3~K_( zqU_`$v)m@LNf^aaZsxB}N62)6+`B#omy!)E_Q$Z^j051 zFB|AZhs^!E%%ot{T2;DMZV=2U#7$@VpY2t{Vfv_q*;a4oB2Ch*#Z5m1%Gbi6CTKny z)7FJ7_p{GR79?vhMxx?+^5c_sv1H?=GaQUwhTor3A|j@LzN>yN>j1nt8q*G~-i`z2 zFbO=`F>q8OS@A!IB!C_`89$pt#qsK#4k^jlYNoq^Wf%IH%-zfq&@jq5Pqq8F2h3T7 zo94+rp@GL_=&bQZcSCu)i8`s7hwE_*ca3(h1=S2lpXkn6amsuaMzmck0_v24yQR6x zMJtn~nMUAi2|G9DkmyN{3ZO&Vuw2bN97lWf)57~zAX!gHMwbCoe>0bZ5iEP>nO6QV z!ezINdzlG>hY7)hs6CW$PxVJ|}D9sm#znua$-C zWvOGk53z+_u8#7d|LBQEOC%0Pu8im19*#q-T#3iLv|ORjHIfMY>)+2avdLO+GUTEY zv{r94vT&R$Ddk{hV~F(t4_W91>u!bSF)&hDkJ|65oMry}L0J{$h3Ug>UL6bBq?~2O z;3N#wi<$2k)I`ch%k@vrphws&vuSB_s3Z@QFERajFOSFHpzjB*|u z+Y~BinOkaU;4v9BJ<@{C64}^w;O^F%dAJ^zcJyE^vPd_vg*?j~i?{7mk0RMR03%xV z;l?#vz}*gXl6TH!obIEMM&N6H!QGFMRSktKv$19#j-#E~-tJ@tNY(_B(OKq{CgyT5 zg2ivXm^cT9kQa+S#jo))=&yasA$k9ziD=vU9j64ZS%7+uyQvWpzXtu*<|a_N9_0S* zqF4RV$}VN)@6V03Rg1}(pSyL%>H(GTRk*=&^DE(-Y>NJ3G+*EyzqiXX=wa?d+>I&o zx3w{W%JBvFerL&PSGof10BJ%YhP73P$e8Z`pfmaEj;=0XX~-AtOhEEZAa6b2cKbR& zS^}~j)yj$@87$R*PNsZI^Awq zTARX~_>}@4=Pll<9go>GvcQ+ks_S$OD3sye3MfI*XcIoC5+0%O7Jt*n+3oD%%B^b1 zwMrYHgvI{~p52AgH8*~UZ5kMHb*WZ09j1U39282v0j1ESma%&#g(BeO)R7;JtqW5C zGVv+6oHK`xehBZMf{dmX)vUy^3TV--6k61!Vp=CR{A~zs8w%smvSJv4&?i21XEN zHnvKP{RRf*;id(i7SG^t;!3|3n^)tclA@2_SOdp+;dQt*JPgL5b^ad&)&WQejG{q? zuVp}ZvBP2AA>SC#lLC(R;+^Y?fxP<)i>R;DCYAY)0Nut7N0u&we)xJ8h}+qZk4`G* z3#0N7acS49vOxgDh*NFFyxTrlE(k-xNZYk#Ba0*G?mM%GJlp_<`@?N$yIi&@0dc-o zbEEC}-=ZPPRorxERocnIaNNdFcF!Oj%%;QYt!zB)=YufPbbS^V(+ABMhMOLhU6YD6 zW#m}l`H<05_cgY(!W*vca$U~LQAFb*7V){`WFOoPUBU$;Ha0&#t~d#x7{QGmdH4w(-(%n`sa z9p$R8v+E8ps-Tx>pUJww;&3LUig~hH3cM*1J)h% z*P=lDJsFsE!14cG0gC&{uU*$Sxsi1?8yH9XPN6c6@+o?@U(EMDPhemf?aOJ`6`I38 zJk7V%o%OTOmbplFXuD3`Py*r|nD(!wUH92&&`aEOw3wZ*fWtYFD*yNJEqWlhqD6FT zTyH6$a6kGL*!Ib+8NeY6+q4V4RKhW?{wM^ERm-|OsS1(DBi*I@E9JIAi;5~>1(BU?*O9hpebM&YIfuX|qsZG5D1woDp< zZY#QIPg-9bCSqK8RJbT#(b=Zo^Fla#it>aGA(vR3=$0a=g!J9zzd-+!=WNBB^hiJa zaWTu@H3?Ao{9sU+ePpnFd63v-H0_gj78d>2pg;Rm2`9RhQ%e_7!-@ma>jBlD@d3rg z&X~LS{zT0C7B2D=pazODr6BAZ;qRm{l6ow!HgE=jBYMftYN}T#Y^)rZnRg2M9xqLT z&wAWQ2c^rPFR--u-)e)@Kksyf3>302IW|S1-B)`!C(c68UvDU1blF#4h+cFYhq4ya zPw(-agoN`noKO0!%4i(GpgT*6L*C9N%A z*EDb>KK+8%>Xn5EZ8A091>)Z8EI(DVTN91YLOtjwy;*izuz9kSvu@5P6Vd*mH>wc{cl_$caZH`|(#00dm zntY?dT`@B1pder4X9V%-Fpi77`6qj8b-3RxteVli*r!u?VdJ-z16$beTN#3V^ICGSv&+?aNe;a`HyCqnS zrK8q`U~R~ZGQ}sHmXa$7L^AzO~nZHgebNYZ1o>CzzWr%Qwr;CYH@i|L|uN|#Til@ z#>7mw`L-C_s1iquGdNn0x4&;g1wWaOai|s2G%{HieqOw)z6^n(yakdZf2Fq#d16=C{mEH7BF- zj+mM04L}RiG{W=rnRWMRIXp1a{fGcd>*JfLOyTr@(WmSw?dXg?N4*+e$Kt*21pJZK zC*)U+@H~CUpho~Gx;}aTOMVRck>@!SF2Y3y^2bI%x|UBA0E%n*1|6M$U5d!pnW^QU zh%u?cSi!$vJUbTmEr27LT0ZL<-+Fn)4Pd70w)Wk6jjWC0txTEUtuIiI%J&w1?=)D*6g%GB~*o2mw7 zv>3Z-MO?OnJX?YG62ExK;?2^DgftmWhL^nQ3nO}B}u z<-NvfLuQ2etA}e(lBck4Gw2%)&^%2n{bsp5L@jTN^p(~mGe!t+vX&n)pzAMa`46w>yvjhU zyFnCNl7+v&4Ep?)8ekbUGROOGtOMMUa6mexco44^mnVhyk&dZ7AjM0jmhZJrh%KwR z23F zEyx-2Q{ZXz8o;`A^~k(lyLaZ6{cGfa{^&B~meOU=$Nwxu7t~_DH3tTKi<$NTk~F#& zyL?(LCL@Es&$P7dkYNI3pnGmhjw(=|0!dB1-%dc!rL>WU;x)OZfvJK?K9I-F^KJ1p z#4YV64?ey(G(t0a{PRcYs!7m;d?$)dhMyH^!RE=*bo8)l6%aJjAq^ckpWQcsZ?YCU zcBIC!Yls!~5jg2MI!E&z*X-{4RW(cJJut zDhN2W*ywG2Tf$W?GPPLyLe-#*7PDhd?I*jPVxR?`!0ffKR9XxuipfQb0i+YrRGtV& z5(bC)Azl0hE0eVQC0YuRRn}tnSL!A=LaPgbPxs>B%I4rR(li>lcN(_y>P{h;$ZD~w znhAI+EltS{--%i*CQPpXIcp(_$y)4C_P-~_p%&ZE)MBS>wIMUgw2S+EEpeKuke{x_ z=CsuS&C}#$^EFQRI-V{T-cG~MXfK2>X)RXP)eLw>9iN=*W61%MGhqT|WqHRW#e*iFb`vKH&zK7Z>OMD@c=E#~g24Ve+9N@T_flBck4GpwfuXr3nN zBWpJ7gW`aE_L~l6LwXD0P1a&IA$5n?0=axQc>?fqs5WFqlUX+=EFhCKt4Y`>4bVJI zI-k8cgygBp)d&r+j2aee5_*xZIZndR zp;L-Sk!o>yQba^Jmq`NdJ)|pio9|)ov9aJP_K4Xy(;5F4=eg>|n62lPYq9GwT5uUL zYV?cK|Tm0S3=n9au8hC7Rd%}(JO2VHFlyy zkwt>{j0V?VGd8y>)?KE^ElQj(hZz%&&4Eg<66&v4eJ}xXT*QqCEnNnE@_IQ4=T#5u zfFTFpVkiuQD77R2qO9)*4g@2Km0j<=82s&J+zly=#hZ#@6yGo|>g?hF^gcWtF#o|# z?~eD}%!A{0dhZFDj^rJxuMnL+2B7gW=*t;Qf-#o*>~syx!@y2&Dz|h)0uN2#1Svn* zT)l!8tv~~5OZO%5;JD7PywE8X&Q$a^IK9LD%x)eS$0EuW3n*<6yGgx(Ay*z!z$YUFY*fAxbODo!n}zX!StIK3t1elJEVoJ9CsfGDacsq z(HoCrTBXtZt~C-0W7MJ_hwo~Fxo*nW@==qzpMfC@6bcW`*VM1$ngfFdqB-=)t9g{c z;B-`z|e7QKa569tLB~-er6Je9+qtn6>EOYJZXeQF>3KzsoN}X4RTxPqq`4 zLL8y9(F3Rc2jUwL8iKdA?ONG8wX|<#9~czvY#$gB8D$p|HX__1G$bG>EE3gw zQH$OGYYz`EIq)yv2mJs~(Vy;cd#`R~(R(O$KPdblYZtc4HY1JxFLR^TjQ{`u literal 0 HcmV?d00001 diff --git a/static/wheels/weaviate_python_grpc_web-0.0.1.dev0-py3-none-any.whl b/static/wheels/weaviate_python_grpc_web-0.0.1.dev0-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..6ec8dadf508a537a4a12a88d0f4a7c7dd9e9692d GIT binary patch literal 15249 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 literal 0 HcmV?d00001 From 6883a9b396526588b4804cd642d9db22167309bf Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Wed, 10 Jun 2026 12:21:58 +0300 Subject: [PATCH 2/3] Add TS support for Playground --- BROWSER_PLAYGROUND_README.md | 26 +- .../typescript/quickstart.movies.browser.ts | 89 + docs/weaviate/recipes/browser_playground.mdx | 15 +- package.json | 4 +- src/theme/Tabs/index.js | 13 +- src/theme/Tabs/tsRunner.js | 187 + static/playground/weaviate-client.web.js | 22918 ++++++++++++++++ yarn.lock | 34 +- 8 files changed, 23271 insertions(+), 15 deletions(-) create mode 100644 _includes/code/typescript/quickstart.movies.browser.ts create mode 100644 src/theme/Tabs/tsRunner.js create mode 100644 static/playground/weaviate-client.web.js diff --git a/BROWSER_PLAYGROUND_README.md b/BROWSER_PLAYGROUND_README.md index 21bbedbca..8700dcc58 100644 --- a/BROWSER_PLAYGROUND_README.md +++ b/BROWSER_PLAYGROUND_README.md @@ -4,7 +4,7 @@ This document explains how executable code snippets run in the reader's browser ## What It Is -Executable docs snippets run directly in the reader's browser. There is no execution server. Python code runs on Pyodide, which is CPython compiled to WebAssembly. Pyodide is loaded from the jsDelivr CDN, pinned to version 0.29.4. The pin matters because dependencies with native code (pydantic-core, cryptography) only exist as WebAssembly builds inside the Pyodide distribution, so the bundled pydantic version must satisfy the client wheel's pydantic floor. Check the new `pyodide-lock.json` before bumping either side. +Executable docs snippets run directly in the reader's browser. There is no execution server. Python code runs on Pyodide, which is CPython compiled to WebAssembly, and TypeScript code is transpiled in the browser and executed as a native ES module. Pyodide is loaded from the jsDelivr CDN, pinned to version 0.29.4. The pin matters because dependencies with native code (pydantic-core, cryptography) only exist as WebAssembly builds inside the Pyodide distribution, so the bundled pydantic version must satisfy the client wheel's pydantic floor. Check the new `pyodide-lock.json` before bumping either side. ## How It Works @@ -12,9 +12,29 @@ Executable docs snippets run directly in the reader's browser. There is no execu The two wheels must be installed in a single `micropip.install()` call. The grpc-web wheel declares an unpinned dependency on `weaviate-client`, and installing both together lets the local client wheel satisfy that dependency instead of pulling a release from PyPI. +## The TypeScript Client + +TypeScript snippets are handled by `src/theme/Tabs/tsRunner.js`. It loads the TypeScript compiler from jsDelivr (pinned to 5.9.3) on the first Run click, transpiles the snippet, rewrites its `weaviate-client` import to the browser bundle served from `static/playground/weaviate-client.web.js`, and runs the result as a native ES module through a Blob URL. Each run is a fresh module, so unlike Python nothing persists between runs. + +The bundle is built from typescript-client PR #437 (grpc-web transport, browser shims for Node built-ins). To rebuild it: + +```bash +cd ~/dev/typescript-client && git fetch origin pull/437/head && git worktree add /tmp/tsc-437 FETCH_HEAD +cd /tmp/tsc-437 && npm ci && npm run build:web +cp dist/web/index.web.js /static/playground/weaviate-client.web.js +``` + +**Note:** The bundle from `typescript-client` contains bare imports (e.g., `import 'long'`) that browsers cannot resolve. You **must** run the following command in the docs repo to finalize the bundle (this requires `nice-grpc-web` to be installed in the docs repo): + +```bash +yarn build:playground-client +``` + +The bundle's web entry (`connectToCustom`, `connectToWeaviateCloud`) speaks grpc-web on the main host with the default path prefix `/grpc-web`, matching the Python snippet's connection defaults. + ## Reader Credentials -The **Connect** button next to **Run** stores the reader's Weaviate Cloud cluster URL and API key in `localStorage` (`src/theme/Tabs/playgroundCredentials.js`). Before each run the runner injects them into the interpreter as the `WEAVIATE_URL` (normalized to a bare host) and `WEAVIATE_API_KEY` environment variables, and removes them when cleared. Snippets read them with `os.environ.get(...)` and fall back to `localhost` when unset. The values never leave the reader's browser except in the requests the snippet itself makes to their Weaviate instance. +The **Connect** button next to **Run** stores the reader's Weaviate Cloud cluster URL and API key in `localStorage` (`src/theme/Tabs/playgroundCredentials.js`). Before each run the runner injects them as the `WEAVIATE_URL` (normalized to a bare host) and `WEAVIATE_API_KEY` environment variables — `os.environ` for Python, a `process.env` shim for TypeScript — and removes them when cleared. Snippets read them with `os.environ.get(...)` and fall back to `localhost` when unset. The values never leave the reader's browser except in the requests the snippet itself makes to their Weaviate instance. ## The Python Client @@ -42,7 +62,7 @@ Snippets need a Weaviate instance fronted by a grpc-web transcoder such as Envoy - Async client only, the sync client does not work under WebAssembly. - No `batch.stream()` or `batch.experimental()`, bidirectional streaming is not possible over grpc-web. - Java, C#, and Go snippets cannot run in the browser. -- TypeScript support is planned via the grpc-web compatible TS client. +- TypeScript runs each snippet as a fresh module, so no state carries over between runs the way it does for Python. - A run times out after 60 seconds. After a timeout the page keeps working but the old run may still hold the interpreter, so reload the page for a clean session. ## Validating Without a Browser diff --git a/_includes/code/typescript/quickstart.movies.browser.ts b/_includes/code/typescript/quickstart.movies.browser.ts new file mode 100644 index 000000000..f16638acf --- /dev/null +++ b/_includes/code/typescript/quickstart.movies.browser.ts @@ -0,0 +1,89 @@ +// EndToEndExample +import weaviate, { dataType } from "weaviate-client"; + +// Step 1: Connect +// Set your credentials via the Connect button next to Run, or edit these values inline +const wcdHost = (process.env.WEAVIATE_URL || "localhost") + .replace(/^https?:\/\//, "") + .split("/")[0] + .split(":")[0]; +const wcdApiKey = process.env.WEAVIATE_API_KEY || ""; +const isLocal = wcdHost === "localhost"; + +const client = await weaviate.connectToCustom({ + httpHost: wcdHost, + httpPort: isLocal ? 8080 : 443, + httpSecure: !isLocal, + grpcHost: wcdHost, + grpcPort: isLocal ? 8080 : 443, + grpcSecure: !isLocal, + authCredentials: wcdApiKey ? new weaviate.ApiKey(wcdApiKey) : undefined, + skipInitChecks: true, +}); + +// Step 2: Create a collection (deleted first, so the example is safe to re-run) +await client.collections.delete("Movies"); + +const movies = await client.collections.create({ + name: "Movies", + properties: [ + { name: "title", dataType: dataType.TEXT }, + { name: "description", dataType: dataType.TEXT }, + { name: "year", dataType: dataType.INT }, + ], + // highlight-start + vectorizers: weaviate.configure.vectors.text2VecWeaviate({ + // Weaviate Embeddings + baseURL: "https://dev-embedding.labs.weaviate.io", + }), + // highlight-end +}); +console.log(`Created collection: ${movies.name}`); + +// Step 3: Import data, vectorized server-side by Weaviate Embeddings +const data = [ + { title: "The Matrix", description: "A hacker discovers reality is a simulation and joins a rebellion against the machines.", year: 1999 }, + { title: "Inception", description: "A thief who steals secrets through dream-sharing technology is given one final job, planting an idea.", year: 2010 }, + { title: "Interstellar", description: "Explorers travel through a wormhole in space to ensure humanity's survival.", year: 2014 }, + { title: "The Godfather", description: "The aging patriarch of a crime dynasty transfers control to his reluctant son.", year: 1972 }, + { title: "Spirited Away", description: "A young girl wanders into a world of spirits and must work in a bathhouse to free her parents.", year: 2001 }, + { title: "Toy Story", description: "A cowboy doll feels threatened when a new spaceman action figure becomes the favorite toy.", year: 1995 }, + { title: "Jaws", description: "A giant great white shark terrorizes a small beach community.", year: 1975 }, + { title: "La La Land", description: "A jazz pianist and an aspiring actress fall in love while chasing their dreams in Los Angeles.", year: 2016 }, + { title: "Mad Max: Fury Road", description: "In a post-apocalyptic wasteland, a drifter and a rebel warrior flee a tyrant in an armored war rig.", year: 2015 }, + { title: "Finding Nemo", description: "A timid clownfish crosses the ocean to rescue his son, who was captured by a diver.", year: 2003 }, +]; + +// highlight-start +const result = await movies.data.insertMany(data); // Vectorized server-side by Weaviate Embeddings +// highlight-end + +if (result.hasErrors) { + console.log(`Import errors: ${JSON.stringify(result.errors)}`); +} else { + const aggregate = await movies.aggregate.overAll(); + console.log(`Imported ${aggregate.totalCount} movies`); +} + +// Step 4: Semantic search +// The vector index updates in the background after import, so retry briefly +let response; +for (let attempt = 0; attempt < 15; attempt++) { + // highlight-start + response = await movies.query.nearText("a science fiction adventure in space", { + limit: 3, + returnMetadata: ["distance"], + }); + // highlight-end + if (response.objects.length > 0) { + break; + } + await new Promise((resolve) => setTimeout(resolve, 1000)); +} + +for (const obj of response.objects) { + console.log(`${obj.properties.title} (${obj.properties.year}) — distance ${obj.metadata?.distance?.toFixed(3)}`); +} + +await client.close(); // Free up resources +// END EndToEndExample diff --git a/docs/weaviate/recipes/browser_playground.mdx b/docs/weaviate/recipes/browser_playground.mdx index aa80984e9..0304541d5 100644 --- a/docs/weaviate/recipes/browser_playground.mdx +++ b/docs/weaviate/recipes/browser_playground.mdx @@ -12,10 +12,12 @@ import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; import FilteredTextBlock from "@site/src/components/Documentation/FilteredTextBlock"; import PyMoviesCode from "!!raw-loader!/_includes/code/python/quickstart.movies.browser.py"; +import TSMoviesCode from "!!raw-loader!/_includes/code/typescript/quickstart.movies.browser.ts"; # Movies Quickstart in the Browser Playground -This recipe runs a complete Weaviate workflow directly in your browser through WebAssembly (Pyodide), with no execution server involved. +This recipe runs a complete Weaviate workflow directly in your browser, with no execution server involved. +Python runs on WebAssembly (Pyodide) and TypeScript is transpiled and executed natively in the browser, both talking to Weaviate over grpc-web. The snippet connects to your instance, creates a `Movies` collection vectorized by [Weaviate Embeddings](https://docs.weaviate.io/cloud/embeddings) (`text2vec-weaviate`), imports a small movie dataset, and runs a semantic `nearText` search. Use the **Connect** button to store your Weaviate Cloud cluster URL and API key — they stay in your browser and are available to the snippet as the `WEAVIATE_URL` and `WEAVIATE_API_KEY` environment variables, or edit the connection values directly with the **Edit** button. @@ -34,6 +36,17 @@ The example deletes and recreates the `Movies` collection, so it is safe to run editable={true} /> + + + :::note Dev embedding endpoint diff --git a/package.json b/package.json index e30d145a9..e60af06ff 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,8 @@ "serve": "docusaurus serve", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", - "test:ts": "tsx" + "test:ts": "tsx", + "build:playground-client": "esbuild static/playground/weaviate-client.web.js --bundle --format=esm --outfile=static/playground/weaviate-client.web.js --define:process.env.NODE_ENV='\"production\"' --allow-overwrite" }, "dependencies": { "@docusaurus/core": "^3.9.2", @@ -33,6 +34,7 @@ "csv-parser": "^3.0.0", "docusaurus-plugin-sass": "^0.2.6", "dotenv": "^17.2.3", + "nice-grpc-web": "^3.3.10", "prism-react-renderer": "^2.3.0", "react": "^19.0.0", "react-dom": "^19.0.0", diff --git a/src/theme/Tabs/index.js b/src/theme/Tabs/index.js index 9d2e2d4ba..9b16bff2d 100644 --- a/src/theme/Tabs/index.js +++ b/src/theme/Tabs/index.js @@ -17,6 +17,7 @@ import { DOC_SYSTEMS } from "../../components/Documentation/FilteredTextBlock"; import Tooltip from "/src/components/Tooltip"; import Link from "@docusaurus/Link"; import { runPythonCode } from "./pyodideRunner"; +import { runTypeScriptCode } from "./tsRunner"; import { CREDENTIALS_CHANGE_EVENT, loadCredentials, @@ -77,10 +78,10 @@ const LANGUAGE_CONFIG = { }; // Configuration for in-browser code execution. -// "ts" gets added once the TypeScript client gains browser grpc-web support. -// Java, C# and Go cannot run in the browser. +// Python runs on Pyodide, TypeScript via in-browser transpilation against the +// grpc-web client bundle. Java, C# and Go cannot run in the browser. const BROWSER_EXECUTION_CONFIG = { - SUPPORTED_LANGUAGES: ["py"], + SUPPORTED_LANGUAGES: ["py", "ts"], }; // Predefined docs URL overrides by product name @@ -219,7 +220,8 @@ const extractCodeFromChild = (child) => { return null; }; -// In-browser code execution component (Python via Pyodide) +// In-browser code execution component (Python via Pyodide, TypeScript via +// in-browser transpilation) const CodeExecutor = ({ code, language, onExecute, isExecuting }) => { const [output, setOutput] = useState(null); const [error, setError] = useState(null); @@ -237,9 +239,10 @@ const CodeExecutor = ({ code, language, onExecute, isExecuting }) => { setError(null); setStatusText("Running code…"); + const runCode = language === "ts" ? runTypeScriptCode : runPythonCode; try { // Never rejects: resolves to { output, error } - const result = await runPythonCode(code, { onStatus: setStatusText }); + const result = await runCode(code, { onStatus: setStatusText }); setOutput(result.output); setError(result.error); } finally { diff --git a/src/theme/Tabs/tsRunner.js b/src/theme/Tabs/tsRunner.js new file mode 100644 index 000000000..400aab95b --- /dev/null +++ b/src/theme/Tabs/tsRunner.js @@ -0,0 +1,187 @@ +// src/theme/Tabs/tsRunner.js +// In-browser TypeScript execution. +// +// Snippets are transpiled with the TypeScript compiler (loaded from a CDN on +// first use), their `weaviate-client` import is rewritten to the browser +// bundle served from /playground/ (built from typescript-client PR #437, +// gRPC over grpc-web), and the result runs as a native ES module via a Blob +// URL. Each run is a fresh module — unlike the Python runner, no state +// persists between runs. +// +// This module is SSR-safe: it never touches window/document at the top level +// because Docusaurus server-renders pages. + +import { loadCredentials } from "./playgroundCredentials"; + +const TYPESCRIPT_VERSION = "5.9.3"; +const TYPESCRIPT_COMPILER_URL = `https://cdn.jsdelivr.net/npm/typescript@${TYPESCRIPT_VERSION}/lib/typescript.min.js`; + +// Browser ESM bundle of the TypeScript client, built from +// typescript-client PR #437 (`npm run build:web` → dist/web/index.web.js). +const CLIENT_BUNDLE_PATH = "/playground/weaviate-client.web.js"; + +// Same deadline rationale as pyodideRunner.js: snippets are editable and can +// hang forever, so orphan the run and free the queue after this long. +const RUN_TIMEOUT_MS = 60000; + +let compilerPromise = null; +let runChain = Promise.resolve(); + +// Monotonic run id so an orphaned (timed-out) run cannot restore the console +// out from under the run that now owns it. +let currentRunId = 0; + +const noop = () => {}; + +// Injects the TypeScript compiler script, resolving once window.ts exists. +function loadTypeScriptCompiler() { + if (!compilerPromise) { + compilerPromise = new Promise((resolve, reject) => { + if (window.ts) { + resolve(window.ts); + return; + } + const script = document.createElement("script"); + script.src = TYPESCRIPT_COMPILER_URL; + script.onload = () => resolve(window.ts); + script.onerror = () => { + // Reset so a later Run click can retry + compilerPromise = null; + reject(new Error(`Failed to load the TypeScript compiler from ${script.src}`)); + }; + document.head.appendChild(script); + }); + } + return compilerPromise; +} + +function transpile(ts, code) { + return ts.transpileModule(code, { + compilerOptions: { + module: ts.ModuleKind.ESNext, + target: ts.ScriptTarget.ES2022, + }, + }).outputText; +} + +// Maps the snippet's `from "weaviate-client"` to the served browser bundle. +function rewriteClientImport(jsCode) { + const bundleUrl = new URL(CLIENT_BUNDLE_PATH, window.location.origin).href; + return jsCode.replace(/from\s*(['"])weaviate-client\1/g, `from "${bundleUrl}"`); +} + +// Browsers have no process.env — snippets read the Connect button's +// credentials through this shim, mirroring the Node convention. +function applyCredentialsEnv() { + const { url, apiKey } = loadCredentials(); + const proc = (globalThis.process = globalThis.process || {}); + proc.env = proc.env || {}; + if (url) { + proc.env.WEAVIATE_URL = url; + } else { + delete proc.env.WEAVIATE_URL; + } + if (apiKey) { + proc.env.WEAVIATE_API_KEY = apiKey; + } else { + delete proc.env.WEAVIATE_API_KEY; + } +} + +function formatConsoleArg(arg) { + if (typeof arg === "string") return arg; + if (arg instanceof Error) return arg.message; + try { + return JSON.stringify(arg); + } catch { + return String(arg); + } +} + +const CAPTURED_METHODS = ["log", "info", "warn", "error", "debug"]; + +async function executeSnippet(code, onStatus) { + let ts; + try { + onStatus("Loading the TypeScript compiler…"); + ts = await loadTypeScriptCompiler(); + } catch (err) { + return { output: "", error: err && err.message ? err.message : String(err) }; + } + + onStatus("Running code…"); + + let jsCode; + try { + jsCode = rewriteClientImport(transpile(ts, code)); + } catch (err) { + return { output: "", error: err && err.message ? err.message : String(err) }; + } + + applyCredentialsEnv(); + + const myRunId = ++currentRunId; + const outputLines = []; + const original = {}; + for (const method of CAPTURED_METHODS) { + original[method] = console[method]; + console[method] = (...args) => { + if (myRunId === currentRunId) { + outputLines.push(args.map(formatConsoleArg).join(" ")); + } + original[method](...args); + }; + } + + const blobUrl = URL.createObjectURL(new Blob([jsCode], { type: "text/javascript" })); + try { + // webpackIgnore keeps webpack from rewriting this into its chunk loader — + // it must stay a native dynamic import of the Blob module. + await import(/* webpackIgnore: true */ blobUrl); + return { output: outputLines.join("\n"), error: null }; + } catch (err) { + return { + output: outputLines.join("\n"), + error: err && err.message ? err.message : String(err), + }; + } finally { + URL.revokeObjectURL(blobUrl); + // Restore the console — unless a newer run owns it by now (this run + // timed out and was orphaned). + if (myRunId === currentRunId) { + for (const method of CAPTURED_METHODS) { + console[method] = original[method]; + } + } + } +} + +// Runs TypeScript code in the browser. Runs are serialized through an +// internal promise chain. Resolves to { output: string, error: string|null } +// and never rejects. +export function runTypeScriptCode(code, { onStatus = noop } = {}) { + const run = runChain + .then(() => executeSnippet(code, onStatus)) + .catch((err) => ({ + output: "", + error: err && err.message ? err.message : String(err), + })); + runChain = run; + + let timer; + const timeout = new Promise((resolve) => { + timer = setTimeout(() => { + if (runChain === run) { + runChain = Promise.resolve(); + } + resolve({ + output: "", + error: `Execution timed out after ${ + RUN_TIMEOUT_MS / 1000 + } seconds. Reload the page to reset the session.`, + }); + }, RUN_TIMEOUT_MS); + }); + + return Promise.race([run.finally(() => clearTimeout(timer)), timeout]); +} diff --git a/static/playground/weaviate-client.web.js b/static/playground/weaviate-client.web.js new file mode 100644 index 000000000..a75e64069 --- /dev/null +++ b/static/playground/weaviate-client.web.js @@ -0,0 +1,22918 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __esm = (fn2, res) => function __init() { + return fn2 && (res = (0, fn2[__getOwnPropNames(fn2)[0]])(fn2 = 0)), res; +}; +var __commonJS = (cb, mod2) => function __require() { + return mod2 || (0, cb[__getOwnPropNames(cb)[0]])((mod2 = { exports: {} }).exports, mod2), mod2.exports; +}; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toESM = (mod2, isNodeMode, target) => (target = mod2 != null ? __create(__getProtoOf(mod2)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod2 || !mod2.__esModule ? __defProp(target, "default", { value: mod2, enumerable: true }) : target, + mod2 +)); +var __toCommonJS = (mod2) => __copyProps(__defProp({}, "__esModule", { value: true }), mod2); + +// node_modules/abort-controller-x/lib/AbortError.js +var require_AbortError = __commonJS({ + "node_modules/abort-controller-x/lib/AbortError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.catchAbortError = exports.rethrowAbortError = exports.throwIfAborted = exports.isAbortError = exports.AbortError = void 0; + var AbortError = class { + constructor(message = "The operation has been aborted", captureStackTrace = true) { + this.message = message; + this.name = "AbortError"; + this.stack = ""; + if (captureStackTrace) { + Error.captureStackTrace?.(this, this.constructor); + } + Object.setPrototypeOf(this, Error.prototype); + } + static [Symbol.hasInstance](instance) { + return isAbortError2(instance); + } + }; + exports.AbortError = AbortError; + function isAbortError2(error) { + return typeof error === "object" && error !== null && error.name === "AbortError"; + } + exports.isAbortError = isAbortError2; + function throwIfAborted(signal) { + if (signal.aborted) { + throw new AbortError(); + } + } + exports.throwIfAborted = throwIfAborted; + function rethrowAbortError(error) { + if (isAbortError2(error)) { + throw error; + } + return; + } + exports.rethrowAbortError = rethrowAbortError; + function catchAbortError(error) { + if (isAbortError2(error)) { + return; + } + throw error; + } + exports.catchAbortError = catchAbortError; + } +}); + +// node_modules/abort-controller-x/lib/execute.js +var require_execute = __commonJS({ + "node_modules/abort-controller-x/lib/execute.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.execute = void 0; + var AbortError_1 = require_AbortError(); + function execute(signal, executor) { + return new Promise((resolve, reject) => { + if (signal.aborted) { + reject(signal.reason ?? new AbortError_1.AbortError()); + return; + } + let removeAbortListener; + let finished = false; + function finish() { + if (!finished) { + finished = true; + if (removeAbortListener != null) { + removeAbortListener(); + } + } + } + const callback = executor((value) => { + resolve(value); + finish(); + }, (reason) => { + reject(reason); + finish(); + }); + if (!finished) { + const abortListener = () => { + const callbackResult = callback(signal.reason); + if (callbackResult == null) { + reject(signal.reason ?? new AbortError_1.AbortError()); + } else { + callbackResult.then(() => { + reject(signal.reason ?? new AbortError_1.AbortError()); + }, (reason) => { + reject(reason); + }); + } + finish(); + }; + signal.addEventListener("abort", abortListener); + removeAbortListener = () => { + signal.removeEventListener("abort", abortListener); + }; + } + }); + } + exports.execute = execute; + } +}); + +// node_modules/abort-controller-x/lib/abortable.js +var require_abortable = __commonJS({ + "node_modules/abort-controller-x/lib/abortable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.abortable = void 0; + var execute_1 = require_execute(); + function abortable(signal, promise) { + if (signal.aborted) { + const noop = () => { + }; + promise.then(noop, noop); + } + return (0, execute_1.execute)(signal, (resolve, reject) => { + promise.then(resolve, reject); + return () => { + }; + }); + } + exports.abortable = abortable; + } +}); + +// node_modules/abort-controller-x/lib/delay.js +var require_delay = __commonJS({ + "node_modules/abort-controller-x/lib/delay.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.delay = void 0; + var execute_1 = require_execute(); + function delay(signal, dueTime) { + return (0, execute_1.execute)(signal, (resolve) => { + const ms2 = typeof dueTime === "number" ? dueTime : dueTime.getTime() - Date.now(); + const timer = setTimeout(resolve, ms2); + return () => { + clearTimeout(timer); + }; + }); + } + exports.delay = delay; + } +}); + +// node_modules/abort-controller-x/lib/forever.js +var require_forever = __commonJS({ + "node_modules/abort-controller-x/lib/forever.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.forever = void 0; + var execute_1 = require_execute(); + function forever(signal) { + return (0, execute_1.execute)(signal, () => () => { + }); + } + exports.forever = forever; + } +}); + +// node_modules/abort-controller-x/lib/waitForEvent.js +var require_waitForEvent = __commonJS({ + "node_modules/abort-controller-x/lib/waitForEvent.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.waitForEvent = void 0; + var execute_1 = require_execute(); + function waitForEvent(signal, target, eventName, options) { + return (0, execute_1.execute)(signal, (resolve) => { + let unlisten; + let finished = false; + const handler = (...args) => { + resolve(args.length > 1 ? args : args[0]); + finished = true; + if (unlisten != null) { + unlisten(); + } + }; + unlisten = listen(target, eventName, handler, options); + if (finished) { + unlisten(); + } + return () => { + finished = true; + if (unlisten != null) { + unlisten(); + } + }; + }); + } + exports.waitForEvent = waitForEvent; + function listen(target, eventName, handler, options) { + if (isEventTarget(target)) { + target.addEventListener(eventName, handler, options); + return () => target.removeEventListener(eventName, handler, options); + } + if (isJQueryStyleEventEmitter(target)) { + target.on(eventName, handler); + return () => target.off(eventName, handler); + } + if (isNodeStyleEventEmitter(target)) { + target.addListener(eventName, handler); + return () => target.removeListener(eventName, handler); + } + throw new Error("Invalid event target"); + } + function isNodeStyleEventEmitter(sourceObj) { + return isFunction(sourceObj.addListener) && isFunction(sourceObj.removeListener); + } + function isJQueryStyleEventEmitter(sourceObj) { + return isFunction(sourceObj.on) && isFunction(sourceObj.off); + } + function isEventTarget(sourceObj) { + return isFunction(sourceObj.addEventListener) && isFunction(sourceObj.removeEventListener); + } + var isFunction = (obj) => typeof obj === "function"; + } +}); + +// node_modules/abort-controller-x/lib/all.js +var require_all = __commonJS({ + "node_modules/abort-controller-x/lib/all.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.all = void 0; + var AbortError_1 = require_AbortError(); + function all(signal, executor) { + return new Promise((resolve, reject) => { + if (signal.aborted) { + reject(signal.reason ?? new AbortError_1.AbortError()); + return; + } + const innerAbortController = new AbortController(); + const promises = executor(innerAbortController.signal); + if (promises.length === 0) { + resolve([]); + return; + } + const abortListener = () => { + innerAbortController.abort(signal.reason ?? new AbortError_1.AbortError()); + }; + signal.addEventListener("abort", abortListener); + let rejection; + const results = new Array(promises.length); + let settledCount = 0; + function settled() { + settledCount += 1; + if (settledCount === promises.length) { + signal.removeEventListener("abort", abortListener); + if (rejection != null) { + reject(rejection.reason); + } else { + resolve(results); + } + } + } + for (const [i, promise] of promises.entries()) { + promise.then((value) => { + results[i] = value; + settled(); + }, (reason) => { + innerAbortController.abort(new AbortError_1.AbortError("One of the promises passed to all() rejected", false)); + if (rejection == null || !(0, AbortError_1.isAbortError)(reason) && (0, AbortError_1.isAbortError)(rejection.reason)) { + rejection = { reason }; + } + settled(); + }); + } + }); + } + exports.all = all; + } +}); + +// node_modules/abort-controller-x/lib/race.js +var require_race = __commonJS({ + "node_modules/abort-controller-x/lib/race.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.race = void 0; + var AbortError_1 = require_AbortError(); + function race(signal, executor) { + return new Promise((resolve, reject) => { + if (signal.aborted) { + reject(signal.reason ?? new AbortError_1.AbortError()); + return; + } + const innerAbortController = new AbortController(); + const promises = executor(innerAbortController.signal); + const abortListener = () => { + innerAbortController.abort(signal.reason ?? new AbortError_1.AbortError()); + }; + signal.addEventListener("abort", abortListener); + let settledCount = 0; + function settled(result2) { + innerAbortController.abort(new AbortError_1.AbortError("One of the promises passed to race() settled", false)); + settledCount += 1; + if (settledCount === promises.length) { + signal.removeEventListener("abort", abortListener); + if (result2.status === "fulfilled") { + resolve(result2.value); + } else { + reject(result2.reason); + } + } + } + let result; + for (const promise of promises) { + promise.then((value) => { + if (result == null) { + result = { status: "fulfilled", value }; + } + settled(result); + }, (reason) => { + if (result == null || !(0, AbortError_1.isAbortError)(reason) && (result.status === "fulfilled" || (0, AbortError_1.isAbortError)(result.reason))) { + result = { status: "rejected", reason }; + } + settled(result); + }); + } + }); + } + exports.race = race; + } +}); + +// node_modules/abort-controller-x/lib/retry.js +var require_retry = __commonJS({ + "node_modules/abort-controller-x/lib/retry.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.retry = void 0; + var delay_1 = require_delay(); + var AbortError_1 = require_AbortError(); + async function retry(signal, fn2, options = {}) { + const { baseMs = 1e3, maxDelayMs = 3e4, onError, maxAttempts = Infinity } = options; + let attempt = 0; + const reset = () => { + attempt = -1; + }; + while (true) { + try { + return await fn2(signal, attempt, reset); + } catch (error) { + (0, AbortError_1.rethrowAbortError)(error); + if (attempt >= maxAttempts) { + throw error; + } + let delayMs; + if (attempt === -1) { + delayMs = 0; + } else { + const backoff = Math.min(maxDelayMs, Math.pow(2, attempt) * baseMs); + delayMs = Math.round(backoff * (1 + Math.random()) / 2); + } + if (onError) { + onError(error, attempt, delayMs); + } + if (delayMs !== 0) { + await (0, delay_1.delay)(signal, delayMs); + } + attempt += 1; + } + } + } + exports.retry = retry; + } +}); + +// node_modules/abort-controller-x/lib/spawn.js +var require_spawn = __commonJS({ + "node_modules/abort-controller-x/lib/spawn.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.spawn = void 0; + var AbortError_1 = require_AbortError(); + function spawn(signal, fn2) { + if (signal.aborted) { + return Promise.reject(new AbortError_1.AbortError()); + } + const deferredFunctions = []; + const spawnAbortController = new AbortController(); + const spawnSignal = spawnAbortController.signal; + const abortListener = () => { + spawnAbortController.abort(signal.reason ?? new AbortError_1.AbortError()); + }; + signal.addEventListener("abort", abortListener); + const removeAbortListener = () => { + signal.removeEventListener("abort", abortListener); + }; + const tasks = /* @__PURE__ */ new Set(); + const abortTasks = () => { + for (const task of tasks) { + task.abort(); + } + }; + spawnSignal.addEventListener("abort", abortTasks); + const removeSpawnAbortListener = () => { + spawnSignal.removeEventListener("abort", abortTasks); + }; + let promise = new Promise((resolve, reject) => { + let result; + let failure; + fork((signal2) => fn2(signal2, { + defer(fn3) { + deferredFunctions.push(fn3); + }, + fork + })).join().then((value) => { + spawnAbortController.abort(new AbortError_1.AbortError("spawn() function finished", false)); + result = { value }; + }, (error) => { + spawnAbortController.abort((0, AbortError_1.isAbortError)(error) ? error : new AbortError_1.AbortError("spawn() function threw", false)); + if (!(0, AbortError_1.isAbortError)(error) || failure == null) { + failure = { error }; + } + }); + function fork(forkFn) { + if (spawnSignal.aborted) { + return { + abort() { + }, + async join() { + throw new AbortError_1.AbortError(); + } + }; + } + const taskAbortController = new AbortController(); + const taskSignal = taskAbortController.signal; + const taskPromise = forkFn(taskSignal); + const task = { + abort() { + taskAbortController.abort(); + }, + join: () => taskPromise + }; + tasks.add(task); + taskPromise.catch(AbortError_1.catchAbortError).catch((error) => { + failure = { error }; + spawnAbortController.abort(new AbortError_1.AbortError("A function forked by spawn() threw", false)); + }).finally(() => { + tasks.delete(task); + if (tasks.size === 0) { + if (failure != null) { + reject(failure.error); + } else { + resolve(result.value); + } + } + }); + return task; + } + }); + promise = promise.finally(() => { + removeAbortListener(); + removeSpawnAbortListener(); + let deferPromise = Promise.resolve(); + for (let i = deferredFunctions.length - 1; i >= 0; i--) { + deferPromise = deferPromise.finally(deferredFunctions[i]); + } + return deferPromise; + }); + return promise; + } + exports.spawn = spawn; + } +}); + +// node_modules/abort-controller-x/lib/run.js +var require_run = __commonJS({ + "node_modules/abort-controller-x/lib/run.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.run = void 0; + var AbortError_1 = require_AbortError(); + function run(fn2) { + const abortController = new AbortController(); + const promise = fn2(abortController.signal).catch(AbortError_1.catchAbortError); + return () => { + abortController.abort(); + return promise; + }; + } + exports.run = run; + } +}); + +// node_modules/abort-controller-x/lib/proactiveRetry.js +var require_proactiveRetry = __commonJS({ + "node_modules/abort-controller-x/lib/proactiveRetry.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.proactiveRetry = void 0; + var AbortError_1 = require_AbortError(); + var delay_1 = require_delay(); + var execute_1 = require_execute(); + function proactiveRetry(signal, fn2, options = {}) { + const { baseMs = 1e3, onError, maxAttempts = Infinity } = options; + return (0, execute_1.execute)(signal, (resolve, reject) => { + const innerAbortController = new AbortController(); + let attemptsExhausted = false; + const promises = /* @__PURE__ */ new Map(); + function handleFulfilled(value) { + innerAbortController.abort(new AbortError_1.AbortError("One of the proactiveRetry() attempts fulfilled", false)); + promises.clear(); + resolve(value); + } + function handleRejected(err, attempt) { + promises.delete(attempt); + if (attemptsExhausted && promises.size === 0) { + reject(err); + return; + } + if ((0, AbortError_1.isAbortError)(err)) { + return; + } + if (onError) { + try { + onError(err, attempt); + } catch (err2) { + innerAbortController.abort(new AbortError_1.AbortError("Error was thrown from proactiveRetry() onError callback", false)); + promises.clear(); + reject(err2); + } + } + } + async function makeAttempts(signal2) { + for (let attempt = 0; ; attempt++) { + const promise = fn2(signal2, attempt); + promises.set(attempt, promise); + promise.then(handleFulfilled, (err) => handleRejected(err, attempt)); + if (attempt + 1 >= maxAttempts) { + break; + } + const backoff = Math.pow(2, attempt) * baseMs; + const delayMs = Math.round(backoff * (1 + Math.random()) / 2); + await (0, delay_1.delay)(signal2, delayMs); + } + attemptsExhausted = true; + } + makeAttempts(innerAbortController.signal).catch(AbortError_1.catchAbortError); + return (reason) => { + innerAbortController.abort(reason ?? new AbortError_1.AbortError()); + }; + }); + } + exports.proactiveRetry = proactiveRetry; + } +}); + +// node_modules/abort-controller-x/lib/index.js +var require_lib = __commonJS({ + "node_modules/abort-controller-x/lib/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m2, k2, k22) { + if (k22 === void 0) k22 = k2; + var desc = Object.getOwnPropertyDescriptor(m2, k2); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m2[k2]; + } }; + } + Object.defineProperty(o, k22, desc); + } : function(o, m2, k2, k22) { + if (k22 === void 0) k22 = k2; + o[k22] = m2[k2]; + }); + var __exportStar = exports && exports.__exportStar || function(m2, exports2) { + for (var p2 in m2) if (p2 !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p2)) __createBinding(exports2, m2, p2); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + __exportStar(require_abortable(), exports); + __exportStar(require_AbortError(), exports); + __exportStar(require_delay(), exports); + __exportStar(require_execute(), exports); + __exportStar(require_forever(), exports); + __exportStar(require_waitForEvent(), exports); + __exportStar(require_all(), exports); + __exportStar(require_race(), exports); + __exportStar(require_retry(), exports); + __exportStar(require_spawn(), exports); + __exportStar(require_run(), exports); + __exportStar(require_proactiveRetry(), exports); + } +}); + +// node_modules/@datastructures-js/deque/src/deque.js +var require_deque = __commonJS({ + "node_modules/@datastructures-js/deque/src/deque.js"(exports) { + var Deque2 = class _Deque { + /** + * Creates a deque + * @param {array} [elements] + */ + constructor(elements) { + this._backElements = Array.isArray(elements) ? elements : []; + this._frontElements = []; + this._backOffset = 0; + this._frontOffset = 0; + } + /** + * Adds an element at the front of the queue + * @public + * @param {number|string|object} element + */ + pushFront(element) { + this._frontElements.push(element); + return this; + } + /** + * Adds an element at the back of the queue + * @public + * @param {number|string|object} element + */ + pushBack(element) { + this._backElements.push(element); + return this; + } + /** + * Dequeues the front element in the queue + * @public + * @returns {number|string|object} + */ + popFront() { + if (this.size() === 0) { + return null; + } + if (this._frontElements.length > 0) { + const front2 = this._frontElements.pop(); + if (this._frontOffset >= this._frontElements.length) { + this._frontElements = this._frontElements.slice(this._frontOffset); + this._frontOffset = 0; + } + return front2; + } + const front = this.front(); + this._backOffset += 1; + if (this._backOffset * 2 < this._backElements.length) { + return front; + } + this._backElements = this._backElements.slice(this._backOffset); + this._backOffset = 0; + return front; + } + /** + * Dequeues the back element of the queue + * @public + * @returns {number|string|object} + */ + popBack() { + if (this.size() === 0) { + return null; + } + if (this._backElements.length > 0) { + const back2 = this._backElements.pop(); + if (this._backOffset >= this._backElements.length) { + this._backElements = this._backElements.slice(this._backOffset); + this._backOffset = 0; + } + return back2; + } + const back = this.back(); + this._frontOffset += 1; + if (this._frontOffset * 2 < this._frontElements.length) { + return back; + } + this._frontElements = this._frontElements.slice(this._frontOffset); + this._frontOffset = 0; + return back; + } + /** + * Returns the front element of the queue + * @public + * @returns {number|string|object} + */ + front() { + if (this.size() === 0) { + return null; + } + if (this._frontElements.length > 0) { + return this._frontElements[this._frontElements.length - 1]; + } + return this._backElements[this._backOffset]; + } + /** + * Returns the back element of the queue + * @public + * @returns {number|string|object} + */ + back() { + if (this.size() === 0) { + return null; + } + if (this._backElements.length > 0) { + return this._backElements[this._backElements.length - 1]; + } + return this._frontElements[this._frontOffset]; + } + /** + * Returns the number of elements in the deque + * @public + * @returns {number} + */ + size() { + const frontSize = this._frontElements.length - this._frontOffset; + const backSize = this._backElements.length - this._backOffset; + return frontSize + backSize; + } + /** + * Checks if the queue is empty + * @public + * @returns {boolean} + */ + isEmpty() { + return this.size() === 0; + } + /** + * Returns the remaining elements in the queue as an array + * @public + * @returns {array} + */ + toArray() { + const backElements = this._backElements.slice(this._backOffset); + const frontElements = this._frontElements.slice(this._frontOffset); + return frontElements.reverse().concat(backElements); + } + /** + * Clears the queue + * @public + */ + clear() { + this._backElements = []; + this._frontElements = []; + this._backOffset = 0; + this._frontOffset = 0; + } + /** + * Creates a shallow copy of the queue + * @public + * @return {Deque} + */ + clone() { + return new _Deque(this.toArray()); + } + /** + * Creates a deque from an existing array + * @public + * @static + * @param {array} elements + * @return {Deque} + */ + static fromArray(elements) { + return new _Deque(elements); + } + }; + exports.Deque = Deque2; + } +}); + +// node_modules/@datastructures-js/deque/index.js +var require_deque2 = __commonJS({ + "node_modules/@datastructures-js/deque/index.js"(exports) { + var { Deque: Deque2 } = require_deque(); + exports.Deque = Deque2; + } +}); + +// node_modules/cross-fetch/dist/browser-ponyfill.js +var require_browser_ponyfill = __commonJS({ + "node_modules/cross-fetch/dist/browser-ponyfill.js"(exports, module2) { + var __global__ = typeof globalThis !== "undefined" && globalThis || typeof self !== "undefined" && self || typeof global !== "undefined" && global; + var __globalThis__ = function() { + function F2() { + this.fetch = false; + this.DOMException = __global__.DOMException; + } + F2.prototype = __global__; + return new F2(); + }(); + (function(globalThis2) { + var irrelevant = function(exports2) { + var g2 = typeof globalThis2 !== "undefined" && globalThis2 || typeof self !== "undefined" && self || // eslint-disable-next-line no-undef + typeof global !== "undefined" && global || {}; + var support = { + searchParams: "URLSearchParams" in g2, + iterable: "Symbol" in g2 && "iterator" in Symbol, + blob: "FileReader" in g2 && "Blob" in g2 && function() { + try { + new Blob(); + return true; + } catch (e24) { + return false; + } + }(), + formData: "FormData" in g2, + arrayBuffer: "ArrayBuffer" in g2 + }; + function isDataView(obj) { + return obj && DataView.prototype.isPrototypeOf(obj); + } + if (support.arrayBuffer) { + var viewClasses = [ + "[object Int8Array]", + "[object Uint8Array]", + "[object Uint8ClampedArray]", + "[object Int16Array]", + "[object Uint16Array]", + "[object Int32Array]", + "[object Uint32Array]", + "[object Float32Array]", + "[object Float64Array]" + ]; + var isArrayBufferView = ArrayBuffer.isView || function(obj) { + return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1; + }; + } + function normalizeName(name) { + if (typeof name !== "string") { + name = String(name); + } + if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === "") { + throw new TypeError('Invalid character in header field name: "' + name + '"'); + } + return name.toLowerCase(); + } + function normalizeValue(value) { + if (typeof value !== "string") { + value = String(value); + } + return value; + } + function iteratorFor(items) { + var iterator = { + next: function() { + var value = items.shift(); + return { done: value === void 0, value }; + } + }; + if (support.iterable) { + iterator[Symbol.iterator] = function() { + return iterator; + }; + } + return iterator; + } + function Headers3(headers) { + this.map = {}; + if (headers instanceof Headers3) { + headers.forEach(function(value, name) { + this.append(name, value); + }, this); + } else if (Array.isArray(headers)) { + headers.forEach(function(header) { + if (header.length != 2) { + throw new TypeError("Headers constructor: expected name/value pair to be length 2, found" + header.length); + } + this.append(header[0], header[1]); + }, this); + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function(name) { + this.append(name, headers[name]); + }, this); + } + } + Headers3.prototype.append = function(name, value) { + name = normalizeName(name); + value = normalizeValue(value); + var oldValue = this.map[name]; + this.map[name] = oldValue ? oldValue + ", " + value : value; + }; + Headers3.prototype["delete"] = function(name) { + delete this.map[normalizeName(name)]; + }; + Headers3.prototype.get = function(name) { + name = normalizeName(name); + return this.has(name) ? this.map[name] : null; + }; + Headers3.prototype.has = function(name) { + return this.map.hasOwnProperty(normalizeName(name)); + }; + Headers3.prototype.set = function(name, value) { + this.map[normalizeName(name)] = normalizeValue(value); + }; + Headers3.prototype.forEach = function(callback, thisArg) { + for (var name in this.map) { + if (this.map.hasOwnProperty(name)) { + callback.call(thisArg, this.map[name], name, this); + } + } + }; + Headers3.prototype.keys = function() { + var items = []; + this.forEach(function(value, name) { + items.push(name); + }); + return iteratorFor(items); + }; + Headers3.prototype.values = function() { + var items = []; + this.forEach(function(value) { + items.push(value); + }); + return iteratorFor(items); + }; + Headers3.prototype.entries = function() { + var items = []; + this.forEach(function(value, name) { + items.push([name, value]); + }); + return iteratorFor(items); + }; + if (support.iterable) { + Headers3.prototype[Symbol.iterator] = Headers3.prototype.entries; + } + function consumed(body) { + if (body._noBody) return; + if (body.bodyUsed) { + return Promise.reject(new TypeError("Already read")); + } + body.bodyUsed = true; + } + function fileReaderReady(reader) { + return new Promise(function(resolve, reject) { + reader.onload = function() { + resolve(reader.result); + }; + reader.onerror = function() { + reject(reader.error); + }; + }); + } + function readBlobAsArrayBuffer(blob) { + var reader = new FileReader(); + var promise = fileReaderReady(reader); + reader.readAsArrayBuffer(blob); + return promise; + } + function readBlobAsText(blob) { + var reader = new FileReader(); + var promise = fileReaderReady(reader); + var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type); + var encoding = match ? match[1] : "utf-8"; + reader.readAsText(blob, encoding); + return promise; + } + function readArrayBufferAsText(buf) { + var view = new Uint8Array(buf); + var chars = new Array(view.length); + for (var i = 0; i < view.length; i++) { + chars[i] = String.fromCharCode(view[i]); + } + return chars.join(""); + } + function bufferClone(buf) { + if (buf.slice) { + return buf.slice(0); + } else { + var view = new Uint8Array(buf.byteLength); + view.set(new Uint8Array(buf)); + return view.buffer; + } + } + function Body() { + this.bodyUsed = false; + this._initBody = function(body) { + this.bodyUsed = this.bodyUsed; + this._bodyInit = body; + if (!body) { + this._noBody = true; + this._bodyText = ""; + } else if (typeof body === "string") { + this._bodyText = body; + } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { + this._bodyBlob = body; + } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { + this._bodyFormData = body; + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this._bodyText = body.toString(); + } else if (support.arrayBuffer && support.blob && isDataView(body)) { + this._bodyArrayBuffer = bufferClone(body.buffer); + this._bodyInit = new Blob([this._bodyArrayBuffer]); + } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { + this._bodyArrayBuffer = bufferClone(body); + } else { + this._bodyText = body = Object.prototype.toString.call(body); + } + if (!this.headers.get("content-type")) { + if (typeof body === "string") { + this.headers.set("content-type", "text/plain;charset=UTF-8"); + } else if (this._bodyBlob && this._bodyBlob.type) { + this.headers.set("content-type", this._bodyBlob.type); + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"); + } + } + }; + if (support.blob) { + this.blob = function() { + var rejected = consumed(this); + if (rejected) { + return rejected; + } + if (this._bodyBlob) { + return Promise.resolve(this._bodyBlob); + } else if (this._bodyArrayBuffer) { + return Promise.resolve(new Blob([this._bodyArrayBuffer])); + } else if (this._bodyFormData) { + throw new Error("could not read FormData body as blob"); + } else { + return Promise.resolve(new Blob([this._bodyText])); + } + }; + } + this.arrayBuffer = function() { + if (this._bodyArrayBuffer) { + var isConsumed = consumed(this); + if (isConsumed) { + return isConsumed; + } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) { + return Promise.resolve( + this._bodyArrayBuffer.buffer.slice( + this._bodyArrayBuffer.byteOffset, + this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength + ) + ); + } else { + return Promise.resolve(this._bodyArrayBuffer); + } + } else if (support.blob) { + return this.blob().then(readBlobAsArrayBuffer); + } else { + throw new Error("could not read as ArrayBuffer"); + } + }; + this.text = function() { + var rejected = consumed(this); + if (rejected) { + return rejected; + } + if (this._bodyBlob) { + return readBlobAsText(this._bodyBlob); + } else if (this._bodyArrayBuffer) { + return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer)); + } else if (this._bodyFormData) { + throw new Error("could not read FormData body as text"); + } else { + return Promise.resolve(this._bodyText); + } + }; + if (support.formData) { + this.formData = function() { + return this.text().then(decode); + }; + } + this.json = function() { + return this.text().then(JSON.parse); + }; + return this; + } + var methods = ["CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE"]; + function normalizeMethod(method) { + var upcased = method.toUpperCase(); + return methods.indexOf(upcased) > -1 ? upcased : method; + } + function Request(input, options) { + if (!(this instanceof Request)) { + throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.'); + } + options = options || {}; + var body = options.body; + if (input instanceof Request) { + if (input.bodyUsed) { + throw new TypeError("Already read"); + } + this.url = input.url; + this.credentials = input.credentials; + if (!options.headers) { + this.headers = new Headers3(input.headers); + } + this.method = input.method; + this.mode = input.mode; + this.signal = input.signal; + if (!body && input._bodyInit != null) { + body = input._bodyInit; + input.bodyUsed = true; + } + } else { + this.url = String(input); + } + this.credentials = options.credentials || this.credentials || "same-origin"; + if (options.headers || !this.headers) { + this.headers = new Headers3(options.headers); + } + this.method = normalizeMethod(options.method || this.method || "GET"); + this.mode = options.mode || this.mode || null; + this.signal = options.signal || this.signal || function() { + if ("AbortController" in g2) { + var ctrl = new AbortController(); + return ctrl.signal; + } + }(); + this.referrer = null; + if ((this.method === "GET" || this.method === "HEAD") && body) { + throw new TypeError("Body not allowed for GET or HEAD requests"); + } + this._initBody(body); + if (this.method === "GET" || this.method === "HEAD") { + if (options.cache === "no-store" || options.cache === "no-cache") { + var reParamSearch = /([?&])_=[^&]*/; + if (reParamSearch.test(this.url)) { + this.url = this.url.replace(reParamSearch, "$1_=" + (/* @__PURE__ */ new Date()).getTime()); + } else { + var reQueryString = /\?/; + this.url += (reQueryString.test(this.url) ? "&" : "?") + "_=" + (/* @__PURE__ */ new Date()).getTime(); + } + } + } + } + Request.prototype.clone = function() { + return new Request(this, { body: this._bodyInit }); + }; + function decode(body) { + var form = new FormData(); + body.trim().split("&").forEach(function(bytes) { + if (bytes) { + var split = bytes.split("="); + var name = split.shift().replace(/\+/g, " "); + var value = split.join("=").replace(/\+/g, " "); + form.append(decodeURIComponent(name), decodeURIComponent(value)); + } + }); + return form; + } + function parseHeaders(rawHeaders) { + var headers = new Headers3(); + var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, " "); + preProcessedHeaders.split("\r").map(function(header) { + return header.indexOf("\n") === 0 ? header.substr(1, header.length) : header; + }).forEach(function(line) { + var parts = line.split(":"); + var key = parts.shift().trim(); + if (key) { + var value = parts.join(":").trim(); + try { + headers.append(key, value); + } catch (error) { + console.warn("Response " + error.message); + } + } + }); + return headers; + } + Body.call(Request.prototype); + function Response(bodyInit, options) { + if (!(this instanceof Response)) { + throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.'); + } + if (!options) { + options = {}; + } + this.type = "default"; + this.status = options.status === void 0 ? 200 : options.status; + if (this.status < 200 || this.status > 599) { + throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599]."); + } + this.ok = this.status >= 200 && this.status < 300; + this.statusText = options.statusText === void 0 ? "" : "" + options.statusText; + this.headers = new Headers3(options.headers); + this.url = options.url || ""; + this._initBody(bodyInit); + } + Body.call(Response.prototype); + Response.prototype.clone = function() { + return new Response(this._bodyInit, { + status: this.status, + statusText: this.statusText, + headers: new Headers3(this.headers), + url: this.url + }); + }; + Response.error = function() { + var response = new Response(null, { status: 200, statusText: "" }); + response.ok = false; + response.status = 0; + response.type = "error"; + return response; + }; + var redirectStatuses = [301, 302, 303, 307, 308]; + Response.redirect = function(url, status) { + if (redirectStatuses.indexOf(status) === -1) { + throw new RangeError("Invalid status code"); + } + return new Response(null, { status, headers: { location: url } }); + }; + exports2.DOMException = g2.DOMException; + try { + new exports2.DOMException(); + } catch (err) { + exports2.DOMException = function(message, name) { + this.message = message; + this.name = name; + var error = Error(message); + this.stack = error.stack; + }; + exports2.DOMException.prototype = Object.create(Error.prototype); + exports2.DOMException.prototype.constructor = exports2.DOMException; + } + function fetch2(input, init) { + return new Promise(function(resolve, reject) { + var request = new Request(input, init); + if (request.signal && request.signal.aborted) { + return reject(new exports2.DOMException("Aborted", "AbortError")); + } + var xhr = new XMLHttpRequest(); + function abortXhr() { + xhr.abort(); + } + xhr.onload = function() { + var options = { + statusText: xhr.statusText, + headers: parseHeaders(xhr.getAllResponseHeaders() || "") + }; + if (request.url.indexOf("file://") === 0 && (xhr.status < 200 || xhr.status > 599)) { + options.status = 200; + } else { + options.status = xhr.status; + } + options.url = "responseURL" in xhr ? xhr.responseURL : options.headers.get("X-Request-URL"); + var body = "response" in xhr ? xhr.response : xhr.responseText; + setTimeout(function() { + resolve(new Response(body, options)); + }, 0); + }; + xhr.onerror = function() { + setTimeout(function() { + reject(new TypeError("Network request failed")); + }, 0); + }; + xhr.ontimeout = function() { + setTimeout(function() { + reject(new TypeError("Network request timed out")); + }, 0); + }; + xhr.onabort = function() { + setTimeout(function() { + reject(new exports2.DOMException("Aborted", "AbortError")); + }, 0); + }; + function fixUrl(url) { + try { + return url === "" && g2.location.href ? g2.location.href : url; + } catch (e24) { + return url; + } + } + xhr.open(request.method, fixUrl(request.url), true); + if (request.credentials === "include") { + xhr.withCredentials = true; + } else if (request.credentials === "omit") { + xhr.withCredentials = false; + } + if ("responseType" in xhr) { + if (support.blob) { + xhr.responseType = "blob"; + } else if (support.arrayBuffer) { + xhr.responseType = "arraybuffer"; + } + } + if (init && typeof init.headers === "object" && !(init.headers instanceof Headers3 || g2.Headers && init.headers instanceof g2.Headers)) { + var names = []; + Object.getOwnPropertyNames(init.headers).forEach(function(name) { + names.push(normalizeName(name)); + xhr.setRequestHeader(name, normalizeValue(init.headers[name])); + }); + request.headers.forEach(function(value, name) { + if (names.indexOf(name) === -1) { + xhr.setRequestHeader(name, value); + } + }); + } else { + request.headers.forEach(function(value, name) { + xhr.setRequestHeader(name, value); + }); + } + if (request.signal) { + request.signal.addEventListener("abort", abortXhr); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + request.signal.removeEventListener("abort", abortXhr); + } + }; + } + xhr.send(typeof request._bodyInit === "undefined" ? null : request._bodyInit); + }); + } + fetch2.polyfill = true; + if (!g2.fetch) { + g2.fetch = fetch2; + g2.Headers = Headers3; + g2.Request = Request; + g2.Response = Response; + } + exports2.Headers = Headers3; + exports2.Request = Request; + exports2.Response = Response; + exports2.fetch = fetch2; + Object.defineProperty(exports2, "__esModule", { value: true }); + return exports2; + }({}); + })(__globalThis__); + __globalThis__.fetch.ponyfill = true; + delete __globalThis__.fetch.polyfill; + var ctx = __global__.fetch ? __global__ : __globalThis__; + exports = ctx.fetch; + exports.default = ctx.fetch; + exports.fetch = ctx.fetch; + exports.Headers = ctx.Headers; + exports.Request = ctx.Request; + exports.Response = ctx.Response; + module2.exports = exports; + } +}); + +// node_modules/nice-grpc-common/lib/Metadata.js +var require_Metadata = __commonJS({ + "node_modules/nice-grpc-common/lib/Metadata.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Metadata = void 0; + exports.Metadata = function Metadata2(init) { + const data = /* @__PURE__ */ new Map(); + const metadata = { + set(key, value) { + key = normalizeKey(key); + if (Array.isArray(value)) { + if (value.length === 0) { + data.delete(key); + } else { + for (const item of value) { + validate2(key, item); + } + data.set(key, key.endsWith("-bin") ? value : [value.join(", ")]); + } + } else { + validate2(key, value); + data.set(key, [value]); + } + return metadata; + }, + append(key, value) { + key = normalizeKey(key); + validate2(key, value); + let values = data.get(key); + if (values == null) { + values = []; + data.set(key, values); + } + values.push(value); + if (!key.endsWith("-bin")) { + data.set(key, [values.join(", ")]); + } + return metadata; + }, + delete(key) { + key = normalizeKey(key); + data.delete(key); + }, + get(key) { + var _a2; + key = normalizeKey(key); + return (_a2 = data.get(key)) === null || _a2 === void 0 ? void 0 : _a2[0]; + }, + getAll(key) { + var _a2; + key = normalizeKey(key); + return (_a2 = data.get(key)) !== null && _a2 !== void 0 ? _a2 : []; + }, + has(key) { + key = normalizeKey(key); + return data.has(key); + }, + [Symbol.iterator]() { + return data[Symbol.iterator](); + } + }; + if (init != null) { + const entries = isIterable(init) ? init : Object.entries(init); + for (const [key, value] of entries) { + metadata.set(key, value); + } + } + return metadata; + }; + function normalizeKey(key) { + return key.toLowerCase(); + } + function validate2(key, value) { + if (!/^[0-9a-z_.-]+$/.test(key)) { + throw new Error(`Metadata key '${key}' contains illegal characters`); + } + if (key.endsWith("-bin")) { + if (!(value instanceof Uint8Array)) { + throw new Error(`Metadata key '${key}' ends with '-bin', thus it must have binary value`); + } + } else { + if (typeof value !== "string") { + throw new Error(`Metadata key '${key}' doesn't end with '-bin', thus it must have string value`); + } + if (!/^[ -~]*$/.test(value)) { + throw new Error(`Metadata value '${value}' of key '${key}' contains illegal characters`); + } + } + } + function isIterable(value) { + return Symbol.iterator in value; + } + } +}); + +// node_modules/nice-grpc-common/lib/Status.js +var require_Status = __commonJS({ + "node_modules/nice-grpc-common/lib/Status.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.Status = void 0; + var Status2; + (function(Status3) { + Status3[Status3["OK"] = 0] = "OK"; + Status3[Status3["CANCELLED"] = 1] = "CANCELLED"; + Status3[Status3["UNKNOWN"] = 2] = "UNKNOWN"; + Status3[Status3["INVALID_ARGUMENT"] = 3] = "INVALID_ARGUMENT"; + Status3[Status3["DEADLINE_EXCEEDED"] = 4] = "DEADLINE_EXCEEDED"; + Status3[Status3["NOT_FOUND"] = 5] = "NOT_FOUND"; + Status3[Status3["ALREADY_EXISTS"] = 6] = "ALREADY_EXISTS"; + Status3[Status3["PERMISSION_DENIED"] = 7] = "PERMISSION_DENIED"; + Status3[Status3["RESOURCE_EXHAUSTED"] = 8] = "RESOURCE_EXHAUSTED"; + Status3[Status3["FAILED_PRECONDITION"] = 9] = "FAILED_PRECONDITION"; + Status3[Status3["ABORTED"] = 10] = "ABORTED"; + Status3[Status3["OUT_OF_RANGE"] = 11] = "OUT_OF_RANGE"; + Status3[Status3["UNIMPLEMENTED"] = 12] = "UNIMPLEMENTED"; + Status3[Status3["INTERNAL"] = 13] = "INTERNAL"; + Status3[Status3["UNAVAILABLE"] = 14] = "UNAVAILABLE"; + Status3[Status3["DATA_LOSS"] = 15] = "DATA_LOSS"; + Status3[Status3["UNAUTHENTICATED"] = 16] = "UNAUTHENTICATED"; + })(Status2 || (exports.Status = Status2 = {})); + } +}); + +// node_modules/nice-grpc-common/lib/MethodDescriptor.js +var require_MethodDescriptor = __commonJS({ + "node_modules/nice-grpc-common/lib/MethodDescriptor.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/nice-grpc-common/lib/client/CallOptions.js +var require_CallOptions = __commonJS({ + "node_modules/nice-grpc-common/lib/client/CallOptions.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/nice-grpc-common/lib/client/ClientMiddleware.js +var require_ClientMiddleware = __commonJS({ + "node_modules/nice-grpc-common/lib/client/ClientMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/nice-grpc-common/lib/client/composeClientMiddleware.js +var require_composeClientMiddleware = __commonJS({ + "node_modules/nice-grpc-common/lib/client/composeClientMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.composeClientMiddleware = composeClientMiddleware; + function composeClientMiddleware(middleware1, middleware2) { + return (call, options) => { + return middleware2(Object.assign(Object.assign({}, call), { next: (request, options2) => { + return middleware1(Object.assign(Object.assign({}, call), { request }), options2); + } }), options); + }; + } + } +}); + +// node_modules/ts-error/lib/helpers.js +var require_helpers = __commonJS({ + "node_modules/ts-error/lib/helpers.js"(exports) { + "use strict"; + exports.__esModule = void 0; + exports.__esModule = true; + var objectSetPrototypeOfIsDefined = typeof Object.setPrototypeOf === "function"; + var objectGetPrototypeOfIsDefined = typeof Object.getPrototypeOf === "function"; + var objectDefinePropertyIsDefined = typeof Object.defineProperty === "function"; + var objectCreateIsDefined = typeof Object.create === "function"; + var objectHasOwnPropertyIsDefined = typeof Object.prototype.hasOwnProperty === "function"; + var setPrototypeOf = function setPrototypeOf2(target, prototype) { + if (objectSetPrototypeOfIsDefined) { + Object.setPrototypeOf(target, prototype); + } else { + target.__proto__ = prototype; + } + }; + exports.setPrototypeOf = setPrototypeOf; + var getPrototypeOf = function getPrototypeOf2(target) { + if (objectGetPrototypeOfIsDefined) { + return Object.getPrototypeOf(target); + } else { + return target.__proto__ || target.prototype; + } + }; + exports.getPrototypeOf = getPrototypeOf; + var ie8ObjectDefinePropertyBug = false; + var defineProperty = function defineProperty2(target, name, propertyDescriptor) { + if (objectDefinePropertyIsDefined && !ie8ObjectDefinePropertyBug) { + try { + Object.defineProperty(target, name, propertyDescriptor); + } catch (e24) { + ie8ObjectDefinePropertyBug = true; + defineProperty2(target, name, propertyDescriptor); + } + } else { + target[name] = propertyDescriptor.value; + } + }; + exports.defineProperty = defineProperty; + var hasOwnProperty = function hasOwnProperty2(target, name) { + if (objectHasOwnPropertyIsDefined) { + return target.hasOwnProperty(target, name); + } else { + return target[name] === void 0; + } + }; + exports.hasOwnProperty = hasOwnProperty; + var objectCreate = function objectCreate2(prototype, propertyDescriptors) { + if (objectCreateIsDefined) { + return Object.create(prototype, propertyDescriptors); + } else { + var F2 = function F3() { + }; + F2.prototype = prototype; + var result = new F2(); + if (typeof propertyDescriptors === "undefined") { + return result; + } + if (typeof propertyDescriptors === "null") { + throw new Error("PropertyDescriptors must not be null."); + } + if (typeof propertyDescriptors === "object") { + for (var key in propertyDescriptors) { + if (hasOwnProperty(propertyDescriptors, key)) { + result[key] = propertyDescriptors[key].value; + } + } + } + return result; + } + }; + exports.objectCreate = objectCreate; + } +}); + +// node_modules/ts-error/lib/cjs.js +var require_cjs = __commonJS({ + "node_modules/ts-error/lib/cjs.js"(exports) { + "use strict"; + exports.__esModule = void 0; + exports.__esModule = true; + var helpers = require_helpers(); + var setPrototypeOf = helpers.setPrototypeOf; + var getPrototypeOf = helpers.getPrototypeOf; + var defineProperty = helpers.defineProperty; + var objectCreate = helpers.objectCreate; + var uglyErrorPrinting = new Error().toString() === "[object Error]"; + var extendableErrorName = ""; + function ExtendableError(message) { + var originalConstructor = this.constructor; + var constructorName = originalConstructor.name || function() { + var constructorNameMatch = originalConstructor.toString().match(/^function\s*([^\s(]+)/); + return constructorNameMatch === null ? extendableErrorName ? extendableErrorName : "Error" : constructorNameMatch[1]; + }(); + var constructorNameIsError = constructorName === "Error"; + var name = constructorNameIsError ? extendableErrorName : constructorName; + var instance = Error.apply(this, arguments); + setPrototypeOf(instance, getPrototypeOf(this)); + if (!(instance instanceof originalConstructor) || !(instance instanceof ExtendableError)) { + var instance = this; + Error.apply(this, arguments); + defineProperty(instance, "message", { + configurable: true, + enumerable: false, + value: message, + writable: true + }); + } + defineProperty(instance, "name", { + configurable: true, + enumerable: false, + value: name, + writable: true + }); + if (Error.captureStackTrace) { + Error.captureStackTrace( + instance, + constructorNameIsError ? ExtendableError : originalConstructor + ); + } + if (instance.stack === void 0) { + var err = new Error(message); + err.name = instance.name; + instance.stack = err.stack; + } + if (uglyErrorPrinting) { + defineProperty(instance, "toString", { + configurable: true, + enumerable: false, + value: function toString2() { + return (this.name || "Error") + (typeof this.message === "undefined" ? "" : ": " + this.message); + }, + writable: true + }); + } + return instance; + } + extendableErrorName = ExtendableError.name || "ExtendableError"; + ExtendableError.prototype = objectCreate(Error.prototype, { + constructor: { + value: Error, + enumerable: false, + writable: true, + configurable: true + } + }); + exports.ExtendableError = ExtendableError; + exports["default"] = exports.ExtendableError; + } +}); + +// node_modules/nice-grpc-common/lib/client/ClientError.js +var require_ClientError = __commonJS({ + "node_modules/nice-grpc-common/lib/client/ClientError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ClientError = void 0; + var ts_error_1 = require_cjs(); + var Status_1 = require_Status(); + var ClientError3 = class _ClientError extends ts_error_1.ExtendableError { + constructor(path, code, details) { + super(`${path} ${Status_1.Status[code]}: ${details}`); + this.path = path; + this.code = code; + this.details = details; + this.name = "ClientError"; + Object.defineProperty(this, "@@nice-grpc", { + value: true + }); + Object.defineProperty(this, "@@nice-grpc:ClientError", { + value: true + }); + } + static [Symbol.hasInstance](instance) { + if (this !== _ClientError) { + return this.prototype.isPrototypeOf(instance); + } + return typeof instance === "object" && instance !== null && (instance.constructor === _ClientError || instance["@@nice-grpc:ClientError"] === true || instance.name === "ClientError" && instance["@@nice-grpc"] === true); + } + }; + exports.ClientError = ClientError3; + } +}); + +// node_modules/nice-grpc-common/lib/server/CallContext.js +var require_CallContext = __commonJS({ + "node_modules/nice-grpc-common/lib/server/CallContext.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/nice-grpc-common/lib/server/ServerMiddleware.js +var require_ServerMiddleware = __commonJS({ + "node_modules/nice-grpc-common/lib/server/ServerMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/nice-grpc-common/lib/server/composeServerMiddleware.js +var require_composeServerMiddleware = __commonJS({ + "node_modules/nice-grpc-common/lib/server/composeServerMiddleware.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.composeServerMiddleware = composeServerMiddleware; + function composeServerMiddleware(middleware1, middleware2) { + return (call, context) => { + return middleware1(Object.assign(Object.assign({}, call), { next: (request, context1) => { + return middleware2(Object.assign(Object.assign({}, call), { request }), context1); + } }), context); + }; + } + } +}); + +// node_modules/nice-grpc-common/lib/server/ServerError.js +var require_ServerError = __commonJS({ + "node_modules/nice-grpc-common/lib/server/ServerError.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.ServerError = void 0; + var ts_error_1 = require_cjs(); + var Status_1 = require_Status(); + var ServerError2 = class _ServerError extends ts_error_1.ExtendableError { + constructor(code, details) { + super(`${Status_1.Status[code]}: ${details}`); + this.code = code; + this.details = details; + this.name = "ServerError"; + Object.defineProperty(this, "@@nice-grpc", { + value: true + }); + Object.defineProperty(this, "@@nice-grpc:ServerError", { + value: true + }); + } + static [Symbol.hasInstance](instance) { + if (this !== _ServerError) { + return this.prototype.isPrototypeOf(instance); + } + return typeof instance === "object" && instance !== null && (instance.constructor === _ServerError || instance["@@nice-grpc:ServerError"] === true || instance.name === "ServerError" && instance["@@nice-grpc"] === true); + } + }; + exports.ServerError = ServerError2; + } +}); + +// node_modules/nice-grpc-common/lib/index.js +var require_lib2 = __commonJS({ + "node_modules/nice-grpc-common/lib/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m2, k2, k22) { + if (k22 === void 0) k22 = k2; + var desc = Object.getOwnPropertyDescriptor(m2, k2); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m2[k2]; + } }; + } + Object.defineProperty(o, k22, desc); + } : function(o, m2, k2, k22) { + if (k22 === void 0) k22 = k2; + o[k22] = m2[k2]; + }); + var __exportStar = exports && exports.__exportStar || function(m2, exports2) { + for (var p2 in m2) if (p2 !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p2)) __createBinding(exports2, m2, p2); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + __exportStar(require_Metadata(), exports); + __exportStar(require_Status(), exports); + __exportStar(require_MethodDescriptor(), exports); + __exportStar(require_CallOptions(), exports); + __exportStar(require_ClientMiddleware(), exports); + __exportStar(require_composeClientMiddleware(), exports); + __exportStar(require_ClientError(), exports); + __exportStar(require_CallContext(), exports); + __exportStar(require_ServerMiddleware(), exports); + __exportStar(require_composeServerMiddleware(), exports); + __exportStar(require_ServerError(), exports); + } +}); + +// node_modules/nice-grpc-client-middleware-retry/lib/index.js +var require_lib3 = __commonJS({ + "node_modules/nice-grpc-client-middleware-retry/lib/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.retryMiddleware = void 0; + var abort_controller_x_1 = require_lib(); + var nice_grpc_common_1 = require_lib2(); + var defaultRetryableStatuses = [ + nice_grpc_common_1.Status.UNKNOWN, + nice_grpc_common_1.Status.INTERNAL, + nice_grpc_common_1.Status.UNAVAILABLE, + // Server may return `CANCELLED` if it is shutting down. We can distinguish + // this from client-initiated cancellations because these are returned as + // `AbortError`s. + nice_grpc_common_1.Status.CANCELLED + ]; + var retryMiddleware2 = async function* retryMiddleware3(call, options) { + var _a2; + const { idempotencyLevel } = call.method.options; + const isIdempotent = idempotencyLevel === "IDEMPOTENT" || idempotencyLevel === "NO_SIDE_EFFECTS"; + const { retry = isIdempotent, retryBaseDelayMs = 1e3, retryMaxDelayMs = 3e4, retryMaxAttempts = 1, onRetryableError, retryableStatuses = defaultRetryableStatuses, ...restOptions } = options; + if (call.requestStream || call.responseStream || !retry) { + return yield* call.next(call.request, restOptions); + } + const signal = (_a2 = options.signal) !== null && _a2 !== void 0 ? _a2 : new AbortController().signal; + for (let attempt = 0; ; attempt++) { + try { + return yield* call.next(call.request, restOptions); + } catch (error) { + (0, abort_controller_x_1.rethrowAbortError)(error); + if (attempt >= retryMaxAttempts || !(error instanceof nice_grpc_common_1.ClientError) || !retryableStatuses.includes(error.code)) { + throw error; + } + const backoff = Math.min(retryMaxDelayMs, Math.pow(2, attempt) * retryBaseDelayMs); + const delayMs = Math.round(backoff * (1 + Math.random()) / 2); + onRetryableError === null || onRetryableError === void 0 ? void 0 : onRetryableError(error, attempt, delayMs); + await (0, abort_controller_x_1.delay)(signal, delayMs); + } + } + }; + exports.retryMiddleware = retryMiddleware2; + } +}); + +// node_modules/nice-grpc-web/lib/service-definitions/grpc-web.js +var require_grpc_web = __commonJS({ + "node_modules/nice-grpc-web/lib/service-definitions/grpc-web.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromGrpcWebServiceDefinition = fromGrpcWebServiceDefinition; + exports.isGrpcWebServiceDefinition = isGrpcWebServiceDefinition; + function fromGrpcWebServiceDefinition(definition) { + const result = {}; + for (const [key, value] of Object.entries(definition)) { + if (key === "serviceName") { + continue; + } + const method = value; + result[uncapitalize(key)] = { + path: `/${definition.serviceName}/${key}`, + requestStream: method.requestStream, + responseStream: method.responseStream, + requestDeserialize: method.requestType.deserializeBinary, + requestSerialize: (value2) => value2.serializeBinary(), + responseDeserialize: method.responseType.deserializeBinary, + responseSerialize: (value2) => value2.serializeBinary(), + options: {} + }; + } + return result; + } + function isGrpcWebServiceDefinition(definition) { + return "prototype" in definition; + } + function uncapitalize(value) { + if (value.length === 0) { + return value; + } + return value[0].toLowerCase() + value.slice(1); + } + } +}); + +// node_modules/nice-grpc-web/lib/service-definitions/ts-proto.js +var require_ts_proto = __commonJS({ + "node_modules/nice-grpc-web/lib/service-definitions/ts-proto.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.fromTsProtoServiceDefinition = fromTsProtoServiceDefinition; + exports.isTsProtoServiceDefinition = isTsProtoServiceDefinition; + function fromTsProtoServiceDefinition(definition) { + const result = {}; + for (const [key, method] of Object.entries(definition.methods)) { + const requestEncode = method.requestType.encode; + const requestFromPartial = method.requestType.fromPartial; + const responseEncode = method.responseType.encode; + const responseFromPartial = method.responseType.fromPartial; + result[key] = { + path: `/${definition.fullName}/${method.name}`, + requestStream: method.requestStream, + responseStream: method.responseStream, + requestDeserialize: method.requestType.decode, + requestSerialize: requestFromPartial != null ? (value) => requestEncode(requestFromPartial(value)).finish() : (value) => requestEncode(value).finish(), + responseDeserialize: method.responseType.decode, + responseSerialize: responseFromPartial != null ? (value) => responseEncode(responseFromPartial(value)).finish() : (value) => responseEncode(value).finish(), + options: method.options + }; + } + return result; + } + function isTsProtoServiceDefinition(definition) { + return "name" in definition && "fullName" in definition && "methods" in definition; + } + } +}); + +// node_modules/nice-grpc-web/lib/service-definitions/index.js +var require_service_definitions = __commonJS({ + "node_modules/nice-grpc-web/lib/service-definitions/index.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.normalizeServiceDefinition = normalizeServiceDefinition; + var grpc_web_1 = require_grpc_web(); + var ts_proto_1 = require_ts_proto(); + function normalizeServiceDefinition(definition) { + if ((0, grpc_web_1.isGrpcWebServiceDefinition)(definition)) { + return (0, grpc_web_1.fromGrpcWebServiceDefinition)(definition); + } else if ((0, ts_proto_1.isTsProtoServiceDefinition)(definition)) { + return (0, ts_proto_1.fromTsProtoServiceDefinition)(definition); + } else { + return definition; + } + } + } +}); + +// node_modules/js-base64/base64.js +var require_base64 = __commonJS({ + "node_modules/js-base64/base64.js"(exports, module2) { + (function(global2, factory) { + typeof exports === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : ( + // cf. https://github.com/dankogai/js-base64/issues/119 + function() { + var _Base64 = global2.Base64; + var gBase64 = factory(); + gBase64.noConflict = function() { + global2.Base64 = _Base64; + return gBase64; + }; + if (global2.Meteor) { + Base64 = gBase64; + } + global2.Base64 = gBase64; + }() + ); + })(typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : exports, function() { + "use strict"; + var version = "3.7.8"; + var VERSION = version; + var _hasBuffer = typeof Buffer === "function"; + var _TD = typeof TextDecoder === "function" ? new TextDecoder() : void 0; + var _TE = typeof TextEncoder === "function" ? new TextEncoder() : void 0; + var b64ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var b64chs = Array.prototype.slice.call(b64ch); + var b64tab = function(a) { + var tab = {}; + a.forEach(function(c, i) { + return tab[c] = i; + }); + return tab; + }(b64chs); + var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/; + var _fromCC = String.fromCharCode.bind(String); + var _U8Afrom = typeof Uint8Array.from === "function" ? Uint8Array.from.bind(Uint8Array) : function(it2) { + return new Uint8Array(Array.prototype.slice.call(it2, 0)); + }; + var _mkUriSafe = function(src) { + return src.replace(/=/g, "").replace(/[+\/]/g, function(m0) { + return m0 == "+" ? "-" : "_"; + }); + }; + var _tidyB64 = function(s) { + return s.replace(/[^A-Za-z0-9\+\/]/g, ""); + }; + var btoaPolyfill = function(bin) { + var u32, c0, c1, c2, asc = ""; + var pad = bin.length % 3; + for (var i = 0; i < bin.length; ) { + if ((c0 = bin.charCodeAt(i++)) > 255 || (c1 = bin.charCodeAt(i++)) > 255 || (c2 = bin.charCodeAt(i++)) > 255) + throw new TypeError("invalid character found"); + u32 = c0 << 16 | c1 << 8 | c2; + asc += b64chs[u32 >> 18 & 63] + b64chs[u32 >> 12 & 63] + b64chs[u32 >> 6 & 63] + b64chs[u32 & 63]; + } + return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc; + }; + var _btoa = typeof btoa === "function" ? function(bin) { + return btoa(bin); + } : _hasBuffer ? function(bin) { + return Buffer.from(bin, "binary").toString("base64"); + } : btoaPolyfill; + var _fromUint8Array = _hasBuffer ? function(u8a) { + return Buffer.from(u8a).toString("base64"); + } : function(u8a) { + var maxargs = 4096; + var strs = []; + for (var i = 0, l2 = u8a.length; i < l2; i += maxargs) { + strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs))); + } + return _btoa(strs.join("")); + }; + var fromUint8Array = function(u8a, urlsafe) { + if (urlsafe === void 0) { + urlsafe = false; + } + return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a); + }; + var cb_utob = function(c) { + if (c.length < 2) { + var cc2 = c.charCodeAt(0); + return cc2 < 128 ? c : cc2 < 2048 ? _fromCC(192 | cc2 >>> 6) + _fromCC(128 | cc2 & 63) : _fromCC(224 | cc2 >>> 12 & 15) + _fromCC(128 | cc2 >>> 6 & 63) + _fromCC(128 | cc2 & 63); + } else { + var cc2 = 65536 + (c.charCodeAt(0) - 55296) * 1024 + (c.charCodeAt(1) - 56320); + return _fromCC(240 | cc2 >>> 18 & 7) + _fromCC(128 | cc2 >>> 12 & 63) + _fromCC(128 | cc2 >>> 6 & 63) + _fromCC(128 | cc2 & 63); + } + }; + var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g; + var utob = function(u) { + return u.replace(re_utob, cb_utob); + }; + var _encode = _hasBuffer ? function(s) { + return Buffer.from(s, "utf8").toString("base64"); + } : _TE ? function(s) { + return _fromUint8Array(_TE.encode(s)); + } : function(s) { + return _btoa(utob(s)); + }; + var encode = function(src, urlsafe) { + if (urlsafe === void 0) { + urlsafe = false; + } + return urlsafe ? _mkUriSafe(_encode(src)) : _encode(src); + }; + var encodeURI = function(src) { + return encode(src, true); + }; + var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g; + var cb_btou = function(cccc) { + switch (cccc.length) { + case 4: + var cp2 = (7 & cccc.charCodeAt(0)) << 18 | (63 & cccc.charCodeAt(1)) << 12 | (63 & cccc.charCodeAt(2)) << 6 | 63 & cccc.charCodeAt(3), offset = cp2 - 65536; + return _fromCC((offset >>> 10) + 55296) + _fromCC((offset & 1023) + 56320); + case 3: + return _fromCC((15 & cccc.charCodeAt(0)) << 12 | (63 & cccc.charCodeAt(1)) << 6 | 63 & cccc.charCodeAt(2)); + default: + return _fromCC((31 & cccc.charCodeAt(0)) << 6 | 63 & cccc.charCodeAt(1)); + } + }; + var btou = function(b2) { + return b2.replace(re_btou, cb_btou); + }; + var atobPolyfill = function(asc) { + asc = asc.replace(/\s+/g, ""); + if (!b64re.test(asc)) + throw new TypeError("malformed base64."); + asc += "==".slice(2 - (asc.length & 3)); + var u24, r1, r2; + var binArray = []; + for (var i = 0; i < asc.length; ) { + u24 = b64tab[asc.charAt(i++)] << 18 | b64tab[asc.charAt(i++)] << 12 | (r1 = b64tab[asc.charAt(i++)]) << 6 | (r2 = b64tab[asc.charAt(i++)]); + if (r1 === 64) { + binArray.push(_fromCC(u24 >> 16 & 255)); + } else if (r2 === 64) { + binArray.push(_fromCC(u24 >> 16 & 255, u24 >> 8 & 255)); + } else { + binArray.push(_fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255)); + } + } + return binArray.join(""); + }; + var _atob = typeof atob === "function" ? function(asc) { + return atob(_tidyB64(asc)); + } : _hasBuffer ? function(asc) { + return Buffer.from(asc, "base64").toString("binary"); + } : atobPolyfill; + var _toUint8Array = _hasBuffer ? function(a) { + return _U8Afrom(Buffer.from(a, "base64")); + } : function(a) { + return _U8Afrom(_atob(a).split("").map(function(c) { + return c.charCodeAt(0); + })); + }; + var toUint8Array = function(a) { + return _toUint8Array(_unURI(a)); + }; + var _decode = _hasBuffer ? function(a) { + return Buffer.from(a, "base64").toString("utf8"); + } : _TD ? function(a) { + return _TD.decode(_toUint8Array(a)); + } : function(a) { + return btou(_atob(a)); + }; + var _unURI = function(a) { + return _tidyB64(a.replace(/[-_]/g, function(m0) { + return m0 == "-" ? "+" : "/"; + })); + }; + var decode = function(src) { + return _decode(_unURI(src)); + }; + var isValid = function(src) { + if (typeof src !== "string") + return false; + var s = src.replace(/\s+/g, "").replace(/={0,2}$/, ""); + return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s); + }; + var _noEnum = function(v2) { + return { + value: v2, + enumerable: false, + writable: true, + configurable: true + }; + }; + var extendString = function() { + var _add = function(name, body) { + return Object.defineProperty(String.prototype, name, _noEnum(body)); + }; + _add("fromBase64", function() { + return decode(this); + }); + _add("toBase64", function(urlsafe) { + return encode(this, urlsafe); + }); + _add("toBase64URI", function() { + return encode(this, true); + }); + _add("toBase64URL", function() { + return encode(this, true); + }); + _add("toUint8Array", function() { + return toUint8Array(this); + }); + }; + var extendUint8Array = function() { + var _add = function(name, body) { + return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body)); + }; + _add("toBase64", function(urlsafe) { + return fromUint8Array(this, urlsafe); + }); + _add("toBase64URI", function() { + return fromUint8Array(this, true); + }); + _add("toBase64URL", function() { + return fromUint8Array(this, true); + }); + }; + var extendBuiltins = function() { + extendString(); + extendUint8Array(); + }; + var gBase64 = { + version, + VERSION, + atob: _atob, + atobPolyfill, + btoa: _btoa, + btoaPolyfill, + fromBase64: decode, + toBase64: encode, + encode, + encodeURI, + encodeURL: encodeURI, + utob, + btou, + decode, + isValid, + fromUint8Array, + toUint8Array, + extendString, + extendUint8Array, + extendBuiltins + }; + gBase64.Base64 = {}; + Object.keys(gBase64).forEach(function(k2) { + return gBase64.Base64[k2] = gBase64[k2]; + }); + return gBase64; + }); + } +}); + +// node_modules/nice-grpc-web/lib/client/transports/fetch.js +var require_fetch = __commonJS({ + "node_modules/nice-grpc-web/lib/client/transports/fetch.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.FetchTransport = FetchTransport2; + var abort_controller_x_1 = require_lib(); + var js_base64_1 = require_base64(); + var nice_grpc_common_1 = require_lib2(); + function FetchTransport2(config) { + return async function* fetchTransport({ url, body, metadata, signal, method }) { + let requestBody; + if (!method.requestStream) { + let bodyBuffer; + for await (const chunk of body) { + bodyBuffer = chunk; + break; + } + requestBody = bodyBuffer; + } else { + let iterator; + requestBody = new ReadableStream({ + type: "bytes", + start() { + iterator = body[Symbol.asyncIterator](); + }, + async pull(controller) { + const { done, value } = await iterator.next(); + if (done) { + controller.close(); + } else { + controller.enqueue(value); + } + }, + async cancel() { + var _a2, _b; + await ((_b = (_a2 = iterator).return) === null || _b === void 0 ? void 0 : _b.call(_a2)); + } + }); + } + const response = await fetch(url, { + method: "POST", + body: requestBody, + headers: metadataToHeaders(metadata), + signal, + cache: config === null || config === void 0 ? void 0 : config.cache, + ["duplex"]: "half", + credentials: config === null || config === void 0 ? void 0 : config.credentials + }); + yield { + type: "header", + header: headersToMetadata(response.headers) + }; + if (!response.ok) { + const responseText = await response.text(); + throw new nice_grpc_common_1.ClientError(method.path, getStatusFromHttpCode(response.status), getErrorDetailsFromHttpResponse(response.status, responseText)); + } + (0, abort_controller_x_1.throwIfAborted)(signal); + const reader = response.body.getReader(); + const abortListener = () => { + reader.cancel().catch(() => { + }); + }; + signal.addEventListener("abort", abortListener); + try { + while (true) { + const { done, value } = await reader.read(); + if (value != null) { + yield { + type: "data", + data: value + }; + } + if (done) { + break; + } + } + } finally { + signal.removeEventListener("abort", abortListener); + (0, abort_controller_x_1.throwIfAborted)(signal); + } + }; + } + function metadataToHeaders(metadata) { + const headers = new Headers(); + for (const [key, values] of metadata) { + for (const value of values) { + headers.append(key, typeof value === "string" ? value : js_base64_1.Base64.fromUint8Array(value)); + } + } + return headers; + } + function headersToMetadata(headers) { + const metadata = new nice_grpc_common_1.Metadata(); + for (const [key, value] of headers) { + if (key.endsWith("-bin")) { + for (const item of value.split(/,\s?/)) { + metadata.append(key, js_base64_1.Base64.toUint8Array(item)); + } + } else { + metadata.set(key, value); + } + } + return metadata; + } + function getStatusFromHttpCode(statusCode) { + switch (statusCode) { + case 400: + return nice_grpc_common_1.Status.INTERNAL; + case 401: + return nice_grpc_common_1.Status.UNAUTHENTICATED; + case 403: + return nice_grpc_common_1.Status.PERMISSION_DENIED; + case 404: + return nice_grpc_common_1.Status.UNIMPLEMENTED; + case 429: + case 502: + case 503: + case 504: + return nice_grpc_common_1.Status.UNAVAILABLE; + default: + return nice_grpc_common_1.Status.UNKNOWN; + } + } + function getErrorDetailsFromHttpResponse(statusCode, responseText) { + return `Received HTTP ${statusCode} response: ` + (responseText.length > 1e3 ? responseText.slice(0, 1e3) + "... (truncated)" : responseText); + } + } +}); + +// node_modules/nice-grpc-web/lib/client/channel.js +var require_channel = __commonJS({ + "node_modules/nice-grpc-web/lib/client/channel.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createChannel = createChannel2; + var fetch_1 = require_fetch(); + function createChannel2(address, transport = (0, fetch_1.FetchTransport)()) { + return { address, transport }; + } + } +}); + +// node_modules/nice-grpc-web/lib/utils/isAsyncIterable.js +var require_isAsyncIterable = __commonJS({ + "node_modules/nice-grpc-web/lib/utils/isAsyncIterable.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.isAsyncIterable = isAsyncIterable; + function isAsyncIterable(value) { + return value != null && Symbol.asyncIterator in value; + } + } +}); + +// node_modules/nice-grpc-web/lib/utils/concatBuffers.js +var require_concatBuffers = __commonJS({ + "node_modules/nice-grpc-web/lib/utils/concatBuffers.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.concatBuffers = concatBuffers; + function concatBuffers(buffers, totalLength) { + if (buffers.length === 1) { + return buffers[0]; + } + const result = new Uint8Array(totalLength); + let offset = 0; + for (const buffer of buffers) { + result.set(buffer, offset); + offset += buffer.length; + } + return result; + } + } +}); + +// node_modules/nice-grpc-web/lib/client/decodeMetadata.js +var require_decodeMetadata = __commonJS({ + "node_modules/nice-grpc-web/lib/client/decodeMetadata.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.decodeMetadata = decodeMetadata; + var nice_grpc_common_1 = require_lib2(); + var js_base64_1 = require_base64(); + function decodeMetadata(data) { + const metadata = (0, nice_grpc_common_1.Metadata)(); + const text = new TextDecoder().decode(data); + for (const line of text.split("\r\n")) { + if (!line) { + continue; + } + const splitIndex = line.indexOf(":"); + if (splitIndex === -1) { + throw new Error(`Invalid metadata line: ${line}`); + } + const key = line.slice(0, splitIndex).trim().toLowerCase(); + const value = line.slice(splitIndex + 1).trim(); + if (key.endsWith("-bin")) { + for (const item of value.split(/,\s?/)) { + metadata.append(key, js_base64_1.Base64.toUint8Array(item)); + } + } else { + metadata.append(key, value); + } + } + return metadata; + } + } +}); + +// node_modules/nice-grpc-web/lib/client/framing.js +var require_framing = __commonJS({ + "node_modules/nice-grpc-web/lib/client/framing.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.LPM_HEADER_LENGTH = void 0; + exports.parseLpmHeader = parseLpmHeader; + exports.encodeFrame = encodeFrame; + exports.LPM_HEADER_LENGTH = 5; + function parseLpmHeader(data) { + if (data.length !== exports.LPM_HEADER_LENGTH) { + throw new Error(`Invalid LPM header length: ${data.length}`); + } + const view = new DataView(data.buffer, data.byteOffset, data.byteLength); + const compressed = (view.getUint8(0) & 1) !== 0; + const isMetadata = (view.getUint8(0) & 128) !== 0; + const length = view.getUint32(1); + return { + compressed, + isMetadata, + length + }; + } + function encodeFrame(data) { + const messageBytes = new Uint8Array(exports.LPM_HEADER_LENGTH + data.length); + new DataView(messageBytes.buffer, 1, 4).setUint32(0, data.length, false); + messageBytes.set(data, exports.LPM_HEADER_LENGTH); + return messageBytes; + } + } +}); + +// node_modules/nice-grpc-web/lib/client/decodeResponse.js +var require_decodeResponse = __commonJS({ + "node_modules/nice-grpc-web/lib/client/decodeResponse.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.decodeResponse = decodeResponse; + var concatBuffers_1 = require_concatBuffers(); + var decodeMetadata_1 = require_decodeMetadata(); + var framing_1 = require_framing(); + async function* decodeResponse({ response, decode, onHeader, onTrailer }) { + let receivedHeader = false; + let receivedTrailer = false; + let receivedData = false; + let buffer = createChunkBuffer(framing_1.LPM_HEADER_LENGTH); + let lpmHeader; + for await (const frame of response) { + if (frame.type === "header") { + handleHeader(frame.header); + } else if (frame.type === "trailer") { + handleTrailer(frame.trailer); + } else if (frame.type === "data") { + if (receivedTrailer) { + throw new Error("Received data after trailer"); + } + let { data } = frame; + while (data.length > 0 || (lpmHeader === null || lpmHeader === void 0 ? void 0 : lpmHeader.length) === 0) { + const position = Math.min(data.length, buffer.targetLength - buffer.totalLength); + const chunk = data.subarray(0, position); + data = data.subarray(position); + buffer.chunks.push(chunk); + buffer.totalLength += chunk.length; + if (buffer.totalLength === buffer.targetLength) { + const messageBytes = (0, concatBuffers_1.concatBuffers)(buffer.chunks, buffer.totalLength); + if (lpmHeader == null) { + lpmHeader = (0, framing_1.parseLpmHeader)(messageBytes); + buffer = createChunkBuffer(lpmHeader.length); + } else { + if (lpmHeader.compressed) { + throw new Error("Compressed messages not supported"); + } + if (lpmHeader.isMetadata) { + if (!receivedHeader) { + handleHeader((0, decodeMetadata_1.decodeMetadata)(messageBytes)); + } else { + handleTrailer((0, decodeMetadata_1.decodeMetadata)(messageBytes)); + } + } else { + if (!receivedHeader) { + throw new Error("Received data before header"); + } + yield decode(messageBytes); + receivedData = true; + } + lpmHeader = void 0; + buffer = createChunkBuffer(framing_1.LPM_HEADER_LENGTH); + } + } + } + } + } + function handleHeader(header) { + if (receivedHeader) { + throw new Error("Received multiple headers"); + } + if (receivedData) { + throw new Error("Received header after data"); + } + if (receivedTrailer) { + throw new Error("Received header after trailer"); + } + receivedHeader = true; + onHeader(header); + } + function handleTrailer(trailer) { + if (receivedTrailer) { + throw new Error("Received multiple trailers"); + } + receivedTrailer = true; + onTrailer(trailer); + } + function createChunkBuffer(targetLength) { + return { + chunks: [], + totalLength: 0, + targetLength + }; + } + } + } +}); + +// node_modules/nice-grpc-web/lib/client/encodeRequest.js +var require_encodeRequest = __commonJS({ + "node_modules/nice-grpc-web/lib/client/encodeRequest.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.encodeRequest = encodeRequest; + var framing_1 = require_framing(); + async function* encodeRequest({ request, encode }) { + for await (const data of request) { + const bytes = encode(data); + yield (0, framing_1.encodeFrame)(bytes); + } + } + } +}); + +// node_modules/nice-grpc-web/lib/client/makeInternalErrorMessage.js +var require_makeInternalErrorMessage = __commonJS({ + "node_modules/nice-grpc-web/lib/client/makeInternalErrorMessage.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.makeInternalErrorMessage = makeInternalErrorMessage; + function makeInternalErrorMessage(err) { + if (err == null || typeof err !== "object") { + return String(err); + } else if (typeof err.message === "string") { + return err.message; + } else { + return JSON.stringify(err); + } + } + } +}); + +// node_modules/nice-grpc-web/lib/client/parseTrailer.js +var require_parseTrailer = __commonJS({ + "node_modules/nice-grpc-web/lib/client/parseTrailer.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parseTrailer = parseTrailer; + var nice_grpc_common_1 = require_lib2(); + function parseTrailer(trailer) { + let status; + const statusValue = trailer.get("grpc-status"); + if (statusValue != null) { + const statusNum = +statusValue; + if (statusNum in nice_grpc_common_1.Status) { + status = statusNum; + } else { + throw new Error(`Received invalid status code from server: ${statusValue}`); + } + } else { + throw new Error("Received no status code from server"); + } + let message = trailer.get("grpc-message"); + if (message != null) { + try { + message = decodeURIComponent(message); + } catch (_a2) { + } + } + const trailerCopy = (0, nice_grpc_common_1.Metadata)(trailer); + trailerCopy.delete("grpc-status"); + trailerCopy.delete("grpc-message"); + return { + status, + message, + trailer: trailerCopy + }; + } + } +}); + +// node_modules/nice-grpc-web/lib/client/makeCall.js +var require_makeCall = __commonJS({ + "node_modules/nice-grpc-web/lib/client/makeCall.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.makeCall = makeCall; + var abort_controller_x_1 = require_lib(); + var nice_grpc_common_1 = require_lib2(); + var decodeResponse_1 = require_decodeResponse(); + var encodeRequest_1 = require_encodeRequest(); + var makeInternalErrorMessage_1 = require_makeInternalErrorMessage(); + var parseTrailer_1 = require_parseTrailer(); + async function* makeCall(definition, channel, request, options) { + const { metadata, signal = new AbortController().signal, onHeader, onTrailer } = options; + (0, abort_controller_x_1.throwIfAborted)(signal); + let receivedTrailersOnly = false; + let status; + let message; + function handleTrailer(trailer) { + if (receivedTrailersOnly) { + if (new Map(trailer).size > 0) { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.INTERNAL, "Received non-empty trailer after trailers-only response"); + } else { + return; + } + } + const parsedTrailer = (0, parseTrailer_1.parseTrailer)(trailer); + ({ status, message } = parsedTrailer); + onTrailer === null || onTrailer === void 0 ? void 0 : onTrailer(parsedTrailer.trailer); + } + const finalMetadata = (0, nice_grpc_common_1.Metadata)(metadata); + finalMetadata.set("content-type", "application/grpc-web+proto"); + finalMetadata.set("x-grpc-web", "1"); + const innerAbortController = new AbortController(); + const abortListener = () => { + innerAbortController.abort(); + }; + signal.addEventListener("abort", abortListener); + let finished = false; + let requestError; + async function* interceptRequestError() { + try { + for await (const item of request) { + if (finished) { + throw new Error("Request finished"); + } + yield item; + } + } catch (err) { + requestError = { err }; + innerAbortController.abort(); + throw err; + } + } + async function* handleTransportErrors() { + try { + return yield* channel.transport({ + url: channel.address + definition.path, + metadata: finalMetadata, + body: (0, encodeRequest_1.encodeRequest)({ + request: interceptRequestError(), + encode: definition.requestSerialize + }), + signal: innerAbortController.signal, + method: definition + }); + } catch (err) { + (0, abort_controller_x_1.rethrowAbortError)(err); + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.UNKNOWN, `Transport error: ${(0, makeInternalErrorMessage_1.makeInternalErrorMessage)(err)}`); + } + } + const response = (0, decodeResponse_1.decodeResponse)({ + response: handleTransportErrors(), + decode: definition.responseDeserialize, + onHeader(header) { + const isTrailersOnly = header.has("grpc-status"); + if (isTrailersOnly) { + handleTrailer(header); + receivedTrailersOnly = true; + } else { + onHeader === null || onHeader === void 0 ? void 0 : onHeader(header); + } + }, + onTrailer(trailer) { + handleTrailer(trailer); + } + }); + try { + yield* response; + } catch (err) { + if (requestError !== void 0) { + throw requestError.err; + } else if (err instanceof nice_grpc_common_1.ClientError || (0, abort_controller_x_1.isAbortError)(err)) { + throw err; + } else { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.INTERNAL, (0, makeInternalErrorMessage_1.makeInternalErrorMessage)(err)); + } + } finally { + finished = true; + signal.removeEventListener("abort", abortListener); + if (status != null && status !== nice_grpc_common_1.Status.OK) { + throw new nice_grpc_common_1.ClientError(definition.path, status, message !== null && message !== void 0 ? message : ""); + } + } + if (status == null) { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.UNKNOWN, 'Response stream closed without gRPC status. This may indicate a misconfigured CORS policy on the server: Access-Control-Expose-Headers must include "grpc-status" and "grpc-message".'); + } + } + } +}); + +// node_modules/nice-grpc-web/lib/client/createBidiStreamingMethod.js +var require_createBidiStreamingMethod = __commonJS({ + "node_modules/nice-grpc-web/lib/client/createBidiStreamingMethod.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createBidiStreamingMethod = createBidiStreamingMethod; + var isAsyncIterable_1 = require_isAsyncIterable(); + var makeCall_1 = require_makeCall(); + function createBidiStreamingMethod(definition, channel, middleware, defaultOptions) { + const methodDescriptor = { + path: definition.path, + requestStream: definition.requestStream, + responseStream: definition.responseStream, + options: definition.options + }; + async function* bidiStreamingMethod(request, options) { + if (!(0, isAsyncIterable_1.isAsyncIterable)(request)) { + throw new Error("A middleware passed invalid request to next(): expected a single message for bidirectional streaming method"); + } + const response = (0, makeCall_1.makeCall)(definition, channel, request, options); + yield* response; + } + const method = middleware == null ? bidiStreamingMethod : (request, options) => middleware({ + method: methodDescriptor, + requestStream: true, + request, + responseStream: true, + next: bidiStreamingMethod + }, options); + return (request, options) => { + const iterable = method(request, { + ...defaultOptions, + ...options + }); + const iterator = iterable[Symbol.asyncIterator](); + return { + [Symbol.asyncIterator]() { + return { + async next() { + const result = await iterator.next(); + if (result.done && result.value != null) { + return await iterator.throw(new Error("A middleware returned a message, but expected to return void for bidirectional streaming method")); + } + return result; + }, + return() { + return iterator.return(); + }, + throw(err) { + return iterator.throw(err); + } + }; + } + }; + }; + } + } +}); + +// node_modules/nice-grpc-web/lib/client/createClientStreamingMethod.js +var require_createClientStreamingMethod = __commonJS({ + "node_modules/nice-grpc-web/lib/client/createClientStreamingMethod.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createClientStreamingMethod = createClientStreamingMethod; + var nice_grpc_common_1 = require_lib2(); + var isAsyncIterable_1 = require_isAsyncIterable(); + var makeCall_1 = require_makeCall(); + function createClientStreamingMethod(definition, channel, middleware, defaultOptions) { + const methodDescriptor = { + path: definition.path, + requestStream: definition.requestStream, + responseStream: definition.responseStream, + options: definition.options + }; + async function* clientStreamingMethod(request, options) { + if (!(0, isAsyncIterable_1.isAsyncIterable)(request)) { + throw Error("A middleware passed invalid request to next(): expected a single message for client streaming method"); + } + const response = (0, makeCall_1.makeCall)(definition, channel, request, options); + let unaryResponse; + for await (const message of response) { + if (unaryResponse != null) { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.INTERNAL, "Received more than one message from server for client streaming method"); + } + unaryResponse = message; + } + if (unaryResponse == null) { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.INTERNAL, "Server did not return a response"); + } + return unaryResponse; + } + const method = middleware == null ? clientStreamingMethod : (request, options) => middleware({ + method: methodDescriptor, + requestStream: true, + request, + responseStream: false, + next: clientStreamingMethod + }, options); + return async (request, options) => { + const iterable = method(request, { + ...defaultOptions, + ...options + }); + const iterator = iterable[Symbol.asyncIterator](); + let result = await iterator.next(); + while (true) { + if (!result.done) { + result = await iterator.throw(new Error("A middleware yielded a message, but expected to only return a message for client streaming method")); + continue; + } + if (result.value == null) { + result = await iterator.throw(new Error("A middleware returned void, but expected to return a message for client streaming method")); + continue; + } + return result.value; + } + }; + } + } +}); + +// node_modules/nice-grpc-web/lib/utils/asyncIterableOf.js +var require_asyncIterableOf = __commonJS({ + "node_modules/nice-grpc-web/lib/utils/asyncIterableOf.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.asyncIterableOf = asyncIterableOf; + async function* asyncIterableOf(item) { + yield item; + } + } +}); + +// node_modules/nice-grpc-web/lib/client/createServerStreamingMethod.js +var require_createServerStreamingMethod = __commonJS({ + "node_modules/nice-grpc-web/lib/client/createServerStreamingMethod.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createServerStreamingMethod = createServerStreamingMethod; + var asyncIterableOf_1 = require_asyncIterableOf(); + var isAsyncIterable_1 = require_isAsyncIterable(); + var makeCall_1 = require_makeCall(); + function createServerStreamingMethod(definition, channel, middleware, defaultOptions) { + const methodDescriptor = { + path: definition.path, + requestStream: definition.requestStream, + responseStream: definition.responseStream, + options: definition.options + }; + async function* serverStreamingMethod(request, options) { + if ((0, isAsyncIterable_1.isAsyncIterable)(request)) { + throw new Error("A middleware passed invalid request to next(): expected a single message for server streaming method"); + } + const response = (0, makeCall_1.makeCall)(definition, channel, (0, asyncIterableOf_1.asyncIterableOf)(request), options); + yield* response; + } + const method = middleware == null ? serverStreamingMethod : (request, options) => middleware({ + method: methodDescriptor, + requestStream: false, + request, + responseStream: true, + next: serverStreamingMethod + }, options); + return (request, options) => { + const iterable = method(request, { + ...defaultOptions, + ...options + }); + const iterator = iterable[Symbol.asyncIterator](); + return { + [Symbol.asyncIterator]() { + return { + async next() { + const result = await iterator.next(); + if (result.done && result.value != null) { + return await iterator.throw(new Error("A middleware returned a message, but expected to return void for server streaming method")); + } + return result; + }, + return() { + return iterator.return(); + }, + throw(err) { + return iterator.throw(err); + } + }; + } + }; + }; + } + } +}); + +// node_modules/nice-grpc-web/lib/client/createUnaryMethod.js +var require_createUnaryMethod = __commonJS({ + "node_modules/nice-grpc-web/lib/client/createUnaryMethod.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createUnaryMethod = createUnaryMethod; + var nice_grpc_common_1 = require_lib2(); + var asyncIterableOf_1 = require_asyncIterableOf(); + var isAsyncIterable_1 = require_isAsyncIterable(); + var makeCall_1 = require_makeCall(); + function createUnaryMethod(definition, channel, middleware, defaultOptions) { + const methodDescriptor = { + path: definition.path, + requestStream: definition.requestStream, + responseStream: definition.responseStream, + options: definition.options + }; + async function* unaryMethod(request, options) { + if ((0, isAsyncIterable_1.isAsyncIterable)(request)) { + throw new Error("A middleware passed invalid request to next(): expected a single message for unary method"); + } + const response = (0, makeCall_1.makeCall)(definition, channel, (0, asyncIterableOf_1.asyncIterableOf)(request), options); + let unaryResponse; + for await (const message of response) { + if (unaryResponse != null) { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.INTERNAL, "Received more than one message from server for unary method"); + } + unaryResponse = message; + } + if (unaryResponse == null) { + throw new nice_grpc_common_1.ClientError(definition.path, nice_grpc_common_1.Status.INTERNAL, "Server did not return a response"); + } + return unaryResponse; + } + const method = middleware == null ? unaryMethod : (request, options) => middleware({ + method: methodDescriptor, + requestStream: false, + request, + responseStream: false, + next: unaryMethod + }, options); + return async (request, options) => { + const iterable = method(request, { + ...defaultOptions, + ...options + }); + const iterator = iterable[Symbol.asyncIterator](); + let result = await iterator.next(); + while (true) { + if (!result.done) { + result = await iterator.throw(new Error("A middleware yielded a message, but expected to only return a message for unary method")); + continue; + } + if (result.value == null) { + result = await iterator.throw(new Error("A middleware returned void, but expected to return a message for unary method")); + continue; + } + return result.value; + } + }; + } + } +}); + +// node_modules/nice-grpc-web/lib/client/ClientFactory.js +var require_ClientFactory = __commonJS({ + "node_modules/nice-grpc-web/lib/client/ClientFactory.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.createClientFactory = createClientFactory2; + exports.createClient = createClient; + var nice_grpc_common_1 = require_lib2(); + var service_definitions_1 = require_service_definitions(); + var createBidiStreamingMethod_1 = require_createBidiStreamingMethod(); + var createClientStreamingMethod_1 = require_createClientStreamingMethod(); + var createServerStreamingMethod_1 = require_createServerStreamingMethod(); + var createUnaryMethod_1 = require_createUnaryMethod(); + function createClientFactory2() { + return createClientFactoryWithMiddleware(); + } + function createClient(definition, channel, defaultCallOptions) { + return createClientFactory2().create(definition, channel, defaultCallOptions); + } + function createClientFactoryWithMiddleware(middleware) { + return { + use(newMiddleware) { + return createClientFactoryWithMiddleware(middleware == null ? newMiddleware : (0, nice_grpc_common_1.composeClientMiddleware)(middleware, newMiddleware)); + }, + create(definition, channel, defaultCallOptions = {}) { + const client = {}; + const methodEntries = Object.entries((0, service_definitions_1.normalizeServiceDefinition)(definition)); + for (const [methodName, methodDefinition] of methodEntries) { + const defaultOptions = { + ...defaultCallOptions["*"], + ...defaultCallOptions[methodName] + }; + if (!methodDefinition.requestStream) { + if (!methodDefinition.responseStream) { + client[methodName] = (0, createUnaryMethod_1.createUnaryMethod)(methodDefinition, channel, middleware, defaultOptions); + } else { + client[methodName] = (0, createServerStreamingMethod_1.createServerStreamingMethod)(methodDefinition, channel, middleware, defaultOptions); + } + } else { + if (!methodDefinition.responseStream) { + client[methodName] = (0, createClientStreamingMethod_1.createClientStreamingMethod)(methodDefinition, channel, middleware, defaultOptions); + } else { + client[methodName] = (0, createBidiStreamingMethod_1.createBidiStreamingMethod)(methodDefinition, channel, middleware, defaultOptions); + } + } + } + return client; + } + }; + } + } +}); + +// node_modules/nice-grpc-web/lib/client/Client.js +var require_Client = __commonJS({ + "node_modules/nice-grpc-web/lib/client/Client.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + } +}); + +// node_modules/isomorphic-ws/browser.js +var browser_exports = {}; +__export(browser_exports, { + default: () => browser_default +}); +var ws, browser_default; +var init_browser = __esm({ + "node_modules/isomorphic-ws/browser.js"() { + ws = null; + if (typeof WebSocket !== "undefined") { + ws = WebSocket; + } else if (typeof MozWebSocket !== "undefined") { + ws = MozWebSocket; + } else if (typeof global !== "undefined") { + ws = global.WebSocket || global.MozWebSocket; + } else if (typeof window !== "undefined") { + ws = window.WebSocket || window.MozWebSocket; + } else if (typeof self !== "undefined") { + ws = self.WebSocket || self.MozWebSocket; + } + browser_default = ws; + } +}); + +// node_modules/nice-grpc-web/lib/utils/AsyncSink.js +var require_AsyncSink = __commonJS({ + "node_modules/nice-grpc-web/lib/utils/AsyncSink.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.AsyncSink = void 0; + var ARRAY_VALUE = "value"; + var ARRAY_ERROR = "error"; + var AsyncSink = class { + constructor() { + this._ended = false; + this._values = []; + this._resolvers = []; + } + [Symbol.asyncIterator]() { + return this; + } + write(value) { + this._push({ type: ARRAY_VALUE, value }); + } + error(error) { + this._push({ type: ARRAY_ERROR, error }); + } + _push(item) { + if (this._ended) { + return; + } + if (this._resolvers.length > 0) { + const { resolve, reject } = this._resolvers.shift(); + if (item.type === ARRAY_ERROR) { + reject(item.error); + } else { + resolve({ done: false, value: item.value }); + } + } else { + this._values.push(item); + } + } + next() { + if (this._values.length > 0) { + const { type, value, error } = this._values.shift(); + if (type === ARRAY_ERROR) { + return Promise.reject(error); + } else { + return Promise.resolve({ done: false, value }); + } + } + if (this._ended) { + return Promise.resolve({ done: true }); + } + return new Promise((resolve, reject) => { + this._resolvers.push({ resolve, reject }); + }); + } + end() { + while (this._resolvers.length > 0) { + this._resolvers.shift().resolve({ done: true }); + } + this._ended = true; + } + }; + exports.AsyncSink = AsyncSink; + } +}); + +// node_modules/nice-grpc-web/lib/client/transports/websocket.js +var require_websocket = __commonJS({ + "node_modules/nice-grpc-web/lib/client/transports/websocket.js"(exports) { + "use strict"; + var __importDefault = exports && exports.__importDefault || function(mod2) { + return mod2 && mod2.__esModule ? mod2 : { "default": mod2 }; + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.WebsocketTransport = WebsocketTransport; + var abort_controller_x_1 = require_lib(); + var isomorphic_ws_1 = __importDefault((init_browser(), __toCommonJS(browser_exports))); + var js_base64_1 = require_base64(); + var AsyncSink_1 = require_AsyncSink(); + function WebsocketTransport() { + return async function* ({ url, body, metadata, signal }) { + if (signal.aborted) { + throw new abort_controller_x_1.AbortError(); + } + const frames = new AsyncSink_1.AsyncSink(); + signal.addEventListener("abort", () => { + frames.error(new abort_controller_x_1.AbortError()); + }); + const websocketUrl = new URL(url); + websocketUrl.protocol = websocketUrl.protocol.replace("http", "ws"); + const webSocket = new isomorphic_ws_1.default(websocketUrl, ["grpc-websockets"]); + webSocket.binaryType = "arraybuffer"; + webSocket.addEventListener("message", (event) => { + if (event.data instanceof ArrayBuffer) { + frames.write({ + type: "data", + data: new Uint8Array(event.data) + }); + } else { + frames.error(new Error(`Unexpected message type: ${typeof event.data}`)); + } + }); + webSocket.addEventListener("close", (event) => { + if (event.wasClean) { + frames.end(); + } else { + frames.error(new Error(`WebSocket closed with code ${event.code}` + (event.reason && `: ${event.reason}`))); + } + }); + const pipeAbortController = new AbortController(); + pipeBody(pipeAbortController.signal, metadata, body, webSocket).catch((err) => { + if (!(0, abort_controller_x_1.isAbortError)(err)) { + frames.error(err); + } + }); + try { + return yield* frames; + } finally { + pipeAbortController.abort(); + if (webSocket.readyState === isomorphic_ws_1.default.OPEN || webSocket.readyState === isomorphic_ws_1.default.CONNECTING) { + webSocket.close(); + } + } + }; + } + function sendIfOpen(webSocket, data) { + if (webSocket.readyState === isomorphic_ws_1.default.OPEN) { + webSocket.send(data); + } + } + async function pipeBody(signal, metadata, body, webSocket) { + if (webSocket.readyState == isomorphic_ws_1.default.CONNECTING) { + await (0, abort_controller_x_1.waitForEvent)(signal, webSocket, "open"); + } + sendIfOpen(webSocket, encodeMetadata(metadata)); + for await (const chunk of body) { + (0, abort_controller_x_1.throwIfAborted)(signal); + const data = new Uint8Array(chunk.length + 1); + data.set([0], 0); + data.set(chunk, 1); + sendIfOpen(webSocket, data); + } + sendIfOpen(webSocket, new Uint8Array([1])); + } + function encodeMetadata(metadata) { + let result = ""; + for (const [key, values] of metadata) { + for (const value of values) { + const valueString = typeof value === "string" ? value : js_base64_1.Base64.fromUint8Array(value); + const pairString = `${key}: ${valueString}\r +`; + for (let i = 0; i < pairString.length; i++) { + const charCode = pairString.charCodeAt(i); + if (!isValidCharCode(charCode)) { + throw new Error(`Metadata contains invalid characters: '${pairString}'`); + } + } + result += pairString; + } + } + return new TextEncoder().encode(result); + } + function isValidCharCode(val) { + return val === 9 || val === 10 || val === 13 || val >= 32 && val <= 126; + } + } +}); + +// node_modules/nice-grpc-web/lib/client/transports/nodeHttp/browser.js +var require_browser = __commonJS({ + "node_modules/nice-grpc-web/lib/client/transports/nodeHttp/browser.js"(exports) { + "use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NodeHttpTransport = NodeHttpTransport; + function NodeHttpTransport() { + throw new Error("NodeHttpTransport is not supported in the browser"); + } + } +}); + +// node_modules/nice-grpc-web/lib/index.js +var require_lib4 = __commonJS({ + "node_modules/nice-grpc-web/lib/index.js"(exports) { + "use strict"; + var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m2, k2, k22) { + if (k22 === void 0) k22 = k2; + var desc = Object.getOwnPropertyDescriptor(m2, k2); + if (!desc || ("get" in desc ? !m2.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m2[k2]; + } }; + } + Object.defineProperty(o, k22, desc); + } : function(o, m2, k2, k22) { + if (k22 === void 0) k22 = k2; + o[k22] = m2[k2]; + }); + var __exportStar = exports && exports.__exportStar || function(m2, exports2) { + for (var p2 in m2) if (p2 !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p2)) __createBinding(exports2, m2, p2); + }; + Object.defineProperty(exports, "__esModule", { value: true }); + exports.NodeHttpTransport = exports.WebsocketTransport = exports.FetchTransport = exports.Status = exports.Metadata = exports.composeClientMiddleware = exports.ClientError = void 0; + var nice_grpc_common_1 = require_lib2(); + Object.defineProperty(exports, "ClientError", { enumerable: true, get: function() { + return nice_grpc_common_1.ClientError; + } }); + Object.defineProperty(exports, "composeClientMiddleware", { enumerable: true, get: function() { + return nice_grpc_common_1.composeClientMiddleware; + } }); + Object.defineProperty(exports, "Metadata", { enumerable: true, get: function() { + return nice_grpc_common_1.Metadata; + } }); + Object.defineProperty(exports, "Status", { enumerable: true, get: function() { + return nice_grpc_common_1.Status; + } }); + __exportStar(require_service_definitions(), exports); + __exportStar(require_channel(), exports); + __exportStar(require_ClientFactory(), exports); + __exportStar(require_Client(), exports); + var fetch_1 = require_fetch(); + Object.defineProperty(exports, "FetchTransport", { enumerable: true, get: function() { + return fetch_1.FetchTransport; + } }); + var websocket_1 = require_websocket(); + Object.defineProperty(exports, "WebsocketTransport", { enumerable: true, get: function() { + return websocket_1.WebsocketTransport; + } }); + var nodeHttp_1 = require_browser(); + Object.defineProperty(exports, "NodeHttpTransport", { enumerable: true, get: function() { + return nodeHttp_1.NodeHttpTransport; + } }); + } +}); + +// node_modules/long/index.js +var wasm = null; +try { + wasm = new WebAssembly.Instance( + new WebAssembly.Module( + new Uint8Array([ + // \0asm + 0, + 97, + 115, + 109, + // version 1 + 1, + 0, + 0, + 0, + // section "type" + 1, + 13, + 2, + // 0, () => i32 + 96, + 0, + 1, + 127, + // 1, (i32, i32, i32, i32) => i32 + 96, + 4, + 127, + 127, + 127, + 127, + 1, + 127, + // section "function" + 3, + 7, + 6, + // 0, type 0 + 0, + // 1, type 1 + 1, + // 2, type 1 + 1, + // 3, type 1 + 1, + // 4, type 1 + 1, + // 5, type 1 + 1, + // section "global" + 6, + 6, + 1, + // 0, "high", mutable i32 + 127, + 1, + 65, + 0, + 11, + // section "export" + 7, + 50, + 6, + // 0, "mul" + 3, + 109, + 117, + 108, + 0, + 1, + // 1, "div_s" + 5, + 100, + 105, + 118, + 95, + 115, + 0, + 2, + // 2, "div_u" + 5, + 100, + 105, + 118, + 95, + 117, + 0, + 3, + // 3, "rem_s" + 5, + 114, + 101, + 109, + 95, + 115, + 0, + 4, + // 4, "rem_u" + 5, + 114, + 101, + 109, + 95, + 117, + 0, + 5, + // 5, "get_high" + 8, + 103, + 101, + 116, + 95, + 104, + 105, + 103, + 104, + 0, + 0, + // section "code" + 10, + 191, + 1, + 6, + // 0, "get_high" + 4, + 0, + 35, + 0, + 11, + // 1, "mul" + 36, + 1, + 1, + 126, + 32, + 0, + 173, + 32, + 1, + 173, + 66, + 32, + 134, + 132, + 32, + 2, + 173, + 32, + 3, + 173, + 66, + 32, + 134, + 132, + 126, + 34, + 4, + 66, + 32, + 135, + 167, + 36, + 0, + 32, + 4, + 167, + 11, + // 2, "div_s" + 36, + 1, + 1, + 126, + 32, + 0, + 173, + 32, + 1, + 173, + 66, + 32, + 134, + 132, + 32, + 2, + 173, + 32, + 3, + 173, + 66, + 32, + 134, + 132, + 127, + 34, + 4, + 66, + 32, + 135, + 167, + 36, + 0, + 32, + 4, + 167, + 11, + // 3, "div_u" + 36, + 1, + 1, + 126, + 32, + 0, + 173, + 32, + 1, + 173, + 66, + 32, + 134, + 132, + 32, + 2, + 173, + 32, + 3, + 173, + 66, + 32, + 134, + 132, + 128, + 34, + 4, + 66, + 32, + 135, + 167, + 36, + 0, + 32, + 4, + 167, + 11, + // 4, "rem_s" + 36, + 1, + 1, + 126, + 32, + 0, + 173, + 32, + 1, + 173, + 66, + 32, + 134, + 132, + 32, + 2, + 173, + 32, + 3, + 173, + 66, + 32, + 134, + 132, + 129, + 34, + 4, + 66, + 32, + 135, + 167, + 36, + 0, + 32, + 4, + 167, + 11, + // 5, "rem_u" + 36, + 1, + 1, + 126, + 32, + 0, + 173, + 32, + 1, + 173, + 66, + 32, + 134, + 132, + 32, + 2, + 173, + 32, + 3, + 173, + 66, + 32, + 134, + 132, + 130, + 34, + 4, + 66, + 32, + 135, + 167, + 36, + 0, + 32, + 4, + 167, + 11 + ]) + ), + {} + ).exports; +} catch { +} +function Long(low, high, unsigned) { + this.low = low | 0; + this.high = high | 0; + this.unsigned = !!unsigned; +} +Long.prototype.__isLong__; +Object.defineProperty(Long.prototype, "__isLong__", { value: true }); +function isLong(obj) { + return (obj && obj["__isLong__"]) === true; +} +function ctz32(value) { + var c = Math.clz32(value & -value); + return value ? 31 - c : c; +} +Long.isLong = isLong; +var INT_CACHE = {}; +var UINT_CACHE = {}; +function fromInt(value, unsigned) { + var obj, cachedObj, cache; + if (unsigned) { + value >>>= 0; + if (cache = 0 <= value && value < 256) { + cachedObj = UINT_CACHE[value]; + if (cachedObj) return cachedObj; + } + obj = fromBits(value, 0, true); + if (cache) UINT_CACHE[value] = obj; + return obj; + } else { + value |= 0; + if (cache = -128 <= value && value < 128) { + cachedObj = INT_CACHE[value]; + if (cachedObj) return cachedObj; + } + obj = fromBits(value, value < 0 ? -1 : 0, false); + if (cache) INT_CACHE[value] = obj; + return obj; + } +} +Long.fromInt = fromInt; +function fromNumber(value, unsigned) { + if (isNaN(value)) return unsigned ? UZERO : ZERO; + if (unsigned) { + if (value < 0) return UZERO; + if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE; + } else { + if (value <= -TWO_PWR_63_DBL) return MIN_VALUE; + if (value + 1 >= TWO_PWR_63_DBL) return MAX_VALUE; + } + if (value < 0) return fromNumber(-value, unsigned).neg(); + return fromBits( + value % TWO_PWR_32_DBL | 0, + value / TWO_PWR_32_DBL | 0, + unsigned + ); +} +Long.fromNumber = fromNumber; +function fromBits(lowBits, highBits, unsigned) { + return new Long(lowBits, highBits, unsigned); +} +Long.fromBits = fromBits; +var pow_dbl = Math.pow; +function fromString(str, unsigned, radix) { + if (str.length === 0) throw Error("empty string"); + if (typeof unsigned === "number") { + radix = unsigned; + unsigned = false; + } else { + unsigned = !!unsigned; + } + if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") + return unsigned ? UZERO : ZERO; + radix = radix || 10; + if (radix < 2 || 36 < radix) throw RangeError("radix"); + var p2; + if ((p2 = str.indexOf("-")) > 0) throw Error("interior hyphen"); + else if (p2 === 0) { + return fromString(str.substring(1), unsigned, radix).neg(); + } + var radixToPower = fromNumber(pow_dbl(radix, 8)); + var result = ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i), value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = fromNumber(pow_dbl(radix, size)); + result = result.mul(power).add(fromNumber(value)); + } else { + result = result.mul(radixToPower); + result = result.add(fromNumber(value)); + } + } + result.unsigned = unsigned; + return result; +} +Long.fromString = fromString; +function fromValue(val, unsigned) { + if (typeof val === "number") return fromNumber(val, unsigned); + if (typeof val === "string") return fromString(val, unsigned); + return fromBits( + val.low, + val.high, + typeof unsigned === "boolean" ? unsigned : val.unsigned + ); +} +Long.fromValue = fromValue; +var TWO_PWR_16_DBL = 1 << 16; +var TWO_PWR_24_DBL = 1 << 24; +var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; +var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; +var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; +var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); +var ZERO = fromInt(0); +Long.ZERO = ZERO; +var UZERO = fromInt(0, true); +Long.UZERO = UZERO; +var ONE = fromInt(1); +Long.ONE = ONE; +var UONE = fromInt(1, true); +Long.UONE = UONE; +var NEG_ONE = fromInt(-1); +Long.NEG_ONE = NEG_ONE; +var MAX_VALUE = fromBits(4294967295 | 0, 2147483647 | 0, false); +Long.MAX_VALUE = MAX_VALUE; +var MAX_UNSIGNED_VALUE = fromBits(4294967295 | 0, 4294967295 | 0, true); +Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; +var MIN_VALUE = fromBits(0, 2147483648 | 0, false); +Long.MIN_VALUE = MIN_VALUE; +var LongPrototype = Long.prototype; +LongPrototype.toInt = function toInt() { + return this.unsigned ? this.low >>> 0 : this.low; +}; +LongPrototype.toNumber = function toNumber() { + if (this.unsigned) + return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0); + return this.high * TWO_PWR_32_DBL + (this.low >>> 0); +}; +LongPrototype.toString = function toString(radix) { + radix = radix || 10; + if (radix < 2 || 36 < radix) throw RangeError("radix"); + if (this.isZero()) return "0"; + if (this.isNegative()) { + if (this.eq(MIN_VALUE)) { + var radixLong = fromNumber(radix), div = this.div(radixLong), rem1 = div.mul(radixLong).sub(this); + return div.toString(radix) + rem1.toInt().toString(radix); + } else return "-" + this.neg().toString(radix); + } + var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), rem = this; + var result = ""; + while (true) { + var remDiv = rem.div(radixToPower), intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, digits = intval.toString(radix); + rem = remDiv; + if (rem.isZero()) return digits + result; + else { + while (digits.length < 6) digits = "0" + digits; + result = "" + digits + result; + } + } +}; +LongPrototype.getHighBits = function getHighBits() { + return this.high; +}; +LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() { + return this.high >>> 0; +}; +LongPrototype.getLowBits = function getLowBits() { + return this.low; +}; +LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() { + return this.low >>> 0; +}; +LongPrototype.getNumBitsAbs = function getNumBitsAbs() { + if (this.isNegative()) + return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); + var val = this.high != 0 ? this.high : this.low; + for (var bit = 31; bit > 0; bit--) if ((val & 1 << bit) != 0) break; + return this.high != 0 ? bit + 33 : bit + 1; +}; +LongPrototype.isSafeInteger = function isSafeInteger() { + var top11Bits = this.high >> 21; + if (!top11Bits) return true; + if (this.unsigned) return false; + return top11Bits === -1 && !(this.low === 0 && this.high === -2097152); +}; +LongPrototype.isZero = function isZero() { + return this.high === 0 && this.low === 0; +}; +LongPrototype.eqz = LongPrototype.isZero; +LongPrototype.isNegative = function isNegative() { + return !this.unsigned && this.high < 0; +}; +LongPrototype.isPositive = function isPositive() { + return this.unsigned || this.high >= 0; +}; +LongPrototype.isOdd = function isOdd() { + return (this.low & 1) === 1; +}; +LongPrototype.isEven = function isEven() { + return (this.low & 1) === 0; +}; +LongPrototype.equals = function equals(other) { + if (!isLong(other)) other = fromValue(other); + if (this.unsigned !== other.unsigned && this.high >>> 31 === 1 && other.high >>> 31 === 1) + return false; + return this.high === other.high && this.low === other.low; +}; +LongPrototype.eq = LongPrototype.equals; +LongPrototype.notEquals = function notEquals(other) { + return !this.eq( + /* validates */ + other + ); +}; +LongPrototype.neq = LongPrototype.notEquals; +LongPrototype.ne = LongPrototype.notEquals; +LongPrototype.lessThan = function lessThan(other) { + return this.comp( + /* validates */ + other + ) < 0; +}; +LongPrototype.lt = LongPrototype.lessThan; +LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { + return this.comp( + /* validates */ + other + ) <= 0; +}; +LongPrototype.lte = LongPrototype.lessThanOrEqual; +LongPrototype.le = LongPrototype.lessThanOrEqual; +LongPrototype.greaterThan = function greaterThan(other) { + return this.comp( + /* validates */ + other + ) > 0; +}; +LongPrototype.gt = LongPrototype.greaterThan; +LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { + return this.comp( + /* validates */ + other + ) >= 0; +}; +LongPrototype.gte = LongPrototype.greaterThanOrEqual; +LongPrototype.ge = LongPrototype.greaterThanOrEqual; +LongPrototype.compare = function compare(other) { + if (!isLong(other)) other = fromValue(other); + if (this.eq(other)) return 0; + var thisNeg = this.isNegative(), otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) return -1; + if (!thisNeg && otherNeg) return 1; + if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1; + return other.high >>> 0 > this.high >>> 0 || other.high === this.high && other.low >>> 0 > this.low >>> 0 ? -1 : 1; +}; +LongPrototype.comp = LongPrototype.compare; +LongPrototype.negate = function negate() { + if (!this.unsigned && this.eq(MIN_VALUE)) return MIN_VALUE; + return this.not().add(ONE); +}; +LongPrototype.neg = LongPrototype.negate; +LongPrototype.add = function add(addend) { + if (!isLong(addend)) addend = fromValue(addend); + var a48 = this.high >>> 16; + var a32 = this.high & 65535; + var a16 = this.low >>> 16; + var a00 = this.low & 65535; + var b48 = addend.high >>> 16; + var b32 = addend.high & 65535; + var b16 = addend.low >>> 16; + var b00 = addend.low & 65535; + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 65535; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 65535; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 65535; + c48 += a48 + b48; + c48 &= 65535; + return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned); +}; +LongPrototype.subtract = function subtract(subtrahend) { + if (!isLong(subtrahend)) subtrahend = fromValue(subtrahend); + return this.add(subtrahend.neg()); +}; +LongPrototype.sub = LongPrototype.subtract; +LongPrototype.multiply = function multiply(multiplier) { + if (this.isZero()) return this; + if (!isLong(multiplier)) multiplier = fromValue(multiplier); + if (wasm) { + var low = wasm["mul"](this.low, this.high, multiplier.low, multiplier.high); + return fromBits(low, wasm["get_high"](), this.unsigned); + } + if (multiplier.isZero()) return this.unsigned ? UZERO : ZERO; + if (this.eq(MIN_VALUE)) return multiplier.isOdd() ? MIN_VALUE : ZERO; + if (multiplier.eq(MIN_VALUE)) return this.isOdd() ? MIN_VALUE : ZERO; + if (this.isNegative()) { + if (multiplier.isNegative()) return this.neg().mul(multiplier.neg()); + else return this.neg().mul(multiplier).neg(); + } else if (multiplier.isNegative()) return this.mul(multiplier.neg()).neg(); + if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) + return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); + var a48 = this.high >>> 16; + var a32 = this.high & 65535; + var a16 = this.low >>> 16; + var a00 = this.low & 65535; + var b48 = multiplier.high >>> 16; + var b32 = multiplier.high & 65535; + var b16 = multiplier.low >>> 16; + var b00 = multiplier.low & 65535; + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 65535; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 65535; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 65535; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 65535; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 65535; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 65535; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 65535; + return fromBits(c16 << 16 | c00, c48 << 16 | c32, this.unsigned); +}; +LongPrototype.mul = LongPrototype.multiply; +LongPrototype.divide = function divide(divisor) { + if (!isLong(divisor)) divisor = fromValue(divisor); + if (divisor.isZero()) throw Error("division by zero"); + if (wasm) { + if (!this.unsigned && this.high === -2147483648 && divisor.low === -1 && divisor.high === -1) { + return this; + } + var low = (this.unsigned ? wasm["div_u"] : wasm["div_s"])( + this.low, + this.high, + divisor.low, + divisor.high + ); + return fromBits(low, wasm["get_high"](), this.unsigned); + } + if (this.isZero()) return this.unsigned ? UZERO : ZERO; + var approx, rem, res; + if (!this.unsigned) { + if (this.eq(MIN_VALUE)) { + if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) + return MIN_VALUE; + else if (divisor.eq(MIN_VALUE)) return ONE; + else { + var halfThis = this.shr(1); + approx = halfThis.div(divisor).shl(1); + if (approx.eq(ZERO)) { + return divisor.isNegative() ? ONE : NEG_ONE; + } else { + rem = this.sub(divisor.mul(approx)); + res = approx.add(rem.div(divisor)); + return res; + } + } + } else if (divisor.eq(MIN_VALUE)) return this.unsigned ? UZERO : ZERO; + if (this.isNegative()) { + if (divisor.isNegative()) return this.neg().div(divisor.neg()); + return this.neg().div(divisor).neg(); + } else if (divisor.isNegative()) return this.div(divisor.neg()).neg(); + res = ZERO; + } else { + if (!divisor.unsigned) divisor = divisor.toUnsigned(); + if (divisor.gt(this)) return UZERO; + if (divisor.gt(this.shru(1))) + return UONE; + res = UZERO; + } + rem = this; + while (rem.gte(divisor)) { + approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); + var log2 = Math.ceil(Math.log(approx) / Math.LN2), delta = log2 <= 48 ? 1 : pow_dbl(2, log2 - 48), approxRes = fromNumber(approx), approxRem = approxRes.mul(divisor); + while (approxRem.isNegative() || approxRem.gt(rem)) { + approx -= delta; + approxRes = fromNumber(approx, this.unsigned); + approxRem = approxRes.mul(divisor); + } + if (approxRes.isZero()) approxRes = ONE; + res = res.add(approxRes); + rem = rem.sub(approxRem); + } + return res; +}; +LongPrototype.div = LongPrototype.divide; +LongPrototype.modulo = function modulo(divisor) { + if (!isLong(divisor)) divisor = fromValue(divisor); + if (wasm) { + var low = (this.unsigned ? wasm["rem_u"] : wasm["rem_s"])( + this.low, + this.high, + divisor.low, + divisor.high + ); + return fromBits(low, wasm["get_high"](), this.unsigned); + } + return this.sub(this.div(divisor).mul(divisor)); +}; +LongPrototype.mod = LongPrototype.modulo; +LongPrototype.rem = LongPrototype.modulo; +LongPrototype.not = function not() { + return fromBits(~this.low, ~this.high, this.unsigned); +}; +LongPrototype.countLeadingZeros = function countLeadingZeros() { + return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32; +}; +LongPrototype.clz = LongPrototype.countLeadingZeros; +LongPrototype.countTrailingZeros = function countTrailingZeros() { + return this.low ? ctz32(this.low) : ctz32(this.high) + 32; +}; +LongPrototype.ctz = LongPrototype.countTrailingZeros; +LongPrototype.and = function and(other) { + if (!isLong(other)) other = fromValue(other); + return fromBits(this.low & other.low, this.high & other.high, this.unsigned); +}; +LongPrototype.or = function or(other) { + if (!isLong(other)) other = fromValue(other); + return fromBits(this.low | other.low, this.high | other.high, this.unsigned); +}; +LongPrototype.xor = function xor(other) { + if (!isLong(other)) other = fromValue(other); + return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); +}; +LongPrototype.shiftLeft = function shiftLeft(numBits) { + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + else if (numBits < 32) + return fromBits( + this.low << numBits, + this.high << numBits | this.low >>> 32 - numBits, + this.unsigned + ); + else return fromBits(0, this.low << numBits - 32, this.unsigned); +}; +LongPrototype.shl = LongPrototype.shiftLeft; +LongPrototype.shiftRight = function shiftRight(numBits) { + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + else if (numBits < 32) + return fromBits( + this.low >>> numBits | this.high << 32 - numBits, + this.high >> numBits, + this.unsigned + ); + else + return fromBits( + this.high >> numBits - 32, + this.high >= 0 ? 0 : -1, + this.unsigned + ); +}; +LongPrototype.shr = LongPrototype.shiftRight; +LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + if (numBits < 32) + return fromBits( + this.low >>> numBits | this.high << 32 - numBits, + this.high >>> numBits, + this.unsigned + ); + if (numBits === 32) return fromBits(this.high, 0, this.unsigned); + return fromBits(this.high >>> numBits - 32, 0, this.unsigned); +}; +LongPrototype.shru = LongPrototype.shiftRightUnsigned; +LongPrototype.shr_u = LongPrototype.shiftRightUnsigned; +LongPrototype.rotateLeft = function rotateLeft(numBits) { + var b2; + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + if (numBits === 32) return fromBits(this.high, this.low, this.unsigned); + if (numBits < 32) { + b2 = 32 - numBits; + return fromBits( + this.low << numBits | this.high >>> b2, + this.high << numBits | this.low >>> b2, + this.unsigned + ); + } + numBits -= 32; + b2 = 32 - numBits; + return fromBits( + this.high << numBits | this.low >>> b2, + this.low << numBits | this.high >>> b2, + this.unsigned + ); +}; +LongPrototype.rotl = LongPrototype.rotateLeft; +LongPrototype.rotateRight = function rotateRight(numBits) { + var b2; + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + if (numBits === 32) return fromBits(this.high, this.low, this.unsigned); + if (numBits < 32) { + b2 = 32 - numBits; + return fromBits( + this.high << b2 | this.low >>> numBits, + this.low << b2 | this.high >>> numBits, + this.unsigned + ); + } + numBits -= 32; + b2 = 32 - numBits; + return fromBits( + this.low << b2 | this.high >>> numBits, + this.high << b2 | this.low >>> numBits, + this.unsigned + ); +}; +LongPrototype.rotr = LongPrototype.rotateRight; +LongPrototype.toSigned = function toSigned() { + if (!this.unsigned) return this; + return fromBits(this.low, this.high, false); +}; +LongPrototype.toUnsigned = function toUnsigned() { + if (this.unsigned) return this; + return fromBits(this.low, this.high, true); +}; +LongPrototype.toBytes = function toBytes(le) { + return le ? this.toBytesLE() : this.toBytesBE(); +}; +LongPrototype.toBytesLE = function toBytesLE() { + var hi2 = this.high, lo2 = this.low; + return [ + lo2 & 255, + lo2 >>> 8 & 255, + lo2 >>> 16 & 255, + lo2 >>> 24, + hi2 & 255, + hi2 >>> 8 & 255, + hi2 >>> 16 & 255, + hi2 >>> 24 + ]; +}; +LongPrototype.toBytesBE = function toBytesBE() { + var hi2 = this.high, lo2 = this.low; + return [ + hi2 >>> 24, + hi2 >>> 16 & 255, + hi2 >>> 8 & 255, + hi2 & 255, + lo2 >>> 24, + lo2 >>> 16 & 255, + lo2 >>> 8 & 255, + lo2 & 255 + ]; +}; +Long.fromBytes = function fromBytes(bytes, unsigned, le) { + return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned); +}; +Long.fromBytesLE = function fromBytesLE(bytes, unsigned) { + return new Long( + bytes[0] | bytes[1] << 8 | bytes[2] << 16 | bytes[3] << 24, + bytes[4] | bytes[5] << 8 | bytes[6] << 16 | bytes[7] << 24, + unsigned + ); +}; +Long.fromBytesBE = function fromBytesBE(bytes, unsigned) { + return new Long( + bytes[4] << 24 | bytes[5] << 16 | bytes[6] << 8 | bytes[7], + bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], + unsigned + ); +}; +if (typeof BigInt === "function") { + Long.fromBigInt = function fromBigInt(value, unsigned) { + var lowBits = Number(BigInt.asIntN(32, value)); + var highBits = Number(BigInt.asIntN(32, value >> BigInt(32))); + return fromBits(lowBits, highBits, unsigned); + }; + Long.fromValue = function fromValueWithBigInt(value, unsigned) { + if (typeof value === "bigint") return Long.fromBigInt(value, unsigned); + return fromValue(value, unsigned); + }; + LongPrototype.toBigInt = function toBigInt() { + var lowBigInt = BigInt(this.low >>> 0); + var highBigInt = BigInt(this.unsigned ? this.high >>> 0 : this.high); + return highBigInt << BigInt(32) | lowBigInt; + }; +} +var long_default = Long; + +// static/playground/weaviate-client.web.js +var import_abort_controller_x = __toESM(require_lib()); + +// node_modules/uuid/dist/regex.js +var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i; + +// node_modules/uuid/dist/validate.js +function validate(uuid) { + return typeof uuid === "string" && regex_default.test(uuid); +} +var validate_default = validate; + +// node_modules/uuid/dist/parse.js +function parse(uuid) { + if (!validate_default(uuid)) { + throw TypeError("Invalid UUID"); + } + let v2; + return Uint8Array.of((v2 = parseInt(uuid.slice(0, 8), 16)) >>> 24, v2 >>> 16 & 255, v2 >>> 8 & 255, v2 & 255, (v2 = parseInt(uuid.slice(9, 13), 16)) >>> 8, v2 & 255, (v2 = parseInt(uuid.slice(14, 18), 16)) >>> 8, v2 & 255, (v2 = parseInt(uuid.slice(19, 23), 16)) >>> 8, v2 & 255, (v2 = parseInt(uuid.slice(24, 36), 16)) / 1099511627776 & 255, v2 / 4294967296 & 255, v2 >>> 24 & 255, v2 >>> 16 & 255, v2 >>> 8 & 255, v2 & 255); +} +var parse_default = parse; + +// node_modules/uuid/dist/stringify.js +var byteToHex = []; +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 256).toString(16).slice(1)); +} +function unsafeStringify(arr, offset = 0) { + return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); +} +function stringify(arr, offset = 0) { + const uuid = unsafeStringify(arr, offset); + if (!validate_default(uuid)) { + throw TypeError("Stringified UUID is invalid"); + } + return uuid; +} +var stringify_default = stringify; + +// node_modules/uuid/dist/rng.js +var getRandomValues; +var rnds8 = new Uint8Array(16); +function rng() { + if (!getRandomValues) { + if (typeof crypto === "undefined" || !crypto.getRandomValues) { + throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); + } + getRandomValues = crypto.getRandomValues.bind(crypto); + } + return getRandomValues(rnds8); +} + +// node_modules/uuid/dist/v35.js +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); + const bytes = new Uint8Array(str.length); + for (let i = 0; i < str.length; ++i) { + bytes[i] = str.charCodeAt(i); + } + return bytes; +} +var DNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"; +var URL2 = "6ba7b811-9dad-11d1-80b4-00c04fd430c8"; +function v35(version, hash, value, namespace, buf, offset) { + const valueBytes = typeof value === "string" ? stringToBytes(value) : value; + const namespaceBytes = typeof namespace === "string" ? parse_default(namespace) : namespace; + if (typeof namespace === "string") { + namespace = parse_default(namespace); + } + if (namespace?.length !== 16) { + throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)"); + } + let bytes = new Uint8Array(16 + valueBytes.length); + bytes.set(namespaceBytes); + bytes.set(valueBytes, namespaceBytes.length); + bytes = hash(bytes); + bytes[6] = bytes[6] & 15 | version; + bytes[8] = bytes[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + return buf; + } + return unsafeStringify(bytes); +} + +// node_modules/uuid/dist/native.js +var randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); +var native_default = { randomUUID }; + +// node_modules/uuid/dist/v4.js +function _v4(options, buf, offset) { + options = options || {}; + const rnds = options.random ?? options.rng?.() ?? rng(); + if (rnds.length < 16) { + throw new Error("Random bytes length must be >= 16"); + } + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + if (buf) { + offset = offset || 0; + if (offset < 0 || offset + 16 > buf.length) { + throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`); + } + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + return buf; + } + return unsafeStringify(rnds); +} +function v4(options, buf, offset) { + if (native_default.randomUUID && !buf && !options) { + return native_default.randomUUID(); + } + return _v4(options, buf, offset); +} +var v4_default = v4; + +// node_modules/uuid/dist/sha1.js +function f(s, x2, y, z) { + switch (s) { + case 0: + return x2 & y ^ ~x2 & z; + case 1: + return x2 ^ y ^ z; + case 2: + return x2 & y ^ x2 & z ^ y & z; + case 3: + return x2 ^ y ^ z; + } +} +function ROTL(x2, n) { + return x2 << n | x2 >>> 32 - n; +} +function sha1(bytes) { + const K2 = [1518500249, 1859775393, 2400959708, 3395469782]; + const H2 = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; + const newBytes = new Uint8Array(bytes.length + 1); + newBytes.set(bytes); + newBytes[bytes.length] = 128; + bytes = newBytes; + const l2 = bytes.length / 4 + 2; + const N2 = Math.ceil(l2 / 16); + const M2 = new Array(N2); + for (let i = 0; i < N2; ++i) { + const arr = new Uint32Array(16); + for (let j = 0; j < 16; ++j) { + arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3]; + } + M2[i] = arr; + } + M2[N2 - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32); + M2[N2 - 1][14] = Math.floor(M2[N2 - 1][14]); + M2[N2 - 1][15] = (bytes.length - 1) * 8 & 4294967295; + for (let i = 0; i < N2; ++i) { + const W2 = new Uint32Array(80); + for (let t = 0; t < 16; ++t) { + W2[t] = M2[i][t]; + } + for (let t = 16; t < 80; ++t) { + W2[t] = ROTL(W2[t - 3] ^ W2[t - 8] ^ W2[t - 14] ^ W2[t - 16], 1); + } + let a = H2[0]; + let b2 = H2[1]; + let c = H2[2]; + let d2 = H2[3]; + let e24 = H2[4]; + for (let t = 0; t < 80; ++t) { + const s = Math.floor(t / 20); + const T2 = ROTL(a, 5) + f(s, b2, c, d2) + e24 + K2[s] + W2[t] >>> 0; + e24 = d2; + d2 = c; + c = ROTL(b2, 30) >>> 0; + b2 = a; + a = T2; + } + H2[0] = H2[0] + a >>> 0; + H2[1] = H2[1] + b2 >>> 0; + H2[2] = H2[2] + c >>> 0; + H2[3] = H2[3] + d2 >>> 0; + H2[4] = H2[4] + e24 >>> 0; + } + return Uint8Array.of(H2[0] >> 24, H2[0] >> 16, H2[0] >> 8, H2[0], H2[1] >> 24, H2[1] >> 16, H2[1] >> 8, H2[1], H2[2] >> 24, H2[2] >> 16, H2[2] >> 8, H2[2], H2[3] >> 24, H2[3] >> 16, H2[3] >> 8, H2[3], H2[4] >> 24, H2[4] >> 16, H2[4] >> 8, H2[4]); +} +var sha1_default = sha1; + +// node_modules/uuid/dist/v5.js +function v5(value, namespace, buf, offset) { + return v35(80, sha1_default, value, namespace, buf, offset); +} +v5.DNS = DNS; +v5.URL = URL2; +var v5_default = v5; + +// static/playground/weaviate-client.web.js +var import_deque = __toESM(require_deque2()); + +// node_modules/graphql-request/build/esm/defaultJsonSerializer.js +var defaultJsonSerializer = JSON; + +// node_modules/graphql-request/build/esm/helpers.js +var uppercase = (str) => str.toUpperCase(); +var HeadersInstanceToPlainObject = (headers) => { + const o = {}; + headers.forEach((v2, k2) => { + o[k2] = v2; + }); + return o; +}; + +// node_modules/graphql-request/build/esm/parseArgs.js +var parseRequestArgs = (documentOrOptions, variables, requestHeaders) => { + return documentOrOptions.document ? documentOrOptions : { + document: documentOrOptions, + variables, + requestHeaders, + signal: void 0 + }; +}; +var parseRawRequestArgs = (queryOrOptions, variables, requestHeaders) => { + return queryOrOptions.query ? queryOrOptions : { + query: queryOrOptions, + variables, + requestHeaders, + signal: void 0 + }; +}; +var parseBatchRequestArgs = (documentsOrOptions, requestHeaders) => { + return documentsOrOptions.documents ? documentsOrOptions : { + documents: documentsOrOptions, + requestHeaders, + signal: void 0 + }; +}; + +// node_modules/graphql/jsutils/devAssert.mjs +function devAssert(condition, message) { + const booleanCondition = Boolean(condition); + if (!booleanCondition) { + throw new Error(message); + } +} + +// node_modules/graphql/jsutils/isObjectLike.mjs +function isObjectLike(value) { + return typeof value == "object" && value !== null; +} + +// node_modules/graphql/jsutils/invariant.mjs +function invariant(condition, message) { + const booleanCondition = Boolean(condition); + if (!booleanCondition) { + throw new Error( + message != null ? message : "Unexpected invariant triggered." + ); + } +} + +// node_modules/graphql/language/location.mjs +var LineRegExp = /\r\n|[\n\r]/g; +function getLocation(source, position) { + let lastLineStart = 0; + let line = 1; + for (const match of source.body.matchAll(LineRegExp)) { + typeof match.index === "number" || invariant(false); + if (match.index >= position) { + break; + } + lastLineStart = match.index + match[0].length; + line += 1; + } + return { + line, + column: position + 1 - lastLineStart + }; +} + +// node_modules/graphql/language/printLocation.mjs +function printLocation(location) { + return printSourceLocation( + location.source, + getLocation(location.source, location.start) + ); +} +function printSourceLocation(source, sourceLocation) { + const firstLineColumnOffset = source.locationOffset.column - 1; + const body = "".padStart(firstLineColumnOffset) + source.body; + const lineIndex = sourceLocation.line - 1; + const lineOffset = source.locationOffset.line - 1; + const lineNum = sourceLocation.line + lineOffset; + const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0; + const columnNum = sourceLocation.column + columnOffset; + const locationStr = `${source.name}:${lineNum}:${columnNum} +`; + const lines = body.split(/\r\n|[\n\r]/g); + const locationLine = lines[lineIndex]; + if (locationLine.length > 120) { + const subLineIndex = Math.floor(columnNum / 80); + const subLineColumnNum = columnNum % 80; + const subLines = []; + for (let i = 0; i < locationLine.length; i += 80) { + subLines.push(locationLine.slice(i, i + 80)); + } + return locationStr + printPrefixedLines([ + [`${lineNum} |`, subLines[0]], + ...subLines.slice(1, subLineIndex + 1).map((subLine) => ["|", subLine]), + ["|", "^".padStart(subLineColumnNum)], + ["|", subLines[subLineIndex + 1]] + ]); + } + return locationStr + printPrefixedLines([ + // Lines specified like this: ["prefix", "string"], + [`${lineNum - 1} |`, lines[lineIndex - 1]], + [`${lineNum} |`, locationLine], + ["|", "^".padStart(columnNum)], + [`${lineNum + 1} |`, lines[lineIndex + 1]] + ]); +} +function printPrefixedLines(lines) { + const existingLines = lines.filter(([_, line]) => line !== void 0); + const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length)); + return existingLines.map(([prefix, line]) => prefix.padStart(padLen) + (line ? " " + line : "")).join("\n"); +} + +// node_modules/graphql/error/GraphQLError.mjs +function toNormalizedOptions(args) { + const firstArg = args[0]; + if (firstArg == null || "kind" in firstArg || "length" in firstArg) { + return { + nodes: firstArg, + source: args[1], + positions: args[2], + path: args[3], + originalError: args[4], + extensions: args[5] + }; + } + return firstArg; +} +var GraphQLError = class _GraphQLError extends Error { + /** + * An array of `{ line, column }` locations within the source GraphQL document + * which correspond to this error. + * + * Errors during validation often contain multiple locations, for example to + * point out two things with the same name. Errors during execution include a + * single location, the field which produced the error. + * + * Enumerable, and appears in the result of JSON.stringify(). + */ + /** + * An array describing the JSON-path into the execution response which + * corresponds to this error. Only included for errors during execution. + * + * Enumerable, and appears in the result of JSON.stringify(). + */ + /** + * An array of GraphQL AST Nodes corresponding to this error. + */ + /** + * The source GraphQL document for the first location of this error. + * + * Note that if this Error represents more than one node, the source may not + * represent nodes after the first node. + */ + /** + * An array of character offsets within the source GraphQL document + * which correspond to this error. + */ + /** + * The original error thrown from a field resolver during execution. + */ + /** + * Extension fields to add to the formatted error. + */ + /** + * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead. + */ + constructor(message, ...rawArgs) { + var _this$nodes, _nodeLocations$, _ref; + const { nodes, source, positions, path, originalError, extensions } = toNormalizedOptions(rawArgs); + super(message); + this.name = "GraphQLError"; + this.path = path !== null && path !== void 0 ? path : void 0; + this.originalError = originalError !== null && originalError !== void 0 ? originalError : void 0; + this.nodes = undefinedIfEmpty( + Array.isArray(nodes) ? nodes : nodes ? [nodes] : void 0 + ); + const nodeLocations = undefinedIfEmpty( + (_this$nodes = this.nodes) === null || _this$nodes === void 0 ? void 0 : _this$nodes.map((node) => node.loc).filter((loc) => loc != null) + ); + this.source = source !== null && source !== void 0 ? source : nodeLocations === null || nodeLocations === void 0 ? void 0 : (_nodeLocations$ = nodeLocations[0]) === null || _nodeLocations$ === void 0 ? void 0 : _nodeLocations$.source; + this.positions = positions !== null && positions !== void 0 ? positions : nodeLocations === null || nodeLocations === void 0 ? void 0 : nodeLocations.map((loc) => loc.start); + this.locations = positions && source ? positions.map((pos) => getLocation(source, pos)) : nodeLocations === null || nodeLocations === void 0 ? void 0 : nodeLocations.map((loc) => getLocation(loc.source, loc.start)); + const originalExtensions = isObjectLike( + originalError === null || originalError === void 0 ? void 0 : originalError.extensions + ) ? originalError === null || originalError === void 0 ? void 0 : originalError.extensions : void 0; + this.extensions = (_ref = extensions !== null && extensions !== void 0 ? extensions : originalExtensions) !== null && _ref !== void 0 ? _ref : /* @__PURE__ */ Object.create(null); + Object.defineProperties(this, { + message: { + writable: true, + enumerable: true + }, + name: { + enumerable: false + }, + nodes: { + enumerable: false + }, + source: { + enumerable: false + }, + positions: { + enumerable: false + }, + originalError: { + enumerable: false + } + }); + if (originalError !== null && originalError !== void 0 && originalError.stack) { + Object.defineProperty(this, "stack", { + value: originalError.stack, + writable: true, + configurable: true + }); + } else if (Error.captureStackTrace) { + Error.captureStackTrace(this, _GraphQLError); + } else { + Object.defineProperty(this, "stack", { + value: Error().stack, + writable: true, + configurable: true + }); + } + } + get [Symbol.toStringTag]() { + return "GraphQLError"; + } + toString() { + let output = this.message; + if (this.nodes) { + for (const node of this.nodes) { + if (node.loc) { + output += "\n\n" + printLocation(node.loc); + } + } + } else if (this.source && this.locations) { + for (const location of this.locations) { + output += "\n\n" + printSourceLocation(this.source, location); + } + } + return output; + } + toJSON() { + const formattedError = { + message: this.message + }; + if (this.locations != null) { + formattedError.locations = this.locations; + } + if (this.path != null) { + formattedError.path = this.path; + } + if (this.extensions != null && Object.keys(this.extensions).length > 0) { + formattedError.extensions = this.extensions; + } + return formattedError; + } +}; +function undefinedIfEmpty(array) { + return array === void 0 || array.length === 0 ? void 0 : array; +} + +// node_modules/graphql/error/syntaxError.mjs +function syntaxError(source, position, description) { + return new GraphQLError(`Syntax Error: ${description}`, { + source, + positions: [position] + }); +} + +// node_modules/graphql/language/ast.mjs +var Location = class { + /** + * The character offset at which this Node begins. + */ + /** + * The character offset at which this Node ends. + */ + /** + * The Token at which this Node begins. + */ + /** + * The Token at which this Node ends. + */ + /** + * The Source document the AST represents. + */ + constructor(startToken, endToken, source) { + this.start = startToken.start; + this.end = endToken.end; + this.startToken = startToken; + this.endToken = endToken; + this.source = source; + } + get [Symbol.toStringTag]() { + return "Location"; + } + toJSON() { + return { + start: this.start, + end: this.end + }; + } +}; +var Token = class { + /** + * The kind of Token. + */ + /** + * The character offset at which this Node begins. + */ + /** + * The character offset at which this Node ends. + */ + /** + * The 1-indexed line number on which this Token appears. + */ + /** + * The 1-indexed column number at which this Token begins. + */ + /** + * For non-punctuation tokens, represents the interpreted value of the token. + * + * Note: is undefined for punctuation tokens, but typed as string for + * convenience in the parser. + */ + /** + * Tokens exist as nodes in a double-linked-list amongst all tokens + * including ignored tokens. is always the first node and + * the last. + */ + constructor(kind, start, end, line, column, value) { + this.kind = kind; + this.start = start; + this.end = end; + this.line = line; + this.column = column; + this.value = value; + this.prev = null; + this.next = null; + } + get [Symbol.toStringTag]() { + return "Token"; + } + toJSON() { + return { + kind: this.kind, + value: this.value, + line: this.line, + column: this.column + }; + } +}; +var QueryDocumentKeys = { + Name: [], + Document: ["definitions"], + OperationDefinition: [ + "description", + "name", + "variableDefinitions", + "directives", + "selectionSet" + ], + VariableDefinition: [ + "description", + "variable", + "type", + "defaultValue", + "directives" + ], + Variable: ["name"], + SelectionSet: ["selections"], + Field: ["alias", "name", "arguments", "directives", "selectionSet"], + Argument: ["name", "value"], + FragmentSpread: ["name", "directives"], + InlineFragment: ["typeCondition", "directives", "selectionSet"], + FragmentDefinition: [ + "description", + "name", + // Note: fragment variable definitions are deprecated and will removed in v17.0.0 + "variableDefinitions", + "typeCondition", + "directives", + "selectionSet" + ], + IntValue: [], + FloatValue: [], + StringValue: [], + BooleanValue: [], + NullValue: [], + EnumValue: [], + ListValue: ["values"], + ObjectValue: ["fields"], + ObjectField: ["name", "value"], + Directive: ["name", "arguments"], + NamedType: ["name"], + ListType: ["type"], + NonNullType: ["type"], + SchemaDefinition: ["description", "directives", "operationTypes"], + OperationTypeDefinition: ["type"], + ScalarTypeDefinition: ["description", "name", "directives"], + ObjectTypeDefinition: [ + "description", + "name", + "interfaces", + "directives", + "fields" + ], + FieldDefinition: ["description", "name", "arguments", "type", "directives"], + InputValueDefinition: [ + "description", + "name", + "type", + "defaultValue", + "directives" + ], + InterfaceTypeDefinition: [ + "description", + "name", + "interfaces", + "directives", + "fields" + ], + UnionTypeDefinition: ["description", "name", "directives", "types"], + EnumTypeDefinition: ["description", "name", "directives", "values"], + EnumValueDefinition: ["description", "name", "directives"], + InputObjectTypeDefinition: ["description", "name", "directives", "fields"], + DirectiveDefinition: [ + "description", + "name", + "arguments", + "directives", + "locations" + ], + SchemaExtension: ["directives", "operationTypes"], + DirectiveExtension: ["name", "directives"], + ScalarTypeExtension: ["name", "directives"], + ObjectTypeExtension: ["name", "interfaces", "directives", "fields"], + InterfaceTypeExtension: ["name", "interfaces", "directives", "fields"], + UnionTypeExtension: ["name", "directives", "types"], + EnumTypeExtension: ["name", "directives", "values"], + InputObjectTypeExtension: ["name", "directives", "fields"], + TypeCoordinate: ["name"], + MemberCoordinate: ["name", "memberName"], + ArgumentCoordinate: ["name", "fieldName", "argumentName"], + DirectiveCoordinate: ["name"], + DirectiveArgumentCoordinate: ["name", "argumentName"] +}; +var kindValues = new Set(Object.keys(QueryDocumentKeys)); +function isNode(maybeNode) { + const maybeKind = maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind; + return typeof maybeKind === "string" && kindValues.has(maybeKind); +} +var OperationTypeNode; +(function(OperationTypeNode2) { + OperationTypeNode2["QUERY"] = "query"; + OperationTypeNode2["MUTATION"] = "mutation"; + OperationTypeNode2["SUBSCRIPTION"] = "subscription"; +})(OperationTypeNode || (OperationTypeNode = {})); + +// node_modules/graphql/language/directiveLocation.mjs +var DirectiveLocation; +(function(DirectiveLocation2) { + DirectiveLocation2["QUERY"] = "QUERY"; + DirectiveLocation2["MUTATION"] = "MUTATION"; + DirectiveLocation2["SUBSCRIPTION"] = "SUBSCRIPTION"; + DirectiveLocation2["FIELD"] = "FIELD"; + DirectiveLocation2["FRAGMENT_DEFINITION"] = "FRAGMENT_DEFINITION"; + DirectiveLocation2["FRAGMENT_SPREAD"] = "FRAGMENT_SPREAD"; + DirectiveLocation2["INLINE_FRAGMENT"] = "INLINE_FRAGMENT"; + DirectiveLocation2["VARIABLE_DEFINITION"] = "VARIABLE_DEFINITION"; + DirectiveLocation2["SCHEMA"] = "SCHEMA"; + DirectiveLocation2["SCALAR"] = "SCALAR"; + DirectiveLocation2["OBJECT"] = "OBJECT"; + DirectiveLocation2["FIELD_DEFINITION"] = "FIELD_DEFINITION"; + DirectiveLocation2["ARGUMENT_DEFINITION"] = "ARGUMENT_DEFINITION"; + DirectiveLocation2["INTERFACE"] = "INTERFACE"; + DirectiveLocation2["UNION"] = "UNION"; + DirectiveLocation2["ENUM"] = "ENUM"; + DirectiveLocation2["ENUM_VALUE"] = "ENUM_VALUE"; + DirectiveLocation2["INPUT_OBJECT"] = "INPUT_OBJECT"; + DirectiveLocation2["INPUT_FIELD_DEFINITION"] = "INPUT_FIELD_DEFINITION"; + DirectiveLocation2["DIRECTIVE_DEFINITION"] = "DIRECTIVE_DEFINITION"; +})(DirectiveLocation || (DirectiveLocation = {})); + +// node_modules/graphql/language/kinds.mjs +var Kind; +(function(Kind2) { + Kind2["NAME"] = "Name"; + Kind2["DOCUMENT"] = "Document"; + Kind2["OPERATION_DEFINITION"] = "OperationDefinition"; + Kind2["VARIABLE_DEFINITION"] = "VariableDefinition"; + Kind2["SELECTION_SET"] = "SelectionSet"; + Kind2["FIELD"] = "Field"; + Kind2["ARGUMENT"] = "Argument"; + Kind2["FRAGMENT_SPREAD"] = "FragmentSpread"; + Kind2["INLINE_FRAGMENT"] = "InlineFragment"; + Kind2["FRAGMENT_DEFINITION"] = "FragmentDefinition"; + Kind2["VARIABLE"] = "Variable"; + Kind2["INT"] = "IntValue"; + Kind2["FLOAT"] = "FloatValue"; + Kind2["STRING"] = "StringValue"; + Kind2["BOOLEAN"] = "BooleanValue"; + Kind2["NULL"] = "NullValue"; + Kind2["ENUM"] = "EnumValue"; + Kind2["LIST"] = "ListValue"; + Kind2["OBJECT"] = "ObjectValue"; + Kind2["OBJECT_FIELD"] = "ObjectField"; + Kind2["DIRECTIVE"] = "Directive"; + Kind2["NAMED_TYPE"] = "NamedType"; + Kind2["LIST_TYPE"] = "ListType"; + Kind2["NON_NULL_TYPE"] = "NonNullType"; + Kind2["SCHEMA_DEFINITION"] = "SchemaDefinition"; + Kind2["OPERATION_TYPE_DEFINITION"] = "OperationTypeDefinition"; + Kind2["SCALAR_TYPE_DEFINITION"] = "ScalarTypeDefinition"; + Kind2["OBJECT_TYPE_DEFINITION"] = "ObjectTypeDefinition"; + Kind2["FIELD_DEFINITION"] = "FieldDefinition"; + Kind2["INPUT_VALUE_DEFINITION"] = "InputValueDefinition"; + Kind2["INTERFACE_TYPE_DEFINITION"] = "InterfaceTypeDefinition"; + Kind2["UNION_TYPE_DEFINITION"] = "UnionTypeDefinition"; + Kind2["ENUM_TYPE_DEFINITION"] = "EnumTypeDefinition"; + Kind2["ENUM_VALUE_DEFINITION"] = "EnumValueDefinition"; + Kind2["INPUT_OBJECT_TYPE_DEFINITION"] = "InputObjectTypeDefinition"; + Kind2["DIRECTIVE_DEFINITION"] = "DirectiveDefinition"; + Kind2["SCHEMA_EXTENSION"] = "SchemaExtension"; + Kind2["DIRECTIVE_EXTENSION"] = "DirectiveExtension"; + Kind2["SCALAR_TYPE_EXTENSION"] = "ScalarTypeExtension"; + Kind2["OBJECT_TYPE_EXTENSION"] = "ObjectTypeExtension"; + Kind2["INTERFACE_TYPE_EXTENSION"] = "InterfaceTypeExtension"; + Kind2["UNION_TYPE_EXTENSION"] = "UnionTypeExtension"; + Kind2["ENUM_TYPE_EXTENSION"] = "EnumTypeExtension"; + Kind2["INPUT_OBJECT_TYPE_EXTENSION"] = "InputObjectTypeExtension"; + Kind2["TYPE_COORDINATE"] = "TypeCoordinate"; + Kind2["MEMBER_COORDINATE"] = "MemberCoordinate"; + Kind2["ARGUMENT_COORDINATE"] = "ArgumentCoordinate"; + Kind2["DIRECTIVE_COORDINATE"] = "DirectiveCoordinate"; + Kind2["DIRECTIVE_ARGUMENT_COORDINATE"] = "DirectiveArgumentCoordinate"; +})(Kind || (Kind = {})); + +// node_modules/graphql/language/characterClasses.mjs +function isWhiteSpace(code) { + return code === 9 || code === 32; +} +function isDigit(code) { + return code >= 48 && code <= 57; +} +function isLetter(code) { + return code >= 97 && code <= 122 || // A-Z + code >= 65 && code <= 90; +} +function isNameStart(code) { + return isLetter(code) || code === 95; +} +function isNameContinue(code) { + return isLetter(code) || isDigit(code) || code === 95; +} + +// node_modules/graphql/language/blockString.mjs +function dedentBlockStringLines(lines) { + var _firstNonEmptyLine2; + let commonIndent = Number.MAX_SAFE_INTEGER; + let firstNonEmptyLine = null; + let lastNonEmptyLine = -1; + for (let i = 0; i < lines.length; ++i) { + var _firstNonEmptyLine; + const line = lines[i]; + const indent2 = leadingWhitespace(line); + if (indent2 === line.length) { + continue; + } + firstNonEmptyLine = (_firstNonEmptyLine = firstNonEmptyLine) !== null && _firstNonEmptyLine !== void 0 ? _firstNonEmptyLine : i; + lastNonEmptyLine = i; + if (i !== 0 && indent2 < commonIndent) { + commonIndent = indent2; + } + } + return lines.map((line, i) => i === 0 ? line : line.slice(commonIndent)).slice( + (_firstNonEmptyLine2 = firstNonEmptyLine) !== null && _firstNonEmptyLine2 !== void 0 ? _firstNonEmptyLine2 : 0, + lastNonEmptyLine + 1 + ); +} +function leadingWhitespace(str) { + let i = 0; + while (i < str.length && isWhiteSpace(str.charCodeAt(i))) { + ++i; + } + return i; +} +function printBlockString(value, options) { + const escapedValue = value.replace(/"""/g, '\\"""'); + const lines = escapedValue.split(/\r\n|[\n\r]/g); + const isSingleLine = lines.length === 1; + const forceLeadingNewLine = lines.length > 1 && lines.slice(1).every((line) => line.length === 0 || isWhiteSpace(line.charCodeAt(0))); + const hasTrailingTripleQuotes = escapedValue.endsWith('\\"""'); + const hasTrailingQuote = value.endsWith('"') && !hasTrailingTripleQuotes; + const hasTrailingSlash = value.endsWith("\\"); + const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash; + const printAsMultipleLines = !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability + (!isSingleLine || value.length > 70 || forceTrailingNewline || forceLeadingNewLine || hasTrailingTripleQuotes); + let result = ""; + const skipLeadingNewLine = isSingleLine && isWhiteSpace(value.charCodeAt(0)); + if (printAsMultipleLines && !skipLeadingNewLine || forceLeadingNewLine) { + result += "\n"; + } + result += escapedValue; + if (printAsMultipleLines || forceTrailingNewline) { + result += "\n"; + } + return '"""' + result + '"""'; +} + +// node_modules/graphql/language/tokenKind.mjs +var TokenKind; +(function(TokenKind2) { + TokenKind2["SOF"] = ""; + TokenKind2["EOF"] = ""; + TokenKind2["BANG"] = "!"; + TokenKind2["DOLLAR"] = "$"; + TokenKind2["AMP"] = "&"; + TokenKind2["PAREN_L"] = "("; + TokenKind2["PAREN_R"] = ")"; + TokenKind2["DOT"] = "."; + TokenKind2["SPREAD"] = "..."; + TokenKind2["COLON"] = ":"; + TokenKind2["EQUALS"] = "="; + TokenKind2["AT"] = "@"; + TokenKind2["BRACKET_L"] = "["; + TokenKind2["BRACKET_R"] = "]"; + TokenKind2["BRACE_L"] = "{"; + TokenKind2["PIPE"] = "|"; + TokenKind2["BRACE_R"] = "}"; + TokenKind2["NAME"] = "Name"; + TokenKind2["INT"] = "Int"; + TokenKind2["FLOAT"] = "Float"; + TokenKind2["STRING"] = "String"; + TokenKind2["BLOCK_STRING"] = "BlockString"; + TokenKind2["COMMENT"] = "Comment"; +})(TokenKind || (TokenKind = {})); + +// node_modules/graphql/language/lexer.mjs +var Lexer = class { + /** + * The previously focused non-ignored token. + */ + /** + * The currently focused non-ignored token. + */ + /** + * The (1-indexed) line containing the current token. + */ + /** + * The character offset at which the current line begins. + */ + constructor(source) { + const startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0); + this.source = source; + this.lastToken = startOfFileToken; + this.token = startOfFileToken; + this.line = 1; + this.lineStart = 0; + } + get [Symbol.toStringTag]() { + return "Lexer"; + } + /** + * Advances the token stream to the next non-ignored token. + */ + advance() { + this.lastToken = this.token; + const token = this.token = this.lookahead(); + return token; + } + /** + * Looks ahead and returns the next non-ignored token, but does not change + * the state of Lexer. + */ + lookahead() { + let token = this.token; + if (token.kind !== TokenKind.EOF) { + do { + if (token.next) { + token = token.next; + } else { + const nextToken = readNextToken(this, token.end); + token.next = nextToken; + nextToken.prev = token; + token = nextToken; + } + } while (token.kind === TokenKind.COMMENT); + } + return token; + } +}; +function isPunctuatorTokenKind(kind) { + return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.DOT || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R; +} +function isUnicodeScalarValue(code) { + return code >= 0 && code <= 55295 || code >= 57344 && code <= 1114111; +} +function isSupplementaryCodePoint(body, location) { + return isLeadingSurrogate(body.charCodeAt(location)) && isTrailingSurrogate(body.charCodeAt(location + 1)); +} +function isLeadingSurrogate(code) { + return code >= 55296 && code <= 56319; +} +function isTrailingSurrogate(code) { + return code >= 56320 && code <= 57343; +} +function printCodePointAt(lexer, location) { + const code = lexer.source.body.codePointAt(location); + if (code === void 0) { + return TokenKind.EOF; + } else if (code >= 32 && code <= 126) { + const char = String.fromCodePoint(code); + return char === '"' ? `'"'` : `"${char}"`; + } + return "U+" + code.toString(16).toUpperCase().padStart(4, "0"); +} +function createToken(lexer, kind, start, end, value) { + const line = lexer.line; + const col = 1 + start - lexer.lineStart; + return new Token(kind, start, end, line, col, value); +} +function readNextToken(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let position = start; + while (position < bodyLength) { + const code = body.charCodeAt(position); + switch (code) { + case 65279: + case 9: + case 32: + case 44: + ++position; + continue; + case 10: + ++position; + ++lexer.line; + lexer.lineStart = position; + continue; + case 13: + if (body.charCodeAt(position + 1) === 10) { + position += 2; + } else { + ++position; + } + ++lexer.line; + lexer.lineStart = position; + continue; + case 35: + return readComment(lexer, position); + case 33: + return createToken(lexer, TokenKind.BANG, position, position + 1); + case 36: + return createToken(lexer, TokenKind.DOLLAR, position, position + 1); + case 38: + return createToken(lexer, TokenKind.AMP, position, position + 1); + case 40: + return createToken(lexer, TokenKind.PAREN_L, position, position + 1); + case 41: + return createToken(lexer, TokenKind.PAREN_R, position, position + 1); + case 46: + if (body.charCodeAt(position + 1) === 46 && body.charCodeAt(position + 2) === 46) { + return createToken(lexer, TokenKind.SPREAD, position, position + 3); + } + break; + case 58: + return createToken(lexer, TokenKind.COLON, position, position + 1); + case 61: + return createToken(lexer, TokenKind.EQUALS, position, position + 1); + case 64: + return createToken(lexer, TokenKind.AT, position, position + 1); + case 91: + return createToken(lexer, TokenKind.BRACKET_L, position, position + 1); + case 93: + return createToken(lexer, TokenKind.BRACKET_R, position, position + 1); + case 123: + return createToken(lexer, TokenKind.BRACE_L, position, position + 1); + case 124: + return createToken(lexer, TokenKind.PIPE, position, position + 1); + case 125: + return createToken(lexer, TokenKind.BRACE_R, position, position + 1); + case 34: + if (body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) { + return readBlockString(lexer, position); + } + return readString(lexer, position); + } + if (isDigit(code) || code === 45) { + return readNumber(lexer, position, code); + } + if (isNameStart(code)) { + return readName(lexer, position); + } + throw syntaxError( + lexer.source, + position, + code === 39 ? `Unexpected single quote character ('), did you mean to use a double quote (")?` : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position) ? `Unexpected character: ${printCodePointAt(lexer, position)}.` : `Invalid character: ${printCodePointAt(lexer, position)}.` + ); + } + return createToken(lexer, TokenKind.EOF, bodyLength, bodyLength); +} +function readComment(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let position = start + 1; + while (position < bodyLength) { + const code = body.charCodeAt(position); + if (code === 10 || code === 13) { + break; + } + if (isUnicodeScalarValue(code)) { + ++position; + } else if (isSupplementaryCodePoint(body, position)) { + position += 2; + } else { + break; + } + } + return createToken( + lexer, + TokenKind.COMMENT, + start, + position, + body.slice(start + 1, position) + ); +} +function readNumber(lexer, start, firstCode) { + const body = lexer.source.body; + let position = start; + let code = firstCode; + let isFloat = false; + if (code === 45) { + code = body.charCodeAt(++position); + } + if (code === 48) { + code = body.charCodeAt(++position); + if (isDigit(code)) { + throw syntaxError( + lexer.source, + position, + `Invalid number, unexpected digit after 0: ${printCodePointAt( + lexer, + position + )}.` + ); + } + } else { + position = readDigits(lexer, position, code); + code = body.charCodeAt(position); + } + if (code === 46) { + isFloat = true; + code = body.charCodeAt(++position); + position = readDigits(lexer, position, code); + code = body.charCodeAt(position); + } + if (code === 69 || code === 101) { + isFloat = true; + code = body.charCodeAt(++position); + if (code === 43 || code === 45) { + code = body.charCodeAt(++position); + } + position = readDigits(lexer, position, code); + code = body.charCodeAt(position); + } + if (code === 46 || isNameStart(code)) { + throw syntaxError( + lexer.source, + position, + `Invalid number, expected digit but got: ${printCodePointAt( + lexer, + position + )}.` + ); + } + return createToken( + lexer, + isFloat ? TokenKind.FLOAT : TokenKind.INT, + start, + position, + body.slice(start, position) + ); +} +function readDigits(lexer, start, firstCode) { + if (!isDigit(firstCode)) { + throw syntaxError( + lexer.source, + start, + `Invalid number, expected digit but got: ${printCodePointAt( + lexer, + start + )}.` + ); + } + const body = lexer.source.body; + let position = start + 1; + while (isDigit(body.charCodeAt(position))) { + ++position; + } + return position; +} +function readString(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let position = start + 1; + let chunkStart = position; + let value = ""; + while (position < bodyLength) { + const code = body.charCodeAt(position); + if (code === 34) { + value += body.slice(chunkStart, position); + return createToken(lexer, TokenKind.STRING, start, position + 1, value); + } + if (code === 92) { + value += body.slice(chunkStart, position); + const escape = body.charCodeAt(position + 1) === 117 ? body.charCodeAt(position + 2) === 123 ? readEscapedUnicodeVariableWidth(lexer, position) : readEscapedUnicodeFixedWidth(lexer, position) : readEscapedCharacter(lexer, position); + value += escape.value; + position += escape.size; + chunkStart = position; + continue; + } + if (code === 10 || code === 13) { + break; + } + if (isUnicodeScalarValue(code)) { + ++position; + } else if (isSupplementaryCodePoint(body, position)) { + position += 2; + } else { + throw syntaxError( + lexer.source, + position, + `Invalid character within String: ${printCodePointAt( + lexer, + position + )}.` + ); + } + } + throw syntaxError(lexer.source, position, "Unterminated string."); +} +function readEscapedUnicodeVariableWidth(lexer, position) { + const body = lexer.source.body; + let point = 0; + let size = 3; + while (size < 12) { + const code = body.charCodeAt(position + size++); + if (code === 125) { + if (size < 5 || !isUnicodeScalarValue(point)) { + break; + } + return { + value: String.fromCodePoint(point), + size + }; + } + point = point << 4 | readHexDigit(code); + if (point < 0) { + break; + } + } + throw syntaxError( + lexer.source, + position, + `Invalid Unicode escape sequence: "${body.slice( + position, + position + size + )}".` + ); +} +function readEscapedUnicodeFixedWidth(lexer, position) { + const body = lexer.source.body; + const code = read16BitHexCode(body, position + 2); + if (isUnicodeScalarValue(code)) { + return { + value: String.fromCodePoint(code), + size: 6 + }; + } + if (isLeadingSurrogate(code)) { + if (body.charCodeAt(position + 6) === 92 && body.charCodeAt(position + 7) === 117) { + const trailingCode = read16BitHexCode(body, position + 8); + if (isTrailingSurrogate(trailingCode)) { + return { + value: String.fromCodePoint(code, trailingCode), + size: 12 + }; + } + } + } + throw syntaxError( + lexer.source, + position, + `Invalid Unicode escape sequence: "${body.slice(position, position + 6)}".` + ); +} +function read16BitHexCode(body, position) { + return readHexDigit(body.charCodeAt(position)) << 12 | readHexDigit(body.charCodeAt(position + 1)) << 8 | readHexDigit(body.charCodeAt(position + 2)) << 4 | readHexDigit(body.charCodeAt(position + 3)); +} +function readHexDigit(code) { + return code >= 48 && code <= 57 ? code - 48 : code >= 65 && code <= 70 ? code - 55 : code >= 97 && code <= 102 ? code - 87 : -1; +} +function readEscapedCharacter(lexer, position) { + const body = lexer.source.body; + const code = body.charCodeAt(position + 1); + switch (code) { + case 34: + return { + value: '"', + size: 2 + }; + case 92: + return { + value: "\\", + size: 2 + }; + case 47: + return { + value: "/", + size: 2 + }; + case 98: + return { + value: "\b", + size: 2 + }; + case 102: + return { + value: "\f", + size: 2 + }; + case 110: + return { + value: "\n", + size: 2 + }; + case 114: + return { + value: "\r", + size: 2 + }; + case 116: + return { + value: " ", + size: 2 + }; + } + throw syntaxError( + lexer.source, + position, + `Invalid character escape sequence: "${body.slice( + position, + position + 2 + )}".` + ); +} +function readBlockString(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let lineStart = lexer.lineStart; + let position = start + 3; + let chunkStart = position; + let currentLine = ""; + const blockLines = []; + while (position < bodyLength) { + const code = body.charCodeAt(position); + if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) { + currentLine += body.slice(chunkStart, position); + blockLines.push(currentLine); + const token = createToken( + lexer, + TokenKind.BLOCK_STRING, + start, + position + 3, + // Return a string of the lines joined with U+000A. + dedentBlockStringLines(blockLines).join("\n") + ); + lexer.line += blockLines.length - 1; + lexer.lineStart = lineStart; + return token; + } + if (code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) { + currentLine += body.slice(chunkStart, position); + chunkStart = position + 1; + position += 4; + continue; + } + if (code === 10 || code === 13) { + currentLine += body.slice(chunkStart, position); + blockLines.push(currentLine); + if (code === 13 && body.charCodeAt(position + 1) === 10) { + position += 2; + } else { + ++position; + } + currentLine = ""; + chunkStart = position; + lineStart = position; + continue; + } + if (isUnicodeScalarValue(code)) { + ++position; + } else if (isSupplementaryCodePoint(body, position)) { + position += 2; + } else { + throw syntaxError( + lexer.source, + position, + `Invalid character within String: ${printCodePointAt( + lexer, + position + )}.` + ); + } + } + throw syntaxError(lexer.source, position, "Unterminated string."); +} +function readName(lexer, start) { + const body = lexer.source.body; + const bodyLength = body.length; + let position = start + 1; + while (position < bodyLength) { + const code = body.charCodeAt(position); + if (isNameContinue(code)) { + ++position; + } else { + break; + } + } + return createToken( + lexer, + TokenKind.NAME, + start, + position, + body.slice(start, position) + ); +} + +// node_modules/graphql/jsutils/inspect.mjs +var MAX_ARRAY_LENGTH = 10; +var MAX_RECURSIVE_DEPTH = 2; +function inspect(value) { + return formatValue(value, []); +} +function formatValue(value, seenValues) { + switch (typeof value) { + case "string": + return JSON.stringify(value); + case "function": + return value.name ? `[function ${value.name}]` : "[function]"; + case "object": + return formatObjectValue(value, seenValues); + default: + return String(value); + } +} +function formatObjectValue(value, previouslySeenValues) { + if (value === null) { + return "null"; + } + if (previouslySeenValues.includes(value)) { + return "[Circular]"; + } + const seenValues = [...previouslySeenValues, value]; + if (isJSONable(value)) { + const jsonValue = value.toJSON(); + if (jsonValue !== value) { + return typeof jsonValue === "string" ? jsonValue : formatValue(jsonValue, seenValues); + } + } else if (Array.isArray(value)) { + return formatArray(value, seenValues); + } + return formatObject(value, seenValues); +} +function isJSONable(value) { + return typeof value.toJSON === "function"; +} +function formatObject(object, seenValues) { + const entries = Object.entries(object); + if (entries.length === 0) { + return "{}"; + } + if (seenValues.length > MAX_RECURSIVE_DEPTH) { + return "[" + getObjectTag(object) + "]"; + } + const properties = entries.map( + ([key, value]) => key + ": " + formatValue(value, seenValues) + ); + return "{ " + properties.join(", ") + " }"; +} +function formatArray(array, seenValues) { + if (array.length === 0) { + return "[]"; + } + if (seenValues.length > MAX_RECURSIVE_DEPTH) { + return "[Array]"; + } + const len = Math.min(MAX_ARRAY_LENGTH, array.length); + const remaining = array.length - len; + const items = []; + for (let i = 0; i < len; ++i) { + items.push(formatValue(array[i], seenValues)); + } + if (remaining === 1) { + items.push("... 1 more item"); + } else if (remaining > 1) { + items.push(`... ${remaining} more items`); + } + return "[" + items.join(", ") + "]"; +} +function getObjectTag(object) { + const tag = Object.prototype.toString.call(object).replace(/^\[object /, "").replace(/]$/, ""); + if (tag === "Object" && typeof object.constructor === "function") { + const name = object.constructor.name; + if (typeof name === "string" && name !== "") { + return name; + } + } + return tag; +} + +// node_modules/graphql/jsutils/instanceOf.mjs +var isProduction = globalThis.process && // eslint-disable-next-line no-undef +true; +var instanceOf = ( + /* c8 ignore next 6 */ + // FIXME: https://github.com/graphql/graphql-js/issues/2317 + isProduction ? function instanceOf2(value, constructor) { + return value instanceof constructor; + } : function instanceOf3(value, constructor) { + if (value instanceof constructor) { + return true; + } + if (typeof value === "object" && value !== null) { + var _value$constructor; + const className = constructor.prototype[Symbol.toStringTag]; + const valueClassName = ( + // We still need to support constructor's name to detect conflicts with older versions of this library. + Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name + ); + if (className === valueClassName) { + const stringifiedValue = inspect(value); + throw new Error(`Cannot use ${className} "${stringifiedValue}" from another module or realm. + +Ensure that there is only one instance of "graphql" in the node_modules +directory. If different versions of "graphql" are the dependencies of other +relied on modules, use "resolutions" to ensure only one version is installed. + +https://yarnpkg.com/en/docs/selective-version-resolutions + +Duplicate "graphql" modules cannot be used at the same time since different +versions may have different capabilities and behavior. The data from one +version used in the function from another could produce confusing and +spurious results.`); + } + } + return false; + } +); + +// node_modules/graphql/language/source.mjs +var Source = class { + constructor(body, name = "GraphQL request", locationOffset = { + line: 1, + column: 1 + }) { + typeof body === "string" || devAssert(false, `Body must be a string. Received: ${inspect(body)}.`); + this.body = body; + this.name = name; + this.locationOffset = locationOffset; + this.locationOffset.line > 0 || devAssert( + false, + "line in locationOffset is 1-indexed and must be positive." + ); + this.locationOffset.column > 0 || devAssert( + false, + "column in locationOffset is 1-indexed and must be positive." + ); + } + get [Symbol.toStringTag]() { + return "Source"; + } +}; +function isSource(source) { + return instanceOf(source, Source); +} + +// node_modules/graphql/language/parser.mjs +function parse2(source, options) { + const parser = new Parser(source, options); + const document = parser.parseDocument(); + Object.defineProperty(document, "tokenCount", { + enumerable: false, + value: parser.tokenCount + }); + return document; +} +var Parser = class { + constructor(source, options = {}) { + const { lexer, ..._options } = options; + if (lexer) { + this._lexer = lexer; + } else { + const sourceObj = isSource(source) ? source : new Source(source); + this._lexer = new Lexer(sourceObj); + } + this._options = _options; + this._tokenCounter = 0; + } + get tokenCount() { + return this._tokenCounter; + } + /** + * Converts a name lex token into a name parse node. + */ + parseName() { + const token = this.expectToken(TokenKind.NAME); + return this.node(token, { + kind: Kind.NAME, + value: token.value + }); + } + // Implements the parsing rules in the Document section. + /** + * Document : Definition+ + */ + parseDocument() { + return this.node(this._lexer.token, { + kind: Kind.DOCUMENT, + definitions: this.many( + TokenKind.SOF, + this.parseDefinition, + TokenKind.EOF + ) + }); + } + /** + * Definition : + * - ExecutableDefinition + * - TypeSystemDefinition + * - TypeSystemExtension + * + * ExecutableDefinition : + * - OperationDefinition + * - FragmentDefinition + * + * TypeSystemDefinition : + * - SchemaDefinition + * - TypeDefinition + * - DirectiveDefinition + * + * TypeDefinition : + * - ScalarTypeDefinition + * - ObjectTypeDefinition + * - InterfaceTypeDefinition + * - UnionTypeDefinition + * - EnumTypeDefinition + * - InputObjectTypeDefinition + */ + parseDefinition() { + if (this.peek(TokenKind.BRACE_L)) { + return this.parseOperationDefinition(); + } + const hasDescription = this.peekDescription(); + const keywordToken = hasDescription ? this._lexer.lookahead() : this._lexer.token; + if (hasDescription && keywordToken.kind === TokenKind.BRACE_L) { + throw syntaxError( + this._lexer.source, + this._lexer.token.start, + "Unexpected description, descriptions are not supported on shorthand queries." + ); + } + if (keywordToken.kind === TokenKind.NAME) { + switch (keywordToken.value) { + case "schema": + return this.parseSchemaDefinition(); + case "scalar": + return this.parseScalarTypeDefinition(); + case "type": + return this.parseObjectTypeDefinition(); + case "interface": + return this.parseInterfaceTypeDefinition(); + case "union": + return this.parseUnionTypeDefinition(); + case "enum": + return this.parseEnumTypeDefinition(); + case "input": + return this.parseInputObjectTypeDefinition(); + case "directive": + return this.parseDirectiveDefinition(); + } + switch (keywordToken.value) { + case "query": + case "mutation": + case "subscription": + return this.parseOperationDefinition(); + case "fragment": + return this.parseFragmentDefinition(); + } + if (hasDescription) { + throw syntaxError( + this._lexer.source, + this._lexer.token.start, + "Unexpected description, only GraphQL definitions support descriptions." + ); + } + switch (keywordToken.value) { + case "extend": + return this.parseTypeSystemExtension(); + } + } + throw this.unexpected(keywordToken); + } + // Implements the parsing rules in the Operations section. + /** + * OperationDefinition : + * - SelectionSet + * - OperationType Name? VariableDefinitions? Directives? SelectionSet + */ + parseOperationDefinition() { + const start = this._lexer.token; + if (this.peek(TokenKind.BRACE_L)) { + return this.node(start, { + kind: Kind.OPERATION_DEFINITION, + operation: OperationTypeNode.QUERY, + description: void 0, + name: void 0, + variableDefinitions: [], + directives: [], + selectionSet: this.parseSelectionSet() + }); + } + const description = this.parseDescription(); + const operation = this.parseOperationType(); + let name; + if (this.peek(TokenKind.NAME)) { + name = this.parseName(); + } + return this.node(start, { + kind: Kind.OPERATION_DEFINITION, + operation, + description, + name, + variableDefinitions: this.parseVariableDefinitions(), + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet() + }); + } + /** + * OperationType : one of query mutation subscription + */ + parseOperationType() { + const operationToken = this.expectToken(TokenKind.NAME); + switch (operationToken.value) { + case "query": + return OperationTypeNode.QUERY; + case "mutation": + return OperationTypeNode.MUTATION; + case "subscription": + return OperationTypeNode.SUBSCRIPTION; + } + throw this.unexpected(operationToken); + } + /** + * VariableDefinitions : ( VariableDefinition+ ) + */ + parseVariableDefinitions() { + return this.optionalMany( + TokenKind.PAREN_L, + this.parseVariableDefinition, + TokenKind.PAREN_R + ); + } + /** + * VariableDefinition : Variable : Type DefaultValue? Directives[Const]? + */ + parseVariableDefinition() { + return this.node(this._lexer.token, { + kind: Kind.VARIABLE_DEFINITION, + description: this.parseDescription(), + variable: this.parseVariable(), + type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()), + defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseConstValueLiteral() : void 0, + directives: this.parseConstDirectives() + }); + } + /** + * Variable : $ Name + */ + parseVariable() { + const start = this._lexer.token; + this.expectToken(TokenKind.DOLLAR); + return this.node(start, { + kind: Kind.VARIABLE, + name: this.parseName() + }); + } + /** + * ``` + * SelectionSet : { Selection+ } + * ``` + */ + parseSelectionSet() { + return this.node(this._lexer.token, { + kind: Kind.SELECTION_SET, + selections: this.many( + TokenKind.BRACE_L, + this.parseSelection, + TokenKind.BRACE_R + ) + }); + } + /** + * Selection : + * - Field + * - FragmentSpread + * - InlineFragment + */ + parseSelection() { + return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField(); + } + /** + * Field : Alias? Name Arguments? Directives? SelectionSet? + * + * Alias : Name : + */ + parseField() { + const start = this._lexer.token; + const nameOrAlias = this.parseName(); + let alias; + let name; + if (this.expectOptionalToken(TokenKind.COLON)) { + alias = nameOrAlias; + name = this.parseName(); + } else { + name = nameOrAlias; + } + return this.node(start, { + kind: Kind.FIELD, + alias, + name, + arguments: this.parseArguments(false), + directives: this.parseDirectives(false), + selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : void 0 + }); + } + /** + * Arguments[Const] : ( Argument[?Const]+ ) + */ + parseArguments(isConst) { + const item = isConst ? this.parseConstArgument : this.parseArgument; + return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R); + } + /** + * Argument[Const] : Name : Value[?Const] + */ + parseArgument(isConst = false) { + const start = this._lexer.token; + const name = this.parseName(); + this.expectToken(TokenKind.COLON); + return this.node(start, { + kind: Kind.ARGUMENT, + name, + value: this.parseValueLiteral(isConst) + }); + } + parseConstArgument() { + return this.parseArgument(true); + } + // Implements the parsing rules in the Fragments section. + /** + * Corresponds to both FragmentSpread and InlineFragment in the spec. + * + * FragmentSpread : ... FragmentName Directives? + * + * InlineFragment : ... TypeCondition? Directives? SelectionSet + */ + parseFragment() { + const start = this._lexer.token; + this.expectToken(TokenKind.SPREAD); + const hasTypeCondition = this.expectOptionalKeyword("on"); + if (!hasTypeCondition && this.peek(TokenKind.NAME)) { + return this.node(start, { + kind: Kind.FRAGMENT_SPREAD, + name: this.parseFragmentName(), + directives: this.parseDirectives(false) + }); + } + return this.node(start, { + kind: Kind.INLINE_FRAGMENT, + typeCondition: hasTypeCondition ? this.parseNamedType() : void 0, + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet() + }); + } + /** + * FragmentDefinition : + * - fragment FragmentName on TypeCondition Directives? SelectionSet + * + * TypeCondition : NamedType + */ + parseFragmentDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("fragment"); + if (this._options.allowLegacyFragmentVariables === true) { + return this.node(start, { + kind: Kind.FRAGMENT_DEFINITION, + description, + name: this.parseFragmentName(), + variableDefinitions: this.parseVariableDefinitions(), + typeCondition: (this.expectKeyword("on"), this.parseNamedType()), + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet() + }); + } + return this.node(start, { + kind: Kind.FRAGMENT_DEFINITION, + description, + name: this.parseFragmentName(), + typeCondition: (this.expectKeyword("on"), this.parseNamedType()), + directives: this.parseDirectives(false), + selectionSet: this.parseSelectionSet() + }); + } + /** + * FragmentName : Name but not `on` + */ + parseFragmentName() { + if (this._lexer.token.value === "on") { + throw this.unexpected(); + } + return this.parseName(); + } + // Implements the parsing rules in the Values section. + /** + * Value[Const] : + * - [~Const] Variable + * - IntValue + * - FloatValue + * - StringValue + * - BooleanValue + * - NullValue + * - EnumValue + * - ListValue[?Const] + * - ObjectValue[?Const] + * + * BooleanValue : one of `true` `false` + * + * NullValue : `null` + * + * EnumValue : Name but not `true`, `false` or `null` + */ + parseValueLiteral(isConst) { + const token = this._lexer.token; + switch (token.kind) { + case TokenKind.BRACKET_L: + return this.parseList(isConst); + case TokenKind.BRACE_L: + return this.parseObject(isConst); + case TokenKind.INT: + this.advanceLexer(); + return this.node(token, { + kind: Kind.INT, + value: token.value + }); + case TokenKind.FLOAT: + this.advanceLexer(); + return this.node(token, { + kind: Kind.FLOAT, + value: token.value + }); + case TokenKind.STRING: + case TokenKind.BLOCK_STRING: + return this.parseStringLiteral(); + case TokenKind.NAME: + this.advanceLexer(); + switch (token.value) { + case "true": + return this.node(token, { + kind: Kind.BOOLEAN, + value: true + }); + case "false": + return this.node(token, { + kind: Kind.BOOLEAN, + value: false + }); + case "null": + return this.node(token, { + kind: Kind.NULL + }); + default: + return this.node(token, { + kind: Kind.ENUM, + value: token.value + }); + } + case TokenKind.DOLLAR: + if (isConst) { + this.expectToken(TokenKind.DOLLAR); + if (this._lexer.token.kind === TokenKind.NAME) { + const varName = this._lexer.token.value; + throw syntaxError( + this._lexer.source, + token.start, + `Unexpected variable "$${varName}" in constant value.` + ); + } else { + throw this.unexpected(token); + } + } + return this.parseVariable(); + default: + throw this.unexpected(); + } + } + parseConstValueLiteral() { + return this.parseValueLiteral(true); + } + parseStringLiteral() { + const token = this._lexer.token; + this.advanceLexer(); + return this.node(token, { + kind: Kind.STRING, + value: token.value, + block: token.kind === TokenKind.BLOCK_STRING + }); + } + /** + * ListValue[Const] : + * - [ ] + * - [ Value[?Const]+ ] + */ + parseList(isConst) { + const item = () => this.parseValueLiteral(isConst); + return this.node(this._lexer.token, { + kind: Kind.LIST, + values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R) + }); + } + /** + * ``` + * ObjectValue[Const] : + * - { } + * - { ObjectField[?Const]+ } + * ``` + */ + parseObject(isConst) { + const item = () => this.parseObjectField(isConst); + return this.node(this._lexer.token, { + kind: Kind.OBJECT, + fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R) + }); + } + /** + * ObjectField[Const] : Name : Value[?Const] + */ + parseObjectField(isConst) { + const start = this._lexer.token; + const name = this.parseName(); + this.expectToken(TokenKind.COLON); + return this.node(start, { + kind: Kind.OBJECT_FIELD, + name, + value: this.parseValueLiteral(isConst) + }); + } + // Implements the parsing rules in the Directives section. + /** + * Directives[Const] : Directive[?Const]+ + */ + parseDirectives(isConst) { + const directives = []; + while (this.peek(TokenKind.AT)) { + directives.push(this.parseDirective(isConst)); + } + return directives; + } + parseConstDirectives() { + return this.parseDirectives(true); + } + /** + * ``` + * Directive[Const] : @ Name Arguments[?Const]? + * ``` + */ + parseDirective(isConst) { + const start = this._lexer.token; + this.expectToken(TokenKind.AT); + return this.node(start, { + kind: Kind.DIRECTIVE, + name: this.parseName(), + arguments: this.parseArguments(isConst) + }); + } + // Implements the parsing rules in the Types section. + /** + * Type : + * - NamedType + * - ListType + * - NonNullType + */ + parseTypeReference() { + const start = this._lexer.token; + let type; + if (this.expectOptionalToken(TokenKind.BRACKET_L)) { + const innerType = this.parseTypeReference(); + this.expectToken(TokenKind.BRACKET_R); + type = this.node(start, { + kind: Kind.LIST_TYPE, + type: innerType + }); + } else { + type = this.parseNamedType(); + } + if (this.expectOptionalToken(TokenKind.BANG)) { + return this.node(start, { + kind: Kind.NON_NULL_TYPE, + type + }); + } + return type; + } + /** + * NamedType : Name + */ + parseNamedType() { + return this.node(this._lexer.token, { + kind: Kind.NAMED_TYPE, + name: this.parseName() + }); + } + // Implements the parsing rules in the Type Definition section. + peekDescription() { + return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING); + } + /** + * Description : StringValue + */ + parseDescription() { + if (this.peekDescription()) { + return this.parseStringLiteral(); + } + } + /** + * ``` + * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ } + * ``` + */ + parseSchemaDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("schema"); + const directives = this.parseConstDirectives(); + const operationTypes = this.many( + TokenKind.BRACE_L, + this.parseOperationTypeDefinition, + TokenKind.BRACE_R + ); + return this.node(start, { + kind: Kind.SCHEMA_DEFINITION, + description, + directives, + operationTypes + }); + } + /** + * OperationTypeDefinition : OperationType : NamedType + */ + parseOperationTypeDefinition() { + const start = this._lexer.token; + const operation = this.parseOperationType(); + this.expectToken(TokenKind.COLON); + const type = this.parseNamedType(); + return this.node(start, { + kind: Kind.OPERATION_TYPE_DEFINITION, + operation, + type + }); + } + /** + * ScalarTypeDefinition : Description? scalar Name Directives[Const]? + */ + parseScalarTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("scalar"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + return this.node(start, { + kind: Kind.SCALAR_TYPE_DEFINITION, + description, + name, + directives + }); + } + /** + * ObjectTypeDefinition : + * Description? + * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition? + */ + parseObjectTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("type"); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseConstDirectives(); + const fields = this.parseFieldsDefinition(); + return this.node(start, { + kind: Kind.OBJECT_TYPE_DEFINITION, + description, + name, + interfaces, + directives, + fields + }); + } + /** + * ImplementsInterfaces : + * - implements `&`? NamedType + * - ImplementsInterfaces & NamedType + */ + parseImplementsInterfaces() { + return this.expectOptionalKeyword("implements") ? this.delimitedMany(TokenKind.AMP, this.parseNamedType) : []; + } + /** + * ``` + * FieldsDefinition : { FieldDefinition+ } + * ``` + */ + parseFieldsDefinition() { + return this.optionalMany( + TokenKind.BRACE_L, + this.parseFieldDefinition, + TokenKind.BRACE_R + ); + } + /** + * FieldDefinition : + * - Description? Name ArgumentsDefinition? : Type Directives[Const]? + */ + parseFieldDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + const name = this.parseName(); + const args = this.parseArgumentDefs(); + this.expectToken(TokenKind.COLON); + const type = this.parseTypeReference(); + const directives = this.parseConstDirectives(); + return this.node(start, { + kind: Kind.FIELD_DEFINITION, + description, + name, + arguments: args, + type, + directives + }); + } + /** + * ArgumentsDefinition : ( InputValueDefinition+ ) + */ + parseArgumentDefs() { + return this.optionalMany( + TokenKind.PAREN_L, + this.parseInputValueDef, + TokenKind.PAREN_R + ); + } + /** + * InputValueDefinition : + * - Description? Name : Type DefaultValue? Directives[Const]? + */ + parseInputValueDef() { + const start = this._lexer.token; + const description = this.parseDescription(); + const name = this.parseName(); + this.expectToken(TokenKind.COLON); + const type = this.parseTypeReference(); + let defaultValue; + if (this.expectOptionalToken(TokenKind.EQUALS)) { + defaultValue = this.parseConstValueLiteral(); + } + const directives = this.parseConstDirectives(); + return this.node(start, { + kind: Kind.INPUT_VALUE_DEFINITION, + description, + name, + type, + defaultValue, + directives + }); + } + /** + * InterfaceTypeDefinition : + * - Description? interface Name Directives[Const]? FieldsDefinition? + */ + parseInterfaceTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("interface"); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseConstDirectives(); + const fields = this.parseFieldsDefinition(); + return this.node(start, { + kind: Kind.INTERFACE_TYPE_DEFINITION, + description, + name, + interfaces, + directives, + fields + }); + } + /** + * UnionTypeDefinition : + * - Description? union Name Directives[Const]? UnionMemberTypes? + */ + parseUnionTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("union"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const types = this.parseUnionMemberTypes(); + return this.node(start, { + kind: Kind.UNION_TYPE_DEFINITION, + description, + name, + directives, + types + }); + } + /** + * UnionMemberTypes : + * - = `|`? NamedType + * - UnionMemberTypes | NamedType + */ + parseUnionMemberTypes() { + return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : []; + } + /** + * EnumTypeDefinition : + * - Description? enum Name Directives[Const]? EnumValuesDefinition? + */ + parseEnumTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("enum"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const values = this.parseEnumValuesDefinition(); + return this.node(start, { + kind: Kind.ENUM_TYPE_DEFINITION, + description, + name, + directives, + values + }); + } + /** + * ``` + * EnumValuesDefinition : { EnumValueDefinition+ } + * ``` + */ + parseEnumValuesDefinition() { + return this.optionalMany( + TokenKind.BRACE_L, + this.parseEnumValueDefinition, + TokenKind.BRACE_R + ); + } + /** + * EnumValueDefinition : Description? EnumValue Directives[Const]? + */ + parseEnumValueDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + const name = this.parseEnumValueName(); + const directives = this.parseConstDirectives(); + return this.node(start, { + kind: Kind.ENUM_VALUE_DEFINITION, + description, + name, + directives + }); + } + /** + * EnumValue : Name but not `true`, `false` or `null` + */ + parseEnumValueName() { + if (this._lexer.token.value === "true" || this._lexer.token.value === "false" || this._lexer.token.value === "null") { + throw syntaxError( + this._lexer.source, + this._lexer.token.start, + `${getTokenDesc( + this._lexer.token + )} is reserved and cannot be used for an enum value.` + ); + } + return this.parseName(); + } + /** + * InputObjectTypeDefinition : + * - Description? input Name Directives[Const]? InputFieldsDefinition? + */ + parseInputObjectTypeDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("input"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const fields = this.parseInputFieldsDefinition(); + return this.node(start, { + kind: Kind.INPUT_OBJECT_TYPE_DEFINITION, + description, + name, + directives, + fields + }); + } + /** + * ``` + * InputFieldsDefinition : { InputValueDefinition+ } + * ``` + */ + parseInputFieldsDefinition() { + return this.optionalMany( + TokenKind.BRACE_L, + this.parseInputValueDef, + TokenKind.BRACE_R + ); + } + /** + * TypeSystemExtension : + * - SchemaExtension + * - TypeExtension + * + * TypeExtension : + * - ScalarTypeExtension + * - ObjectTypeExtension + * - InterfaceTypeExtension + * - UnionTypeExtension + * - EnumTypeExtension + * - InputObjectTypeDefinition + * - DirectiveDefinitionExtension + */ + parseTypeSystemExtension() { + const keywordToken = this._lexer.lookahead(); + if (keywordToken.kind === TokenKind.NAME) { + switch (keywordToken.value) { + case "schema": + return this.parseSchemaExtension(); + case "scalar": + return this.parseScalarTypeExtension(); + case "type": + return this.parseObjectTypeExtension(); + case "interface": + return this.parseInterfaceTypeExtension(); + case "union": + return this.parseUnionTypeExtension(); + case "enum": + return this.parseEnumTypeExtension(); + case "input": + return this.parseInputObjectTypeExtension(); + case "directive": + if (this._options.experimentalDirectivesOnDirectiveDefinitions) { + return this.parseDirectiveDefinitionExtension(); + } + break; + } + } + throw this.unexpected(keywordToken); + } + /** + * ``` + * SchemaExtension : + * - extend schema Directives[Const]? { OperationTypeDefinition+ } + * - extend schema Directives[Const] + * ``` + */ + parseSchemaExtension() { + const start = this._lexer.token; + this.expectKeyword("extend"); + this.expectKeyword("schema"); + const directives = this.parseConstDirectives(); + const operationTypes = this.optionalMany( + TokenKind.BRACE_L, + this.parseOperationTypeDefinition, + TokenKind.BRACE_R + ); + if (directives.length === 0 && operationTypes.length === 0) { + throw this.unexpected(); + } + return this.node(start, { + kind: Kind.SCHEMA_EXTENSION, + directives, + operationTypes + }); + } + /** + * ScalarTypeExtension : + * - extend scalar Name Directives[Const] + */ + parseScalarTypeExtension() { + const start = this._lexer.token; + this.expectKeyword("extend"); + this.expectKeyword("scalar"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + if (directives.length === 0) { + throw this.unexpected(); + } + return this.node(start, { + kind: Kind.SCALAR_TYPE_EXTENSION, + name, + directives + }); + } + /** + * ObjectTypeExtension : + * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition + * - extend type Name ImplementsInterfaces? Directives[Const] + * - extend type Name ImplementsInterfaces + */ + parseObjectTypeExtension() { + const start = this._lexer.token; + this.expectKeyword("extend"); + this.expectKeyword("type"); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseConstDirectives(); + const fields = this.parseFieldsDefinition(); + if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) { + throw this.unexpected(); + } + return this.node(start, { + kind: Kind.OBJECT_TYPE_EXTENSION, + name, + interfaces, + directives, + fields + }); + } + /** + * InterfaceTypeExtension : + * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition + * - extend interface Name ImplementsInterfaces? Directives[Const] + * - extend interface Name ImplementsInterfaces + */ + parseInterfaceTypeExtension() { + const start = this._lexer.token; + this.expectKeyword("extend"); + this.expectKeyword("interface"); + const name = this.parseName(); + const interfaces = this.parseImplementsInterfaces(); + const directives = this.parseConstDirectives(); + const fields = this.parseFieldsDefinition(); + if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) { + throw this.unexpected(); + } + return this.node(start, { + kind: Kind.INTERFACE_TYPE_EXTENSION, + name, + interfaces, + directives, + fields + }); + } + /** + * UnionTypeExtension : + * - extend union Name Directives[Const]? UnionMemberTypes + * - extend union Name Directives[Const] + */ + parseUnionTypeExtension() { + const start = this._lexer.token; + this.expectKeyword("extend"); + this.expectKeyword("union"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const types = this.parseUnionMemberTypes(); + if (directives.length === 0 && types.length === 0) { + throw this.unexpected(); + } + return this.node(start, { + kind: Kind.UNION_TYPE_EXTENSION, + name, + directives, + types + }); + } + /** + * EnumTypeExtension : + * - extend enum Name Directives[Const]? EnumValuesDefinition + * - extend enum Name Directives[Const] + */ + parseEnumTypeExtension() { + const start = this._lexer.token; + this.expectKeyword("extend"); + this.expectKeyword("enum"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const values = this.parseEnumValuesDefinition(); + if (directives.length === 0 && values.length === 0) { + throw this.unexpected(); + } + return this.node(start, { + kind: Kind.ENUM_TYPE_EXTENSION, + name, + directives, + values + }); + } + /** + * InputObjectTypeExtension : + * - extend input Name Directives[Const]? InputFieldsDefinition + * - extend input Name Directives[Const] + */ + parseInputObjectTypeExtension() { + const start = this._lexer.token; + this.expectKeyword("extend"); + this.expectKeyword("input"); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + const fields = this.parseInputFieldsDefinition(); + if (directives.length === 0 && fields.length === 0) { + throw this.unexpected(); + } + return this.node(start, { + kind: Kind.INPUT_OBJECT_TYPE_EXTENSION, + name, + directives, + fields + }); + } + parseDirectiveDefinitionExtension() { + const start = this._lexer.token; + this.expectKeyword("extend"); + this.expectKeyword("directive"); + this.expectToken(TokenKind.AT); + const name = this.parseName(); + const directives = this.parseConstDirectives(); + if (directives.length === 0) { + throw this.unexpected(); + } + return this.node(start, { + kind: Kind.DIRECTIVE_EXTENSION, + name, + directives + }); + } + /** + * ``` + * DirectiveDefinition : + * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations + * ``` + */ + parseDirectiveDefinition() { + const start = this._lexer.token; + const description = this.parseDescription(); + this.expectKeyword("directive"); + this.expectToken(TokenKind.AT); + const name = this.parseName(); + const args = this.parseArgumentDefs(); + const directives = this._options.experimentalDirectivesOnDirectiveDefinitions ? this.parseConstDirectives() : []; + const repeatable = this.expectOptionalKeyword("repeatable"); + this.expectKeyword("on"); + const locations = this.parseDirectiveLocations(); + return this.node(start, { + kind: Kind.DIRECTIVE_DEFINITION, + description, + name, + arguments: args, + directives, + repeatable, + locations + }); + } + /** + * DirectiveLocations : + * - `|`? DirectiveLocation + * - DirectiveLocations | DirectiveLocation + */ + parseDirectiveLocations() { + return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation); + } + /* + * DirectiveLocation : + * - ExecutableDirectiveLocation + * - TypeSystemDirectiveLocation + * + * ExecutableDirectiveLocation : one of + * `QUERY` + * `MUTATION` + * `SUBSCRIPTION` + * `FIELD` + * `FRAGMENT_DEFINITION` + * `FRAGMENT_SPREAD` + * `INLINE_FRAGMENT` + * + * TypeSystemDirectiveLocation : one of + * `SCHEMA` + * `SCALAR` + * `OBJECT` + * `FIELD_DEFINITION` + * `ARGUMENT_DEFINITION` + * `INTERFACE` + * `UNION` + * `ENUM` + * `ENUM_VALUE` + * `INPUT_OBJECT` + * `INPUT_FIELD_DEFINITION` + * `DIRECTIVE_DEFINITION` + */ + parseDirectiveLocation() { + const start = this._lexer.token; + const name = this.parseName(); + if (Object.prototype.hasOwnProperty.call(DirectiveLocation, name.value)) { + return name; + } + throw this.unexpected(start); + } + // Schema Coordinates + /** + * SchemaCoordinate : + * - Name + * - Name . Name + * - Name . Name ( Name : ) + * - \@ Name + * - \@ Name ( Name : ) + */ + parseSchemaCoordinate() { + const start = this._lexer.token; + const ofDirective = this.expectOptionalToken(TokenKind.AT); + const name = this.parseName(); + let memberName; + if (!ofDirective && this.expectOptionalToken(TokenKind.DOT)) { + memberName = this.parseName(); + } + let argumentName; + if ((ofDirective || memberName) && this.expectOptionalToken(TokenKind.PAREN_L)) { + argumentName = this.parseName(); + this.expectToken(TokenKind.COLON); + this.expectToken(TokenKind.PAREN_R); + } + if (ofDirective) { + if (argumentName) { + return this.node(start, { + kind: Kind.DIRECTIVE_ARGUMENT_COORDINATE, + name, + argumentName + }); + } + return this.node(start, { + kind: Kind.DIRECTIVE_COORDINATE, + name + }); + } else if (memberName) { + if (argumentName) { + return this.node(start, { + kind: Kind.ARGUMENT_COORDINATE, + name, + fieldName: memberName, + argumentName + }); + } + return this.node(start, { + kind: Kind.MEMBER_COORDINATE, + name, + memberName + }); + } + return this.node(start, { + kind: Kind.TYPE_COORDINATE, + name + }); + } + // Core parsing utility functions + /** + * Returns a node that, if configured to do so, sets a "loc" field as a + * location object, used to identify the place in the source that created a + * given parsed object. + */ + node(startToken, node) { + if (this._options.noLocation !== true) { + node.loc = new Location( + startToken, + this._lexer.lastToken, + this._lexer.source + ); + } + return node; + } + /** + * Determines if the next token is of a given kind + */ + peek(kind) { + return this._lexer.token.kind === kind; + } + /** + * If the next token is of the given kind, return that token after advancing the lexer. + * Otherwise, do not change the parser state and throw an error. + */ + expectToken(kind) { + const token = this._lexer.token; + if (token.kind === kind) { + this.advanceLexer(); + return token; + } + throw syntaxError( + this._lexer.source, + token.start, + `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.` + ); + } + /** + * If the next token is of the given kind, return "true" after advancing the lexer. + * Otherwise, do not change the parser state and return "false". + */ + expectOptionalToken(kind) { + const token = this._lexer.token; + if (token.kind === kind) { + this.advanceLexer(); + return true; + } + return false; + } + /** + * If the next token is a given keyword, advance the lexer. + * Otherwise, do not change the parser state and throw an error. + */ + expectKeyword(value) { + const token = this._lexer.token; + if (token.kind === TokenKind.NAME && token.value === value) { + this.advanceLexer(); + } else { + throw syntaxError( + this._lexer.source, + token.start, + `Expected "${value}", found ${getTokenDesc(token)}.` + ); + } + } + /** + * If the next token is a given keyword, return "true" after advancing the lexer. + * Otherwise, do not change the parser state and return "false". + */ + expectOptionalKeyword(value) { + const token = this._lexer.token; + if (token.kind === TokenKind.NAME && token.value === value) { + this.advanceLexer(); + return true; + } + return false; + } + /** + * Helper function for creating an error when an unexpected lexed token is encountered. + */ + unexpected(atToken) { + const token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token; + return syntaxError( + this._lexer.source, + token.start, + `Unexpected ${getTokenDesc(token)}.` + ); + } + /** + * Returns a possibly empty list of parse nodes, determined by the parseFn. + * This list begins with a lex token of openKind and ends with a lex token of closeKind. + * Advances the parser to the next lex token after the closing token. + */ + any(openKind, parseFn, closeKind) { + this.expectToken(openKind); + const nodes = []; + while (!this.expectOptionalToken(closeKind)) { + nodes.push(parseFn.call(this)); + } + return nodes; + } + /** + * Returns a list of parse nodes, determined by the parseFn. + * It can be empty only if open token is missing otherwise it will always return non-empty list + * that begins with a lex token of openKind and ends with a lex token of closeKind. + * Advances the parser to the next lex token after the closing token. + */ + optionalMany(openKind, parseFn, closeKind) { + if (this.expectOptionalToken(openKind)) { + const nodes = []; + do { + nodes.push(parseFn.call(this)); + } while (!this.expectOptionalToken(closeKind)); + return nodes; + } + return []; + } + /** + * Returns a non-empty list of parse nodes, determined by the parseFn. + * This list begins with a lex token of openKind and ends with a lex token of closeKind. + * Advances the parser to the next lex token after the closing token. + */ + many(openKind, parseFn, closeKind) { + this.expectToken(openKind); + const nodes = []; + do { + nodes.push(parseFn.call(this)); + } while (!this.expectOptionalToken(closeKind)); + return nodes; + } + /** + * Returns a non-empty list of parse nodes, determined by the parseFn. + * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind. + * Advances the parser to the next lex token after last item in the list. + */ + delimitedMany(delimiterKind, parseFn) { + this.expectOptionalToken(delimiterKind); + const nodes = []; + do { + nodes.push(parseFn.call(this)); + } while (this.expectOptionalToken(delimiterKind)); + return nodes; + } + advanceLexer() { + const { maxTokens } = this._options; + const token = this._lexer.advance(); + if (token.kind !== TokenKind.EOF) { + ++this._tokenCounter; + if (maxTokens !== void 0 && this._tokenCounter > maxTokens) { + throw syntaxError( + this._lexer.source, + token.start, + `Document contains more that ${maxTokens} tokens. Parsing aborted.` + ); + } + } + } +}; +function getTokenDesc(token) { + const value = token.value; + return getTokenKindDesc(token.kind) + (value != null ? ` "${value}"` : ""); +} +function getTokenKindDesc(kind) { + return isPunctuatorTokenKind(kind) ? `"${kind}"` : kind; +} + +// node_modules/graphql/language/printString.mjs +function printString(str) { + return `"${str.replace(escapedRegExp, escapedReplacer)}"`; +} +var escapedRegExp = /[\x00-\x1f\x22\x5c\x7f-\x9f]/g; +function escapedReplacer(str) { + return escapeSequences[str.charCodeAt(0)]; +} +var escapeSequences = [ + "\\u0000", + "\\u0001", + "\\u0002", + "\\u0003", + "\\u0004", + "\\u0005", + "\\u0006", + "\\u0007", + "\\b", + "\\t", + "\\n", + "\\u000B", + "\\f", + "\\r", + "\\u000E", + "\\u000F", + "\\u0010", + "\\u0011", + "\\u0012", + "\\u0013", + "\\u0014", + "\\u0015", + "\\u0016", + "\\u0017", + "\\u0018", + "\\u0019", + "\\u001A", + "\\u001B", + "\\u001C", + "\\u001D", + "\\u001E", + "\\u001F", + "", + "", + '\\"', + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + // 2F + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + // 3F + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + // 4F + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\\\\", + "", + "", + "", + // 5F + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + // 6F + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\\u007F", + "\\u0080", + "\\u0081", + "\\u0082", + "\\u0083", + "\\u0084", + "\\u0085", + "\\u0086", + "\\u0087", + "\\u0088", + "\\u0089", + "\\u008A", + "\\u008B", + "\\u008C", + "\\u008D", + "\\u008E", + "\\u008F", + "\\u0090", + "\\u0091", + "\\u0092", + "\\u0093", + "\\u0094", + "\\u0095", + "\\u0096", + "\\u0097", + "\\u0098", + "\\u0099", + "\\u009A", + "\\u009B", + "\\u009C", + "\\u009D", + "\\u009E", + "\\u009F" +]; + +// node_modules/graphql/language/visitor.mjs +var BREAK = Object.freeze({}); +function visit(root, visitor, visitorKeys = QueryDocumentKeys) { + const enterLeaveMap = /* @__PURE__ */ new Map(); + for (const kind of Object.values(Kind)) { + enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind)); + } + let stack = void 0; + let inArray = Array.isArray(root); + let keys = [root]; + let index = -1; + let edits = []; + let node = root; + let key = void 0; + let parent = void 0; + const path = []; + const ancestors = []; + do { + index++; + const isLeaving = index === keys.length; + const isEdited = isLeaving && edits.length !== 0; + if (isLeaving) { + key = ancestors.length === 0 ? void 0 : path[path.length - 1]; + node = parent; + parent = ancestors.pop(); + if (isEdited) { + if (inArray) { + node = node.slice(); + let editOffset = 0; + for (const [editKey, editValue] of edits) { + const arrayKey = editKey - editOffset; + if (editValue === null) { + node.splice(arrayKey, 1); + editOffset++; + } else { + node[arrayKey] = editValue; + } + } + } else { + node = { ...node }; + for (const [editKey, editValue] of edits) { + node[editKey] = editValue; + } + } + } + index = stack.index; + keys = stack.keys; + edits = stack.edits; + inArray = stack.inArray; + stack = stack.prev; + } else if (parent) { + key = inArray ? index : keys[index]; + node = parent[key]; + if (node === null || node === void 0) { + continue; + } + path.push(key); + } + let result; + if (!Array.isArray(node)) { + var _enterLeaveMap$get, _enterLeaveMap$get2; + isNode(node) || devAssert(false, `Invalid AST Node: ${inspect(node)}.`); + const visitFn = isLeaving ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null || _enterLeaveMap$get === void 0 ? void 0 : _enterLeaveMap$get.leave : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null || _enterLeaveMap$get2 === void 0 ? void 0 : _enterLeaveMap$get2.enter; + result = visitFn === null || visitFn === void 0 ? void 0 : visitFn.call(visitor, node, key, parent, path, ancestors); + if (result === BREAK) { + break; + } + if (result === false) { + if (!isLeaving) { + path.pop(); + continue; + } + } else if (result !== void 0) { + edits.push([key, result]); + if (!isLeaving) { + if (isNode(result)) { + node = result; + } else { + path.pop(); + continue; + } + } + } + } + if (result === void 0 && isEdited) { + edits.push([key, node]); + } + if (isLeaving) { + path.pop(); + } else { + var _node$kind; + stack = { + inArray, + index, + keys, + edits, + prev: stack + }; + inArray = Array.isArray(node); + keys = inArray ? node : (_node$kind = visitorKeys[node.kind]) !== null && _node$kind !== void 0 ? _node$kind : []; + index = -1; + edits = []; + if (parent) { + ancestors.push(parent); + } + parent = node; + } + } while (stack !== void 0); + if (edits.length !== 0) { + return edits[edits.length - 1][1]; + } + return root; +} +function getEnterLeaveForKind(visitor, kind) { + const kindVisitor = visitor[kind]; + if (typeof kindVisitor === "object") { + return kindVisitor; + } else if (typeof kindVisitor === "function") { + return { + enter: kindVisitor, + leave: void 0 + }; + } + return { + enter: visitor.enter, + leave: visitor.leave + }; +} + +// node_modules/graphql/language/printer.mjs +function print(ast) { + return visit(ast, printDocASTReducer); +} +var MAX_LINE_LENGTH = 80; +var printDocASTReducer = { + Name: { + leave: (node) => node.value + }, + Variable: { + leave: (node) => "$" + node.name + }, + // Document + Document: { + leave: (node) => join(node.definitions, "\n\n") + }, + OperationDefinition: { + leave(node) { + const varDefs = hasMultilineItems(node.variableDefinitions) ? wrap("(\n", join(node.variableDefinitions, "\n"), "\n)") : wrap("(", join(node.variableDefinitions, ", "), ")"); + const prefix = wrap("", node.description, "\n") + join( + [ + node.operation, + join([node.name, varDefs]), + join(node.directives, " ") + ], + " " + ); + return (prefix === "query" ? "" : prefix + " ") + node.selectionSet; + } + }, + VariableDefinition: { + leave: ({ variable, type, defaultValue, directives, description }) => wrap("", description, "\n") + variable + ": " + type + wrap(" = ", defaultValue) + wrap(" ", join(directives, " ")) + }, + SelectionSet: { + leave: ({ selections }) => block(selections) + }, + Field: { + leave({ alias, name, arguments: args, directives, selectionSet }) { + const prefix = wrap("", alias, ": ") + name; + let argsLine = prefix + wrap("(", join(args, ", "), ")"); + if (argsLine.length > MAX_LINE_LENGTH) { + argsLine = prefix + wrap("(\n", indent(join(args, "\n")), "\n)"); + } + return join([argsLine, join(directives, " "), selectionSet], " "); + } + }, + Argument: { + leave: ({ name, value }) => name + ": " + value + }, + // Fragments + FragmentSpread: { + leave: ({ name, directives }) => "..." + name + wrap(" ", join(directives, " ")) + }, + InlineFragment: { + leave: ({ typeCondition, directives, selectionSet }) => join( + [ + "...", + wrap("on ", typeCondition), + join(directives, " "), + selectionSet + ], + " " + ) + }, + FragmentDefinition: { + leave: ({ + name, + typeCondition, + variableDefinitions, + directives, + selectionSet, + description + }) => wrap("", description, "\n") + // Note: fragment variable definitions are experimental and may be changed + // or removed in the future. + `fragment ${name}${wrap("(", join(variableDefinitions, ", "), ")")} on ${typeCondition} ${wrap("", join(directives, " "), " ")}` + selectionSet + }, + // Value + IntValue: { + leave: ({ value }) => value + }, + FloatValue: { + leave: ({ value }) => value + }, + StringValue: { + leave: ({ value, block: isBlockString }) => isBlockString ? printBlockString(value) : printString(value) + }, + BooleanValue: { + leave: ({ value }) => value ? "true" : "false" + }, + NullValue: { + leave: () => "null" + }, + EnumValue: { + leave: ({ value }) => value + }, + ListValue: { + leave: ({ values }) => "[" + join(values, ", ") + "]" + }, + ObjectValue: { + leave: ({ fields }) => "{" + join(fields, ", ") + "}" + }, + ObjectField: { + leave: ({ name, value }) => name + ": " + value + }, + // Directive + Directive: { + leave: ({ name, arguments: args }) => "@" + name + wrap("(", join(args, ", "), ")") + }, + // Type + NamedType: { + leave: ({ name }) => name + }, + ListType: { + leave: ({ type }) => "[" + type + "]" + }, + NonNullType: { + leave: ({ type }) => type + "!" + }, + // Type System Definitions + SchemaDefinition: { + leave: ({ description, directives, operationTypes }) => wrap("", description, "\n") + join(["schema", join(directives, " "), block(operationTypes)], " ") + }, + OperationTypeDefinition: { + leave: ({ operation, type }) => operation + ": " + type + }, + ScalarTypeDefinition: { + leave: ({ description, name, directives }) => wrap("", description, "\n") + join(["scalar", name, join(directives, " ")], " ") + }, + ObjectTypeDefinition: { + leave: ({ description, name, interfaces, directives, fields }) => wrap("", description, "\n") + join( + [ + "type", + name, + wrap("implements ", join(interfaces, " & ")), + join(directives, " "), + block(fields) + ], + " " + ) + }, + FieldDefinition: { + leave: ({ description, name, arguments: args, type, directives }) => wrap("", description, "\n") + name + (hasMultilineItems(args) ? wrap("(\n", indent(join(args, "\n")), "\n)") : wrap("(", join(args, ", "), ")")) + ": " + type + wrap(" ", join(directives, " ")) + }, + InputValueDefinition: { + leave: ({ description, name, type, defaultValue, directives }) => wrap("", description, "\n") + join( + [name + ": " + type, wrap("= ", defaultValue), join(directives, " ")], + " " + ) + }, + InterfaceTypeDefinition: { + leave: ({ description, name, interfaces, directives, fields }) => wrap("", description, "\n") + join( + [ + "interface", + name, + wrap("implements ", join(interfaces, " & ")), + join(directives, " "), + block(fields) + ], + " " + ) + }, + UnionTypeDefinition: { + leave: ({ description, name, directives, types }) => wrap("", description, "\n") + join( + ["union", name, join(directives, " "), wrap("= ", join(types, " | "))], + " " + ) + }, + EnumTypeDefinition: { + leave: ({ description, name, directives, values }) => wrap("", description, "\n") + join(["enum", name, join(directives, " "), block(values)], " ") + }, + EnumValueDefinition: { + leave: ({ description, name, directives }) => wrap("", description, "\n") + join([name, join(directives, " ")], " ") + }, + InputObjectTypeDefinition: { + leave: ({ description, name, directives, fields }) => wrap("", description, "\n") + join(["input", name, join(directives, " "), block(fields)], " ") + }, + DirectiveDefinition: { + leave: ({ + description, + name, + arguments: args, + directives, + repeatable, + locations + }) => wrap("", description, "\n") + "directive @" + name + (hasMultilineItems(args) ? wrap("(\n", indent(join(args, "\n")), "\n)") : wrap("(", join(args, ", "), ")")) + wrap(" ", join(directives, " ")) + (repeatable ? " repeatable" : "") + " on " + join(locations, " | ") + }, + SchemaExtension: { + leave: ({ directives, operationTypes }) => join( + ["extend schema", join(directives, " "), block(operationTypes)], + " " + ) + }, + ScalarTypeExtension: { + leave: ({ name, directives }) => join(["extend scalar", name, join(directives, " ")], " ") + }, + ObjectTypeExtension: { + leave: ({ name, interfaces, directives, fields }) => join( + [ + "extend type", + name, + wrap("implements ", join(interfaces, " & ")), + join(directives, " "), + block(fields) + ], + " " + ) + }, + InterfaceTypeExtension: { + leave: ({ name, interfaces, directives, fields }) => join( + [ + "extend interface", + name, + wrap("implements ", join(interfaces, " & ")), + join(directives, " "), + block(fields) + ], + " " + ) + }, + UnionTypeExtension: { + leave: ({ name, directives, types }) => join( + [ + "extend union", + name, + join(directives, " "), + wrap("= ", join(types, " | ")) + ], + " " + ) + }, + EnumTypeExtension: { + leave: ({ name, directives, values }) => join(["extend enum", name, join(directives, " "), block(values)], " ") + }, + InputObjectTypeExtension: { + leave: ({ name, directives, fields }) => join(["extend input", name, join(directives, " "), block(fields)], " ") + }, + DirectiveExtension: { + leave: ({ name, directives }) => join(["extend directive @" + name, join(directives, " ")], " ") + }, + // Schema Coordinates + TypeCoordinate: { + leave: ({ name }) => name + }, + MemberCoordinate: { + leave: ({ name, memberName }) => join([name, wrap(".", memberName)]) + }, + ArgumentCoordinate: { + leave: ({ name, fieldName, argumentName }) => join([name, wrap(".", fieldName), wrap("(", argumentName, ":)")]) + }, + DirectiveCoordinate: { + leave: ({ name }) => join(["@", name]) + }, + DirectiveArgumentCoordinate: { + leave: ({ name, argumentName }) => join(["@", name, wrap("(", argumentName, ":)")]) + } +}; +function join(maybeArray, separator = "") { + var _maybeArray$filter$jo; + return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter((x2) => x2).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : ""; +} +function block(array) { + return wrap("{\n", indent(join(array, "\n")), "\n}"); +} +function wrap(start, maybeString, end = "") { + return maybeString != null && maybeString !== "" ? start + maybeString + end : ""; +} +function indent(str) { + return wrap(" ", str.replace(/\n/g, "\n ")); +} +function hasMultilineItems(maybeArray) { + var _maybeArray$some; + return (_maybeArray$some = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.some((str) => str.includes("\n"))) !== null && _maybeArray$some !== void 0 ? _maybeArray$some : false; +} + +// node_modules/graphql-request/build/esm/resolveRequestDocument.js +var extractOperationName = (document) => { + let operationName = void 0; + const operationDefinitions = document.definitions.filter((definition) => definition.kind === `OperationDefinition`); + if (operationDefinitions.length === 1) { + operationName = operationDefinitions[0]?.name?.value; + } + return operationName; +}; +var resolveRequestDocument = (document) => { + if (typeof document === `string`) { + let operationName2 = void 0; + try { + const parsedDocument = parse2(document); + operationName2 = extractOperationName(parsedDocument); + } catch (err) { + } + return { query: document, operationName: operationName2 }; + } + const operationName = extractOperationName(document); + return { query: print(document), operationName }; +}; + +// node_modules/graphql-request/build/esm/types.js +var ClientError = class _ClientError extends Error { + constructor(response, request) { + const message = `${_ClientError.extractMessage(response)}: ${JSON.stringify({ + response, + request + })}`; + super(message); + Object.setPrototypeOf(this, _ClientError.prototype); + this.response = response; + this.request = request; + if (typeof Error.captureStackTrace === `function`) { + Error.captureStackTrace(this, _ClientError); + } + } + static extractMessage(response) { + return response.errors?.[0]?.message ?? `GraphQL Error (Code: ${response.status})`; + } +}; + +// node_modules/graphql-request/build/esm/index.js +var CrossFetch = __toESM(require_browser_ponyfill(), 1); + +// node_modules/graphql-request/build/esm/graphql-ws.js +var CONNECTION_INIT = `connection_init`; +var CONNECTION_ACK = `connection_ack`; +var PING = `ping`; +var PONG = `pong`; +var SUBSCRIBE = `subscribe`; +var NEXT = `next`; +var ERROR = `error`; +var COMPLETE = `complete`; +var GraphQLWebSocketMessage = class _GraphQLWebSocketMessage { + get type() { + return this._type; + } + get id() { + return this._id; + } + get payload() { + return this._payload; + } + constructor(type, payload, id) { + this._type = type; + this._payload = payload; + this._id = id; + } + get text() { + const result = { type: this.type }; + if (this.id != null && this.id != void 0) + result.id = this.id; + if (this.payload != null && this.payload != void 0) + result.payload = this.payload; + return JSON.stringify(result); + } + static parse(data, f2) { + const { type, payload, id } = JSON.parse(data); + return new _GraphQLWebSocketMessage(type, f2(payload), id); + } +}; +var GraphQLWebSocketClient = class { + constructor(socket, { onInit, onAcknowledged, onPing, onPong }) { + this.socketState = { acknowledged: false, lastRequestId: 0, subscriptions: {} }; + this.socket = socket; + socket.addEventListener(`open`, async (e24) => { + this.socketState.acknowledged = false; + this.socketState.subscriptions = {}; + socket.send(ConnectionInit(onInit ? await onInit() : null).text); + }); + socket.addEventListener(`close`, (e24) => { + this.socketState.acknowledged = false; + this.socketState.subscriptions = {}; + }); + socket.addEventListener(`error`, (e24) => { + console.error(e24); + }); + socket.addEventListener(`message`, (e24) => { + try { + const message = parseMessage(e24.data); + switch (message.type) { + case CONNECTION_ACK: { + if (this.socketState.acknowledged) { + console.warn(`Duplicate CONNECTION_ACK message ignored`); + } else { + this.socketState.acknowledged = true; + if (onAcknowledged) + onAcknowledged(message.payload); + } + return; + } + case PING: { + if (onPing) + onPing(message.payload).then((r) => socket.send(Pong(r).text)); + else + socket.send(Pong(null).text); + return; + } + case PONG: { + if (onPong) + onPong(message.payload); + return; + } + } + if (!this.socketState.acknowledged) { + return; + } + if (message.id === void 0 || message.id === null || !this.socketState.subscriptions[message.id]) { + return; + } + const { query, variables, subscriber } = this.socketState.subscriptions[message.id]; + switch (message.type) { + case NEXT: { + if (!message.payload.errors && message.payload.data) { + subscriber.next && subscriber.next(message.payload.data); + } + if (message.payload.errors) { + subscriber.error && subscriber.error(new ClientError({ ...message.payload, status: 200 }, { query, variables })); + } else { + } + return; + } + case ERROR: { + subscriber.error && subscriber.error(new ClientError({ errors: message.payload, status: 200 }, { query, variables })); + return; + } + case COMPLETE: { + subscriber.complete && subscriber.complete(); + delete this.socketState.subscriptions[message.id]; + return; + } + } + } catch (e25) { + console.error(e25); + socket.close(1006); + } + socket.close(4400, `Unknown graphql-ws message.`); + }); + } + makeSubscribe(query, operationName, subscriber, variables) { + const subscriptionId = (this.socketState.lastRequestId++).toString(); + this.socketState.subscriptions[subscriptionId] = { query, variables, subscriber }; + this.socket.send(Subscribe(subscriptionId, { query, operationName, variables }).text); + return () => { + this.socket.send(Complete(subscriptionId).text); + delete this.socketState.subscriptions[subscriptionId]; + }; + } + rawRequest(query, variables) { + return new Promise((resolve, reject) => { + let result; + this.rawSubscribe(query, { + next: (data, extensions) => result = { data, extensions }, + error: reject, + complete: () => resolve(result) + }, variables); + }); + } + request(document, variables) { + return new Promise((resolve, reject) => { + let result; + this.subscribe(document, { + next: (data) => result = data, + error: reject, + complete: () => resolve(result) + }, variables); + }); + } + subscribe(document, subscriber, variables) { + const { query, operationName } = resolveRequestDocument(document); + return this.makeSubscribe(query, operationName, subscriber, variables); + } + rawSubscribe(query, subscriber, variables) { + return this.makeSubscribe(query, void 0, subscriber, variables); + } + ping(payload) { + this.socket.send(Ping(payload).text); + } + close() { + this.socket.close(1e3); + } +}; +GraphQLWebSocketClient.PROTOCOL = `graphql-transport-ws`; +function parseMessage(data, f2 = (a) => a) { + const m2 = GraphQLWebSocketMessage.parse(data, f2); + return m2; +} +function ConnectionInit(payload) { + return new GraphQLWebSocketMessage(CONNECTION_INIT, payload); +} +function Ping(payload) { + return new GraphQLWebSocketMessage(PING, payload, void 0); +} +function Pong(payload) { + return new GraphQLWebSocketMessage(PONG, payload, void 0); +} +function Subscribe(id, payload) { + return new GraphQLWebSocketMessage(SUBSCRIBE, payload, id); +} +function Complete(id) { + return new GraphQLWebSocketMessage(COMPLETE, void 0, id); +} + +// node_modules/graphql-request/build/esm/index.js +var resolveHeaders = (headers) => { + let oHeaders = {}; + if (headers) { + if (typeof Headers !== `undefined` && headers instanceof Headers || CrossFetch && CrossFetch.Headers && headers instanceof CrossFetch.Headers) { + oHeaders = HeadersInstanceToPlainObject(headers); + } else if (Array.isArray(headers)) { + headers.forEach(([name, value]) => { + if (name && value !== void 0) { + oHeaders[name] = value; + } + }); + } else { + oHeaders = headers; + } + } + return oHeaders; +}; +var cleanQuery = (str) => str.replace(/([\s,]|#[^\n\r]+)+/g, ` `).trim(); +var buildRequestConfig = (params) => { + if (!Array.isArray(params.query)) { + const params_2 = params; + const search = [`query=${encodeURIComponent(cleanQuery(params_2.query))}`]; + if (params.variables) { + search.push(`variables=${encodeURIComponent(params_2.jsonSerializer.stringify(params_2.variables))}`); + } + if (params_2.operationName) { + search.push(`operationName=${encodeURIComponent(params_2.operationName)}`); + } + return search.join(`&`); + } + if (typeof params.variables !== `undefined` && !Array.isArray(params.variables)) { + throw new Error(`Cannot create query with given variable type, array expected`); + } + const params_ = params; + const payload = params.query.reduce((acc, currentQuery, index) => { + acc.push({ + query: cleanQuery(currentQuery), + variables: params_.variables ? params_.jsonSerializer.stringify(params_.variables[index]) : void 0 + }); + return acc; + }, []); + return `query=${encodeURIComponent(params_.jsonSerializer.stringify(payload))}`; +}; +var createHttpMethodFetcher = (method) => async (params) => { + const { url, query, variables, operationName, fetch: fetch2, fetchOptions, middleware } = params; + const headers = { ...params.headers }; + let queryParams = ``; + let body = void 0; + if (method === `POST`) { + body = createRequestBody(query, variables, operationName, fetchOptions.jsonSerializer); + if (typeof body === `string`) { + headers[`Content-Type`] = `application/json`; + } + } else { + queryParams = buildRequestConfig({ + query, + variables, + operationName, + jsonSerializer: fetchOptions.jsonSerializer ?? defaultJsonSerializer + }); + } + const init = { + method, + headers, + body, + ...fetchOptions + }; + let urlResolved = url; + let initResolved = init; + if (middleware) { + const result = await Promise.resolve(middleware({ ...init, url, operationName, variables })); + const { url: urlNew, ...initNew } = result; + urlResolved = urlNew; + initResolved = initNew; + } + if (queryParams) { + urlResolved = `${urlResolved}?${queryParams}`; + } + return await fetch2(urlResolved, initResolved); +}; +var GraphQLClient = class { + constructor(url, requestConfig = {}) { + this.url = url; + this.requestConfig = requestConfig; + this.rawRequest = async (...args) => { + const [queryOrOptions, variables, requestHeaders] = args; + const rawRequestOptions = parseRawRequestArgs(queryOrOptions, variables, requestHeaders); + const { headers, fetch: fetch2 = CrossFetch.default, method = `POST`, requestMiddleware, responseMiddleware, ...fetchOptions } = this.requestConfig; + const { url: url2 } = this; + if (rawRequestOptions.signal !== void 0) { + fetchOptions.signal = rawRequestOptions.signal; + } + const { operationName } = resolveRequestDocument(rawRequestOptions.query); + return makeRequest({ + url: url2, + query: rawRequestOptions.query, + variables: rawRequestOptions.variables, + headers: { + ...resolveHeaders(callOrIdentity(headers)), + ...resolveHeaders(rawRequestOptions.requestHeaders) + }, + operationName, + fetch: fetch2, + method, + fetchOptions, + middleware: requestMiddleware + }).then((response) => { + if (responseMiddleware) { + responseMiddleware(response); + } + return response; + }).catch((error) => { + if (responseMiddleware) { + responseMiddleware(error); + } + throw error; + }); + }; + } + async request(documentOrOptions, ...variablesAndRequestHeaders) { + const [variables, requestHeaders] = variablesAndRequestHeaders; + const requestOptions = parseRequestArgs(documentOrOptions, variables, requestHeaders); + const { headers, fetch: fetch2 = CrossFetch.default, method = `POST`, requestMiddleware, responseMiddleware, ...fetchOptions } = this.requestConfig; + const { url } = this; + if (requestOptions.signal !== void 0) { + fetchOptions.signal = requestOptions.signal; + } + const { query, operationName } = resolveRequestDocument(requestOptions.document); + return makeRequest({ + url, + query, + variables: requestOptions.variables, + headers: { + ...resolveHeaders(callOrIdentity(headers)), + ...resolveHeaders(requestOptions.requestHeaders) + }, + operationName, + fetch: fetch2, + method, + fetchOptions, + middleware: requestMiddleware + }).then((response) => { + if (responseMiddleware) { + responseMiddleware(response); + } + return response.data; + }).catch((error) => { + if (responseMiddleware) { + responseMiddleware(error); + } + throw error; + }); + } + // prettier-ignore + batchRequests(documentsOrOptions, requestHeaders) { + const batchRequestOptions = parseBatchRequestArgs(documentsOrOptions, requestHeaders); + const { headers, ...fetchOptions } = this.requestConfig; + if (batchRequestOptions.signal !== void 0) { + fetchOptions.signal = batchRequestOptions.signal; + } + const queries = batchRequestOptions.documents.map(({ document }) => resolveRequestDocument(document).query); + const variables = batchRequestOptions.documents.map(({ variables: variables2 }) => variables2); + return makeRequest({ + url: this.url, + query: queries, + // @ts-expect-error TODO reconcile batch variables into system. + variables, + headers: { + ...resolveHeaders(callOrIdentity(headers)), + ...resolveHeaders(batchRequestOptions.requestHeaders) + }, + operationName: void 0, + fetch: this.requestConfig.fetch ?? CrossFetch.default, + method: this.requestConfig.method || `POST`, + fetchOptions, + middleware: this.requestConfig.requestMiddleware + }).then((response) => { + if (this.requestConfig.responseMiddleware) { + this.requestConfig.responseMiddleware(response); + } + return response.data; + }).catch((error) => { + if (this.requestConfig.responseMiddleware) { + this.requestConfig.responseMiddleware(error); + } + throw error; + }); + } + setHeaders(headers) { + this.requestConfig.headers = headers; + return this; + } + /** + * Attach a header to the client. All subsequent requests will have this header. + */ + setHeader(key, value) { + const { headers } = this.requestConfig; + if (headers) { + headers[key] = value; + } else { + this.requestConfig.headers = { [key]: value }; + } + return this; + } + /** + * Change the client endpoint. All subsequent requests will send to this endpoint. + */ + setEndpoint(value) { + this.url = value; + return this; + } +}; +var makeRequest = async (params) => { + const { query, variables, fetchOptions } = params; + const fetcher = createHttpMethodFetcher(uppercase(params.method ?? `post`)); + const isBatchingQuery = Array.isArray(params.query); + const response = await fetcher(params); + const result = await getResult(response, fetchOptions.jsonSerializer ?? defaultJsonSerializer); + const successfullyReceivedData = Array.isArray(result) ? !result.some(({ data }) => !data) : Boolean(result.data); + const successfullyPassedErrorPolicy = Array.isArray(result) || !result.errors || Array.isArray(result.errors) && !result.errors.length || fetchOptions.errorPolicy === `all` || fetchOptions.errorPolicy === `ignore`; + if (response.ok && successfullyPassedErrorPolicy && successfullyReceivedData) { + const { errors: _, ...rest } = Array.isArray(result) ? result : result; + const data = fetchOptions.errorPolicy === `ignore` ? rest : result; + const dataEnvelope = isBatchingQuery ? { data } : data; + return { + ...dataEnvelope, + headers: response.headers, + status: response.status + }; + } else { + const errorResult = typeof result === `string` ? { + error: result + } : result; + throw new ClientError( + // @ts-expect-error TODO + { ...errorResult, status: response.status, headers: response.headers }, + { query, variables } + ); + } +}; +var createRequestBody = (query, variables, operationName, jsonSerializer) => { + const jsonSerializer_ = jsonSerializer ?? defaultJsonSerializer; + if (!Array.isArray(query)) { + return jsonSerializer_.stringify({ query, variables, operationName }); + } + if (typeof variables !== `undefined` && !Array.isArray(variables)) { + throw new Error(`Cannot create request body with given variable type, array expected`); + } + const payload = query.reduce((acc, currentQuery, index) => { + acc.push({ query: currentQuery, variables: variables ? variables[index] : void 0 }); + return acc; + }, []); + return jsonSerializer_.stringify(payload); +}; +var getResult = async (response, jsonSerializer) => { + let contentType; + response.headers.forEach((value, key) => { + if (key.toLowerCase() === `content-type`) { + contentType = value; + } + }); + if (contentType && (contentType.toLowerCase().startsWith(`application/json`) || contentType.toLowerCase().startsWith(`application/graphql+json`) || contentType.toLowerCase().startsWith(`application/graphql-response+json`))) { + return jsonSerializer.parse(await response.text()); + } else { + return response.text(); + } +}; +var callOrIdentity = (value) => { + return typeof value === `function` ? value() : value; +}; + +// static/playground/weaviate-client.web.js +var import_nice_grpc_common = __toESM(require_lib2()); +var import_nice_grpc_client_middleware_retry = __toESM(require_lib3()); +var import_nice_grpc_web = __toESM(require_lib4()); +var qp = Object.create; +var Js = Object.defineProperty; +var Lp = Object.getOwnPropertyDescriptor; +var Jp = Object.getOwnPropertyNames; +var zp = Object.getPrototypeOf; +var $p = Object.prototype.hasOwnProperty; +var Hp = (e24, t) => () => (e24 && (t = e24(e24 = 0)), t); +var re = (e24, t) => () => (t || e24((t = { exports: {} }).exports, t), t.exports); +var Qp = (e24, t, r, a) => { + if (t && typeof t == "object" || typeof t == "function") for (let i of Jp(t)) !$p.call(e24, i) && i !== r && Js(e24, i, { get: () => t[i], enumerable: !(a = Lp(t, i)) || a.enumerable }); + return e24; +}; +var ze = (e24, t, r) => (r = e24 != null ? qp(zp(e24)) : {}, Qp(Js(r, "default", { value: e24, enumerable: true }), e24)); +var Hs = re((Ma) => { + d(); + Ma.byteLength = Yp; + Ma.toByteArray = Xp; + Ma.fromByteArray = tg; + var bt = [], $e = [], Kp = typeof Uint8Array < "u" ? Uint8Array : Array, vo = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + for (vr = 0, zs = vo.length; vr < zs; ++vr) bt[vr] = vo[vr], $e[vo.charCodeAt(vr)] = vr; + var vr, zs; + $e[45] = 62; + $e[95] = 63; + function $s(e24) { + var t = e24.length; + if (t % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4"); + var r = e24.indexOf("="); + r === -1 && (r = t); + var a = r === t ? 0 : 4 - r % 4; + return [r, a]; + } + function Yp(e24) { + var t = $s(e24), r = t[0], a = t[1]; + return (r + a) * 3 / 4 - a; + } + function Zp(e24, t, r) { + return (t + r) * 3 / 4 - r; + } + function Xp(e24) { + var t, r = $s(e24), a = r[0], i = r[1], n = new Kp(Zp(e24, a, i)), o = 0, s = i > 0 ? a - 4 : a, u; + for (u = 0; u < s; u += 4) t = $e[e24.charCodeAt(u)] << 18 | $e[e24.charCodeAt(u + 1)] << 12 | $e[e24.charCodeAt(u + 2)] << 6 | $e[e24.charCodeAt(u + 3)], n[o++] = t >> 16 & 255, n[o++] = t >> 8 & 255, n[o++] = t & 255; + return i === 2 && (t = $e[e24.charCodeAt(u)] << 2 | $e[e24.charCodeAt(u + 1)] >> 4, n[o++] = t & 255), i === 1 && (t = $e[e24.charCodeAt(u)] << 10 | $e[e24.charCodeAt(u + 1)] << 4 | $e[e24.charCodeAt(u + 2)] >> 2, n[o++] = t >> 8 & 255, n[o++] = t & 255), n; + } + function jp(e24) { + return bt[e24 >> 18 & 63] + bt[e24 >> 12 & 63] + bt[e24 >> 6 & 63] + bt[e24 & 63]; + } + function eg(e24, t, r) { + for (var a, i = [], n = t; n < r; n += 3) a = (e24[n] << 16 & 16711680) + (e24[n + 1] << 8 & 65280) + (e24[n + 2] & 255), i.push(jp(a)); + return i.join(""); + } + function tg(e24) { + for (var t, r = e24.length, a = r % 3, i = [], n = 16383, o = 0, s = r - a; o < s; o += n) i.push(eg(e24, o, o + n > s ? s : o + n)); + return a === 1 ? (t = e24[r - 1], i.push(bt[t >> 2] + bt[t << 4 & 63] + "==")) : a === 2 && (t = (e24[r - 2] << 8) + e24[r - 1], i.push(bt[t >> 10] + bt[t >> 4 & 63] + bt[t << 2 & 63] + "=")), i.join(""); + } +}); +var Qs = re((bo) => { + d(); + bo.read = function(e24, t, r, a, i) { + var n, o, s = i * 8 - a - 1, u = (1 << s) - 1, c = u >> 1, f2 = -7, y = r ? i - 1 : 0, P = r ? -1 : 1, V = e24[t + y]; + for (y += P, n = V & (1 << -f2) - 1, V >>= -f2, f2 += s; f2 > 0; n = n * 256 + e24[t + y], y += P, f2 -= 8) ; + for (o = n & (1 << -f2) - 1, n >>= -f2, f2 += a; f2 > 0; o = o * 256 + e24[t + y], y += P, f2 -= 8) ; + if (n === 0) n = 1 - c; + else { + if (n === u) return o ? NaN : (V ? -1 : 1) * (1 / 0); + o = o + Math.pow(2, a), n = n - c; + } + return (V ? -1 : 1) * o * Math.pow(2, n - a); + }; + bo.write = function(e24, t, r, a, i, n) { + var o, s, u, c = n * 8 - i - 1, f2 = (1 << c) - 1, y = f2 >> 1, P = i === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0, V = a ? 0 : n - 1, j = a ? 1 : -1, D = t < 0 || t === 0 && 1 / t < 0 ? 1 : 0; + for (t = Math.abs(t), isNaN(t) || t === 1 / 0 ? (s = isNaN(t) ? 1 : 0, o = f2) : (o = Math.floor(Math.log(t) / Math.LN2), t * (u = Math.pow(2, -o)) < 1 && (o--, u *= 2), o + y >= 1 ? t += P / u : t += P * Math.pow(2, 1 - y), t * u >= 2 && (o++, u /= 2), o + y >= f2 ? (s = 0, o = f2) : o + y >= 1 ? (s = (t * u - 1) * Math.pow(2, i), o = o + y) : (s = t * Math.pow(2, y - 1) * Math.pow(2, i), o = 0)); i >= 8; e24[r + V] = s & 255, V += j, s /= 256, i -= 8) ; + for (o = o << i | s, c += i; c > 0; e24[r + V] = o & 255, V += j, o /= 256, c -= 8) ; + e24[r + V - j] |= D * 128; + }; +}); +var lu = re((Kr) => { + d(); + var xo = Hs(), Hr = Qs(), Ks = typeof Symbol == "function" && typeof Symbol.for == "function" ? Symbol.for("nodejs.util.inspect.custom") : null; + Kr.Buffer = h; + Kr.SlowBuffer = sg; + Kr.INSPECT_MAX_BYTES = 50; + var Ea = 2147483647; + Kr.kMaxLength = Ea; + h.TYPED_ARRAY_SUPPORT = rg(); + !h.TYPED_ARRAY_SUPPORT && typeof console < "u" && typeof console.error == "function" && console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."); + function rg() { + try { + let e24 = new Uint8Array(1), t = { foo: function() { + return 42; + } }; + return Object.setPrototypeOf(t, Uint8Array.prototype), Object.setPrototypeOf(e24, t), e24.foo() === 42; + } catch { + return false; + } + } + Object.defineProperty(h.prototype, "parent", { enumerable: true, get: function() { + if (h.isBuffer(this)) return this.buffer; + } }); + Object.defineProperty(h.prototype, "offset", { enumerable: true, get: function() { + if (h.isBuffer(this)) return this.byteOffset; + } }); + function It(e24) { + if (e24 > Ea) throw new RangeError('The value "' + e24 + '" is invalid for option "size"'); + let t = new Uint8Array(e24); + return Object.setPrototypeOf(t, h.prototype), t; + } + function h(e24, t, r) { + if (typeof e24 == "number") { + if (typeof t == "string") throw new TypeError('The "string" argument must be of type string. Received type number'); + return Ao(e24); + } + return js(e24, t, r); + } + h.poolSize = 8192; + function js(e24, t, r) { + if (typeof e24 == "string") return ig(e24, t); + if (ArrayBuffer.isView(e24)) return ag(e24); + if (e24 == null) throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof e24); + if (xt(e24, ArrayBuffer) || e24 && xt(e24.buffer, ArrayBuffer) || typeof SharedArrayBuffer < "u" && (xt(e24, SharedArrayBuffer) || e24 && xt(e24.buffer, SharedArrayBuffer))) return Po(e24, t, r); + if (typeof e24 == "number") throw new TypeError('The "value" argument must not be of type number. Received type number'); + let a = e24.valueOf && e24.valueOf(); + if (a != null && a !== e24) return h.from(a, t, r); + let i = og(e24); + if (i) return i; + if (typeof Symbol < "u" && Symbol.toPrimitive != null && typeof e24[Symbol.toPrimitive] == "function") return h.from(e24[Symbol.toPrimitive]("string"), t, r); + throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof e24); + } + h.from = function(e24, t, r) { + return js(e24, t, r); + }; + Object.setPrototypeOf(h.prototype, Uint8Array.prototype); + Object.setPrototypeOf(h, Uint8Array); + function eu(e24) { + if (typeof e24 != "number") throw new TypeError('"size" argument must be of type number'); + if (e24 < 0) throw new RangeError('The value "' + e24 + '" is invalid for option "size"'); + } + function ng(e24, t, r) { + return eu(e24), e24 <= 0 ? It(e24) : t !== void 0 ? typeof r == "string" ? It(e24).fill(t, r) : It(e24).fill(t) : It(e24); + } + h.alloc = function(e24, t, r) { + return ng(e24, t, r); + }; + function Ao(e24) { + return eu(e24), It(e24 < 0 ? 0 : No(e24) | 0); + } + h.allocUnsafe = function(e24) { + return Ao(e24); + }; + h.allocUnsafeSlow = function(e24) { + return Ao(e24); + }; + function ig(e24, t) { + if ((typeof t != "string" || t === "") && (t = "utf8"), !h.isEncoding(t)) throw new TypeError("Unknown encoding: " + t); + let r = tu(e24, t) | 0, a = It(r), i = a.write(e24, t); + return i !== r && (a = a.slice(0, i)), a; + } + function Co(e24) { + let t = e24.length < 0 ? 0 : No(e24.length) | 0, r = It(t); + for (let a = 0; a < t; a += 1) r[a] = e24[a] & 255; + return r; + } + function ag(e24) { + if (xt(e24, Uint8Array)) { + let t = new Uint8Array(e24); + return Po(t.buffer, t.byteOffset, t.byteLength); + } + return Co(e24); + } + function Po(e24, t, r) { + if (t < 0 || e24.byteLength < t) throw new RangeError('"offset" is outside of buffer bounds'); + if (e24.byteLength < t + (r || 0)) throw new RangeError('"length" is outside of buffer bounds'); + let a; + return t === void 0 && r === void 0 ? a = new Uint8Array(e24) : r === void 0 ? a = new Uint8Array(e24, t) : a = new Uint8Array(e24, t, r), Object.setPrototypeOf(a, h.prototype), a; + } + function og(e24) { + if (h.isBuffer(e24)) { + let t = No(e24.length) | 0, r = It(t); + return r.length === 0 || e24.copy(r, 0, 0, t), r; + } + if (e24.length !== void 0) return typeof e24.length != "number" || Oo(e24.length) ? It(0) : Co(e24); + if (e24.type === "Buffer" && Array.isArray(e24.data)) return Co(e24.data); + } + function No(e24) { + if (e24 >= Ea) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + Ea.toString(16) + " bytes"); + return e24 | 0; + } + function sg(e24) { + return +e24 != e24 && (e24 = 0), h.alloc(+e24); + } + h.isBuffer = function(t) { + return t != null && t._isBuffer === true && t !== h.prototype; + }; + h.compare = function(t, r) { + if (xt(t, Uint8Array) && (t = h.from(t, t.offset, t.byteLength)), xt(r, Uint8Array) && (r = h.from(r, r.offset, r.byteLength)), !h.isBuffer(t) || !h.isBuffer(r)) throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'); + if (t === r) return 0; + let a = t.length, i = r.length; + for (let n = 0, o = Math.min(a, i); n < o; ++n) if (t[n] !== r[n]) { + a = t[n], i = r[n]; + break; + } + return a < i ? -1 : i < a ? 1 : 0; + }; + h.isEncoding = function(t) { + switch (String(t).toLowerCase()) { + case "hex": + case "utf8": + case "utf-8": + case "ascii": + case "latin1": + case "binary": + case "base64": + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return true; + default: + return false; + } + }; + h.concat = function(t, r) { + if (!Array.isArray(t)) throw new TypeError('"list" argument must be an Array of Buffers'); + if (t.length === 0) return h.alloc(0); + let a; + if (r === void 0) for (r = 0, a = 0; a < t.length; ++a) r += t[a].length; + let i = h.allocUnsafe(r), n = 0; + for (a = 0; a < t.length; ++a) { + let o = t[a]; + if (xt(o, Uint8Array)) n + o.length > i.length ? (h.isBuffer(o) || (o = h.from(o)), o.copy(i, n)) : Uint8Array.prototype.set.call(i, o, n); + else if (h.isBuffer(o)) o.copy(i, n); + else throw new TypeError('"list" argument must be an Array of Buffers'); + n += o.length; + } + return i; + }; + function tu(e24, t) { + if (h.isBuffer(e24)) return e24.length; + if (ArrayBuffer.isView(e24) || xt(e24, ArrayBuffer)) return e24.byteLength; + if (typeof e24 != "string") throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof e24); + let r = e24.length, a = arguments.length > 2 && arguments[2] === true; + if (!a && r === 0) return 0; + let i = false; + for (; ; ) switch (t) { + case "ascii": + case "latin1": + case "binary": + return r; + case "utf8": + case "utf-8": + return Ro(e24).length; + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return r * 2; + case "hex": + return r >>> 1; + case "base64": + return cu(e24).length; + default: + if (i) return a ? -1 : Ro(e24).length; + t = ("" + t).toLowerCase(), i = true; + } + } + h.byteLength = tu; + function ug(e24, t, r) { + let a = false; + if ((t === void 0 || t < 0) && (t = 0), t > this.length || ((r === void 0 || r > this.length) && (r = this.length), r <= 0) || (r >>>= 0, t >>>= 0, r <= t)) return ""; + for (e24 || (e24 = "utf8"); ; ) switch (e24) { + case "hex": + return Tg(this, t, r); + case "utf8": + case "utf-8": + return nu(this, t, r); + case "ascii": + return hg(this, t, r); + case "latin1": + case "binary": + return yg(this, t, r); + case "base64": + return gg(this, t, r); + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return vg(this, t, r); + default: + if (a) throw new TypeError("Unknown encoding: " + e24); + e24 = (e24 + "").toLowerCase(), a = true; + } + } + h.prototype._isBuffer = true; + function br(e24, t, r) { + let a = e24[t]; + e24[t] = e24[r], e24[r] = a; + } + h.prototype.swap16 = function() { + let t = this.length; + if (t % 2 !== 0) throw new RangeError("Buffer size must be a multiple of 16-bits"); + for (let r = 0; r < t; r += 2) br(this, r, r + 1); + return this; + }; + h.prototype.swap32 = function() { + let t = this.length; + if (t % 4 !== 0) throw new RangeError("Buffer size must be a multiple of 32-bits"); + for (let r = 0; r < t; r += 4) br(this, r, r + 3), br(this, r + 1, r + 2); + return this; + }; + h.prototype.swap64 = function() { + let t = this.length; + if (t % 8 !== 0) throw new RangeError("Buffer size must be a multiple of 64-bits"); + for (let r = 0; r < t; r += 8) br(this, r, r + 7), br(this, r + 1, r + 6), br(this, r + 2, r + 5), br(this, r + 3, r + 4); + return this; + }; + h.prototype.toString = function() { + let t = this.length; + return t === 0 ? "" : arguments.length === 0 ? nu(this, 0, t) : ug.apply(this, arguments); + }; + h.prototype.toLocaleString = h.prototype.toString; + h.prototype.equals = function(t) { + if (!h.isBuffer(t)) throw new TypeError("Argument must be a Buffer"); + return this === t ? true : h.compare(this, t) === 0; + }; + h.prototype.inspect = function() { + let t = "", r = Kr.INSPECT_MAX_BYTES; + return t = this.toString("hex", 0, r).replace(/(.{2})/g, "$1 ").trim(), this.length > r && (t += " ... "), ""; + }; + Ks && (h.prototype[Ks] = h.prototype.inspect); + h.prototype.compare = function(t, r, a, i, n) { + if (xt(t, Uint8Array) && (t = h.from(t, t.offset, t.byteLength)), !h.isBuffer(t)) throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof t); + if (r === void 0 && (r = 0), a === void 0 && (a = t ? t.length : 0), i === void 0 && (i = 0), n === void 0 && (n = this.length), r < 0 || a > t.length || i < 0 || n > this.length) throw new RangeError("out of range index"); + if (i >= n && r >= a) return 0; + if (i >= n) return -1; + if (r >= a) return 1; + if (r >>>= 0, a >>>= 0, i >>>= 0, n >>>= 0, this === t) return 0; + let o = n - i, s = a - r, u = Math.min(o, s), c = this.slice(i, n), f2 = t.slice(r, a); + for (let y = 0; y < u; ++y) if (c[y] !== f2[y]) { + o = c[y], s = f2[y]; + break; + } + return o < s ? -1 : s < o ? 1 : 0; + }; + function ru(e24, t, r, a, i) { + if (e24.length === 0) return -1; + if (typeof r == "string" ? (a = r, r = 0) : r > 2147483647 ? r = 2147483647 : r < -2147483648 && (r = -2147483648), r = +r, Oo(r) && (r = i ? 0 : e24.length - 1), r < 0 && (r = e24.length + r), r >= e24.length) { + if (i) return -1; + r = e24.length - 1; + } else if (r < 0) if (i) r = 0; + else return -1; + if (typeof t == "string" && (t = h.from(t, a)), h.isBuffer(t)) return t.length === 0 ? -1 : Ys(e24, t, r, a, i); + if (typeof t == "number") return t = t & 255, typeof Uint8Array.prototype.indexOf == "function" ? i ? Uint8Array.prototype.indexOf.call(e24, t, r) : Uint8Array.prototype.lastIndexOf.call(e24, t, r) : Ys(e24, [t], r, a, i); + throw new TypeError("val must be string, number or Buffer"); + } + function Ys(e24, t, r, a, i) { + let n = 1, o = e24.length, s = t.length; + if (a !== void 0 && (a = String(a).toLowerCase(), a === "ucs2" || a === "ucs-2" || a === "utf16le" || a === "utf-16le")) { + if (e24.length < 2 || t.length < 2) return -1; + n = 2, o /= 2, s /= 2, r /= 2; + } + function u(f2, y) { + return n === 1 ? f2[y] : f2.readUInt16BE(y * n); + } + let c; + if (i) { + let f2 = -1; + for (c = r; c < o; c++) if (u(e24, c) === u(t, f2 === -1 ? 0 : c - f2)) { + if (f2 === -1 && (f2 = c), c - f2 + 1 === s) return f2 * n; + } else f2 !== -1 && (c -= c - f2), f2 = -1; + } else for (r + s > o && (r = o - s), c = r; c >= 0; c--) { + let f2 = true; + for (let y = 0; y < s; y++) if (u(e24, c + y) !== u(t, y)) { + f2 = false; + break; + } + if (f2) return c; + } + return -1; + } + h.prototype.includes = function(t, r, a) { + return this.indexOf(t, r, a) !== -1; + }; + h.prototype.indexOf = function(t, r, a) { + return ru(this, t, r, a, true); + }; + h.prototype.lastIndexOf = function(t, r, a) { + return ru(this, t, r, a, false); + }; + function dg(e24, t, r, a) { + r = Number(r) || 0; + let i = e24.length - r; + a ? (a = Number(a), a > i && (a = i)) : a = i; + let n = t.length; + a > n / 2 && (a = n / 2); + let o; + for (o = 0; o < a; ++o) { + let s = parseInt(t.substr(o * 2, 2), 16); + if (Oo(s)) return o; + e24[r + o] = s; + } + return o; + } + function cg(e24, t, r, a) { + return Ua(Ro(t, e24.length - r), e24, r, a); + } + function lg(e24, t, r, a) { + return Ua(Pg(t), e24, r, a); + } + function fg(e24, t, r, a) { + return Ua(cu(t), e24, r, a); + } + function pg(e24, t, r, a) { + return Ua(Rg(t, e24.length - r), e24, r, a); + } + h.prototype.write = function(t, r, a, i) { + if (r === void 0) i = "utf8", a = this.length, r = 0; + else if (a === void 0 && typeof r == "string") i = r, a = this.length, r = 0; + else if (isFinite(r)) r = r >>> 0, isFinite(a) ? (a = a >>> 0, i === void 0 && (i = "utf8")) : (i = a, a = void 0); + else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); + let n = this.length - r; + if ((a === void 0 || a > n) && (a = n), t.length > 0 && (a < 0 || r < 0) || r > this.length) throw new RangeError("Attempt to write outside buffer bounds"); + i || (i = "utf8"); + let o = false; + for (; ; ) switch (i) { + case "hex": + return dg(this, t, r, a); + case "utf8": + case "utf-8": + return cg(this, t, r, a); + case "ascii": + case "latin1": + case "binary": + return lg(this, t, r, a); + case "base64": + return fg(this, t, r, a); + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return pg(this, t, r, a); + default: + if (o) throw new TypeError("Unknown encoding: " + i); + i = ("" + i).toLowerCase(), o = true; + } + }; + h.prototype.toJSON = function() { + return { type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0) }; + }; + function gg(e24, t, r) { + return t === 0 && r === e24.length ? xo.fromByteArray(e24) : xo.fromByteArray(e24.slice(t, r)); + } + function nu(e24, t, r) { + r = Math.min(e24.length, r); + let a = [], i = t; + for (; i < r; ) { + let n = e24[i], o = null, s = n > 239 ? 4 : n > 223 ? 3 : n > 191 ? 2 : 1; + if (i + s <= r) { + let u, c, f2, y; + switch (s) { + case 1: + n < 128 && (o = n); + break; + case 2: + u = e24[i + 1], (u & 192) === 128 && (y = (n & 31) << 6 | u & 63, y > 127 && (o = y)); + break; + case 3: + u = e24[i + 1], c = e24[i + 2], (u & 192) === 128 && (c & 192) === 128 && (y = (n & 15) << 12 | (u & 63) << 6 | c & 63, y > 2047 && (y < 55296 || y > 57343) && (o = y)); + break; + case 4: + u = e24[i + 1], c = e24[i + 2], f2 = e24[i + 3], (u & 192) === 128 && (c & 192) === 128 && (f2 & 192) === 128 && (y = (n & 15) << 18 | (u & 63) << 12 | (c & 63) << 6 | f2 & 63, y > 65535 && y < 1114112 && (o = y)); + } + } + o === null ? (o = 65533, s = 1) : o > 65535 && (o -= 65536, a.push(o >>> 10 & 1023 | 55296), o = 56320 | o & 1023), a.push(o), i += s; + } + return mg(a); + } + var Zs = 4096; + function mg(e24) { + let t = e24.length; + if (t <= Zs) return String.fromCharCode.apply(String, e24); + let r = "", a = 0; + for (; a < t; ) r += String.fromCharCode.apply(String, e24.slice(a, a += Zs)); + return r; + } + function hg(e24, t, r) { + let a = ""; + r = Math.min(e24.length, r); + for (let i = t; i < r; ++i) a += String.fromCharCode(e24[i] & 127); + return a; + } + function yg(e24, t, r) { + let a = ""; + r = Math.min(e24.length, r); + for (let i = t; i < r; ++i) a += String.fromCharCode(e24[i]); + return a; + } + function Tg(e24, t, r) { + let a = e24.length; + (!t || t < 0) && (t = 0), (!r || r < 0 || r > a) && (r = a); + let i = ""; + for (let n = t; n < r; ++n) i += Ag[e24[n]]; + return i; + } + function vg(e24, t, r) { + let a = e24.slice(t, r), i = ""; + for (let n = 0; n < a.length - 1; n += 2) i += String.fromCharCode(a[n] + a[n + 1] * 256); + return i; + } + h.prototype.slice = function(t, r) { + let a = this.length; + t = ~~t, r = r === void 0 ? a : ~~r, t < 0 ? (t += a, t < 0 && (t = 0)) : t > a && (t = a), r < 0 ? (r += a, r < 0 && (r = 0)) : r > a && (r = a), r < t && (r = t); + let i = this.subarray(t, r); + return Object.setPrototypeOf(i, h.prototype), i; + }; + function de(e24, t, r) { + if (e24 % 1 !== 0 || e24 < 0) throw new RangeError("offset is not uint"); + if (e24 + t > r) throw new RangeError("Trying to access beyond buffer length"); + } + h.prototype.readUintLE = h.prototype.readUIntLE = function(t, r, a) { + t = t >>> 0, r = r >>> 0, a || de(t, r, this.length); + let i = this[t], n = 1, o = 0; + for (; ++o < r && (n *= 256); ) i += this[t + o] * n; + return i; + }; + h.prototype.readUintBE = h.prototype.readUIntBE = function(t, r, a) { + t = t >>> 0, r = r >>> 0, a || de(t, r, this.length); + let i = this[t + --r], n = 1; + for (; r > 0 && (n *= 256); ) i += this[t + --r] * n; + return i; + }; + h.prototype.readUint8 = h.prototype.readUInt8 = function(t, r) { + return t = t >>> 0, r || de(t, 1, this.length), this[t]; + }; + h.prototype.readUint16LE = h.prototype.readUInt16LE = function(t, r) { + return t = t >>> 0, r || de(t, 2, this.length), this[t] | this[t + 1] << 8; + }; + h.prototype.readUint16BE = h.prototype.readUInt16BE = function(t, r) { + return t = t >>> 0, r || de(t, 2, this.length), this[t] << 8 | this[t + 1]; + }; + h.prototype.readUint32LE = h.prototype.readUInt32LE = function(t, r) { + return t = t >>> 0, r || de(t, 4, this.length), (this[t] | this[t + 1] << 8 | this[t + 2] << 16) + this[t + 3] * 16777216; + }; + h.prototype.readUint32BE = h.prototype.readUInt32BE = function(t, r) { + return t = t >>> 0, r || de(t, 4, this.length), this[t] * 16777216 + (this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3]); + }; + h.prototype.readBigUInt64LE = Jt(function(t) { + t = t >>> 0, Qr(t, "offset"); + let r = this[t], a = this[t + 7]; + (r === void 0 || a === void 0) && oa(t, this.length - 8); + let i = r + this[++t] * 2 ** 8 + this[++t] * 2 ** 16 + this[++t] * 2 ** 24, n = this[++t] + this[++t] * 2 ** 8 + this[++t] * 2 ** 16 + a * 2 ** 24; + return BigInt(i) + (BigInt(n) << BigInt(32)); + }); + h.prototype.readBigUInt64BE = Jt(function(t) { + t = t >>> 0, Qr(t, "offset"); + let r = this[t], a = this[t + 7]; + (r === void 0 || a === void 0) && oa(t, this.length - 8); + let i = r * 2 ** 24 + this[++t] * 2 ** 16 + this[++t] * 2 ** 8 + this[++t], n = this[++t] * 2 ** 24 + this[++t] * 2 ** 16 + this[++t] * 2 ** 8 + a; + return (BigInt(i) << BigInt(32)) + BigInt(n); + }); + h.prototype.readIntLE = function(t, r, a) { + t = t >>> 0, r = r >>> 0, a || de(t, r, this.length); + let i = this[t], n = 1, o = 0; + for (; ++o < r && (n *= 256); ) i += this[t + o] * n; + return n *= 128, i >= n && (i -= Math.pow(2, 8 * r)), i; + }; + h.prototype.readIntBE = function(t, r, a) { + t = t >>> 0, r = r >>> 0, a || de(t, r, this.length); + let i = r, n = 1, o = this[t + --i]; + for (; i > 0 && (n *= 256); ) o += this[t + --i] * n; + return n *= 128, o >= n && (o -= Math.pow(2, 8 * r)), o; + }; + h.prototype.readInt8 = function(t, r) { + return t = t >>> 0, r || de(t, 1, this.length), this[t] & 128 ? (255 - this[t] + 1) * -1 : this[t]; + }; + h.prototype.readInt16LE = function(t, r) { + t = t >>> 0, r || de(t, 2, this.length); + let a = this[t] | this[t + 1] << 8; + return a & 32768 ? a | 4294901760 : a; + }; + h.prototype.readInt16BE = function(t, r) { + t = t >>> 0, r || de(t, 2, this.length); + let a = this[t + 1] | this[t] << 8; + return a & 32768 ? a | 4294901760 : a; + }; + h.prototype.readInt32LE = function(t, r) { + return t = t >>> 0, r || de(t, 4, this.length), this[t] | this[t + 1] << 8 | this[t + 2] << 16 | this[t + 3] << 24; + }; + h.prototype.readInt32BE = function(t, r) { + return t = t >>> 0, r || de(t, 4, this.length), this[t] << 24 | this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3]; + }; + h.prototype.readBigInt64LE = Jt(function(t) { + t = t >>> 0, Qr(t, "offset"); + let r = this[t], a = this[t + 7]; + (r === void 0 || a === void 0) && oa(t, this.length - 8); + let i = this[t + 4] + this[t + 5] * 2 ** 8 + this[t + 6] * 2 ** 16 + (a << 24); + return (BigInt(i) << BigInt(32)) + BigInt(r + this[++t] * 2 ** 8 + this[++t] * 2 ** 16 + this[++t] * 2 ** 24); + }); + h.prototype.readBigInt64BE = Jt(function(t) { + t = t >>> 0, Qr(t, "offset"); + let r = this[t], a = this[t + 7]; + (r === void 0 || a === void 0) && oa(t, this.length - 8); + let i = (r << 24) + this[++t] * 2 ** 16 + this[++t] * 2 ** 8 + this[++t]; + return (BigInt(i) << BigInt(32)) + BigInt(this[++t] * 2 ** 24 + this[++t] * 2 ** 16 + this[++t] * 2 ** 8 + a); + }); + h.prototype.readFloatLE = function(t, r) { + return t = t >>> 0, r || de(t, 4, this.length), Hr.read(this, t, true, 23, 4); + }; + h.prototype.readFloatBE = function(t, r) { + return t = t >>> 0, r || de(t, 4, this.length), Hr.read(this, t, false, 23, 4); + }; + h.prototype.readDoubleLE = function(t, r) { + return t = t >>> 0, r || de(t, 8, this.length), Hr.read(this, t, true, 52, 8); + }; + h.prototype.readDoubleBE = function(t, r) { + return t = t >>> 0, r || de(t, 8, this.length), Hr.read(this, t, false, 52, 8); + }; + function Ie(e24, t, r, a, i, n) { + if (!h.isBuffer(e24)) throw new TypeError('"buffer" argument must be a Buffer instance'); + if (t > i || t < n) throw new RangeError('"value" argument is out of bounds'); + if (r + a > e24.length) throw new RangeError("Index out of range"); + } + h.prototype.writeUintLE = h.prototype.writeUIntLE = function(t, r, a, i) { + if (t = +t, r = r >>> 0, a = a >>> 0, !i) { + let s = Math.pow(2, 8 * a) - 1; + Ie(this, t, r, a, s, 0); + } + let n = 1, o = 0; + for (this[r] = t & 255; ++o < a && (n *= 256); ) this[r + o] = t / n & 255; + return r + a; + }; + h.prototype.writeUintBE = h.prototype.writeUIntBE = function(t, r, a, i) { + if (t = +t, r = r >>> 0, a = a >>> 0, !i) { + let s = Math.pow(2, 8 * a) - 1; + Ie(this, t, r, a, s, 0); + } + let n = a - 1, o = 1; + for (this[r + n] = t & 255; --n >= 0 && (o *= 256); ) this[r + n] = t / o & 255; + return r + a; + }; + h.prototype.writeUint8 = h.prototype.writeUInt8 = function(t, r, a) { + return t = +t, r = r >>> 0, a || Ie(this, t, r, 1, 255, 0), this[r] = t & 255, r + 1; + }; + h.prototype.writeUint16LE = h.prototype.writeUInt16LE = function(t, r, a) { + return t = +t, r = r >>> 0, a || Ie(this, t, r, 2, 65535, 0), this[r] = t & 255, this[r + 1] = t >>> 8, r + 2; + }; + h.prototype.writeUint16BE = h.prototype.writeUInt16BE = function(t, r, a) { + return t = +t, r = r >>> 0, a || Ie(this, t, r, 2, 65535, 0), this[r] = t >>> 8, this[r + 1] = t & 255, r + 2; + }; + h.prototype.writeUint32LE = h.prototype.writeUInt32LE = function(t, r, a) { + return t = +t, r = r >>> 0, a || Ie(this, t, r, 4, 4294967295, 0), this[r + 3] = t >>> 24, this[r + 2] = t >>> 16, this[r + 1] = t >>> 8, this[r] = t & 255, r + 4; + }; + h.prototype.writeUint32BE = h.prototype.writeUInt32BE = function(t, r, a) { + return t = +t, r = r >>> 0, a || Ie(this, t, r, 4, 4294967295, 0), this[r] = t >>> 24, this[r + 1] = t >>> 16, this[r + 2] = t >>> 8, this[r + 3] = t & 255, r + 4; + }; + function iu(e24, t, r, a, i) { + du(t, a, i, e24, r, 7); + let n = Number(t & BigInt(4294967295)); + e24[r++] = n, n = n >> 8, e24[r++] = n, n = n >> 8, e24[r++] = n, n = n >> 8, e24[r++] = n; + let o = Number(t >> BigInt(32) & BigInt(4294967295)); + return e24[r++] = o, o = o >> 8, e24[r++] = o, o = o >> 8, e24[r++] = o, o = o >> 8, e24[r++] = o, r; + } + function au(e24, t, r, a, i) { + du(t, a, i, e24, r, 7); + let n = Number(t & BigInt(4294967295)); + e24[r + 7] = n, n = n >> 8, e24[r + 6] = n, n = n >> 8, e24[r + 5] = n, n = n >> 8, e24[r + 4] = n; + let o = Number(t >> BigInt(32) & BigInt(4294967295)); + return e24[r + 3] = o, o = o >> 8, e24[r + 2] = o, o = o >> 8, e24[r + 1] = o, o = o >> 8, e24[r] = o, r + 8; + } + h.prototype.writeBigUInt64LE = Jt(function(t, r = 0) { + return iu(this, t, r, BigInt(0), BigInt("0xffffffffffffffff")); + }); + h.prototype.writeBigUInt64BE = Jt(function(t, r = 0) { + return au(this, t, r, BigInt(0), BigInt("0xffffffffffffffff")); + }); + h.prototype.writeIntLE = function(t, r, a, i) { + if (t = +t, r = r >>> 0, !i) { + let u = Math.pow(2, 8 * a - 1); + Ie(this, t, r, a, u - 1, -u); + } + let n = 0, o = 1, s = 0; + for (this[r] = t & 255; ++n < a && (o *= 256); ) t < 0 && s === 0 && this[r + n - 1] !== 0 && (s = 1), this[r + n] = (t / o >> 0) - s & 255; + return r + a; + }; + h.prototype.writeIntBE = function(t, r, a, i) { + if (t = +t, r = r >>> 0, !i) { + let u = Math.pow(2, 8 * a - 1); + Ie(this, t, r, a, u - 1, -u); + } + let n = a - 1, o = 1, s = 0; + for (this[r + n] = t & 255; --n >= 0 && (o *= 256); ) t < 0 && s === 0 && this[r + n + 1] !== 0 && (s = 1), this[r + n] = (t / o >> 0) - s & 255; + return r + a; + }; + h.prototype.writeInt8 = function(t, r, a) { + return t = +t, r = r >>> 0, a || Ie(this, t, r, 1, 127, -128), t < 0 && (t = 255 + t + 1), this[r] = t & 255, r + 1; + }; + h.prototype.writeInt16LE = function(t, r, a) { + return t = +t, r = r >>> 0, a || Ie(this, t, r, 2, 32767, -32768), this[r] = t & 255, this[r + 1] = t >>> 8, r + 2; + }; + h.prototype.writeInt16BE = function(t, r, a) { + return t = +t, r = r >>> 0, a || Ie(this, t, r, 2, 32767, -32768), this[r] = t >>> 8, this[r + 1] = t & 255, r + 2; + }; + h.prototype.writeInt32LE = function(t, r, a) { + return t = +t, r = r >>> 0, a || Ie(this, t, r, 4, 2147483647, -2147483648), this[r] = t & 255, this[r + 1] = t >>> 8, this[r + 2] = t >>> 16, this[r + 3] = t >>> 24, r + 4; + }; + h.prototype.writeInt32BE = function(t, r, a) { + return t = +t, r = r >>> 0, a || Ie(this, t, r, 4, 2147483647, -2147483648), t < 0 && (t = 4294967295 + t + 1), this[r] = t >>> 24, this[r + 1] = t >>> 16, this[r + 2] = t >>> 8, this[r + 3] = t & 255, r + 4; + }; + h.prototype.writeBigInt64LE = Jt(function(t, r = 0) { + return iu(this, t, r, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); + }); + h.prototype.writeBigInt64BE = Jt(function(t, r = 0) { + return au(this, t, r, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); + }); + function ou(e24, t, r, a, i, n) { + if (r + a > e24.length) throw new RangeError("Index out of range"); + if (r < 0) throw new RangeError("Index out of range"); + } + function su(e24, t, r, a, i) { + return t = +t, r = r >>> 0, i || ou(e24, t, r, 4), Hr.write(e24, t, r, a, 23, 4), r + 4; + } + h.prototype.writeFloatLE = function(t, r, a) { + return su(this, t, r, true, a); + }; + h.prototype.writeFloatBE = function(t, r, a) { + return su(this, t, r, false, a); + }; + function uu(e24, t, r, a, i) { + return t = +t, r = r >>> 0, i || ou(e24, t, r, 8), Hr.write(e24, t, r, a, 52, 8), r + 8; + } + h.prototype.writeDoubleLE = function(t, r, a) { + return uu(this, t, r, true, a); + }; + h.prototype.writeDoubleBE = function(t, r, a) { + return uu(this, t, r, false, a); + }; + h.prototype.copy = function(t, r, a, i) { + if (!h.isBuffer(t)) throw new TypeError("argument should be a Buffer"); + if (a || (a = 0), !i && i !== 0 && (i = this.length), r >= t.length && (r = t.length), r || (r = 0), i > 0 && i < a && (i = a), i === a || t.length === 0 || this.length === 0) return 0; + if (r < 0) throw new RangeError("targetStart out of bounds"); + if (a < 0 || a >= this.length) throw new RangeError("Index out of range"); + if (i < 0) throw new RangeError("sourceEnd out of bounds"); + i > this.length && (i = this.length), t.length - r < i - a && (i = t.length - r + a); + let n = i - a; + return this === t && typeof Uint8Array.prototype.copyWithin == "function" ? this.copyWithin(r, a, i) : Uint8Array.prototype.set.call(t, this.subarray(a, i), r), n; + }; + h.prototype.fill = function(t, r, a, i) { + if (typeof t == "string") { + if (typeof r == "string" ? (i = r, r = 0, a = this.length) : typeof a == "string" && (i = a, a = this.length), i !== void 0 && typeof i != "string") throw new TypeError("encoding must be a string"); + if (typeof i == "string" && !h.isEncoding(i)) throw new TypeError("Unknown encoding: " + i); + if (t.length === 1) { + let o = t.charCodeAt(0); + (i === "utf8" && o < 128 || i === "latin1") && (t = o); + } + } else typeof t == "number" ? t = t & 255 : typeof t == "boolean" && (t = Number(t)); + if (r < 0 || this.length < r || this.length < a) throw new RangeError("Out of range index"); + if (a <= r) return this; + r = r >>> 0, a = a === void 0 ? this.length : a >>> 0, t || (t = 0); + let n; + if (typeof t == "number") for (n = r; n < a; ++n) this[n] = t; + else { + let o = h.isBuffer(t) ? t : h.from(t, i), s = o.length; + if (s === 0) throw new TypeError('The value "' + t + '" is invalid for argument "value"'); + for (n = 0; n < a - r; ++n) this[n + r] = o[n % s]; + } + return this; + }; + var $r = {}; + function Vo(e24, t, r) { + $r[e24] = class extends r { + constructor() { + super(), Object.defineProperty(this, "message", { value: t.apply(this, arguments), writable: true, configurable: true }), this.name = `${this.name} [${e24}]`, this.stack, delete this.name; + } + get code() { + return e24; + } + set code(i) { + Object.defineProperty(this, "code", { configurable: true, enumerable: true, value: i, writable: true }); + } + toString() { + return `${this.name} [${e24}]: ${this.message}`; + } + }; + } + Vo("ERR_BUFFER_OUT_OF_BOUNDS", function(e24) { + return e24 ? `${e24} is outside of buffer bounds` : "Attempt to access memory outside buffer bounds"; + }, RangeError); + Vo("ERR_INVALID_ARG_TYPE", function(e24, t) { + return `The "${e24}" argument must be of type number. Received type ${typeof t}`; + }, TypeError); + Vo("ERR_OUT_OF_RANGE", function(e24, t, r) { + let a = `The value of "${e24}" is out of range.`, i = r; + return Number.isInteger(r) && Math.abs(r) > 2 ** 32 ? i = Xs(String(r)) : typeof r == "bigint" && (i = String(r), (r > BigInt(2) ** BigInt(32) || r < -(BigInt(2) ** BigInt(32))) && (i = Xs(i)), i += "n"), a += ` It must be ${t}. Received ${i}`, a; + }, RangeError); + function Xs(e24) { + let t = "", r = e24.length, a = e24[0] === "-" ? 1 : 0; + for (; r >= a + 4; r -= 3) t = `_${e24.slice(r - 3, r)}${t}`; + return `${e24.slice(0, r)}${t}`; + } + function bg(e24, t, r) { + Qr(t, "offset"), (e24[t] === void 0 || e24[t + r] === void 0) && oa(t, e24.length - (r + 1)); + } + function du(e24, t, r, a, i, n) { + if (e24 > r || e24 < t) { + let o = typeof t == "bigint" ? "n" : "", s; + throw t === 0 || t === BigInt(0) ? s = `>= 0${o} and < 2${o} ** ${(n + 1) * 8}${o}` : s = `>= -(2${o} ** ${(n + 1) * 8 - 1}${o}) and < 2 ** ${(n + 1) * 8 - 1}${o}`, new $r.ERR_OUT_OF_RANGE("value", s, e24); + } + bg(a, i, n); + } + function Qr(e24, t) { + if (typeof e24 != "number") throw new $r.ERR_INVALID_ARG_TYPE(t, "number", e24); + } + function oa(e24, t, r) { + throw Math.floor(e24) !== e24 ? (Qr(e24, r), new $r.ERR_OUT_OF_RANGE("offset", "an integer", e24)) : t < 0 ? new $r.ERR_BUFFER_OUT_OF_BOUNDS() : new $r.ERR_OUT_OF_RANGE("offset", `>= ${0} and <= ${t}`, e24); + } + var xg = /[^+/0-9A-Za-z-_]/g; + function Cg(e24) { + if (e24 = e24.split("=")[0], e24 = e24.trim().replace(xg, ""), e24.length < 2) return ""; + for (; e24.length % 4 !== 0; ) e24 = e24 + "="; + return e24; + } + function Ro(e24, t) { + t = t || 1 / 0; + let r, a = e24.length, i = null, n = []; + for (let o = 0; o < a; ++o) { + if (r = e24.charCodeAt(o), r > 55295 && r < 57344) { + if (!i) { + if (r > 56319) { + (t -= 3) > -1 && n.push(239, 191, 189); + continue; + } else if (o + 1 === a) { + (t -= 3) > -1 && n.push(239, 191, 189); + continue; + } + i = r; + continue; + } + if (r < 56320) { + (t -= 3) > -1 && n.push(239, 191, 189), i = r; + continue; + } + r = (i - 55296 << 10 | r - 56320) + 65536; + } else i && (t -= 3) > -1 && n.push(239, 191, 189); + if (i = null, r < 128) { + if ((t -= 1) < 0) break; + n.push(r); + } else if (r < 2048) { + if ((t -= 2) < 0) break; + n.push(r >> 6 | 192, r & 63 | 128); + } else if (r < 65536) { + if ((t -= 3) < 0) break; + n.push(r >> 12 | 224, r >> 6 & 63 | 128, r & 63 | 128); + } else if (r < 1114112) { + if ((t -= 4) < 0) break; + n.push(r >> 18 | 240, r >> 12 & 63 | 128, r >> 6 & 63 | 128, r & 63 | 128); + } else throw new Error("Invalid code point"); + } + return n; + } + function Pg(e24) { + let t = []; + for (let r = 0; r < e24.length; ++r) t.push(e24.charCodeAt(r) & 255); + return t; + } + function Rg(e24, t) { + let r, a, i, n = []; + for (let o = 0; o < e24.length && !((t -= 2) < 0); ++o) r = e24.charCodeAt(o), a = r >> 8, i = r % 256, n.push(i), n.push(a); + return n; + } + function cu(e24) { + return xo.toByteArray(Cg(e24)); + } + function Ua(e24, t, r, a) { + let i; + for (i = 0; i < a && !(i + r >= t.length || i >= e24.length); ++i) t[i + r] = e24[i]; + return i; + } + function xt(e24, t) { + return e24 instanceof t || e24 != null && e24.constructor != null && e24.constructor.name != null && e24.constructor.name === t.name; + } + function Oo(e24) { + return e24 !== e24; + } + var Ag = function() { + let e24 = "0123456789abcdef", t = new Array(256); + for (let r = 0; r < 16; ++r) { + let a = r * 16; + for (let i = 0; i < 16; ++i) t[a + i] = e24[r] + e24[i]; + } + return t; + }(); + function Jt(e24) { + return typeof BigInt > "u" ? Ng : e24; + } + function Ng() { + throw new Error("BigInt not supported"); + } +}); +var p; +var d = Hp(() => { + p = ze(lu()); +}); +var Au = re((Nv, Ru) => { + d(); + Ru.exports = Ug; + function Ug(e24, t) { + for (var r = new Array(arguments.length - 1), a = 0, i = 2, n = true; i < arguments.length; ) r[a++] = arguments[i++]; + return new Promise(function(s, u) { + r[a] = function(f2) { + if (n) if (n = false, f2) u(f2); + else { + for (var y = new Array(arguments.length - 1), P = 0; P < y.length; ) y[P++] = arguments[P]; + s.apply(null, y); + } + }; + try { + e24.apply(t || null, r); + } catch (c) { + n && (n = false, u(c)); + } + }); + } +}); +var Su = re((Ou) => { + d(); + var eo = Ou; + eo.length = function(t) { + var r = t.length; + if (!r) return 0; + for (var a = 0; --r % 4 > 1 && t.charAt(r) === "="; ) ++a; + return Math.ceil(t.length * 3) / 4 - a; + }; + var rn = new Array(64), Vu = new Array(123); + for (ut = 0; ut < 64; ) Vu[rn[ut] = ut < 26 ? ut + 65 : ut < 52 ? ut + 71 : ut < 62 ? ut - 4 : ut - 59 | 43] = ut++; + var ut; + eo.encode = function(t, r, a) { + for (var i = null, n = [], o = 0, s = 0, u; r < a; ) { + var c = t[r++]; + switch (s) { + case 0: + n[o++] = rn[c >> 2], u = (c & 3) << 4, s = 1; + break; + case 1: + n[o++] = rn[u | c >> 4], u = (c & 15) << 2, s = 2; + break; + case 2: + n[o++] = rn[u | c >> 6], n[o++] = rn[c & 63], s = 0; + break; + } + o > 8191 && ((i || (i = [])).push(String.fromCharCode.apply(String, n)), o = 0); + } + return s && (n[o++] = rn[u], n[o++] = 61, s === 1 && (n[o++] = 61)), i ? (o && i.push(String.fromCharCode.apply(String, n.slice(0, o))), i.join("")) : String.fromCharCode.apply(String, n.slice(0, o)); + }; + var Nu = "invalid encoding"; + eo.decode = function(t, r, a) { + for (var i = a, n = 0, o, s = 0; s < t.length; ) { + var u = t.charCodeAt(s++); + if (u === 61 && n > 1) break; + if ((u = Vu[u]) === void 0) throw Error(Nu); + switch (n) { + case 0: + o = u, n = 1; + break; + case 1: + r[a++] = o << 2 | (u & 48) >> 4, o = u, n = 2; + break; + case 2: + r[a++] = (o & 15) << 4 | (u & 60) >> 2, o = u, n = 3; + break; + case 3: + r[a++] = (o & 3) << 6 | u, n = 0; + break; + } + } + if (n === 1) throw Error(Nu); + return a - i; + }; + eo.test = function(t) { + return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(t); + }; +}); +var Iu = re((kv, ku) => { + d(); + ku.exports = to; + function to() { + this._listeners = {}; + } + to.prototype.on = function(t, r, a) { + return (this._listeners[t] || (this._listeners[t] = [])).push({ fn: r, ctx: a || this }), this; + }; + to.prototype.off = function(t, r) { + if (t === void 0) this._listeners = {}; + else if (r === void 0) this._listeners[t] = []; + else for (var a = this._listeners[t], i = 0; i < a.length; ) a[i].fn === r ? a.splice(i, 1) : ++i; + return this; + }; + to.prototype.emit = function(t) { + var r = this._listeners[t]; + if (r) { + for (var a = [], i = 1; i < arguments.length; ) a.push(arguments[i++]); + for (i = 0; i < r.length; ) r[i].fn.apply(r[i++].ctx, a); + } + return this; + }; +}); +var Uu = re((_v, Eu) => { + d(); + Eu.exports = _u(_u); + function _u(e24) { + return typeof Float32Array < "u" ? function() { + var t = new Float32Array([-0]), r = new Uint8Array(t.buffer), a = r[3] === 128; + function i(u, c, f2) { + t[0] = u, c[f2] = r[0], c[f2 + 1] = r[1], c[f2 + 2] = r[2], c[f2 + 3] = r[3]; + } + function n(u, c, f2) { + t[0] = u, c[f2] = r[3], c[f2 + 1] = r[2], c[f2 + 2] = r[1], c[f2 + 3] = r[0]; + } + e24.writeFloatLE = a ? i : n, e24.writeFloatBE = a ? n : i; + function o(u, c) { + return r[0] = u[c], r[1] = u[c + 1], r[2] = u[c + 2], r[3] = u[c + 3], t[0]; + } + function s(u, c) { + return r[3] = u[c], r[2] = u[c + 1], r[1] = u[c + 2], r[0] = u[c + 3], t[0]; + } + e24.readFloatLE = a ? o : s, e24.readFloatBE = a ? s : o; + }() : function() { + function t(a, i, n, o) { + var s = i < 0 ? 1 : 0; + if (s && (i = -i), i === 0) a(1 / i > 0 ? 0 : 2147483648, n, o); + else if (isNaN(i)) a(2143289344, n, o); + else if (i > 34028234663852886e22) a((s << 31 | 2139095040) >>> 0, n, o); + else if (i < 11754943508222875e-54) a((s << 31 | Math.round(i / 1401298464324817e-60)) >>> 0, n, o); + else { + var u = Math.floor(Math.log(i) / Math.LN2), c = Math.round(i * Math.pow(2, -u) * 8388608) & 8388607; + a((s << 31 | u + 127 << 23 | c) >>> 0, n, o); + } + } + e24.writeFloatLE = t.bind(null, Bu), e24.writeFloatBE = t.bind(null, Gu); + function r(a, i, n) { + var o = a(i, n), s = (o >> 31) * 2 + 1, u = o >>> 23 & 255, c = o & 8388607; + return u === 255 ? c ? NaN : s * (1 / 0) : u === 0 ? s * 1401298464324817e-60 * c : s * Math.pow(2, u - 150) * (c + 8388608); + } + e24.readFloatLE = r.bind(null, wu), e24.readFloatBE = r.bind(null, Mu); + }(), typeof Float64Array < "u" ? function() { + var t = new Float64Array([-0]), r = new Uint8Array(t.buffer), a = r[7] === 128; + function i(u, c, f2) { + t[0] = u, c[f2] = r[0], c[f2 + 1] = r[1], c[f2 + 2] = r[2], c[f2 + 3] = r[3], c[f2 + 4] = r[4], c[f2 + 5] = r[5], c[f2 + 6] = r[6], c[f2 + 7] = r[7]; + } + function n(u, c, f2) { + t[0] = u, c[f2] = r[7], c[f2 + 1] = r[6], c[f2 + 2] = r[5], c[f2 + 3] = r[4], c[f2 + 4] = r[3], c[f2 + 5] = r[2], c[f2 + 6] = r[1], c[f2 + 7] = r[0]; + } + e24.writeDoubleLE = a ? i : n, e24.writeDoubleBE = a ? n : i; + function o(u, c) { + return r[0] = u[c], r[1] = u[c + 1], r[2] = u[c + 2], r[3] = u[c + 3], r[4] = u[c + 4], r[5] = u[c + 5], r[6] = u[c + 6], r[7] = u[c + 7], t[0]; + } + function s(u, c) { + return r[7] = u[c], r[6] = u[c + 1], r[5] = u[c + 2], r[4] = u[c + 3], r[3] = u[c + 4], r[2] = u[c + 5], r[1] = u[c + 6], r[0] = u[c + 7], t[0]; + } + e24.readDoubleLE = a ? o : s, e24.readDoubleBE = a ? s : o; + }() : function() { + function t(a, i, n, o, s, u) { + var c = o < 0 ? 1 : 0; + if (c && (o = -o), o === 0) a(0, s, u + i), a(1 / o > 0 ? 0 : 2147483648, s, u + n); + else if (isNaN(o)) a(0, s, u + i), a(2146959360, s, u + n); + else if (o > 17976931348623157e292) a(0, s, u + i), a((c << 31 | 2146435072) >>> 0, s, u + n); + else { + var f2; + if (o < 22250738585072014e-324) f2 = o / 5e-324, a(f2 >>> 0, s, u + i), a((c << 31 | f2 / 4294967296) >>> 0, s, u + n); + else { + var y = Math.floor(Math.log(o) / Math.LN2); + y === 1024 && (y = 1023), f2 = o * Math.pow(2, -y), a(f2 * 4503599627370496 >>> 0, s, u + i), a((c << 31 | y + 1023 << 20 | f2 * 1048576 & 1048575) >>> 0, s, u + n); + } + } + } + e24.writeDoubleLE = t.bind(null, Bu, 0, 4), e24.writeDoubleBE = t.bind(null, Gu, 4, 0); + function r(a, i, n, o, s) { + var u = a(o, s + i), c = a(o, s + n), f2 = (c >> 31) * 2 + 1, y = c >>> 20 & 2047, P = 4294967296 * (c & 1048575) + u; + return y === 2047 ? P ? NaN : f2 * (1 / 0) : y === 0 ? f2 * 5e-324 * P : f2 * Math.pow(2, y - 1075) * (P + 4503599627370496); + } + e24.readDoubleLE = r.bind(null, wu, 0, 4), e24.readDoubleBE = r.bind(null, Mu, 4, 0); + }(), e24; + } + function Bu(e24, t, r) { + t[r] = e24 & 255, t[r + 1] = e24 >>> 8 & 255, t[r + 2] = e24 >>> 16 & 255, t[r + 3] = e24 >>> 24; + } + function Gu(e24, t, r) { + t[r] = e24 >>> 24, t[r + 1] = e24 >>> 16 & 255, t[r + 2] = e24 >>> 8 & 255, t[r + 3] = e24 & 255; + } + function wu(e24, t) { + return (e24[t] | e24[t + 1] << 8 | e24[t + 2] << 16 | e24[t + 3] << 24) >>> 0; + } + function Mu(e24, t) { + return (e24[t] << 24 | e24[t + 1] << 16 | e24[t + 2] << 8 | e24[t + 3]) >>> 0; + } +}); +var Du = re((exports$1, module) => { + d(); + module.exports = inquire; + function inquire(moduleName) { + try { + var mod = eval("quire".replace(/^/, "re"))(moduleName); + if (mod && (mod.length || Object.keys(mod).length)) return mod; + } catch (e24) { + } + return null; + } +}); +var Wu = re((Fu) => { + d(); + var Go = Fu; + Go.length = function(t) { + for (var r = 0, a = 0, i = 0; i < t.length; ++i) a = t.charCodeAt(i), a < 128 ? r += 1 : a < 2048 ? r += 2 : (a & 64512) === 55296 && (t.charCodeAt(i + 1) & 64512) === 56320 ? (++i, r += 4) : r += 3; + return r; + }; + Go.read = function(t, r, a) { + var i = a - r; + if (i < 1) return ""; + for (var n = null, o = [], s = 0, u; r < a; ) u = t[r++], u < 128 ? o[s++] = u : u > 191 && u < 224 ? o[s++] = (u & 31) << 6 | t[r++] & 63 : u > 239 && u < 365 ? (u = ((u & 7) << 18 | (t[r++] & 63) << 12 | (t[r++] & 63) << 6 | t[r++] & 63) - 65536, o[s++] = 55296 + (u >> 10), o[s++] = 56320 + (u & 1023)) : o[s++] = (u & 15) << 12 | (t[r++] & 63) << 6 | t[r++] & 63, s > 8191 && ((n || (n = [])).push(String.fromCharCode.apply(String, o)), s = 0); + return n ? (s && n.push(String.fromCharCode.apply(String, o.slice(0, s))), n.join("")) : String.fromCharCode.apply(String, o.slice(0, s)); + }; + Go.write = function(t, r, a) { + for (var i = a, n, o, s = 0; s < t.length; ++s) n = t.charCodeAt(s), n < 128 ? r[a++] = n : n < 2048 ? (r[a++] = n >> 6 | 192, r[a++] = n & 63 | 128) : (n & 64512) === 55296 && ((o = t.charCodeAt(s + 1)) & 64512) === 56320 ? (n = 65536 + ((n & 1023) << 10) + (o & 1023), ++s, r[a++] = n >> 18 | 240, r[a++] = n >> 12 & 63 | 128, r[a++] = n >> 6 & 63 | 128, r[a++] = n & 63 | 128) : (r[a++] = n >> 12 | 224, r[a++] = n >> 6 & 63 | 128, r[a++] = n & 63 | 128); + return a - i; + }; +}); +var Lu = re((Ev, qu) => { + d(); + qu.exports = Dg; + function Dg(e24, t, r) { + var a = r || 8192, i = a >>> 1, n = null, o = a; + return function(u) { + if (u < 1 || u > i) return e24(u); + o + u > a && (n = e24(a), o = 0); + var c = t.call(n, o, o += u); + return o & 7 && (o = (o | 7) + 1), c; + }; + } +}); +var zu = re((Dv, Ju) => { + d(); + Ju.exports = le; + var ca = Zt(); + function le(e24, t) { + this.lo = e24 >>> 0, this.hi = t >>> 0; + } + var Ar = le.zero = new le(0, 0); + Ar.toNumber = function() { + return 0; + }; + Ar.zzEncode = Ar.zzDecode = function() { + return this; + }; + Ar.length = function() { + return 1; + }; + var Fg = le.zeroHash = "\0\0\0\0\0\0\0\0"; + le.fromNumber = function(t) { + if (t === 0) return Ar; + var r = t < 0; + r && (t = -t); + var a = t >>> 0, i = (t - a) / 4294967296 >>> 0; + return r && (i = ~i >>> 0, a = ~a >>> 0, ++a > 4294967295 && (a = 0, ++i > 4294967295 && (i = 0))), new le(a, i); + }; + le.from = function(t) { + if (typeof t == "number") return le.fromNumber(t); + if (ca.isString(t)) if (ca.Long) t = ca.Long.fromString(t); + else return le.fromNumber(parseInt(t, 10)); + return t.low || t.high ? new le(t.low >>> 0, t.high >>> 0) : Ar; + }; + le.prototype.toNumber = function(t) { + if (!t && this.hi >>> 31) { + var r = ~this.lo + 1 >>> 0, a = ~this.hi >>> 0; + return r || (a = a + 1 >>> 0), -(r + a * 4294967296); + } + return this.lo + this.hi * 4294967296; + }; + le.prototype.toLong = function(t) { + return ca.Long ? new ca.Long(this.lo | 0, this.hi | 0, !!t) : { low: this.lo | 0, high: this.hi | 0, unsigned: !!t }; + }; + var Yt = String.prototype.charCodeAt; + le.fromHash = function(t) { + return t === Fg ? Ar : new le((Yt.call(t, 0) | Yt.call(t, 1) << 8 | Yt.call(t, 2) << 16 | Yt.call(t, 3) << 24) >>> 0, (Yt.call(t, 4) | Yt.call(t, 5) << 8 | Yt.call(t, 6) << 16 | Yt.call(t, 7) << 24) >>> 0); + }; + le.prototype.toHash = function() { + return String.fromCharCode(this.lo & 255, this.lo >>> 8 & 255, this.lo >>> 16 & 255, this.lo >>> 24, this.hi & 255, this.hi >>> 8 & 255, this.hi >>> 16 & 255, this.hi >>> 24); + }; + le.prototype.zzEncode = function() { + var t = this.hi >> 31; + return this.hi = ((this.hi << 1 | this.lo >>> 31) ^ t) >>> 0, this.lo = (this.lo << 1 ^ t) >>> 0, this; + }; + le.prototype.zzDecode = function() { + var t = -(this.lo & 1); + return this.lo = ((this.lo >>> 1 | this.hi << 31) ^ t) >>> 0, this.hi = (this.hi >>> 1 ^ t) >>> 0, this; + }; + le.prototype.length = function() { + var t = this.lo, r = (this.lo >>> 28 | this.hi << 4) >>> 0, a = this.hi >>> 24; + return a === 0 ? r === 0 ? t < 16384 ? t < 128 ? 1 : 2 : t < 2097152 ? 3 : 4 : r < 16384 ? r < 128 ? 5 : 6 : r < 2097152 ? 7 : 8 : a < 128 ? 9 : 10; + }; +}); +var Zt = re((wo) => { + d(); + var _ = wo; + _.asPromise = Au(); + _.base64 = Su(); + _.EventEmitter = Iu(); + _.float = Uu(); + _.inquire = Du(); + _.utf8 = Wu(); + _.pool = Lu(); + _.LongBits = zu(); + _.isNode = !!(typeof global < "u" && global && global.process && global.process.versions && global.process.versions.node); + _.global = _.isNode && global || typeof window < "u" && window || typeof self < "u" && self || wo; + _.emptyArray = Object.freeze ? Object.freeze([]) : []; + _.emptyObject = Object.freeze ? Object.freeze({}) : {}; + _.isInteger = Number.isInteger || function(t) { + return typeof t == "number" && isFinite(t) && Math.floor(t) === t; + }; + _.isString = function(t) { + return typeof t == "string" || t instanceof String; + }; + _.isObject = function(t) { + return t && typeof t == "object"; + }; + _.isset = _.isSet = function(t, r) { + var a = t[r]; + return a != null && t.hasOwnProperty(r) ? typeof a != "object" || (Array.isArray(a) ? a.length : Object.keys(a).length) > 0 : false; + }; + _.Buffer = function() { + try { + var e24 = _.inquire("buffer").Buffer; + return e24.prototype.utf8Write ? e24 : null; + } catch { + return null; + } + }(); + _._Buffer_from = null; + _._Buffer_allocUnsafe = null; + _.newBuffer = function(t) { + return typeof t == "number" ? _.Buffer ? _._Buffer_allocUnsafe(t) : new _.Array(t) : _.Buffer ? _._Buffer_from(t) : typeof Uint8Array > "u" ? t : new Uint8Array(t); + }; + _.Array = typeof Uint8Array < "u" ? Uint8Array : Array; + _.Long = _.global.dcodeIO && _.global.dcodeIO.Long || _.global.Long || _.inquire("long"); + _.key2Re = /^true|false|0|1$/; + _.key32Re = /^-?(?:0|[1-9][0-9]*)$/; + _.key64Re = /^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/; + _.longToHash = function(t) { + return t ? _.LongBits.from(t).toHash() : _.LongBits.zeroHash; + }; + _.longFromHash = function(t, r) { + var a = _.LongBits.fromHash(t); + return _.Long ? _.Long.fromBits(a.lo, a.hi, r) : a.toNumber(!!r); + }; + function $u(e24, t, r) { + for (var a = Object.keys(t), i = 0; i < a.length; ++i) (e24[a[i]] === void 0 || !r) && (e24[a[i]] = t[a[i]]); + return e24; + } + _.merge = $u; + _.lcFirst = function(t) { + return t.charAt(0).toLowerCase() + t.substring(1); + }; + function Hu(e24) { + function t(r, a) { + if (!(this instanceof t)) return new t(r, a); + Object.defineProperty(this, "message", { get: function() { + return r; + } }), Error.captureStackTrace ? Error.captureStackTrace(this, t) : Object.defineProperty(this, "stack", { value: new Error().stack || "" }), a && $u(this, a); + } + return t.prototype = Object.create(Error.prototype, { constructor: { value: t, writable: true, enumerable: false, configurable: true }, name: { get: function() { + return e24; + }, set: void 0, enumerable: false, configurable: true }, toString: { value: function() { + return this.name + ": " + this.message; + }, writable: true, enumerable: false, configurable: true } }), t; + } + _.newError = Hu; + _.ProtocolError = Hu("ProtocolError"); + _.oneOfGetter = function(t) { + for (var r = {}, a = 0; a < t.length; ++a) r[t[a]] = 1; + return function() { + for (var i = Object.keys(this), n = i.length - 1; n > -1; --n) if (r[i[n]] === 1 && this[i[n]] !== void 0 && this[i[n]] !== null) return i[n]; + }; + }; + _.oneOfSetter = function(t) { + return function(r) { + for (var a = 0; a < t.length; ++a) t[a] !== r && delete this[t[a]]; + }; + }; + _.toJSONOptions = { longs: String, enums: String, bytes: String, json: true }; + _._configure = function() { + var e24 = _.Buffer; + if (!e24) { + _._Buffer_from = _._Buffer_allocUnsafe = null; + return; + } + _._Buffer_from = e24.from !== Uint8Array.from && e24.from || function(r, a) { + return new e24(r, a); + }, _._Buffer_allocUnsafe = e24.allocUnsafe || function(r) { + return new e24(r); + }; + }; +}); +var qo = re((Lv, Zu) => { + d(); + Zu.exports = z; + var Qe = Zt(), Mo, ro = Qe.LongBits, Qu = Qe.base64, Ku = Qe.utf8; + function la(e24, t, r) { + this.fn = e24, this.len = t, this.next = void 0, this.val = r; + } + function Uo() { + } + function Wg(e24) { + this.head = e24.head, this.tail = e24.tail, this.len = e24.len, this.next = e24.states; + } + function z() { + this.len = 0, this.head = new la(Uo, 0, 0), this.tail = this.head, this.states = null; + } + var Yu = function() { + return Qe.Buffer ? function() { + return (z.create = function() { + return new Mo(); + })(); + } : function() { + return new z(); + }; + }; + z.create = Yu(); + z.alloc = function(t) { + return new Qe.Array(t); + }; + Qe.Array !== Array && (z.alloc = Qe.pool(z.alloc, Qe.Array.prototype.subarray)); + z.prototype._push = function(t, r, a) { + return this.tail = this.tail.next = new la(t, r, a), this.len += r, this; + }; + function Do(e24, t, r) { + t[r] = e24 & 255; + } + function qg(e24, t, r) { + for (; e24 > 127; ) t[r++] = e24 & 127 | 128, e24 >>>= 7; + t[r] = e24; + } + function Fo(e24, t) { + this.len = e24, this.next = void 0, this.val = t; + } + Fo.prototype = Object.create(la.prototype); + Fo.prototype.fn = qg; + z.prototype.uint32 = function(t) { + return this.len += (this.tail = this.tail.next = new Fo((t = t >>> 0) < 128 ? 1 : t < 16384 ? 2 : t < 2097152 ? 3 : t < 268435456 ? 4 : 5, t)).len, this; + }; + z.prototype.int32 = function(t) { + return t < 0 ? this._push(Wo, 10, ro.fromNumber(t)) : this.uint32(t); + }; + z.prototype.sint32 = function(t) { + return this.uint32((t << 1 ^ t >> 31) >>> 0); + }; + function Wo(e24, t, r) { + for (; e24.hi; ) t[r++] = e24.lo & 127 | 128, e24.lo = (e24.lo >>> 7 | e24.hi << 25) >>> 0, e24.hi >>>= 7; + for (; e24.lo > 127; ) t[r++] = e24.lo & 127 | 128, e24.lo = e24.lo >>> 7; + t[r++] = e24.lo; + } + z.prototype.uint64 = function(t) { + var r = ro.from(t); + return this._push(Wo, r.length(), r); + }; + z.prototype.int64 = z.prototype.uint64; + z.prototype.sint64 = function(t) { + var r = ro.from(t).zzEncode(); + return this._push(Wo, r.length(), r); + }; + z.prototype.bool = function(t) { + return this._push(Do, 1, t ? 1 : 0); + }; + function Eo(e24, t, r) { + t[r] = e24 & 255, t[r + 1] = e24 >>> 8 & 255, t[r + 2] = e24 >>> 16 & 255, t[r + 3] = e24 >>> 24; + } + z.prototype.fixed32 = function(t) { + return this._push(Eo, 4, t >>> 0); + }; + z.prototype.sfixed32 = z.prototype.fixed32; + z.prototype.fixed64 = function(t) { + var r = ro.from(t); + return this._push(Eo, 4, r.lo)._push(Eo, 4, r.hi); + }; + z.prototype.sfixed64 = z.prototype.fixed64; + z.prototype.float = function(t) { + return this._push(Qe.float.writeFloatLE, 4, t); + }; + z.prototype.double = function(t) { + return this._push(Qe.float.writeDoubleLE, 8, t); + }; + var Lg = Qe.Array.prototype.set ? function(t, r, a) { + r.set(t, a); + } : function(t, r, a) { + for (var i = 0; i < t.length; ++i) r[a + i] = t[i]; + }; + z.prototype.bytes = function(t) { + var r = t.length >>> 0; + if (!r) return this._push(Do, 1, 0); + if (Qe.isString(t)) { + var a = z.alloc(r = Qu.length(t)); + Qu.decode(t, a, 0), t = a; + } + return this.uint32(r)._push(Lg, r, t); + }; + z.prototype.string = function(t) { + var r = Ku.length(t); + return r ? this.uint32(r)._push(Ku.write, r, t) : this._push(Do, 1, 0); + }; + z.prototype.fork = function() { + return this.states = new Wg(this), this.head = this.tail = new la(Uo, 0, 0), this.len = 0, this; + }; + z.prototype.reset = function() { + return this.states ? (this.head = this.states.head, this.tail = this.states.tail, this.len = this.states.len, this.states = this.states.next) : (this.head = this.tail = new la(Uo, 0, 0), this.len = 0), this; + }; + z.prototype.ldelim = function() { + var t = this.head, r = this.tail, a = this.len; + return this.reset().uint32(a), a && (this.tail.next = t.next, this.tail = r, this.len += a), this; + }; + z.prototype.finish = function() { + for (var t = this.head.next, r = this.constructor.alloc(this.len), a = 0; t; ) t.fn(t.val, r, a), a += t.len, t = t.next; + return r; + }; + z._configure = function(e24) { + Mo = e24, z.create = Yu(), Mo._configure(); + }; +}); +var ed = re((zv, ju) => { + d(); + ju.exports = At; + var Xu = qo(); + (At.prototype = Object.create(Xu.prototype)).constructor = At; + var Xt = Zt(); + function At() { + Xu.call(this); + } + At._configure = function() { + At.alloc = Xt._Buffer_allocUnsafe, At.writeBytesBuffer = Xt.Buffer && Xt.Buffer.prototype instanceof Uint8Array && Xt.Buffer.prototype.set.name === "set" ? function(t, r, a) { + r.set(t, a); + } : function(t, r, a) { + if (t.copy) t.copy(r, a, 0, t.length); + else for (var i = 0; i < t.length; ) r[a++] = t[i++]; + }; + }; + At.prototype.bytes = function(t) { + Xt.isString(t) && (t = Xt._Buffer_from(t, "base64")); + var r = t.length >>> 0; + return this.uint32(r), r && this._push(At.writeBytesBuffer, r, t), this; + }; + function Jg(e24, t, r) { + e24.length < 40 ? Xt.utf8.write(e24, t, r) : t.utf8Write ? t.utf8Write(e24, r) : t.write(e24, r); + } + At.prototype.string = function(t) { + var r = Xt.Buffer.byteLength(t); + return this.uint32(r), r && this._push(Jg, r, t), this; + }; + At._configure(); +}); +var zo = re((Hv, ad) => { + d(); + ad.exports = ie; + var dt = Zt(), Jo, nd = dt.LongBits, zg = dt.utf8; + function ct(e24, t) { + return RangeError("index out of range: " + e24.pos + " + " + (t || 1) + " > " + e24.len); + } + function ie(e24) { + this.buf = e24, this.pos = 0, this.len = e24.length; + } + var td = typeof Uint8Array < "u" ? function(t) { + if (t instanceof Uint8Array || Array.isArray(t)) return new ie(t); + throw Error("illegal buffer"); + } : function(t) { + if (Array.isArray(t)) return new ie(t); + throw Error("illegal buffer"); + }, id = function() { + return dt.Buffer ? function(r) { + return (ie.create = function(i) { + return dt.Buffer.isBuffer(i) ? new Jo(i) : td(i); + })(r); + } : td; + }; + ie.create = id(); + ie.prototype._slice = dt.Array.prototype.subarray || dt.Array.prototype.slice; + ie.prototype.uint32 = /* @__PURE__ */ function() { + var t = 4294967295; + return function() { + if (t = (this.buf[this.pos] & 127) >>> 0, this.buf[this.pos++] < 128 || (t = (t | (this.buf[this.pos] & 127) << 7) >>> 0, this.buf[this.pos++] < 128) || (t = (t | (this.buf[this.pos] & 127) << 14) >>> 0, this.buf[this.pos++] < 128) || (t = (t | (this.buf[this.pos] & 127) << 21) >>> 0, this.buf[this.pos++] < 128) || (t = (t | (this.buf[this.pos] & 15) << 28) >>> 0, this.buf[this.pos++] < 128)) return t; + if ((this.pos += 5) > this.len) throw this.pos = this.len, ct(this, 10); + return t; + }; + }(); + ie.prototype.int32 = function() { + return this.uint32() | 0; + }; + ie.prototype.sint32 = function() { + var t = this.uint32(); + return t >>> 1 ^ -(t & 1) | 0; + }; + function Lo() { + var e24 = new nd(0, 0), t = 0; + if (this.len - this.pos > 4) { + for (; t < 4; ++t) if (e24.lo = (e24.lo | (this.buf[this.pos] & 127) << t * 7) >>> 0, this.buf[this.pos++] < 128) return e24; + if (e24.lo = (e24.lo | (this.buf[this.pos] & 127) << 28) >>> 0, e24.hi = (e24.hi | (this.buf[this.pos] & 127) >> 4) >>> 0, this.buf[this.pos++] < 128) return e24; + t = 0; + } else { + for (; t < 3; ++t) { + if (this.pos >= this.len) throw ct(this); + if (e24.lo = (e24.lo | (this.buf[this.pos] & 127) << t * 7) >>> 0, this.buf[this.pos++] < 128) return e24; + } + return e24.lo = (e24.lo | (this.buf[this.pos++] & 127) << t * 7) >>> 0, e24; + } + if (this.len - this.pos > 4) { + for (; t < 5; ++t) if (e24.hi = (e24.hi | (this.buf[this.pos] & 127) << t * 7 + 3) >>> 0, this.buf[this.pos++] < 128) return e24; + } else for (; t < 5; ++t) { + if (this.pos >= this.len) throw ct(this); + if (e24.hi = (e24.hi | (this.buf[this.pos] & 127) << t * 7 + 3) >>> 0, this.buf[this.pos++] < 128) return e24; + } + throw Error("invalid varint encoding"); + } + ie.prototype.bool = function() { + return this.uint32() !== 0; + }; + function no(e24, t) { + return (e24[t - 4] | e24[t - 3] << 8 | e24[t - 2] << 16 | e24[t - 1] << 24) >>> 0; + } + ie.prototype.fixed32 = function() { + if (this.pos + 4 > this.len) throw ct(this, 4); + return no(this.buf, this.pos += 4); + }; + ie.prototype.sfixed32 = function() { + if (this.pos + 4 > this.len) throw ct(this, 4); + return no(this.buf, this.pos += 4) | 0; + }; + function rd() { + if (this.pos + 8 > this.len) throw ct(this, 8); + return new nd(no(this.buf, this.pos += 4), no(this.buf, this.pos += 4)); + } + ie.prototype.float = function() { + if (this.pos + 4 > this.len) throw ct(this, 4); + var t = dt.float.readFloatLE(this.buf, this.pos); + return this.pos += 4, t; + }; + ie.prototype.double = function() { + if (this.pos + 8 > this.len) throw ct(this, 4); + var t = dt.float.readDoubleLE(this.buf, this.pos); + return this.pos += 8, t; + }; + ie.prototype.bytes = function() { + var t = this.uint32(), r = this.pos, a = this.pos + t; + if (a > this.len) throw ct(this, t); + if (this.pos += t, Array.isArray(this.buf)) return this.buf.slice(r, a); + if (r === a) { + var i = dt.Buffer; + return i ? i.alloc(0) : new this.buf.constructor(0); + } + return this._slice.call(this.buf, r, a); + }; + ie.prototype.string = function() { + var t = this.bytes(); + return zg.read(t, 0, t.length); + }; + ie.prototype.skip = function(t) { + if (typeof t == "number") { + if (this.pos + t > this.len) throw ct(this, t); + this.pos += t; + } else do + if (this.pos >= this.len) throw ct(this); + while (this.buf[this.pos++] & 128); + return this; + }; + ie.prototype.skipType = function(e24) { + switch (e24) { + case 0: + this.skip(); + break; + case 1: + this.skip(8); + break; + case 2: + this.skip(this.uint32()); + break; + case 3: + for (; (e24 = this.uint32() & 7) !== 4; ) this.skipType(e24); + break; + case 5: + this.skip(4); + break; + default: + throw Error("invalid wire type " + e24 + " at offset " + this.pos); + } + return this; + }; + ie._configure = function(e24) { + Jo = e24, ie.create = id(), Jo._configure(); + var t = dt.Long ? "toLong" : "toNumber"; + dt.merge(ie.prototype, { int64: function() { + return Lo.call(this)[t](false); + }, uint64: function() { + return Lo.call(this)[t](true); + }, sint64: function() { + return Lo.call(this).zzDecode()[t](false); + }, fixed64: function() { + return rd.call(this)[t](true); + }, sfixed64: function() { + return rd.call(this)[t](false); + } }); + }; +}); +var dd = re((Kv, ud) => { + d(); + ud.exports = Nr; + var sd = zo(); + (Nr.prototype = Object.create(sd.prototype)).constructor = Nr; + var od = Zt(); + function Nr(e24) { + sd.call(this, e24); + } + Nr._configure = function() { + od.Buffer && (Nr.prototype._slice = od.Buffer.prototype.slice); + }; + Nr.prototype.string = function() { + var t = this.uint32(); + return this.buf.utf8Slice ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + t, this.len)) : this.buf.toString("utf-8", this.pos, this.pos = Math.min(this.pos + t, this.len)); + }; + Nr._configure(); +}); +var ld = re((Zv, cd) => { + d(); + cd.exports = fa; + var $o = Zt(); + (fa.prototype = Object.create($o.EventEmitter.prototype)).constructor = fa; + function fa(e24, t, r) { + if (typeof e24 != "function") throw TypeError("rpcImpl must be a function"); + $o.EventEmitter.call(this), this.rpcImpl = e24, this.requestDelimited = !!t, this.responseDelimited = !!r; + } + fa.prototype.rpcCall = function e24(t, r, a, i, n) { + if (!i) throw TypeError("request must be specified"); + var o = this; + if (!n) return $o.asPromise(e24, o, t, r, a, i); + if (!o.rpcImpl) { + setTimeout(function() { + n(Error("already ended")); + }, 0); + return; + } + try { + return o.rpcImpl(t, r[o.requestDelimited ? "encodeDelimited" : "encode"](i).finish(), function(u, c) { + if (u) return o.emit("error", u, t), n(u); + if (c === null) { + o.end(true); + return; + } + if (!(c instanceof a)) try { + c = a[o.responseDelimited ? "decodeDelimited" : "decode"](c); + } catch (f2) { + return o.emit("error", f2, t), n(f2); + } + return o.emit("data", c, t), n(null, c); + }); + } catch (s) { + o.emit("error", s, t), setTimeout(function() { + n(s); + }, 0); + return; + } + }; + fa.prototype.end = function(t) { + return this.rpcImpl && (t || this.rpcImpl(null, null, null), this.rpcImpl = null, this.emit("end").off()), this; + }; +}); +var pd = re((fd) => { + d(); + var $g = fd; + $g.Service = ld(); +}); +var md = re((tb, gd) => { + d(); + gd.exports = {}; +}); +var Td = re((yd) => { + d(); + var _e = yd; + _e.build = "minimal"; + _e.Writer = qo(); + _e.BufferWriter = ed(); + _e.Reader = zo(); + _e.BufferReader = dd(); + _e.util = Zt(); + _e.rpc = pd(); + _e.roots = md(); + _e.configure = hd; + function hd() { + _e.util._configure(), _e.Writer._configure(_e.BufferWriter), _e.Reader._configure(_e.BufferReader); + } + hd(); +}); +var Ke = re((ab, vd) => { + d(); + vd.exports = Td(); +}); +d(); +d(); +d(); +var ne = class extends Error { + message; + constructor(t) { + super(t), this.message = t, this.name = this.constructor.name, typeof Error.captureStackTrace == "function" && Error.captureStackTrace(this, this.constructor); + } +}; +var F = class extends ne { + constructor(t) { + super(`Invalid input provided: ${t}`); + } +}; +var _t = class extends ne { + constructor(t, r) { + super(`Query call with protocol ${r} failed with message: ${t}`); + } +}; +var Da = class extends ne { + constructor(t) { + super(`Delete many failed with message: ${t}`); + } +}; +var Fa = class extends ne { + constructor(t) { + super(`Tenants get failed with message: ${t}`); + } +}; +var Wa = class extends ne { + constructor(t) { + super(`Batch objects insert failed with message: ${t}`); + } +}; +var Yr = class extends ne { + constructor(t) { + let a = `Weaviate makes use of a high-speed gRPC API as well as a REST API. + Unfortunately, the gRPC health check against Weaviate could not be completed. + + This error could be due to one of several reasons: + - The gRPC traffic at the specified port is blocked by a firewall. + - gRPC is not enabled or incorrectly configured on the server or the client. + - ${`Please check that the server address and port: ${t} are correct.`} + - your connection is unstable or has a high latency. In this case you can: + - increase init-timeout in weaviate.connectToLocal({timeout: {init: X}})' + - disable startup checks by connecting using 'skipInitChecks=true' + `; + super(a); + } +}; +var b = class extends ne { + constructor(t) { + super(`Converting data from Weaviate failed with message: ${t}`); + } +}; +var Zr = class extends ne { + constructor(t) { + super(`Converting data to Weaviate failed with message: ${t}`); + } +}; +var Ct = class extends ne { + code; + constructor(t, r) { + super(`The request to Weaviate failed with status code: ${t} and message: ${r}`), this.code = t; + } +}; +var Pt = class extends ne { + constructor(t) { + super(`The response from Weaviate was unexpected: ${t}`); + } +}; +var Bt = class extends ne { + constructor(t, r) { + super(`Backup ${r} failed with message: ${t}`); + } +}; +var sa = class extends ne { + constructor(t) { + super(`Backup ${t} was canceled`); + } +}; +var qa = class extends ne { + constructor(t) { + super(`Backup cancellation failed with message: ${t}`); + } +}; +var He = class extends ne { +}; +var fu = class extends ne { + constructor(t) { + super(`Weaviate startup failed with message: ${t}`); + } +}; +var Xr = class extends ne { + constructor(t) { + super(`Weaviate request timed out with message: ${t}`); + } +}; +var jr = class extends ne { + code; + constructor(t, r) { + super(`Forbidden: ${r}`), this.code = t; + } +}; +var La = class extends ne { + constructor(t) { + super(`Unauthenticated: ${t}`); + } +}; +var Ja = class extends ne { + constructor(t) { + super(`Batch stream failed with message: ${t}`); + } +}; +d(); +d(); +var O = class { + _errors; + client; + constructor(t) { + this.client = t, this._errors = []; + } + get errors() { + return this._errors; + } + addError(t) { + this._errors = [...this.errors, t]; + } + addErrors(t) { + this._errors = [...this.errors, ...t]; + } +}; +var en = class extends O { + class; + constructor(t) { + super(t); + } + withClass = (t) => (this.class = t, this); + validateClass = () => { + (this.class == null || this.class == null) && this.addError("class object must be set - set with .withClass(class)"); + }; + validate() { + this.validateClass(); + } + do = () => { + if (this.validateClass(), this.errors.length > 0) return Promise.reject(new Error("invalid usage: " + this.errors.join(", "))); + let t = `/schema/${this.class.class}`; + return this.client.put(t, this.class, false); + }; +}; +d(); +d(); +var zt = class extends O { + class; + constructor(t) { + super(t); + } + withClass = (t) => (this.class = t, this); + validateClass = () => { + (this.class == null || this.class == null) && this.addError("class object must be set - set with .withClass(class)"); + }; + validate() { + this.validateClass(); + } + do = () => (this.validateClass(), this.errors.length > 0 ? Promise.reject(new Error("invalid usage: " + this.errors.join(", "))) : this.client.postReturn("/schema", this.class)); +}; +d(); +d(); +function M(e24) { + return typeof e24 == "string" && e24.length > 0; +} +var $t = class extends O { + className; + constructor(t) { + super(t); + } + withClassName = (t) => (this.className = t, this); + validateClassName = () => { + M(this.className) || this.addError("className must be set - set with .withClassName(className)"); + }; + validate = () => { + this.validateClassName(); + }; + do = () => { + if (this.validate(), this.errors.length > 0) return Promise.reject(new Error("invalid usage: " + this.errors.join(", "))); + let t = `/schema/${this.className}`; + return this.client.delete(t, void 0, false); + }; +}; +d(); +var Ht = class extends O { + className; + constructor(t) { + super(t); + } + withClassName = (t) => (this.className = t, this); + validateClassName = () => { + M(this.className) || this.addError("className must be set - set with .withClassName(className)"); + }; + validate = () => { + this.validateClassName(); + }; + do = () => (this.validate(), this.errors.length > 0 ? Promise.reject(new Error("invalid usage: " + this.errors.join(", "))) : this.client.get("/schema").then((r) => r.classes ? r.classes.some((a) => a.class === this.className) : false)); +}; +d(); +var st = class extends O { + className; + constructor(t) { + super(t); + } + withClassName = (t) => (this.className = t, this); + validateClassName = () => { + M(this.className) || this.addError("className must be set - set with .withClassName(className)"); + }; + validate = () => { + this.validateClassName(); + }; + do = () => { + if (this.validate(), this.errors.length > 0) return Promise.reject(new Error("invalid usage: " + this.errors.join(", "))); + let t = `/schema/${this.className}`; + return this.client.get(t); + }; +}; +d(); +d(); +var Qt = class extends O { + constructor(t) { + super(t); + } + validate() { + } + do = () => this.errors.length > 0 ? Promise.reject(new Error("invalid usage: " + this.errors.join(", "))) : this.client.get("/schema"); +}; +d(); +var Kt = class extends O { + className; + property; + constructor(t) { + super(t); + } + withClassName = (t) => (this.className = t, this); + withProperty = (t) => (this.property = t, this); + validateClassName = () => { + M(this.className) || this.addError("className must be set - set with .withClassName(className)"); + }; + validateProperty = () => { + (this.property == null || this.property == null) && this.addError("property must be set - set with .withProperty(property)"); + }; + validate = () => { + this.validateClassName(), this.validateProperty(); + }; + do = () => { + if (this.validate(), this.errors.length > 0) return Promise.reject(new Error("invalid usage: " + this.errors.join(", "))); + let t = `/schema/${this.className}/properties`; + return this.client.postReturn(t, this.property); + }; +}; +d(); +var xr = class extends O { + className; + shardName; + status; + constructor(t) { + super(t); + } + withClassName = (t) => (this.className = t, this); + validateClassName = () => { + M(this.className) || this.addError("className must be set - set with .withClassName(className)"); + }; + withShardName = (t) => (this.shardName = t, this); + validateShardName = () => { + M(this.shardName) || this.addError("shardName must be set - set with .withShardName(shardName)"); + }; + withStatus = (t) => (this.status = t, this); + validateStatus = () => { + M(this.status) || this.addError("status must be set - set with .withStatus(status)"); + }; + validate = () => { + this.validateClassName(), this.validateShardName(), this.validateStatus(); + }; + do = () => (this.validate(), this.errors.length > 0 ? Promise.reject(new Error(`invalid usage: ${this.errors.join(", ")}`)) : pu(this.client, this.className, this.shardName, this.status)); +}; +function pu(e24, t, r, a) { + let i = `/schema/${t}/shards/${r}`; + return e24.put(i, { status: a }, true); +} +d(); +var tn = class extends O { + className; + tenant; + constructor(t) { + super(t); + } + withClassName = (t) => (this.className = t, this); + withTenant = (t) => (this.tenant = t, this); + validateClassName = () => { + M(this.className) || this.addError("className must be set - set with .withClassName(className)"); + }; + validate = () => { + this.validateClassName(); + }; + do = () => (this.validate(), this.errors.length > 0 ? Promise.reject(new Error(`invalid usage: ${this.errors.join(", ")}`)) : gu(this.client, this.className, this.tenant)); +}; +function gu(e24, t, r) { + let a = `/schema/${t}/shards${r ? `?tenant=${r}` : ""}`; + return e24.get(a); +} +d(); +d(); +var Cr = class extends O { + className; + tenants; + constructor(t, r, a) { + super(t), this.className = r, this.tenants = a; + } + validate = () => { + }; + do = () => this.client.postReturn(`/schema/${this.className}/tenants`, this.tenants); +}; +d(); +var Pr = class extends O { + className; + tenants; + constructor(t, r, a) { + super(t), this.className = r, this.tenants = a; + } + validate = () => { + }; + do = () => this.client.delete(`/schema/${this.className}/tenants`, this.tenants, false); +}; +d(); +d(); +d(); +var Rr = class extends O { + className; + tenants; + constructor(t, r, a) { + super(t), this.className = r, this.tenants = a; + } + validate = () => { + }; + do = () => this.client.put(`/schema/${this.className}/tenants`, this.tenants); +}; +d(); +var ua = class extends O { + className; + vectors; + constructor(t) { + super(t); + } + withClassName = (t) => (this.className = t, this); + withVectors = (t) => (this.vectors = t, this); + validateClassName = () => { + M(this.className) || this.addError("className must be set - set with .withClassName(className)"); + }; + validate = () => { + this.validateClassName(); + }; + do = () => (this.validate(), this.errors.length > 0 ? Promise.reject(new Error("invalid usage: " + this.errors.join(", "))) : new st(this.client).withClassName(this.className).do().then(async (t) => { + t.vectorConfig === void 0 && (t.vectorConfig = {}); + for (let [a, i] of Object.entries(this.vectors)) t.vectorConfig[a] === void 0 && (t.vectorConfig[a] = { ...i }); + let r = `/schema/${this.className}`; + await this.client.put(r, t); + })); +}; +d(); +d(); +var se = class { + static isPQCreate(t) { + return t?.type === "pq"; + } + static isPQUpdate(t) { + return t?.type === "pq"; + } + static isBQCreate(t) { + return t?.type === "bq"; + } + static isBQUpdate(t) { + return t?.type === "bq"; + } + static isSQCreate(t) { + return t?.type === "sq"; + } + static isSQUpdate(t) { + return t?.type === "sq"; + } + static isRQCreate(t) { + return t?.type === "rq"; + } + static isRQUpdate(t) { + return t?.type === "rq"; + } + static isUncompressedCreate(t) { + return t?.type === "none"; + } +}; +var Gt = class { + static isHNSW(t) { + return t?.type === "hnsw"; + } + static isFlat(t) { + return t?.type === "flat"; + } + static isHFresh(t) { + return t?.type === "hfresh"; + } + static isDynamic(t) { + return t?.type === "dynamic"; + } +}; +var za = class { + static isMuvera(t) { + return t?.type === "muvera"; + } +}; +function $a(e24, t) { + return e24 !== void 0 ? e24 : t; +} +var Ha = class e { + static schema(t, r) { + if (r === void 0) return t; + if (r.description !== void 0 && (t.description = r.description), r.propertyDescriptions !== void 0 && (t.properties = e.properties(t.properties, r.propertyDescriptions)), r.generative !== void 0 && (t.moduleConfig = e.generative(t.moduleConfig, r.generative)), r.invertedIndex !== void 0 && (t.invertedIndexConfig = e.invertedIndex(t.invertedIndexConfig, r.invertedIndex)), r.multiTenancy !== void 0 && (t.multiTenancyConfig = e.multiTenancy(t.multiTenancyConfig, r.multiTenancy)), r.objectTTL !== void 0 && (t.objectTtlConfig = e.objectTTL(t.objectTtlConfig, r.objectTTL)), r.replication !== void 0 && (t.replicationConfig = e.replication(t.replicationConfig, r.replication)), r.reranker !== void 0 && (t.moduleConfig = e.reranker(t.moduleConfig, r.reranker)), r.vectorizers !== void 0) if (Array.isArray(r.vectorizers)) t.vectorConfig = e.vectors(t.vectorConfig, r.vectorizers); + else if (t.vectorConfig !== void 0) { + let a = { ...r.vectorizers, name: "default" }; + t.vectorConfig = e.vectors(t.vectorConfig, [a]); + } else t.vectorIndexConfig = r.vectorizers?.vectorIndex ? r.vectorizers.vectorIndex.name === "hnsw" ? e.hnsw(t.vectorIndexConfig, r.vectorizers.vectorIndex.config) : r.vectorizers.vectorIndex.name === "hfresh" ? e.hfresh(t.vectorIndexConfig, r.vectorizers.vectorIndex.config) : r.vectorizers.vectorIndex.name === "dynamic" ? e.dynamic(t.vectorIndexConfig, r.vectorizers.vectorIndex.config) : e.flat(t.vectorIndexConfig, r.vectorizers.vectorIndex.config) : t.vectorIndexConfig; + return t; + } + static properties(t, r) { + if (t === void 0) throw Error("Properties are missing from the class schema."); + return t.length === 0 ? t : t.map((a) => ({ ...a, description: r[a.name] ?? a.description })); + } + static generative(t, r) { + if (t === void 0) throw Error("Module config is missing from the class schema."); + if (r === void 0) return t; + let a = r.name === "generative-azure-openai" ? "generative-openai" : r.name, i = Object.keys(t).find((o) => o.startsWith("generative-") && o !== r.name); + i !== void 0 && delete t[i]; + let n = t[a] || {}; + return t[a] = { ...n, ...r.config }, t; + } + static reranker(t, r) { + if (t === void 0) throw Error("Module config is missing from the class schema."); + if (r === void 0) return t; + let a = t[r.name], i = Object.keys(t).find((n) => n.startsWith("reranker-") && n !== r.name); + return i !== void 0 && delete t[i], t[r.name] = { ...a, ...r.config }, t; + } + static invertedIndex(t, r) { + if (t === void 0) throw Error("Inverted index config is missing from the class schema."); + if (r === void 0) return t; + let { bm25: a, stopwords: i, ...n } = r, o = { ...t, ...n }; + return a !== void 0 && (o.bm25 = { ...t.bm25, ...a }), i !== void 0 && (o.stopwords = { ...t.stopwords, ...i }), o; + } + static objectTTL(t, r) { + return t === void 0 ? r : { enabled: r.enabled ?? t.enabled, deleteOn: r.deleteOn ?? t.deleteOn, defaultTtl: r.defaultTTLSeconds ?? t.defaultTtl, filterExpiredObjects: r.filterExpiredObjects ?? t.filterExpiredObjects }; + } + static multiTenancy(t, r) { + if (t === void 0) throw Error("Multi-tenancy config is missing from the class schema."); + return { ...t, ...r }; + } + static replication(t, r) { + if (t === void 0) throw Error("Replication config is missing from the class schema."); + return { ...t, ...r }; + } + static vectors(t, r) { + if (t === void 0) throw Error("Vector index config is missing from the class schema."); + return r.forEach((a) => { + let i = t[a.name]; + i !== void 0 && (t[a.name].vectorIndexConfig = a.vectorIndex ? a.vectorIndex.name === "hnsw" ? e.hnsw(i.vectorIndexConfig, a.vectorIndex.config) : a.vectorIndex.name === "hfresh" ? e.hfresh(i.vectorIndexConfig, a.vectorIndex.config) : a.vectorIndex.name === "dynamic" ? e.dynamic(i.vectorIndexConfig, a.vectorIndex.config) : e.flat(i.vectorIndexConfig, a.vectorIndex.config) : i.vectorIndexConfig); + }), t; + } + static flat(t, r) { + if (se.isPQUpdate(r.quantizer) && (t?.bq).enabled || se.isBQUpdate(r.quantizer) && (t?.pq).enabled) throw Error("Cannot update the quantizer type of an enabled vector index."); + let { quantizer: a, ...i } = r, n = { ...t, ...i }; + if (se.isBQUpdate(a)) { + let { type: o, ...s } = a; + n.bq = { ...t.bq, ...s, enabled: true }; + } + return n; + } + static hfresh(t, r) { + return { ...t, ...r }; + } + static dynamic(t, r) { + if (!t) return r; + let { hnsw: a, flat: i, ...n } = r, o = { ...t, ...n }; + return a && (o.hnsw = e.hnsw(t.hnsw, a)), i && (o.flat = e.flat(t.flat, i)), o; + } + static hnsw(t, r) { + let a = (s) => ["pq", "bq", "sq", "rq"].some((u) => u !== s && t?.[u]?.enabled); + if (se.isBQUpdate(r.quantizer) && a("bq") || se.isPQUpdate(r.quantizer) && a("pq") || se.isSQUpdate(r.quantizer) && a("sq") || se.isRQUpdate(r.quantizer) && a("rq")) throw new F("Cannot update the quantizer type of an enabled vector index."); + let { quantizer: i, ...n } = r, o = { ...t, ...n }; + if (se.isBQUpdate(i)) { + let { type: s, ...u } = i; + o.bq = { ...t.bq, ...u, enabled: true }; + } + if (se.isPQUpdate(i)) { + let { type: s, ...u } = i; + o.pq = { ...t.pq, ...u, enabled: true }; + } + if (se.isSQUpdate(i)) { + let { type: s, ...u } = i; + o.sq = { ...t.sq, ...u, enabled: true }; + } + if (se.isRQUpdate(i)) { + let { type: s, ...u } = i; + o.rq = { ...t.rq, ...u, enabled: true }; + } + return o; + } +}; +d(); +var Io = (e24) => { + if (e24 == null) return; + let t = { stopwordPreset: e24.stopwordPreset }; + return typeof e24.asciiFold == "boolean" ? t.asciiFold = e24.asciiFold : typeof e24.asciiFold == "object" && (t.asciiFold = true, t.asciiFoldIgnore = e24.asciiFold.ignore), t; +}; +var kg = (e24) => { + if (e24 == null) return; + let t = {}; + return e24.stopwordPreset != null && (t.stopwordPreset = e24.stopwordPreset), e24.asciiFoldIgnore && e24.asciiFoldIgnore.length > 0 ? t.asciiFold = { ignore: e24.asciiFoldIgnore } : typeof e24.asciiFold == "boolean" && (t.asciiFold = e24.asciiFold), Object.keys(t).length === 0 ? void 0 : t; +}; +var So = class { + static isSingleTarget(t) { + return t.targetCollection !== void 0; + } + static isMultiTarget(t) { + return t.targetCollections !== void 0; + } +}; +var Qa = (e24, t) => { + let { dataType: r, nestedProperties: a, skipVectorization: i, vectorizePropertyName: n, textAnalyzer: o, ...s } = e24, u = {}; + return t?.forEach((c) => { + u[c] = { skip: i === void 0 ? false : i, vectorizePropertyName: n === void 0 ? true : n }; + }), { ...s, dataType: [r], nestedProperties: a ? a.map((c) => mu(c)) : void 0, moduleConfig: Object.keys(u).length > 0 ? u : void 0, textAnalyzer: Io(o) }; +}; +var mu = (e24) => { + let { dataType: t, nestedProperties: r, ...a } = e24; + return { ...a, dataType: [t], nestedProperties: r ? r.map(mu) : void 0 }; +}; +var Ka = (e24) => { + if (So.isSingleTarget(e24)) { + let { targetCollection: t, ...r } = e24; + return { ...r, dataType: [t] }; + } else { + let { targetCollections: t, ...r } = e24; + return { ...r, dataType: t }; + } +}; +var da = (e24) => ({ name: Ee._name(e24.class), description: e24.description, generative: Ee.generative(e24.moduleConfig), invertedIndex: Ee.invertedIndex(e24.invertedIndexConfig), multiTenancy: Ee.multiTenancy(e24.multiTenancyConfig), objectTTL: Ee.objectTTL(e24.objectTtlConfig), properties: Ee.properties(e24.properties), references: Ee.references(e24.properties), replication: Ee.replication(e24.replicationConfig), reranker: Ee.reranker(e24.moduleConfig), sharding: Ee.sharding(e24.shardingConfig), vectorizers: Ee.vectorizer(e24) }); +var ko = (e24) => { + if (e24.config === void 0) return; + if (Gt.isDynamic(e24.config)) { + let { hnsw: n, flat: o, ...s } = e24.config; + return { ...s, hnsw: ko({ config: n }), flat: ko({ config: o }) }; + } + let t; + Gt.isHNSW(e24.config) && e24.config.multiVector !== void 0 && (t = { aggregation: e24.config.multiVector.aggregation, enabled: true }, e24.config.multiVector.encoding !== void 0 && za.isMuvera(e24.config.multiVector.encoding) && (t.muvera = { enabled: true, ksim: e24.config.multiVector.encoding.ksim, dprojections: e24.config.multiVector.encoding.dprojections, repetitions: e24.config.multiVector.encoding.repetitions })); + let { quantizer: r, ...a } = e24.config, i = { ...a, multivector: t }; + if (r === void 0) return i; + if (se.isBQCreate(r)) { + let { type: n, ...o } = r; + return { ...i, bq: { ...o, enabled: true } }; + } + if (se.isPQCreate(r)) { + let { type: n, ...o } = r; + return { ...i, pq: { ...o, enabled: true } }; + } + if (se.isSQCreate(r)) { + let { type: n, ...o } = r; + return { ...i, sq: { ...o, enabled: true } }; + } + if (se.isRQCreate(r)) { + let { type: n, ...o } = r; + return { ...i, rq: { ...o, enabled: true } }; + } + if (se.isUncompressedCreate(r)) return { ...i, skipDefaultQuantization: true }; +}; +var Ig = (e24) => { + if (e24 === void 0) return {}; + let { vectorizeCollectionName: t, ...r } = e24; + return { ...r, vectorizeClassName: t }; +}; +var Ya = (e24) => { + let t = [], r = {}; + return (Array.isArray(e24) ? e24 : [{ ...e24, name: e24.name || "default" }]).forEach((i) => { + let n = { vectorizer: {} }; + i.vectorIndex && (n.vectorIndexConfig = ko(i.vectorIndex), n.vectorIndexType = i.vectorIndex.name); + let o = i.vectorizer.name === "text2vec-azure-openai" ? "text2vec-openai" : i.vectorizer.name; + if (t = [...t, o], n.vectorizer[o] = { properties: i.properties, ...Ig(i.vectorizer.config) }, i.name === void 0) throw new F("vectorName is required for each vectorizer when specifying more than one vectorizer"); + r[i.name] = n; + }), { vectorsConfig: r, vectorizers: t }; +}; +function ce(e24) { + return e24 != null; +} +function G(e24) { + return e24 != null; +} +var Ee = class e2 { + static _name(t) { + if (t === void 0) throw new b("Collection name was not returned by Weaviate"); + return t; + } + static bm25(t) { + if (t === void 0) throw new b("BM25 was not returned by Weaviate"); + if (!ce(t.b)) throw new b("BM25 b was not returned by Weaviate"); + if (!ce(t.k1)) throw new b("BM25 k1 was not returned by Weaviate"); + return { b: t.b, k1: t.k1 }; + } + static stopwords(t) { + if (t === void 0) throw new b("Stopwords were not returned by Weaviate"); + return { additions: t.additions ? t.additions : [], preset: t.preset ? t.preset : "none", removals: t.removals ? t.removals : [] }; + } + static generative(t) { + if (!ce(t)) return; + let r = Object.keys(t).find((a) => a.includes("generative")); + if (r !== void 0) { + if (!r) throw new b("Generative config was not returned by Weaviate"); + return { name: r, config: t[r] }; + } + } + static reranker(t) { + if (!ce(t)) return; + let r = Object.keys(t).find((a) => a.includes("reranker")); + if (r !== void 0) return { name: r, config: t[r] }; + } + static namedVectors(t) { + if (!ce(t)) throw new b("Vector config was not returned by Weaviate"); + let r = {}; + return Object.keys(t).forEach((a) => { + let i = t[a].vectorizer; + if (!ce(i)) throw new b(`Vectorizer was not returned by Weaviate for ${a} named vector`); + let n = Object.keys(i); + if (n.length !== 1) throw new b(`Expected exactly one vectorizer for ${a} named vector, got ${n.length}`); + let o = n[0], { properties: s, ...u } = i[o] || {}, { vectorizeClassName: c, ...f2 } = u || {}; + r[a] = { vectorizer: { name: o, config: { vectorizeCollectionName: c, ...f2 } }, properties: s, indexConfig: e2.vectorIndex(t[a].vectorIndexConfig, t[a].vectorIndexType), indexType: e2.vectorIndexType(t[a].vectorIndexType) }; + }), r; + } + static vectorizer(t) { + if (!ce(t)) throw new b("Schema was not returned by Weaviate"); + if (ce(t.vectorConfig)) return e2.namedVectors(t.vectorConfig); + if (!ce(t.vectorizer)) throw new b("Vectorizer was not returned by Weaviate"); + return { default: { vectorizer: t.vectorizer === "none" ? { name: "none", config: void 0 } : { name: t.vectorizer, config: t.moduleConfig ? { ...t.moduleConfig[t.vectorizer], vectorizeCollectionName: t.moduleConfig[t.vectorizer].vectorizeClassName } : void 0 }, indexConfig: e2.vectorIndex(t.vectorIndexConfig, t.vectorIndexType), indexType: e2.vectorIndexType(t.vectorIndexType) } }; + } + static invertedIndex(t) { + if (t === void 0) throw new b("Inverted index was not returned by Weaviate"); + if (!ce(t.cleanupIntervalSeconds)) throw new b("Inverted index cleanup interval was not returned by Weaviate"); + return { bm25: e2.bm25(t.bm25), cleanupIntervalSeconds: t.cleanupIntervalSeconds, stopwords: e2.stopwords(t.stopwords), stopwordPresets: t.stopwordPresets, indexNullState: t.indexNullState ? t.indexNullState : false, indexPropertyLength: t.indexPropertyLength ? t.indexPropertyLength : false, indexTimestamps: t.indexTimestamps ? t.indexTimestamps : false }; + } + static objectTTL(t) { + return t === void 0 ? { enabled: false } : { ...t, enabled: t.enabled ?? false, deleteOn: t.deleteOn == "_creationTimeUnix" ? "creationTime" : t.deleteOn == "_lastUpdateTimeUnix" ? "updateTime" : t.deleteOn, defaultTTLSeconds: t.defaultTtl, filterExpiredObjects: t.filterExpiredObjects }; + } + static multiTenancy(t) { + return t === void 0 ? { autoTenantActivation: false, autoTenantCreation: false, enabled: false } : { autoTenantActivation: t.autoTenantActivation ? t.autoTenantActivation : false, autoTenantCreation: t.autoTenantCreation ? t.autoTenantCreation : false, enabled: t.enabled ? t.enabled : false }; + } + static replication(t) { + if (t === void 0) throw new b("Replication was not returned by Weaviate"); + if (!ce(t.factor)) throw new b("Replication factor was not returned by Weaviate"); + return { factor: t.factor, asyncEnabled: t.asyncEnabled ? t.asyncEnabled : false, deletionStrategy: t.deletionStrategy ? t.deletionStrategy : "NoAutomatedResolution" }; + } + static sharding(t) { + if (t === void 0) throw new b("Sharding was not returned by Weaviate"); + if (!G(t.virtualPerPhysical)) throw new b("Sharding enabled was not returned by Weaviate"); + if (!G(t.desiredCount)) throw new b("Sharding desired count was not returned by Weaviate"); + if (!G(t.actualCount)) throw new b("Sharding actual count was not returned by Weaviate"); + if (!G(t.desiredVirtualCount)) throw new b("Sharding desired virtual count was not returned by Weaviate"); + if (!G(t.actualVirtualCount)) throw new b("Sharding actual virtual count was not returned by Weaviate"); + if (!G(t.key)) throw new b("Sharding key was not returned by Weaviate"); + if (!G(t.strategy)) throw new b("Sharding strategy was not returned by Weaviate"); + if (!G(t.function)) throw new b("Sharding function was not returned by Weaviate"); + return { virtualPerPhysical: t.virtualPerPhysical, desiredCount: t.desiredCount, actualCount: t.actualCount, desiredVirtualCount: t.desiredVirtualCount, actualVirtualCount: t.actualVirtualCount, key: t.key, strategy: t.strategy, function: t.function }; + } + static pqEncoder(t) { + if (t === void 0) throw new b("PQ encoder was not returned by Weaviate"); + if (!G(t.type)) throw new b("PQ encoder name was not returned by Weaviate"); + if (!G(t.distribution)) throw new b("PQ encoder distribution was not returned by Weaviate"); + return { type: t.type, distribution: t.distribution }; + } + static pq(t) { + if (t === void 0) throw new b("PQ was not returned by Weaviate"); + if (!G(t.enabled)) throw new b("PQ enabled was not returned by Weaviate"); + if (t.enabled !== false) { + if (!G(t.bitCompression)) throw new b("PQ bit compression was not returned by Weaviate"); + if (!G(t.segments)) throw new b("PQ segments was not returned by Weaviate"); + if (!G(t.trainingLimit)) throw new b("PQ training limit was not returned by Weaviate"); + if (!G(t.centroids)) throw new b("PQ centroids was not returned by Weaviate"); + if (!G(t.encoder)) throw new b("PQ encoder was not returned by Weaviate"); + return { bitCompression: t.bitCompression, segments: t.segments, centroids: t.centroids, trainingLimit: t.trainingLimit, encoder: e2.pqEncoder(t.encoder), type: "pq" }; + } + } + static vectorIndexHNSW(t) { + if (t === void 0) throw new b("Vector index was not returned by Weaviate"); + if (!G(t.cleanupIntervalSeconds)) throw new b("Vector index cleanup interval was not returned by Weaviate"); + if (!G(t.distance)) throw new b("Vector index distance was not returned by Weaviate"); + if (!G(t.dynamicEfMin)) throw new b("Vector index dynamic ef min was not returned by Weaviate"); + if (!G(t.dynamicEfMax)) throw new b("Vector index dynamic ef max was not returned by Weaviate"); + if (!G(t.dynamicEfFactor)) throw new b("Vector index dynamic ef factor was not returned by Weaviate"); + if (!G(t.ef)) throw new b("Vector index ef was not returned by Weaviate"); + if (!G(t.efConstruction)) throw new b("Vector index ef construction was not returned by Weaviate"); + if (!G(t.flatSearchCutoff)) throw new b("Vector index flat search cut off was not returned by Weaviate"); + if (!G(t.maxConnections)) throw new b("Vector index max connections was not returned by Weaviate"); + if (!G(t.skip)) throw new b("Vector index skip was not returned by Weaviate"); + if (!G(t.vectorCacheMaxObjects)) throw new b("Vector index vector cache max objects was not returned by Weaviate"); + let r; + return G(t.pq) && t.pq.enabled === true ? r = e2.pq(t.pq) : G(t.bq) && t.bq.enabled === true ? r = e2.bq(t.bq) : G(t.rq) && t.rq.enabled === true ? r = e2.rq(t.rq) : G(t.sq) && t.sq.enabled === true ? r = e2.sq(t.sq) : r = void 0, { cleanupIntervalSeconds: t.cleanupIntervalSeconds, distance: t.distance, dynamicEfMin: t.dynamicEfMin, dynamicEfMax: t.dynamicEfMax, dynamicEfFactor: t.dynamicEfFactor, ef: t.ef, efConstruction: t.efConstruction, filterStrategy: G(t.filterStrategy) ? t.filterStrategy : "sweeping", flatSearchCutoff: t.flatSearchCutoff, maxConnections: t.maxConnections, multiVector: G(t.multivector) ? e2.multiVector(t.multivector) : void 0, quantizer: r, skip: t.skip, vectorCacheMaxObjects: t.vectorCacheMaxObjects, type: "hnsw" }; + } + static multiVector(t) { + if (!G(t.enabled)) throw new b("Multi vector enabled was not returned by Weaviate"); + if (t.enabled === false) return; + if (!G(t.aggregation)) throw new b("Multi vector aggregation was not returned by Weaviate"); + let r; + return G(t.muvera) && (r = t.muvera.enabled ? { type: "muvera", ...t.muvera } : void 0), { aggregation: t.aggregation, encoding: r }; + } + static bq(t) { + if (t === void 0) throw new b("BQ was not returned by Weaviate"); + if (!G(t.enabled)) throw new b("BQ enabled was not returned by Weaviate"); + if (t.enabled === false) return; + let r = t.cache === void 0 ? false : t.cache, a = t.rescoreLimit === void 0 ? 1e3 : t.rescoreLimit; + return { cache: r, rescoreLimit: a, type: "bq" }; + } + static rq(t) { + if (t === void 0) throw new b("RQ was not returned by Weaviate"); + if (!G(t.enabled)) throw new b("RQ enabled was not returned by Weaviate"); + if (t.enabled === false) return; + let r = t.bits === void 0 ? 6 : t.bits, a = t.rescoreLimit === void 0 ? 20 : t.rescoreLimit; + return { bits: r, rescoreLimit: a, type: "rq" }; + } + static sq(t) { + if (t === void 0) throw new b("SQ was not returned by Weaviate"); + if (!G(t.enabled)) throw new b("SQ enabled was not returned by Weaviate"); + if (t.enabled === false) return; + let r = t.rescoreLimit === void 0 ? 1e3 : t.rescoreLimit, a = t.trainingLimit === void 0 ? 1e5 : t.trainingLimit; + return { rescoreLimit: r, trainingLimit: a, type: "sq" }; + } + static vectorIndexHFresh(t) { + if (t === void 0) throw new b("Vector index was not returned by Weaviate"); + if (!G(t.distance)) throw new b("Vector index distance was not returned by Weaviate"); + if (!G(t.maxPostingSizeKB)) throw new b("Vector index maxPostingSizeKb was not returned by Weaviate"); + if (!G(t.searchProbe)) throw new b("Vector index searchProbe was not returned by Weaviate"); + if (!G(t.replicas)) throw new b("Vector index replicas was not returned by Weaviate"); + if (!G(t.rq)) throw new b("Vector index rq was not returned by Weaviate"); + return { distance: t.distance, maxPostingSizeKb: t.maxPostingSizeKB, searchProbe: t.searchProbe, replicas: t.replicas, quantizer: e2.rq(t.rq), type: "hfresh" }; + } + static vectorIndexFlat(t) { + if (t === void 0) throw new b("Vector index was not returned by Weaviate"); + if (!G(t.vectorCacheMaxObjects)) throw new b("Vector index vector cache max objects was not returned by Weaviate"); + if (!G(t.distance)) throw new b("Vector index distance was not returned by Weaviate"); + let r; + return G(t.bq) && t.bq.enabled === true ? r = e2.bq(t.bq) : G(t.rq) && t.rq.enabled === true ? r = e2.rq(t.rq) : r = void 0, { vectorCacheMaxObjects: t.vectorCacheMaxObjects, distance: t.distance, quantizer: r, type: "flat" }; + } + static vectorIndexDynamic(t) { + if (t === void 0) throw new b("Vector index was not returned by Weaviate"); + if (!G(t.threshold)) throw new b("Vector index threshold was not returned by Weaviate"); + if (!G(t.distance)) throw new b("Vector index distance was not returned by Weaviate"); + if (!G(t.hnsw)) throw new b("Vector index hnsw was not returned by Weaviate"); + if (!G(t.flat)) throw new b("Vector index flat was not returned by Weaviate"); + return { distance: t.distance, hnsw: e2.vectorIndexHNSW(t.hnsw), flat: e2.vectorIndexFlat(t.flat), threshold: t.threshold, type: "dynamic" }; + } + static vectorIndex(t, r) { + return r === "hnsw" ? e2.vectorIndexHNSW(t) : r === "hfresh" ? e2.vectorIndexHFresh(t) : r === "flat" ? e2.vectorIndexFlat(t) : r === "dynamic" ? e2.vectorIndexDynamic(t) : t; + } + static vectorIndexType(t) { + if (!ce(t)) throw new b("Vector index type was not returned by Weaviate"); + return t; + } + static properties(t) { + if (t === void 0) throw new b("Properties were not returned by Weaviate"); + return t === null ? [] : t.filter((r) => { + if (!ce(r.dataType)) throw new b("Property data type was not returned by Weaviate"); + return r.dataType[0][0].toLowerCase() === r.dataType[0][0]; + }).map((r) => { + if (!ce(r.name)) throw new b("Property name was not returned by Weaviate"); + if (!ce(r.dataType)) throw new b("Property data type was not returned by Weaviate"); + return { name: r.name, dataType: r.dataType[0], description: r.description, indexFilterable: r.indexFilterable ? r.indexFilterable : false, indexInverted: r.indexInverted ? r.indexInverted : false, indexRangeFilters: r.indexRangeFilters ? r.indexRangeFilters : false, indexSearchable: r.indexSearchable ? r.indexSearchable : false, vectorizerConfig: r.moduleConfig ? "none" in r.moduleConfig ? void 0 : r.moduleConfig : void 0, nestedProperties: r.nestedProperties ? e2.properties(r.nestedProperties) : void 0, tokenization: r.tokenization ? r.tokenization : "none", textAnalyzer: kg(r.textAnalyzer) }; + }); + } + static references(t) { + if (t === void 0) throw new b("Properties were not returned by Weaviate"); + return t === null ? [] : t.filter((r) => { + if (!ce(r.dataType)) throw new b("Reference data type was not returned by Weaviate"); + return r.dataType[0][0].toLowerCase() !== r.dataType[0][0]; + }).map((r) => { + if (!ce(r.name)) throw new b("Reference name was not returned by Weaviate"); + if (!ce(r.dataType)) throw new b("Reference data type was not returned by Weaviate"); + return { name: r.name, description: r.description, targetCollections: r.dataType }; + }); + } +}; +var _g = (e24, t, r, a) => { + let i = new st(e24).withClassName(t).do; + return { addProperty: (n) => new Kt(e24).withClassName(t).withProperty(Qa(n, [])).do().then(() => { + }), addReference: (n) => new Kt(e24).withClassName(t).withProperty(Ka(n)).do().then(() => { + }), addVector: async (n) => { + let { vectorsConfig: o } = Ya(n), { supports: s } = await r.supportsServerSideDefaultVectorIndexType(); + if (!s && o) for (let u of Object.values(o)) u.vectorIndexType || (u.vectorIndexType = "hnsw"); + return new ua(e24).withClassName(t).withVectors(o).do(); + }, get: () => i().then(da), getShards: () => { + let n = new tn(e24).withClassName(t); + return a && (n = n.withTenant(a)), n.do().then((o) => o.map((s) => { + if (s.name === void 0) throw new b("Shard name was not returned by Weaviate"); + if (s.status === void 0) throw new b("Shard status was not returned by Weaviate"); + if (s.vectorQueueSize === void 0) throw new b("Shard vector queue size was not returned by Weaviate"); + return { name: s.name, status: s.status, vectorQueueSize: s.vectorQueueSize }; + })); + }, updateShards: async function(n, o) { + let s; + return o === void 0 ? s = await this.getShards().then((u) => u.map((c) => c.name)) : typeof o == "string" ? s = [o] : s = o, Promise.all(s.map((u) => new xr(e24).withClassName(t).withShardName(u).withStatus(n).do())).then(() => this.getShards()); + }, update: (n) => i().then((o) => Ha.schema(o, n)).then((o) => new en(e24).withClass(o).do()).then(() => { + }), dropInvertedIndex: (n, o) => e24.delete(`/schema/${t}/properties/${n}/index/${o}`, null) }; +}; +var hu = _g; +var _o = class { + static isHNSW(t) { + return t?.type === "hnsw"; + } + static isFlat(t) { + return t?.type === "flat"; + } + static isDynamic(t) { + return t?.type === "dynamic"; + } +}; +var Bo = class { + static isPQ(t) { + return t?.type === "pq"; + } + static isBQ(t) { + return t?.type === "bq"; + } + static isSQ(t) { + return t?.type === "sq"; + } + static isRQ(t) { + return t?.type === "rq"; + } +}; +var yu = { quantizer: Bo, vectorIndex: _o }; +d(); +d(); +var Tu = { anthropic(e24) { + return { name: "generative-anthropic", config: e24 }; +}, contextualai: (e24) => ({ name: "generative-contextualai", config: e24 ? { model: e24.model, temperature: e24.temperature, topP: e24.topP, maxNewTokens: e24.maxNewTokens, systemPrompt: e24.systemPrompt, avoidCommentary: e24.avoidCommentary } : void 0 }), anyscale(e24) { + return { name: "generative-anyscale", config: e24 }; +}, aws(e24) { + return { name: "generative-aws", config: e24 }; +}, azureOpenAI: (e24) => ({ name: "generative-openai", config: { deploymentId: e24.deploymentId, resourceName: e24.resourceName, baseURL: e24.baseURL, frequencyPenaltyProperty: e24.frequencyPenalty, maxTokensProperty: e24.maxTokens, presencePenaltyProperty: e24.presencePenalty, temperatureProperty: e24.temperature, topPProperty: e24.topP } }), cohere: (e24) => ({ name: "generative-cohere", config: e24 ? { kProperty: e24.k, maxTokensProperty: e24.maxTokens, model: e24.model, returnLikelihoodsProperty: e24.returnLikelihoods, stopSequencesProperty: e24.stopSequences, temperatureProperty: e24.temperature } : void 0 }), databricks: (e24) => ({ name: "generative-databricks", config: e24 }), friendliai(e24) { + return { name: "generative-friendliai", config: e24 }; +}, mistral(e24) { + return { name: "generative-mistral", config: e24 }; +}, nvidia(e24) { + return { name: "generative-nvidia", config: e24 }; +}, ollama(e24) { + return { name: "generative-ollama", config: e24 }; +}, openAI: (e24) => ({ name: "generative-openai", config: e24 ? { baseURL: e24.baseURL, frequencyPenaltyProperty: e24.frequencyPenalty, maxTokensProperty: e24.maxTokens, model: e24.model, presencePenaltyProperty: e24.presencePenalty, temperatureProperty: e24.temperature, topPProperty: e24.topP } : void 0 }), palm: (e24) => (console.warn("The `generative-palm` module is deprecated. Use `generative-google` instead."), { name: "generative-palm", config: e24 ? { ...e24, ...e24?.modelId || e24?.model ? { modelId: e24?.model ?? e24?.model } : void 0 } : void 0 }), google: (e24) => ({ name: "generative-google", config: e24 ? { ...e24, ...e24?.modelId || e24?.model ? { modelId: e24?.model ?? e24?.model } : void 0 } : void 0 }), xai: (e24) => ({ name: "generative-xai", config: e24 }) }; +d(); +var vu = { cohere: (e24) => ({ name: "reranker-cohere", config: e24 }), contextualai: (e24) => ({ name: "reranker-contextualai", config: e24 }), jinaai: (e24) => ({ name: "reranker-jinaai", config: e24 }), nvidia: (e24) => ({ name: "reranker-nvidia", config: e24 }), transformers: () => ({ name: "reranker-transformers", config: {} }), voyageAI: (e24) => ({ name: "reranker-voyageai", config: e24 }) }; +d(); +var Za = (e24) => e24 && typeof e24 == "object" && "name" in e24 && "config" in e24; +var Rt = { flat: (e24) => { + let { distanceMetric: t, vectorCacheMaxObjects: r, quantizer: a } = e24 || {}; + return { name: "flat", config: { distance: t, vectorCacheMaxObjects: r, quantizer: a, type: "flat" } }; +}, hnsw: (e24) => { + let { distanceMetric: t, ...r } = e24 || {}; + return { name: "hnsw", config: r ? { ...r, distance: t, type: "hnsw" } : void 0 }; +}, hfresh: (e24) => { + let { distanceMetric: t, ...r } = e24 || {}; + return { name: "hfresh", config: r ? { ...r, distance: t, type: "hfresh" } : void 0 }; +}, dynamic: (e24) => ({ name: "dynamic", config: e24 ? { distance: e24.distanceMetric, threshold: e24.threshold, hnsw: Za(e24.hnsw) ? e24.hnsw.config : Rt.hnsw(e24.hnsw).config, flat: Za(e24.flat) ? e24.flat.config : Rt.flat(e24.flat).config, type: "dynamic" } : void 0 }), multiVector: { encoding: { muvera: (e24) => ({ ksim: e24?.ksim, dprojections: e24?.dprojections, repetitions: e24?.repetitions, type: "muvera" }) }, multiVector: (e24) => ({ aggregation: e24?.aggregation, encoding: e24?.encoding }) }, quantizer: { none: () => ({ type: "none" }), bq: (e24) => ({ cache: e24?.cache, rescoreLimit: e24?.rescoreLimit, type: "bq" }), rq: (e24) => ({ bits: e24?.bits, rescoreLimit: e24?.rescoreLimit, type: "rq" }), pq: (e24) => ({ bitCompression: e24?.bitCompression, centroids: e24?.centroids, encoder: e24?.encoder ? { distribution: e24.encoder.distribution, type: e24.encoder.type } : void 0, segments: e24?.segments, trainingLimit: e24?.trainingLimit, type: "pq" }), sq: (e24) => ({ rescoreLimit: e24?.rescoreLimit, trainingLimit: e24?.trainingLimit, type: "sq" }) } }; +var Xa = { flat: (e24) => ({ name: "flat", config: e24 }), hfresh: (e24) => ({ name: "hfresh", config: e24 }), hnsw: (e24) => ({ name: "hnsw", config: e24 }), dynamic: (e24) => ({ name: "dynamic", config: { threshold: e24.threshold, hnsw: e24.hnsw ? Za(e24.hnsw) ? e24.hnsw.config : Xa.hnsw({ ...e24.hnsw }).config : void 0, flat: e24.flat ? Za(e24.flat) ? e24.flat.config : Xa.flat({ ...e24.flat }).config : void 0, type: "dynamic" } }), quantizer: { bq: (e24) => ({ ...e24, type: "bq" }), rq: (e24) => ({ ...e24, type: "rq" }), pq: (e24) => { + let { pqEncoderDistribution: t, pqEncoderType: r, ...a } = e24 || {}; + return { ...a, encoder: t || r ? { distribution: t, type: r } : void 0, type: "pq" }; +}, sq: (e24) => ({ ...e24, type: "sq" }) } }; +d(); +var Bg = (e24) => { + let t = e24?.config?.config; + if (e24?.encoding || e24?.multiVec) { + if (t && !Gt.isHNSW(t)) throw new F("Cannot set multi-vector encoding on a non-HNSW index"); + t = t ? { ...t, multiVector: t.multiVector ? { ...t.multiVector, encoding: t.multiVector.encoding ? { ...t.multiVector.encoding, ...e24.encoding } : e24.encoding } : Rt.multiVector.multiVector({ encoding: e24.encoding }) } : { multiVector: Rt.multiVector.multiVector({ encoding: e24.encoding }), type: "hnsw" }; + } + return e24?.quantizer && (t || (t = Rt.hnsw({ quantizer: e24.quantizer }).config), Gt.isDynamic(t) ? (t.hnsw = t.hnsw ? { ...t.hnsw, quantizer: e24.quantizer } : Rt.hnsw({ quantizer: e24.quantizer }).config, t.flat = t.flat ? { ...t.flat, quantizer: e24.quantizer } : Rt.flat({ quantizer: e24.quantizer }).config) : Gt.isHFresh(t) || (t.quantizer = e24.quantizer)), { name: e24?.config?.name || "hnsw", config: t }; +}; +var L = (e24, t, r) => { + let a = t?.vectorIndexConfig !== void 0 || t?.quantizer !== void 0 || t?.encoding !== void 0 || !!r; + return { name: e24, properties: t?.sourceProperties, vectorIndex: a ? Bg({ config: t?.vectorIndexConfig, encoding: t?.encoding, quantizer: t?.quantizer, multiVec: r }) : void 0, vectorizer: t?.vectorizerConfig ? t.vectorizerConfig : { name: "none", config: void 0 } }; +}; +var Q = (e24) => typeof e24 == "string" ? { name: e24 } : e24; +var K = (e24, t, r) => (r !== void 0 && r.length > 0 && (e24[t] = r.filter((a) => a.weight !== void 0).map((a) => a.weight), e24[t].length === 0 && delete e24[t]), e24); +var Z = { none: (e24) => { + let { name: t, quantizer: r, vectorIndexConfig: a } = e24 || {}; + return L(t, { quantizer: r, vectorIndexConfig: a }); +}, selfProvided: (e24) => Z.none(e24), img2VecNeural: (e24) => { + let { name: t, quantizer: r, vectorIndexConfig: a, ...i } = e24; + return L(t, { quantizer: r, vectorIndexConfig: a, vectorizerConfig: { name: "img2vec-neural", config: i } }); +}, multi2VecBind: (e24) => { + let { name: t, quantizer: r, vectorIndexConfig: a, ...i } = e24 || {}, n = i.audioFields?.map(Q), o = i.depthFields?.map(Q), s = i.imageFields?.map(Q), u = i.IMUFields?.map(Q), c = i.textFields?.map(Q), f2 = i.thermalFields?.map(Q), y = i.videoFields?.map(Q), P = {}; + return P = K(P, "audioFields", n), P = K(P, "depthFields", o), P = K(P, "imageFields", s), P = K(P, "IMUFields", u), P = K(P, "textFields", c), P = K(P, "thermalFields", f2), P = K(P, "videoFields", y), L(t, { quantizer: r, vectorIndexConfig: a, vectorizerConfig: { name: "multi2vec-bind", config: Object.keys(i).length === 0 ? void 0 : { ...i, audioFields: n?.map((V) => V.name), depthFields: o?.map((V) => V.name), imageFields: s?.map((V) => V.name), IMUFields: u?.map((V) => V.name), textFields: c?.map((V) => V.name), thermalFields: f2?.map((V) => V.name), videoFields: y?.map((V) => V.name), weights: Object.keys(P).length === 0 ? void 0 : P } } }); +}, multi2VecCohere: (e24) => { + let { name: t, quantizer: r, vectorIndexConfig: a, ...i } = e24 || {}, n = i.imageFields?.map(Q), o = i.textFields?.map(Q), s = {}; + return s = K(s, "imageFields", n), s = K(s, "textFields", o), L(t, { quantizer: r, vectorIndexConfig: a, vectorizerConfig: { name: "multi2vec-cohere", config: Object.keys(i).length === 0 ? void 0 : { ...i, imageFields: n?.map((u) => u.name), textFields: o?.map((u) => u.name), weights: Object.keys(s).length === 0 ? void 0 : s } } }); +}, multi2VecClip: (e24) => { + let { name: t, quantizer: r, vectorIndexConfig: a, ...i } = e24 || {}, n = i.imageFields?.map(Q), o = i.textFields?.map(Q), s = {}; + return s = K(s, "imageFields", n), s = K(s, "textFields", o), L(t, { quantizer: r, vectorIndexConfig: a, vectorizerConfig: { name: "multi2vec-clip", config: Object.keys(i).length === 0 ? void 0 : { ...i, imageFields: n?.map((u) => u.name), textFields: o?.map((u) => u.name), weights: Object.keys(s).length === 0 ? void 0 : s } } }); +}, multi2VecJinaAI: (e24) => { + let { name: t, quantizer: r, vectorIndexConfig: a, ...i } = e24 || {}, n = i.imageFields?.map(Q), o = i.textFields?.map(Q), s = {}; + return s = K(s, "imageFields", n), s = K(s, "textFields", o), L(t, { quantizer: r, vectorIndexConfig: a, vectorizerConfig: { name: "multi2vec-jinaai", config: Object.keys(i).length === 0 ? void 0 : { ...i, imageFields: n?.map((u) => u.name), textFields: o?.map((u) => u.name), weights: Object.keys(s).length === 0 ? void 0 : s } } }); +}, multi2VecPalm: (e24) => { + console.warn("The `multi2vec-palm` vectorizer is deprecated. Use `multi2vec-google` instead."); + let { name: t, quantizer: r, vectorIndexConfig: a, ...i } = e24, n = i.imageFields?.map(Q), o = i.textFields?.map(Q), s = i.videoFields?.map(Q), u = {}; + return u = K(u, "imageFields", n), u = K(u, "textFields", o), u = K(u, "videoFields", s), L(t, { quantizer: r, vectorIndexConfig: a, vectorizerConfig: { name: "multi2vec-palm", config: { ...i, imageFields: n?.map((c) => c.name), textFields: o?.map((c) => c.name), videoFields: s?.map((c) => c.name), weights: Object.keys(u).length === 0 ? void 0 : u } } }); +}, multi2VecGoogle: (e24) => { + let { name: t, quantizer: r, vectorIndexConfig: a, ...i } = e24, n = i.imageFields?.map(Q), o = i.textFields?.map(Q), s = i.videoFields?.map(Q), u = {}; + return u = K(u, "imageFields", n), u = K(u, "textFields", o), u = K(u, "videoFields", s), L(t, { quantizer: r, vectorIndexConfig: a, vectorizerConfig: { name: "multi2vec-google", config: { ...i, imageFields: n?.map((c) => c.name), textFields: o?.map((c) => c.name), videoFields: s?.map((c) => c.name), weights: Object.keys(u).length === 0 ? void 0 : u } } }); +}, multi2VecVoyageAI: (e24) => { + let { name: t, quantizer: r, vectorIndexConfig: a, ...i } = e24 || {}, n = i.imageFields?.map(Q), o = i.textFields?.map(Q), s = i.videoFields?.map(Q), u = {}; + return u = K(u, "imageFields", n), u = K(u, "textFields", o), u = K(u, "videoFields", s), L(t, { quantizer: r, vectorIndexConfig: a, vectorizerConfig: { name: "multi2vec-voyageai", config: Object.keys(i).length === 0 ? void 0 : { ...i, imageFields: n?.map((c) => c.name), textFields: o?.map((c) => c.name), videoFields: s?.map((c) => c.name), weights: Object.keys(u).length === 0 ? void 0 : u } } }); +}, ref2VecCentroid: (e24) => { + let { name: t, quantizer: r, vectorIndexConfig: a, ...i } = e24; + return L(t, { quantizer: r, vectorIndexConfig: a, vectorizerConfig: { name: "ref2vec-centroid", config: i } }); +}, text2VecAWS: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-aws", config: n } }); +}, text2VecAzureOpenAI: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-azure-openai", config: n } }); +}, text2VecCohere: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-cohere", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecContextionary: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-contextionary", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecDatabricks: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-databricks", config: n } }); +}, text2VecGPT4All: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-gpt4all", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecHuggingFace: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-huggingface", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecJinaAI: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-jinaai", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecNvidia: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-nvidia", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecDigitalOcean: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-digitalocean", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecMistral: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-mistral", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecOpenAI: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-openai", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecOllama: (e24) => { + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-ollama", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecPalm: (e24) => { + console.warn("The `text2VecPalm` vectorizer is deprecated. Use `text2VecGoogle` instead."); + let { name: t, quantizer: r, sourceProperties: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: r, sourceProperties: a, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-palm", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecGoogle: (e24) => { + let { name: t, sourceProperties: r, quantizer: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: a, sourceProperties: r, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-google", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecTransformers: (e24) => { + let { name: t, sourceProperties: r, quantizer: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: a, sourceProperties: r, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-transformers", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecVoyageAI: (e24) => { + let { name: t, sourceProperties: r, quantizer: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { quantizer: a, sourceProperties: r, vectorIndexConfig: i, vectorizerConfig: { name: "text2vec-voyageai", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecWeaviate: (e24) => { + let { name: t, sourceProperties: r, quantizer: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { sourceProperties: r, vectorIndexConfig: i, quantizer: a, vectorizerConfig: { name: "text2vec-weaviate", config: Object.keys(n).length === 0 ? void 0 : n } }); +}, text2VecModel2Vec: (e24) => { + let { name: t, sourceProperties: r, quantizer: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { sourceProperties: r, vectorIndexConfig: i, quantizer: a, vectorizerConfig: { name: "text2vec-model2vec", config: Object.keys(n).length === 0 ? void 0 : n } }); +} }; +var Gg = { text2VecWeaviate: (e24) => Z.text2VecWeaviate(e24), text2VecContextionary: (e24) => Z.text2VecContextionary(e24), text2VecNvidia: (e24) => Z.text2VecNvidia(e24), text2VecTransformers: (e24) => Z.text2VecTransformers(e24), text2VecVoyageAI: (e24) => Z.text2VecVoyageAI(e24), text2VecGoogle: (e24) => Z.text2VecGoogle(e24 ? { ...e24, ...e24?.modelId || e24?.model ? { modelId: e24?.modelId || e24?.model } : void 0 } : void 0), text2VecOpenAI: (e24) => Z.text2VecOpenAI(e24), text2VecOllama: (e24) => Z.text2VecOllama(e24), text2VecDigitalOcean: (e24) => Z.text2VecDigitalOcean(e24), text2VecMistral: (e24) => Z.text2VecMistral(e24), text2VecJinaAI: (e24) => Z.text2VecJinaAI(e24), text2VecHuggingFace: (e24) => Z.text2VecHuggingFace(e24), text2VecGPT4All: (e24) => Z.text2VecGPT4All(e24), text2VecDatabricks: (e24) => Z.text2VecDatabricks(e24), text2VecCohere: (e24) => Z.text2VecCohere(e24), text2VecAzureOpenAI: (e24) => Z.text2VecAzureOpenAI(e24), text2VecAWS: (e24) => Z.text2VecAWS(e24), multi2VecClip: (e24) => Z.multi2VecClip(e24), multi2VecCohere: (e24) => Z.multi2VecCohere(e24), multi2VecBind: (e24) => Z.multi2VecBind(e24), multi2VecJinaAI: (e24) => Z.multi2VecJinaAI(e24), multi2VecGoogle: (e24) => Z.multi2VecGoogle({ ...e24, modelId: e24.modelId || e24.model }), multi2VecVoyageAI: (e24) => Z.multi2VecVoyageAI(e24) }; +var bu = Z; +var xu = (({ text2VecPalm: e24, multi2VecPalm: t, ...r }) => ({ ...r, ...Gg, multi2VecNvidia: (a) => { + let { name: i, quantizer: n, vectorIndexConfig: o, outputEncoding: s, ...u } = a || {}, c = u.imageFields?.map(Q), f2 = u.textFields?.map(Q), y = {}; + return y = K(y, "imageFields", c), y = K(y, "textFields", f2), L(i, { quantizer: n, vectorIndexConfig: o, vectorizerConfig: { name: "multi2vec-nvidia", config: { ...u, output_encoding: s, imageFields: c?.map((P) => P.name), textFields: f2?.map((P) => P.name), weights: Object.keys(y).length === 0 ? void 0 : y } } }); +}, text2VecGoogleAiStudio: (a) => { + let { name: i, sourceProperties: n, quantizer: o, vectorIndexConfig: s, ...u } = a || {}; + return L(i, { quantizer: o, sourceProperties: n, vectorIndexConfig: s, vectorizerConfig: { name: "text2vec-google", config: { apiEndpoint: "generativelanguage.googleapis.com", ...u } } }); +}, text2VecGoogleGemini: (a) => { + let { name: i, sourceProperties: n, quantizer: o, vectorIndexConfig: s, ...u } = a || {}; + return L(i, { quantizer: o, sourceProperties: n, vectorIndexConfig: s, vectorizerConfig: { name: "text2vec-google", config: { apiEndpoint: "generativelanguage.googleapis.com", ...u } } }); +}, multi2VecGoogleGemini: (a) => { + let { name: i, quantizer: n, vectorIndexConfig: o, ...s } = a || {}, u = s.imageFields?.map(Q), c = s.textFields?.map(Q), f2 = s.videoFields?.map(Q), y = {}; + return y = K(y, "imageFields", u), y = K(y, "textFields", c), y = K(y, "videoFields", f2), L(i, { quantizer: n, vectorIndexConfig: o, vectorizerConfig: { name: "multi2vec-google", config: { ...s, apiEndpoint: "generativelanguage.googleapis.com", imageFields: u?.map((P) => P.name), textFields: c?.map((P) => P.name), videoFields: f2?.map((P) => P.name), weights: Object.keys(y).length === 0 ? void 0 : y } } }); +}, text2VecMorph: (a) => { + let { name: i, quantizer: n, sourceProperties: o, vectorIndexConfig: s, ...u } = a || {}; + return L(i, { quantizer: n, sourceProperties: o, vectorIndexConfig: s, vectorizerConfig: { name: "text2vec-morph", config: Object.keys(u).length === 0 ? void 0 : u } }); +} }))(Z); +var Cu = { selfProvided: (e24) => { + let { name: t, encoding: r, quantizer: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { encoding: r, quantizer: a, vectorIndexConfig: i, vectorizerConfig: { name: "none", config: Object.keys(n).length === 0 ? {} : n } }, true); +}, text2VecJinaAI: (e24) => { + let { name: t, encoding: r, sourceProperties: a, quantizer: i, vectorIndexConfig: n, ...o } = e24 || {}; + return L(t, { encoding: r, quantizer: i, sourceProperties: a, vectorIndexConfig: n, vectorizerConfig: { name: "text2multivec-jinaai", config: Object.keys(o).length === 0 ? void 0 : o } }, true); +}, multi2VecJinaAI: (e24) => { + let { name: t, encoding: r, quantizer: a, vectorIndexConfig: i, ...n } = e24 || {}; + return L(t, { encoding: r, quantizer: a, vectorIndexConfig: i, vectorizerConfig: { name: "multi2multivec-jinaai", config: n } }); +}, multi2VecWeaviate: (e24) => { + let { name: t, encoding: r, quantizer: a, vectorIndexConfig: i, imageField: n, ...o } = e24; + return L(t, { encoding: r, quantizer: a, vectorIndexConfig: i, vectorizerConfig: { name: "multi2multivec-weaviate", config: { ...o, imageFields: [n] } } }); +} }; +var wg = { INT: "int", INT_ARRAY: "int[]", NUMBER: "number", NUMBER_ARRAY: "number[]", TEXT: "text", TEXT_ARRAY: "text[]", UUID: "uuid", UUID_ARRAY: "uuid[]", BOOLEAN: "boolean", BOOLEAN_ARRAY: "boolean[]", DATE: "date", DATE_ARRAY: "date[]", OBJECT: "object", OBJECT_ARRAY: "object[]", BLOB: "blob", BLOBHASH: "blobHash", GEO_COORDINATES: "geoCoordinates", PHONE_NUMBER: "phoneNumber" }; +var Mg = { WORD: "word", LOWERCASE: "lowercase", WHITESPACE: "whitespace", FIELD: "field", TRIGRAM: "trigram", GSE: "gse", KAGOME_KR: "kagome_kr" }; +var Eg = { COSINE: "cosine", DOT: "dot", HAMMING: "hamming", L2_SQUARED: "l2-squared" }; +var ja = { generative: Tu, multiVectors: Cu, reranker: vu, vectorizer: bu, vectors: xu, vectorIndex: Rt, dataType: wg, tokenization: Mg, vectorDistances: Eg, invertedIndex: (e24) => ({ bm25: e24.bm25b || e24.bm25k1 ? { b: e24.bm25b, k1: e24.bm25k1 } : void 0, cleanupIntervalSeconds: e24.cleanupIntervalSeconds, indexTimestamps: e24.indexTimestamps, indexPropertyLength: e24.indexPropertyLength, indexNullState: e24.indexNullState, stopwords: e24.stopwordsAdditions || e24.stopwordsRemovals || e24.stopwordsPreset ? { preset: e24.stopwordsPreset, additions: e24.stopwordsAdditions, removals: e24.stopwordsRemovals } : void 0, stopwordPresets: e24.stopwordPresets }), objectTTL: { deleteByCreationTime: (e24) => ({ enabled: true, deleteOn: "_creationTimeUnix", ...e24 }), deleteByUpdateTime: (e24) => ({ enabled: true, deleteOn: "_lastUpdateTimeUnix", ...e24 }), deleteByDateProperty: (e24) => ({ enabled: true, deleteOn: e24.property, ...e24 }) }, multiTenancy: (e24) => e24 ? { autoTenantActivation: $a(e24.autoTenantActivation, false), autoTenantCreation: $a(e24.autoTenantCreation, false), enabled: $a(e24.enabled, true) } : { autoTenantActivation: false, autoTenantCreation: false, enabled: true }, replication: (e24) => ({ asyncEnabled: e24.asyncEnabled, deletionStrategy: e24.deletionStrategy, factor: e24.factor, asyncConfig: e24.asyncConfig }), sharding: (e24) => ({ virtualPerPhysical: e24.virtualPerPhysical, desiredCount: e24.desiredCount, desiredVirtualCount: e24.desiredVirtualCount }) }; +var Pu = { vectorIndex: Xa, invertedIndex: (e24) => ({ bm25: e24.bm25b || e24.bm25k1 ? { b: e24.bm25b, k1: e24.bm25k1 } : void 0, cleanupIntervalSeconds: e24.cleanupIntervalSeconds, stopwords: e24.stopwordsAdditions || e24.stopwordsRemovals || e24.stopwordsPreset ? { preset: e24.stopwordsPreset, additions: e24.stopwordsAdditions, removals: e24.stopwordsRemovals } : void 0, stopwordPresets: e24.stopwordPresets }), vectorizer: { update: (e24) => ({ name: e24?.name, vectorIndex: e24.vectorIndexConfig }) }, vectors: { update: (e24) => ({ name: e24?.name, vectorIndex: e24.vectorIndexConfig }) }, replication: (e24) => ({ asyncEnabled: e24.asyncEnabled, deletionStrategy: e24.deletionStrategy, factor: e24.factor, asyncConfig: e24.asyncConfig }), multiTenancy: (e24) => ({ autoTenantActivation: e24.autoTenantActivation, autoTenantCreation: e24.autoTenantCreation }), objectTTL: { disable: () => ({ enabled: false }), deleteByCreationTime: (e24) => ({ deleteOn: "_creationTimeUnix", ...e24 }), deleteByUpdateTime: (e24) => ({ deleteOn: "_lastUpdateTimeUnix", ...e24 }), deleteByDateProperty: (e24) => ({ deleteOn: e24.propertyName, ...e24 }) }, generative: ja.generative, reranker: ja.reranker }; +d(); +d(); +d(); +var k = ze(Ke()); +d(); +var Ue = ze(Ke()); +function Zo(e24) { + switch (e24) { + case 0: + case "NULL_VALUE": + return 0; + case -1: + case "UNRECOGNIZED": + default: + return -1; + } +} +function Xo(e24) { + switch (e24) { + case 0: + return "NULL_VALUE"; + case -1: + default: + return "UNRECOGNIZED"; + } +} +function Ho() { + return { fields: {} }; +} +var ye = { encode(e24, t = Ue.default.Writer.create()) { + return Object.entries(e24.fields).forEach(([r, a]) => { + a !== void 0 && Yo.encode({ key: r, value: a }, t.uint32(10).fork()).ldelim(); + }), t; +}, decode(e24, t) { + let r = e24 instanceof Ue.default.Reader ? e24 : Ue.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ho(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + let o = Yo.decode(r, r.uint32()); + o.value !== void 0 && (i.fields[o.key] = o.value); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { fields: xd(e24.fields) ? Object.entries(e24.fields).reduce((t, [r, a]) => (t[r] = a, t), {}) : {} }; +}, toJSON(e24) { + let t = {}; + if (e24.fields) { + let r = Object.entries(e24.fields); + r.length > 0 && (t.fields = {}, r.forEach(([a, i]) => { + t.fields[a] = i; + })); + } + return t; +}, create(e24) { + return ye.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ho(); + return t.fields = Object.entries(e24.fields ?? {}).reduce((r, [a, i]) => (i !== void 0 && (r[a] = i), r), {}), t; +}, wrap(e24) { + let t = Ho(); + if (e24 !== void 0) for (let r of Object.keys(e24)) t.fields[r] = e24[r]; + return t; +}, unwrap(e24) { + let t = {}; + if (e24.fields) for (let r of Object.keys(e24.fields)) t[r] = e24.fields[r]; + return t; +} }; +function bd() { + return { key: "", value: void 0 }; +} +var Yo = { encode(e24, t = Ue.default.Writer.create()) { + return e24.key !== "" && t.uint32(10).string(e24.key), e24.value !== void 0 && wt.encode(wt.wrap(e24.value), t.uint32(18).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof Ue.default.Reader ? e24 : Ue.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = bd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.key = r.string(); + continue; + case 2: + if (n !== 18) break; + i.value = wt.unwrap(wt.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { key: nn(e24.key) ? globalThis.String(e24.key) : "", value: nn(e24?.value) ? e24.value : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.key !== "" && (t.key = e24.key), e24.value !== void 0 && (t.value = e24.value), t; +}, create(e24) { + return Yo.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = bd(); + return t.key = e24.key ?? "", t.value = e24.value ?? void 0, t; +} }; +function Qo() { + return { nullValue: void 0, numberValue: void 0, stringValue: void 0, boolValue: void 0, structValue: void 0, listValue: void 0 }; +} +var wt = { encode(e24, t = Ue.default.Writer.create()) { + return e24.nullValue !== void 0 && t.uint32(8).int32(e24.nullValue), e24.numberValue !== void 0 && t.uint32(17).double(e24.numberValue), e24.stringValue !== void 0 && t.uint32(26).string(e24.stringValue), e24.boolValue !== void 0 && t.uint32(32).bool(e24.boolValue), e24.structValue !== void 0 && ye.encode(ye.wrap(e24.structValue), t.uint32(42).fork()).ldelim(), e24.listValue !== void 0 && pa.encode(pa.wrap(e24.listValue), t.uint32(50).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof Ue.default.Reader ? e24 : Ue.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Qo(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.nullValue = r.int32(); + continue; + case 2: + if (n !== 17) break; + i.numberValue = r.double(); + continue; + case 3: + if (n !== 26) break; + i.stringValue = r.string(); + continue; + case 4: + if (n !== 32) break; + i.boolValue = r.bool(); + continue; + case 5: + if (n !== 42) break; + i.structValue = ye.unwrap(ye.decode(r, r.uint32())); + continue; + case 6: + if (n !== 50) break; + i.listValue = pa.unwrap(pa.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { nullValue: nn(e24.nullValue) ? Zo(e24.nullValue) : void 0, numberValue: nn(e24.numberValue) ? globalThis.Number(e24.numberValue) : void 0, stringValue: nn(e24.stringValue) ? globalThis.String(e24.stringValue) : void 0, boolValue: nn(e24.boolValue) ? globalThis.Boolean(e24.boolValue) : void 0, structValue: xd(e24.structValue) ? e24.structValue : void 0, listValue: globalThis.Array.isArray(e24.listValue) ? [...e24.listValue] : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.nullValue !== void 0 && (t.nullValue = Xo(e24.nullValue)), e24.numberValue !== void 0 && (t.numberValue = e24.numberValue), e24.stringValue !== void 0 && (t.stringValue = e24.stringValue), e24.boolValue !== void 0 && (t.boolValue = e24.boolValue), e24.structValue !== void 0 && (t.structValue = e24.structValue), e24.listValue !== void 0 && (t.listValue = e24.listValue), t; +}, create(e24) { + return wt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Qo(); + return t.nullValue = e24.nullValue ?? void 0, t.numberValue = e24.numberValue ?? void 0, t.stringValue = e24.stringValue ?? void 0, t.boolValue = e24.boolValue ?? void 0, t.structValue = e24.structValue ?? void 0, t.listValue = e24.listValue ?? void 0, t; +}, wrap(e24) { + let t = Qo(); + if (e24 === null) t.nullValue = 0; + else if (typeof e24 == "boolean") t.boolValue = e24; + else if (typeof e24 == "number") t.numberValue = e24; + else if (typeof e24 == "string") t.stringValue = e24; + else if (globalThis.Array.isArray(e24)) t.listValue = e24; + else if (typeof e24 == "object") t.structValue = e24; + else if (typeof e24 < "u") throw new globalThis.Error("Unsupported any value type: " + typeof e24); + return t; +}, unwrap(e24) { + if (e24.stringValue !== void 0) return e24.stringValue; + if (e24?.numberValue !== void 0) return e24.numberValue; + if (e24?.boolValue !== void 0) return e24.boolValue; + if (e24?.structValue !== void 0) return e24.structValue; + if (e24?.listValue !== void 0) return e24.listValue; + if (e24?.nullValue !== void 0) return null; +} }; +function Ko() { + return { values: [] }; +} +var pa = { encode(e24, t = Ue.default.Writer.create()) { + for (let r of e24.values) wt.encode(wt.wrap(r), t.uint32(10).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof Ue.default.Reader ? e24 : Ue.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ko(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values.push(wt.unwrap(wt.decode(r, r.uint32()))); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? [...e24.values] : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values), t; +}, create(e24) { + return pa.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ko(); + return t.values = e24.values?.map((r) => r) || [], t; +}, wrap(e24) { + let t = Ko(); + return t.values = e24 ?? [], t; +}, unwrap(e24) { + return e24?.hasOwnProperty("values") && globalThis.Array.isArray(e24.values) ? e24.values : e24; +} }; +function xd(e24) { + return typeof e24 == "object" && e24 !== null; +} +function nn(e24) { + return e24 != null; +} +function tr(e24) { + switch (e24) { + case 0: + case "CONSISTENCY_LEVEL_UNSPECIFIED": + return 0; + case 1: + case "CONSISTENCY_LEVEL_ONE": + return 1; + case 2: + case "CONSISTENCY_LEVEL_QUORUM": + return 2; + case 3: + case "CONSISTENCY_LEVEL_ALL": + return 3; + case -1: + case "UNRECOGNIZED": + default: + return -1; + } +} +function rr(e24) { + switch (e24) { + case 0: + return "CONSISTENCY_LEVEL_UNSPECIFIED"; + case 1: + return "CONSISTENCY_LEVEL_ONE"; + case 2: + return "CONSISTENCY_LEVEL_QUORUM"; + case 3: + return "CONSISTENCY_LEVEL_ALL"; + case -1: + default: + return "UNRECOGNIZED"; + } +} +function Hg(e24) { + switch (e24) { + case 0: + case "OPERATOR_UNSPECIFIED": + return 0; + case 1: + case "OPERATOR_EQUAL": + return 1; + case 2: + case "OPERATOR_NOT_EQUAL": + return 2; + case 3: + case "OPERATOR_GREATER_THAN": + return 3; + case 4: + case "OPERATOR_GREATER_THAN_EQUAL": + return 4; + case 5: + case "OPERATOR_LESS_THAN": + return 5; + case 6: + case "OPERATOR_LESS_THAN_EQUAL": + return 6; + case 7: + case "OPERATOR_AND": + return 7; + case 8: + case "OPERATOR_OR": + return 8; + case 9: + case "OPERATOR_WITHIN_GEO_RANGE": + return 9; + case 10: + case "OPERATOR_LIKE": + return 10; + case 11: + case "OPERATOR_IS_NULL": + return 11; + case 12: + case "OPERATOR_CONTAINS_ANY": + return 12; + case 13: + case "OPERATOR_CONTAINS_ALL": + return 13; + case 14: + case "OPERATOR_CONTAINS_NONE": + return 14; + case 15: + case "OPERATOR_NOT": + return 15; + case -1: + case "UNRECOGNIZED": + default: + return -1; + } +} +function Qg(e24) { + switch (e24) { + case 0: + return "OPERATOR_UNSPECIFIED"; + case 1: + return "OPERATOR_EQUAL"; + case 2: + return "OPERATOR_NOT_EQUAL"; + case 3: + return "OPERATOR_GREATER_THAN"; + case 4: + return "OPERATOR_GREATER_THAN_EQUAL"; + case 5: + return "OPERATOR_LESS_THAN"; + case 6: + return "OPERATOR_LESS_THAN_EQUAL"; + case 7: + return "OPERATOR_AND"; + case 8: + return "OPERATOR_OR"; + case 9: + return "OPERATOR_WITHIN_GEO_RANGE"; + case 10: + return "OPERATOR_LIKE"; + case 11: + return "OPERATOR_IS_NULL"; + case 12: + return "OPERATOR_CONTAINS_ANY"; + case 13: + return "OPERATOR_CONTAINS_ALL"; + case 14: + return "OPERATOR_CONTAINS_NONE"; + case 15: + return "OPERATOR_NOT"; + case -1: + default: + return "UNRECOGNIZED"; + } +} +function Kg(e24) { + switch (e24) { + case 0: + case "VECTOR_TYPE_UNSPECIFIED": + return 0; + case 1: + case "VECTOR_TYPE_SINGLE_FP32": + return 1; + case 2: + case "VECTOR_TYPE_MULTI_FP32": + return 2; + case -1: + case "UNRECOGNIZED": + default: + return -1; + } +} +function Yg(e24) { + switch (e24) { + case 0: + return "VECTOR_TYPE_UNSPECIFIED"; + case 1: + return "VECTOR_TYPE_SINGLE_FP32"; + case 2: + return "VECTOR_TYPE_MULTI_FP32"; + case -1: + default: + return "UNRECOGNIZED"; + } +} +function Pd() { + return { values: [], propName: "", valuesBytes: new Uint8Array(0) }; +} +var Ye = { encode(e24, t = k.default.Writer.create()) { + t.uint32(10).fork(); + for (let r of e24.values) t.double(r); + return t.ldelim(), e24.propName !== "" && t.uint32(18).string(e24.propName), e24.valuesBytes.length !== 0 && t.uint32(26).bytes(e24.valuesBytes), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Pd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n === 9) { + i.values.push(r.double()); + continue; + } + if (n === 10) { + let o = r.uint32() + r.pos; + for (; r.pos < o; ) i.values.push(r.double()); + continue; + } + break; + case 2: + if (n !== 18) break; + i.propName = r.string(); + continue; + case 3: + if (n !== 26) break; + i.valuesBytes = r.bytes(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.Number(t)) : [], propName: J(e24.propName) ? globalThis.String(e24.propName) : "", valuesBytes: J(e24.valuesBytes) ? Wd(e24.valuesBytes) : new Uint8Array(0) }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values), e24.propName !== "" && (t.propName = e24.propName), e24.valuesBytes.length !== 0 && (t.valuesBytes = qd(e24.valuesBytes)), t; +}, create(e24) { + return Ye.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Pd(); + return t.values = e24.values?.map((r) => r) || [], t.propName = e24.propName ?? "", t.valuesBytes = e24.valuesBytes ?? new Uint8Array(0), t; +} }; +function Rd() { + return { values: [], propName: "" }; +} +var Ze = { encode(e24, t = k.default.Writer.create()) { + t.uint32(10).fork(); + for (let r of e24.values) t.int64(r); + return t.ldelim(), e24.propName !== "" && t.uint32(18).string(e24.propName), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Rd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n === 8) { + i.values.push(an(r.int64())); + continue; + } + if (n === 10) { + let o = r.uint32() + r.pos; + for (; r.pos < o; ) i.values.push(an(r.int64())); + continue; + } + break; + case 2: + if (n !== 18) break; + i.propName = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.Number(t)) : [], propName: J(e24.propName) ? globalThis.String(e24.propName) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values.map((r) => Math.round(r))), e24.propName !== "" && (t.propName = e24.propName), t; +}, create(e24) { + return Ze.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Rd(); + return t.values = e24.values?.map((r) => r) || [], t.propName = e24.propName ?? "", t; +} }; +function Ad() { + return { values: [], propName: "" }; +} +var Xe = { encode(e24, t = k.default.Writer.create()) { + for (let r of e24.values) t.uint32(10).string(r); + return e24.propName !== "" && t.uint32(18).string(e24.propName), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ad(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values.push(r.string()); + continue; + case 2: + if (n !== 18) break; + i.propName = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.String(t)) : [], propName: J(e24.propName) ? globalThis.String(e24.propName) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values), e24.propName !== "" && (t.propName = e24.propName), t; +}, create(e24) { + return Xe.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ad(); + return t.values = e24.values?.map((r) => r) || [], t.propName = e24.propName ?? "", t; +} }; +function Nd() { + return { values: [], propName: "" }; +} +var je = { encode(e24, t = k.default.Writer.create()) { + t.uint32(10).fork(); + for (let r of e24.values) t.bool(r); + return t.ldelim(), e24.propName !== "" && t.uint32(18).string(e24.propName), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Nd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n === 8) { + i.values.push(r.bool()); + continue; + } + if (n === 10) { + let o = r.uint32() + r.pos; + for (; r.pos < o; ) i.values.push(r.bool()); + continue; + } + break; + case 2: + if (n !== 18) break; + i.propName = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.Boolean(t)) : [], propName: J(e24.propName) ? globalThis.String(e24.propName) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values), e24.propName !== "" && (t.propName = e24.propName), t; +}, create(e24) { + return je.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Nd(); + return t.values = e24.values?.map((r) => r) || [], t.propName = e24.propName ?? "", t; +} }; +function Vd() { + return { nonRefProperties: void 0, numberArrayProperties: [], intArrayProperties: [], textArrayProperties: [], booleanArrayProperties: [], objectProperties: [], objectArrayProperties: [], emptyListProps: [] }; +} +var Be = { encode(e24, t = k.default.Writer.create()) { + e24.nonRefProperties !== void 0 && ye.encode(ye.wrap(e24.nonRefProperties), t.uint32(10).fork()).ldelim(); + for (let r of e24.numberArrayProperties) Ye.encode(r, t.uint32(18).fork()).ldelim(); + for (let r of e24.intArrayProperties) Ze.encode(r, t.uint32(26).fork()).ldelim(); + for (let r of e24.textArrayProperties) Xe.encode(r, t.uint32(34).fork()).ldelim(); + for (let r of e24.booleanArrayProperties) je.encode(r, t.uint32(42).fork()).ldelim(); + for (let r of e24.objectProperties) tt.encode(r, t.uint32(50).fork()).ldelim(); + for (let r of e24.objectArrayProperties) et.encode(r, t.uint32(58).fork()).ldelim(); + for (let r of e24.emptyListProps) t.uint32(82).string(r); + return t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Vd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.nonRefProperties = ye.unwrap(ye.decode(r, r.uint32())); + continue; + case 2: + if (n !== 18) break; + i.numberArrayProperties.push(Ye.decode(r, r.uint32())); + continue; + case 3: + if (n !== 26) break; + i.intArrayProperties.push(Ze.decode(r, r.uint32())); + continue; + case 4: + if (n !== 34) break; + i.textArrayProperties.push(Xe.decode(r, r.uint32())); + continue; + case 5: + if (n !== 42) break; + i.booleanArrayProperties.push(je.decode(r, r.uint32())); + continue; + case 6: + if (n !== 50) break; + i.objectProperties.push(tt.decode(r, r.uint32())); + continue; + case 7: + if (n !== 58) break; + i.objectArrayProperties.push(et.decode(r, r.uint32())); + continue; + case 10: + if (n !== 82) break; + i.emptyListProps.push(r.string()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { nonRefProperties: Zg(e24.nonRefProperties) ? e24.nonRefProperties : void 0, numberArrayProperties: globalThis.Array.isArray(e24?.numberArrayProperties) ? e24.numberArrayProperties.map((t) => Ye.fromJSON(t)) : [], intArrayProperties: globalThis.Array.isArray(e24?.intArrayProperties) ? e24.intArrayProperties.map((t) => Ze.fromJSON(t)) : [], textArrayProperties: globalThis.Array.isArray(e24?.textArrayProperties) ? e24.textArrayProperties.map((t) => Xe.fromJSON(t)) : [], booleanArrayProperties: globalThis.Array.isArray(e24?.booleanArrayProperties) ? e24.booleanArrayProperties.map((t) => je.fromJSON(t)) : [], objectProperties: globalThis.Array.isArray(e24?.objectProperties) ? e24.objectProperties.map((t) => tt.fromJSON(t)) : [], objectArrayProperties: globalThis.Array.isArray(e24?.objectArrayProperties) ? e24.objectArrayProperties.map((t) => et.fromJSON(t)) : [], emptyListProps: globalThis.Array.isArray(e24?.emptyListProps) ? e24.emptyListProps.map((t) => globalThis.String(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.nonRefProperties !== void 0 && (t.nonRefProperties = e24.nonRefProperties), e24.numberArrayProperties?.length && (t.numberArrayProperties = e24.numberArrayProperties.map((r) => Ye.toJSON(r))), e24.intArrayProperties?.length && (t.intArrayProperties = e24.intArrayProperties.map((r) => Ze.toJSON(r))), e24.textArrayProperties?.length && (t.textArrayProperties = e24.textArrayProperties.map((r) => Xe.toJSON(r))), e24.booleanArrayProperties?.length && (t.booleanArrayProperties = e24.booleanArrayProperties.map((r) => je.toJSON(r))), e24.objectProperties?.length && (t.objectProperties = e24.objectProperties.map((r) => tt.toJSON(r))), e24.objectArrayProperties?.length && (t.objectArrayProperties = e24.objectArrayProperties.map((r) => et.toJSON(r))), e24.emptyListProps?.length && (t.emptyListProps = e24.emptyListProps), t; +}, create(e24) { + return Be.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Vd(); + return t.nonRefProperties = e24.nonRefProperties ?? void 0, t.numberArrayProperties = e24.numberArrayProperties?.map((r) => Ye.fromPartial(r)) || [], t.intArrayProperties = e24.intArrayProperties?.map((r) => Ze.fromPartial(r)) || [], t.textArrayProperties = e24.textArrayProperties?.map((r) => Xe.fromPartial(r)) || [], t.booleanArrayProperties = e24.booleanArrayProperties?.map((r) => je.fromPartial(r)) || [], t.objectProperties = e24.objectProperties?.map((r) => tt.fromPartial(r)) || [], t.objectArrayProperties = e24.objectArrayProperties?.map((r) => et.fromPartial(r)) || [], t.emptyListProps = e24.emptyListProps?.map((r) => r) || [], t; +} }; +function Od() { + return { values: [], propName: "" }; +} +var et = { encode(e24, t = k.default.Writer.create()) { + for (let r of e24.values) Be.encode(r, t.uint32(10).fork()).ldelim(); + return e24.propName !== "" && t.uint32(18).string(e24.propName), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Od(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values.push(Be.decode(r, r.uint32())); + continue; + case 2: + if (n !== 18) break; + i.propName = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => Be.fromJSON(t)) : [], propName: J(e24.propName) ? globalThis.String(e24.propName) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values.map((r) => Be.toJSON(r))), e24.propName !== "" && (t.propName = e24.propName), t; +}, create(e24) { + return et.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Od(); + return t.values = e24.values?.map((r) => Be.fromPartial(r)) || [], t.propName = e24.propName ?? "", t; +} }; +function Sd() { + return { value: void 0, propName: "" }; +} +var tt = { encode(e24, t = k.default.Writer.create()) { + return e24.value !== void 0 && Be.encode(e24.value, t.uint32(10).fork()).ldelim(), e24.propName !== "" && t.uint32(18).string(e24.propName), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Sd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.value = Be.decode(r, r.uint32()); + continue; + case 2: + if (n !== 18) break; + i.propName = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { value: J(e24.value) ? Be.fromJSON(e24.value) : void 0, propName: J(e24.propName) ? globalThis.String(e24.propName) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.value !== void 0 && (t.value = Be.toJSON(e24.value)), e24.propName !== "" && (t.propName = e24.propName), t; +}, create(e24) { + return tt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Sd(); + return t.value = e24.value !== void 0 && e24.value !== null ? Be.fromPartial(e24.value) : void 0, t.propName = e24.propName ?? "", t; +} }; +function kd() { + return { values: [] }; +} +var m = { encode(e24, t = k.default.Writer.create()) { + for (let r of e24.values) t.uint32(10).string(r); + return t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = kd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values.push(r.string()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.String(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values), t; +}, create(e24) { + return m.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = kd(); + return t.values = e24.values?.map((r) => r) || [], t; +} }; +function Id() { + return { values: [] }; +} +var rt = { encode(e24, t = k.default.Writer.create()) { + t.uint32(10).fork(); + for (let r of e24.values) t.int64(r); + return t.ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Id(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n === 8) { + i.values.push(an(r.int64())); + continue; + } + if (n === 10) { + let o = r.uint32() + r.pos; + for (; r.pos < o; ) i.values.push(an(r.int64())); + continue; + } + break; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.Number(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values.map((r) => Math.round(r))), t; +}, create(e24) { + return rt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Id(); + return t.values = e24.values?.map((r) => r) || [], t; +} }; +function _d() { + return { values: [] }; +} +var nt = { encode(e24, t = k.default.Writer.create()) { + t.uint32(10).fork(); + for (let r of e24.values) t.double(r); + return t.ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = _d(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n === 9) { + i.values.push(r.double()); + continue; + } + if (n === 10) { + let o = r.uint32() + r.pos; + for (; r.pos < o; ) i.values.push(r.double()); + continue; + } + break; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.Number(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values), t; +}, create(e24) { + return nt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = _d(); + return t.values = e24.values?.map((r) => r) || [], t; +} }; +function Bd() { + return { values: [] }; +} +var it = { encode(e24, t = k.default.Writer.create()) { + t.uint32(10).fork(); + for (let r of e24.values) t.bool(r); + return t.ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Bd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n === 8) { + i.values.push(r.bool()); + continue; + } + if (n === 10) { + let o = r.uint32() + r.pos; + for (; r.pos < o; ) i.values.push(r.bool()); + continue; + } + break; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.Boolean(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values), t; +}, create(e24) { + return it.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Bd(); + return t.values = e24.values?.map((r) => r) || [], t; +} }; +function Gd() { + return { operator: 0, on: [], filters: [], valueText: void 0, valueInt: void 0, valueBoolean: void 0, valueNumber: void 0, valueTextArray: void 0, valueIntArray: void 0, valueBooleanArray: void 0, valueNumberArray: void 0, valueGeo: void 0, target: void 0 }; +} +var H = { encode(e24, t = k.default.Writer.create()) { + e24.operator !== 0 && t.uint32(8).int32(e24.operator); + for (let r of e24.on) t.uint32(18).string(r); + for (let r of e24.filters) H.encode(r, t.uint32(26).fork()).ldelim(); + return e24.valueText !== void 0 && t.uint32(34).string(e24.valueText), e24.valueInt !== void 0 && t.uint32(40).int64(e24.valueInt), e24.valueBoolean !== void 0 && t.uint32(48).bool(e24.valueBoolean), e24.valueNumber !== void 0 && t.uint32(57).double(e24.valueNumber), e24.valueTextArray !== void 0 && m.encode(e24.valueTextArray, t.uint32(74).fork()).ldelim(), e24.valueIntArray !== void 0 && rt.encode(e24.valueIntArray, t.uint32(82).fork()).ldelim(), e24.valueBooleanArray !== void 0 && it.encode(e24.valueBooleanArray, t.uint32(90).fork()).ldelim(), e24.valueNumberArray !== void 0 && nt.encode(e24.valueNumberArray, t.uint32(98).fork()).ldelim(), e24.valueGeo !== void 0 && at.encode(e24.valueGeo, t.uint32(106).fork()).ldelim(), e24.target !== void 0 && ue.encode(e24.target, t.uint32(162).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Gd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.operator = r.int32(); + continue; + case 2: + if (n !== 18) break; + i.on.push(r.string()); + continue; + case 3: + if (n !== 26) break; + i.filters.push(H.decode(r, r.uint32())); + continue; + case 4: + if (n !== 34) break; + i.valueText = r.string(); + continue; + case 5: + if (n !== 40) break; + i.valueInt = an(r.int64()); + continue; + case 6: + if (n !== 48) break; + i.valueBoolean = r.bool(); + continue; + case 7: + if (n !== 57) break; + i.valueNumber = r.double(); + continue; + case 9: + if (n !== 74) break; + i.valueTextArray = m.decode(r, r.uint32()); + continue; + case 10: + if (n !== 82) break; + i.valueIntArray = rt.decode(r, r.uint32()); + continue; + case 11: + if (n !== 90) break; + i.valueBooleanArray = it.decode(r, r.uint32()); + continue; + case 12: + if (n !== 98) break; + i.valueNumberArray = nt.decode(r, r.uint32()); + continue; + case 13: + if (n !== 106) break; + i.valueGeo = at.decode(r, r.uint32()); + continue; + case 20: + if (n !== 162) break; + i.target = ue.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { operator: J(e24.operator) ? Hg(e24.operator) : 0, on: globalThis.Array.isArray(e24?.on) ? e24.on.map((t) => globalThis.String(t)) : [], filters: globalThis.Array.isArray(e24?.filters) ? e24.filters.map((t) => H.fromJSON(t)) : [], valueText: J(e24.valueText) ? globalThis.String(e24.valueText) : void 0, valueInt: J(e24.valueInt) ? globalThis.Number(e24.valueInt) : void 0, valueBoolean: J(e24.valueBoolean) ? globalThis.Boolean(e24.valueBoolean) : void 0, valueNumber: J(e24.valueNumber) ? globalThis.Number(e24.valueNumber) : void 0, valueTextArray: J(e24.valueTextArray) ? m.fromJSON(e24.valueTextArray) : void 0, valueIntArray: J(e24.valueIntArray) ? rt.fromJSON(e24.valueIntArray) : void 0, valueBooleanArray: J(e24.valueBooleanArray) ? it.fromJSON(e24.valueBooleanArray) : void 0, valueNumberArray: J(e24.valueNumberArray) ? nt.fromJSON(e24.valueNumberArray) : void 0, valueGeo: J(e24.valueGeo) ? at.fromJSON(e24.valueGeo) : void 0, target: J(e24.target) ? ue.fromJSON(e24.target) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.operator !== 0 && (t.operator = Qg(e24.operator)), e24.on?.length && (t.on = e24.on), e24.filters?.length && (t.filters = e24.filters.map((r) => H.toJSON(r))), e24.valueText !== void 0 && (t.valueText = e24.valueText), e24.valueInt !== void 0 && (t.valueInt = Math.round(e24.valueInt)), e24.valueBoolean !== void 0 && (t.valueBoolean = e24.valueBoolean), e24.valueNumber !== void 0 && (t.valueNumber = e24.valueNumber), e24.valueTextArray !== void 0 && (t.valueTextArray = m.toJSON(e24.valueTextArray)), e24.valueIntArray !== void 0 && (t.valueIntArray = rt.toJSON(e24.valueIntArray)), e24.valueBooleanArray !== void 0 && (t.valueBooleanArray = it.toJSON(e24.valueBooleanArray)), e24.valueNumberArray !== void 0 && (t.valueNumberArray = nt.toJSON(e24.valueNumberArray)), e24.valueGeo !== void 0 && (t.valueGeo = at.toJSON(e24.valueGeo)), e24.target !== void 0 && (t.target = ue.toJSON(e24.target)), t; +}, create(e24) { + return H.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Gd(); + return t.operator = e24.operator ?? 0, t.on = e24.on?.map((r) => r) || [], t.filters = e24.filters?.map((r) => H.fromPartial(r)) || [], t.valueText = e24.valueText ?? void 0, t.valueInt = e24.valueInt ?? void 0, t.valueBoolean = e24.valueBoolean ?? void 0, t.valueNumber = e24.valueNumber ?? void 0, t.valueTextArray = e24.valueTextArray !== void 0 && e24.valueTextArray !== null ? m.fromPartial(e24.valueTextArray) : void 0, t.valueIntArray = e24.valueIntArray !== void 0 && e24.valueIntArray !== null ? rt.fromPartial(e24.valueIntArray) : void 0, t.valueBooleanArray = e24.valueBooleanArray !== void 0 && e24.valueBooleanArray !== null ? it.fromPartial(e24.valueBooleanArray) : void 0, t.valueNumberArray = e24.valueNumberArray !== void 0 && e24.valueNumberArray !== null ? nt.fromPartial(e24.valueNumberArray) : void 0, t.valueGeo = e24.valueGeo !== void 0 && e24.valueGeo !== null ? at.fromPartial(e24.valueGeo) : void 0, t.target = e24.target !== void 0 && e24.target !== null ? ue.fromPartial(e24.target) : void 0, t; +} }; +function wd() { + return { on: "", target: void 0 }; +} +var jt = { encode(e24, t = k.default.Writer.create()) { + return e24.on !== "" && t.uint32(10).string(e24.on), e24.target !== void 0 && ue.encode(e24.target, t.uint32(18).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = wd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.on = r.string(); + continue; + case 2: + if (n !== 18) break; + i.target = ue.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { on: J(e24.on) ? globalThis.String(e24.on) : "", target: J(e24.target) ? ue.fromJSON(e24.target) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.on !== "" && (t.on = e24.on), e24.target !== void 0 && (t.target = ue.toJSON(e24.target)), t; +}, create(e24) { + return jt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = wd(); + return t.on = e24.on ?? "", t.target = e24.target !== void 0 && e24.target !== null ? ue.fromPartial(e24.target) : void 0, t; +} }; +function Md() { + return { on: "", target: void 0, targetCollection: "" }; +} +var er = { encode(e24, t = k.default.Writer.create()) { + return e24.on !== "" && t.uint32(10).string(e24.on), e24.target !== void 0 && ue.encode(e24.target, t.uint32(18).fork()).ldelim(), e24.targetCollection !== "" && t.uint32(26).string(e24.targetCollection), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Md(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.on = r.string(); + continue; + case 2: + if (n !== 18) break; + i.target = ue.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.targetCollection = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { on: J(e24.on) ? globalThis.String(e24.on) : "", target: J(e24.target) ? ue.fromJSON(e24.target) : void 0, targetCollection: J(e24.targetCollection) ? globalThis.String(e24.targetCollection) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.on !== "" && (t.on = e24.on), e24.target !== void 0 && (t.target = ue.toJSON(e24.target)), e24.targetCollection !== "" && (t.targetCollection = e24.targetCollection), t; +}, create(e24) { + return er.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Md(); + return t.on = e24.on ?? "", t.target = e24.target !== void 0 && e24.target !== null ? ue.fromPartial(e24.target) : void 0, t.targetCollection = e24.targetCollection ?? "", t; +} }; +function Ed() { + return { on: "" }; +} +var Mt = { encode(e24, t = k.default.Writer.create()) { + return e24.on !== "" && t.uint32(10).string(e24.on), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ed(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.on = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { on: J(e24.on) ? globalThis.String(e24.on) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.on !== "" && (t.on = e24.on), t; +}, create(e24) { + return Mt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ed(); + return t.on = e24.on ?? "", t; +} }; +function Ud() { + return { property: void 0, singleTarget: void 0, multiTarget: void 0, count: void 0 }; +} +var ue = { encode(e24, t = k.default.Writer.create()) { + return e24.property !== void 0 && t.uint32(10).string(e24.property), e24.singleTarget !== void 0 && jt.encode(e24.singleTarget, t.uint32(18).fork()).ldelim(), e24.multiTarget !== void 0 && er.encode(e24.multiTarget, t.uint32(26).fork()).ldelim(), e24.count !== void 0 && Mt.encode(e24.count, t.uint32(34).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ud(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.property = r.string(); + continue; + case 2: + if (n !== 18) break; + i.singleTarget = jt.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.multiTarget = er.decode(r, r.uint32()); + continue; + case 4: + if (n !== 34) break; + i.count = Mt.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { property: J(e24.property) ? globalThis.String(e24.property) : void 0, singleTarget: J(e24.singleTarget) ? jt.fromJSON(e24.singleTarget) : void 0, multiTarget: J(e24.multiTarget) ? er.fromJSON(e24.multiTarget) : void 0, count: J(e24.count) ? Mt.fromJSON(e24.count) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.property !== void 0 && (t.property = e24.property), e24.singleTarget !== void 0 && (t.singleTarget = jt.toJSON(e24.singleTarget)), e24.multiTarget !== void 0 && (t.multiTarget = er.toJSON(e24.multiTarget)), e24.count !== void 0 && (t.count = Mt.toJSON(e24.count)), t; +}, create(e24) { + return ue.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ud(); + return t.property = e24.property ?? void 0, t.singleTarget = e24.singleTarget !== void 0 && e24.singleTarget !== null ? jt.fromPartial(e24.singleTarget) : void 0, t.multiTarget = e24.multiTarget !== void 0 && e24.multiTarget !== null ? er.fromPartial(e24.multiTarget) : void 0, t.count = e24.count !== void 0 && e24.count !== null ? Mt.fromPartial(e24.count) : void 0, t; +} }; +function Dd() { + return { latitude: 0, longitude: 0, distance: 0 }; +} +var at = { encode(e24, t = k.default.Writer.create()) { + return e24.latitude !== 0 && t.uint32(13).float(e24.latitude), e24.longitude !== 0 && t.uint32(21).float(e24.longitude), e24.distance !== 0 && t.uint32(29).float(e24.distance), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Dd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 13) break; + i.latitude = r.float(); + continue; + case 2: + if (n !== 21) break; + i.longitude = r.float(); + continue; + case 3: + if (n !== 29) break; + i.distance = r.float(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { latitude: J(e24.latitude) ? globalThis.Number(e24.latitude) : 0, longitude: J(e24.longitude) ? globalThis.Number(e24.longitude) : 0, distance: J(e24.distance) ? globalThis.Number(e24.distance) : 0 }; +}, toJSON(e24) { + let t = {}; + return e24.latitude !== 0 && (t.latitude = e24.latitude), e24.longitude !== 0 && (t.longitude = e24.longitude), e24.distance !== 0 && (t.distance = e24.distance), t; +}, create(e24) { + return at.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Dd(); + return t.latitude = e24.latitude ?? 0, t.longitude = e24.longitude ?? 0, t.distance = e24.distance ?? 0, t; +} }; +function Fd() { + return { name: "", index: 0, vectorBytes: new Uint8Array(0), type: 0 }; +} +var q = { encode(e24, t = k.default.Writer.create()) { + return e24.name !== "" && t.uint32(10).string(e24.name), e24.index !== 0 && t.uint32(16).uint64(e24.index), e24.vectorBytes.length !== 0 && t.uint32(26).bytes(e24.vectorBytes), e24.type !== 0 && t.uint32(32).int32(e24.type), t; +}, decode(e24, t) { + let r = e24 instanceof k.default.Reader ? e24 : k.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Fd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.name = r.string(); + continue; + case 2: + if (n !== 16) break; + i.index = an(r.uint64()); + continue; + case 3: + if (n !== 26) break; + i.vectorBytes = r.bytes(); + continue; + case 4: + if (n !== 32) break; + i.type = r.int32(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { name: J(e24.name) ? globalThis.String(e24.name) : "", index: J(e24.index) ? globalThis.Number(e24.index) : 0, vectorBytes: J(e24.vectorBytes) ? Wd(e24.vectorBytes) : new Uint8Array(0), type: J(e24.type) ? Kg(e24.type) : 0 }; +}, toJSON(e24) { + let t = {}; + return e24.name !== "" && (t.name = e24.name), e24.index !== 0 && (t.index = Math.round(e24.index)), e24.vectorBytes.length !== 0 && (t.vectorBytes = qd(e24.vectorBytes)), e24.type !== 0 && (t.type = Yg(e24.type)), t; +}, create(e24) { + return q.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Fd(); + return t.name = e24.name ?? "", t.index = e24.index ?? 0, t.vectorBytes = e24.vectorBytes ?? new Uint8Array(0), t.type = e24.type ?? 0, t; +} }; +function Wd(e24) { + if (globalThis.Buffer) return Uint8Array.from(globalThis.Buffer.from(e24, "base64")); + { + let t = globalThis.atob(e24), r = new Uint8Array(t.length); + for (let a = 0; a < t.length; ++a) r[a] = t.charCodeAt(a); + return r; + } +} +function qd(e24) { + if (globalThis.Buffer) return globalThis.Buffer.from(e24).toString("base64"); + { + let t = []; + return e24.forEach((r) => { + t.push(globalThis.String.fromCharCode(r)); + }), globalThis.btoa(t.join("")); + } +} +function an(e24) { + if (e24.gt(globalThis.Number.MAX_SAFE_INTEGER)) throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + return e24.toNumber(); +} +k.default.util.Long !== long_default && (k.default.util.Long = long_default, k.default.configure()); +function Zg(e24) { + return typeof e24 == "object" && e24 !== null; +} +function J(e24) { + return e24 != null; +} +d(); +var Nt = class e3 { + static isSingleTargetRef(t) { + return t ? t.type_ === "single" : false; + } + static isMultiTargetRef(t) { + return t ? t.type_ === "multi" : false; + } + static isCountRef(t) { + return t ? t.type_ === "count" : false; + } + static isProperty(t) { + return t ? typeof t == "string" : false; + } + static isTargetRef(t) { + return t ? e3.isSingleTargetRef(t) || e3.isMultiTargetRef(t) : false; + } +}; +var ga = class { + static and(...t) { + return { operator: "And", filters: t, value: null }; + } + static or(...t) { + return { operator: "Or", filters: t, value: null }; + } + static not(t) { + return { operator: "Not", filters: [t], value: null }; + } +}; +var on = class { + target; + property; + constructor(t, r) { + this.property = t, this.target = r; + } + targetPath() { + if (!this.target) return ue.fromPartial({ property: Nt.isProperty(this.property) ? this.property : void 0, count: Nt.isCountRef(this.property) ? Mt.fromPartial({ on: this.property.linkOn }) : void 0 }); + let t = this.target; + for (; t.target !== void 0; ) if (Nt.isTargetRef(t.target)) t = t.target; + else throw new F("Invalid target reference"); + return t.target = this.property, this.resolveTargets(this.target); + } + resolveTargets(t) { + return ue.fromPartial({ property: Nt.isProperty(t) ? t : void 0, singleTarget: Nt.isSingleTargetRef(t) ? jt.fromPartial({ on: t.linkOn, target: this.resolveTargets(t.target) }) : void 0, multiTarget: Nt.isMultiTargetRef(t) ? er.fromPartial({ on: t.linkOn, targetCollection: t.targetCollection, target: this.resolveTargets(t.target) }) : void 0, count: Nt.isCountRef(t) ? Mt.fromPartial({ on: t.linkOn }) : void 0 }); + } +}; +var ma = class extends on { + constructor(t, r, a) { + super(r ? `len(${t})` : t, a); + } + isNull(t) { + return { operator: "IsNull", target: this.targetPath(), value: t }; + } + containsAny(t) { + return { operator: "ContainsAny", target: this.targetPath(), value: t }; + } + containsNone(t) { + return { operator: "ContainsNone", target: this.targetPath(), value: t }; + } + containsAll(t) { + return { operator: "ContainsAll", target: this.targetPath(), value: t }; + } + equal(t) { + return { operator: "Equal", target: this.targetPath(), value: t }; + } + notEqual(t) { + return { operator: "NotEqual", target: this.targetPath(), value: t }; + } + lessThan(t) { + return { operator: "LessThan", target: this.targetPath(), value: t }; + } + lessOrEqual(t) { + return { operator: "LessThanEqual", target: this.targetPath(), value: t }; + } + greaterThan(t) { + return { operator: "GreaterThan", target: this.targetPath(), value: t }; + } + greaterOrEqual(t) { + return { operator: "GreaterThanEqual", target: this.targetPath(), value: t }; + } + like(t) { + return { operator: "Like", target: this.targetPath(), value: t }; + } + withinGeoRange(t) { + return { operator: "WithinGeoRange", target: this.targetPath(), value: t }; + } +}; +var ha = class e4 { + target; + constructor(t) { + this.target = t; + } + byRef(t) { + return this.target.target = { type_: "single", linkOn: t }, new e4(Object.assign({}, this.target)); + } + byRefMultiTarget(t, r) { + return this.target.target = { type_: "multi", linkOn: t, targetCollection: r }, new e4(Object.assign({}, this.target)); + } + byProperty(t, r = false) { + return new ma(t, r, Object.assign({}, this.target)); + } + byRefCount(t) { + return new ya(t, Object.assign({}, this.target)); + } + byId() { + return new Vr(Object.assign({}, this.target)); + } + byCreationTime() { + return new Ta(Object.assign({}, this.target)); + } + byUpdateTime() { + return new va(Object.assign({}, this.target)); + } +}; +var ya = class extends on { + constructor(t, r) { + super({ type_: "count", linkOn: t }, r); + } + equal(t) { + return { operator: "Equal", target: this.targetPath(), value: t }; + } + notEqual(t) { + return { operator: "NotEqual", target: this.targetPath(), value: t }; + } + lessThan(t) { + return { operator: "LessThan", target: this.targetPath(), value: t }; + } + lessOrEqual(t) { + return { operator: "LessThanEqual", target: this.targetPath(), value: t }; + } + greaterThan(t) { + return { operator: "GreaterThan", target: this.targetPath(), value: t }; + } + greaterOrEqual(t) { + return { operator: "GreaterThanEqual", target: this.targetPath(), value: t }; + } +}; +var Vr = class extends on { + constructor(t) { + super("_id", t); + } + equal(t) { + return { operator: "Equal", target: this.targetPath(), value: t }; + } + notEqual(t) { + return { operator: "NotEqual", target: this.targetPath(), value: t }; + } + containsAny(t) { + return { operator: "ContainsAny", target: this.targetPath(), value: t }; + } +}; +var io = class extends on { + containsAny(t) { + return { operator: "ContainsAny", target: this.targetPath(), value: t.map(this.toValue) }; + } + equal(t) { + return { operator: "Equal", target: this.targetPath(), value: this.toValue(t) }; + } + notEqual(t) { + return { operator: "NotEqual", target: this.targetPath(), value: this.toValue(t) }; + } + lessThan(t) { + return { operator: "LessThan", target: this.targetPath(), value: this.toValue(t) }; + } + lessOrEqual(t) { + return { operator: "LessThanEqual", target: this.targetPath(), value: this.toValue(t) }; + } + greaterThan(t) { + return { operator: "GreaterThan", target: this.targetPath(), value: this.toValue(t) }; + } + greaterOrEqual(t) { + return { operator: "GreaterThanEqual", target: this.targetPath(), value: this.toValue(t) }; + } + toValue(t) { + return t instanceof Date ? t.toISOString() : t; + } +}; +var Ta = class extends io { + constructor(t) { + super("_creationTimeUnix", t); + } +}; +var va = class extends io { + constructor(t) { + super("_lastUpdateTimeUnix", t); + } +}; +var Xg = () => ({ byProperty: (e24, t = false) => new ma(e24, t), byRef: (e24) => new ha({ type_: "single", linkOn: e24 }), byRefMultiTarget: (e24, t) => new ha({ type_: "multi", linkOn: e24, targetCollection: t }), byRefCount: (e24) => new ya(e24), byId: () => new Vr(), byCreationTime: () => new Ta(), byUpdateTime: () => new va() }); +var ao = Xg; +d(); +d(); +d(); +d(); +d(); +d(); +function jg(e24) { + return Number.isInteger(e24); +} +function Ld(e24) { + return jg(e24) && e24 >= 0; +} +d(); +d(); +var Or = class { + autocorrect; + certainty; + concepts; + distance; + moveAwayFrom; + moveTo; + targetVectors; + constructor(t) { + this.autocorrect = t.autocorrect, this.certainty = t.certainty, this.concepts = t.concepts, this.distance = t.distance, this.moveAwayFrom = t.moveAwayFrom, this.moveTo = t.moveTo, this.targetVectors = t.targetVectors; + } + toString() { + this.validate(); + let t = [`concepts:${JSON.stringify(this.concepts)}`]; + return this.certainty && (t = [...t, `certainty:${this.certainty}`]), this.distance && (t = [...t, `distance:${this.distance}`]), this.targetVectors && this.targetVectors.length > 0 && (t = [...t, `targetVectors:${JSON.stringify(this.targetVectors)}`]), this.moveTo && (t = [...t, ba("moveTo", this.moveTo)]), this.moveAwayFrom && (t = [...t, ba("moveAwayFrom", this.moveAwayFrom)]), this.autocorrect !== void 0 && (t = [...t, `autocorrect:${this.autocorrect}`]), `{${t.join(",")}}`; + } + validate() { + if (this.moveTo) { + if (!this.moveTo.concepts && !this.moveTo.objects) throw new Error("nearText filter: moveTo.concepts or moveTo.objects must be present"); + if (!this.moveTo.force || !this.moveTo.concepts && !this.moveTo.objects) throw new Error("nearText filter: moveTo must have fields 'concepts' or 'objects' and 'force'"); + } + if (this.moveAwayFrom) { + if (!this.moveAwayFrom.concepts && !this.moveAwayFrom.objects) throw new Error("nearText filter: moveAwayFrom.concepts or moveAwayFrom.objects must be present"); + if (!this.moveAwayFrom.force || !this.moveAwayFrom.concepts && !this.moveAwayFrom.objects) throw new Error("nearText filter: moveAwayFrom must have fields 'concepts' or 'objects' and 'force'"); + } + } +}; +function em(e24, t) { + let r = []; + for (let a in t) { + if (!t[a].id && !t[a].beacon) throw new Error(`nearText: ${e24}.objects[${a}].id or ${e24}.objects[${a}].beacon must be present`); + let i = []; + t[a].id && i.push(`id:"${t[a].id}"`), t[a].beacon && i.push(`beacon:"${t[a].beacon}"`), r.push(`{${i.join(",")}}`); + } + return `[${r.join(",")}]`; +} +function ba(e24, t) { + let r = []; + return t.concepts && (r = [...r, `concepts:${JSON.stringify(t.concepts)}`]), t.objects && (r = [...r, `objects:${em(e24, t.objects)}`]), t.force && (r = [...r, `force:${t.force}`]), `${e24}:{${r.join(",")}}`; +} +var jo = class { + nearText; + nearVector; + constructor(t) { + this.nearText = t.nearText, this.nearVector = t.nearVector; + } + toString() { + let t = []; + if (this.nearText !== void 0) { + let r = [`concepts:${JSON.stringify(this.nearText.concepts)}`]; + this.nearText.certainty && (r = [...r, `certainty:${this.nearText.certainty}`]), this.nearText.distance && (r = [...r, `distance:${this.nearText.distance}`]), this.nearText.moveTo && (r = [...r, ba("moveTo", this.nearText.moveTo)]), this.nearText.moveAwayFrom && (r = [...r, ba("moveAwayFrom", this.nearText.moveAwayFrom)]), t = [...t, `nearText:{${r.join(",")}}`]; + } + if (this.nearVector !== void 0) { + let r = [`vector:${JSON.stringify(this.nearVector.vector)}`]; + this.nearVector.certainty && (r = [...r, `certainty:${this.nearVector.certainty}`]), this.nearVector.distance && (r = [...r, `distance:${this.nearVector.distance}`]), this.nearVector.targetVectors && this.nearVector.targetVectors.length > 0 && (r = [...r, `targetVectors:${JSON.stringify(this.nearVector.targetVectors)}`]), t = [...t, `nearVector:{${r.join(",")}}`]; + } + return `{${t.join(",")}}`; + } +}; +var sn = class { + alpha; + query; + vector; + properties; + targetVectors; + fusionType; + searches; + maxVectorDistance; + constructor(t) { + this.alpha = t.alpha, this.query = t.query, this.vector = t.vector, this.properties = t.properties, this.targetVectors = t.targetVectors, this.fusionType = t.fusionType, this.searches = t.searches?.map((r) => new jo(r)), this.maxVectorDistance = t.maxVectorDistance; + } + toString() { + let t = [`query:${JSON.stringify(this.query)}`]; + return this.alpha !== void 0 && (t = [...t, `alpha:${JSON.stringify(this.alpha)}`]), this.vector !== void 0 && (t = [...t, `vector:${JSON.stringify(this.vector)}`]), this.properties && this.properties.length > 0 && (t = [...t, `properties:${JSON.stringify(this.properties)}`]), this.targetVectors && this.targetVectors.length > 0 && (t = [...t, `targetVectors:${JSON.stringify(this.targetVectors)}`]), this.fusionType !== void 0 && (t = [...t, `fusionType:${this.fusionType}`]), this.searches !== void 0 && (t = [...t, `searches:[${this.searches.map((r) => r.toString()).join(",")}]`]), this.maxVectorDistance !== void 0 && (t = [...t, `maxVectorDistance:${this.maxVectorDistance}`]), `{${t.join(",")}}`; + } +}; +d(); +var Sr = class { + certainty; + distance; + media; + type; + targetVectors; + constructor(t) { + this.certainty = t.certainty, this.distance = t.distance, this.media = t.media, this.type = t.type, this.targetVectors = t.targetVectors; + } + toString(t = true) { + let r = []; + if (this.media.startsWith("data:")) { + let a = ";base64,"; + this.media = this.media.substring(this.media.indexOf(a) + a.length); + } + return r = [...r, `${this.type.toLowerCase()}:${JSON.stringify(this.media)}`], this.certainty && (r = [...r, `certainty:${this.certainty}`]), this.distance && (r = [...r, `distance:${this.distance}`]), this.targetVectors && this.targetVectors.length > 0 && (r = [...r, `targetVectors:${JSON.stringify(this.targetVectors)}`]), t ? `{${r.join(",")}}` : `${r.join(",")}`; + } +}; +d(); +var kr = class { + beacon; + certainty; + distance; + id; + targetVectors; + constructor(t) { + this.beacon = t.beacon, this.certainty = t.certainty, this.distance = t.distance, this.id = t.id, this.targetVectors = t.targetVectors; + } + toString(t = true) { + this.validate(); + let r = []; + return this.id && (r = [...r, `id:${JSON.stringify(this.id)}`]), this.beacon && (r = [...r, `beacon:${JSON.stringify(this.beacon)}`]), this.certainty && (r = [...r, `certainty:${this.certainty}`]), this.distance && (r = [...r, `distance:${this.distance}`]), this.targetVectors && this.targetVectors.length > 0 && (r = [...r, `targetVectors:${JSON.stringify(this.targetVectors)}`]), t ? `{${r.join(",")}}` : `${r.join(",")}`; + } + validate() { + if (!this.id && !this.beacon) throw new Error("nearObject filter: id or beacon needs to be set"); + } +}; +d(); +var Ir = class { + certainty; + distance; + vector; + targetVectors; + constructor(t) { + this.certainty = t.certainty, this.distance = t.distance, this.vector = t.vector, this.targetVectors = t.targetVectors; + } + toString(t = true) { + let r = [`vector:${JSON.stringify(this.vector)}`]; + return this.certainty && (r = [...r, `certainty:${this.certainty}`]), this.distance && (r = [...r, `distance:${this.distance}`]), this.targetVectors && this.targetVectors.length > 0 && (r = [...r, `targetVectors:${JSON.stringify(this.targetVectors)}`]), t ? `{${r.join(",")}}` : `${r.join(",")}`; + } +}; +d(); +var un = class e5 { + operands; + operator; + path; + source; + valueContent; + valueType; + constructor(t) { + this.source = t; + } + toString() { + if (this.parse(), this.validate(), this.operands) return `{operator:${this.operator},operands:[${this.operands}]}`; + { + let t = this.getValueType(), r = this.marshalValueContent(); + return `{operator:${this.operator},${t}:${r},path:${JSON.stringify(this.path)}}`; + } + } + marshalValueContent() { + return this.valueType == "valueGeoRange" ? this.marshalValueGeoRange() : JSON.stringify(this.valueContent); + } + getValueType() { + switch (this.valueType) { + case "valueStringArray": + return "valueString"; + case "valueTextArray": + return "valueText"; + case "valueIntArray": + return "valueInt"; + case "valueNumberArray": + return "valueNumber"; + case "valueDateArray": + return "valueDate"; + case "valueBooleanArray": + return "valueBoolean"; + default: + return this.valueType; + } + } + marshalValueGeoRange() { + let t = [], r = this.valueContent.geoCoordinates; + if (r) { + let i = []; + r.latitude && (i = [...i, `latitude:${r.latitude}`]), r.longitude && (i = [...i, `longitude:${r.longitude}`]), t = [...t, `geoCoordinates:{${i.join(",")}}`]; + } + let a = this.valueContent.distance; + if (a) { + let i = []; + a.max && (i = [...i, `max:${a.max}`]), t = [...t, `distance:{${i.join(",")}}`]; + } + return `{${t.join(",")}}`; + } + validate() { + if (!this.operator) throw new Error("where filter: operator cannot be empty"); + if (!this.operands) { + if (!this.valueType) throw new Error("where filter: value cannot be empty"); + if (!this.path) throw new Error("where filter: path cannot be empty"); + } + } + parse() { + for (let t in this.source) switch (t) { + case "operator": + this.parseOperator(this.source[t]); + break; + case "operands": + this.parseOperands(this.source[t]); + break; + case "path": + this.parsePath(this.source[t]); + break; + default: + if (t.indexOf("value") != 0) throw new Error("where filter: unrecognized key '" + t + "'"); + this.parseValue(t, this.source[t]); + } + } + parseOperator(t) { + if (typeof t != "string") throw new Error("where filter: operator must be a string"); + this.operator = t; + } + parsePath(t) { + if (!Array.isArray(t)) throw new Error("where filter: path must be an array"); + this.path = t; + } + parseValue(t, r) { + switch (t) { + case "valueString": + case "valueText": + case "valueInt": + case "valueNumber": + case "valueDate": + case "valueBoolean": + case "valueStringArray": + case "valueTextArray": + case "valueIntArray": + case "valueNumberArray": + case "valueDateArray": + case "valueBooleanArray": + case "valueGeoRange": + break; + default: + throw new Error("where filter: unrecognized value prop '" + t + "'"); + } + this.valueType = t, this.valueContent = r; + } + parseOperands(t) { + if (!Array.isArray(t)) throw new Error("where filter: operands must be an array"); + this.operands = t.map((r) => new e5(r).toString()).join(","); + } +}; +var _r = class extends O { + className; + fields; + groupBy; + hybridString; + includesNearMediaFilter; + limit; + nearMediaString; + nearMediaType; + nearObjectString; + nearTextString; + nearVectorString; + objectLimit; + whereString; + tenant; + constructor(t) { + super(t), this.includesNearMediaFilter = false; + } + withFields = (t) => (this.fields = t, this); + withClassName = (t) => (this.className = t, this); + withWhere = (t) => { + try { + this.whereString = new un(t).toString(); + } catch (r) { + this.addError(r); + } + return this; + }; + withNearMedia = (t) => { + if (this.includesNearMediaFilter) throw new Error("cannot use multiple near filters in a single query"); + try { + this.nearMediaString = new Sr(t).toString(), this.nearMediaType = t.type, this.includesNearMediaFilter = true; + } catch (r) { + this.addError(r.toString()); + } + return this; + }; + withNearImage = (t) => this.withNearMedia({ ...t, media: t.image, type: "Image" }); + withNearAudio = (t) => this.withNearMedia({ ...t, media: t.audio, type: "Audio" }); + withNearVideo = (t) => this.withNearMedia({ ...t, media: t.video, type: "Video" }); + withNearDepth = (t) => this.withNearMedia({ ...t, media: t.depth, type: "Depth" }); + withNearIMU = (t) => this.withNearMedia({ ...t, media: t.imu, type: "IMU" }); + withNearText = (t) => { + if (this.includesNearMediaFilter) throw new Error("cannot use multiple near filters in a single query"); + try { + this.nearTextString = new Or(t).toString(), this.includesNearMediaFilter = true; + } catch (r) { + this.addError(r.toString()); + } + return this; + }; + withNearObject = (t) => { + if (this.includesNearMediaFilter) throw new Error("cannot use multiple near filters in a single query"); + try { + this.nearObjectString = new kr(t).toString(), this.includesNearMediaFilter = true; + } catch (r) { + this.addError(r.toString()); + } + return this; + }; + withNearVector = (t) => { + if (this.includesNearMediaFilter) throw new Error("cannot use multiple near filters in a single query"); + try { + this.nearVectorString = new Ir(t).toString(), this.includesNearMediaFilter = true; + } catch (r) { + this.addError(r.toString()); + } + return this; + }; + withHybrid = (t) => { + try { + this.hybridString = new sn(t).toString(); + } catch (r) { + this.addError(r.toString()); + } + return this; + }; + withObjectLimit = (t) => { + if (!Ld(t)) throw new Error("objectLimit must be a non-negative integer"); + return this.objectLimit = t, this; + }; + withLimit = (t) => (this.limit = t, this); + withGroupBy = (t) => (this.groupBy = t, this); + withTenant = (t) => (this.tenant = t, this); + validateGroup = () => { + if (this.groupBy && !Array.isArray(this.groupBy)) throw new Error("groupBy must be an array"); + }; + validateIsSet = (t, r, a) => { + (t == null || t == null || t.length == 0) && this.addError(`${r} must be set - set with ${a}`); + }; + validate = () => { + this.validateGroup(), this.validateIsSet(this.className, "className", ".withClassName(className)"), this.validateIsSet(this.fields, "fields", ".withFields(fields)"); + }; + do = () => { + let t = ""; + if (this.validate(), this.errors.length > 0) return Promise.reject(new Error("invalid usage: " + this.errors.join(", "))); + if (this.whereString || this.nearTextString || this.nearObjectString || this.nearVectorString || this.limit || this.groupBy || this.hybridString || this.tenant) { + let r = []; + this.whereString && (r = [...r, `where:${this.whereString}`]), this.nearTextString && (r = [...r, `nearText:${this.nearTextString}`]), this.nearObjectString && (r = [...r, `nearObject:${this.nearObjectString}`]), this.nearVectorString && (r = [...r, `nearVector:${this.nearVectorString}`]), this.nearMediaString && (r = [...r, `${this.nearMediaType}:${this.nearMediaString}`]), this.groupBy && (r = [...r, `groupBy:${JSON.stringify(this.groupBy)}`]), this.hybridString && (r = [...r, `hybrid:${this.hybridString}`]), this.limit && (r = [...r, `limit:${this.limit}`]), this.objectLimit && (r = [...r, `objectLimit:${this.objectLimit}`]), this.tenant && (r = [...r, `tenant:"${this.tenant}"`]), t = `(${r.join(",")})`; + } + return this.client.query(`{Aggregate{${this.className}${t}{${this.fields}}}}`); + }; +}; +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +var es = {}; +d(); +d(); +var Et = class { + client; + constructor(t) { + this.client = t; + } + do = () => this.client.getRaw("/.well-known/openid-configuration").then((t) => t.status < 400 ? t.json() : t.status == 404 ? Promise.resolve(void 0) : Promise.reject(new Error(`unexpected status code: ${t.status}`))); +}; +d(); +var zd = "3.13.1"; +d(); +var is = (e24) => typeof e24 == "string" || e24 instanceof Br; +var $d = (e24) => e24 instanceof Br ? e24 : new Br(e24); +var oo = class { + http; + creds; + accessToken; + refreshToken; + expiresAt; + refreshRunning; + refreshInterval; + constructor(t, r) { + this.http = t, this.creds = r, this.accessToken = "", this.refreshToken = "", this.expiresAt = 0, this.refreshRunning = false, this.creds instanceof dn && (this.accessToken = this.creds.accessToken, this.expiresAt = this.creds.expiresAt, this.refreshToken = this.creds.refreshToken); + } + refresh = async (t) => { + let r = await this.getOpenidConfig(t), a; + switch (this.creds.constructor) { + case xa: + a = new ts(this.http, this.creds, r); + break; + case dn: + a = new rs(this.http, this.creds, r); + break; + case Ca: + a = new ns(this.http, this.creds, r); + break; + default: + throw new Error("unsupported credential type"); + } + return a.refresh().then((i) => { + this.accessToken = i.accessToken, this.expiresAt = i.expiresAt, this.refreshToken = i.refreshToken, this.startTokenRefresh(a); + }); + }; + getOpenidConfig = (t) => this.http.externalGet(t.href).then((r) => { + let a = t.scopes || []; + return { clientId: t.clientId, provider: r, scopes: a }; + }); + startTokenRefresh = (t) => { + this.creds.silentRefresh && !this.refreshRunning && this.refreshTokenProvided() && (this.refreshInterval = setInterval(async () => { + if (this.expiresAt - Date.now() <= 6e4) { + let r = await t.refresh(); + this.accessToken = r.accessToken, this.expiresAt = r.expiresAt, this.refreshToken = r.refreshToken; + } + }, 3e4), this.refreshRunning = true); + }; + stopTokenRefresh = () => { + clearInterval(this.refreshInterval), this.refreshRunning = false; + }; + refreshTokenProvided = () => this.refreshToken && this.refreshToken != ""; + getAccessToken = () => this.accessToken; + getExpiresAt = () => this.expiresAt; + resetExpiresAt() { + this.expiresAt = 0; + } +}; +var xa = class { + username; + password; + scopes; + silentRefresh; + constructor(t) { + this.username = t.username, this.password = t.password, this.scopes = t.scopes, this.silentRefresh = as(t.silentRefresh); + } +}; +var ts = class { + creds; + http; + openidConfig; + constructor(t, r, a) { + this.http = t, this.creds = r, this.openidConfig = a, r.scopes && this.openidConfig.scopes.push(r.scopes); + } + refresh = () => (this.validateOpenidConfig(), this.requestAccessToken().then((t) => ({ accessToken: t.access_token, expiresAt: so(t.expires_in), refreshToken: t.refresh_token })).catch((t) => Promise.reject(new Error(`failed to refresh access token: ${t}`)))); + validateOpenidConfig = () => { + if (this.openidConfig.provider.grant_types_supported !== void 0 && !this.openidConfig.provider.grant_types_supported.includes("password")) throw new Error("grant_type password not supported"); + if (this.openidConfig.provider.token_endpoint.includes("https://login.microsoftonline.com")) throw new Error("microsoft/azure recommends to avoid authentication using username and password, so this method is not supported by this client"); + this.openidConfig.scopes.push("offline_access"); + }; + requestAccessToken = () => { + let t = this.openidConfig.provider.token_endpoint, r = new URLSearchParams({ grant_type: "password", client_id: this.openidConfig.clientId, username: this.creds.username, password: this.creds.password, scope: this.openidConfig.scopes.join(" ") }); + return this.http.externalPost(t, r, "application/x-www-form-urlencoded;charset=UTF-8"); + }; +}; +var dn = class { + accessToken; + expiresAt; + refreshToken; + silentRefresh; + constructor(t) { + this.validate(t), this.accessToken = t.accessToken, this.expiresAt = so(t.expiresIn), this.refreshToken = t.refreshToken, this.silentRefresh = as(t.silentRefresh); + } + validate = (t) => { + if (t.expiresIn === void 0) throw new Error("AuthAccessTokenCredentials: expiresIn is required"); + if (!Number.isInteger(t.expiresIn) || t.expiresIn <= 0) throw new Error("AuthAccessTokenCredentials: expiresIn must be int > 0"); + }; +}; +var rs = class { + creds; + http; + openidConfig; + constructor(t, r, a) { + this.http = t, this.creds = r, this.openidConfig = a; + } + refresh = () => this.creds.refreshToken === void 0 || this.creds.refreshToken == "" ? (console.warn("AuthAccessTokenCredentials not provided with refreshToken, cannot refresh"), Promise.resolve({ accessToken: this.creds.accessToken, expiresAt: this.creds.expiresAt })) : (this.validateOpenidConfig(), this.requestAccessToken().then((t) => ({ accessToken: t.access_token, expiresAt: so(t.expires_in), refreshToken: t.refresh_token })).catch((t) => Promise.reject(new Error(`failed to refresh access token: ${t}`)))); + validateOpenidConfig = () => { + }; + requestAccessToken = () => { + let t = this.openidConfig.provider.token_endpoint, r = new URLSearchParams({ grant_type: "refresh_token", client_id: this.openidConfig.clientId, refresh_token: this.creds.refreshToken }); + return this.http.externalPost(t, r, "application/x-www-form-urlencoded;charset=UTF-8"); + }; +}; +var Ca = class { + clientSecret; + scopes; + silentRefresh; + constructor(t) { + this.clientSecret = t.clientSecret, this.scopes = t.scopes, this.silentRefresh = as(t.silentRefresh); + } +}; +var ns = class { + creds; + http; + openidConfig; + constructor(t, r, a) { + this.http = t, this.creds = r, this.openidConfig = a, r.scopes && this.openidConfig.scopes.push(r.scopes); + } + refresh = () => (this.validateOpenidConfig(), this.requestAccessToken().then((t) => ({ accessToken: t.access_token, expiresAt: so(t.expires_in), refreshToken: t.refresh_token })).catch((t) => Promise.reject(new Error(`failed to refresh access token: ${t}`)))); + validateOpenidConfig = () => { + this.openidConfig.scopes.length > 0 || this.openidConfig.provider.token_endpoint.includes("https://login.microsoftonline.com") && this.openidConfig.scopes.push(this.openidConfig.clientId + "/.default"); + }; + requestAccessToken = () => { + let t = this.openidConfig.provider.token_endpoint, r = new URLSearchParams({ grant_type: "client_credentials", client_id: this.openidConfig.clientId, client_secret: this.creds.clientSecret, scope: this.openidConfig.scopes.join(" ") }); + return this.http.externalPost(t, r, "application/x-www-form-urlencoded;charset=UTF-8"); + }; +}; +var Br = class { + apiKey; + constructor(t) { + this.apiKey = t; + } +}; +function so(e24) { + return Date.now() + (e24 - 2) * 1e3; +} +function as(e24) { + return e24 === void 0 ? true : e24; +} +var cn = class { + apiKey; + headers; + authEnabled; + host; + http; + oidcAuth; + constructor(t) { + t = this.sanitizeParams(t), this.host = t.host, this.headers = t.headers, this.http = os(t), this.authEnabled = this.parseAuthParams(t); + } + isWcdOnGcp = () => ["weaviate.io", "semi.technology", "weaviate.cloud"].some((t) => this.host.toLowerCase().includes(t)) && this.host.toLowerCase().includes("gcp"); + parseAuthParams(t) { + if (t.authClientSecret && t.apiKey) throw new F("must provide one of authClientSecret (OIDC) or apiKey, cannot provide both"); + return t.authClientSecret ? (this.oidcAuth = new oo(this.http, t.authClientSecret), true) : t.apiKey ? (this.apiKey = t.apiKey?.apiKey, true) : false; + } + sanitizeParams(t) { + for (; t.host.endsWith("/"); ) t.host = t.host.slice(0, -1); + let r = /^(https?|ftp|file)(?::\/\/)/, a = t.host.match(r); + if (t.scheme) { + if (a && a[1] !== `${t.scheme}`) throw new F(`The host contains a different protocol than specified in the scheme (scheme: ${t.scheme} != host: ${a[1]})`); + a || (t.host = `${t.scheme}://${t.host}`); + } else if (!a) throw new F("The host must start with a recognized protocol (e.g., http or https) if no scheme is provided."); + return t; + } + postReturn = (t, r) => this.authEnabled ? this.login().then((a) => this.http.post(t, r, true, a)) : this.http.post(t, r, true, ""); + postEmpty = (t, r) => this.authEnabled ? this.login().then((a) => this.http.post(t, r, false, a)) : this.http.post(t, r, false, ""); + put = (t, r, a = true) => this.authEnabled ? this.login().then((i) => this.http.put(t, r, a, i)) : this.http.put(t, r, a); + patch = (t, r) => this.authEnabled ? this.login().then((a) => this.http.patch(t, r, a)) : this.http.patch(t, r); + delete = (t, r, a = false) => this.authEnabled ? this.login().then((i) => this.http.delete(t, r, a, i)) : this.http.delete(t, r, a); + head = (t, r) => this.authEnabled ? this.login().then((a) => this.http.head(t, r, a)) : this.http.head(t, r); + get = (t, r = true) => this.authEnabled ? this.login().then((a) => this.http.get(t, r, a)) : this.http.get(t, r); + login = async () => { + if (this.apiKey) return this.apiKey; + if (!this.oidcAuth) return ""; + let t = await new Et(this.http).do(); + return t === void 0 ? (console.warn("client is configured for authentication, but server is not"), "") : (Date.now() >= this.oidcAuth.getExpiresAt() && await this.oidcAuth.refresh(t), this.oidcAuth.getAccessToken()); + }; + getDetails = async () => ({ host: new URL(this.host).host, bearerToken: this.authEnabled ? await this.login().then((t) => `Bearer ${t}`) : void 0, headers: this.headers }); +}; +var Gr = (e24, t, r) => { + let a = new AbortController(), i = setTimeout(() => a.abort(), t * 1e3); + return fetch(e24, { ...r, signal: a.signal }).catch((n) => { + throw (0, import_abort_controller_x.isAbortError)(n) ? new Xr(`Request timed out after ${t}ms`) : n; + }).finally(() => clearTimeout(i)); +}; +var os = (e24) => { + let r = `${e24.host}/v1`, a = um(r); + return { close: () => e24.agent?.destroy?.(), post: (i, n, o, s) => { + let u = { method: "POST", headers: { ...e24.headers, "content-type": "application/json", ...wr(e24, s), ...Ut() }, body: JSON.stringify(n), agent: e24.agent }; + return Gr(a(i), e24.timeout?.insert || 90, u).then(nr(o)); + }, put: (i, n, o = true, s = "") => { + let u = { method: "PUT", headers: { ...e24.headers, "content-type": "application/json", ...wr(e24, s), ...Ut() }, body: JSON.stringify(n), agent: e24.agent }; + return Gr(a(i), e24.timeout?.insert || 90, u).then(nr(o)); + }, patch: (i, n, o = "") => { + let s = { method: "PATCH", headers: { ...e24.headers, "content-type": "application/json", ...wr(e24, o), ...Ut() }, body: JSON.stringify(n), agent: e24.agent }; + return Gr(a(i), e24.timeout?.insert || 90, s).then(nr(false)); + }, delete: (i, n = null, o = false, s = "") => { + let u = { method: "DELETE", headers: { ...e24.headers, "content-type": "application/json", ...wr(e24, s), ...Ut() }, body: n ? JSON.stringify(n) : void 0, agent: e24.agent }; + return Gr(a(i), e24.timeout?.insert || 90, u).then(nr(o)); + }, head: (i, n = null, o = "") => { + let s = { method: "HEAD", headers: { ...e24.headers, "content-type": "application/json", ...wr(e24, o), ...Ut() }, body: n ? JSON.stringify(n) : void 0, agent: e24.agent }; + return Gr(a(i), e24.timeout?.query || 30, s).then(dm(false)); + }, get: (i, n = true, o = "") => { + let s = { method: "GET", headers: { ...e24.headers, ...wr(e24, o), ...Ut() }, agent: e24.agent }; + return Gr(a(i), e24.timeout?.query || 30, s).then(nr(n)); + }, getRaw: (i, n = "") => { + let o = { method: "GET", headers: { ...e24.headers, ...wr(e24, n), ...Ut() }, agent: e24.agent }; + return Gr(a(i), e24.timeout?.query || 30, o); + }, externalGet: (i) => fetch(i, { method: "GET", headers: { ...e24.headers } }).then(nr(true)), externalPost: (i, n, o) => { + (o == null || o == "") && (o = "application/json"); + let s = { body: void 0, method: "POST", headers: { ...e24.headers, "content-type": o } }; + return n != null && (s.body = n), fetch(i, s).then(nr(true)); + } }; +}; +var um = (e24) => (t) => e24 + t; +var nr = (e24) => (t) => t.status >= 400 ? t.text().then((r) => { + let a; + try { + a = JSON.stringify(JSON.parse(r)); + } catch { + a = r; + } + return t.status === 401 ? Promise.reject(new La(a)) : t.status === 403 ? Promise.reject(new jr(403, a)) : Promise.reject(new Ct(t.status, a)); +}) : e24 ? t.json() : Promise.resolve(void 0); +var dm = (e24) => (t) => t.status == 200 || t.status == 204 || t.status == 404 ? Promise.resolve(t.status == 200 || t.status == 204) : nr(e24)(t); +var wr = (e24, t) => t ? { Authorization: `Bearer ${t}`, "X-Weaviate-Cluster-Url": e24.host } : void 0; +var Ut = () => ({ "X-Weaviate-Client": `weaviate-client-typescript/${zd}` }); +var cm = (e24) => new Promise((t, r) => { + e24 instanceof p.Buffer && t(false), es.stat(e24, (a, i) => { + if (a) { + if (a.code == "ENAMETOOLONG") { + t(false); + return; + } + r(a); + return; + } + if (i === void 0) { + t(false); + return; + } + t(i.isFile()); + }); +}); +var Hd = (e24) => { + if (typeof e24 != "string") return false; + try { + return !!new URL(e24); + } catch { + return false; + } +}; +var lm = async (e24) => { + if (!Hd(e24)) throw new Error("Invalid URL"); + try { + let r = await os({ headers: { "Content-Type": "image/*" }, host: "" }).externalGet(e24); + if (!p.Buffer.isBuffer(r)) throw new Error("Response is not a buffer"); + return r.toString("base64"); + } catch { + throw new Error(`Failed to download image from URL: ${e24}`); + } +}; +var fm = (e24) => e24 instanceof p.Buffer; +var pm = (e24) => cm(e24).then((t) => t ? new Promise((r, a) => { + es.readFile(e24, (i, n) => { + i && a(i), r(n.toString("base64")); + }); +}) : fm(e24) ? Promise.resolve(e24.toString("base64")) : Hd(e24) ? lm(e24) : Promise.resolve(e24)); +var lt = (e24) => pm(e24); +d(); +d(); +var De = ze(Ke()); +function gm(e24) { + switch (e24) { + case 0: + case "TENANT_ACTIVITY_STATUS_UNSPECIFIED": + return 0; + case 1: + case "TENANT_ACTIVITY_STATUS_HOT": + return 1; + case 2: + case "TENANT_ACTIVITY_STATUS_COLD": + return 2; + case 4: + case "TENANT_ACTIVITY_STATUS_FROZEN": + return 4; + case 5: + case "TENANT_ACTIVITY_STATUS_UNFREEZING": + return 5; + case 6: + case "TENANT_ACTIVITY_STATUS_FREEZING": + return 6; + case 7: + case "TENANT_ACTIVITY_STATUS_ACTIVE": + return 7; + case 8: + case "TENANT_ACTIVITY_STATUS_INACTIVE": + return 8; + case 9: + case "TENANT_ACTIVITY_STATUS_OFFLOADED": + return 9; + case 10: + case "TENANT_ACTIVITY_STATUS_OFFLOADING": + return 10; + case 11: + case "TENANT_ACTIVITY_STATUS_ONLOADING": + return 11; + case -1: + case "UNRECOGNIZED": + default: + return -1; + } +} +function mm(e24) { + switch (e24) { + case 0: + return "TENANT_ACTIVITY_STATUS_UNSPECIFIED"; + case 1: + return "TENANT_ACTIVITY_STATUS_HOT"; + case 2: + return "TENANT_ACTIVITY_STATUS_COLD"; + case 4: + return "TENANT_ACTIVITY_STATUS_FROZEN"; + case 5: + return "TENANT_ACTIVITY_STATUS_UNFREEZING"; + case 6: + return "TENANT_ACTIVITY_STATUS_FREEZING"; + case 7: + return "TENANT_ACTIVITY_STATUS_ACTIVE"; + case 8: + return "TENANT_ACTIVITY_STATUS_INACTIVE"; + case 9: + return "TENANT_ACTIVITY_STATUS_OFFLOADED"; + case 10: + return "TENANT_ACTIVITY_STATUS_OFFLOADING"; + case 11: + return "TENANT_ACTIVITY_STATUS_ONLOADING"; + case -1: + default: + return "UNRECOGNIZED"; + } +} +function Qd() { + return { collection: "", names: void 0 }; +} +var Ra = { encode(e24, t = De.default.Writer.create()) { + return e24.collection !== "" && t.uint32(10).string(e24.collection), e24.names !== void 0 && ln.encode(e24.names, t.uint32(18).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof De.default.Reader ? e24 : De.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Qd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.collection = r.string(); + continue; + case 2: + if (n !== 18) break; + i.names = ln.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { collection: Pa(e24.collection) ? globalThis.String(e24.collection) : "", names: Pa(e24.names) ? ln.fromJSON(e24.names) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.collection !== "" && (t.collection = e24.collection), e24.names !== void 0 && (t.names = ln.toJSON(e24.names)), t; +}, create(e24) { + return Ra.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Qd(); + return t.collection = e24.collection ?? "", t.names = e24.names !== void 0 && e24.names !== null ? ln.fromPartial(e24.names) : void 0, t; +} }; +function Kd() { + return { values: [] }; +} +var ln = { encode(e24, t = De.default.Writer.create()) { + for (let r of e24.values) t.uint32(10).string(r); + return t; +}, decode(e24, t) { + let r = e24 instanceof De.default.Reader ? e24 : De.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Kd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values.push(r.string()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.String(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values), t; +}, create(e24) { + return ln.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Kd(); + return t.values = e24.values?.map((r) => r) || [], t; +} }; +function Yd() { + return { took: 0, tenants: [] }; +} +var ss = { encode(e24, t = De.default.Writer.create()) { + e24.took !== 0 && t.uint32(13).float(e24.took); + for (let r of e24.tenants) fn.encode(r, t.uint32(18).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof De.default.Reader ? e24 : De.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Yd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 13) break; + i.took = r.float(); + continue; + case 2: + if (n !== 18) break; + i.tenants.push(fn.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { took: Pa(e24.took) ? globalThis.Number(e24.took) : 0, tenants: globalThis.Array.isArray(e24?.tenants) ? e24.tenants.map((t) => fn.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.took !== 0 && (t.took = e24.took), e24.tenants?.length && (t.tenants = e24.tenants.map((r) => fn.toJSON(r))), t; +}, create(e24) { + return ss.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Yd(); + return t.took = e24.took ?? 0, t.tenants = e24.tenants?.map((r) => fn.fromPartial(r)) || [], t; +} }; +function Zd() { + return { name: "", activityStatus: 0 }; +} +var fn = { encode(e24, t = De.default.Writer.create()) { + return e24.name !== "" && t.uint32(10).string(e24.name), e24.activityStatus !== 0 && t.uint32(16).int32(e24.activityStatus), t; +}, decode(e24, t) { + let r = e24 instanceof De.default.Reader ? e24 : De.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Zd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.name = r.string(); + continue; + case 2: + if (n !== 16) break; + i.activityStatus = r.int32(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { name: Pa(e24.name) ? globalThis.String(e24.name) : "", activityStatus: Pa(e24.activityStatus) ? gm(e24.activityStatus) : 0 }; +}, toJSON(e24) { + let t = {}; + return e24.name !== "" && (t.name = e24.name), e24.activityStatus !== 0 && (t.activityStatus = mm(e24.activityStatus)), t; +}, create(e24) { + return fn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Zd(); + return t.name = e24.name ?? "", t.activityStatus = e24.activityStatus ?? 0, t; +} }; +function Pa(e24) { + return e24 != null; +} +d(); +var uo = () => new Promise((e24) => setTimeout(e24, 0)); +d(); +d(); +var ir = class { + objects; + targetCollection; + uuids; + constructor(t, r, a) { + this.objects = r ?? [], this.targetCollection = t, this.uuids = a; + } + toBeaconObjs() { + return this.uuids ? this.uuids.map((t) => Fe(t, this.targetCollection)) : []; + } + toBeaconStrings() { + return this.uuids ? this.uuids.map((t) => Fe(t, this.targetCollection).beacon) : []; + } + isMultiTarget() { + return this.targetCollection !== ""; + } +}; +var us = class { + static to(t) { + return new ir("", void 0, Array.isArray(t) ? t : [t]); + } + static toMultiTarget(t, r) { + return new ir(r, void 0, Array.isArray(t) ? t : [t]); + } +}; +var fe = class { + static isReferenceManager(t) { + return t instanceof ir; + } + static isUuid(t) { + return typeof t == "string"; + } + static isUuids(t) { + return Array.isArray(t); + } + static isMultiTarget(t) { + return t.targetCollection !== void 0; + } +}; +function Fe(e24, t) { + return { beacon: `weaviate://localhost/${t ? `${t}/` : ""}${e24}` }; +} +var Xd = (e24, t, r) => new ir(t, e24, r); +var Aa = (e24) => fe.isReferenceManager(e24) ? e24.toBeaconObjs() : fe.isUuid(e24) ? [Fe(e24)] : fe.isUuids(e24) ? e24.map((t) => Fe(t)) : fe.isMultiTarget(e24) ? typeof e24.uuids == "string" ? [Fe(e24.uuids, e24.targetCollection)] : e24.uuids.map((t) => Fe(t, e24.targetCollection)) : []; +var Tm = 2; +var vm = 4; +var Y = class e6 { + static use(t) { + return Promise.resolve(new e6()); + } + static aggregateBoolean(t) { + return { count: t.count, percentageFalse: t.percentageFalse, percentageTrue: t.percentageTrue, totalFalse: t.totalFalse, totalTrue: t.totalTrue }; + } + static aggregateDate(t) { + let r = (a) => a !== void 0 ? a : void 0; + return { count: t.count, maximum: r(t.maximum), median: r(t.median), minimum: r(t.minimum), mode: r(t.mode) }; + } + static aggregateInt(t) { + return { count: t.count, maximum: t.maximum, mean: t.mean, median: t.median, minimum: t.minimum, mode: t.mode, sum: t.sum }; + } + static aggregateNumber(t) { + return { count: t.count, maximum: t.maximum, mean: t.mean, median: t.median, minimum: t.minimum, mode: t.mode, sum: t.sum }; + } + static aggregateText(t) { + return { count: t.count, topOccurrences: t.topOccurences?.items.map((r) => ({ occurs: r.occurs, value: r.value })) }; + } + static mapAggregate(t) { + if (t.boolean !== void 0) return e6.aggregateBoolean(t.boolean); + if (t.date !== void 0) return e6.aggregateDate(t.date); + if (t.int !== void 0) return e6.aggregateInt(t.int); + if (t.number !== void 0) return e6.aggregateNumber(t.number); + if (t.text !== void 0) return e6.aggregateText(t.text); + throw new b(`Unknown aggregation type: ${t}`); + } + static aggregations(t) { + return t ? Object.fromEntries(t.aggregations.map((r) => [r.property, e6.mapAggregate(r)])) : {}; + } + static aggregate(t) { + if (t.singleResult === void 0) throw new b("No single result in aggregate response"); + return { totalCount: t.singleResult.objectsCount, properties: e6.aggregations(t.singleResult.aggregations) }; + } + static aggregateGroupBy(t) { + if (t.groupedResults === void 0) throw new b("No grouped results in aggregate response"); + let r = (a) => { + if (a === void 0) throw new b("No groupedBy in aggregate response"); + let i; + return a.boolean !== void 0 ? i = a.boolean : a.booleans !== void 0 ? i = a.booleans.values : a.geo !== void 0 ? i = a.geo : a.int !== void 0 ? i = a.int : a.ints !== void 0 ? i = a.ints.values : a.number !== void 0 ? i = a.number : a.numbers !== void 0 ? i = a.numbers.values : a.text !== void 0 ? i = a.text : a.texts !== void 0 ? i = a.texts.values : (console.warn(`Unknown groupBy type: ${JSON.stringify(a, null, 2)}`), i = ""), { prop: a.path[0], value: i }; + }; + return t.groupedResults.groups.map((a) => ({ totalCount: a.objectsCount, groupedBy: r(a.groupedBy), properties: e6.aggregations(a.aggregations) })); + } + async query(t) { + return { objects: await Promise.all(t.results.map(async (r) => ({ metadata: e6.metadata(r.metadata), properties: this.properties(r.properties), references: await this.references(r.properties), uuid: e6.uuid(r.metadata), vectors: await e6.vectors(r.metadata) }))), queryProfile: t.queryProfile }; + } + async generate(t) { + return { objects: await Promise.all(t.results.map(async (r) => ({ generated: r.metadata?.generativePresent ? r.metadata?.generative : r.generative ? r.generative.values[0].result : void 0, generative: r.generative ? { text: r.generative.values[0].result, debug: r.generative.values[0].debug, metadata: r.generative.values[0].metadata } : r.metadata?.generativePresent ? { text: r.metadata?.generative } : void 0, metadata: e6.metadata(r.metadata), properties: this.properties(r.properties), references: await this.references(r.properties), uuid: e6.uuid(r.metadata), vectors: await e6.vectors(r.metadata) }))), generated: t.generativeGroupedResult !== "" ? t.generativeGroupedResult : t.generativeGroupedResults ? t.generativeGroupedResults.values[0].result : void 0, generative: t.generativeGroupedResults ? { text: t.generativeGroupedResults?.values[0].result, metadata: t.generativeGroupedResults?.values[0].metadata } : t.generativeGroupedResult !== "" ? { text: t.generativeGroupedResult } : void 0, queryProfile: t.queryProfile }; + } + async queryGroupBy(t) { + let r = [], a = {}; + for (let i of t.groupByResults) { + let n = await Promise.all(i.objects.map(async (o) => ({ belongsToGroup: i.name, metadata: e6.metadata(o.metadata), properties: this.properties(o.properties), references: await this.references(o.properties), uuid: e6.uuid(o.metadata), vectors: await e6.vectors(o.metadata) }))); + a[i.name] = { maxDistance: i.maxDistance, minDistance: i.minDistance, name: i.name, numberOfObjects: i.numberOfObjects, objects: n }, r.push(...n); + } + return { objects: r, groups: a, queryProfile: t.queryProfile }; + } + async generateGroupBy(t) { + let r = [], a = {}; + for (let i of t.groupByResults) { + let n = await Promise.all(i.objects.map(async (o) => ({ belongsToGroup: i.name, metadata: e6.metadata(o.metadata), properties: this.properties(o.properties), references: await this.references(o.properties), uuid: e6.uuid(o.metadata), vectors: await e6.vectors(o.metadata) }))); + a[i.name] = { maxDistance: i.maxDistance, minDistance: i.minDistance, name: i.name, numberOfObjects: i.numberOfObjects, objects: n, generated: i.generative?.result }, r.push(...n); + } + return { objects: r, groups: a, generated: t.generativeGroupedResult, queryProfile: t.queryProfile }; + } + properties(t) { + return t ? this.objectProperties(t.nonRefProps) : {}; + } + async references(t) { + if (!t) return; + if (t.refProps.length === 0) return t.refPropsRequested ? {} : void 0; + let r = {}; + for (let a of t.refProps) { + let i = []; + r[a.propName] = Xd(await Promise.all(a.properties.map(async (n) => { + let o = e6.uuid(n.metadata); + return i.push(o), { metadata: e6.metadata(n.metadata), properties: this.properties(n), references: await this.references(n), uuid: o, vectors: await e6.vectors(n.metadata) }; + })), a.properties.length > 0 ? a.properties[0].targetCollection : "", i); + } + return r; + } + parsePropertyValue(t) { + if (t.boolValue !== void 0) return t.boolValue; + if (t.dateValue !== void 0) return new Date(t.dateValue); + if (t.intValue !== void 0) return t.intValue; + if (t.listValue !== void 0) return this.parseListValue(t.listValue); + if (t.numberValue !== void 0) return t.numberValue; + if (t.objectValue !== void 0) return this.objectProperties(t.objectValue); + if (t.textValue !== void 0) return t.textValue; + if (t.uuidValue !== void 0) return t.uuidValue; + if (t.blobValue !== void 0) return t.blobValue; + if (t.geoValue !== void 0) return t.geoValue; + if (t.phoneValue !== void 0) return t.phoneValue; + if (t.nullValue === void 0) throw new b(`Unknown value type: ${JSON.stringify(t, null, 2)}`); + } + parseListValue(t) { + if (t.boolValues !== void 0) return t.boolValues.values; + if (t.dateValues !== void 0) return t.dateValues.values.map((r) => new Date(r)); + if (t.intValues !== void 0) return e6.intsFromBytes(t.intValues.values); + if (t.numberValues !== void 0) return e6.numbersFromBytes(t.numberValues.values); + if (t.objectValues !== void 0) return t.objectValues.values.map((r) => this.objectProperties(r)); + if (t.textValues !== void 0) return t.textValues.values; + if (t.uuidValues !== void 0) return t.uuidValues.values; + throw new Error(`Unknown list value type: ${JSON.stringify(t, null, 2)}`); + } + objectProperties(t) { + let r = {}; + return t && Object.entries(t.fields).forEach(([a, i]) => { + r[a] = this.parsePropertyValue(i); + }), r; + } + static metadata(t) { + let r = {}; + if (t) return t.creationTimeUnixPresent && (r.creationTime = new Date(t.creationTimeUnix)), t.lastUpdateTimeUnixPresent && (r.updateTime = new Date(t.lastUpdateTimeUnix)), t.distancePresent && (r.distance = t.distance), t.certaintyPresent && (r.certainty = t.certainty), t.scorePresent && (r.score = t.score), t.explainScorePresent && (r.explainScore = t.explainScore), t.rerankScorePresent && (r.rerankScore = t.rerankScore), t.isConsistent && (r.isConsistent = t.isConsistent), r; + } + static uuid(t) { + if (!t || !(t.id.length > 0)) throw new b("No uuid returned from server"); + return t.id; + } + static vectorsFromBytes(t) { + let r = Tm, i = p.Buffer.from(t.slice(0, r)).readUInt16LE(0), n = vm * i, o = (t.byteLength - r) / n; + return Promise.all(Array(o).fill(0).map((s, u) => uo().then(() => e6.vectorFromBytes(t.slice(r + u * n, r + (u + 1) * n))))); + } + static vectorFromBytes(t) { + let r = p.Buffer.from(t), a = new Float32Array(r.buffer, r.byteOffset, r.byteLength / 4); + return Array.from(a); + } + static intsFromBytes(t) { + let r = p.Buffer.from(t), a = new BigInt64Array(r.buffer, r.byteOffset, r.byteLength / 8); + return Array.from(a).map(Number); + } + static numbersFromBytes(t) { + let r = p.Buffer.from(t), a = new Float64Array(r.buffer, r.byteOffset, r.byteLength / 8); + return Array.from(a); + } + static async vectors(t) { + return t ? t.vectorBytes.length === 0 && t.vector.length === 0 && t.vectors.length === 0 ? {} : t.vectorBytes.length > 0 ? { default: e6.vectorFromBytes(t.vectorBytes) } : Object.fromEntries(await Promise.all(t.vectors.map(async (r) => [r.name, r.type === 2 ? await e6.vectorsFromBytes(r.vectorBytes) : e6.vectorFromBytes(r.vectorBytes)]))) : {}; + } + static batchObjects(t, r, a, i) { + let n = [], o = {}, s = {}, u = {}; + t.errors.forEach((c) => { + u[c.index] = c.error; + }); + for (let [c, f2] of r.entries()) if (c in u) { + let y = { message: u[c], object: f2, originalUuid: f2.id }; + o[c] = y, n[c] = y; + } else { + let y = a[c]; + s[c] = y.uuid, n[c] = y.uuid; + } + return { uuids: s, errors: o, hasErrors: t.errors.length > 0, allResponses: n, elapsedSeconds: i }; + } + static deleteMany(t, r) { + return { ...t, objects: r ? t.objects.map((a) => ({ id: stringify_default(a.uuid), successful: a.successful, error: a.error })) : void 0 }; + } + static activityStatusGRPC(t) { + switch (t) { + case 2: + case 8: + return "INACTIVE"; + case 1: + case 7: + return "ACTIVE"; + case 4: + case 9: + return "OFFLOADED"; + case 6: + case 10: + return "OFFLOADING"; + case 5: + case 11: + return "ONLOADING"; + default: + throw new Error(`Unsupported tenant activity status: ${t}`); + } + } + static activityStatusREST(t) { + switch (t) { + case "COLD": + return "INACTIVE"; + case "HOT": + return "ACTIVE"; + case "FROZEN": + return "OFFLOADED"; + case "FREEZING": + return "OFFLOADING"; + case "UNFREEZING": + return "ONLOADING"; + case void 0: + return "ACTIVE"; + default: + return t; + } + } + static tenantsGet(t) { + let r = {}; + return t.tenants.forEach((a) => { + r[a.name] = { name: a.name, activityStatus: e6.activityStatusGRPC(a.activityStatus) }; + }), r; + } +}; +d(); +var Te = class { + static is1D(t) { + return Array.isArray(t) && t.length > 0 && !Array.isArray(t[0]); + } + static is2D(t) { + return Array.isArray(t) && t.length > 0 && Array.isArray(t[0]) && t[0].length > 0; + } + static isObject(t) { + return !Array.isArray(t); + } + static isListOf1D(t) { + let r = t; + return !Array.isArray(t) && r.kind === "listOfVectors" && r.dimensionality == "1D"; + } + static isListOf2D(t) { + let r = t; + return !Array.isArray(t) && r.kind === "listOfVectors" && r.dimensionality == "2D"; + } +}; +var Dt = class { + static is1DArray(t) { + return Array.isArray(t) && t.length > 0 && !Array.isArray(t[0]); + } + static is2DArray(t) { + return Array.isArray(t) && t.length > 0 && Array.isArray(t[0]); + } +}; +var Mr = class { + static isSingle(t) { + return typeof t == "string"; + } + static isMulti(t) { + return Array.isArray(t); + } + static isMultiJoin(t) { + let r = t; + return r.combination !== void 0 && r.targetVectors !== void 0; + } +}; +var ds = class { + static and() { + return { operator: "And" }; + } + static or(t) { + return { ...t, operator: "Or" }; + } +}; +d(); +d(); +var I = ze(Ke()); +function bm(e24) { + switch (e24) { + case 0: + case "COMBINATION_METHOD_UNSPECIFIED": + return 0; + case 1: + case "COMBINATION_METHOD_TYPE_SUM": + return 1; + case 2: + case "COMBINATION_METHOD_TYPE_MIN": + return 2; + case 3: + case "COMBINATION_METHOD_TYPE_AVERAGE": + return 3; + case 4: + case "COMBINATION_METHOD_TYPE_RELATIVE_SCORE": + return 4; + case 5: + case "COMBINATION_METHOD_TYPE_MANUAL": + return 5; + case -1: + case "UNRECOGNIZED": + default: + return -1; + } +} +function xm(e24) { + switch (e24) { + case 0: + return "COMBINATION_METHOD_UNSPECIFIED"; + case 1: + return "COMBINATION_METHOD_TYPE_SUM"; + case 2: + return "COMBINATION_METHOD_TYPE_MIN"; + case 3: + return "COMBINATION_METHOD_TYPE_AVERAGE"; + case 4: + return "COMBINATION_METHOD_TYPE_RELATIVE_SCORE"; + case 5: + return "COMBINATION_METHOD_TYPE_MANUAL"; + case -1: + default: + return "UNRECOGNIZED"; + } +} +function Cm(e24) { + switch (e24) { + case 0: + case "OPERATOR_UNSPECIFIED": + return 0; + case 1: + case "OPERATOR_OR": + return 1; + case 2: + case "OPERATOR_AND": + return 2; + case -1: + case "UNRECOGNIZED": + default: + return -1; + } +} +function Pm(e24) { + switch (e24) { + case 0: + return "OPERATOR_UNSPECIFIED"; + case 1: + return "OPERATOR_OR"; + case 2: + return "OPERATOR_AND"; + case -1: + default: + return "UNRECOGNIZED"; + } +} +function Rm(e24) { + switch (e24) { + case 0: + case "FUSION_TYPE_UNSPECIFIED": + return 0; + case 1: + case "FUSION_TYPE_RANKED": + return 1; + case 2: + case "FUSION_TYPE_RELATIVE_SCORE": + return 2; + case -1: + case "UNRECOGNIZED": + default: + return -1; + } +} +function Am(e24) { + switch (e24) { + case 0: + return "FUSION_TYPE_UNSPECIFIED"; + case 1: + return "FUSION_TYPE_RANKED"; + case 2: + return "FUSION_TYPE_RELATIVE_SCORE"; + case -1: + default: + return "UNRECOGNIZED"; + } +} +function jd() { + return { target: "", weight: 0 }; +} +var pn = { encode(e24, t = I.default.Writer.create()) { + return e24.target !== "" && t.uint32(10).string(e24.target), e24.weight !== 0 && t.uint32(21).float(e24.weight), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = jd(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.target = r.string(); + continue; + case 2: + if (n !== 21) break; + i.weight = r.float(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { target: A(e24.target) ? globalThis.String(e24.target) : "", weight: A(e24.weight) ? globalThis.Number(e24.weight) : 0 }; +}, toJSON(e24) { + let t = {}; + return e24.target !== "" && (t.target = e24.target), e24.weight !== 0 && (t.weight = e24.weight), t; +}, create(e24) { + return pn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = jd(); + return t.target = e24.target ?? "", t.weight = e24.weight ?? 0, t; +} }; +function ec() { + return { targetVectors: [], combination: 0, weightsForTargets: [] }; +} +var B = { encode(e24, t = I.default.Writer.create()) { + for (let r of e24.targetVectors) t.uint32(10).string(r); + e24.combination !== 0 && t.uint32(16).int32(e24.combination); + for (let r of e24.weightsForTargets) pn.encode(r, t.uint32(34).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = ec(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.targetVectors.push(r.string()); + continue; + case 2: + if (n !== 16) break; + i.combination = r.int32(); + continue; + case 4: + if (n !== 34) break; + i.weightsForTargets.push(pn.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { targetVectors: globalThis.Array.isArray(e24?.targetVectors) ? e24.targetVectors.map((t) => globalThis.String(t)) : [], combination: A(e24.combination) ? bm(e24.combination) : 0, weightsForTargets: globalThis.Array.isArray(e24?.weightsForTargets) ? e24.weightsForTargets.map((t) => pn.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.targetVectors?.length && (t.targetVectors = e24.targetVectors), e24.combination !== 0 && (t.combination = xm(e24.combination)), e24.weightsForTargets?.length && (t.weightsForTargets = e24.weightsForTargets.map((r) => pn.toJSON(r))), t; +}, create(e24) { + return B.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = ec(); + return t.targetVectors = e24.targetVectors?.map((r) => r) || [], t.combination = e24.combination ?? 0, t.weightsForTargets = e24.weightsForTargets?.map((r) => pn.fromPartial(r)) || [], t; +} }; +function tc() { + return { name: "", vectorBytes: new Uint8Array(0), vectors: [] }; +} +var gn = { encode(e24, t = I.default.Writer.create()) { + e24.name !== "" && t.uint32(10).string(e24.name), e24.vectorBytes.length !== 0 && t.uint32(18).bytes(e24.vectorBytes); + for (let r of e24.vectors) q.encode(r, t.uint32(26).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = tc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.name = r.string(); + continue; + case 2: + if (n !== 18) break; + i.vectorBytes = r.bytes(); + continue; + case 3: + if (n !== 26) break; + i.vectors.push(q.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { name: A(e24.name) ? globalThis.String(e24.name) : "", vectorBytes: A(e24.vectorBytes) ? Na(e24.vectorBytes) : new Uint8Array(0), vectors: globalThis.Array.isArray(e24?.vectors) ? e24.vectors.map((t) => q.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.name !== "" && (t.name = e24.name), e24.vectorBytes.length !== 0 && (t.vectorBytes = Va(e24.vectorBytes)), e24.vectors?.length && (t.vectors = e24.vectors.map((r) => q.toJSON(r))), t; +}, create(e24) { + return gn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = tc(); + return t.name = e24.name ?? "", t.vectorBytes = e24.vectorBytes ?? new Uint8Array(0), t.vectors = e24.vectors?.map((r) => q.fromPartial(r)) || [], t; +} }; +function rc() { + return { mmr: void 0 }; +} +var w = { encode(e24, t = I.default.Writer.create()) { + return e24.mmr !== void 0 && mn.encode(e24.mmr, t.uint32(10).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = rc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.mmr = mn.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { mmr: A(e24.mmr) ? mn.fromJSON(e24.mmr) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.mmr !== void 0 && (t.mmr = mn.toJSON(e24.mmr)), t; +}, create(e24) { + return w.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = rc(); + return t.mmr = e24.mmr !== void 0 && e24.mmr !== null ? mn.fromPartial(e24.mmr) : void 0, t; +} }; +function nc() { + return { limit: void 0, balance: void 0 }; +} +var mn = { encode(e24, t = I.default.Writer.create()) { + return e24.limit !== void 0 && t.uint32(8).uint32(e24.limit), e24.balance !== void 0 && t.uint32(21).float(e24.balance), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = nc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.limit = r.uint32(); + continue; + case 2: + if (n !== 21) break; + i.balance = r.float(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { limit: A(e24.limit) ? globalThis.Number(e24.limit) : void 0, balance: A(e24.balance) ? globalThis.Number(e24.balance) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.limit !== void 0 && (t.limit = Math.round(e24.limit)), e24.balance !== void 0 && (t.balance = e24.balance), t; +}, create(e24) { + return mn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = nc(); + return t.limit = e24.limit ?? void 0, t.balance = e24.balance ?? void 0, t; +} }; +function ic() { + return { operator: 0, minimumOrTokensMatch: void 0 }; +} +var We = { encode(e24, t = I.default.Writer.create()) { + return e24.operator !== 0 && t.uint32(8).int32(e24.operator), e24.minimumOrTokensMatch !== void 0 && t.uint32(16).int32(e24.minimumOrTokensMatch), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = ic(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.operator = r.int32(); + continue; + case 2: + if (n !== 16) break; + i.minimumOrTokensMatch = r.int32(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { operator: A(e24.operator) ? Cm(e24.operator) : 0, minimumOrTokensMatch: A(e24.minimumOrTokensMatch) ? globalThis.Number(e24.minimumOrTokensMatch) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.operator !== 0 && (t.operator = Pm(e24.operator)), e24.minimumOrTokensMatch !== void 0 && (t.minimumOrTokensMatch = Math.round(e24.minimumOrTokensMatch)), t; +}, create(e24) { + return We.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = ic(); + return t.operator = e24.operator ?? 0, t.minimumOrTokensMatch = e24.minimumOrTokensMatch ?? void 0, t; +} }; +function ac() { + return { query: "", properties: [], vector: [], alpha: 0, fusionType: 0, vectorBytes: new Uint8Array(0), targetVectors: [], nearText: void 0, nearVector: void 0, targets: void 0, bm25SearchOperator: void 0, alphaParam: void 0, useAlphaParam: false, selection: void 0, vectorDistance: void 0, vectors: [] }; +} +var ve = { encode(e24, t = I.default.Writer.create()) { + e24.query !== "" && t.uint32(10).string(e24.query); + for (let r of e24.properties) t.uint32(18).string(r); + t.uint32(26).fork(); + for (let r of e24.vector) t.float(r); + t.ldelim(), e24.alpha !== 0 && t.uint32(37).float(e24.alpha), e24.fusionType !== 0 && t.uint32(40).int32(e24.fusionType), e24.vectorBytes.length !== 0 && t.uint32(50).bytes(e24.vectorBytes); + for (let r of e24.targetVectors) t.uint32(58).string(r); + e24.nearText !== void 0 && ae.encode(e24.nearText, t.uint32(66).fork()).ldelim(), e24.nearVector !== void 0 && te.encode(e24.nearVector, t.uint32(74).fork()).ldelim(), e24.targets !== void 0 && B.encode(e24.targets, t.uint32(82).fork()).ldelim(), e24.bm25SearchOperator !== void 0 && We.encode(e24.bm25SearchOperator, t.uint32(90).fork()).ldelim(), e24.alphaParam !== void 0 && t.uint32(101).float(e24.alphaParam), e24.useAlphaParam !== false && t.uint32(104).bool(e24.useAlphaParam), e24.selection !== void 0 && w.encode(e24.selection, t.uint32(114).fork()).ldelim(), e24.vectorDistance !== void 0 && t.uint32(165).float(e24.vectorDistance); + for (let r of e24.vectors) q.encode(r, t.uint32(170).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = ac(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.query = r.string(); + continue; + case 2: + if (n !== 18) break; + i.properties.push(r.string()); + continue; + case 3: + if (n === 29) { + i.vector.push(r.float()); + continue; + } + if (n === 26) { + let o = r.uint32() + r.pos; + for (; r.pos < o; ) i.vector.push(r.float()); + continue; + } + break; + case 4: + if (n !== 37) break; + i.alpha = r.float(); + continue; + case 5: + if (n !== 40) break; + i.fusionType = r.int32(); + continue; + case 6: + if (n !== 50) break; + i.vectorBytes = r.bytes(); + continue; + case 7: + if (n !== 58) break; + i.targetVectors.push(r.string()); + continue; + case 8: + if (n !== 66) break; + i.nearText = ae.decode(r, r.uint32()); + continue; + case 9: + if (n !== 74) break; + i.nearVector = te.decode(r, r.uint32()); + continue; + case 10: + if (n !== 82) break; + i.targets = B.decode(r, r.uint32()); + continue; + case 11: + if (n !== 90) break; + i.bm25SearchOperator = We.decode(r, r.uint32()); + continue; + case 12: + if (n !== 101) break; + i.alphaParam = r.float(); + continue; + case 13: + if (n !== 104) break; + i.useAlphaParam = r.bool(); + continue; + case 14: + if (n !== 114) break; + i.selection = w.decode(r, r.uint32()); + continue; + case 20: + if (n !== 165) break; + i.vectorDistance = r.float(); + continue; + case 21: + if (n !== 170) break; + i.vectors.push(q.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { query: A(e24.query) ? globalThis.String(e24.query) : "", properties: globalThis.Array.isArray(e24?.properties) ? e24.properties.map((t) => globalThis.String(t)) : [], vector: globalThis.Array.isArray(e24?.vector) ? e24.vector.map((t) => globalThis.Number(t)) : [], alpha: A(e24.alpha) ? globalThis.Number(e24.alpha) : 0, fusionType: A(e24.fusionType) ? Rm(e24.fusionType) : 0, vectorBytes: A(e24.vectorBytes) ? Na(e24.vectorBytes) : new Uint8Array(0), targetVectors: globalThis.Array.isArray(e24?.targetVectors) ? e24.targetVectors.map((t) => globalThis.String(t)) : [], nearText: A(e24.nearText) ? ae.fromJSON(e24.nearText) : void 0, nearVector: A(e24.nearVector) ? te.fromJSON(e24.nearVector) : void 0, targets: A(e24.targets) ? B.fromJSON(e24.targets) : void 0, bm25SearchOperator: A(e24.bm25SearchOperator) ? We.fromJSON(e24.bm25SearchOperator) : void 0, alphaParam: A(e24.alphaParam) ? globalThis.Number(e24.alphaParam) : void 0, useAlphaParam: A(e24.useAlphaParam) ? globalThis.Boolean(e24.useAlphaParam) : false, selection: A(e24.selection) ? w.fromJSON(e24.selection) : void 0, vectorDistance: A(e24.vectorDistance) ? globalThis.Number(e24.vectorDistance) : void 0, vectors: globalThis.Array.isArray(e24?.vectors) ? e24.vectors.map((t) => q.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.query !== "" && (t.query = e24.query), e24.properties?.length && (t.properties = e24.properties), e24.vector?.length && (t.vector = e24.vector), e24.alpha !== 0 && (t.alpha = e24.alpha), e24.fusionType !== 0 && (t.fusionType = Am(e24.fusionType)), e24.vectorBytes.length !== 0 && (t.vectorBytes = Va(e24.vectorBytes)), e24.targetVectors?.length && (t.targetVectors = e24.targetVectors), e24.nearText !== void 0 && (t.nearText = ae.toJSON(e24.nearText)), e24.nearVector !== void 0 && (t.nearVector = te.toJSON(e24.nearVector)), e24.targets !== void 0 && (t.targets = B.toJSON(e24.targets)), e24.bm25SearchOperator !== void 0 && (t.bm25SearchOperator = We.toJSON(e24.bm25SearchOperator)), e24.alphaParam !== void 0 && (t.alphaParam = e24.alphaParam), e24.useAlphaParam !== false && (t.useAlphaParam = e24.useAlphaParam), e24.selection !== void 0 && (t.selection = w.toJSON(e24.selection)), e24.vectorDistance !== void 0 && (t.vectorDistance = e24.vectorDistance), e24.vectors?.length && (t.vectors = e24.vectors.map((r) => q.toJSON(r))), t; +}, create(e24) { + return ve.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = ac(); + return t.query = e24.query ?? "", t.properties = e24.properties?.map((r) => r) || [], t.vector = e24.vector?.map((r) => r) || [], t.alpha = e24.alpha ?? 0, t.fusionType = e24.fusionType ?? 0, t.vectorBytes = e24.vectorBytes ?? new Uint8Array(0), t.targetVectors = e24.targetVectors?.map((r) => r) || [], t.nearText = e24.nearText !== void 0 && e24.nearText !== null ? ae.fromPartial(e24.nearText) : void 0, t.nearVector = e24.nearVector !== void 0 && e24.nearVector !== null ? te.fromPartial(e24.nearVector) : void 0, t.targets = e24.targets !== void 0 && e24.targets !== null ? B.fromPartial(e24.targets) : void 0, t.bm25SearchOperator = e24.bm25SearchOperator !== void 0 && e24.bm25SearchOperator !== null ? We.fromPartial(e24.bm25SearchOperator) : void 0, t.alphaParam = e24.alphaParam ?? void 0, t.useAlphaParam = e24.useAlphaParam ?? false, t.selection = e24.selection !== void 0 && e24.selection !== null ? w.fromPartial(e24.selection) : void 0, t.vectorDistance = e24.vectorDistance ?? void 0, t.vectors = e24.vectors?.map((r) => q.fromPartial(r)) || [], t; +} }; +function oc() { + return { vector: [], certainty: void 0, distance: void 0, vectorBytes: new Uint8Array(0), targetVectors: [], targets: void 0, vectorPerTarget: {}, vectorForTargets: [], vectors: [], selection: void 0 }; +} +var te = { encode(e24, t = I.default.Writer.create()) { + t.uint32(10).fork(); + for (let r of e24.vector) t.float(r); + t.ldelim(), e24.certainty !== void 0 && t.uint32(17).double(e24.certainty), e24.distance !== void 0 && t.uint32(25).double(e24.distance), e24.vectorBytes.length !== 0 && t.uint32(34).bytes(e24.vectorBytes); + for (let r of e24.targetVectors) t.uint32(42).string(r); + e24.targets !== void 0 && B.encode(e24.targets, t.uint32(50).fork()).ldelim(), Object.entries(e24.vectorPerTarget).forEach(([r, a]) => { + cs.encode({ key: r, value: a }, t.uint32(58).fork()).ldelim(); + }); + for (let r of e24.vectorForTargets) gn.encode(r, t.uint32(66).fork()).ldelim(); + for (let r of e24.vectors) q.encode(r, t.uint32(74).fork()).ldelim(); + return e24.selection !== void 0 && w.encode(e24.selection, t.uint32(82).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = oc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n === 13) { + i.vector.push(r.float()); + continue; + } + if (n === 10) { + let s = r.uint32() + r.pos; + for (; r.pos < s; ) i.vector.push(r.float()); + continue; + } + break; + case 2: + if (n !== 17) break; + i.certainty = r.double(); + continue; + case 3: + if (n !== 25) break; + i.distance = r.double(); + continue; + case 4: + if (n !== 34) break; + i.vectorBytes = r.bytes(); + continue; + case 5: + if (n !== 42) break; + i.targetVectors.push(r.string()); + continue; + case 6: + if (n !== 50) break; + i.targets = B.decode(r, r.uint32()); + continue; + case 7: + if (n !== 58) break; + let o = cs.decode(r, r.uint32()); + o.value !== void 0 && (i.vectorPerTarget[o.key] = o.value); + continue; + case 8: + if (n !== 66) break; + i.vectorForTargets.push(gn.decode(r, r.uint32())); + continue; + case 9: + if (n !== 74) break; + i.vectors.push(q.decode(r, r.uint32())); + continue; + case 10: + if (n !== 82) break; + i.selection = w.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { vector: globalThis.Array.isArray(e24?.vector) ? e24.vector.map((t) => globalThis.Number(t)) : [], certainty: A(e24.certainty) ? globalThis.Number(e24.certainty) : void 0, distance: A(e24.distance) ? globalThis.Number(e24.distance) : void 0, vectorBytes: A(e24.vectorBytes) ? Na(e24.vectorBytes) : new Uint8Array(0), targetVectors: globalThis.Array.isArray(e24?.targetVectors) ? e24.targetVectors.map((t) => globalThis.String(t)) : [], targets: A(e24.targets) ? B.fromJSON(e24.targets) : void 0, vectorPerTarget: Nm(e24.vectorPerTarget) ? Object.entries(e24.vectorPerTarget).reduce((t, [r, a]) => (t[r] = Na(a), t), {}) : {}, vectorForTargets: globalThis.Array.isArray(e24?.vectorForTargets) ? e24.vectorForTargets.map((t) => gn.fromJSON(t)) : [], vectors: globalThis.Array.isArray(e24?.vectors) ? e24.vectors.map((t) => q.fromJSON(t)) : [], selection: A(e24.selection) ? w.fromJSON(e24.selection) : void 0 }; +}, toJSON(e24) { + let t = {}; + if (e24.vector?.length && (t.vector = e24.vector), e24.certainty !== void 0 && (t.certainty = e24.certainty), e24.distance !== void 0 && (t.distance = e24.distance), e24.vectorBytes.length !== 0 && (t.vectorBytes = Va(e24.vectorBytes)), e24.targetVectors?.length && (t.targetVectors = e24.targetVectors), e24.targets !== void 0 && (t.targets = B.toJSON(e24.targets)), e24.vectorPerTarget) { + let r = Object.entries(e24.vectorPerTarget); + r.length > 0 && (t.vectorPerTarget = {}, r.forEach(([a, i]) => { + t.vectorPerTarget[a] = Va(i); + })); + } + return e24.vectorForTargets?.length && (t.vectorForTargets = e24.vectorForTargets.map((r) => gn.toJSON(r))), e24.vectors?.length && (t.vectors = e24.vectors.map((r) => q.toJSON(r))), e24.selection !== void 0 && (t.selection = w.toJSON(e24.selection)), t; +}, create(e24) { + return te.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = oc(); + return t.vector = e24.vector?.map((r) => r) || [], t.certainty = e24.certainty ?? void 0, t.distance = e24.distance ?? void 0, t.vectorBytes = e24.vectorBytes ?? new Uint8Array(0), t.targetVectors = e24.targetVectors?.map((r) => r) || [], t.targets = e24.targets !== void 0 && e24.targets !== null ? B.fromPartial(e24.targets) : void 0, t.vectorPerTarget = Object.entries(e24.vectorPerTarget ?? {}).reduce((r, [a, i]) => (i !== void 0 && (r[a] = i), r), {}), t.vectorForTargets = e24.vectorForTargets?.map((r) => gn.fromPartial(r)) || [], t.vectors = e24.vectors?.map((r) => q.fromPartial(r)) || [], t.selection = e24.selection !== void 0 && e24.selection !== null ? w.fromPartial(e24.selection) : void 0, t; +} }; +function sc() { + return { key: "", value: new Uint8Array(0) }; +} +var cs = { encode(e24, t = I.default.Writer.create()) { + return e24.key !== "" && t.uint32(10).string(e24.key), e24.value.length !== 0 && t.uint32(18).bytes(e24.value), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = sc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.key = r.string(); + continue; + case 2: + if (n !== 18) break; + i.value = r.bytes(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { key: A(e24.key) ? globalThis.String(e24.key) : "", value: A(e24.value) ? Na(e24.value) : new Uint8Array(0) }; +}, toJSON(e24) { + let t = {}; + return e24.key !== "" && (t.key = e24.key), e24.value.length !== 0 && (t.value = Va(e24.value)), t; +}, create(e24) { + return cs.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = sc(); + return t.key = e24.key ?? "", t.value = e24.value ?? new Uint8Array(0), t; +} }; +function uc() { + return { id: "", certainty: void 0, distance: void 0, targetVectors: [], targets: void 0, selection: void 0 }; +} +var be = { encode(e24, t = I.default.Writer.create()) { + e24.id !== "" && t.uint32(10).string(e24.id), e24.certainty !== void 0 && t.uint32(17).double(e24.certainty), e24.distance !== void 0 && t.uint32(25).double(e24.distance); + for (let r of e24.targetVectors) t.uint32(34).string(r); + return e24.targets !== void 0 && B.encode(e24.targets, t.uint32(42).fork()).ldelim(), e24.selection !== void 0 && w.encode(e24.selection, t.uint32(50).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = uc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.id = r.string(); + continue; + case 2: + if (n !== 17) break; + i.certainty = r.double(); + continue; + case 3: + if (n !== 25) break; + i.distance = r.double(); + continue; + case 4: + if (n !== 34) break; + i.targetVectors.push(r.string()); + continue; + case 5: + if (n !== 42) break; + i.targets = B.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.selection = w.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { id: A(e24.id) ? globalThis.String(e24.id) : "", certainty: A(e24.certainty) ? globalThis.Number(e24.certainty) : void 0, distance: A(e24.distance) ? globalThis.Number(e24.distance) : void 0, targetVectors: globalThis.Array.isArray(e24?.targetVectors) ? e24.targetVectors.map((t) => globalThis.String(t)) : [], targets: A(e24.targets) ? B.fromJSON(e24.targets) : void 0, selection: A(e24.selection) ? w.fromJSON(e24.selection) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.id !== "" && (t.id = e24.id), e24.certainty !== void 0 && (t.certainty = e24.certainty), e24.distance !== void 0 && (t.distance = e24.distance), e24.targetVectors?.length && (t.targetVectors = e24.targetVectors), e24.targets !== void 0 && (t.targets = B.toJSON(e24.targets)), e24.selection !== void 0 && (t.selection = w.toJSON(e24.selection)), t; +}, create(e24) { + return be.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = uc(); + return t.id = e24.id ?? "", t.certainty = e24.certainty ?? void 0, t.distance = e24.distance ?? void 0, t.targetVectors = e24.targetVectors?.map((r) => r) || [], t.targets = e24.targets !== void 0 && e24.targets !== null ? B.fromPartial(e24.targets) : void 0, t.selection = e24.selection !== void 0 && e24.selection !== null ? w.fromPartial(e24.selection) : void 0, t; +} }; +function dc() { + return { query: [], certainty: void 0, distance: void 0, moveTo: void 0, moveAway: void 0, targetVectors: [], targets: void 0, selection: void 0 }; +} +var ae = { encode(e24, t = I.default.Writer.create()) { + for (let r of e24.query) t.uint32(10).string(r); + e24.certainty !== void 0 && t.uint32(17).double(e24.certainty), e24.distance !== void 0 && t.uint32(25).double(e24.distance), e24.moveTo !== void 0 && me.encode(e24.moveTo, t.uint32(34).fork()).ldelim(), e24.moveAway !== void 0 && me.encode(e24.moveAway, t.uint32(42).fork()).ldelim(); + for (let r of e24.targetVectors) t.uint32(50).string(r); + return e24.targets !== void 0 && B.encode(e24.targets, t.uint32(58).fork()).ldelim(), e24.selection !== void 0 && w.encode(e24.selection, t.uint32(66).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = dc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.query.push(r.string()); + continue; + case 2: + if (n !== 17) break; + i.certainty = r.double(); + continue; + case 3: + if (n !== 25) break; + i.distance = r.double(); + continue; + case 4: + if (n !== 34) break; + i.moveTo = me.decode(r, r.uint32()); + continue; + case 5: + if (n !== 42) break; + i.moveAway = me.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.targetVectors.push(r.string()); + continue; + case 7: + if (n !== 58) break; + i.targets = B.decode(r, r.uint32()); + continue; + case 8: + if (n !== 66) break; + i.selection = w.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { query: globalThis.Array.isArray(e24?.query) ? e24.query.map((t) => globalThis.String(t)) : [], certainty: A(e24.certainty) ? globalThis.Number(e24.certainty) : void 0, distance: A(e24.distance) ? globalThis.Number(e24.distance) : void 0, moveTo: A(e24.moveTo) ? me.fromJSON(e24.moveTo) : void 0, moveAway: A(e24.moveAway) ? me.fromJSON(e24.moveAway) : void 0, targetVectors: globalThis.Array.isArray(e24?.targetVectors) ? e24.targetVectors.map((t) => globalThis.String(t)) : [], targets: A(e24.targets) ? B.fromJSON(e24.targets) : void 0, selection: A(e24.selection) ? w.fromJSON(e24.selection) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.query?.length && (t.query = e24.query), e24.certainty !== void 0 && (t.certainty = e24.certainty), e24.distance !== void 0 && (t.distance = e24.distance), e24.moveTo !== void 0 && (t.moveTo = me.toJSON(e24.moveTo)), e24.moveAway !== void 0 && (t.moveAway = me.toJSON(e24.moveAway)), e24.targetVectors?.length && (t.targetVectors = e24.targetVectors), e24.targets !== void 0 && (t.targets = B.toJSON(e24.targets)), e24.selection !== void 0 && (t.selection = w.toJSON(e24.selection)), t; +}, create(e24) { + return ae.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = dc(); + return t.query = e24.query?.map((r) => r) || [], t.certainty = e24.certainty ?? void 0, t.distance = e24.distance ?? void 0, t.moveTo = e24.moveTo !== void 0 && e24.moveTo !== null ? me.fromPartial(e24.moveTo) : void 0, t.moveAway = e24.moveAway !== void 0 && e24.moveAway !== null ? me.fromPartial(e24.moveAway) : void 0, t.targetVectors = e24.targetVectors?.map((r) => r) || [], t.targets = e24.targets !== void 0 && e24.targets !== null ? B.fromPartial(e24.targets) : void 0, t.selection = e24.selection !== void 0 && e24.selection !== null ? w.fromPartial(e24.selection) : void 0, t; +} }; +function cc() { + return { force: 0, concepts: [], uuids: [] }; +} +var me = { encode(e24, t = I.default.Writer.create()) { + e24.force !== 0 && t.uint32(13).float(e24.force); + for (let r of e24.concepts) t.uint32(18).string(r); + for (let r of e24.uuids) t.uint32(26).string(r); + return t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = cc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 13) break; + i.force = r.float(); + continue; + case 2: + if (n !== 18) break; + i.concepts.push(r.string()); + continue; + case 3: + if (n !== 26) break; + i.uuids.push(r.string()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { force: A(e24.force) ? globalThis.Number(e24.force) : 0, concepts: globalThis.Array.isArray(e24?.concepts) ? e24.concepts.map((t) => globalThis.String(t)) : [], uuids: globalThis.Array.isArray(e24?.uuids) ? e24.uuids.map((t) => globalThis.String(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.force !== 0 && (t.force = e24.force), e24.concepts?.length && (t.concepts = e24.concepts), e24.uuids?.length && (t.uuids = e24.uuids), t; +}, create(e24) { + return me.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = cc(); + return t.force = e24.force ?? 0, t.concepts = e24.concepts?.map((r) => r) || [], t.uuids = e24.uuids?.map((r) => r) || [], t; +} }; +function lc() { + return { image: "", certainty: void 0, distance: void 0, targetVectors: [], targets: void 0, selection: void 0 }; +} +var xe = { encode(e24, t = I.default.Writer.create()) { + e24.image !== "" && t.uint32(10).string(e24.image), e24.certainty !== void 0 && t.uint32(17).double(e24.certainty), e24.distance !== void 0 && t.uint32(25).double(e24.distance); + for (let r of e24.targetVectors) t.uint32(34).string(r); + return e24.targets !== void 0 && B.encode(e24.targets, t.uint32(42).fork()).ldelim(), e24.selection !== void 0 && w.encode(e24.selection, t.uint32(50).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = lc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.image = r.string(); + continue; + case 2: + if (n !== 17) break; + i.certainty = r.double(); + continue; + case 3: + if (n !== 25) break; + i.distance = r.double(); + continue; + case 4: + if (n !== 34) break; + i.targetVectors.push(r.string()); + continue; + case 5: + if (n !== 42) break; + i.targets = B.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.selection = w.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { image: A(e24.image) ? globalThis.String(e24.image) : "", certainty: A(e24.certainty) ? globalThis.Number(e24.certainty) : void 0, distance: A(e24.distance) ? globalThis.Number(e24.distance) : void 0, targetVectors: globalThis.Array.isArray(e24?.targetVectors) ? e24.targetVectors.map((t) => globalThis.String(t)) : [], targets: A(e24.targets) ? B.fromJSON(e24.targets) : void 0, selection: A(e24.selection) ? w.fromJSON(e24.selection) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.image !== "" && (t.image = e24.image), e24.certainty !== void 0 && (t.certainty = e24.certainty), e24.distance !== void 0 && (t.distance = e24.distance), e24.targetVectors?.length && (t.targetVectors = e24.targetVectors), e24.targets !== void 0 && (t.targets = B.toJSON(e24.targets)), e24.selection !== void 0 && (t.selection = w.toJSON(e24.selection)), t; +}, create(e24) { + return xe.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = lc(); + return t.image = e24.image ?? "", t.certainty = e24.certainty ?? void 0, t.distance = e24.distance ?? void 0, t.targetVectors = e24.targetVectors?.map((r) => r) || [], t.targets = e24.targets !== void 0 && e24.targets !== null ? B.fromPartial(e24.targets) : void 0, t.selection = e24.selection !== void 0 && e24.selection !== null ? w.fromPartial(e24.selection) : void 0, t; +} }; +function fc() { + return { audio: "", certainty: void 0, distance: void 0, targetVectors: [], targets: void 0, selection: void 0 }; +} +var Ce = { encode(e24, t = I.default.Writer.create()) { + e24.audio !== "" && t.uint32(10).string(e24.audio), e24.certainty !== void 0 && t.uint32(17).double(e24.certainty), e24.distance !== void 0 && t.uint32(25).double(e24.distance); + for (let r of e24.targetVectors) t.uint32(34).string(r); + return e24.targets !== void 0 && B.encode(e24.targets, t.uint32(42).fork()).ldelim(), e24.selection !== void 0 && w.encode(e24.selection, t.uint32(50).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = fc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.audio = r.string(); + continue; + case 2: + if (n !== 17) break; + i.certainty = r.double(); + continue; + case 3: + if (n !== 25) break; + i.distance = r.double(); + continue; + case 4: + if (n !== 34) break; + i.targetVectors.push(r.string()); + continue; + case 5: + if (n !== 42) break; + i.targets = B.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.selection = w.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { audio: A(e24.audio) ? globalThis.String(e24.audio) : "", certainty: A(e24.certainty) ? globalThis.Number(e24.certainty) : void 0, distance: A(e24.distance) ? globalThis.Number(e24.distance) : void 0, targetVectors: globalThis.Array.isArray(e24?.targetVectors) ? e24.targetVectors.map((t) => globalThis.String(t)) : [], targets: A(e24.targets) ? B.fromJSON(e24.targets) : void 0, selection: A(e24.selection) ? w.fromJSON(e24.selection) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.audio !== "" && (t.audio = e24.audio), e24.certainty !== void 0 && (t.certainty = e24.certainty), e24.distance !== void 0 && (t.distance = e24.distance), e24.targetVectors?.length && (t.targetVectors = e24.targetVectors), e24.targets !== void 0 && (t.targets = B.toJSON(e24.targets)), e24.selection !== void 0 && (t.selection = w.toJSON(e24.selection)), t; +}, create(e24) { + return Ce.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = fc(); + return t.audio = e24.audio ?? "", t.certainty = e24.certainty ?? void 0, t.distance = e24.distance ?? void 0, t.targetVectors = e24.targetVectors?.map((r) => r) || [], t.targets = e24.targets !== void 0 && e24.targets !== null ? B.fromPartial(e24.targets) : void 0, t.selection = e24.selection !== void 0 && e24.selection !== null ? w.fromPartial(e24.selection) : void 0, t; +} }; +function pc() { + return { video: "", certainty: void 0, distance: void 0, targetVectors: [], targets: void 0, selection: void 0 }; +} +var Pe = { encode(e24, t = I.default.Writer.create()) { + e24.video !== "" && t.uint32(10).string(e24.video), e24.certainty !== void 0 && t.uint32(17).double(e24.certainty), e24.distance !== void 0 && t.uint32(25).double(e24.distance); + for (let r of e24.targetVectors) t.uint32(34).string(r); + return e24.targets !== void 0 && B.encode(e24.targets, t.uint32(42).fork()).ldelim(), e24.selection !== void 0 && w.encode(e24.selection, t.uint32(50).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = pc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.video = r.string(); + continue; + case 2: + if (n !== 17) break; + i.certainty = r.double(); + continue; + case 3: + if (n !== 25) break; + i.distance = r.double(); + continue; + case 4: + if (n !== 34) break; + i.targetVectors.push(r.string()); + continue; + case 5: + if (n !== 42) break; + i.targets = B.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.selection = w.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { video: A(e24.video) ? globalThis.String(e24.video) : "", certainty: A(e24.certainty) ? globalThis.Number(e24.certainty) : void 0, distance: A(e24.distance) ? globalThis.Number(e24.distance) : void 0, targetVectors: globalThis.Array.isArray(e24?.targetVectors) ? e24.targetVectors.map((t) => globalThis.String(t)) : [], targets: A(e24.targets) ? B.fromJSON(e24.targets) : void 0, selection: A(e24.selection) ? w.fromJSON(e24.selection) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.video !== "" && (t.video = e24.video), e24.certainty !== void 0 && (t.certainty = e24.certainty), e24.distance !== void 0 && (t.distance = e24.distance), e24.targetVectors?.length && (t.targetVectors = e24.targetVectors), e24.targets !== void 0 && (t.targets = B.toJSON(e24.targets)), e24.selection !== void 0 && (t.selection = w.toJSON(e24.selection)), t; +}, create(e24) { + return Pe.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = pc(); + return t.video = e24.video ?? "", t.certainty = e24.certainty ?? void 0, t.distance = e24.distance ?? void 0, t.targetVectors = e24.targetVectors?.map((r) => r) || [], t.targets = e24.targets !== void 0 && e24.targets !== null ? B.fromPartial(e24.targets) : void 0, t.selection = e24.selection !== void 0 && e24.selection !== null ? w.fromPartial(e24.selection) : void 0, t; +} }; +function gc() { + return { depth: "", certainty: void 0, distance: void 0, targetVectors: [], targets: void 0, selection: void 0 }; +} +var Re = { encode(e24, t = I.default.Writer.create()) { + e24.depth !== "" && t.uint32(10).string(e24.depth), e24.certainty !== void 0 && t.uint32(17).double(e24.certainty), e24.distance !== void 0 && t.uint32(25).double(e24.distance); + for (let r of e24.targetVectors) t.uint32(34).string(r); + return e24.targets !== void 0 && B.encode(e24.targets, t.uint32(42).fork()).ldelim(), e24.selection !== void 0 && w.encode(e24.selection, t.uint32(50).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = gc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.depth = r.string(); + continue; + case 2: + if (n !== 17) break; + i.certainty = r.double(); + continue; + case 3: + if (n !== 25) break; + i.distance = r.double(); + continue; + case 4: + if (n !== 34) break; + i.targetVectors.push(r.string()); + continue; + case 5: + if (n !== 42) break; + i.targets = B.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.selection = w.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { depth: A(e24.depth) ? globalThis.String(e24.depth) : "", certainty: A(e24.certainty) ? globalThis.Number(e24.certainty) : void 0, distance: A(e24.distance) ? globalThis.Number(e24.distance) : void 0, targetVectors: globalThis.Array.isArray(e24?.targetVectors) ? e24.targetVectors.map((t) => globalThis.String(t)) : [], targets: A(e24.targets) ? B.fromJSON(e24.targets) : void 0, selection: A(e24.selection) ? w.fromJSON(e24.selection) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.depth !== "" && (t.depth = e24.depth), e24.certainty !== void 0 && (t.certainty = e24.certainty), e24.distance !== void 0 && (t.distance = e24.distance), e24.targetVectors?.length && (t.targetVectors = e24.targetVectors), e24.targets !== void 0 && (t.targets = B.toJSON(e24.targets)), e24.selection !== void 0 && (t.selection = w.toJSON(e24.selection)), t; +}, create(e24) { + return Re.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = gc(); + return t.depth = e24.depth ?? "", t.certainty = e24.certainty ?? void 0, t.distance = e24.distance ?? void 0, t.targetVectors = e24.targetVectors?.map((r) => r) || [], t.targets = e24.targets !== void 0 && e24.targets !== null ? B.fromPartial(e24.targets) : void 0, t.selection = e24.selection !== void 0 && e24.selection !== null ? w.fromPartial(e24.selection) : void 0, t; +} }; +function mc() { + return { thermal: "", certainty: void 0, distance: void 0, targetVectors: [], targets: void 0, selection: void 0 }; +} +var Ae = { encode(e24, t = I.default.Writer.create()) { + e24.thermal !== "" && t.uint32(10).string(e24.thermal), e24.certainty !== void 0 && t.uint32(17).double(e24.certainty), e24.distance !== void 0 && t.uint32(25).double(e24.distance); + for (let r of e24.targetVectors) t.uint32(34).string(r); + return e24.targets !== void 0 && B.encode(e24.targets, t.uint32(42).fork()).ldelim(), e24.selection !== void 0 && w.encode(e24.selection, t.uint32(50).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = mc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.thermal = r.string(); + continue; + case 2: + if (n !== 17) break; + i.certainty = r.double(); + continue; + case 3: + if (n !== 25) break; + i.distance = r.double(); + continue; + case 4: + if (n !== 34) break; + i.targetVectors.push(r.string()); + continue; + case 5: + if (n !== 42) break; + i.targets = B.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.selection = w.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { thermal: A(e24.thermal) ? globalThis.String(e24.thermal) : "", certainty: A(e24.certainty) ? globalThis.Number(e24.certainty) : void 0, distance: A(e24.distance) ? globalThis.Number(e24.distance) : void 0, targetVectors: globalThis.Array.isArray(e24?.targetVectors) ? e24.targetVectors.map((t) => globalThis.String(t)) : [], targets: A(e24.targets) ? B.fromJSON(e24.targets) : void 0, selection: A(e24.selection) ? w.fromJSON(e24.selection) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.thermal !== "" && (t.thermal = e24.thermal), e24.certainty !== void 0 && (t.certainty = e24.certainty), e24.distance !== void 0 && (t.distance = e24.distance), e24.targetVectors?.length && (t.targetVectors = e24.targetVectors), e24.targets !== void 0 && (t.targets = B.toJSON(e24.targets)), e24.selection !== void 0 && (t.selection = w.toJSON(e24.selection)), t; +}, create(e24) { + return Ae.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = mc(); + return t.thermal = e24.thermal ?? "", t.certainty = e24.certainty ?? void 0, t.distance = e24.distance ?? void 0, t.targetVectors = e24.targetVectors?.map((r) => r) || [], t.targets = e24.targets !== void 0 && e24.targets !== null ? B.fromPartial(e24.targets) : void 0, t.selection = e24.selection !== void 0 && e24.selection !== null ? w.fromPartial(e24.selection) : void 0, t; +} }; +function hc() { + return { imu: "", certainty: void 0, distance: void 0, targetVectors: [], targets: void 0, selection: void 0 }; +} +var Ne = { encode(e24, t = I.default.Writer.create()) { + e24.imu !== "" && t.uint32(10).string(e24.imu), e24.certainty !== void 0 && t.uint32(17).double(e24.certainty), e24.distance !== void 0 && t.uint32(25).double(e24.distance); + for (let r of e24.targetVectors) t.uint32(34).string(r); + return e24.targets !== void 0 && B.encode(e24.targets, t.uint32(42).fork()).ldelim(), e24.selection !== void 0 && w.encode(e24.selection, t.uint32(50).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = hc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.imu = r.string(); + continue; + case 2: + if (n !== 17) break; + i.certainty = r.double(); + continue; + case 3: + if (n !== 25) break; + i.distance = r.double(); + continue; + case 4: + if (n !== 34) break; + i.targetVectors.push(r.string()); + continue; + case 5: + if (n !== 42) break; + i.targets = B.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.selection = w.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { imu: A(e24.imu) ? globalThis.String(e24.imu) : "", certainty: A(e24.certainty) ? globalThis.Number(e24.certainty) : void 0, distance: A(e24.distance) ? globalThis.Number(e24.distance) : void 0, targetVectors: globalThis.Array.isArray(e24?.targetVectors) ? e24.targetVectors.map((t) => globalThis.String(t)) : [], targets: A(e24.targets) ? B.fromJSON(e24.targets) : void 0, selection: A(e24.selection) ? w.fromJSON(e24.selection) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.imu !== "" && (t.imu = e24.imu), e24.certainty !== void 0 && (t.certainty = e24.certainty), e24.distance !== void 0 && (t.distance = e24.distance), e24.targetVectors?.length && (t.targetVectors = e24.targetVectors), e24.targets !== void 0 && (t.targets = B.toJSON(e24.targets)), e24.selection !== void 0 && (t.selection = w.toJSON(e24.selection)), t; +}, create(e24) { + return Ne.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = hc(); + return t.imu = e24.imu ?? "", t.certainty = e24.certainty ?? void 0, t.distance = e24.distance ?? void 0, t.targetVectors = e24.targetVectors?.map((r) => r) || [], t.targets = e24.targets !== void 0 && e24.targets !== null ? B.fromPartial(e24.targets) : void 0, t.selection = e24.selection !== void 0 && e24.selection !== null ? w.fromPartial(e24.selection) : void 0, t; +} }; +function yc() { + return { query: "", properties: [], searchOperator: void 0 }; +} +var Ft = { encode(e24, t = I.default.Writer.create()) { + e24.query !== "" && t.uint32(10).string(e24.query); + for (let r of e24.properties) t.uint32(18).string(r); + return e24.searchOperator !== void 0 && We.encode(e24.searchOperator, t.uint32(26).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof I.default.Reader ? e24 : I.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = yc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.query = r.string(); + continue; + case 2: + if (n !== 18) break; + i.properties.push(r.string()); + continue; + case 3: + if (n !== 26) break; + i.searchOperator = We.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { query: A(e24.query) ? globalThis.String(e24.query) : "", properties: globalThis.Array.isArray(e24?.properties) ? e24.properties.map((t) => globalThis.String(t)) : [], searchOperator: A(e24.searchOperator) ? We.fromJSON(e24.searchOperator) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.query !== "" && (t.query = e24.query), e24.properties?.length && (t.properties = e24.properties), e24.searchOperator !== void 0 && (t.searchOperator = We.toJSON(e24.searchOperator)), t; +}, create(e24) { + return Ft.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = yc(); + return t.query = e24.query ?? "", t.properties = e24.properties?.map((r) => r) || [], t.searchOperator = e24.searchOperator !== void 0 && e24.searchOperator !== null ? We.fromPartial(e24.searchOperator) : void 0, t; +} }; +function Na(e24) { + if (globalThis.Buffer) return Uint8Array.from(globalThis.Buffer.from(e24, "base64")); + { + let t = globalThis.atob(e24), r = new Uint8Array(t.length); + for (let a = 0; a < t.length; ++a) r[a] = t.charCodeAt(a); + return r; + } +} +function Va(e24) { + if (globalThis.Buffer) return globalThis.Buffer.from(e24).toString("base64"); + { + let t = []; + return e24.forEach((r) => { + t.push(globalThis.String.fromCharCode(r)); + }), globalThis.btoa(t.join("")); + } +} +function Nm(e24) { + return typeof e24 == "object" && e24 !== null; +} +function A(e24) { + return e24 != null; +} +d(); +var C = ze(Ke()); +function Tc() { + return { objects: [], consistencyLevel: void 0 }; +} +var Oa = { encode(e24, t = C.default.Writer.create()) { + for (let r of e24.objects) Ve.encode(r, t.uint32(10).fork()).ldelim(); + return e24.consistencyLevel !== void 0 && t.uint32(16).int32(e24.consistencyLevel), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Tc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.objects.push(Ve.decode(r, r.uint32())); + continue; + case 2: + if (n !== 16) break; + i.consistencyLevel = r.int32(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { objects: globalThis.Array.isArray(e24?.objects) ? e24.objects.map((t) => Ve.fromJSON(t)) : [], consistencyLevel: W(e24.consistencyLevel) ? tr(e24.consistencyLevel) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.objects?.length && (t.objects = e24.objects.map((r) => Ve.toJSON(r))), e24.consistencyLevel !== void 0 && (t.consistencyLevel = rr(e24.consistencyLevel)), t; +}, create(e24) { + return Oa.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Tc(); + return t.objects = e24.objects?.map((r) => Ve.fromPartial(r)) || [], t.consistencyLevel = e24.consistencyLevel ?? void 0, t; +} }; +function vc() { + return { references: [], consistencyLevel: void 0 }; +} +var ls = { encode(e24, t = C.default.Writer.create()) { + for (let r of e24.references) Oe.encode(r, t.uint32(10).fork()).ldelim(); + return e24.consistencyLevel !== void 0 && t.uint32(16).int32(e24.consistencyLevel), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = vc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.references.push(Oe.decode(r, r.uint32())); + continue; + case 2: + if (n !== 16) break; + i.consistencyLevel = r.int32(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { references: globalThis.Array.isArray(e24?.references) ? e24.references.map((t) => Oe.fromJSON(t)) : [], consistencyLevel: W(e24.consistencyLevel) ? tr(e24.consistencyLevel) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.references?.length && (t.references = e24.references.map((r) => Oe.toJSON(r))), e24.consistencyLevel !== void 0 && (t.consistencyLevel = rr(e24.consistencyLevel)), t; +}, create(e24) { + return ls.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = vc(); + return t.references = e24.references?.map((r) => Oe.fromPartial(r)) || [], t.consistencyLevel = e24.consistencyLevel ?? void 0, t; +} }; +function bc() { + return { start: void 0, data: void 0, stop: void 0 }; +} +var Ge = { encode(e24, t = C.default.Writer.create()) { + return e24.start !== void 0 && hn.encode(e24.start, t.uint32(10).fork()).ldelim(), e24.data !== void 0 && Tn.encode(e24.data, t.uint32(18).fork()).ldelim(), e24.stop !== void 0 && yn.encode(e24.stop, t.uint32(26).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = bc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.start = hn.decode(r, r.uint32()); + continue; + case 2: + if (n !== 18) break; + i.data = Tn.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.stop = yn.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { start: W(e24.start) ? hn.fromJSON(e24.start) : void 0, data: W(e24.data) ? Tn.fromJSON(e24.data) : void 0, stop: W(e24.stop) ? yn.fromJSON(e24.stop) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.start !== void 0 && (t.start = hn.toJSON(e24.start)), e24.data !== void 0 && (t.data = Tn.toJSON(e24.data)), e24.stop !== void 0 && (t.stop = yn.toJSON(e24.stop)), t; +}, create(e24) { + return Ge.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = bc(); + return t.start = e24.start !== void 0 && e24.start !== null ? hn.fromPartial(e24.start) : void 0, t.data = e24.data !== void 0 && e24.data !== null ? Tn.fromPartial(e24.data) : void 0, t.stop = e24.stop !== void 0 && e24.stop !== null ? yn.fromPartial(e24.stop) : void 0, t; +} }; +function xc() { + return { consistencyLevel: void 0 }; +} +var hn = { encode(e24, t = C.default.Writer.create()) { + return e24.consistencyLevel !== void 0 && t.uint32(8).int32(e24.consistencyLevel), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = xc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.consistencyLevel = r.int32(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { consistencyLevel: W(e24.consistencyLevel) ? tr(e24.consistencyLevel) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.consistencyLevel !== void 0 && (t.consistencyLevel = rr(e24.consistencyLevel)), t; +}, create(e24) { + return hn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = xc(); + return t.consistencyLevel = e24.consistencyLevel ?? void 0, t; +} }; +function Cc() { + return {}; +} +var yn = { encode(e24, t = C.default.Writer.create()) { + return t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Cc(); + for (; r.pos < a; ) { + let n = r.uint32(); + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return {}; +}, toJSON(e24) { + return {}; +}, create(e24) { + return yn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + return Cc(); +} }; +function Pc() { + return { objects: void 0, references: void 0 }; +} +var Tn = { encode(e24, t = C.default.Writer.create()) { + return e24.objects !== void 0 && vn.encode(e24.objects, t.uint32(10).fork()).ldelim(), e24.references !== void 0 && bn.encode(e24.references, t.uint32(18).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Pc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.objects = vn.decode(r, r.uint32()); + continue; + case 2: + if (n !== 18) break; + i.references = bn.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { objects: W(e24.objects) ? vn.fromJSON(e24.objects) : void 0, references: W(e24.references) ? bn.fromJSON(e24.references) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.objects !== void 0 && (t.objects = vn.toJSON(e24.objects)), e24.references !== void 0 && (t.references = bn.toJSON(e24.references)), t; +}, create(e24) { + return Tn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Pc(); + return t.objects = e24.objects !== void 0 && e24.objects !== null ? vn.fromPartial(e24.objects) : void 0, t.references = e24.references !== void 0 && e24.references !== null ? bn.fromPartial(e24.references) : void 0, t; +} }; +function Rc() { + return { values: [] }; +} +var vn = { encode(e24, t = C.default.Writer.create()) { + for (let r of e24.values) Ve.encode(r, t.uint32(10).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Rc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values.push(Ve.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => Ve.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values.map((r) => Ve.toJSON(r))), t; +}, create(e24) { + return vn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Rc(); + return t.values = e24.values?.map((r) => Ve.fromPartial(r)) || [], t; +} }; +function Ac() { + return { values: [] }; +} +var bn = { encode(e24, t = C.default.Writer.create()) { + for (let r of e24.values) Oe.encode(r, t.uint32(10).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ac(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values.push(Oe.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => Oe.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values.map((r) => Oe.toJSON(r))), t; +}, create(e24) { + return bn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ac(); + return t.values = e24.values?.map((r) => Oe.fromPartial(r)) || [], t; +} }; +function Nc() { + return { results: void 0, shuttingDown: void 0, started: void 0, backoff: void 0, acks: void 0, outOfMemory: void 0 }; +} +var fs = { encode(e24, t = C.default.Writer.create()) { + return e24.results !== void 0 && Nn.encode(e24.results, t.uint32(10).fork()).ldelim(), e24.shuttingDown !== void 0 && Cn.encode(e24.shuttingDown, t.uint32(18).fork()).ldelim(), e24.started !== void 0 && xn.encode(e24.started, t.uint32(34).fork()).ldelim(), e24.backoff !== void 0 && Rn.encode(e24.backoff, t.uint32(42).fork()).ldelim(), e24.acks !== void 0 && An.encode(e24.acks, t.uint32(50).fork()).ldelim(), e24.outOfMemory !== void 0 && Pn.encode(e24.outOfMemory, t.uint32(58).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Nc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.results = Nn.decode(r, r.uint32()); + continue; + case 2: + if (n !== 18) break; + i.shuttingDown = Cn.decode(r, r.uint32()); + continue; + case 4: + if (n !== 34) break; + i.started = xn.decode(r, r.uint32()); + continue; + case 5: + if (n !== 42) break; + i.backoff = Rn.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.acks = An.decode(r, r.uint32()); + continue; + case 7: + if (n !== 58) break; + i.outOfMemory = Pn.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { results: W(e24.results) ? Nn.fromJSON(e24.results) : void 0, shuttingDown: W(e24.shuttingDown) ? Cn.fromJSON(e24.shuttingDown) : void 0, started: W(e24.started) ? xn.fromJSON(e24.started) : void 0, backoff: W(e24.backoff) ? Rn.fromJSON(e24.backoff) : void 0, acks: W(e24.acks) ? An.fromJSON(e24.acks) : void 0, outOfMemory: W(e24.outOfMemory) ? Pn.fromJSON(e24.outOfMemory) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.results !== void 0 && (t.results = Nn.toJSON(e24.results)), e24.shuttingDown !== void 0 && (t.shuttingDown = Cn.toJSON(e24.shuttingDown)), e24.started !== void 0 && (t.started = xn.toJSON(e24.started)), e24.backoff !== void 0 && (t.backoff = Rn.toJSON(e24.backoff)), e24.acks !== void 0 && (t.acks = An.toJSON(e24.acks)), e24.outOfMemory !== void 0 && (t.outOfMemory = Pn.toJSON(e24.outOfMemory)), t; +}, create(e24) { + return fs.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Nc(); + return t.results = e24.results !== void 0 && e24.results !== null ? Nn.fromPartial(e24.results) : void 0, t.shuttingDown = e24.shuttingDown !== void 0 && e24.shuttingDown !== null ? Cn.fromPartial(e24.shuttingDown) : void 0, t.started = e24.started !== void 0 && e24.started !== null ? xn.fromPartial(e24.started) : void 0, t.backoff = e24.backoff !== void 0 && e24.backoff !== null ? Rn.fromPartial(e24.backoff) : void 0, t.acks = e24.acks !== void 0 && e24.acks !== null ? An.fromPartial(e24.acks) : void 0, t.outOfMemory = e24.outOfMemory !== void 0 && e24.outOfMemory !== null ? Pn.fromPartial(e24.outOfMemory) : void 0, t; +} }; +function Vc() { + return {}; +} +var xn = { encode(e24, t = C.default.Writer.create()) { + return t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Vc(); + for (; r.pos < a; ) { + let n = r.uint32(); + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return {}; +}, toJSON(e24) { + return {}; +}, create(e24) { + return xn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + return Vc(); +} }; +function Oc() { + return {}; +} +var Cn = { encode(e24, t = C.default.Writer.create()) { + return t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Oc(); + for (; r.pos < a; ) { + let n = r.uint32(); + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return {}; +}, toJSON(e24) { + return {}; +}, create(e24) { + return Cn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + return Oc(); +} }; +function Sc() { + return { uuids: [], beacons: [], waitTime: 0 }; +} +var Pn = { encode(e24, t = C.default.Writer.create()) { + for (let r of e24.uuids) t.uint32(10).string(r); + for (let r of e24.beacons) t.uint32(18).string(r); + return e24.waitTime !== 0 && t.uint32(24).int32(e24.waitTime), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Sc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.uuids.push(r.string()); + continue; + case 2: + if (n !== 18) break; + i.beacons.push(r.string()); + continue; + case 3: + if (n !== 24) break; + i.waitTime = r.int32(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { uuids: globalThis.Array.isArray(e24?.uuids) ? e24.uuids.map((t) => globalThis.String(t)) : [], beacons: globalThis.Array.isArray(e24?.beacons) ? e24.beacons.map((t) => globalThis.String(t)) : [], waitTime: W(e24.waitTime) ? globalThis.Number(e24.waitTime) : 0 }; +}, toJSON(e24) { + let t = {}; + return e24.uuids?.length && (t.uuids = e24.uuids), e24.beacons?.length && (t.beacons = e24.beacons), e24.waitTime !== 0 && (t.waitTime = Math.round(e24.waitTime)), t; +}, create(e24) { + return Pn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Sc(); + return t.uuids = e24.uuids?.map((r) => r) || [], t.beacons = e24.beacons?.map((r) => r) || [], t.waitTime = e24.waitTime ?? 0, t; +} }; +function kc() { + return { batchSize: 0 }; +} +var Rn = { encode(e24, t = C.default.Writer.create()) { + return e24.batchSize !== 0 && t.uint32(8).int32(e24.batchSize), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = kc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.batchSize = r.int32(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { batchSize: W(e24.batchSize) ? globalThis.Number(e24.batchSize) : 0 }; +}, toJSON(e24) { + let t = {}; + return e24.batchSize !== 0 && (t.batchSize = Math.round(e24.batchSize)), t; +}, create(e24) { + return Rn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = kc(); + return t.batchSize = e24.batchSize ?? 0, t; +} }; +function Ic() { + return { uuids: [], beacons: [] }; +} +var An = { encode(e24, t = C.default.Writer.create()) { + for (let r of e24.uuids) t.uint32(10).string(r); + for (let r of e24.beacons) t.uint32(18).string(r); + return t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ic(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.uuids.push(r.string()); + continue; + case 2: + if (n !== 18) break; + i.beacons.push(r.string()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { uuids: globalThis.Array.isArray(e24?.uuids) ? e24.uuids.map((t) => globalThis.String(t)) : [], beacons: globalThis.Array.isArray(e24?.beacons) ? e24.beacons.map((t) => globalThis.String(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.uuids?.length && (t.uuids = e24.uuids), e24.beacons?.length && (t.beacons = e24.beacons), t; +}, create(e24) { + return An.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ic(); + return t.uuids = e24.uuids?.map((r) => r) || [], t.beacons = e24.beacons?.map((r) => r) || [], t; +} }; +function _c() { + return { errors: [], successes: [] }; +} +var Nn = { encode(e24, t = C.default.Writer.create()) { + for (let r of e24.errors) Vn.encode(r, t.uint32(10).fork()).ldelim(); + for (let r of e24.successes) On.encode(r, t.uint32(18).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = _c(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.errors.push(Vn.decode(r, r.uint32())); + continue; + case 2: + if (n !== 18) break; + i.successes.push(On.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { errors: globalThis.Array.isArray(e24?.errors) ? e24.errors.map((t) => Vn.fromJSON(t)) : [], successes: globalThis.Array.isArray(e24?.successes) ? e24.successes.map((t) => On.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.errors?.length && (t.errors = e24.errors.map((r) => Vn.toJSON(r))), e24.successes?.length && (t.successes = e24.successes.map((r) => On.toJSON(r))), t; +}, create(e24) { + return Nn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = _c(); + return t.errors = e24.errors?.map((r) => Vn.fromPartial(r)) || [], t.successes = e24.successes?.map((r) => On.fromPartial(r)) || [], t; +} }; +function Bc() { + return { error: "", uuid: void 0, beacon: void 0 }; +} +var Vn = { encode(e24, t = C.default.Writer.create()) { + return e24.error !== "" && t.uint32(10).string(e24.error), e24.uuid !== void 0 && t.uint32(18).string(e24.uuid), e24.beacon !== void 0 && t.uint32(26).string(e24.beacon), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Bc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.error = r.string(); + continue; + case 2: + if (n !== 18) break; + i.uuid = r.string(); + continue; + case 3: + if (n !== 26) break; + i.beacon = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { error: W(e24.error) ? globalThis.String(e24.error) : "", uuid: W(e24.uuid) ? globalThis.String(e24.uuid) : void 0, beacon: W(e24.beacon) ? globalThis.String(e24.beacon) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.error !== "" && (t.error = e24.error), e24.uuid !== void 0 && (t.uuid = e24.uuid), e24.beacon !== void 0 && (t.beacon = e24.beacon), t; +}, create(e24) { + return Vn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Bc(); + return t.error = e24.error ?? "", t.uuid = e24.uuid ?? void 0, t.beacon = e24.beacon ?? void 0, t; +} }; +function Gc() { + return { uuid: void 0, beacon: void 0 }; +} +var On = { encode(e24, t = C.default.Writer.create()) { + return e24.uuid !== void 0 && t.uint32(18).string(e24.uuid), e24.beacon !== void 0 && t.uint32(26).string(e24.beacon), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Gc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 2: + if (n !== 18) break; + i.uuid = r.string(); + continue; + case 3: + if (n !== 26) break; + i.beacon = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { uuid: W(e24.uuid) ? globalThis.String(e24.uuid) : void 0, beacon: W(e24.beacon) ? globalThis.String(e24.beacon) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.uuid !== void 0 && (t.uuid = e24.uuid), e24.beacon !== void 0 && (t.beacon = e24.beacon), t; +}, create(e24) { + return On.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Gc(); + return t.uuid = e24.uuid ?? void 0, t.beacon = e24.beacon ?? void 0, t; +} }; +function wc() { + return { uuid: "", vector: [], properties: void 0, collection: "", tenant: "", vectorBytes: new Uint8Array(0), vectors: [] }; +} +var Ve = { encode(e24, t = C.default.Writer.create()) { + e24.uuid !== "" && t.uint32(10).string(e24.uuid), t.uint32(18).fork(); + for (let r of e24.vector) t.float(r); + t.ldelim(), e24.properties !== void 0 && Sn.encode(e24.properties, t.uint32(26).fork()).ldelim(), e24.collection !== "" && t.uint32(34).string(e24.collection), e24.tenant !== "" && t.uint32(42).string(e24.tenant), e24.vectorBytes.length !== 0 && t.uint32(50).bytes(e24.vectorBytes); + for (let r of e24.vectors) q.encode(r, t.uint32(186).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = wc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.uuid = r.string(); + continue; + case 2: + if (n === 21) { + i.vector.push(r.float()); + continue; + } + if (n === 18) { + let o = r.uint32() + r.pos; + for (; r.pos < o; ) i.vector.push(r.float()); + continue; + } + break; + case 3: + if (n !== 26) break; + i.properties = Sn.decode(r, r.uint32()); + continue; + case 4: + if (n !== 34) break; + i.collection = r.string(); + continue; + case 5: + if (n !== 42) break; + i.tenant = r.string(); + continue; + case 6: + if (n !== 50) break; + i.vectorBytes = r.bytes(); + continue; + case 23: + if (n !== 186) break; + i.vectors.push(q.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { uuid: W(e24.uuid) ? globalThis.String(e24.uuid) : "", vector: globalThis.Array.isArray(e24?.vector) ? e24.vector.map((t) => globalThis.Number(t)) : [], properties: W(e24.properties) ? Sn.fromJSON(e24.properties) : void 0, collection: W(e24.collection) ? globalThis.String(e24.collection) : "", tenant: W(e24.tenant) ? globalThis.String(e24.tenant) : "", vectorBytes: W(e24.vectorBytes) ? Vm(e24.vectorBytes) : new Uint8Array(0), vectors: globalThis.Array.isArray(e24?.vectors) ? e24.vectors.map((t) => q.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.uuid !== "" && (t.uuid = e24.uuid), e24.vector?.length && (t.vector = e24.vector), e24.properties !== void 0 && (t.properties = Sn.toJSON(e24.properties)), e24.collection !== "" && (t.collection = e24.collection), e24.tenant !== "" && (t.tenant = e24.tenant), e24.vectorBytes.length !== 0 && (t.vectorBytes = Om(e24.vectorBytes)), e24.vectors?.length && (t.vectors = e24.vectors.map((r) => q.toJSON(r))), t; +}, create(e24) { + return Ve.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = wc(); + return t.uuid = e24.uuid ?? "", t.vector = e24.vector?.map((r) => r) || [], t.properties = e24.properties !== void 0 && e24.properties !== null ? Sn.fromPartial(e24.properties) : void 0, t.collection = e24.collection ?? "", t.tenant = e24.tenant ?? "", t.vectorBytes = e24.vectorBytes ?? new Uint8Array(0), t.vectors = e24.vectors?.map((r) => q.fromPartial(r)) || [], t; +} }; +function Mc() { + return { nonRefProperties: void 0, singleTargetRefProps: [], multiTargetRefProps: [], numberArrayProperties: [], intArrayProperties: [], textArrayProperties: [], booleanArrayProperties: [], objectProperties: [], objectArrayProperties: [], emptyListProps: [] }; +} +var Sn = { encode(e24, t = C.default.Writer.create()) { + e24.nonRefProperties !== void 0 && ye.encode(ye.wrap(e24.nonRefProperties), t.uint32(10).fork()).ldelim(); + for (let r of e24.singleTargetRefProps) kn.encode(r, t.uint32(18).fork()).ldelim(); + for (let r of e24.multiTargetRefProps) In.encode(r, t.uint32(26).fork()).ldelim(); + for (let r of e24.numberArrayProperties) Ye.encode(r, t.uint32(34).fork()).ldelim(); + for (let r of e24.intArrayProperties) Ze.encode(r, t.uint32(42).fork()).ldelim(); + for (let r of e24.textArrayProperties) Xe.encode(r, t.uint32(50).fork()).ldelim(); + for (let r of e24.booleanArrayProperties) je.encode(r, t.uint32(58).fork()).ldelim(); + for (let r of e24.objectProperties) tt.encode(r, t.uint32(66).fork()).ldelim(); + for (let r of e24.objectArrayProperties) et.encode(r, t.uint32(74).fork()).ldelim(); + for (let r of e24.emptyListProps) t.uint32(82).string(r); + return t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Mc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.nonRefProperties = ye.unwrap(ye.decode(r, r.uint32())); + continue; + case 2: + if (n !== 18) break; + i.singleTargetRefProps.push(kn.decode(r, r.uint32())); + continue; + case 3: + if (n !== 26) break; + i.multiTargetRefProps.push(In.decode(r, r.uint32())); + continue; + case 4: + if (n !== 34) break; + i.numberArrayProperties.push(Ye.decode(r, r.uint32())); + continue; + case 5: + if (n !== 42) break; + i.intArrayProperties.push(Ze.decode(r, r.uint32())); + continue; + case 6: + if (n !== 50) break; + i.textArrayProperties.push(Xe.decode(r, r.uint32())); + continue; + case 7: + if (n !== 58) break; + i.booleanArrayProperties.push(je.decode(r, r.uint32())); + continue; + case 8: + if (n !== 66) break; + i.objectProperties.push(tt.decode(r, r.uint32())); + continue; + case 9: + if (n !== 74) break; + i.objectArrayProperties.push(et.decode(r, r.uint32())); + continue; + case 10: + if (n !== 82) break; + i.emptyListProps.push(r.string()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { nonRefProperties: Sm(e24.nonRefProperties) ? e24.nonRefProperties : void 0, singleTargetRefProps: globalThis.Array.isArray(e24?.singleTargetRefProps) ? e24.singleTargetRefProps.map((t) => kn.fromJSON(t)) : [], multiTargetRefProps: globalThis.Array.isArray(e24?.multiTargetRefProps) ? e24.multiTargetRefProps.map((t) => In.fromJSON(t)) : [], numberArrayProperties: globalThis.Array.isArray(e24?.numberArrayProperties) ? e24.numberArrayProperties.map((t) => Ye.fromJSON(t)) : [], intArrayProperties: globalThis.Array.isArray(e24?.intArrayProperties) ? e24.intArrayProperties.map((t) => Ze.fromJSON(t)) : [], textArrayProperties: globalThis.Array.isArray(e24?.textArrayProperties) ? e24.textArrayProperties.map((t) => Xe.fromJSON(t)) : [], booleanArrayProperties: globalThis.Array.isArray(e24?.booleanArrayProperties) ? e24.booleanArrayProperties.map((t) => je.fromJSON(t)) : [], objectProperties: globalThis.Array.isArray(e24?.objectProperties) ? e24.objectProperties.map((t) => tt.fromJSON(t)) : [], objectArrayProperties: globalThis.Array.isArray(e24?.objectArrayProperties) ? e24.objectArrayProperties.map((t) => et.fromJSON(t)) : [], emptyListProps: globalThis.Array.isArray(e24?.emptyListProps) ? e24.emptyListProps.map((t) => globalThis.String(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.nonRefProperties !== void 0 && (t.nonRefProperties = e24.nonRefProperties), e24.singleTargetRefProps?.length && (t.singleTargetRefProps = e24.singleTargetRefProps.map((r) => kn.toJSON(r))), e24.multiTargetRefProps?.length && (t.multiTargetRefProps = e24.multiTargetRefProps.map((r) => In.toJSON(r))), e24.numberArrayProperties?.length && (t.numberArrayProperties = e24.numberArrayProperties.map((r) => Ye.toJSON(r))), e24.intArrayProperties?.length && (t.intArrayProperties = e24.intArrayProperties.map((r) => Ze.toJSON(r))), e24.textArrayProperties?.length && (t.textArrayProperties = e24.textArrayProperties.map((r) => Xe.toJSON(r))), e24.booleanArrayProperties?.length && (t.booleanArrayProperties = e24.booleanArrayProperties.map((r) => je.toJSON(r))), e24.objectProperties?.length && (t.objectProperties = e24.objectProperties.map((r) => tt.toJSON(r))), e24.objectArrayProperties?.length && (t.objectArrayProperties = e24.objectArrayProperties.map((r) => et.toJSON(r))), e24.emptyListProps?.length && (t.emptyListProps = e24.emptyListProps), t; +}, create(e24) { + return Sn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Mc(); + return t.nonRefProperties = e24.nonRefProperties ?? void 0, t.singleTargetRefProps = e24.singleTargetRefProps?.map((r) => kn.fromPartial(r)) || [], t.multiTargetRefProps = e24.multiTargetRefProps?.map((r) => In.fromPartial(r)) || [], t.numberArrayProperties = e24.numberArrayProperties?.map((r) => Ye.fromPartial(r)) || [], t.intArrayProperties = e24.intArrayProperties?.map((r) => Ze.fromPartial(r)) || [], t.textArrayProperties = e24.textArrayProperties?.map((r) => Xe.fromPartial(r)) || [], t.booleanArrayProperties = e24.booleanArrayProperties?.map((r) => je.fromPartial(r)) || [], t.objectProperties = e24.objectProperties?.map((r) => tt.fromPartial(r)) || [], t.objectArrayProperties = e24.objectArrayProperties?.map((r) => et.fromPartial(r)) || [], t.emptyListProps = e24.emptyListProps?.map((r) => r) || [], t; +} }; +function Ec() { + return { uuids: [], propName: "" }; +} +var kn = { encode(e24, t = C.default.Writer.create()) { + for (let r of e24.uuids) t.uint32(10).string(r); + return e24.propName !== "" && t.uint32(18).string(e24.propName), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ec(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.uuids.push(r.string()); + continue; + case 2: + if (n !== 18) break; + i.propName = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { uuids: globalThis.Array.isArray(e24?.uuids) ? e24.uuids.map((t) => globalThis.String(t)) : [], propName: W(e24.propName) ? globalThis.String(e24.propName) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.uuids?.length && (t.uuids = e24.uuids), e24.propName !== "" && (t.propName = e24.propName), t; +}, create(e24) { + return kn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ec(); + return t.uuids = e24.uuids?.map((r) => r) || [], t.propName = e24.propName ?? "", t; +} }; +function Uc() { + return { uuids: [], propName: "", targetCollection: "" }; +} +var In = { encode(e24, t = C.default.Writer.create()) { + for (let r of e24.uuids) t.uint32(10).string(r); + return e24.propName !== "" && t.uint32(18).string(e24.propName), e24.targetCollection !== "" && t.uint32(26).string(e24.targetCollection), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Uc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.uuids.push(r.string()); + continue; + case 2: + if (n !== 18) break; + i.propName = r.string(); + continue; + case 3: + if (n !== 26) break; + i.targetCollection = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { uuids: globalThis.Array.isArray(e24?.uuids) ? e24.uuids.map((t) => globalThis.String(t)) : [], propName: W(e24.propName) ? globalThis.String(e24.propName) : "", targetCollection: W(e24.targetCollection) ? globalThis.String(e24.targetCollection) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.uuids?.length && (t.uuids = e24.uuids), e24.propName !== "" && (t.propName = e24.propName), e24.targetCollection !== "" && (t.targetCollection = e24.targetCollection), t; +}, create(e24) { + return In.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Uc(); + return t.uuids = e24.uuids?.map((r) => r) || [], t.propName = e24.propName ?? "", t.targetCollection = e24.targetCollection ?? "", t; +} }; +function Dc() { + return { name: "", fromCollection: "", fromUuid: "", toCollection: void 0, toUuid: "", tenant: "" }; +} +var Oe = { encode(e24, t = C.default.Writer.create()) { + return e24.name !== "" && t.uint32(10).string(e24.name), e24.fromCollection !== "" && t.uint32(18).string(e24.fromCollection), e24.fromUuid !== "" && t.uint32(26).string(e24.fromUuid), e24.toCollection !== void 0 && t.uint32(34).string(e24.toCollection), e24.toUuid !== "" && t.uint32(42).string(e24.toUuid), e24.tenant !== "" && t.uint32(50).string(e24.tenant), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Dc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.name = r.string(); + continue; + case 2: + if (n !== 18) break; + i.fromCollection = r.string(); + continue; + case 3: + if (n !== 26) break; + i.fromUuid = r.string(); + continue; + case 4: + if (n !== 34) break; + i.toCollection = r.string(); + continue; + case 5: + if (n !== 42) break; + i.toUuid = r.string(); + continue; + case 6: + if (n !== 50) break; + i.tenant = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { name: W(e24.name) ? globalThis.String(e24.name) : "", fromCollection: W(e24.fromCollection) ? globalThis.String(e24.fromCollection) : "", fromUuid: W(e24.fromUuid) ? globalThis.String(e24.fromUuid) : "", toCollection: W(e24.toCollection) ? globalThis.String(e24.toCollection) : void 0, toUuid: W(e24.toUuid) ? globalThis.String(e24.toUuid) : "", tenant: W(e24.tenant) ? globalThis.String(e24.tenant) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.name !== "" && (t.name = e24.name), e24.fromCollection !== "" && (t.fromCollection = e24.fromCollection), e24.fromUuid !== "" && (t.fromUuid = e24.fromUuid), e24.toCollection !== void 0 && (t.toCollection = e24.toCollection), e24.toUuid !== "" && (t.toUuid = e24.toUuid), e24.tenant !== "" && (t.tenant = e24.tenant), t; +}, create(e24) { + return Oe.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Dc(); + return t.name = e24.name ?? "", t.fromCollection = e24.fromCollection ?? "", t.fromUuid = e24.fromUuid ?? "", t.toCollection = e24.toCollection ?? void 0, t.toUuid = e24.toUuid ?? "", t.tenant = e24.tenant ?? "", t; +} }; +function Fc() { + return { took: 0, errors: [] }; +} +var ps = { encode(e24, t = C.default.Writer.create()) { + e24.took !== 0 && t.uint32(13).float(e24.took); + for (let r of e24.errors) _n.encode(r, t.uint32(18).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Fc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 13) break; + i.took = r.float(); + continue; + case 2: + if (n !== 18) break; + i.errors.push(_n.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { took: W(e24.took) ? globalThis.Number(e24.took) : 0, errors: globalThis.Array.isArray(e24?.errors) ? e24.errors.map((t) => _n.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.took !== 0 && (t.took = e24.took), e24.errors?.length && (t.errors = e24.errors.map((r) => _n.toJSON(r))), t; +}, create(e24) { + return ps.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Fc(); + return t.took = e24.took ?? 0, t.errors = e24.errors?.map((r) => _n.fromPartial(r)) || [], t; +} }; +function Wc() { + return { index: 0, error: "" }; +} +var _n = { encode(e24, t = C.default.Writer.create()) { + return e24.index !== 0 && t.uint32(8).int32(e24.index), e24.error !== "" && t.uint32(18).string(e24.error), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Wc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.index = r.int32(); + continue; + case 2: + if (n !== 18) break; + i.error = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { index: W(e24.index) ? globalThis.Number(e24.index) : 0, error: W(e24.error) ? globalThis.String(e24.error) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.index !== 0 && (t.index = Math.round(e24.index)), e24.error !== "" && (t.error = e24.error), t; +}, create(e24) { + return _n.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Wc(); + return t.index = e24.index ?? 0, t.error = e24.error ?? "", t; +} }; +function qc() { + return { took: 0, errors: [] }; +} +var gs = { encode(e24, t = C.default.Writer.create()) { + e24.took !== 0 && t.uint32(13).float(e24.took); + for (let r of e24.errors) Bn.encode(r, t.uint32(18).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = qc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 13) break; + i.took = r.float(); + continue; + case 2: + if (n !== 18) break; + i.errors.push(Bn.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { took: W(e24.took) ? globalThis.Number(e24.took) : 0, errors: globalThis.Array.isArray(e24?.errors) ? e24.errors.map((t) => Bn.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.took !== 0 && (t.took = e24.took), e24.errors?.length && (t.errors = e24.errors.map((r) => Bn.toJSON(r))), t; +}, create(e24) { + return gs.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = qc(); + return t.took = e24.took ?? 0, t.errors = e24.errors?.map((r) => Bn.fromPartial(r)) || [], t; +} }; +function Lc() { + return { index: 0, error: "" }; +} +var Bn = { encode(e24, t = C.default.Writer.create()) { + return e24.index !== 0 && t.uint32(8).int32(e24.index), e24.error !== "" && t.uint32(18).string(e24.error), t; +}, decode(e24, t) { + let r = e24 instanceof C.default.Reader ? e24 : C.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Lc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.index = r.int32(); + continue; + case 2: + if (n !== 18) break; + i.error = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { index: W(e24.index) ? globalThis.Number(e24.index) : 0, error: W(e24.error) ? globalThis.String(e24.error) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.index !== 0 && (t.index = Math.round(e24.index)), e24.error !== "" && (t.error = e24.error), t; +}, create(e24) { + return Bn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Lc(); + return t.index = e24.index ?? 0, t.error = e24.error ?? "", t; +} }; +function Vm(e24) { + if (globalThis.Buffer) return Uint8Array.from(globalThis.Buffer.from(e24, "base64")); + { + let t = globalThis.atob(e24), r = new Uint8Array(t.length); + for (let a = 0; a < t.length; ++a) r[a] = t.charCodeAt(a); + return r; + } +} +function Om(e24) { + if (globalThis.Buffer) return globalThis.Buffer.from(e24).toString("base64"); + { + let t = []; + return e24.forEach((r) => { + t.push(globalThis.String.fromCharCode(r)); + }), globalThis.btoa(t.join("")); + } +} +function Sm(e24) { + return typeof e24 == "object" && e24 !== null; +} +function W(e24) { + return e24 != null; +} +d(); +var g = ze(Ke()); +function km(e24) { + switch (e24) { + case 0: + case "REASONING_EFFORT_UNSPECIFIED": + return 0; + case 1: + case "REASONING_EFFORT_MINIMAL": + return 1; + case 2: + case "REASONING_EFFORT_LOW": + return 2; + case 3: + case "REASONING_EFFORT_MEDIUM": + return 3; + case 4: + case "REASONING_EFFORT_HIGH": + return 4; + case -1: + case "UNRECOGNIZED": + default: + return -1; + } +} +function Im(e24) { + switch (e24) { + case 0: + return "REASONING_EFFORT_UNSPECIFIED"; + case 1: + return "REASONING_EFFORT_MINIMAL"; + case 2: + return "REASONING_EFFORT_LOW"; + case 3: + return "REASONING_EFFORT_MEDIUM"; + case 4: + return "REASONING_EFFORT_HIGH"; + case -1: + default: + return "UNRECOGNIZED"; + } +} +function _m(e24) { + switch (e24) { + case 0: + case "VERBOSITY_UNSPECIFIED": + return 0; + case 1: + case "VERBOSITY_LOW": + return 1; + case 2: + case "VERBOSITY_MEDIUM": + return 2; + case 3: + case "VERBOSITY_HIGH": + return 3; + case -1: + case "UNRECOGNIZED": + default: + return -1; + } +} +function Bm(e24) { + switch (e24) { + case 0: + return "VERBOSITY_UNSPECIFIED"; + case 1: + return "VERBOSITY_LOW"; + case 2: + return "VERBOSITY_MEDIUM"; + case 3: + return "VERBOSITY_HIGH"; + case -1: + default: + return "UNRECOGNIZED"; + } +} +function zc() { + return { singleResponsePrompt: "", groupedResponseTask: "", groupedProperties: [], single: void 0, grouped: void 0 }; +} +var Vt = { encode(e24, t = g.default.Writer.create()) { + e24.singleResponsePrompt !== "" && t.uint32(10).string(e24.singleResponsePrompt), e24.groupedResponseTask !== "" && t.uint32(18).string(e24.groupedResponseTask); + for (let r of e24.groupedProperties) t.uint32(26).string(r); + return e24.single !== void 0 && ar.encode(e24.single, t.uint32(34).fork()).ldelim(), e24.grouped !== void 0 && or2.encode(e24.grouped, t.uint32(42).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = zc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.singleResponsePrompt = r.string(); + continue; + case 2: + if (n !== 18) break; + i.groupedResponseTask = r.string(); + continue; + case 3: + if (n !== 26) break; + i.groupedProperties.push(r.string()); + continue; + case 4: + if (n !== 34) break; + i.single = ar.decode(r, r.uint32()); + continue; + case 5: + if (n !== 42) break; + i.grouped = or2.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { singleResponsePrompt: l(e24.singleResponsePrompt) ? globalThis.String(e24.singleResponsePrompt) : "", groupedResponseTask: l(e24.groupedResponseTask) ? globalThis.String(e24.groupedResponseTask) : "", groupedProperties: globalThis.Array.isArray(e24?.groupedProperties) ? e24.groupedProperties.map((t) => globalThis.String(t)) : [], single: l(e24.single) ? ar.fromJSON(e24.single) : void 0, grouped: l(e24.grouped) ? or2.fromJSON(e24.grouped) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.singleResponsePrompt !== "" && (t.singleResponsePrompt = e24.singleResponsePrompt), e24.groupedResponseTask !== "" && (t.groupedResponseTask = e24.groupedResponseTask), e24.groupedProperties?.length && (t.groupedProperties = e24.groupedProperties), e24.single !== void 0 && (t.single = ar.toJSON(e24.single)), e24.grouped !== void 0 && (t.grouped = or2.toJSON(e24.grouped)), t; +}, create(e24) { + return Vt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = zc(); + return t.singleResponsePrompt = e24.singleResponsePrompt ?? "", t.groupedResponseTask = e24.groupedResponseTask ?? "", t.groupedProperties = e24.groupedProperties?.map((r) => r) || [], t.single = e24.single !== void 0 && e24.single !== null ? ar.fromPartial(e24.single) : void 0, t.grouped = e24.grouped !== void 0 && e24.grouped !== null ? or2.fromPartial(e24.grouped) : void 0, t; +} }; +function $c() { + return { prompt: "", debug: false, queries: [] }; +} +var ar = { encode(e24, t = g.default.Writer.create()) { + e24.prompt !== "" && t.uint32(10).string(e24.prompt), e24.debug !== false && t.uint32(16).bool(e24.debug); + for (let r of e24.queries) qe.encode(r, t.uint32(26).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = $c(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.prompt = r.string(); + continue; + case 2: + if (n !== 16) break; + i.debug = r.bool(); + continue; + case 3: + if (n !== 26) break; + i.queries.push(qe.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { prompt: l(e24.prompt) ? globalThis.String(e24.prompt) : "", debug: l(e24.debug) ? globalThis.Boolean(e24.debug) : false, queries: globalThis.Array.isArray(e24?.queries) ? e24.queries.map((t) => qe.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.prompt !== "" && (t.prompt = e24.prompt), e24.debug !== false && (t.debug = e24.debug), e24.queries?.length && (t.queries = e24.queries.map((r) => qe.toJSON(r))), t; +}, create(e24) { + return ar.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = $c(); + return t.prompt = e24.prompt ?? "", t.debug = e24.debug ?? false, t.queries = e24.queries?.map((r) => qe.fromPartial(r)) || [], t; +} }; +function Hc() { + return { task: "", properties: void 0, queries: [], debug: false }; +} +var or2 = { encode(e24, t = g.default.Writer.create()) { + e24.task !== "" && t.uint32(10).string(e24.task), e24.properties !== void 0 && m.encode(e24.properties, t.uint32(18).fork()).ldelim(); + for (let r of e24.queries) qe.encode(r, t.uint32(26).fork()).ldelim(); + return e24.debug !== false && t.uint32(32).bool(e24.debug), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Hc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.task = r.string(); + continue; + case 2: + if (n !== 18) break; + i.properties = m.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.queries.push(qe.decode(r, r.uint32())); + continue; + case 4: + if (n !== 32) break; + i.debug = r.bool(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { task: l(e24.task) ? globalThis.String(e24.task) : "", properties: l(e24.properties) ? m.fromJSON(e24.properties) : void 0, queries: globalThis.Array.isArray(e24?.queries) ? e24.queries.map((t) => qe.fromJSON(t)) : [], debug: l(e24.debug) ? globalThis.Boolean(e24.debug) : false }; +}, toJSON(e24) { + let t = {}; + return e24.task !== "" && (t.task = e24.task), e24.properties !== void 0 && (t.properties = m.toJSON(e24.properties)), e24.queries?.length && (t.queries = e24.queries.map((r) => qe.toJSON(r))), e24.debug !== false && (t.debug = e24.debug), t; +}, create(e24) { + return or2.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Hc(); + return t.task = e24.task ?? "", t.properties = e24.properties !== void 0 && e24.properties !== null ? m.fromPartial(e24.properties) : void 0, t.queries = e24.queries?.map((r) => qe.fromPartial(r)) || [], t.debug = e24.debug ?? false, t; +} }; +function Qc() { + return { returnMetadata: false, anthropic: void 0, anyscale: void 0, aws: void 0, cohere: void 0, dummy: void 0, mistral: void 0, ollama: void 0, openai: void 0, google: void 0, databricks: void 0, friendliai: void 0, nvidia: void 0, xai: void 0, contextualai: void 0 }; +} +var qe = { encode(e24, t = g.default.Writer.create()) { + return e24.returnMetadata !== false && t.uint32(8).bool(e24.returnMetadata), e24.anthropic !== void 0 && Gn.encode(e24.anthropic, t.uint32(18).fork()).ldelim(), e24.anyscale !== void 0 && wn.encode(e24.anyscale, t.uint32(26).fork()).ldelim(), e24.aws !== void 0 && Mn.encode(e24.aws, t.uint32(34).fork()).ldelim(), e24.cohere !== void 0 && En.encode(e24.cohere, t.uint32(42).fork()).ldelim(), e24.dummy !== void 0 && Un.encode(e24.dummy, t.uint32(50).fork()).ldelim(), e24.mistral !== void 0 && Dn.encode(e24.mistral, t.uint32(58).fork()).ldelim(), e24.ollama !== void 0 && Fn.encode(e24.ollama, t.uint32(66).fork()).ldelim(), e24.openai !== void 0 && Wn.encode(e24.openai, t.uint32(74).fork()).ldelim(), e24.google !== void 0 && qn.encode(e24.google, t.uint32(82).fork()).ldelim(), e24.databricks !== void 0 && Ln.encode(e24.databricks, t.uint32(90).fork()).ldelim(), e24.friendliai !== void 0 && Jn.encode(e24.friendliai, t.uint32(98).fork()).ldelim(), e24.nvidia !== void 0 && zn.encode(e24.nvidia, t.uint32(106).fork()).ldelim(), e24.xai !== void 0 && $n.encode(e24.xai, t.uint32(114).fork()).ldelim(), e24.contextualai !== void 0 && Hn.encode(e24.contextualai, t.uint32(122).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Qc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.returnMetadata = r.bool(); + continue; + case 2: + if (n !== 18) break; + i.anthropic = Gn.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.anyscale = wn.decode(r, r.uint32()); + continue; + case 4: + if (n !== 34) break; + i.aws = Mn.decode(r, r.uint32()); + continue; + case 5: + if (n !== 42) break; + i.cohere = En.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.dummy = Un.decode(r, r.uint32()); + continue; + case 7: + if (n !== 58) break; + i.mistral = Dn.decode(r, r.uint32()); + continue; + case 8: + if (n !== 66) break; + i.ollama = Fn.decode(r, r.uint32()); + continue; + case 9: + if (n !== 74) break; + i.openai = Wn.decode(r, r.uint32()); + continue; + case 10: + if (n !== 82) break; + i.google = qn.decode(r, r.uint32()); + continue; + case 11: + if (n !== 90) break; + i.databricks = Ln.decode(r, r.uint32()); + continue; + case 12: + if (n !== 98) break; + i.friendliai = Jn.decode(r, r.uint32()); + continue; + case 13: + if (n !== 106) break; + i.nvidia = zn.decode(r, r.uint32()); + continue; + case 14: + if (n !== 114) break; + i.xai = $n.decode(r, r.uint32()); + continue; + case 15: + if (n !== 122) break; + i.contextualai = Hn.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { returnMetadata: l(e24.returnMetadata) ? globalThis.Boolean(e24.returnMetadata) : false, anthropic: l(e24.anthropic) ? Gn.fromJSON(e24.anthropic) : void 0, anyscale: l(e24.anyscale) ? wn.fromJSON(e24.anyscale) : void 0, aws: l(e24.aws) ? Mn.fromJSON(e24.aws) : void 0, cohere: l(e24.cohere) ? En.fromJSON(e24.cohere) : void 0, dummy: l(e24.dummy) ? Un.fromJSON(e24.dummy) : void 0, mistral: l(e24.mistral) ? Dn.fromJSON(e24.mistral) : void 0, ollama: l(e24.ollama) ? Fn.fromJSON(e24.ollama) : void 0, openai: l(e24.openai) ? Wn.fromJSON(e24.openai) : void 0, google: l(e24.google) ? qn.fromJSON(e24.google) : void 0, databricks: l(e24.databricks) ? Ln.fromJSON(e24.databricks) : void 0, friendliai: l(e24.friendliai) ? Jn.fromJSON(e24.friendliai) : void 0, nvidia: l(e24.nvidia) ? zn.fromJSON(e24.nvidia) : void 0, xai: l(e24.xai) ? $n.fromJSON(e24.xai) : void 0, contextualai: l(e24.contextualai) ? Hn.fromJSON(e24.contextualai) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.returnMetadata !== false && (t.returnMetadata = e24.returnMetadata), e24.anthropic !== void 0 && (t.anthropic = Gn.toJSON(e24.anthropic)), e24.anyscale !== void 0 && (t.anyscale = wn.toJSON(e24.anyscale)), e24.aws !== void 0 && (t.aws = Mn.toJSON(e24.aws)), e24.cohere !== void 0 && (t.cohere = En.toJSON(e24.cohere)), e24.dummy !== void 0 && (t.dummy = Un.toJSON(e24.dummy)), e24.mistral !== void 0 && (t.mistral = Dn.toJSON(e24.mistral)), e24.ollama !== void 0 && (t.ollama = Fn.toJSON(e24.ollama)), e24.openai !== void 0 && (t.openai = Wn.toJSON(e24.openai)), e24.google !== void 0 && (t.google = qn.toJSON(e24.google)), e24.databricks !== void 0 && (t.databricks = Ln.toJSON(e24.databricks)), e24.friendliai !== void 0 && (t.friendliai = Jn.toJSON(e24.friendliai)), e24.nvidia !== void 0 && (t.nvidia = zn.toJSON(e24.nvidia)), e24.xai !== void 0 && (t.xai = $n.toJSON(e24.xai)), e24.contextualai !== void 0 && (t.contextualai = Hn.toJSON(e24.contextualai)), t; +}, create(e24) { + return qe.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Qc(); + return t.returnMetadata = e24.returnMetadata ?? false, t.anthropic = e24.anthropic !== void 0 && e24.anthropic !== null ? Gn.fromPartial(e24.anthropic) : void 0, t.anyscale = e24.anyscale !== void 0 && e24.anyscale !== null ? wn.fromPartial(e24.anyscale) : void 0, t.aws = e24.aws !== void 0 && e24.aws !== null ? Mn.fromPartial(e24.aws) : void 0, t.cohere = e24.cohere !== void 0 && e24.cohere !== null ? En.fromPartial(e24.cohere) : void 0, t.dummy = e24.dummy !== void 0 && e24.dummy !== null ? Un.fromPartial(e24.dummy) : void 0, t.mistral = e24.mistral !== void 0 && e24.mistral !== null ? Dn.fromPartial(e24.mistral) : void 0, t.ollama = e24.ollama !== void 0 && e24.ollama !== null ? Fn.fromPartial(e24.ollama) : void 0, t.openai = e24.openai !== void 0 && e24.openai !== null ? Wn.fromPartial(e24.openai) : void 0, t.google = e24.google !== void 0 && e24.google !== null ? qn.fromPartial(e24.google) : void 0, t.databricks = e24.databricks !== void 0 && e24.databricks !== null ? Ln.fromPartial(e24.databricks) : void 0, t.friendliai = e24.friendliai !== void 0 && e24.friendliai !== null ? Jn.fromPartial(e24.friendliai) : void 0, t.nvidia = e24.nvidia !== void 0 && e24.nvidia !== null ? zn.fromPartial(e24.nvidia) : void 0, t.xai = e24.xai !== void 0 && e24.xai !== null ? $n.fromPartial(e24.xai) : void 0, t.contextualai = e24.contextualai !== void 0 && e24.contextualai !== null ? Hn.fromPartial(e24.contextualai) : void 0, t; +} }; +function Kc() { + return { baseUrl: void 0, maxTokens: void 0, model: void 0, temperature: void 0, topK: void 0, topP: void 0, stopSequences: void 0, images: void 0, imageProperties: void 0 }; +} +var Gn = { encode(e24, t = g.default.Writer.create()) { + return e24.baseUrl !== void 0 && t.uint32(10).string(e24.baseUrl), e24.maxTokens !== void 0 && t.uint32(16).int64(e24.maxTokens), e24.model !== void 0 && t.uint32(26).string(e24.model), e24.temperature !== void 0 && t.uint32(33).double(e24.temperature), e24.topK !== void 0 && t.uint32(40).int64(e24.topK), e24.topP !== void 0 && t.uint32(49).double(e24.topP), e24.stopSequences !== void 0 && m.encode(e24.stopSequences, t.uint32(58).fork()).ldelim(), e24.images !== void 0 && m.encode(e24.images, t.uint32(66).fork()).ldelim(), e24.imageProperties !== void 0 && m.encode(e24.imageProperties, t.uint32(74).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Kc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.baseUrl = r.string(); + continue; + case 2: + if (n !== 16) break; + i.maxTokens = E(r.int64()); + continue; + case 3: + if (n !== 26) break; + i.model = r.string(); + continue; + case 4: + if (n !== 33) break; + i.temperature = r.double(); + continue; + case 5: + if (n !== 40) break; + i.topK = E(r.int64()); + continue; + case 6: + if (n !== 49) break; + i.topP = r.double(); + continue; + case 7: + if (n !== 58) break; + i.stopSequences = m.decode(r, r.uint32()); + continue; + case 8: + if (n !== 66) break; + i.images = m.decode(r, r.uint32()); + continue; + case 9: + if (n !== 74) break; + i.imageProperties = m.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { baseUrl: l(e24.baseUrl) ? globalThis.String(e24.baseUrl) : void 0, maxTokens: l(e24.maxTokens) ? globalThis.Number(e24.maxTokens) : void 0, model: l(e24.model) ? globalThis.String(e24.model) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0, topK: l(e24.topK) ? globalThis.Number(e24.topK) : void 0, topP: l(e24.topP) ? globalThis.Number(e24.topP) : void 0, stopSequences: l(e24.stopSequences) ? m.fromJSON(e24.stopSequences) : void 0, images: l(e24.images) ? m.fromJSON(e24.images) : void 0, imageProperties: l(e24.imageProperties) ? m.fromJSON(e24.imageProperties) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.baseUrl !== void 0 && (t.baseUrl = e24.baseUrl), e24.maxTokens !== void 0 && (t.maxTokens = Math.round(e24.maxTokens)), e24.model !== void 0 && (t.model = e24.model), e24.temperature !== void 0 && (t.temperature = e24.temperature), e24.topK !== void 0 && (t.topK = Math.round(e24.topK)), e24.topP !== void 0 && (t.topP = e24.topP), e24.stopSequences !== void 0 && (t.stopSequences = m.toJSON(e24.stopSequences)), e24.images !== void 0 && (t.images = m.toJSON(e24.images)), e24.imageProperties !== void 0 && (t.imageProperties = m.toJSON(e24.imageProperties)), t; +}, create(e24) { + return Gn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Kc(); + return t.baseUrl = e24.baseUrl ?? void 0, t.maxTokens = e24.maxTokens ?? void 0, t.model = e24.model ?? void 0, t.temperature = e24.temperature ?? void 0, t.topK = e24.topK ?? void 0, t.topP = e24.topP ?? void 0, t.stopSequences = e24.stopSequences !== void 0 && e24.stopSequences !== null ? m.fromPartial(e24.stopSequences) : void 0, t.images = e24.images !== void 0 && e24.images !== null ? m.fromPartial(e24.images) : void 0, t.imageProperties = e24.imageProperties !== void 0 && e24.imageProperties !== null ? m.fromPartial(e24.imageProperties) : void 0, t; +} }; +function Yc() { + return { baseUrl: void 0, model: void 0, temperature: void 0 }; +} +var wn = { encode(e24, t = g.default.Writer.create()) { + return e24.baseUrl !== void 0 && t.uint32(10).string(e24.baseUrl), e24.model !== void 0 && t.uint32(18).string(e24.model), e24.temperature !== void 0 && t.uint32(25).double(e24.temperature), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Yc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.baseUrl = r.string(); + continue; + case 2: + if (n !== 18) break; + i.model = r.string(); + continue; + case 3: + if (n !== 25) break; + i.temperature = r.double(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { baseUrl: l(e24.baseUrl) ? globalThis.String(e24.baseUrl) : void 0, model: l(e24.model) ? globalThis.String(e24.model) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.baseUrl !== void 0 && (t.baseUrl = e24.baseUrl), e24.model !== void 0 && (t.model = e24.model), e24.temperature !== void 0 && (t.temperature = e24.temperature), t; +}, create(e24) { + return wn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Yc(); + return t.baseUrl = e24.baseUrl ?? void 0, t.model = e24.model ?? void 0, t.temperature = e24.temperature ?? void 0, t; +} }; +function Zc() { + return { model: void 0, temperature: void 0, service: void 0, region: void 0, endpoint: void 0, targetModel: void 0, targetVariant: void 0, images: void 0, imageProperties: void 0, maxTokens: void 0, stopSequences: void 0 }; +} +var Mn = { encode(e24, t = g.default.Writer.create()) { + return e24.model !== void 0 && t.uint32(26).string(e24.model), e24.temperature !== void 0 && t.uint32(65).double(e24.temperature), e24.service !== void 0 && t.uint32(74).string(e24.service), e24.region !== void 0 && t.uint32(82).string(e24.region), e24.endpoint !== void 0 && t.uint32(90).string(e24.endpoint), e24.targetModel !== void 0 && t.uint32(98).string(e24.targetModel), e24.targetVariant !== void 0 && t.uint32(106).string(e24.targetVariant), e24.images !== void 0 && m.encode(e24.images, t.uint32(114).fork()).ldelim(), e24.imageProperties !== void 0 && m.encode(e24.imageProperties, t.uint32(122).fork()).ldelim(), e24.maxTokens !== void 0 && t.uint32(128).int64(e24.maxTokens), e24.stopSequences !== void 0 && m.encode(e24.stopSequences, t.uint32(138).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Zc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 3: + if (n !== 26) break; + i.model = r.string(); + continue; + case 8: + if (n !== 65) break; + i.temperature = r.double(); + continue; + case 9: + if (n !== 74) break; + i.service = r.string(); + continue; + case 10: + if (n !== 82) break; + i.region = r.string(); + continue; + case 11: + if (n !== 90) break; + i.endpoint = r.string(); + continue; + case 12: + if (n !== 98) break; + i.targetModel = r.string(); + continue; + case 13: + if (n !== 106) break; + i.targetVariant = r.string(); + continue; + case 14: + if (n !== 114) break; + i.images = m.decode(r, r.uint32()); + continue; + case 15: + if (n !== 122) break; + i.imageProperties = m.decode(r, r.uint32()); + continue; + case 16: + if (n !== 128) break; + i.maxTokens = E(r.int64()); + continue; + case 17: + if (n !== 138) break; + i.stopSequences = m.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { model: l(e24.model) ? globalThis.String(e24.model) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0, service: l(e24.service) ? globalThis.String(e24.service) : void 0, region: l(e24.region) ? globalThis.String(e24.region) : void 0, endpoint: l(e24.endpoint) ? globalThis.String(e24.endpoint) : void 0, targetModel: l(e24.targetModel) ? globalThis.String(e24.targetModel) : void 0, targetVariant: l(e24.targetVariant) ? globalThis.String(e24.targetVariant) : void 0, images: l(e24.images) ? m.fromJSON(e24.images) : void 0, imageProperties: l(e24.imageProperties) ? m.fromJSON(e24.imageProperties) : void 0, maxTokens: l(e24.maxTokens) ? globalThis.Number(e24.maxTokens) : void 0, stopSequences: l(e24.stopSequences) ? m.fromJSON(e24.stopSequences) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.model !== void 0 && (t.model = e24.model), e24.temperature !== void 0 && (t.temperature = e24.temperature), e24.service !== void 0 && (t.service = e24.service), e24.region !== void 0 && (t.region = e24.region), e24.endpoint !== void 0 && (t.endpoint = e24.endpoint), e24.targetModel !== void 0 && (t.targetModel = e24.targetModel), e24.targetVariant !== void 0 && (t.targetVariant = e24.targetVariant), e24.images !== void 0 && (t.images = m.toJSON(e24.images)), e24.imageProperties !== void 0 && (t.imageProperties = m.toJSON(e24.imageProperties)), e24.maxTokens !== void 0 && (t.maxTokens = Math.round(e24.maxTokens)), e24.stopSequences !== void 0 && (t.stopSequences = m.toJSON(e24.stopSequences)), t; +}, create(e24) { + return Mn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Zc(); + return t.model = e24.model ?? void 0, t.temperature = e24.temperature ?? void 0, t.service = e24.service ?? void 0, t.region = e24.region ?? void 0, t.endpoint = e24.endpoint ?? void 0, t.targetModel = e24.targetModel ?? void 0, t.targetVariant = e24.targetVariant ?? void 0, t.images = e24.images !== void 0 && e24.images !== null ? m.fromPartial(e24.images) : void 0, t.imageProperties = e24.imageProperties !== void 0 && e24.imageProperties !== null ? m.fromPartial(e24.imageProperties) : void 0, t.maxTokens = e24.maxTokens ?? void 0, t.stopSequences = e24.stopSequences !== void 0 && e24.stopSequences !== null ? m.fromPartial(e24.stopSequences) : void 0, t; +} }; +function Xc() { + return { baseUrl: void 0, frequencyPenalty: void 0, maxTokens: void 0, model: void 0, k: void 0, p: void 0, presencePenalty: void 0, stopSequences: void 0, temperature: void 0, images: void 0, imageProperties: void 0 }; +} +var En = { encode(e24, t = g.default.Writer.create()) { + return e24.baseUrl !== void 0 && t.uint32(10).string(e24.baseUrl), e24.frequencyPenalty !== void 0 && t.uint32(17).double(e24.frequencyPenalty), e24.maxTokens !== void 0 && t.uint32(24).int64(e24.maxTokens), e24.model !== void 0 && t.uint32(34).string(e24.model), e24.k !== void 0 && t.uint32(40).int64(e24.k), e24.p !== void 0 && t.uint32(49).double(e24.p), e24.presencePenalty !== void 0 && t.uint32(57).double(e24.presencePenalty), e24.stopSequences !== void 0 && m.encode(e24.stopSequences, t.uint32(66).fork()).ldelim(), e24.temperature !== void 0 && t.uint32(73).double(e24.temperature), e24.images !== void 0 && m.encode(e24.images, t.uint32(82).fork()).ldelim(), e24.imageProperties !== void 0 && m.encode(e24.imageProperties, t.uint32(90).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Xc(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.baseUrl = r.string(); + continue; + case 2: + if (n !== 17) break; + i.frequencyPenalty = r.double(); + continue; + case 3: + if (n !== 24) break; + i.maxTokens = E(r.int64()); + continue; + case 4: + if (n !== 34) break; + i.model = r.string(); + continue; + case 5: + if (n !== 40) break; + i.k = E(r.int64()); + continue; + case 6: + if (n !== 49) break; + i.p = r.double(); + continue; + case 7: + if (n !== 57) break; + i.presencePenalty = r.double(); + continue; + case 8: + if (n !== 66) break; + i.stopSequences = m.decode(r, r.uint32()); + continue; + case 9: + if (n !== 73) break; + i.temperature = r.double(); + continue; + case 10: + if (n !== 82) break; + i.images = m.decode(r, r.uint32()); + continue; + case 11: + if (n !== 90) break; + i.imageProperties = m.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { baseUrl: l(e24.baseUrl) ? globalThis.String(e24.baseUrl) : void 0, frequencyPenalty: l(e24.frequencyPenalty) ? globalThis.Number(e24.frequencyPenalty) : void 0, maxTokens: l(e24.maxTokens) ? globalThis.Number(e24.maxTokens) : void 0, model: l(e24.model) ? globalThis.String(e24.model) : void 0, k: l(e24.k) ? globalThis.Number(e24.k) : void 0, p: l(e24.p) ? globalThis.Number(e24.p) : void 0, presencePenalty: l(e24.presencePenalty) ? globalThis.Number(e24.presencePenalty) : void 0, stopSequences: l(e24.stopSequences) ? m.fromJSON(e24.stopSequences) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0, images: l(e24.images) ? m.fromJSON(e24.images) : void 0, imageProperties: l(e24.imageProperties) ? m.fromJSON(e24.imageProperties) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.baseUrl !== void 0 && (t.baseUrl = e24.baseUrl), e24.frequencyPenalty !== void 0 && (t.frequencyPenalty = e24.frequencyPenalty), e24.maxTokens !== void 0 && (t.maxTokens = Math.round(e24.maxTokens)), e24.model !== void 0 && (t.model = e24.model), e24.k !== void 0 && (t.k = Math.round(e24.k)), e24.p !== void 0 && (t.p = e24.p), e24.presencePenalty !== void 0 && (t.presencePenalty = e24.presencePenalty), e24.stopSequences !== void 0 && (t.stopSequences = m.toJSON(e24.stopSequences)), e24.temperature !== void 0 && (t.temperature = e24.temperature), e24.images !== void 0 && (t.images = m.toJSON(e24.images)), e24.imageProperties !== void 0 && (t.imageProperties = m.toJSON(e24.imageProperties)), t; +}, create(e24) { + return En.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Xc(); + return t.baseUrl = e24.baseUrl ?? void 0, t.frequencyPenalty = e24.frequencyPenalty ?? void 0, t.maxTokens = e24.maxTokens ?? void 0, t.model = e24.model ?? void 0, t.k = e24.k ?? void 0, t.p = e24.p ?? void 0, t.presencePenalty = e24.presencePenalty ?? void 0, t.stopSequences = e24.stopSequences !== void 0 && e24.stopSequences !== null ? m.fromPartial(e24.stopSequences) : void 0, t.temperature = e24.temperature ?? void 0, t.images = e24.images !== void 0 && e24.images !== null ? m.fromPartial(e24.images) : void 0, t.imageProperties = e24.imageProperties !== void 0 && e24.imageProperties !== null ? m.fromPartial(e24.imageProperties) : void 0, t; +} }; +function jc() { + return {}; +} +var Un = { encode(e24, t = g.default.Writer.create()) { + return t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = jc(); + for (; r.pos < a; ) { + let n = r.uint32(); + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return {}; +}, toJSON(e24) { + return {}; +}, create(e24) { + return Un.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + return jc(); +} }; +function el() { + return { baseUrl: void 0, maxTokens: void 0, model: void 0, temperature: void 0, topP: void 0 }; +} +var Dn = { encode(e24, t = g.default.Writer.create()) { + return e24.baseUrl !== void 0 && t.uint32(10).string(e24.baseUrl), e24.maxTokens !== void 0 && t.uint32(16).int64(e24.maxTokens), e24.model !== void 0 && t.uint32(26).string(e24.model), e24.temperature !== void 0 && t.uint32(33).double(e24.temperature), e24.topP !== void 0 && t.uint32(41).double(e24.topP), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = el(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.baseUrl = r.string(); + continue; + case 2: + if (n !== 16) break; + i.maxTokens = E(r.int64()); + continue; + case 3: + if (n !== 26) break; + i.model = r.string(); + continue; + case 4: + if (n !== 33) break; + i.temperature = r.double(); + continue; + case 5: + if (n !== 41) break; + i.topP = r.double(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { baseUrl: l(e24.baseUrl) ? globalThis.String(e24.baseUrl) : void 0, maxTokens: l(e24.maxTokens) ? globalThis.Number(e24.maxTokens) : void 0, model: l(e24.model) ? globalThis.String(e24.model) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0, topP: l(e24.topP) ? globalThis.Number(e24.topP) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.baseUrl !== void 0 && (t.baseUrl = e24.baseUrl), e24.maxTokens !== void 0 && (t.maxTokens = Math.round(e24.maxTokens)), e24.model !== void 0 && (t.model = e24.model), e24.temperature !== void 0 && (t.temperature = e24.temperature), e24.topP !== void 0 && (t.topP = e24.topP), t; +}, create(e24) { + return Dn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = el(); + return t.baseUrl = e24.baseUrl ?? void 0, t.maxTokens = e24.maxTokens ?? void 0, t.model = e24.model ?? void 0, t.temperature = e24.temperature ?? void 0, t.topP = e24.topP ?? void 0, t; +} }; +function tl() { + return { apiEndpoint: void 0, model: void 0, temperature: void 0, images: void 0, imageProperties: void 0 }; +} +var Fn = { encode(e24, t = g.default.Writer.create()) { + return e24.apiEndpoint !== void 0 && t.uint32(10).string(e24.apiEndpoint), e24.model !== void 0 && t.uint32(18).string(e24.model), e24.temperature !== void 0 && t.uint32(25).double(e24.temperature), e24.images !== void 0 && m.encode(e24.images, t.uint32(34).fork()).ldelim(), e24.imageProperties !== void 0 && m.encode(e24.imageProperties, t.uint32(42).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = tl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.apiEndpoint = r.string(); + continue; + case 2: + if (n !== 18) break; + i.model = r.string(); + continue; + case 3: + if (n !== 25) break; + i.temperature = r.double(); + continue; + case 4: + if (n !== 34) break; + i.images = m.decode(r, r.uint32()); + continue; + case 5: + if (n !== 42) break; + i.imageProperties = m.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { apiEndpoint: l(e24.apiEndpoint) ? globalThis.String(e24.apiEndpoint) : void 0, model: l(e24.model) ? globalThis.String(e24.model) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0, images: l(e24.images) ? m.fromJSON(e24.images) : void 0, imageProperties: l(e24.imageProperties) ? m.fromJSON(e24.imageProperties) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.apiEndpoint !== void 0 && (t.apiEndpoint = e24.apiEndpoint), e24.model !== void 0 && (t.model = e24.model), e24.temperature !== void 0 && (t.temperature = e24.temperature), e24.images !== void 0 && (t.images = m.toJSON(e24.images)), e24.imageProperties !== void 0 && (t.imageProperties = m.toJSON(e24.imageProperties)), t; +}, create(e24) { + return Fn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = tl(); + return t.apiEndpoint = e24.apiEndpoint ?? void 0, t.model = e24.model ?? void 0, t.temperature = e24.temperature ?? void 0, t.images = e24.images !== void 0 && e24.images !== null ? m.fromPartial(e24.images) : void 0, t.imageProperties = e24.imageProperties !== void 0 && e24.imageProperties !== null ? m.fromPartial(e24.imageProperties) : void 0, t; +} }; +function rl() { + return { frequencyPenalty: void 0, maxTokens: void 0, model: void 0, n: void 0, presencePenalty: void 0, stop: void 0, temperature: void 0, topP: void 0, baseUrl: void 0, apiVersion: void 0, resourceName: void 0, deploymentId: void 0, isAzure: void 0, images: void 0, imageProperties: void 0, reasoningEffort: void 0, verbosity: void 0 }; +} +var Wn = { encode(e24, t = g.default.Writer.create()) { + return e24.frequencyPenalty !== void 0 && t.uint32(9).double(e24.frequencyPenalty), e24.maxTokens !== void 0 && t.uint32(16).int64(e24.maxTokens), e24.model !== void 0 && t.uint32(26).string(e24.model), e24.n !== void 0 && t.uint32(32).int64(e24.n), e24.presencePenalty !== void 0 && t.uint32(41).double(e24.presencePenalty), e24.stop !== void 0 && m.encode(e24.stop, t.uint32(50).fork()).ldelim(), e24.temperature !== void 0 && t.uint32(57).double(e24.temperature), e24.topP !== void 0 && t.uint32(65).double(e24.topP), e24.baseUrl !== void 0 && t.uint32(74).string(e24.baseUrl), e24.apiVersion !== void 0 && t.uint32(82).string(e24.apiVersion), e24.resourceName !== void 0 && t.uint32(90).string(e24.resourceName), e24.deploymentId !== void 0 && t.uint32(98).string(e24.deploymentId), e24.isAzure !== void 0 && t.uint32(104).bool(e24.isAzure), e24.images !== void 0 && m.encode(e24.images, t.uint32(114).fork()).ldelim(), e24.imageProperties !== void 0 && m.encode(e24.imageProperties, t.uint32(122).fork()).ldelim(), e24.reasoningEffort !== void 0 && t.uint32(128).int32(e24.reasoningEffort), e24.verbosity !== void 0 && t.uint32(136).int32(e24.verbosity), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = rl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 9) break; + i.frequencyPenalty = r.double(); + continue; + case 2: + if (n !== 16) break; + i.maxTokens = E(r.int64()); + continue; + case 3: + if (n !== 26) break; + i.model = r.string(); + continue; + case 4: + if (n !== 32) break; + i.n = E(r.int64()); + continue; + case 5: + if (n !== 41) break; + i.presencePenalty = r.double(); + continue; + case 6: + if (n !== 50) break; + i.stop = m.decode(r, r.uint32()); + continue; + case 7: + if (n !== 57) break; + i.temperature = r.double(); + continue; + case 8: + if (n !== 65) break; + i.topP = r.double(); + continue; + case 9: + if (n !== 74) break; + i.baseUrl = r.string(); + continue; + case 10: + if (n !== 82) break; + i.apiVersion = r.string(); + continue; + case 11: + if (n !== 90) break; + i.resourceName = r.string(); + continue; + case 12: + if (n !== 98) break; + i.deploymentId = r.string(); + continue; + case 13: + if (n !== 104) break; + i.isAzure = r.bool(); + continue; + case 14: + if (n !== 114) break; + i.images = m.decode(r, r.uint32()); + continue; + case 15: + if (n !== 122) break; + i.imageProperties = m.decode(r, r.uint32()); + continue; + case 16: + if (n !== 128) break; + i.reasoningEffort = r.int32(); + continue; + case 17: + if (n !== 136) break; + i.verbosity = r.int32(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { frequencyPenalty: l(e24.frequencyPenalty) ? globalThis.Number(e24.frequencyPenalty) : void 0, maxTokens: l(e24.maxTokens) ? globalThis.Number(e24.maxTokens) : void 0, model: l(e24.model) ? globalThis.String(e24.model) : void 0, n: l(e24.n) ? globalThis.Number(e24.n) : void 0, presencePenalty: l(e24.presencePenalty) ? globalThis.Number(e24.presencePenalty) : void 0, stop: l(e24.stop) ? m.fromJSON(e24.stop) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0, topP: l(e24.topP) ? globalThis.Number(e24.topP) : void 0, baseUrl: l(e24.baseUrl) ? globalThis.String(e24.baseUrl) : void 0, apiVersion: l(e24.apiVersion) ? globalThis.String(e24.apiVersion) : void 0, resourceName: l(e24.resourceName) ? globalThis.String(e24.resourceName) : void 0, deploymentId: l(e24.deploymentId) ? globalThis.String(e24.deploymentId) : void 0, isAzure: l(e24.isAzure) ? globalThis.Boolean(e24.isAzure) : void 0, images: l(e24.images) ? m.fromJSON(e24.images) : void 0, imageProperties: l(e24.imageProperties) ? m.fromJSON(e24.imageProperties) : void 0, reasoningEffort: l(e24.reasoningEffort) ? km(e24.reasoningEffort) : void 0, verbosity: l(e24.verbosity) ? _m(e24.verbosity) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.frequencyPenalty !== void 0 && (t.frequencyPenalty = e24.frequencyPenalty), e24.maxTokens !== void 0 && (t.maxTokens = Math.round(e24.maxTokens)), e24.model !== void 0 && (t.model = e24.model), e24.n !== void 0 && (t.n = Math.round(e24.n)), e24.presencePenalty !== void 0 && (t.presencePenalty = e24.presencePenalty), e24.stop !== void 0 && (t.stop = m.toJSON(e24.stop)), e24.temperature !== void 0 && (t.temperature = e24.temperature), e24.topP !== void 0 && (t.topP = e24.topP), e24.baseUrl !== void 0 && (t.baseUrl = e24.baseUrl), e24.apiVersion !== void 0 && (t.apiVersion = e24.apiVersion), e24.resourceName !== void 0 && (t.resourceName = e24.resourceName), e24.deploymentId !== void 0 && (t.deploymentId = e24.deploymentId), e24.isAzure !== void 0 && (t.isAzure = e24.isAzure), e24.images !== void 0 && (t.images = m.toJSON(e24.images)), e24.imageProperties !== void 0 && (t.imageProperties = m.toJSON(e24.imageProperties)), e24.reasoningEffort !== void 0 && (t.reasoningEffort = Im(e24.reasoningEffort)), e24.verbosity !== void 0 && (t.verbosity = Bm(e24.verbosity)), t; +}, create(e24) { + return Wn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = rl(); + return t.frequencyPenalty = e24.frequencyPenalty ?? void 0, t.maxTokens = e24.maxTokens ?? void 0, t.model = e24.model ?? void 0, t.n = e24.n ?? void 0, t.presencePenalty = e24.presencePenalty ?? void 0, t.stop = e24.stop !== void 0 && e24.stop !== null ? m.fromPartial(e24.stop) : void 0, t.temperature = e24.temperature ?? void 0, t.topP = e24.topP ?? void 0, t.baseUrl = e24.baseUrl ?? void 0, t.apiVersion = e24.apiVersion ?? void 0, t.resourceName = e24.resourceName ?? void 0, t.deploymentId = e24.deploymentId ?? void 0, t.isAzure = e24.isAzure ?? void 0, t.images = e24.images !== void 0 && e24.images !== null ? m.fromPartial(e24.images) : void 0, t.imageProperties = e24.imageProperties !== void 0 && e24.imageProperties !== null ? m.fromPartial(e24.imageProperties) : void 0, t.reasoningEffort = e24.reasoningEffort ?? void 0, t.verbosity = e24.verbosity ?? void 0, t; +} }; +function nl() { + return { frequencyPenalty: void 0, maxTokens: void 0, model: void 0, presencePenalty: void 0, temperature: void 0, topK: void 0, topP: void 0, stopSequences: void 0, apiEndpoint: void 0, projectId: void 0, endpointId: void 0, region: void 0, images: void 0, imageProperties: void 0 }; +} +var qn = { encode(e24, t = g.default.Writer.create()) { + return e24.frequencyPenalty !== void 0 && t.uint32(9).double(e24.frequencyPenalty), e24.maxTokens !== void 0 && t.uint32(16).int64(e24.maxTokens), e24.model !== void 0 && t.uint32(26).string(e24.model), e24.presencePenalty !== void 0 && t.uint32(33).double(e24.presencePenalty), e24.temperature !== void 0 && t.uint32(41).double(e24.temperature), e24.topK !== void 0 && t.uint32(48).int64(e24.topK), e24.topP !== void 0 && t.uint32(57).double(e24.topP), e24.stopSequences !== void 0 && m.encode(e24.stopSequences, t.uint32(66).fork()).ldelim(), e24.apiEndpoint !== void 0 && t.uint32(74).string(e24.apiEndpoint), e24.projectId !== void 0 && t.uint32(82).string(e24.projectId), e24.endpointId !== void 0 && t.uint32(90).string(e24.endpointId), e24.region !== void 0 && t.uint32(98).string(e24.region), e24.images !== void 0 && m.encode(e24.images, t.uint32(106).fork()).ldelim(), e24.imageProperties !== void 0 && m.encode(e24.imageProperties, t.uint32(114).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = nl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 9) break; + i.frequencyPenalty = r.double(); + continue; + case 2: + if (n !== 16) break; + i.maxTokens = E(r.int64()); + continue; + case 3: + if (n !== 26) break; + i.model = r.string(); + continue; + case 4: + if (n !== 33) break; + i.presencePenalty = r.double(); + continue; + case 5: + if (n !== 41) break; + i.temperature = r.double(); + continue; + case 6: + if (n !== 48) break; + i.topK = E(r.int64()); + continue; + case 7: + if (n !== 57) break; + i.topP = r.double(); + continue; + case 8: + if (n !== 66) break; + i.stopSequences = m.decode(r, r.uint32()); + continue; + case 9: + if (n !== 74) break; + i.apiEndpoint = r.string(); + continue; + case 10: + if (n !== 82) break; + i.projectId = r.string(); + continue; + case 11: + if (n !== 90) break; + i.endpointId = r.string(); + continue; + case 12: + if (n !== 98) break; + i.region = r.string(); + continue; + case 13: + if (n !== 106) break; + i.images = m.decode(r, r.uint32()); + continue; + case 14: + if (n !== 114) break; + i.imageProperties = m.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { frequencyPenalty: l(e24.frequencyPenalty) ? globalThis.Number(e24.frequencyPenalty) : void 0, maxTokens: l(e24.maxTokens) ? globalThis.Number(e24.maxTokens) : void 0, model: l(e24.model) ? globalThis.String(e24.model) : void 0, presencePenalty: l(e24.presencePenalty) ? globalThis.Number(e24.presencePenalty) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0, topK: l(e24.topK) ? globalThis.Number(e24.topK) : void 0, topP: l(e24.topP) ? globalThis.Number(e24.topP) : void 0, stopSequences: l(e24.stopSequences) ? m.fromJSON(e24.stopSequences) : void 0, apiEndpoint: l(e24.apiEndpoint) ? globalThis.String(e24.apiEndpoint) : void 0, projectId: l(e24.projectId) ? globalThis.String(e24.projectId) : void 0, endpointId: l(e24.endpointId) ? globalThis.String(e24.endpointId) : void 0, region: l(e24.region) ? globalThis.String(e24.region) : void 0, images: l(e24.images) ? m.fromJSON(e24.images) : void 0, imageProperties: l(e24.imageProperties) ? m.fromJSON(e24.imageProperties) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.frequencyPenalty !== void 0 && (t.frequencyPenalty = e24.frequencyPenalty), e24.maxTokens !== void 0 && (t.maxTokens = Math.round(e24.maxTokens)), e24.model !== void 0 && (t.model = e24.model), e24.presencePenalty !== void 0 && (t.presencePenalty = e24.presencePenalty), e24.temperature !== void 0 && (t.temperature = e24.temperature), e24.topK !== void 0 && (t.topK = Math.round(e24.topK)), e24.topP !== void 0 && (t.topP = e24.topP), e24.stopSequences !== void 0 && (t.stopSequences = m.toJSON(e24.stopSequences)), e24.apiEndpoint !== void 0 && (t.apiEndpoint = e24.apiEndpoint), e24.projectId !== void 0 && (t.projectId = e24.projectId), e24.endpointId !== void 0 && (t.endpointId = e24.endpointId), e24.region !== void 0 && (t.region = e24.region), e24.images !== void 0 && (t.images = m.toJSON(e24.images)), e24.imageProperties !== void 0 && (t.imageProperties = m.toJSON(e24.imageProperties)), t; +}, create(e24) { + return qn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = nl(); + return t.frequencyPenalty = e24.frequencyPenalty ?? void 0, t.maxTokens = e24.maxTokens ?? void 0, t.model = e24.model ?? void 0, t.presencePenalty = e24.presencePenalty ?? void 0, t.temperature = e24.temperature ?? void 0, t.topK = e24.topK ?? void 0, t.topP = e24.topP ?? void 0, t.stopSequences = e24.stopSequences !== void 0 && e24.stopSequences !== null ? m.fromPartial(e24.stopSequences) : void 0, t.apiEndpoint = e24.apiEndpoint ?? void 0, t.projectId = e24.projectId ?? void 0, t.endpointId = e24.endpointId ?? void 0, t.region = e24.region ?? void 0, t.images = e24.images !== void 0 && e24.images !== null ? m.fromPartial(e24.images) : void 0, t.imageProperties = e24.imageProperties !== void 0 && e24.imageProperties !== null ? m.fromPartial(e24.imageProperties) : void 0, t; +} }; +function il() { + return { endpoint: void 0, model: void 0, frequencyPenalty: void 0, logProbs: void 0, topLogProbs: void 0, maxTokens: void 0, n: void 0, presencePenalty: void 0, stop: void 0, temperature: void 0, topP: void 0 }; +} +var Ln = { encode(e24, t = g.default.Writer.create()) { + return e24.endpoint !== void 0 && t.uint32(10).string(e24.endpoint), e24.model !== void 0 && t.uint32(18).string(e24.model), e24.frequencyPenalty !== void 0 && t.uint32(25).double(e24.frequencyPenalty), e24.logProbs !== void 0 && t.uint32(32).bool(e24.logProbs), e24.topLogProbs !== void 0 && t.uint32(40).int64(e24.topLogProbs), e24.maxTokens !== void 0 && t.uint32(48).int64(e24.maxTokens), e24.n !== void 0 && t.uint32(56).int64(e24.n), e24.presencePenalty !== void 0 && t.uint32(65).double(e24.presencePenalty), e24.stop !== void 0 && m.encode(e24.stop, t.uint32(74).fork()).ldelim(), e24.temperature !== void 0 && t.uint32(81).double(e24.temperature), e24.topP !== void 0 && t.uint32(89).double(e24.topP), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = il(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.endpoint = r.string(); + continue; + case 2: + if (n !== 18) break; + i.model = r.string(); + continue; + case 3: + if (n !== 25) break; + i.frequencyPenalty = r.double(); + continue; + case 4: + if (n !== 32) break; + i.logProbs = r.bool(); + continue; + case 5: + if (n !== 40) break; + i.topLogProbs = E(r.int64()); + continue; + case 6: + if (n !== 48) break; + i.maxTokens = E(r.int64()); + continue; + case 7: + if (n !== 56) break; + i.n = E(r.int64()); + continue; + case 8: + if (n !== 65) break; + i.presencePenalty = r.double(); + continue; + case 9: + if (n !== 74) break; + i.stop = m.decode(r, r.uint32()); + continue; + case 10: + if (n !== 81) break; + i.temperature = r.double(); + continue; + case 11: + if (n !== 89) break; + i.topP = r.double(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { endpoint: l(e24.endpoint) ? globalThis.String(e24.endpoint) : void 0, model: l(e24.model) ? globalThis.String(e24.model) : void 0, frequencyPenalty: l(e24.frequencyPenalty) ? globalThis.Number(e24.frequencyPenalty) : void 0, logProbs: l(e24.logProbs) ? globalThis.Boolean(e24.logProbs) : void 0, topLogProbs: l(e24.topLogProbs) ? globalThis.Number(e24.topLogProbs) : void 0, maxTokens: l(e24.maxTokens) ? globalThis.Number(e24.maxTokens) : void 0, n: l(e24.n) ? globalThis.Number(e24.n) : void 0, presencePenalty: l(e24.presencePenalty) ? globalThis.Number(e24.presencePenalty) : void 0, stop: l(e24.stop) ? m.fromJSON(e24.stop) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0, topP: l(e24.topP) ? globalThis.Number(e24.topP) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.endpoint !== void 0 && (t.endpoint = e24.endpoint), e24.model !== void 0 && (t.model = e24.model), e24.frequencyPenalty !== void 0 && (t.frequencyPenalty = e24.frequencyPenalty), e24.logProbs !== void 0 && (t.logProbs = e24.logProbs), e24.topLogProbs !== void 0 && (t.topLogProbs = Math.round(e24.topLogProbs)), e24.maxTokens !== void 0 && (t.maxTokens = Math.round(e24.maxTokens)), e24.n !== void 0 && (t.n = Math.round(e24.n)), e24.presencePenalty !== void 0 && (t.presencePenalty = e24.presencePenalty), e24.stop !== void 0 && (t.stop = m.toJSON(e24.stop)), e24.temperature !== void 0 && (t.temperature = e24.temperature), e24.topP !== void 0 && (t.topP = e24.topP), t; +}, create(e24) { + return Ln.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = il(); + return t.endpoint = e24.endpoint ?? void 0, t.model = e24.model ?? void 0, t.frequencyPenalty = e24.frequencyPenalty ?? void 0, t.logProbs = e24.logProbs ?? void 0, t.topLogProbs = e24.topLogProbs ?? void 0, t.maxTokens = e24.maxTokens ?? void 0, t.n = e24.n ?? void 0, t.presencePenalty = e24.presencePenalty ?? void 0, t.stop = e24.stop !== void 0 && e24.stop !== null ? m.fromPartial(e24.stop) : void 0, t.temperature = e24.temperature ?? void 0, t.topP = e24.topP ?? void 0, t; +} }; +function al() { + return { baseUrl: void 0, model: void 0, maxTokens: void 0, temperature: void 0, n: void 0, topP: void 0 }; +} +var Jn = { encode(e24, t = g.default.Writer.create()) { + return e24.baseUrl !== void 0 && t.uint32(10).string(e24.baseUrl), e24.model !== void 0 && t.uint32(18).string(e24.model), e24.maxTokens !== void 0 && t.uint32(24).int64(e24.maxTokens), e24.temperature !== void 0 && t.uint32(33).double(e24.temperature), e24.n !== void 0 && t.uint32(40).int64(e24.n), e24.topP !== void 0 && t.uint32(49).double(e24.topP), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = al(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.baseUrl = r.string(); + continue; + case 2: + if (n !== 18) break; + i.model = r.string(); + continue; + case 3: + if (n !== 24) break; + i.maxTokens = E(r.int64()); + continue; + case 4: + if (n !== 33) break; + i.temperature = r.double(); + continue; + case 5: + if (n !== 40) break; + i.n = E(r.int64()); + continue; + case 6: + if (n !== 49) break; + i.topP = r.double(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { baseUrl: l(e24.baseUrl) ? globalThis.String(e24.baseUrl) : void 0, model: l(e24.model) ? globalThis.String(e24.model) : void 0, maxTokens: l(e24.maxTokens) ? globalThis.Number(e24.maxTokens) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0, n: l(e24.n) ? globalThis.Number(e24.n) : void 0, topP: l(e24.topP) ? globalThis.Number(e24.topP) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.baseUrl !== void 0 && (t.baseUrl = e24.baseUrl), e24.model !== void 0 && (t.model = e24.model), e24.maxTokens !== void 0 && (t.maxTokens = Math.round(e24.maxTokens)), e24.temperature !== void 0 && (t.temperature = e24.temperature), e24.n !== void 0 && (t.n = Math.round(e24.n)), e24.topP !== void 0 && (t.topP = e24.topP), t; +}, create(e24) { + return Jn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = al(); + return t.baseUrl = e24.baseUrl ?? void 0, t.model = e24.model ?? void 0, t.maxTokens = e24.maxTokens ?? void 0, t.temperature = e24.temperature ?? void 0, t.n = e24.n ?? void 0, t.topP = e24.topP ?? void 0, t; +} }; +function ol() { + return { baseUrl: void 0, model: void 0, temperature: void 0, topP: void 0, maxTokens: void 0 }; +} +var zn = { encode(e24, t = g.default.Writer.create()) { + return e24.baseUrl !== void 0 && t.uint32(10).string(e24.baseUrl), e24.model !== void 0 && t.uint32(18).string(e24.model), e24.temperature !== void 0 && t.uint32(25).double(e24.temperature), e24.topP !== void 0 && t.uint32(33).double(e24.topP), e24.maxTokens !== void 0 && t.uint32(40).int64(e24.maxTokens), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = ol(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.baseUrl = r.string(); + continue; + case 2: + if (n !== 18) break; + i.model = r.string(); + continue; + case 3: + if (n !== 25) break; + i.temperature = r.double(); + continue; + case 4: + if (n !== 33) break; + i.topP = r.double(); + continue; + case 5: + if (n !== 40) break; + i.maxTokens = E(r.int64()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { baseUrl: l(e24.baseUrl) ? globalThis.String(e24.baseUrl) : void 0, model: l(e24.model) ? globalThis.String(e24.model) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0, topP: l(e24.topP) ? globalThis.Number(e24.topP) : void 0, maxTokens: l(e24.maxTokens) ? globalThis.Number(e24.maxTokens) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.baseUrl !== void 0 && (t.baseUrl = e24.baseUrl), e24.model !== void 0 && (t.model = e24.model), e24.temperature !== void 0 && (t.temperature = e24.temperature), e24.topP !== void 0 && (t.topP = e24.topP), e24.maxTokens !== void 0 && (t.maxTokens = Math.round(e24.maxTokens)), t; +}, create(e24) { + return zn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = ol(); + return t.baseUrl = e24.baseUrl ?? void 0, t.model = e24.model ?? void 0, t.temperature = e24.temperature ?? void 0, t.topP = e24.topP ?? void 0, t.maxTokens = e24.maxTokens ?? void 0, t; +} }; +function sl() { + return { baseUrl: void 0, model: void 0, temperature: void 0, topP: void 0, maxTokens: void 0, images: void 0, imageProperties: void 0 }; +} +var $n = { encode(e24, t = g.default.Writer.create()) { + return e24.baseUrl !== void 0 && t.uint32(10).string(e24.baseUrl), e24.model !== void 0 && t.uint32(18).string(e24.model), e24.temperature !== void 0 && t.uint32(25).double(e24.temperature), e24.topP !== void 0 && t.uint32(33).double(e24.topP), e24.maxTokens !== void 0 && t.uint32(40).int64(e24.maxTokens), e24.images !== void 0 && m.encode(e24.images, t.uint32(50).fork()).ldelim(), e24.imageProperties !== void 0 && m.encode(e24.imageProperties, t.uint32(58).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = sl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.baseUrl = r.string(); + continue; + case 2: + if (n !== 18) break; + i.model = r.string(); + continue; + case 3: + if (n !== 25) break; + i.temperature = r.double(); + continue; + case 4: + if (n !== 33) break; + i.topP = r.double(); + continue; + case 5: + if (n !== 40) break; + i.maxTokens = E(r.int64()); + continue; + case 6: + if (n !== 50) break; + i.images = m.decode(r, r.uint32()); + continue; + case 7: + if (n !== 58) break; + i.imageProperties = m.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { baseUrl: l(e24.baseUrl) ? globalThis.String(e24.baseUrl) : void 0, model: l(e24.model) ? globalThis.String(e24.model) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0, topP: l(e24.topP) ? globalThis.Number(e24.topP) : void 0, maxTokens: l(e24.maxTokens) ? globalThis.Number(e24.maxTokens) : void 0, images: l(e24.images) ? m.fromJSON(e24.images) : void 0, imageProperties: l(e24.imageProperties) ? m.fromJSON(e24.imageProperties) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.baseUrl !== void 0 && (t.baseUrl = e24.baseUrl), e24.model !== void 0 && (t.model = e24.model), e24.temperature !== void 0 && (t.temperature = e24.temperature), e24.topP !== void 0 && (t.topP = e24.topP), e24.maxTokens !== void 0 && (t.maxTokens = Math.round(e24.maxTokens)), e24.images !== void 0 && (t.images = m.toJSON(e24.images)), e24.imageProperties !== void 0 && (t.imageProperties = m.toJSON(e24.imageProperties)), t; +}, create(e24) { + return $n.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = sl(); + return t.baseUrl = e24.baseUrl ?? void 0, t.model = e24.model ?? void 0, t.temperature = e24.temperature ?? void 0, t.topP = e24.topP ?? void 0, t.maxTokens = e24.maxTokens ?? void 0, t.images = e24.images !== void 0 && e24.images !== null ? m.fromPartial(e24.images) : void 0, t.imageProperties = e24.imageProperties !== void 0 && e24.imageProperties !== null ? m.fromPartial(e24.imageProperties) : void 0, t; +} }; +function ul() { + return { model: void 0, temperature: void 0, topP: void 0, maxNewTokens: void 0, systemPrompt: void 0, avoidCommentary: void 0, knowledge: void 0 }; +} +var Hn = { encode(e24, t = g.default.Writer.create()) { + return e24.model !== void 0 && t.uint32(10).string(e24.model), e24.temperature !== void 0 && t.uint32(17).double(e24.temperature), e24.topP !== void 0 && t.uint32(25).double(e24.topP), e24.maxNewTokens !== void 0 && t.uint32(32).int64(e24.maxNewTokens), e24.systemPrompt !== void 0 && t.uint32(42).string(e24.systemPrompt), e24.avoidCommentary !== void 0 && t.uint32(48).bool(e24.avoidCommentary), e24.knowledge !== void 0 && m.encode(e24.knowledge, t.uint32(58).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = ul(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.model = r.string(); + continue; + case 2: + if (n !== 17) break; + i.temperature = r.double(); + continue; + case 3: + if (n !== 25) break; + i.topP = r.double(); + continue; + case 4: + if (n !== 32) break; + i.maxNewTokens = E(r.int64()); + continue; + case 5: + if (n !== 42) break; + i.systemPrompt = r.string(); + continue; + case 6: + if (n !== 48) break; + i.avoidCommentary = r.bool(); + continue; + case 7: + if (n !== 58) break; + i.knowledge = m.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { model: l(e24.model) ? globalThis.String(e24.model) : void 0, temperature: l(e24.temperature) ? globalThis.Number(e24.temperature) : void 0, topP: l(e24.topP) ? globalThis.Number(e24.topP) : void 0, maxNewTokens: l(e24.maxNewTokens) ? globalThis.Number(e24.maxNewTokens) : void 0, systemPrompt: l(e24.systemPrompt) ? globalThis.String(e24.systemPrompt) : void 0, avoidCommentary: l(e24.avoidCommentary) ? globalThis.Boolean(e24.avoidCommentary) : void 0, knowledge: l(e24.knowledge) ? m.fromJSON(e24.knowledge) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.model !== void 0 && (t.model = e24.model), e24.temperature !== void 0 && (t.temperature = e24.temperature), e24.topP !== void 0 && (t.topP = e24.topP), e24.maxNewTokens !== void 0 && (t.maxNewTokens = Math.round(e24.maxNewTokens)), e24.systemPrompt !== void 0 && (t.systemPrompt = e24.systemPrompt), e24.avoidCommentary !== void 0 && (t.avoidCommentary = e24.avoidCommentary), e24.knowledge !== void 0 && (t.knowledge = m.toJSON(e24.knowledge)), t; +}, create(e24) { + return Hn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = ul(); + return t.model = e24.model ?? void 0, t.temperature = e24.temperature ?? void 0, t.topP = e24.topP ?? void 0, t.maxNewTokens = e24.maxNewTokens ?? void 0, t.systemPrompt = e24.systemPrompt ?? void 0, t.avoidCommentary = e24.avoidCommentary ?? void 0, t.knowledge = e24.knowledge !== void 0 && e24.knowledge !== null ? m.fromPartial(e24.knowledge) : void 0, t; +} }; +function dl() { + return { usage: void 0 }; +} +var Qn = { encode(e24, t = g.default.Writer.create()) { + return e24.usage !== void 0 && Kn.encode(e24.usage, t.uint32(10).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = dl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.usage = Kn.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { usage: l(e24.usage) ? Kn.fromJSON(e24.usage) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.usage !== void 0 && (t.usage = Kn.toJSON(e24.usage)), t; +}, create(e24) { + return Qn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = dl(); + return t.usage = e24.usage !== void 0 && e24.usage !== null ? Kn.fromPartial(e24.usage) : void 0, t; +} }; +function cl() { + return { inputTokens: 0, outputTokens: 0 }; +} +var Kn = { encode(e24, t = g.default.Writer.create()) { + return e24.inputTokens !== 0 && t.uint32(8).int64(e24.inputTokens), e24.outputTokens !== 0 && t.uint32(16).int64(e24.outputTokens), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = cl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.inputTokens = E(r.int64()); + continue; + case 2: + if (n !== 16) break; + i.outputTokens = E(r.int64()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { inputTokens: l(e24.inputTokens) ? globalThis.Number(e24.inputTokens) : 0, outputTokens: l(e24.outputTokens) ? globalThis.Number(e24.outputTokens) : 0 }; +}, toJSON(e24) { + let t = {}; + return e24.inputTokens !== 0 && (t.inputTokens = Math.round(e24.inputTokens)), e24.outputTokens !== 0 && (t.outputTokens = Math.round(e24.outputTokens)), t; +}, create(e24) { + return Kn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = cl(); + return t.inputTokens = e24.inputTokens ?? 0, t.outputTokens = e24.outputTokens ?? 0, t; +} }; +function ll() { + return {}; +} +var Yn = { encode(e24, t = g.default.Writer.create()) { + return t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = ll(); + for (; r.pos < a; ) { + let n = r.uint32(); + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return {}; +}, toJSON(e24) { + return {}; +}, create(e24) { + return Yn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + return ll(); +} }; +function fl() { + return {}; +} +var Zn = { encode(e24, t = g.default.Writer.create()) { + return t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = fl(); + for (; r.pos < a; ) { + let n = r.uint32(); + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return {}; +}, toJSON(e24) { + return {}; +}, create(e24) { + return Zn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + return fl(); +} }; +function pl() { + return { apiVersion: void 0, billedUnits: void 0, tokens: void 0, warnings: void 0 }; +} +var Xn = { encode(e24, t = g.default.Writer.create()) { + return e24.apiVersion !== void 0 && jn.encode(e24.apiVersion, t.uint32(10).fork()).ldelim(), e24.billedUnits !== void 0 && ei.encode(e24.billedUnits, t.uint32(18).fork()).ldelim(), e24.tokens !== void 0 && ti.encode(e24.tokens, t.uint32(26).fork()).ldelim(), e24.warnings !== void 0 && m.encode(e24.warnings, t.uint32(34).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = pl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.apiVersion = jn.decode(r, r.uint32()); + continue; + case 2: + if (n !== 18) break; + i.billedUnits = ei.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.tokens = ti.decode(r, r.uint32()); + continue; + case 4: + if (n !== 34) break; + i.warnings = m.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { apiVersion: l(e24.apiVersion) ? jn.fromJSON(e24.apiVersion) : void 0, billedUnits: l(e24.billedUnits) ? ei.fromJSON(e24.billedUnits) : void 0, tokens: l(e24.tokens) ? ti.fromJSON(e24.tokens) : void 0, warnings: l(e24.warnings) ? m.fromJSON(e24.warnings) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.apiVersion !== void 0 && (t.apiVersion = jn.toJSON(e24.apiVersion)), e24.billedUnits !== void 0 && (t.billedUnits = ei.toJSON(e24.billedUnits)), e24.tokens !== void 0 && (t.tokens = ti.toJSON(e24.tokens)), e24.warnings !== void 0 && (t.warnings = m.toJSON(e24.warnings)), t; +}, create(e24) { + return Xn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = pl(); + return t.apiVersion = e24.apiVersion !== void 0 && e24.apiVersion !== null ? jn.fromPartial(e24.apiVersion) : void 0, t.billedUnits = e24.billedUnits !== void 0 && e24.billedUnits !== null ? ei.fromPartial(e24.billedUnits) : void 0, t.tokens = e24.tokens !== void 0 && e24.tokens !== null ? ti.fromPartial(e24.tokens) : void 0, t.warnings = e24.warnings !== void 0 && e24.warnings !== null ? m.fromPartial(e24.warnings) : void 0, t; +} }; +function gl() { + return { version: void 0, isDeprecated: void 0, isExperimental: void 0 }; +} +var jn = { encode(e24, t = g.default.Writer.create()) { + return e24.version !== void 0 && t.uint32(10).string(e24.version), e24.isDeprecated !== void 0 && t.uint32(16).bool(e24.isDeprecated), e24.isExperimental !== void 0 && t.uint32(24).bool(e24.isExperimental), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = gl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.version = r.string(); + continue; + case 2: + if (n !== 16) break; + i.isDeprecated = r.bool(); + continue; + case 3: + if (n !== 24) break; + i.isExperimental = r.bool(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { version: l(e24.version) ? globalThis.String(e24.version) : void 0, isDeprecated: l(e24.isDeprecated) ? globalThis.Boolean(e24.isDeprecated) : void 0, isExperimental: l(e24.isExperimental) ? globalThis.Boolean(e24.isExperimental) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.version !== void 0 && (t.version = e24.version), e24.isDeprecated !== void 0 && (t.isDeprecated = e24.isDeprecated), e24.isExperimental !== void 0 && (t.isExperimental = e24.isExperimental), t; +}, create(e24) { + return jn.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = gl(); + return t.version = e24.version ?? void 0, t.isDeprecated = e24.isDeprecated ?? void 0, t.isExperimental = e24.isExperimental ?? void 0, t; +} }; +function ml() { + return { inputTokens: void 0, outputTokens: void 0, searchUnits: void 0, classifications: void 0 }; +} +var ei = { encode(e24, t = g.default.Writer.create()) { + return e24.inputTokens !== void 0 && t.uint32(9).double(e24.inputTokens), e24.outputTokens !== void 0 && t.uint32(17).double(e24.outputTokens), e24.searchUnits !== void 0 && t.uint32(25).double(e24.searchUnits), e24.classifications !== void 0 && t.uint32(33).double(e24.classifications), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = ml(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 9) break; + i.inputTokens = r.double(); + continue; + case 2: + if (n !== 17) break; + i.outputTokens = r.double(); + continue; + case 3: + if (n !== 25) break; + i.searchUnits = r.double(); + continue; + case 4: + if (n !== 33) break; + i.classifications = r.double(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { inputTokens: l(e24.inputTokens) ? globalThis.Number(e24.inputTokens) : void 0, outputTokens: l(e24.outputTokens) ? globalThis.Number(e24.outputTokens) : void 0, searchUnits: l(e24.searchUnits) ? globalThis.Number(e24.searchUnits) : void 0, classifications: l(e24.classifications) ? globalThis.Number(e24.classifications) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.inputTokens !== void 0 && (t.inputTokens = e24.inputTokens), e24.outputTokens !== void 0 && (t.outputTokens = e24.outputTokens), e24.searchUnits !== void 0 && (t.searchUnits = e24.searchUnits), e24.classifications !== void 0 && (t.classifications = e24.classifications), t; +}, create(e24) { + return ei.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = ml(); + return t.inputTokens = e24.inputTokens ?? void 0, t.outputTokens = e24.outputTokens ?? void 0, t.searchUnits = e24.searchUnits ?? void 0, t.classifications = e24.classifications ?? void 0, t; +} }; +function hl() { + return { inputTokens: void 0, outputTokens: void 0 }; +} +var ti = { encode(e24, t = g.default.Writer.create()) { + return e24.inputTokens !== void 0 && t.uint32(9).double(e24.inputTokens), e24.outputTokens !== void 0 && t.uint32(17).double(e24.outputTokens), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = hl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 9) break; + i.inputTokens = r.double(); + continue; + case 2: + if (n !== 17) break; + i.outputTokens = r.double(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { inputTokens: l(e24.inputTokens) ? globalThis.Number(e24.inputTokens) : void 0, outputTokens: l(e24.outputTokens) ? globalThis.Number(e24.outputTokens) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.inputTokens !== void 0 && (t.inputTokens = e24.inputTokens), e24.outputTokens !== void 0 && (t.outputTokens = e24.outputTokens), t; +}, create(e24) { + return ti.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = hl(); + return t.inputTokens = e24.inputTokens ?? void 0, t.outputTokens = e24.outputTokens ?? void 0, t; +} }; +function yl() { + return {}; +} +var ri = { encode(e24, t = g.default.Writer.create()) { + return t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = yl(); + for (; r.pos < a; ) { + let n = r.uint32(); + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return {}; +}, toJSON(e24) { + return {}; +}, create(e24) { + return ri.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + return yl(); +} }; +function Tl() { + return { usage: void 0 }; +} +var ni = { encode(e24, t = g.default.Writer.create()) { + return e24.usage !== void 0 && ii.encode(e24.usage, t.uint32(10).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Tl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.usage = ii.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { usage: l(e24.usage) ? ii.fromJSON(e24.usage) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.usage !== void 0 && (t.usage = ii.toJSON(e24.usage)), t; +}, create(e24) { + return ni.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Tl(); + return t.usage = e24.usage !== void 0 && e24.usage !== null ? ii.fromPartial(e24.usage) : void 0, t; +} }; +function vl() { + return { promptTokens: void 0, completionTokens: void 0, totalTokens: void 0 }; +} +var ii = { encode(e24, t = g.default.Writer.create()) { + return e24.promptTokens !== void 0 && t.uint32(8).int64(e24.promptTokens), e24.completionTokens !== void 0 && t.uint32(16).int64(e24.completionTokens), e24.totalTokens !== void 0 && t.uint32(24).int64(e24.totalTokens), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = vl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.promptTokens = E(r.int64()); + continue; + case 2: + if (n !== 16) break; + i.completionTokens = E(r.int64()); + continue; + case 3: + if (n !== 24) break; + i.totalTokens = E(r.int64()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { promptTokens: l(e24.promptTokens) ? globalThis.Number(e24.promptTokens) : void 0, completionTokens: l(e24.completionTokens) ? globalThis.Number(e24.completionTokens) : void 0, totalTokens: l(e24.totalTokens) ? globalThis.Number(e24.totalTokens) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.promptTokens !== void 0 && (t.promptTokens = Math.round(e24.promptTokens)), e24.completionTokens !== void 0 && (t.completionTokens = Math.round(e24.completionTokens)), e24.totalTokens !== void 0 && (t.totalTokens = Math.round(e24.totalTokens)), t; +}, create(e24) { + return ii.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = vl(); + return t.promptTokens = e24.promptTokens ?? void 0, t.completionTokens = e24.completionTokens ?? void 0, t.totalTokens = e24.totalTokens ?? void 0, t; +} }; +function bl() { + return {}; +} +var ai = { encode(e24, t = g.default.Writer.create()) { + return t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = bl(); + for (; r.pos < a; ) { + let n = r.uint32(); + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return {}; +}, toJSON(e24) { + return {}; +}, create(e24) { + return ai.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + return bl(); +} }; +function xl() { + return { usage: void 0 }; +} +var oi = { encode(e24, t = g.default.Writer.create()) { + return e24.usage !== void 0 && si.encode(e24.usage, t.uint32(10).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = xl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.usage = si.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { usage: l(e24.usage) ? si.fromJSON(e24.usage) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.usage !== void 0 && (t.usage = si.toJSON(e24.usage)), t; +}, create(e24) { + return oi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = xl(); + return t.usage = e24.usage !== void 0 && e24.usage !== null ? si.fromPartial(e24.usage) : void 0, t; +} }; +function Cl() { + return { promptTokens: void 0, completionTokens: void 0, totalTokens: void 0 }; +} +var si = { encode(e24, t = g.default.Writer.create()) { + return e24.promptTokens !== void 0 && t.uint32(8).int64(e24.promptTokens), e24.completionTokens !== void 0 && t.uint32(16).int64(e24.completionTokens), e24.totalTokens !== void 0 && t.uint32(24).int64(e24.totalTokens), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Cl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.promptTokens = E(r.int64()); + continue; + case 2: + if (n !== 16) break; + i.completionTokens = E(r.int64()); + continue; + case 3: + if (n !== 24) break; + i.totalTokens = E(r.int64()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { promptTokens: l(e24.promptTokens) ? globalThis.Number(e24.promptTokens) : void 0, completionTokens: l(e24.completionTokens) ? globalThis.Number(e24.completionTokens) : void 0, totalTokens: l(e24.totalTokens) ? globalThis.Number(e24.totalTokens) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.promptTokens !== void 0 && (t.promptTokens = Math.round(e24.promptTokens)), e24.completionTokens !== void 0 && (t.completionTokens = Math.round(e24.completionTokens)), e24.totalTokens !== void 0 && (t.totalTokens = Math.round(e24.totalTokens)), t; +}, create(e24) { + return si.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Cl(); + return t.promptTokens = e24.promptTokens ?? void 0, t.completionTokens = e24.completionTokens ?? void 0, t.totalTokens = e24.totalTokens ?? void 0, t; +} }; +function Pl() { + return { metadata: void 0, usageMetadata: void 0 }; +} +var ui = { encode(e24, t = g.default.Writer.create()) { + return e24.metadata !== void 0 && ci.encode(e24.metadata, t.uint32(10).fork()).ldelim(), e24.usageMetadata !== void 0 && li.encode(e24.usageMetadata, t.uint32(18).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Pl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.metadata = ci.decode(r, r.uint32()); + continue; + case 2: + if (n !== 18) break; + i.usageMetadata = li.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { metadata: l(e24.metadata) ? ci.fromJSON(e24.metadata) : void 0, usageMetadata: l(e24.usageMetadata) ? li.fromJSON(e24.usageMetadata) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.metadata !== void 0 && (t.metadata = ci.toJSON(e24.metadata)), e24.usageMetadata !== void 0 && (t.usageMetadata = li.toJSON(e24.usageMetadata)), t; +}, create(e24) { + return ui.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Pl(); + return t.metadata = e24.metadata !== void 0 && e24.metadata !== null ? ci.fromPartial(e24.metadata) : void 0, t.usageMetadata = e24.usageMetadata !== void 0 && e24.usageMetadata !== null ? li.fromPartial(e24.usageMetadata) : void 0, t; +} }; +function Rl() { + return { totalBillableCharacters: void 0, totalTokens: void 0 }; +} +var ft = { encode(e24, t = g.default.Writer.create()) { + return e24.totalBillableCharacters !== void 0 && t.uint32(8).int64(e24.totalBillableCharacters), e24.totalTokens !== void 0 && t.uint32(16).int64(e24.totalTokens), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Rl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.totalBillableCharacters = E(r.int64()); + continue; + case 2: + if (n !== 16) break; + i.totalTokens = E(r.int64()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { totalBillableCharacters: l(e24.totalBillableCharacters) ? globalThis.Number(e24.totalBillableCharacters) : void 0, totalTokens: l(e24.totalTokens) ? globalThis.Number(e24.totalTokens) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.totalBillableCharacters !== void 0 && (t.totalBillableCharacters = Math.round(e24.totalBillableCharacters)), e24.totalTokens !== void 0 && (t.totalTokens = Math.round(e24.totalTokens)), t; +}, create(e24) { + return ft.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Rl(); + return t.totalBillableCharacters = e24.totalBillableCharacters ?? void 0, t.totalTokens = e24.totalTokens ?? void 0, t; +} }; +function Al() { + return { inputTokenCount: void 0, outputTokenCount: void 0 }; +} +var di = { encode(e24, t = g.default.Writer.create()) { + return e24.inputTokenCount !== void 0 && ft.encode(e24.inputTokenCount, t.uint32(10).fork()).ldelim(), e24.outputTokenCount !== void 0 && ft.encode(e24.outputTokenCount, t.uint32(18).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Al(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.inputTokenCount = ft.decode(r, r.uint32()); + continue; + case 2: + if (n !== 18) break; + i.outputTokenCount = ft.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { inputTokenCount: l(e24.inputTokenCount) ? ft.fromJSON(e24.inputTokenCount) : void 0, outputTokenCount: l(e24.outputTokenCount) ? ft.fromJSON(e24.outputTokenCount) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.inputTokenCount !== void 0 && (t.inputTokenCount = ft.toJSON(e24.inputTokenCount)), e24.outputTokenCount !== void 0 && (t.outputTokenCount = ft.toJSON(e24.outputTokenCount)), t; +}, create(e24) { + return di.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Al(); + return t.inputTokenCount = e24.inputTokenCount !== void 0 && e24.inputTokenCount !== null ? ft.fromPartial(e24.inputTokenCount) : void 0, t.outputTokenCount = e24.outputTokenCount !== void 0 && e24.outputTokenCount !== null ? ft.fromPartial(e24.outputTokenCount) : void 0, t; +} }; +function Nl() { + return { tokenMetadata: void 0 }; +} +var ci = { encode(e24, t = g.default.Writer.create()) { + return e24.tokenMetadata !== void 0 && di.encode(e24.tokenMetadata, t.uint32(10).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Nl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.tokenMetadata = di.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { tokenMetadata: l(e24.tokenMetadata) ? di.fromJSON(e24.tokenMetadata) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.tokenMetadata !== void 0 && (t.tokenMetadata = di.toJSON(e24.tokenMetadata)), t; +}, create(e24) { + return ci.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Nl(); + return t.tokenMetadata = e24.tokenMetadata !== void 0 && e24.tokenMetadata !== null ? di.fromPartial(e24.tokenMetadata) : void 0, t; +} }; +function Vl() { + return { promptTokenCount: void 0, candidatesTokenCount: void 0, totalTokenCount: void 0 }; +} +var li = { encode(e24, t = g.default.Writer.create()) { + return e24.promptTokenCount !== void 0 && t.uint32(8).int64(e24.promptTokenCount), e24.candidatesTokenCount !== void 0 && t.uint32(16).int64(e24.candidatesTokenCount), e24.totalTokenCount !== void 0 && t.uint32(24).int64(e24.totalTokenCount), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Vl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.promptTokenCount = E(r.int64()); + continue; + case 2: + if (n !== 16) break; + i.candidatesTokenCount = E(r.int64()); + continue; + case 3: + if (n !== 24) break; + i.totalTokenCount = E(r.int64()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { promptTokenCount: l(e24.promptTokenCount) ? globalThis.Number(e24.promptTokenCount) : void 0, candidatesTokenCount: l(e24.candidatesTokenCount) ? globalThis.Number(e24.candidatesTokenCount) : void 0, totalTokenCount: l(e24.totalTokenCount) ? globalThis.Number(e24.totalTokenCount) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.promptTokenCount !== void 0 && (t.promptTokenCount = Math.round(e24.promptTokenCount)), e24.candidatesTokenCount !== void 0 && (t.candidatesTokenCount = Math.round(e24.candidatesTokenCount)), e24.totalTokenCount !== void 0 && (t.totalTokenCount = Math.round(e24.totalTokenCount)), t; +}, create(e24) { + return li.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Vl(); + return t.promptTokenCount = e24.promptTokenCount ?? void 0, t.candidatesTokenCount = e24.candidatesTokenCount ?? void 0, t.totalTokenCount = e24.totalTokenCount ?? void 0, t; +} }; +function Ol() { + return { usage: void 0 }; +} +var fi = { encode(e24, t = g.default.Writer.create()) { + return e24.usage !== void 0 && pi.encode(e24.usage, t.uint32(10).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ol(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.usage = pi.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { usage: l(e24.usage) ? pi.fromJSON(e24.usage) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.usage !== void 0 && (t.usage = pi.toJSON(e24.usage)), t; +}, create(e24) { + return fi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ol(); + return t.usage = e24.usage !== void 0 && e24.usage !== null ? pi.fromPartial(e24.usage) : void 0, t; +} }; +function Sl() { + return { promptTokens: void 0, completionTokens: void 0, totalTokens: void 0 }; +} +var pi = { encode(e24, t = g.default.Writer.create()) { + return e24.promptTokens !== void 0 && t.uint32(8).int64(e24.promptTokens), e24.completionTokens !== void 0 && t.uint32(16).int64(e24.completionTokens), e24.totalTokens !== void 0 && t.uint32(24).int64(e24.totalTokens), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Sl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.promptTokens = E(r.int64()); + continue; + case 2: + if (n !== 16) break; + i.completionTokens = E(r.int64()); + continue; + case 3: + if (n !== 24) break; + i.totalTokens = E(r.int64()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { promptTokens: l(e24.promptTokens) ? globalThis.Number(e24.promptTokens) : void 0, completionTokens: l(e24.completionTokens) ? globalThis.Number(e24.completionTokens) : void 0, totalTokens: l(e24.totalTokens) ? globalThis.Number(e24.totalTokens) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.promptTokens !== void 0 && (t.promptTokens = Math.round(e24.promptTokens)), e24.completionTokens !== void 0 && (t.completionTokens = Math.round(e24.completionTokens)), e24.totalTokens !== void 0 && (t.totalTokens = Math.round(e24.totalTokens)), t; +}, create(e24) { + return pi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Sl(); + return t.promptTokens = e24.promptTokens ?? void 0, t.completionTokens = e24.completionTokens ?? void 0, t.totalTokens = e24.totalTokens ?? void 0, t; +} }; +function kl() { + return { usage: void 0 }; +} +var gi = { encode(e24, t = g.default.Writer.create()) { + return e24.usage !== void 0 && mi.encode(e24.usage, t.uint32(10).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = kl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.usage = mi.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { usage: l(e24.usage) ? mi.fromJSON(e24.usage) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.usage !== void 0 && (t.usage = mi.toJSON(e24.usage)), t; +}, create(e24) { + return gi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = kl(); + return t.usage = e24.usage !== void 0 && e24.usage !== null ? mi.fromPartial(e24.usage) : void 0, t; +} }; +function Il() { + return { promptTokens: void 0, completionTokens: void 0, totalTokens: void 0 }; +} +var mi = { encode(e24, t = g.default.Writer.create()) { + return e24.promptTokens !== void 0 && t.uint32(8).int64(e24.promptTokens), e24.completionTokens !== void 0 && t.uint32(16).int64(e24.completionTokens), e24.totalTokens !== void 0 && t.uint32(24).int64(e24.totalTokens), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Il(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.promptTokens = E(r.int64()); + continue; + case 2: + if (n !== 16) break; + i.completionTokens = E(r.int64()); + continue; + case 3: + if (n !== 24) break; + i.totalTokens = E(r.int64()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { promptTokens: l(e24.promptTokens) ? globalThis.Number(e24.promptTokens) : void 0, completionTokens: l(e24.completionTokens) ? globalThis.Number(e24.completionTokens) : void 0, totalTokens: l(e24.totalTokens) ? globalThis.Number(e24.totalTokens) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.promptTokens !== void 0 && (t.promptTokens = Math.round(e24.promptTokens)), e24.completionTokens !== void 0 && (t.completionTokens = Math.round(e24.completionTokens)), e24.totalTokens !== void 0 && (t.totalTokens = Math.round(e24.totalTokens)), t; +}, create(e24) { + return mi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Il(); + return t.promptTokens = e24.promptTokens ?? void 0, t.completionTokens = e24.completionTokens ?? void 0, t.totalTokens = e24.totalTokens ?? void 0, t; +} }; +function _l() { + return { usage: void 0 }; +} +var hi = { encode(e24, t = g.default.Writer.create()) { + return e24.usage !== void 0 && yi.encode(e24.usage, t.uint32(10).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = _l(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.usage = yi.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { usage: l(e24.usage) ? yi.fromJSON(e24.usage) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.usage !== void 0 && (t.usage = yi.toJSON(e24.usage)), t; +}, create(e24) { + return hi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = _l(); + return t.usage = e24.usage !== void 0 && e24.usage !== null ? yi.fromPartial(e24.usage) : void 0, t; +} }; +function Bl() { + return { promptTokens: void 0, completionTokens: void 0, totalTokens: void 0 }; +} +var yi = { encode(e24, t = g.default.Writer.create()) { + return e24.promptTokens !== void 0 && t.uint32(8).int64(e24.promptTokens), e24.completionTokens !== void 0 && t.uint32(16).int64(e24.completionTokens), e24.totalTokens !== void 0 && t.uint32(24).int64(e24.totalTokens), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Bl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.promptTokens = E(r.int64()); + continue; + case 2: + if (n !== 16) break; + i.completionTokens = E(r.int64()); + continue; + case 3: + if (n !== 24) break; + i.totalTokens = E(r.int64()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { promptTokens: l(e24.promptTokens) ? globalThis.Number(e24.promptTokens) : void 0, completionTokens: l(e24.completionTokens) ? globalThis.Number(e24.completionTokens) : void 0, totalTokens: l(e24.totalTokens) ? globalThis.Number(e24.totalTokens) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.promptTokens !== void 0 && (t.promptTokens = Math.round(e24.promptTokens)), e24.completionTokens !== void 0 && (t.completionTokens = Math.round(e24.completionTokens)), e24.totalTokens !== void 0 && (t.totalTokens = Math.round(e24.totalTokens)), t; +}, create(e24) { + return yi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Bl(); + return t.promptTokens = e24.promptTokens ?? void 0, t.completionTokens = e24.completionTokens ?? void 0, t.totalTokens = e24.totalTokens ?? void 0, t; +} }; +function Gl() { + return { usage: void 0 }; +} +var Ti = { encode(e24, t = g.default.Writer.create()) { + return e24.usage !== void 0 && vi.encode(e24.usage, t.uint32(10).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Gl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.usage = vi.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { usage: l(e24.usage) ? vi.fromJSON(e24.usage) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.usage !== void 0 && (t.usage = vi.toJSON(e24.usage)), t; +}, create(e24) { + return Ti.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Gl(); + return t.usage = e24.usage !== void 0 && e24.usage !== null ? vi.fromPartial(e24.usage) : void 0, t; +} }; +function wl() { + return { promptTokens: void 0, completionTokens: void 0, totalTokens: void 0 }; +} +var vi = { encode(e24, t = g.default.Writer.create()) { + return e24.promptTokens !== void 0 && t.uint32(8).int64(e24.promptTokens), e24.completionTokens !== void 0 && t.uint32(16).int64(e24.completionTokens), e24.totalTokens !== void 0 && t.uint32(24).int64(e24.totalTokens), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = wl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.promptTokens = E(r.int64()); + continue; + case 2: + if (n !== 16) break; + i.completionTokens = E(r.int64()); + continue; + case 3: + if (n !== 24) break; + i.totalTokens = E(r.int64()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { promptTokens: l(e24.promptTokens) ? globalThis.Number(e24.promptTokens) : void 0, completionTokens: l(e24.completionTokens) ? globalThis.Number(e24.completionTokens) : void 0, totalTokens: l(e24.totalTokens) ? globalThis.Number(e24.totalTokens) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.promptTokens !== void 0 && (t.promptTokens = Math.round(e24.promptTokens)), e24.completionTokens !== void 0 && (t.completionTokens = Math.round(e24.completionTokens)), e24.totalTokens !== void 0 && (t.totalTokens = Math.round(e24.totalTokens)), t; +}, create(e24) { + return vi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = wl(); + return t.promptTokens = e24.promptTokens ?? void 0, t.completionTokens = e24.completionTokens ?? void 0, t.totalTokens = e24.totalTokens ?? void 0, t; +} }; +function Ml() { + return { anthropic: void 0, anyscale: void 0, aws: void 0, cohere: void 0, dummy: void 0, mistral: void 0, ollama: void 0, openai: void 0, google: void 0, databricks: void 0, friendliai: void 0, nvidia: void 0, xai: void 0 }; +} +var bi = { encode(e24, t = g.default.Writer.create()) { + return e24.anthropic !== void 0 && Qn.encode(e24.anthropic, t.uint32(10).fork()).ldelim(), e24.anyscale !== void 0 && Yn.encode(e24.anyscale, t.uint32(18).fork()).ldelim(), e24.aws !== void 0 && Zn.encode(e24.aws, t.uint32(26).fork()).ldelim(), e24.cohere !== void 0 && Xn.encode(e24.cohere, t.uint32(34).fork()).ldelim(), e24.dummy !== void 0 && ri.encode(e24.dummy, t.uint32(42).fork()).ldelim(), e24.mistral !== void 0 && ni.encode(e24.mistral, t.uint32(50).fork()).ldelim(), e24.ollama !== void 0 && ai.encode(e24.ollama, t.uint32(58).fork()).ldelim(), e24.openai !== void 0 && oi.encode(e24.openai, t.uint32(66).fork()).ldelim(), e24.google !== void 0 && ui.encode(e24.google, t.uint32(74).fork()).ldelim(), e24.databricks !== void 0 && fi.encode(e24.databricks, t.uint32(82).fork()).ldelim(), e24.friendliai !== void 0 && gi.encode(e24.friendliai, t.uint32(90).fork()).ldelim(), e24.nvidia !== void 0 && hi.encode(e24.nvidia, t.uint32(98).fork()).ldelim(), e24.xai !== void 0 && Ti.encode(e24.xai, t.uint32(106).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ml(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.anthropic = Qn.decode(r, r.uint32()); + continue; + case 2: + if (n !== 18) break; + i.anyscale = Yn.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.aws = Zn.decode(r, r.uint32()); + continue; + case 4: + if (n !== 34) break; + i.cohere = Xn.decode(r, r.uint32()); + continue; + case 5: + if (n !== 42) break; + i.dummy = ri.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.mistral = ni.decode(r, r.uint32()); + continue; + case 7: + if (n !== 58) break; + i.ollama = ai.decode(r, r.uint32()); + continue; + case 8: + if (n !== 66) break; + i.openai = oi.decode(r, r.uint32()); + continue; + case 9: + if (n !== 74) break; + i.google = ui.decode(r, r.uint32()); + continue; + case 10: + if (n !== 82) break; + i.databricks = fi.decode(r, r.uint32()); + continue; + case 11: + if (n !== 90) break; + i.friendliai = gi.decode(r, r.uint32()); + continue; + case 12: + if (n !== 98) break; + i.nvidia = hi.decode(r, r.uint32()); + continue; + case 13: + if (n !== 106) break; + i.xai = Ti.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { anthropic: l(e24.anthropic) ? Qn.fromJSON(e24.anthropic) : void 0, anyscale: l(e24.anyscale) ? Yn.fromJSON(e24.anyscale) : void 0, aws: l(e24.aws) ? Zn.fromJSON(e24.aws) : void 0, cohere: l(e24.cohere) ? Xn.fromJSON(e24.cohere) : void 0, dummy: l(e24.dummy) ? ri.fromJSON(e24.dummy) : void 0, mistral: l(e24.mistral) ? ni.fromJSON(e24.mistral) : void 0, ollama: l(e24.ollama) ? ai.fromJSON(e24.ollama) : void 0, openai: l(e24.openai) ? oi.fromJSON(e24.openai) : void 0, google: l(e24.google) ? ui.fromJSON(e24.google) : void 0, databricks: l(e24.databricks) ? fi.fromJSON(e24.databricks) : void 0, friendliai: l(e24.friendliai) ? gi.fromJSON(e24.friendliai) : void 0, nvidia: l(e24.nvidia) ? hi.fromJSON(e24.nvidia) : void 0, xai: l(e24.xai) ? Ti.fromJSON(e24.xai) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.anthropic !== void 0 && (t.anthropic = Qn.toJSON(e24.anthropic)), e24.anyscale !== void 0 && (t.anyscale = Yn.toJSON(e24.anyscale)), e24.aws !== void 0 && (t.aws = Zn.toJSON(e24.aws)), e24.cohere !== void 0 && (t.cohere = Xn.toJSON(e24.cohere)), e24.dummy !== void 0 && (t.dummy = ri.toJSON(e24.dummy)), e24.mistral !== void 0 && (t.mistral = ni.toJSON(e24.mistral)), e24.ollama !== void 0 && (t.ollama = ai.toJSON(e24.ollama)), e24.openai !== void 0 && (t.openai = oi.toJSON(e24.openai)), e24.google !== void 0 && (t.google = ui.toJSON(e24.google)), e24.databricks !== void 0 && (t.databricks = fi.toJSON(e24.databricks)), e24.friendliai !== void 0 && (t.friendliai = gi.toJSON(e24.friendliai)), e24.nvidia !== void 0 && (t.nvidia = hi.toJSON(e24.nvidia)), e24.xai !== void 0 && (t.xai = Ti.toJSON(e24.xai)), t; +}, create(e24) { + return bi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ml(); + return t.anthropic = e24.anthropic !== void 0 && e24.anthropic !== null ? Qn.fromPartial(e24.anthropic) : void 0, t.anyscale = e24.anyscale !== void 0 && e24.anyscale !== null ? Yn.fromPartial(e24.anyscale) : void 0, t.aws = e24.aws !== void 0 && e24.aws !== null ? Zn.fromPartial(e24.aws) : void 0, t.cohere = e24.cohere !== void 0 && e24.cohere !== null ? Xn.fromPartial(e24.cohere) : void 0, t.dummy = e24.dummy !== void 0 && e24.dummy !== null ? ri.fromPartial(e24.dummy) : void 0, t.mistral = e24.mistral !== void 0 && e24.mistral !== null ? ni.fromPartial(e24.mistral) : void 0, t.ollama = e24.ollama !== void 0 && e24.ollama !== null ? ai.fromPartial(e24.ollama) : void 0, t.openai = e24.openai !== void 0 && e24.openai !== null ? oi.fromPartial(e24.openai) : void 0, t.google = e24.google !== void 0 && e24.google !== null ? ui.fromPartial(e24.google) : void 0, t.databricks = e24.databricks !== void 0 && e24.databricks !== null ? fi.fromPartial(e24.databricks) : void 0, t.friendliai = e24.friendliai !== void 0 && e24.friendliai !== null ? gi.fromPartial(e24.friendliai) : void 0, t.nvidia = e24.nvidia !== void 0 && e24.nvidia !== null ? hi.fromPartial(e24.nvidia) : void 0, t.xai = e24.xai !== void 0 && e24.xai !== null ? Ti.fromPartial(e24.xai) : void 0, t; +} }; +function El() { + return { result: "", debug: void 0, metadata: void 0 }; +} +var ot = { encode(e24, t = g.default.Writer.create()) { + return e24.result !== "" && t.uint32(10).string(e24.result), e24.debug !== void 0 && xi.encode(e24.debug, t.uint32(18).fork()).ldelim(), e24.metadata !== void 0 && bi.encode(e24.metadata, t.uint32(26).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = El(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.result = r.string(); + continue; + case 2: + if (n !== 18) break; + i.debug = xi.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.metadata = bi.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { result: l(e24.result) ? globalThis.String(e24.result) : "", debug: l(e24.debug) ? xi.fromJSON(e24.debug) : void 0, metadata: l(e24.metadata) ? bi.fromJSON(e24.metadata) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.result !== "" && (t.result = e24.result), e24.debug !== void 0 && (t.debug = xi.toJSON(e24.debug)), e24.metadata !== void 0 && (t.metadata = bi.toJSON(e24.metadata)), t; +}, create(e24) { + return ot.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = El(); + return t.result = e24.result ?? "", t.debug = e24.debug !== void 0 && e24.debug !== null ? xi.fromPartial(e24.debug) : void 0, t.metadata = e24.metadata !== void 0 && e24.metadata !== null ? bi.fromPartial(e24.metadata) : void 0, t; +} }; +function Ul() { + return { values: [] }; +} +var pe = { encode(e24, t = g.default.Writer.create()) { + for (let r of e24.values) ot.encode(r, t.uint32(10).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ul(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values.push(ot.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => ot.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values.map((r) => ot.toJSON(r))), t; +}, create(e24) { + return pe.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ul(); + return t.values = e24.values?.map((r) => ot.fromPartial(r)) || [], t; +} }; +function Dl() { + return { fullPrompt: void 0 }; +} +var xi = { encode(e24, t = g.default.Writer.create()) { + return e24.fullPrompt !== void 0 && t.uint32(10).string(e24.fullPrompt), t; +}, decode(e24, t) { + let r = e24 instanceof g.default.Reader ? e24 : g.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Dl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.fullPrompt = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { fullPrompt: l(e24.fullPrompt) ? globalThis.String(e24.fullPrompt) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.fullPrompt !== void 0 && (t.fullPrompt = e24.fullPrompt), t; +}, create(e24) { + return xi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Dl(); + return t.fullPrompt = e24.fullPrompt ?? void 0, t; +} }; +function E(e24) { + if (e24.gt(globalThis.Number.MAX_SAFE_INTEGER)) throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + return e24.toNumber(); +} +g.default.util.Long !== long_default && (g.default.util.Long = long_default, g.default.configure()); +function l(e24) { + return e24 != null; +} +d(); +var N = ze(Ke()); +d(); +var U = ze(Ke()); +function Wl() { + return { fields: {} }; +} +var ge = { encode(e24, t = U.default.Writer.create()) { + return Object.entries(e24.fields).forEach(([r, a]) => { + ms.encode({ key: r, value: a }, t.uint32(10).fork()).ldelim(); + }), t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Wl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + let o = ms.decode(r, r.uint32()); + o.value !== void 0 && (i.fields[o.key] = o.value); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { fields: Gm(e24.fields) ? Object.entries(e24.fields).reduce((t, [r, a]) => (t[r] = Wt.fromJSON(a), t), {}) : {} }; +}, toJSON(e24) { + let t = {}; + if (e24.fields) { + let r = Object.entries(e24.fields); + r.length > 0 && (t.fields = {}, r.forEach(([a, i]) => { + t.fields[a] = Wt.toJSON(i); + })); + } + return t; +}, create(e24) { + return ge.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Wl(); + return t.fields = Object.entries(e24.fields ?? {}).reduce((r, [a, i]) => (i !== void 0 && (r[a] = Wt.fromPartial(i)), r), {}), t; +} }; +function ql() { + return { key: "", value: void 0 }; +} +var ms = { encode(e24, t = U.default.Writer.create()) { + return e24.key !== "" && t.uint32(10).string(e24.key), e24.value !== void 0 && Wt.encode(e24.value, t.uint32(18).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = ql(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.key = r.string(); + continue; + case 2: + if (n !== 18) break; + i.value = Wt.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { key: $(e24.key) ? globalThis.String(e24.key) : "", value: $(e24.value) ? Wt.fromJSON(e24.value) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.key !== "" && (t.key = e24.key), e24.value !== void 0 && (t.value = Wt.toJSON(e24.value)), t; +}, create(e24) { + return ms.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = ql(); + return t.key = e24.key ?? "", t.value = e24.value !== void 0 && e24.value !== null ? Wt.fromPartial(e24.value) : void 0, t; +} }; +function Ll() { + return { numberValue: void 0, boolValue: void 0, objectValue: void 0, listValue: void 0, dateValue: void 0, uuidValue: void 0, intValue: void 0, geoValue: void 0, blobValue: void 0, phoneValue: void 0, nullValue: void 0, textValue: void 0 }; +} +var Wt = { encode(e24, t = U.default.Writer.create()) { + return e24.numberValue !== void 0 && t.uint32(9).double(e24.numberValue), e24.boolValue !== void 0 && t.uint32(24).bool(e24.boolValue), e24.objectValue !== void 0 && ge.encode(e24.objectValue, t.uint32(34).fork()).ldelim(), e24.listValue !== void 0 && Ci.encode(e24.listValue, t.uint32(42).fork()).ldelim(), e24.dateValue !== void 0 && t.uint32(50).string(e24.dateValue), e24.uuidValue !== void 0 && t.uint32(58).string(e24.uuidValue), e24.intValue !== void 0 && t.uint32(64).int64(e24.intValue), e24.geoValue !== void 0 && ki.encode(e24.geoValue, t.uint32(74).fork()).ldelim(), e24.blobValue !== void 0 && t.uint32(82).string(e24.blobValue), e24.phoneValue !== void 0 && Ii.encode(e24.phoneValue, t.uint32(90).fork()).ldelim(), e24.nullValue !== void 0 && t.uint32(96).int32(e24.nullValue), e24.textValue !== void 0 && t.uint32(106).string(e24.textValue), t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ll(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 9) break; + i.numberValue = r.double(); + continue; + case 3: + if (n !== 24) break; + i.boolValue = r.bool(); + continue; + case 4: + if (n !== 34) break; + i.objectValue = ge.decode(r, r.uint32()); + continue; + case 5: + if (n !== 42) break; + i.listValue = Ci.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.dateValue = r.string(); + continue; + case 7: + if (n !== 58) break; + i.uuidValue = r.string(); + continue; + case 8: + if (n !== 64) break; + i.intValue = hs(r.int64()); + continue; + case 9: + if (n !== 74) break; + i.geoValue = ki.decode(r, r.uint32()); + continue; + case 10: + if (n !== 82) break; + i.blobValue = r.string(); + continue; + case 11: + if (n !== 90) break; + i.phoneValue = Ii.decode(r, r.uint32()); + continue; + case 12: + if (n !== 96) break; + i.nullValue = r.int32(); + continue; + case 13: + if (n !== 106) break; + i.textValue = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { numberValue: $(e24.numberValue) ? globalThis.Number(e24.numberValue) : void 0, boolValue: $(e24.boolValue) ? globalThis.Boolean(e24.boolValue) : void 0, objectValue: $(e24.objectValue) ? ge.fromJSON(e24.objectValue) : void 0, listValue: $(e24.listValue) ? Ci.fromJSON(e24.listValue) : void 0, dateValue: $(e24.dateValue) ? globalThis.String(e24.dateValue) : void 0, uuidValue: $(e24.uuidValue) ? globalThis.String(e24.uuidValue) : void 0, intValue: $(e24.intValue) ? globalThis.Number(e24.intValue) : void 0, geoValue: $(e24.geoValue) ? ki.fromJSON(e24.geoValue) : void 0, blobValue: $(e24.blobValue) ? globalThis.String(e24.blobValue) : void 0, phoneValue: $(e24.phoneValue) ? Ii.fromJSON(e24.phoneValue) : void 0, nullValue: $(e24.nullValue) ? Zo(e24.nullValue) : void 0, textValue: $(e24.textValue) ? globalThis.String(e24.textValue) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.numberValue !== void 0 && (t.numberValue = e24.numberValue), e24.boolValue !== void 0 && (t.boolValue = e24.boolValue), e24.objectValue !== void 0 && (t.objectValue = ge.toJSON(e24.objectValue)), e24.listValue !== void 0 && (t.listValue = Ci.toJSON(e24.listValue)), e24.dateValue !== void 0 && (t.dateValue = e24.dateValue), e24.uuidValue !== void 0 && (t.uuidValue = e24.uuidValue), e24.intValue !== void 0 && (t.intValue = Math.round(e24.intValue)), e24.geoValue !== void 0 && (t.geoValue = ki.toJSON(e24.geoValue)), e24.blobValue !== void 0 && (t.blobValue = e24.blobValue), e24.phoneValue !== void 0 && (t.phoneValue = Ii.toJSON(e24.phoneValue)), e24.nullValue !== void 0 && (t.nullValue = Xo(e24.nullValue)), e24.textValue !== void 0 && (t.textValue = e24.textValue), t; +}, create(e24) { + return Wt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ll(); + return t.numberValue = e24.numberValue ?? void 0, t.boolValue = e24.boolValue ?? void 0, t.objectValue = e24.objectValue !== void 0 && e24.objectValue !== null ? ge.fromPartial(e24.objectValue) : void 0, t.listValue = e24.listValue !== void 0 && e24.listValue !== null ? Ci.fromPartial(e24.listValue) : void 0, t.dateValue = e24.dateValue ?? void 0, t.uuidValue = e24.uuidValue ?? void 0, t.intValue = e24.intValue ?? void 0, t.geoValue = e24.geoValue !== void 0 && e24.geoValue !== null ? ki.fromPartial(e24.geoValue) : void 0, t.blobValue = e24.blobValue ?? void 0, t.phoneValue = e24.phoneValue !== void 0 && e24.phoneValue !== null ? Ii.fromPartial(e24.phoneValue) : void 0, t.nullValue = e24.nullValue ?? void 0, t.textValue = e24.textValue ?? void 0, t; +} }; +function Jl() { + return { numberValues: void 0, boolValues: void 0, objectValues: void 0, dateValues: void 0, uuidValues: void 0, intValues: void 0, textValues: void 0 }; +} +var Ci = { encode(e24, t = U.default.Writer.create()) { + return e24.numberValues !== void 0 && Pi.encode(e24.numberValues, t.uint32(18).fork()).ldelim(), e24.boolValues !== void 0 && Ai.encode(e24.boolValues, t.uint32(26).fork()).ldelim(), e24.objectValues !== void 0 && Ni.encode(e24.objectValues, t.uint32(34).fork()).ldelim(), e24.dateValues !== void 0 && Vi.encode(e24.dateValues, t.uint32(42).fork()).ldelim(), e24.uuidValues !== void 0 && Oi.encode(e24.uuidValues, t.uint32(50).fork()).ldelim(), e24.intValues !== void 0 && Si.encode(e24.intValues, t.uint32(58).fork()).ldelim(), e24.textValues !== void 0 && Ri.encode(e24.textValues, t.uint32(66).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Jl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 2: + if (n !== 18) break; + i.numberValues = Pi.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.boolValues = Ai.decode(r, r.uint32()); + continue; + case 4: + if (n !== 34) break; + i.objectValues = Ni.decode(r, r.uint32()); + continue; + case 5: + if (n !== 42) break; + i.dateValues = Vi.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.uuidValues = Oi.decode(r, r.uint32()); + continue; + case 7: + if (n !== 58) break; + i.intValues = Si.decode(r, r.uint32()); + continue; + case 8: + if (n !== 66) break; + i.textValues = Ri.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { numberValues: $(e24.numberValues) ? Pi.fromJSON(e24.numberValues) : void 0, boolValues: $(e24.boolValues) ? Ai.fromJSON(e24.boolValues) : void 0, objectValues: $(e24.objectValues) ? Ni.fromJSON(e24.objectValues) : void 0, dateValues: $(e24.dateValues) ? Vi.fromJSON(e24.dateValues) : void 0, uuidValues: $(e24.uuidValues) ? Oi.fromJSON(e24.uuidValues) : void 0, intValues: $(e24.intValues) ? Si.fromJSON(e24.intValues) : void 0, textValues: $(e24.textValues) ? Ri.fromJSON(e24.textValues) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.numberValues !== void 0 && (t.numberValues = Pi.toJSON(e24.numberValues)), e24.boolValues !== void 0 && (t.boolValues = Ai.toJSON(e24.boolValues)), e24.objectValues !== void 0 && (t.objectValues = Ni.toJSON(e24.objectValues)), e24.dateValues !== void 0 && (t.dateValues = Vi.toJSON(e24.dateValues)), e24.uuidValues !== void 0 && (t.uuidValues = Oi.toJSON(e24.uuidValues)), e24.intValues !== void 0 && (t.intValues = Si.toJSON(e24.intValues)), e24.textValues !== void 0 && (t.textValues = Ri.toJSON(e24.textValues)), t; +}, create(e24) { + return Ci.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Jl(); + return t.numberValues = e24.numberValues !== void 0 && e24.numberValues !== null ? Pi.fromPartial(e24.numberValues) : void 0, t.boolValues = e24.boolValues !== void 0 && e24.boolValues !== null ? Ai.fromPartial(e24.boolValues) : void 0, t.objectValues = e24.objectValues !== void 0 && e24.objectValues !== null ? Ni.fromPartial(e24.objectValues) : void 0, t.dateValues = e24.dateValues !== void 0 && e24.dateValues !== null ? Vi.fromPartial(e24.dateValues) : void 0, t.uuidValues = e24.uuidValues !== void 0 && e24.uuidValues !== null ? Oi.fromPartial(e24.uuidValues) : void 0, t.intValues = e24.intValues !== void 0 && e24.intValues !== null ? Si.fromPartial(e24.intValues) : void 0, t.textValues = e24.textValues !== void 0 && e24.textValues !== null ? Ri.fromPartial(e24.textValues) : void 0, t; +} }; +function zl() { + return { values: new Uint8Array(0) }; +} +var Pi = { encode(e24, t = U.default.Writer.create()) { + return e24.values.length !== 0 && t.uint32(10).bytes(e24.values), t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = zl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values = r.bytes(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: $(e24.values) ? ef(e24.values) : new Uint8Array(0) }; +}, toJSON(e24) { + let t = {}; + return e24.values.length !== 0 && (t.values = tf(e24.values)), t; +}, create(e24) { + return Pi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = zl(); + return t.values = e24.values ?? new Uint8Array(0), t; +} }; +function $l() { + return { values: [] }; +} +var Ri = { encode(e24, t = U.default.Writer.create()) { + for (let r of e24.values) t.uint32(10).string(r); + return t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = $l(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values.push(r.string()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.String(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values), t; +}, create(e24) { + return Ri.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = $l(); + return t.values = e24.values?.map((r) => r) || [], t; +} }; +function Hl() { + return { values: [] }; +} +var Ai = { encode(e24, t = U.default.Writer.create()) { + t.uint32(10).fork(); + for (let r of e24.values) t.bool(r); + return t.ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Hl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n === 8) { + i.values.push(r.bool()); + continue; + } + if (n === 10) { + let o = r.uint32() + r.pos; + for (; r.pos < o; ) i.values.push(r.bool()); + continue; + } + break; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.Boolean(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values), t; +}, create(e24) { + return Ai.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Hl(); + return t.values = e24.values?.map((r) => r) || [], t; +} }; +function Ql() { + return { values: [] }; +} +var Ni = { encode(e24, t = U.default.Writer.create()) { + for (let r of e24.values) ge.encode(r, t.uint32(10).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ql(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values.push(ge.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => ge.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values.map((r) => ge.toJSON(r))), t; +}, create(e24) { + return Ni.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ql(); + return t.values = e24.values?.map((r) => ge.fromPartial(r)) || [], t; +} }; +function Kl() { + return { values: [] }; +} +var Vi = { encode(e24, t = U.default.Writer.create()) { + for (let r of e24.values) t.uint32(10).string(r); + return t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Kl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values.push(r.string()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.String(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values), t; +}, create(e24) { + return Vi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Kl(); + return t.values = e24.values?.map((r) => r) || [], t; +} }; +function Yl() { + return { values: [] }; +} +var Oi = { encode(e24, t = U.default.Writer.create()) { + for (let r of e24.values) t.uint32(10).string(r); + return t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Yl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values.push(r.string()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: globalThis.Array.isArray(e24?.values) ? e24.values.map((t) => globalThis.String(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.values?.length && (t.values = e24.values), t; +}, create(e24) { + return Oi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Yl(); + return t.values = e24.values?.map((r) => r) || [], t; +} }; +function Zl() { + return { values: new Uint8Array(0) }; +} +var Si = { encode(e24, t = U.default.Writer.create()) { + return e24.values.length !== 0 && t.uint32(10).bytes(e24.values), t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Zl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.values = r.bytes(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { values: $(e24.values) ? ef(e24.values) : new Uint8Array(0) }; +}, toJSON(e24) { + let t = {}; + return e24.values.length !== 0 && (t.values = tf(e24.values)), t; +}, create(e24) { + return Si.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Zl(); + return t.values = e24.values ?? new Uint8Array(0), t; +} }; +function Xl() { + return { longitude: 0, latitude: 0 }; +} +var ki = { encode(e24, t = U.default.Writer.create()) { + return e24.longitude !== 0 && t.uint32(13).float(e24.longitude), e24.latitude !== 0 && t.uint32(21).float(e24.latitude), t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Xl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 13) break; + i.longitude = r.float(); + continue; + case 2: + if (n !== 21) break; + i.latitude = r.float(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { longitude: $(e24.longitude) ? globalThis.Number(e24.longitude) : 0, latitude: $(e24.latitude) ? globalThis.Number(e24.latitude) : 0 }; +}, toJSON(e24) { + let t = {}; + return e24.longitude !== 0 && (t.longitude = e24.longitude), e24.latitude !== 0 && (t.latitude = e24.latitude), t; +}, create(e24) { + return ki.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Xl(); + return t.longitude = e24.longitude ?? 0, t.latitude = e24.latitude ?? 0, t; +} }; +function jl() { + return { countryCode: 0, defaultCountry: "", input: "", internationalFormatted: "", national: 0, nationalFormatted: "", valid: false }; +} +var Ii = { encode(e24, t = U.default.Writer.create()) { + return e24.countryCode !== 0 && t.uint32(8).uint64(e24.countryCode), e24.defaultCountry !== "" && t.uint32(18).string(e24.defaultCountry), e24.input !== "" && t.uint32(26).string(e24.input), e24.internationalFormatted !== "" && t.uint32(34).string(e24.internationalFormatted), e24.national !== 0 && t.uint32(40).uint64(e24.national), e24.nationalFormatted !== "" && t.uint32(50).string(e24.nationalFormatted), e24.valid !== false && t.uint32(56).bool(e24.valid), t; +}, decode(e24, t) { + let r = e24 instanceof U.default.Reader ? e24 : U.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = jl(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.countryCode = hs(r.uint64()); + continue; + case 2: + if (n !== 18) break; + i.defaultCountry = r.string(); + continue; + case 3: + if (n !== 26) break; + i.input = r.string(); + continue; + case 4: + if (n !== 34) break; + i.internationalFormatted = r.string(); + continue; + case 5: + if (n !== 40) break; + i.national = hs(r.uint64()); + continue; + case 6: + if (n !== 50) break; + i.nationalFormatted = r.string(); + continue; + case 7: + if (n !== 56) break; + i.valid = r.bool(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { countryCode: $(e24.countryCode) ? globalThis.Number(e24.countryCode) : 0, defaultCountry: $(e24.defaultCountry) ? globalThis.String(e24.defaultCountry) : "", input: $(e24.input) ? globalThis.String(e24.input) : "", internationalFormatted: $(e24.internationalFormatted) ? globalThis.String(e24.internationalFormatted) : "", national: $(e24.national) ? globalThis.Number(e24.national) : 0, nationalFormatted: $(e24.nationalFormatted) ? globalThis.String(e24.nationalFormatted) : "", valid: $(e24.valid) ? globalThis.Boolean(e24.valid) : false }; +}, toJSON(e24) { + let t = {}; + return e24.countryCode !== 0 && (t.countryCode = Math.round(e24.countryCode)), e24.defaultCountry !== "" && (t.defaultCountry = e24.defaultCountry), e24.input !== "" && (t.input = e24.input), e24.internationalFormatted !== "" && (t.internationalFormatted = e24.internationalFormatted), e24.national !== 0 && (t.national = Math.round(e24.national)), e24.nationalFormatted !== "" && (t.nationalFormatted = e24.nationalFormatted), e24.valid !== false && (t.valid = e24.valid), t; +}, create(e24) { + return Ii.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = jl(); + return t.countryCode = e24.countryCode ?? 0, t.defaultCountry = e24.defaultCountry ?? "", t.input = e24.input ?? "", t.internationalFormatted = e24.internationalFormatted ?? "", t.national = e24.national ?? 0, t.nationalFormatted = e24.nationalFormatted ?? "", t.valid = e24.valid ?? false, t; +} }; +function ef(e24) { + if (globalThis.Buffer) return Uint8Array.from(globalThis.Buffer.from(e24, "base64")); + { + let t = globalThis.atob(e24), r = new Uint8Array(t.length); + for (let a = 0; a < t.length; ++a) r[a] = t.charCodeAt(a); + return r; + } +} +function tf(e24) { + if (globalThis.Buffer) return globalThis.Buffer.from(e24).toString("base64"); + { + let t = []; + return e24.forEach((r) => { + t.push(globalThis.String.fromCharCode(r)); + }), globalThis.btoa(t.join("")); + } +} +function hs(e24) { + if (e24.gt(globalThis.Number.MAX_SAFE_INTEGER)) throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + return e24.toNumber(); +} +U.default.util.Long !== long_default && (U.default.util.Long = long_default, U.default.configure()); +function Gm(e24) { + return typeof e24 == "object" && e24 !== null; +} +function $(e24) { + return e24 != null; +} +function nf() { + return { collection: "", tenant: "", consistencyLevel: void 0, properties: void 0, metadata: void 0, groupBy: void 0, limit: 0, offset: 0, autocut: 0, after: "", sortBy: [], filters: void 0, hybridSearch: void 0, bm25Search: void 0, nearVector: void 0, nearObject: void 0, nearText: void 0, nearImage: void 0, nearAudio: void 0, nearVideo: void 0, nearDepth: void 0, nearThermal: void 0, nearImu: void 0, generative: void 0, rerank: void 0, uses123Api: false, uses125Api: false, uses127Api: false }; +} +var he = { encode(e24, t = N.default.Writer.create()) { + e24.collection !== "" && t.uint32(10).string(e24.collection), e24.tenant !== "" && t.uint32(82).string(e24.tenant), e24.consistencyLevel !== void 0 && t.uint32(88).int32(e24.consistencyLevel), e24.properties !== void 0 && gt.encode(e24.properties, t.uint32(162).fork()).ldelim(), e24.metadata !== void 0 && we.encode(e24.metadata, t.uint32(170).fork()).ldelim(), e24.groupBy !== void 0 && sr.encode(e24.groupBy, t.uint32(178).fork()).ldelim(), e24.limit !== 0 && t.uint32(240).uint32(e24.limit), e24.offset !== 0 && t.uint32(248).uint32(e24.offset), e24.autocut !== 0 && t.uint32(256).uint32(e24.autocut), e24.after !== "" && t.uint32(266).string(e24.after); + for (let r of e24.sortBy) _i.encode(r, t.uint32(274).fork()).ldelim(); + return e24.filters !== void 0 && H.encode(e24.filters, t.uint32(322).fork()).ldelim(), e24.hybridSearch !== void 0 && ve.encode(e24.hybridSearch, t.uint32(330).fork()).ldelim(), e24.bm25Search !== void 0 && Ft.encode(e24.bm25Search, t.uint32(338).fork()).ldelim(), e24.nearVector !== void 0 && te.encode(e24.nearVector, t.uint32(346).fork()).ldelim(), e24.nearObject !== void 0 && be.encode(e24.nearObject, t.uint32(354).fork()).ldelim(), e24.nearText !== void 0 && ae.encode(e24.nearText, t.uint32(362).fork()).ldelim(), e24.nearImage !== void 0 && xe.encode(e24.nearImage, t.uint32(370).fork()).ldelim(), e24.nearAudio !== void 0 && Ce.encode(e24.nearAudio, t.uint32(378).fork()).ldelim(), e24.nearVideo !== void 0 && Pe.encode(e24.nearVideo, t.uint32(386).fork()).ldelim(), e24.nearDepth !== void 0 && Re.encode(e24.nearDepth, t.uint32(394).fork()).ldelim(), e24.nearThermal !== void 0 && Ae.encode(e24.nearThermal, t.uint32(402).fork()).ldelim(), e24.nearImu !== void 0 && Ne.encode(e24.nearImu, t.uint32(410).fork()).ldelim(), e24.generative !== void 0 && Vt.encode(e24.generative, t.uint32(482).fork()).ldelim(), e24.rerank !== void 0 && ur.encode(e24.rerank, t.uint32(490).fork()).ldelim(), e24.uses123Api !== false && t.uint32(800).bool(e24.uses123Api), e24.uses125Api !== false && t.uint32(808).bool(e24.uses125Api), e24.uses127Api !== false && t.uint32(816).bool(e24.uses127Api), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = nf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.collection = r.string(); + continue; + case 10: + if (n !== 82) break; + i.tenant = r.string(); + continue; + case 11: + if (n !== 88) break; + i.consistencyLevel = r.int32(); + continue; + case 20: + if (n !== 162) break; + i.properties = gt.decode(r, r.uint32()); + continue; + case 21: + if (n !== 170) break; + i.metadata = we.decode(r, r.uint32()); + continue; + case 22: + if (n !== 178) break; + i.groupBy = sr.decode(r, r.uint32()); + continue; + case 30: + if (n !== 240) break; + i.limit = r.uint32(); + continue; + case 31: + if (n !== 248) break; + i.offset = r.uint32(); + continue; + case 32: + if (n !== 256) break; + i.autocut = r.uint32(); + continue; + case 33: + if (n !== 266) break; + i.after = r.string(); + continue; + case 34: + if (n !== 274) break; + i.sortBy.push(_i.decode(r, r.uint32())); + continue; + case 40: + if (n !== 322) break; + i.filters = H.decode(r, r.uint32()); + continue; + case 41: + if (n !== 330) break; + i.hybridSearch = ve.decode(r, r.uint32()); + continue; + case 42: + if (n !== 338) break; + i.bm25Search = Ft.decode(r, r.uint32()); + continue; + case 43: + if (n !== 346) break; + i.nearVector = te.decode(r, r.uint32()); + continue; + case 44: + if (n !== 354) break; + i.nearObject = be.decode(r, r.uint32()); + continue; + case 45: + if (n !== 362) break; + i.nearText = ae.decode(r, r.uint32()); + continue; + case 46: + if (n !== 370) break; + i.nearImage = xe.decode(r, r.uint32()); + continue; + case 47: + if (n !== 378) break; + i.nearAudio = Ce.decode(r, r.uint32()); + continue; + case 48: + if (n !== 386) break; + i.nearVideo = Pe.decode(r, r.uint32()); + continue; + case 49: + if (n !== 394) break; + i.nearDepth = Re.decode(r, r.uint32()); + continue; + case 50: + if (n !== 402) break; + i.nearThermal = Ae.decode(r, r.uint32()); + continue; + case 51: + if (n !== 410) break; + i.nearImu = Ne.decode(r, r.uint32()); + continue; + case 60: + if (n !== 482) break; + i.generative = Vt.decode(r, r.uint32()); + continue; + case 61: + if (n !== 490) break; + i.rerank = ur.decode(r, r.uint32()); + continue; + case 100: + if (n !== 800) break; + i.uses123Api = r.bool(); + continue; + case 101: + if (n !== 808) break; + i.uses125Api = r.bool(); + continue; + case 102: + if (n !== 816) break; + i.uses127Api = r.bool(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { collection: v(e24.collection) ? globalThis.String(e24.collection) : "", tenant: v(e24.tenant) ? globalThis.String(e24.tenant) : "", consistencyLevel: v(e24.consistencyLevel) ? tr(e24.consistencyLevel) : void 0, properties: v(e24.properties) ? gt.fromJSON(e24.properties) : void 0, metadata: v(e24.metadata) ? we.fromJSON(e24.metadata) : void 0, groupBy: v(e24.groupBy) ? sr.fromJSON(e24.groupBy) : void 0, limit: v(e24.limit) ? globalThis.Number(e24.limit) : 0, offset: v(e24.offset) ? globalThis.Number(e24.offset) : 0, autocut: v(e24.autocut) ? globalThis.Number(e24.autocut) : 0, after: v(e24.after) ? globalThis.String(e24.after) : "", sortBy: globalThis.Array.isArray(e24?.sortBy) ? e24.sortBy.map((t) => _i.fromJSON(t)) : [], filters: v(e24.filters) ? H.fromJSON(e24.filters) : void 0, hybridSearch: v(e24.hybridSearch) ? ve.fromJSON(e24.hybridSearch) : void 0, bm25Search: v(e24.bm25Search) ? Ft.fromJSON(e24.bm25Search) : void 0, nearVector: v(e24.nearVector) ? te.fromJSON(e24.nearVector) : void 0, nearObject: v(e24.nearObject) ? be.fromJSON(e24.nearObject) : void 0, nearText: v(e24.nearText) ? ae.fromJSON(e24.nearText) : void 0, nearImage: v(e24.nearImage) ? xe.fromJSON(e24.nearImage) : void 0, nearAudio: v(e24.nearAudio) ? Ce.fromJSON(e24.nearAudio) : void 0, nearVideo: v(e24.nearVideo) ? Pe.fromJSON(e24.nearVideo) : void 0, nearDepth: v(e24.nearDepth) ? Re.fromJSON(e24.nearDepth) : void 0, nearThermal: v(e24.nearThermal) ? Ae.fromJSON(e24.nearThermal) : void 0, nearImu: v(e24.nearImu) ? Ne.fromJSON(e24.nearImu) : void 0, generative: v(e24.generative) ? Vt.fromJSON(e24.generative) : void 0, rerank: v(e24.rerank) ? ur.fromJSON(e24.rerank) : void 0, uses123Api: v(e24.uses123Api) ? globalThis.Boolean(e24.uses123Api) : false, uses125Api: v(e24.uses125Api) ? globalThis.Boolean(e24.uses125Api) : false, uses127Api: v(e24.uses127Api) ? globalThis.Boolean(e24.uses127Api) : false }; +}, toJSON(e24) { + let t = {}; + return e24.collection !== "" && (t.collection = e24.collection), e24.tenant !== "" && (t.tenant = e24.tenant), e24.consistencyLevel !== void 0 && (t.consistencyLevel = rr(e24.consistencyLevel)), e24.properties !== void 0 && (t.properties = gt.toJSON(e24.properties)), e24.metadata !== void 0 && (t.metadata = we.toJSON(e24.metadata)), e24.groupBy !== void 0 && (t.groupBy = sr.toJSON(e24.groupBy)), e24.limit !== 0 && (t.limit = Math.round(e24.limit)), e24.offset !== 0 && (t.offset = Math.round(e24.offset)), e24.autocut !== 0 && (t.autocut = Math.round(e24.autocut)), e24.after !== "" && (t.after = e24.after), e24.sortBy?.length && (t.sortBy = e24.sortBy.map((r) => _i.toJSON(r))), e24.filters !== void 0 && (t.filters = H.toJSON(e24.filters)), e24.hybridSearch !== void 0 && (t.hybridSearch = ve.toJSON(e24.hybridSearch)), e24.bm25Search !== void 0 && (t.bm25Search = Ft.toJSON(e24.bm25Search)), e24.nearVector !== void 0 && (t.nearVector = te.toJSON(e24.nearVector)), e24.nearObject !== void 0 && (t.nearObject = be.toJSON(e24.nearObject)), e24.nearText !== void 0 && (t.nearText = ae.toJSON(e24.nearText)), e24.nearImage !== void 0 && (t.nearImage = xe.toJSON(e24.nearImage)), e24.nearAudio !== void 0 && (t.nearAudio = Ce.toJSON(e24.nearAudio)), e24.nearVideo !== void 0 && (t.nearVideo = Pe.toJSON(e24.nearVideo)), e24.nearDepth !== void 0 && (t.nearDepth = Re.toJSON(e24.nearDepth)), e24.nearThermal !== void 0 && (t.nearThermal = Ae.toJSON(e24.nearThermal)), e24.nearImu !== void 0 && (t.nearImu = Ne.toJSON(e24.nearImu)), e24.generative !== void 0 && (t.generative = Vt.toJSON(e24.generative)), e24.rerank !== void 0 && (t.rerank = ur.toJSON(e24.rerank)), e24.uses123Api !== false && (t.uses123Api = e24.uses123Api), e24.uses125Api !== false && (t.uses125Api = e24.uses125Api), e24.uses127Api !== false && (t.uses127Api = e24.uses127Api), t; +}, create(e24) { + return he.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = nf(); + return t.collection = e24.collection ?? "", t.tenant = e24.tenant ?? "", t.consistencyLevel = e24.consistencyLevel ?? void 0, t.properties = e24.properties !== void 0 && e24.properties !== null ? gt.fromPartial(e24.properties) : void 0, t.metadata = e24.metadata !== void 0 && e24.metadata !== null ? we.fromPartial(e24.metadata) : void 0, t.groupBy = e24.groupBy !== void 0 && e24.groupBy !== null ? sr.fromPartial(e24.groupBy) : void 0, t.limit = e24.limit ?? 0, t.offset = e24.offset ?? 0, t.autocut = e24.autocut ?? 0, t.after = e24.after ?? "", t.sortBy = e24.sortBy?.map((r) => _i.fromPartial(r)) || [], t.filters = e24.filters !== void 0 && e24.filters !== null ? H.fromPartial(e24.filters) : void 0, t.hybridSearch = e24.hybridSearch !== void 0 && e24.hybridSearch !== null ? ve.fromPartial(e24.hybridSearch) : void 0, t.bm25Search = e24.bm25Search !== void 0 && e24.bm25Search !== null ? Ft.fromPartial(e24.bm25Search) : void 0, t.nearVector = e24.nearVector !== void 0 && e24.nearVector !== null ? te.fromPartial(e24.nearVector) : void 0, t.nearObject = e24.nearObject !== void 0 && e24.nearObject !== null ? be.fromPartial(e24.nearObject) : void 0, t.nearText = e24.nearText !== void 0 && e24.nearText !== null ? ae.fromPartial(e24.nearText) : void 0, t.nearImage = e24.nearImage !== void 0 && e24.nearImage !== null ? xe.fromPartial(e24.nearImage) : void 0, t.nearAudio = e24.nearAudio !== void 0 && e24.nearAudio !== null ? Ce.fromPartial(e24.nearAudio) : void 0, t.nearVideo = e24.nearVideo !== void 0 && e24.nearVideo !== null ? Pe.fromPartial(e24.nearVideo) : void 0, t.nearDepth = e24.nearDepth !== void 0 && e24.nearDepth !== null ? Re.fromPartial(e24.nearDepth) : void 0, t.nearThermal = e24.nearThermal !== void 0 && e24.nearThermal !== null ? Ae.fromPartial(e24.nearThermal) : void 0, t.nearImu = e24.nearImu !== void 0 && e24.nearImu !== null ? Ne.fromPartial(e24.nearImu) : void 0, t.generative = e24.generative !== void 0 && e24.generative !== null ? Vt.fromPartial(e24.generative) : void 0, t.rerank = e24.rerank !== void 0 && e24.rerank !== null ? ur.fromPartial(e24.rerank) : void 0, t.uses123Api = e24.uses123Api ?? false, t.uses125Api = e24.uses125Api ?? false, t.uses127Api = e24.uses127Api ?? false, t; +} }; +function af() { + return { path: [], numberOfGroups: 0, objectsPerGroup: 0 }; +} +var sr = { encode(e24, t = N.default.Writer.create()) { + for (let r of e24.path) t.uint32(10).string(r); + return e24.numberOfGroups !== 0 && t.uint32(16).int32(e24.numberOfGroups), e24.objectsPerGroup !== 0 && t.uint32(24).int32(e24.objectsPerGroup), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = af(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.path.push(r.string()); + continue; + case 2: + if (n !== 16) break; + i.numberOfGroups = r.int32(); + continue; + case 3: + if (n !== 24) break; + i.objectsPerGroup = r.int32(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { path: globalThis.Array.isArray(e24?.path) ? e24.path.map((t) => globalThis.String(t)) : [], numberOfGroups: v(e24.numberOfGroups) ? globalThis.Number(e24.numberOfGroups) : 0, objectsPerGroup: v(e24.objectsPerGroup) ? globalThis.Number(e24.objectsPerGroup) : 0 }; +}, toJSON(e24) { + let t = {}; + return e24.path?.length && (t.path = e24.path), e24.numberOfGroups !== 0 && (t.numberOfGroups = Math.round(e24.numberOfGroups)), e24.objectsPerGroup !== 0 && (t.objectsPerGroup = Math.round(e24.objectsPerGroup)), t; +}, create(e24) { + return sr.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = af(); + return t.path = e24.path?.map((r) => r) || [], t.numberOfGroups = e24.numberOfGroups ?? 0, t.objectsPerGroup = e24.objectsPerGroup ?? 0, t; +} }; +function of() { + return { ascending: false, path: [] }; +} +var _i = { encode(e24, t = N.default.Writer.create()) { + e24.ascending !== false && t.uint32(8).bool(e24.ascending); + for (let r of e24.path) t.uint32(18).string(r); + return t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = of(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.ascending = r.bool(); + continue; + case 2: + if (n !== 18) break; + i.path.push(r.string()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { ascending: v(e24.ascending) ? globalThis.Boolean(e24.ascending) : false, path: globalThis.Array.isArray(e24?.path) ? e24.path.map((t) => globalThis.String(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.ascending !== false && (t.ascending = e24.ascending), e24.path?.length && (t.path = e24.path), t; +}, create(e24) { + return _i.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = of(); + return t.ascending = e24.ascending ?? false, t.path = e24.path?.map((r) => r) || [], t; +} }; +function sf() { + return { uuid: false, vector: false, creationTimeUnix: false, lastUpdateTimeUnix: false, distance: false, certainty: false, score: false, explainScore: false, isConsistent: false, vectors: [], queryProfile: false }; +} +var we = { encode(e24, t = N.default.Writer.create()) { + e24.uuid !== false && t.uint32(8).bool(e24.uuid), e24.vector !== false && t.uint32(16).bool(e24.vector), e24.creationTimeUnix !== false && t.uint32(24).bool(e24.creationTimeUnix), e24.lastUpdateTimeUnix !== false && t.uint32(32).bool(e24.lastUpdateTimeUnix), e24.distance !== false && t.uint32(40).bool(e24.distance), e24.certainty !== false && t.uint32(48).bool(e24.certainty), e24.score !== false && t.uint32(56).bool(e24.score), e24.explainScore !== false && t.uint32(64).bool(e24.explainScore), e24.isConsistent !== false && t.uint32(72).bool(e24.isConsistent); + for (let r of e24.vectors) t.uint32(82).string(r); + return e24.queryProfile !== false && t.uint32(88).bool(e24.queryProfile), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = sf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.uuid = r.bool(); + continue; + case 2: + if (n !== 16) break; + i.vector = r.bool(); + continue; + case 3: + if (n !== 24) break; + i.creationTimeUnix = r.bool(); + continue; + case 4: + if (n !== 32) break; + i.lastUpdateTimeUnix = r.bool(); + continue; + case 5: + if (n !== 40) break; + i.distance = r.bool(); + continue; + case 6: + if (n !== 48) break; + i.certainty = r.bool(); + continue; + case 7: + if (n !== 56) break; + i.score = r.bool(); + continue; + case 8: + if (n !== 64) break; + i.explainScore = r.bool(); + continue; + case 9: + if (n !== 72) break; + i.isConsistent = r.bool(); + continue; + case 10: + if (n !== 82) break; + i.vectors.push(r.string()); + continue; + case 11: + if (n !== 88) break; + i.queryProfile = r.bool(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { uuid: v(e24.uuid) ? globalThis.Boolean(e24.uuid) : false, vector: v(e24.vector) ? globalThis.Boolean(e24.vector) : false, creationTimeUnix: v(e24.creationTimeUnix) ? globalThis.Boolean(e24.creationTimeUnix) : false, lastUpdateTimeUnix: v(e24.lastUpdateTimeUnix) ? globalThis.Boolean(e24.lastUpdateTimeUnix) : false, distance: v(e24.distance) ? globalThis.Boolean(e24.distance) : false, certainty: v(e24.certainty) ? globalThis.Boolean(e24.certainty) : false, score: v(e24.score) ? globalThis.Boolean(e24.score) : false, explainScore: v(e24.explainScore) ? globalThis.Boolean(e24.explainScore) : false, isConsistent: v(e24.isConsistent) ? globalThis.Boolean(e24.isConsistent) : false, vectors: globalThis.Array.isArray(e24?.vectors) ? e24.vectors.map((t) => globalThis.String(t)) : [], queryProfile: v(e24.queryProfile) ? globalThis.Boolean(e24.queryProfile) : false }; +}, toJSON(e24) { + let t = {}; + return e24.uuid !== false && (t.uuid = e24.uuid), e24.vector !== false && (t.vector = e24.vector), e24.creationTimeUnix !== false && (t.creationTimeUnix = e24.creationTimeUnix), e24.lastUpdateTimeUnix !== false && (t.lastUpdateTimeUnix = e24.lastUpdateTimeUnix), e24.distance !== false && (t.distance = e24.distance), e24.certainty !== false && (t.certainty = e24.certainty), e24.score !== false && (t.score = e24.score), e24.explainScore !== false && (t.explainScore = e24.explainScore), e24.isConsistent !== false && (t.isConsistent = e24.isConsistent), e24.vectors?.length && (t.vectors = e24.vectors), e24.queryProfile !== false && (t.queryProfile = e24.queryProfile), t; +}, create(e24) { + return we.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = sf(); + return t.uuid = e24.uuid ?? false, t.vector = e24.vector ?? false, t.creationTimeUnix = e24.creationTimeUnix ?? false, t.lastUpdateTimeUnix = e24.lastUpdateTimeUnix ?? false, t.distance = e24.distance ?? false, t.certainty = e24.certainty ?? false, t.score = e24.score ?? false, t.explainScore = e24.explainScore ?? false, t.isConsistent = e24.isConsistent ?? false, t.vectors = e24.vectors?.map((r) => r) || [], t.queryProfile = e24.queryProfile ?? false, t; +} }; +function uf() { + return { nonRefProperties: [], refProperties: [], objectProperties: [], returnAllNonrefProperties: false }; +} +var gt = { encode(e24, t = N.default.Writer.create()) { + for (let r of e24.nonRefProperties) t.uint32(10).string(r); + for (let r of e24.refProperties) Bi.encode(r, t.uint32(18).fork()).ldelim(); + for (let r of e24.objectProperties) pt.encode(r, t.uint32(26).fork()).ldelim(); + return e24.returnAllNonrefProperties !== false && t.uint32(88).bool(e24.returnAllNonrefProperties), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = uf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.nonRefProperties.push(r.string()); + continue; + case 2: + if (n !== 18) break; + i.refProperties.push(Bi.decode(r, r.uint32())); + continue; + case 3: + if (n !== 26) break; + i.objectProperties.push(pt.decode(r, r.uint32())); + continue; + case 11: + if (n !== 88) break; + i.returnAllNonrefProperties = r.bool(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { nonRefProperties: globalThis.Array.isArray(e24?.nonRefProperties) ? e24.nonRefProperties.map((t) => globalThis.String(t)) : [], refProperties: globalThis.Array.isArray(e24?.refProperties) ? e24.refProperties.map((t) => Bi.fromJSON(t)) : [], objectProperties: globalThis.Array.isArray(e24?.objectProperties) ? e24.objectProperties.map((t) => pt.fromJSON(t)) : [], returnAllNonrefProperties: v(e24.returnAllNonrefProperties) ? globalThis.Boolean(e24.returnAllNonrefProperties) : false }; +}, toJSON(e24) { + let t = {}; + return e24.nonRefProperties?.length && (t.nonRefProperties = e24.nonRefProperties), e24.refProperties?.length && (t.refProperties = e24.refProperties.map((r) => Bi.toJSON(r))), e24.objectProperties?.length && (t.objectProperties = e24.objectProperties.map((r) => pt.toJSON(r))), e24.returnAllNonrefProperties !== false && (t.returnAllNonrefProperties = e24.returnAllNonrefProperties), t; +}, create(e24) { + return gt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = uf(); + return t.nonRefProperties = e24.nonRefProperties?.map((r) => r) || [], t.refProperties = e24.refProperties?.map((r) => Bi.fromPartial(r)) || [], t.objectProperties = e24.objectProperties?.map((r) => pt.fromPartial(r)) || [], t.returnAllNonrefProperties = e24.returnAllNonrefProperties ?? false, t; +} }; +function df() { + return { propName: "", primitiveProperties: [], objectProperties: [] }; +} +var pt = { encode(e24, t = N.default.Writer.create()) { + e24.propName !== "" && t.uint32(10).string(e24.propName); + for (let r of e24.primitiveProperties) t.uint32(18).string(r); + for (let r of e24.objectProperties) pt.encode(r, t.uint32(26).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = df(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.propName = r.string(); + continue; + case 2: + if (n !== 18) break; + i.primitiveProperties.push(r.string()); + continue; + case 3: + if (n !== 26) break; + i.objectProperties.push(pt.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { propName: v(e24.propName) ? globalThis.String(e24.propName) : "", primitiveProperties: globalThis.Array.isArray(e24?.primitiveProperties) ? e24.primitiveProperties.map((t) => globalThis.String(t)) : [], objectProperties: globalThis.Array.isArray(e24?.objectProperties) ? e24.objectProperties.map((t) => pt.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.propName !== "" && (t.propName = e24.propName), e24.primitiveProperties?.length && (t.primitiveProperties = e24.primitiveProperties), e24.objectProperties?.length && (t.objectProperties = e24.objectProperties.map((r) => pt.toJSON(r))), t; +}, create(e24) { + return pt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = df(); + return t.propName = e24.propName ?? "", t.primitiveProperties = e24.primitiveProperties?.map((r) => r) || [], t.objectProperties = e24.objectProperties?.map((r) => pt.fromPartial(r)) || [], t; +} }; +function cf() { + return { referenceProperty: "", properties: void 0, metadata: void 0, targetCollection: "" }; +} +var Bi = { encode(e24, t = N.default.Writer.create()) { + return e24.referenceProperty !== "" && t.uint32(10).string(e24.referenceProperty), e24.properties !== void 0 && gt.encode(e24.properties, t.uint32(18).fork()).ldelim(), e24.metadata !== void 0 && we.encode(e24.metadata, t.uint32(26).fork()).ldelim(), e24.targetCollection !== "" && t.uint32(34).string(e24.targetCollection), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = cf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.referenceProperty = r.string(); + continue; + case 2: + if (n !== 18) break; + i.properties = gt.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.metadata = we.decode(r, r.uint32()); + continue; + case 4: + if (n !== 34) break; + i.targetCollection = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { referenceProperty: v(e24.referenceProperty) ? globalThis.String(e24.referenceProperty) : "", properties: v(e24.properties) ? gt.fromJSON(e24.properties) : void 0, metadata: v(e24.metadata) ? we.fromJSON(e24.metadata) : void 0, targetCollection: v(e24.targetCollection) ? globalThis.String(e24.targetCollection) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.referenceProperty !== "" && (t.referenceProperty = e24.referenceProperty), e24.properties !== void 0 && (t.properties = gt.toJSON(e24.properties)), e24.metadata !== void 0 && (t.metadata = we.toJSON(e24.metadata)), e24.targetCollection !== "" && (t.targetCollection = e24.targetCollection), t; +}, create(e24) { + return Bi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = cf(); + return t.referenceProperty = e24.referenceProperty ?? "", t.properties = e24.properties !== void 0 && e24.properties !== null ? gt.fromPartial(e24.properties) : void 0, t.metadata = e24.metadata !== void 0 && e24.metadata !== null ? we.fromPartial(e24.metadata) : void 0, t.targetCollection = e24.targetCollection ?? "", t; +} }; +function lf() { + return { property: "", query: void 0 }; +} +var ur = { encode(e24, t = N.default.Writer.create()) { + return e24.property !== "" && t.uint32(10).string(e24.property), e24.query !== void 0 && t.uint32(18).string(e24.query), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = lf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.property = r.string(); + continue; + case 2: + if (n !== 18) break; + i.query = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { property: v(e24.property) ? globalThis.String(e24.property) : "", query: v(e24.query) ? globalThis.String(e24.query) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.property !== "" && (t.property = e24.property), e24.query !== void 0 && (t.query = e24.query), t; +}, create(e24) { + return ur.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = lf(); + return t.property = e24.property ?? "", t.query = e24.query ?? void 0, t; +} }; +function ff() { + return { took: 0, results: [], generativeGroupedResult: void 0, groupByResults: [], generativeGroupedResults: void 0, queryProfile: void 0 }; +} +var bs = { encode(e24, t = N.default.Writer.create()) { + e24.took !== 0 && t.uint32(13).float(e24.took); + for (let r of e24.results) mt.encode(r, t.uint32(18).fork()).ldelim(); + e24.generativeGroupedResult !== void 0 && t.uint32(26).string(e24.generativeGroupedResult); + for (let r of e24.groupByResults) Ei.encode(r, t.uint32(34).fork()).ldelim(); + return e24.generativeGroupedResults !== void 0 && pe.encode(e24.generativeGroupedResults, t.uint32(42).fork()).ldelim(), e24.queryProfile !== void 0 && Gi.encode(e24.queryProfile, t.uint32(50).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = ff(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 13) break; + i.took = r.float(); + continue; + case 2: + if (n !== 18) break; + i.results.push(mt.decode(r, r.uint32())); + continue; + case 3: + if (n !== 26) break; + i.generativeGroupedResult = r.string(); + continue; + case 4: + if (n !== 34) break; + i.groupByResults.push(Ei.decode(r, r.uint32())); + continue; + case 5: + if (n !== 42) break; + i.generativeGroupedResults = pe.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.queryProfile = Gi.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { took: v(e24.took) ? globalThis.Number(e24.took) : 0, results: globalThis.Array.isArray(e24?.results) ? e24.results.map((t) => mt.fromJSON(t)) : [], generativeGroupedResult: v(e24.generativeGroupedResult) ? globalThis.String(e24.generativeGroupedResult) : void 0, groupByResults: globalThis.Array.isArray(e24?.groupByResults) ? e24.groupByResults.map((t) => Ei.fromJSON(t)) : [], generativeGroupedResults: v(e24.generativeGroupedResults) ? pe.fromJSON(e24.generativeGroupedResults) : void 0, queryProfile: v(e24.queryProfile) ? Gi.fromJSON(e24.queryProfile) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.took !== 0 && (t.took = e24.took), e24.results?.length && (t.results = e24.results.map((r) => mt.toJSON(r))), e24.generativeGroupedResult !== void 0 && (t.generativeGroupedResult = e24.generativeGroupedResult), e24.groupByResults?.length && (t.groupByResults = e24.groupByResults.map((r) => Ei.toJSON(r))), e24.generativeGroupedResults !== void 0 && (t.generativeGroupedResults = pe.toJSON(e24.generativeGroupedResults)), e24.queryProfile !== void 0 && (t.queryProfile = Gi.toJSON(e24.queryProfile)), t; +}, create(e24) { + return bs.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = ff(); + return t.took = e24.took ?? 0, t.results = e24.results?.map((r) => mt.fromPartial(r)) || [], t.generativeGroupedResult = e24.generativeGroupedResult ?? void 0, t.groupByResults = e24.groupByResults?.map((r) => Ei.fromPartial(r)) || [], t.generativeGroupedResults = e24.generativeGroupedResults !== void 0 && e24.generativeGroupedResults !== null ? pe.fromPartial(e24.generativeGroupedResults) : void 0, t.queryProfile = e24.queryProfile !== void 0 && e24.queryProfile !== null ? Gi.fromPartial(e24.queryProfile) : void 0, t; +} }; +function pf() { + return { shards: [] }; +} +var Gi = { encode(e24, t = N.default.Writer.create()) { + for (let r of e24.shards) wi.encode(r, t.uint32(10).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = pf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.shards.push(wi.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { shards: globalThis.Array.isArray(e24?.shards) ? e24.shards.map((t) => wi.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.shards?.length && (t.shards = e24.shards.map((r) => wi.toJSON(r))), t; +}, create(e24) { + return Gi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = pf(); + return t.shards = e24.shards?.map((r) => wi.fromPartial(r)) || [], t; +} }; +function gf() { + return { details: {} }; +} +var qt = { encode(e24, t = N.default.Writer.create()) { + return Object.entries(e24.details).forEach(([r, a]) => { + ys.encode({ key: r, value: a }, t.uint32(10).fork()).ldelim(); + }), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = gf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + let o = ys.decode(r, r.uint32()); + o.value !== void 0 && (i.details[o.key] = o.value); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { details: Nf(e24.details) ? Object.entries(e24.details).reduce((t, [r, a]) => (t[r] = String(a), t), {}) : {} }; +}, toJSON(e24) { + let t = {}; + if (e24.details) { + let r = Object.entries(e24.details); + r.length > 0 && (t.details = {}, r.forEach(([a, i]) => { + t.details[a] = i; + })); + } + return t; +}, create(e24) { + return qt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = gf(); + return t.details = Object.entries(e24.details ?? {}).reduce((r, [a, i]) => (i !== void 0 && (r[a] = globalThis.String(i)), r), {}), t; +} }; +function mf() { + return { key: "", value: "" }; +} +var ys = { encode(e24, t = N.default.Writer.create()) { + return e24.key !== "" && t.uint32(10).string(e24.key), e24.value !== "" && t.uint32(18).string(e24.value), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = mf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.key = r.string(); + continue; + case 2: + if (n !== 18) break; + i.value = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { key: v(e24.key) ? globalThis.String(e24.key) : "", value: v(e24.value) ? globalThis.String(e24.value) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.key !== "" && (t.key = e24.key), e24.value !== "" && (t.value = e24.value), t; +}, create(e24) { + return ys.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = mf(); + return t.key = e24.key ?? "", t.value = e24.value ?? "", t; +} }; +function hf() { + return { name: "", node: "", searches: {} }; +} +var wi = { encode(e24, t = N.default.Writer.create()) { + return e24.name !== "" && t.uint32(10).string(e24.name), e24.node !== "" && t.uint32(18).string(e24.node), Object.entries(e24.searches).forEach(([r, a]) => { + Ts.encode({ key: r, value: a }, t.uint32(26).fork()).ldelim(); + }), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = hf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.name = r.string(); + continue; + case 2: + if (n !== 18) break; + i.node = r.string(); + continue; + case 3: + if (n !== 26) break; + let o = Ts.decode(r, r.uint32()); + o.value !== void 0 && (i.searches[o.key] = o.value); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { name: v(e24.name) ? globalThis.String(e24.name) : "", node: v(e24.node) ? globalThis.String(e24.node) : "", searches: Nf(e24.searches) ? Object.entries(e24.searches).reduce((t, [r, a]) => (t[r] = qt.fromJSON(a), t), {}) : {} }; +}, toJSON(e24) { + let t = {}; + if (e24.name !== "" && (t.name = e24.name), e24.node !== "" && (t.node = e24.node), e24.searches) { + let r = Object.entries(e24.searches); + r.length > 0 && (t.searches = {}, r.forEach(([a, i]) => { + t.searches[a] = qt.toJSON(i); + })); + } + return t; +}, create(e24) { + return wi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = hf(); + return t.name = e24.name ?? "", t.node = e24.node ?? "", t.searches = Object.entries(e24.searches ?? {}).reduce((r, [a, i]) => (i !== void 0 && (r[a] = qt.fromPartial(i)), r), {}), t; +} }; +function yf() { + return { key: "", value: void 0 }; +} +var Ts = { encode(e24, t = N.default.Writer.create()) { + return e24.key !== "" && t.uint32(10).string(e24.key), e24.value !== void 0 && qt.encode(e24.value, t.uint32(18).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = yf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.key = r.string(); + continue; + case 2: + if (n !== 18) break; + i.value = qt.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { key: v(e24.key) ? globalThis.String(e24.key) : "", value: v(e24.value) ? qt.fromJSON(e24.value) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.key !== "" && (t.key = e24.key), e24.value !== void 0 && (t.value = qt.toJSON(e24.value)), t; +}, create(e24) { + return Ts.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = yf(); + return t.key = e24.key ?? "", t.value = e24.value !== void 0 && e24.value !== null ? qt.fromPartial(e24.value) : void 0, t; +} }; +function Tf() { + return { score: 0 }; +} +var Mi = { encode(e24, t = N.default.Writer.create()) { + return e24.score !== 0 && t.uint32(9).double(e24.score), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Tf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 9) break; + i.score = r.double(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { score: v(e24.score) ? globalThis.Number(e24.score) : 0 }; +}, toJSON(e24) { + let t = {}; + return e24.score !== 0 && (t.score = e24.score), t; +}, create(e24) { + return Mi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Tf(); + return t.score = e24.score ?? 0, t; +} }; +function vf() { + return { name: "", minDistance: 0, maxDistance: 0, numberOfObjects: 0, objects: [], rerank: void 0, generative: void 0, generativeResult: void 0 }; +} +var Ei = { encode(e24, t = N.default.Writer.create()) { + e24.name !== "" && t.uint32(10).string(e24.name), e24.minDistance !== 0 && t.uint32(21).float(e24.minDistance), e24.maxDistance !== 0 && t.uint32(29).float(e24.maxDistance), e24.numberOfObjects !== 0 && t.uint32(32).int64(e24.numberOfObjects); + for (let r of e24.objects) mt.encode(r, t.uint32(42).fork()).ldelim(); + return e24.rerank !== void 0 && Mi.encode(e24.rerank, t.uint32(50).fork()).ldelim(), e24.generative !== void 0 && ot.encode(e24.generative, t.uint32(58).fork()).ldelim(), e24.generativeResult !== void 0 && pe.encode(e24.generativeResult, t.uint32(66).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = vf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.name = r.string(); + continue; + case 2: + if (n !== 21) break; + i.minDistance = r.float(); + continue; + case 3: + if (n !== 29) break; + i.maxDistance = r.float(); + continue; + case 4: + if (n !== 32) break; + i.numberOfObjects = vs(r.int64()); + continue; + case 5: + if (n !== 42) break; + i.objects.push(mt.decode(r, r.uint32())); + continue; + case 6: + if (n !== 50) break; + i.rerank = Mi.decode(r, r.uint32()); + continue; + case 7: + if (n !== 58) break; + i.generative = ot.decode(r, r.uint32()); + continue; + case 8: + if (n !== 66) break; + i.generativeResult = pe.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { name: v(e24.name) ? globalThis.String(e24.name) : "", minDistance: v(e24.minDistance) ? globalThis.Number(e24.minDistance) : 0, maxDistance: v(e24.maxDistance) ? globalThis.Number(e24.maxDistance) : 0, numberOfObjects: v(e24.numberOfObjects) ? globalThis.Number(e24.numberOfObjects) : 0, objects: globalThis.Array.isArray(e24?.objects) ? e24.objects.map((t) => mt.fromJSON(t)) : [], rerank: v(e24.rerank) ? Mi.fromJSON(e24.rerank) : void 0, generative: v(e24.generative) ? ot.fromJSON(e24.generative) : void 0, generativeResult: v(e24.generativeResult) ? pe.fromJSON(e24.generativeResult) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.name !== "" && (t.name = e24.name), e24.minDistance !== 0 && (t.minDistance = e24.minDistance), e24.maxDistance !== 0 && (t.maxDistance = e24.maxDistance), e24.numberOfObjects !== 0 && (t.numberOfObjects = Math.round(e24.numberOfObjects)), e24.objects?.length && (t.objects = e24.objects.map((r) => mt.toJSON(r))), e24.rerank !== void 0 && (t.rerank = Mi.toJSON(e24.rerank)), e24.generative !== void 0 && (t.generative = ot.toJSON(e24.generative)), e24.generativeResult !== void 0 && (t.generativeResult = pe.toJSON(e24.generativeResult)), t; +}, create(e24) { + return Ei.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = vf(); + return t.name = e24.name ?? "", t.minDistance = e24.minDistance ?? 0, t.maxDistance = e24.maxDistance ?? 0, t.numberOfObjects = e24.numberOfObjects ?? 0, t.objects = e24.objects?.map((r) => mt.fromPartial(r)) || [], t.rerank = e24.rerank !== void 0 && e24.rerank !== null ? Mi.fromPartial(e24.rerank) : void 0, t.generative = e24.generative !== void 0 && e24.generative !== null ? ot.fromPartial(e24.generative) : void 0, t.generativeResult = e24.generativeResult !== void 0 && e24.generativeResult !== null ? pe.fromPartial(e24.generativeResult) : void 0, t; +} }; +function bf() { + return { properties: void 0, metadata: void 0, generative: void 0 }; +} +var mt = { encode(e24, t = N.default.Writer.create()) { + return e24.properties !== void 0 && yt.encode(e24.properties, t.uint32(10).fork()).ldelim(), e24.metadata !== void 0 && ht.encode(e24.metadata, t.uint32(18).fork()).ldelim(), e24.generative !== void 0 && pe.encode(e24.generative, t.uint32(26).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = bf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.properties = yt.decode(r, r.uint32()); + continue; + case 2: + if (n !== 18) break; + i.metadata = ht.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.generative = pe.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { properties: v(e24.properties) ? yt.fromJSON(e24.properties) : void 0, metadata: v(e24.metadata) ? ht.fromJSON(e24.metadata) : void 0, generative: v(e24.generative) ? pe.fromJSON(e24.generative) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.properties !== void 0 && (t.properties = yt.toJSON(e24.properties)), e24.metadata !== void 0 && (t.metadata = ht.toJSON(e24.metadata)), e24.generative !== void 0 && (t.generative = pe.toJSON(e24.generative)), t; +}, create(e24) { + return mt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = bf(); + return t.properties = e24.properties !== void 0 && e24.properties !== null ? yt.fromPartial(e24.properties) : void 0, t.metadata = e24.metadata !== void 0 && e24.metadata !== null ? ht.fromPartial(e24.metadata) : void 0, t.generative = e24.generative !== void 0 && e24.generative !== null ? pe.fromPartial(e24.generative) : void 0, t; +} }; +function xf() { + return { id: "", vector: [], creationTimeUnix: 0, creationTimeUnixPresent: false, lastUpdateTimeUnix: 0, lastUpdateTimeUnixPresent: false, distance: 0, distancePresent: false, certainty: 0, certaintyPresent: false, score: 0, scorePresent: false, explainScore: "", explainScorePresent: false, isConsistent: void 0, generative: "", generativePresent: false, isConsistentPresent: false, vectorBytes: new Uint8Array(0), idAsBytes: new Uint8Array(0), rerankScore: 0, rerankScorePresent: false, vectors: [] }; +} +var ht = { encode(e24, t = N.default.Writer.create()) { + e24.id !== "" && t.uint32(10).string(e24.id), t.uint32(18).fork(); + for (let r of e24.vector) t.float(r); + t.ldelim(), e24.creationTimeUnix !== 0 && t.uint32(24).int64(e24.creationTimeUnix), e24.creationTimeUnixPresent !== false && t.uint32(32).bool(e24.creationTimeUnixPresent), e24.lastUpdateTimeUnix !== 0 && t.uint32(40).int64(e24.lastUpdateTimeUnix), e24.lastUpdateTimeUnixPresent !== false && t.uint32(48).bool(e24.lastUpdateTimeUnixPresent), e24.distance !== 0 && t.uint32(61).float(e24.distance), e24.distancePresent !== false && t.uint32(64).bool(e24.distancePresent), e24.certainty !== 0 && t.uint32(77).float(e24.certainty), e24.certaintyPresent !== false && t.uint32(80).bool(e24.certaintyPresent), e24.score !== 0 && t.uint32(93).float(e24.score), e24.scorePresent !== false && t.uint32(96).bool(e24.scorePresent), e24.explainScore !== "" && t.uint32(106).string(e24.explainScore), e24.explainScorePresent !== false && t.uint32(112).bool(e24.explainScorePresent), e24.isConsistent !== void 0 && t.uint32(120).bool(e24.isConsistent), e24.generative !== "" && t.uint32(130).string(e24.generative), e24.generativePresent !== false && t.uint32(136).bool(e24.generativePresent), e24.isConsistentPresent !== false && t.uint32(144).bool(e24.isConsistentPresent), e24.vectorBytes.length !== 0 && t.uint32(154).bytes(e24.vectorBytes), e24.idAsBytes.length !== 0 && t.uint32(162).bytes(e24.idAsBytes), e24.rerankScore !== 0 && t.uint32(169).double(e24.rerankScore), e24.rerankScorePresent !== false && t.uint32(176).bool(e24.rerankScorePresent); + for (let r of e24.vectors) q.encode(r, t.uint32(186).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = xf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.id = r.string(); + continue; + case 2: + if (n === 21) { + i.vector.push(r.float()); + continue; + } + if (n === 18) { + let o = r.uint32() + r.pos; + for (; r.pos < o; ) i.vector.push(r.float()); + continue; + } + break; + case 3: + if (n !== 24) break; + i.creationTimeUnix = vs(r.int64()); + continue; + case 4: + if (n !== 32) break; + i.creationTimeUnixPresent = r.bool(); + continue; + case 5: + if (n !== 40) break; + i.lastUpdateTimeUnix = vs(r.int64()); + continue; + case 6: + if (n !== 48) break; + i.lastUpdateTimeUnixPresent = r.bool(); + continue; + case 7: + if (n !== 61) break; + i.distance = r.float(); + continue; + case 8: + if (n !== 64) break; + i.distancePresent = r.bool(); + continue; + case 9: + if (n !== 77) break; + i.certainty = r.float(); + continue; + case 10: + if (n !== 80) break; + i.certaintyPresent = r.bool(); + continue; + case 11: + if (n !== 93) break; + i.score = r.float(); + continue; + case 12: + if (n !== 96) break; + i.scorePresent = r.bool(); + continue; + case 13: + if (n !== 106) break; + i.explainScore = r.string(); + continue; + case 14: + if (n !== 112) break; + i.explainScorePresent = r.bool(); + continue; + case 15: + if (n !== 120) break; + i.isConsistent = r.bool(); + continue; + case 16: + if (n !== 130) break; + i.generative = r.string(); + continue; + case 17: + if (n !== 136) break; + i.generativePresent = r.bool(); + continue; + case 18: + if (n !== 144) break; + i.isConsistentPresent = r.bool(); + continue; + case 19: + if (n !== 154) break; + i.vectorBytes = r.bytes(); + continue; + case 20: + if (n !== 162) break; + i.idAsBytes = r.bytes(); + continue; + case 21: + if (n !== 169) break; + i.rerankScore = r.double(); + continue; + case 22: + if (n !== 176) break; + i.rerankScorePresent = r.bool(); + continue; + case 23: + if (n !== 186) break; + i.vectors.push(q.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { id: v(e24.id) ? globalThis.String(e24.id) : "", vector: globalThis.Array.isArray(e24?.vector) ? e24.vector.map((t) => globalThis.Number(t)) : [], creationTimeUnix: v(e24.creationTimeUnix) ? globalThis.Number(e24.creationTimeUnix) : 0, creationTimeUnixPresent: v(e24.creationTimeUnixPresent) ? globalThis.Boolean(e24.creationTimeUnixPresent) : false, lastUpdateTimeUnix: v(e24.lastUpdateTimeUnix) ? globalThis.Number(e24.lastUpdateTimeUnix) : 0, lastUpdateTimeUnixPresent: v(e24.lastUpdateTimeUnixPresent) ? globalThis.Boolean(e24.lastUpdateTimeUnixPresent) : false, distance: v(e24.distance) ? globalThis.Number(e24.distance) : 0, distancePresent: v(e24.distancePresent) ? globalThis.Boolean(e24.distancePresent) : false, certainty: v(e24.certainty) ? globalThis.Number(e24.certainty) : 0, certaintyPresent: v(e24.certaintyPresent) ? globalThis.Boolean(e24.certaintyPresent) : false, score: v(e24.score) ? globalThis.Number(e24.score) : 0, scorePresent: v(e24.scorePresent) ? globalThis.Boolean(e24.scorePresent) : false, explainScore: v(e24.explainScore) ? globalThis.String(e24.explainScore) : "", explainScorePresent: v(e24.explainScorePresent) ? globalThis.Boolean(e24.explainScorePresent) : false, isConsistent: v(e24.isConsistent) ? globalThis.Boolean(e24.isConsistent) : void 0, generative: v(e24.generative) ? globalThis.String(e24.generative) : "", generativePresent: v(e24.generativePresent) ? globalThis.Boolean(e24.generativePresent) : false, isConsistentPresent: v(e24.isConsistentPresent) ? globalThis.Boolean(e24.isConsistentPresent) : false, vectorBytes: v(e24.vectorBytes) ? Rf(e24.vectorBytes) : new Uint8Array(0), idAsBytes: v(e24.idAsBytes) ? Rf(e24.idAsBytes) : new Uint8Array(0), rerankScore: v(e24.rerankScore) ? globalThis.Number(e24.rerankScore) : 0, rerankScorePresent: v(e24.rerankScorePresent) ? globalThis.Boolean(e24.rerankScorePresent) : false, vectors: globalThis.Array.isArray(e24?.vectors) ? e24.vectors.map((t) => q.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.id !== "" && (t.id = e24.id), e24.vector?.length && (t.vector = e24.vector), e24.creationTimeUnix !== 0 && (t.creationTimeUnix = Math.round(e24.creationTimeUnix)), e24.creationTimeUnixPresent !== false && (t.creationTimeUnixPresent = e24.creationTimeUnixPresent), e24.lastUpdateTimeUnix !== 0 && (t.lastUpdateTimeUnix = Math.round(e24.lastUpdateTimeUnix)), e24.lastUpdateTimeUnixPresent !== false && (t.lastUpdateTimeUnixPresent = e24.lastUpdateTimeUnixPresent), e24.distance !== 0 && (t.distance = e24.distance), e24.distancePresent !== false && (t.distancePresent = e24.distancePresent), e24.certainty !== 0 && (t.certainty = e24.certainty), e24.certaintyPresent !== false && (t.certaintyPresent = e24.certaintyPresent), e24.score !== 0 && (t.score = e24.score), e24.scorePresent !== false && (t.scorePresent = e24.scorePresent), e24.explainScore !== "" && (t.explainScore = e24.explainScore), e24.explainScorePresent !== false && (t.explainScorePresent = e24.explainScorePresent), e24.isConsistent !== void 0 && (t.isConsistent = e24.isConsistent), e24.generative !== "" && (t.generative = e24.generative), e24.generativePresent !== false && (t.generativePresent = e24.generativePresent), e24.isConsistentPresent !== false && (t.isConsistentPresent = e24.isConsistentPresent), e24.vectorBytes.length !== 0 && (t.vectorBytes = Af(e24.vectorBytes)), e24.idAsBytes.length !== 0 && (t.idAsBytes = Af(e24.idAsBytes)), e24.rerankScore !== 0 && (t.rerankScore = e24.rerankScore), e24.rerankScorePresent !== false && (t.rerankScorePresent = e24.rerankScorePresent), e24.vectors?.length && (t.vectors = e24.vectors.map((r) => q.toJSON(r))), t; +}, create(e24) { + return ht.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = xf(); + return t.id = e24.id ?? "", t.vector = e24.vector?.map((r) => r) || [], t.creationTimeUnix = e24.creationTimeUnix ?? 0, t.creationTimeUnixPresent = e24.creationTimeUnixPresent ?? false, t.lastUpdateTimeUnix = e24.lastUpdateTimeUnix ?? 0, t.lastUpdateTimeUnixPresent = e24.lastUpdateTimeUnixPresent ?? false, t.distance = e24.distance ?? 0, t.distancePresent = e24.distancePresent ?? false, t.certainty = e24.certainty ?? 0, t.certaintyPresent = e24.certaintyPresent ?? false, t.score = e24.score ?? 0, t.scorePresent = e24.scorePresent ?? false, t.explainScore = e24.explainScore ?? "", t.explainScorePresent = e24.explainScorePresent ?? false, t.isConsistent = e24.isConsistent ?? void 0, t.generative = e24.generative ?? "", t.generativePresent = e24.generativePresent ?? false, t.isConsistentPresent = e24.isConsistentPresent ?? false, t.vectorBytes = e24.vectorBytes ?? new Uint8Array(0), t.idAsBytes = e24.idAsBytes ?? new Uint8Array(0), t.rerankScore = e24.rerankScore ?? 0, t.rerankScorePresent = e24.rerankScorePresent ?? false, t.vectors = e24.vectors?.map((r) => q.fromPartial(r)) || [], t; +} }; +function Cf() { + return { refProps: [], targetCollection: "", metadata: void 0, nonRefProps: void 0, refPropsRequested: false }; +} +var yt = { encode(e24, t = N.default.Writer.create()) { + for (let r of e24.refProps) Ui.encode(r, t.uint32(18).fork()).ldelim(); + return e24.targetCollection !== "" && t.uint32(26).string(e24.targetCollection), e24.metadata !== void 0 && ht.encode(e24.metadata, t.uint32(34).fork()).ldelim(), e24.nonRefProps !== void 0 && ge.encode(e24.nonRefProps, t.uint32(90).fork()).ldelim(), e24.refPropsRequested !== false && t.uint32(96).bool(e24.refPropsRequested), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Cf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 2: + if (n !== 18) break; + i.refProps.push(Ui.decode(r, r.uint32())); + continue; + case 3: + if (n !== 26) break; + i.targetCollection = r.string(); + continue; + case 4: + if (n !== 34) break; + i.metadata = ht.decode(r, r.uint32()); + continue; + case 11: + if (n !== 90) break; + i.nonRefProps = ge.decode(r, r.uint32()); + continue; + case 12: + if (n !== 96) break; + i.refPropsRequested = r.bool(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { refProps: globalThis.Array.isArray(e24?.refProps) ? e24.refProps.map((t) => Ui.fromJSON(t)) : [], targetCollection: v(e24.targetCollection) ? globalThis.String(e24.targetCollection) : "", metadata: v(e24.metadata) ? ht.fromJSON(e24.metadata) : void 0, nonRefProps: v(e24.nonRefProps) ? ge.fromJSON(e24.nonRefProps) : void 0, refPropsRequested: v(e24.refPropsRequested) ? globalThis.Boolean(e24.refPropsRequested) : false }; +}, toJSON(e24) { + let t = {}; + return e24.refProps?.length && (t.refProps = e24.refProps.map((r) => Ui.toJSON(r))), e24.targetCollection !== "" && (t.targetCollection = e24.targetCollection), e24.metadata !== void 0 && (t.metadata = ht.toJSON(e24.metadata)), e24.nonRefProps !== void 0 && (t.nonRefProps = ge.toJSON(e24.nonRefProps)), e24.refPropsRequested !== false && (t.refPropsRequested = e24.refPropsRequested), t; +}, create(e24) { + return yt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Cf(); + return t.refProps = e24.refProps?.map((r) => Ui.fromPartial(r)) || [], t.targetCollection = e24.targetCollection ?? "", t.metadata = e24.metadata !== void 0 && e24.metadata !== null ? ht.fromPartial(e24.metadata) : void 0, t.nonRefProps = e24.nonRefProps !== void 0 && e24.nonRefProps !== null ? ge.fromPartial(e24.nonRefProps) : void 0, t.refPropsRequested = e24.refPropsRequested ?? false, t; +} }; +function Pf() { + return { properties: [], propName: "" }; +} +var Ui = { encode(e24, t = N.default.Writer.create()) { + for (let r of e24.properties) yt.encode(r, t.uint32(10).fork()).ldelim(); + return e24.propName !== "" && t.uint32(18).string(e24.propName), t; +}, decode(e24, t) { + let r = e24 instanceof N.default.Reader ? e24 : N.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Pf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.properties.push(yt.decode(r, r.uint32())); + continue; + case 2: + if (n !== 18) break; + i.propName = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { properties: globalThis.Array.isArray(e24?.properties) ? e24.properties.map((t) => yt.fromJSON(t)) : [], propName: v(e24.propName) ? globalThis.String(e24.propName) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.properties?.length && (t.properties = e24.properties.map((r) => yt.toJSON(r))), e24.propName !== "" && (t.propName = e24.propName), t; +}, create(e24) { + return Ui.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Pf(); + return t.properties = e24.properties?.map((r) => yt.fromPartial(r)) || [], t.propName = e24.propName ?? "", t; +} }; +function Rf(e24) { + if (globalThis.Buffer) return Uint8Array.from(globalThis.Buffer.from(e24, "base64")); + { + let t = globalThis.atob(e24), r = new Uint8Array(t.length); + for (let a = 0; a < t.length; ++a) r[a] = t.charCodeAt(a); + return r; + } +} +function Af(e24) { + if (globalThis.Buffer) return globalThis.Buffer.from(e24).toString("base64"); + { + let t = []; + return e24.forEach((r) => { + t.push(globalThis.String.fromCharCode(r)); + }), globalThis.btoa(t.join("")); + } +} +function vs(e24) { + if (e24.gt(globalThis.Number.MAX_SAFE_INTEGER)) throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + return e24.toNumber(); +} +N.default.util.Long !== long_default && (N.default.util.Long = long_default, N.default.configure()); +function Nf(e24) { + return typeof e24 == "object" && e24 !== null; +} +function v(e24) { + return e24 != null; +} +d(); +var R = ze(Ke()); +function Of() { + return { collection: "", tenant: "", objectsCount: false, aggregations: [], objectLimit: void 0, groupBy: void 0, limit: void 0, filters: void 0, hybrid: void 0, nearVector: void 0, nearObject: void 0, nearText: void 0, nearImage: void 0, nearAudio: void 0, nearVideo: void 0, nearDepth: void 0, nearThermal: void 0, nearImu: void 0 }; +} +var ke = { encode(e24, t = R.default.Writer.create()) { + e24.collection !== "" && t.uint32(10).string(e24.collection), e24.tenant !== "" && t.uint32(82).string(e24.tenant), e24.objectsCount !== false && t.uint32(160).bool(e24.objectsCount); + for (let r of e24.aggregations) dr.encode(r, t.uint32(170).fork()).ldelim(); + return e24.objectLimit !== void 0 && t.uint32(240).uint32(e24.objectLimit), e24.groupBy !== void 0 && mr.encode(e24.groupBy, t.uint32(250).fork()).ldelim(), e24.limit !== void 0 && t.uint32(256).uint32(e24.limit), e24.filters !== void 0 && H.encode(e24.filters, t.uint32(322).fork()).ldelim(), e24.hybrid !== void 0 && ve.encode(e24.hybrid, t.uint32(330).fork()).ldelim(), e24.nearVector !== void 0 && te.encode(e24.nearVector, t.uint32(338).fork()).ldelim(), e24.nearObject !== void 0 && be.encode(e24.nearObject, t.uint32(346).fork()).ldelim(), e24.nearText !== void 0 && ae.encode(e24.nearText, t.uint32(354).fork()).ldelim(), e24.nearImage !== void 0 && xe.encode(e24.nearImage, t.uint32(362).fork()).ldelim(), e24.nearAudio !== void 0 && Ce.encode(e24.nearAudio, t.uint32(370).fork()).ldelim(), e24.nearVideo !== void 0 && Pe.encode(e24.nearVideo, t.uint32(378).fork()).ldelim(), e24.nearDepth !== void 0 && Re.encode(e24.nearDepth, t.uint32(386).fork()).ldelim(), e24.nearThermal !== void 0 && Ae.encode(e24.nearThermal, t.uint32(394).fork()).ldelim(), e24.nearImu !== void 0 && Ne.encode(e24.nearImu, t.uint32(402).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Of(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.collection = r.string(); + continue; + case 10: + if (n !== 82) break; + i.tenant = r.string(); + continue; + case 20: + if (n !== 160) break; + i.objectsCount = r.bool(); + continue; + case 21: + if (n !== 170) break; + i.aggregations.push(dr.decode(r, r.uint32())); + continue; + case 30: + if (n !== 240) break; + i.objectLimit = r.uint32(); + continue; + case 31: + if (n !== 250) break; + i.groupBy = mr.decode(r, r.uint32()); + continue; + case 32: + if (n !== 256) break; + i.limit = r.uint32(); + continue; + case 40: + if (n !== 322) break; + i.filters = H.decode(r, r.uint32()); + continue; + case 41: + if (n !== 330) break; + i.hybrid = ve.decode(r, r.uint32()); + continue; + case 42: + if (n !== 338) break; + i.nearVector = te.decode(r, r.uint32()); + continue; + case 43: + if (n !== 346) break; + i.nearObject = be.decode(r, r.uint32()); + continue; + case 44: + if (n !== 354) break; + i.nearText = ae.decode(r, r.uint32()); + continue; + case 45: + if (n !== 362) break; + i.nearImage = xe.decode(r, r.uint32()); + continue; + case 46: + if (n !== 370) break; + i.nearAudio = Ce.decode(r, r.uint32()); + continue; + case 47: + if (n !== 378) break; + i.nearVideo = Pe.decode(r, r.uint32()); + continue; + case 48: + if (n !== 386) break; + i.nearDepth = Re.decode(r, r.uint32()); + continue; + case 49: + if (n !== 394) break; + i.nearThermal = Ae.decode(r, r.uint32()); + continue; + case 50: + if (n !== 402) break; + i.nearImu = Ne.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { collection: T(e24.collection) ? globalThis.String(e24.collection) : "", tenant: T(e24.tenant) ? globalThis.String(e24.tenant) : "", objectsCount: T(e24.objectsCount) ? globalThis.Boolean(e24.objectsCount) : false, aggregations: globalThis.Array.isArray(e24?.aggregations) ? e24.aggregations.map((t) => dr.fromJSON(t)) : [], objectLimit: T(e24.objectLimit) ? globalThis.Number(e24.objectLimit) : void 0, groupBy: T(e24.groupBy) ? mr.fromJSON(e24.groupBy) : void 0, limit: T(e24.limit) ? globalThis.Number(e24.limit) : void 0, filters: T(e24.filters) ? H.fromJSON(e24.filters) : void 0, hybrid: T(e24.hybrid) ? ve.fromJSON(e24.hybrid) : void 0, nearVector: T(e24.nearVector) ? te.fromJSON(e24.nearVector) : void 0, nearObject: T(e24.nearObject) ? be.fromJSON(e24.nearObject) : void 0, nearText: T(e24.nearText) ? ae.fromJSON(e24.nearText) : void 0, nearImage: T(e24.nearImage) ? xe.fromJSON(e24.nearImage) : void 0, nearAudio: T(e24.nearAudio) ? Ce.fromJSON(e24.nearAudio) : void 0, nearVideo: T(e24.nearVideo) ? Pe.fromJSON(e24.nearVideo) : void 0, nearDepth: T(e24.nearDepth) ? Re.fromJSON(e24.nearDepth) : void 0, nearThermal: T(e24.nearThermal) ? Ae.fromJSON(e24.nearThermal) : void 0, nearImu: T(e24.nearImu) ? Ne.fromJSON(e24.nearImu) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.collection !== "" && (t.collection = e24.collection), e24.tenant !== "" && (t.tenant = e24.tenant), e24.objectsCount !== false && (t.objectsCount = e24.objectsCount), e24.aggregations?.length && (t.aggregations = e24.aggregations.map((r) => dr.toJSON(r))), e24.objectLimit !== void 0 && (t.objectLimit = Math.round(e24.objectLimit)), e24.groupBy !== void 0 && (t.groupBy = mr.toJSON(e24.groupBy)), e24.limit !== void 0 && (t.limit = Math.round(e24.limit)), e24.filters !== void 0 && (t.filters = H.toJSON(e24.filters)), e24.hybrid !== void 0 && (t.hybrid = ve.toJSON(e24.hybrid)), e24.nearVector !== void 0 && (t.nearVector = te.toJSON(e24.nearVector)), e24.nearObject !== void 0 && (t.nearObject = be.toJSON(e24.nearObject)), e24.nearText !== void 0 && (t.nearText = ae.toJSON(e24.nearText)), e24.nearImage !== void 0 && (t.nearImage = xe.toJSON(e24.nearImage)), e24.nearAudio !== void 0 && (t.nearAudio = Ce.toJSON(e24.nearAudio)), e24.nearVideo !== void 0 && (t.nearVideo = Pe.toJSON(e24.nearVideo)), e24.nearDepth !== void 0 && (t.nearDepth = Re.toJSON(e24.nearDepth)), e24.nearThermal !== void 0 && (t.nearThermal = Ae.toJSON(e24.nearThermal)), e24.nearImu !== void 0 && (t.nearImu = Ne.toJSON(e24.nearImu)), t; +}, create(e24) { + return ke.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Of(); + return t.collection = e24.collection ?? "", t.tenant = e24.tenant ?? "", t.objectsCount = e24.objectsCount ?? false, t.aggregations = e24.aggregations?.map((r) => dr.fromPartial(r)) || [], t.objectLimit = e24.objectLimit ?? void 0, t.groupBy = e24.groupBy !== void 0 && e24.groupBy !== null ? mr.fromPartial(e24.groupBy) : void 0, t.limit = e24.limit ?? void 0, t.filters = e24.filters !== void 0 && e24.filters !== null ? H.fromPartial(e24.filters) : void 0, t.hybrid = e24.hybrid !== void 0 && e24.hybrid !== null ? ve.fromPartial(e24.hybrid) : void 0, t.nearVector = e24.nearVector !== void 0 && e24.nearVector !== null ? te.fromPartial(e24.nearVector) : void 0, t.nearObject = e24.nearObject !== void 0 && e24.nearObject !== null ? be.fromPartial(e24.nearObject) : void 0, t.nearText = e24.nearText !== void 0 && e24.nearText !== null ? ae.fromPartial(e24.nearText) : void 0, t.nearImage = e24.nearImage !== void 0 && e24.nearImage !== null ? xe.fromPartial(e24.nearImage) : void 0, t.nearAudio = e24.nearAudio !== void 0 && e24.nearAudio !== null ? Ce.fromPartial(e24.nearAudio) : void 0, t.nearVideo = e24.nearVideo !== void 0 && e24.nearVideo !== null ? Pe.fromPartial(e24.nearVideo) : void 0, t.nearDepth = e24.nearDepth !== void 0 && e24.nearDepth !== null ? Re.fromPartial(e24.nearDepth) : void 0, t.nearThermal = e24.nearThermal !== void 0 && e24.nearThermal !== null ? Ae.fromPartial(e24.nearThermal) : void 0, t.nearImu = e24.nearImu !== void 0 && e24.nearImu !== null ? Ne.fromPartial(e24.nearImu) : void 0, t; +} }; +function Sf() { + return { property: "", int: void 0, number: void 0, text: void 0, boolean: void 0, date: void 0, reference: void 0 }; +} +var dr = { encode(e24, t = R.default.Writer.create()) { + return e24.property !== "" && t.uint32(10).string(e24.property), e24.int !== void 0 && cr.encode(e24.int, t.uint32(18).fork()).ldelim(), e24.number !== void 0 && lr.encode(e24.number, t.uint32(26).fork()).ldelim(), e24.text !== void 0 && fr.encode(e24.text, t.uint32(34).fork()).ldelim(), e24.boolean !== void 0 && pr.encode(e24.boolean, t.uint32(42).fork()).ldelim(), e24.date !== void 0 && gr.encode(e24.date, t.uint32(50).fork()).ldelim(), e24.reference !== void 0 && Di.encode(e24.reference, t.uint32(58).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Sf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.property = r.string(); + continue; + case 2: + if (n !== 18) break; + i.int = cr.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.number = lr.decode(r, r.uint32()); + continue; + case 4: + if (n !== 34) break; + i.text = fr.decode(r, r.uint32()); + continue; + case 5: + if (n !== 42) break; + i.boolean = pr.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.date = gr.decode(r, r.uint32()); + continue; + case 7: + if (n !== 58) break; + i.reference = Di.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { property: T(e24.property) ? globalThis.String(e24.property) : "", int: T(e24.int) ? cr.fromJSON(e24.int) : void 0, number: T(e24.number) ? lr.fromJSON(e24.number) : void 0, text: T(e24.text) ? fr.fromJSON(e24.text) : void 0, boolean: T(e24.boolean) ? pr.fromJSON(e24.boolean) : void 0, date: T(e24.date) ? gr.fromJSON(e24.date) : void 0, reference: T(e24.reference) ? Di.fromJSON(e24.reference) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.property !== "" && (t.property = e24.property), e24.int !== void 0 && (t.int = cr.toJSON(e24.int)), e24.number !== void 0 && (t.number = lr.toJSON(e24.number)), e24.text !== void 0 && (t.text = fr.toJSON(e24.text)), e24.boolean !== void 0 && (t.boolean = pr.toJSON(e24.boolean)), e24.date !== void 0 && (t.date = gr.toJSON(e24.date)), e24.reference !== void 0 && (t.reference = Di.toJSON(e24.reference)), t; +}, create(e24) { + return dr.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Sf(); + return t.property = e24.property ?? "", t.int = e24.int !== void 0 && e24.int !== null ? cr.fromPartial(e24.int) : void 0, t.number = e24.number !== void 0 && e24.number !== null ? lr.fromPartial(e24.number) : void 0, t.text = e24.text !== void 0 && e24.text !== null ? fr.fromPartial(e24.text) : void 0, t.boolean = e24.boolean !== void 0 && e24.boolean !== null ? pr.fromPartial(e24.boolean) : void 0, t.date = e24.date !== void 0 && e24.date !== null ? gr.fromPartial(e24.date) : void 0, t.reference = e24.reference !== void 0 && e24.reference !== null ? Di.fromPartial(e24.reference) : void 0, t; +} }; +function kf() { + return { count: false, type: false, sum: false, mean: false, mode: false, median: false, maximum: false, minimum: false }; +} +var cr = { encode(e24, t = R.default.Writer.create()) { + return e24.count !== false && t.uint32(8).bool(e24.count), e24.type !== false && t.uint32(16).bool(e24.type), e24.sum !== false && t.uint32(24).bool(e24.sum), e24.mean !== false && t.uint32(32).bool(e24.mean), e24.mode !== false && t.uint32(40).bool(e24.mode), e24.median !== false && t.uint32(48).bool(e24.median), e24.maximum !== false && t.uint32(56).bool(e24.maximum), e24.minimum !== false && t.uint32(64).bool(e24.minimum), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = kf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.count = r.bool(); + continue; + case 2: + if (n !== 16) break; + i.type = r.bool(); + continue; + case 3: + if (n !== 24) break; + i.sum = r.bool(); + continue; + case 4: + if (n !== 32) break; + i.mean = r.bool(); + continue; + case 5: + if (n !== 40) break; + i.mode = r.bool(); + continue; + case 6: + if (n !== 48) break; + i.median = r.bool(); + continue; + case 7: + if (n !== 56) break; + i.maximum = r.bool(); + continue; + case 8: + if (n !== 64) break; + i.minimum = r.bool(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { count: T(e24.count) ? globalThis.Boolean(e24.count) : false, type: T(e24.type) ? globalThis.Boolean(e24.type) : false, sum: T(e24.sum) ? globalThis.Boolean(e24.sum) : false, mean: T(e24.mean) ? globalThis.Boolean(e24.mean) : false, mode: T(e24.mode) ? globalThis.Boolean(e24.mode) : false, median: T(e24.median) ? globalThis.Boolean(e24.median) : false, maximum: T(e24.maximum) ? globalThis.Boolean(e24.maximum) : false, minimum: T(e24.minimum) ? globalThis.Boolean(e24.minimum) : false }; +}, toJSON(e24) { + let t = {}; + return e24.count !== false && (t.count = e24.count), e24.type !== false && (t.type = e24.type), e24.sum !== false && (t.sum = e24.sum), e24.mean !== false && (t.mean = e24.mean), e24.mode !== false && (t.mode = e24.mode), e24.median !== false && (t.median = e24.median), e24.maximum !== false && (t.maximum = e24.maximum), e24.minimum !== false && (t.minimum = e24.minimum), t; +}, create(e24) { + return cr.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = kf(); + return t.count = e24.count ?? false, t.type = e24.type ?? false, t.sum = e24.sum ?? false, t.mean = e24.mean ?? false, t.mode = e24.mode ?? false, t.median = e24.median ?? false, t.maximum = e24.maximum ?? false, t.minimum = e24.minimum ?? false, t; +} }; +function If() { + return { count: false, type: false, sum: false, mean: false, mode: false, median: false, maximum: false, minimum: false }; +} +var lr = { encode(e24, t = R.default.Writer.create()) { + return e24.count !== false && t.uint32(8).bool(e24.count), e24.type !== false && t.uint32(16).bool(e24.type), e24.sum !== false && t.uint32(24).bool(e24.sum), e24.mean !== false && t.uint32(32).bool(e24.mean), e24.mode !== false && t.uint32(40).bool(e24.mode), e24.median !== false && t.uint32(48).bool(e24.median), e24.maximum !== false && t.uint32(56).bool(e24.maximum), e24.minimum !== false && t.uint32(64).bool(e24.minimum), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = If(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.count = r.bool(); + continue; + case 2: + if (n !== 16) break; + i.type = r.bool(); + continue; + case 3: + if (n !== 24) break; + i.sum = r.bool(); + continue; + case 4: + if (n !== 32) break; + i.mean = r.bool(); + continue; + case 5: + if (n !== 40) break; + i.mode = r.bool(); + continue; + case 6: + if (n !== 48) break; + i.median = r.bool(); + continue; + case 7: + if (n !== 56) break; + i.maximum = r.bool(); + continue; + case 8: + if (n !== 64) break; + i.minimum = r.bool(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { count: T(e24.count) ? globalThis.Boolean(e24.count) : false, type: T(e24.type) ? globalThis.Boolean(e24.type) : false, sum: T(e24.sum) ? globalThis.Boolean(e24.sum) : false, mean: T(e24.mean) ? globalThis.Boolean(e24.mean) : false, mode: T(e24.mode) ? globalThis.Boolean(e24.mode) : false, median: T(e24.median) ? globalThis.Boolean(e24.median) : false, maximum: T(e24.maximum) ? globalThis.Boolean(e24.maximum) : false, minimum: T(e24.minimum) ? globalThis.Boolean(e24.minimum) : false }; +}, toJSON(e24) { + let t = {}; + return e24.count !== false && (t.count = e24.count), e24.type !== false && (t.type = e24.type), e24.sum !== false && (t.sum = e24.sum), e24.mean !== false && (t.mean = e24.mean), e24.mode !== false && (t.mode = e24.mode), e24.median !== false && (t.median = e24.median), e24.maximum !== false && (t.maximum = e24.maximum), e24.minimum !== false && (t.minimum = e24.minimum), t; +}, create(e24) { + return lr.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = If(); + return t.count = e24.count ?? false, t.type = e24.type ?? false, t.sum = e24.sum ?? false, t.mean = e24.mean ?? false, t.mode = e24.mode ?? false, t.median = e24.median ?? false, t.maximum = e24.maximum ?? false, t.minimum = e24.minimum ?? false, t; +} }; +function _f() { + return { count: false, type: false, topOccurences: false, topOccurencesLimit: void 0 }; +} +var fr = { encode(e24, t = R.default.Writer.create()) { + return e24.count !== false && t.uint32(8).bool(e24.count), e24.type !== false && t.uint32(16).bool(e24.type), e24.topOccurences !== false && t.uint32(24).bool(e24.topOccurences), e24.topOccurencesLimit !== void 0 && t.uint32(32).uint32(e24.topOccurencesLimit), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = _f(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.count = r.bool(); + continue; + case 2: + if (n !== 16) break; + i.type = r.bool(); + continue; + case 3: + if (n !== 24) break; + i.topOccurences = r.bool(); + continue; + case 4: + if (n !== 32) break; + i.topOccurencesLimit = r.uint32(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { count: T(e24.count) ? globalThis.Boolean(e24.count) : false, type: T(e24.type) ? globalThis.Boolean(e24.type) : false, topOccurences: T(e24.topOccurences) ? globalThis.Boolean(e24.topOccurences) : false, topOccurencesLimit: T(e24.topOccurencesLimit) ? globalThis.Number(e24.topOccurencesLimit) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.count !== false && (t.count = e24.count), e24.type !== false && (t.type = e24.type), e24.topOccurences !== false && (t.topOccurences = e24.topOccurences), e24.topOccurencesLimit !== void 0 && (t.topOccurencesLimit = Math.round(e24.topOccurencesLimit)), t; +}, create(e24) { + return fr.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = _f(); + return t.count = e24.count ?? false, t.type = e24.type ?? false, t.topOccurences = e24.topOccurences ?? false, t.topOccurencesLimit = e24.topOccurencesLimit ?? void 0, t; +} }; +function Bf() { + return { count: false, type: false, totalTrue: false, totalFalse: false, percentageTrue: false, percentageFalse: false }; +} +var pr = { encode(e24, t = R.default.Writer.create()) { + return e24.count !== false && t.uint32(8).bool(e24.count), e24.type !== false && t.uint32(16).bool(e24.type), e24.totalTrue !== false && t.uint32(24).bool(e24.totalTrue), e24.totalFalse !== false && t.uint32(32).bool(e24.totalFalse), e24.percentageTrue !== false && t.uint32(40).bool(e24.percentageTrue), e24.percentageFalse !== false && t.uint32(48).bool(e24.percentageFalse), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Bf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.count = r.bool(); + continue; + case 2: + if (n !== 16) break; + i.type = r.bool(); + continue; + case 3: + if (n !== 24) break; + i.totalTrue = r.bool(); + continue; + case 4: + if (n !== 32) break; + i.totalFalse = r.bool(); + continue; + case 5: + if (n !== 40) break; + i.percentageTrue = r.bool(); + continue; + case 6: + if (n !== 48) break; + i.percentageFalse = r.bool(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { count: T(e24.count) ? globalThis.Boolean(e24.count) : false, type: T(e24.type) ? globalThis.Boolean(e24.type) : false, totalTrue: T(e24.totalTrue) ? globalThis.Boolean(e24.totalTrue) : false, totalFalse: T(e24.totalFalse) ? globalThis.Boolean(e24.totalFalse) : false, percentageTrue: T(e24.percentageTrue) ? globalThis.Boolean(e24.percentageTrue) : false, percentageFalse: T(e24.percentageFalse) ? globalThis.Boolean(e24.percentageFalse) : false }; +}, toJSON(e24) { + let t = {}; + return e24.count !== false && (t.count = e24.count), e24.type !== false && (t.type = e24.type), e24.totalTrue !== false && (t.totalTrue = e24.totalTrue), e24.totalFalse !== false && (t.totalFalse = e24.totalFalse), e24.percentageTrue !== false && (t.percentageTrue = e24.percentageTrue), e24.percentageFalse !== false && (t.percentageFalse = e24.percentageFalse), t; +}, create(e24) { + return pr.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Bf(); + return t.count = e24.count ?? false, t.type = e24.type ?? false, t.totalTrue = e24.totalTrue ?? false, t.totalFalse = e24.totalFalse ?? false, t.percentageTrue = e24.percentageTrue ?? false, t.percentageFalse = e24.percentageFalse ?? false, t; +} }; +function Gf() { + return { count: false, type: false, median: false, mode: false, maximum: false, minimum: false }; +} +var gr = { encode(e24, t = R.default.Writer.create()) { + return e24.count !== false && t.uint32(8).bool(e24.count), e24.type !== false && t.uint32(16).bool(e24.type), e24.median !== false && t.uint32(24).bool(e24.median), e24.mode !== false && t.uint32(32).bool(e24.mode), e24.maximum !== false && t.uint32(40).bool(e24.maximum), e24.minimum !== false && t.uint32(48).bool(e24.minimum), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Gf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.count = r.bool(); + continue; + case 2: + if (n !== 16) break; + i.type = r.bool(); + continue; + case 3: + if (n !== 24) break; + i.median = r.bool(); + continue; + case 4: + if (n !== 32) break; + i.mode = r.bool(); + continue; + case 5: + if (n !== 40) break; + i.maximum = r.bool(); + continue; + case 6: + if (n !== 48) break; + i.minimum = r.bool(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { count: T(e24.count) ? globalThis.Boolean(e24.count) : false, type: T(e24.type) ? globalThis.Boolean(e24.type) : false, median: T(e24.median) ? globalThis.Boolean(e24.median) : false, mode: T(e24.mode) ? globalThis.Boolean(e24.mode) : false, maximum: T(e24.maximum) ? globalThis.Boolean(e24.maximum) : false, minimum: T(e24.minimum) ? globalThis.Boolean(e24.minimum) : false }; +}, toJSON(e24) { + let t = {}; + return e24.count !== false && (t.count = e24.count), e24.type !== false && (t.type = e24.type), e24.median !== false && (t.median = e24.median), e24.mode !== false && (t.mode = e24.mode), e24.maximum !== false && (t.maximum = e24.maximum), e24.minimum !== false && (t.minimum = e24.minimum), t; +}, create(e24) { + return gr.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Gf(); + return t.count = e24.count ?? false, t.type = e24.type ?? false, t.median = e24.median ?? false, t.mode = e24.mode ?? false, t.maximum = e24.maximum ?? false, t.minimum = e24.minimum ?? false, t; +} }; +function wf() { + return { type: false, pointingTo: false }; +} +var Di = { encode(e24, t = R.default.Writer.create()) { + return e24.type !== false && t.uint32(8).bool(e24.type), e24.pointingTo !== false && t.uint32(16).bool(e24.pointingTo), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = wf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.type = r.bool(); + continue; + case 2: + if (n !== 16) break; + i.pointingTo = r.bool(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { type: T(e24.type) ? globalThis.Boolean(e24.type) : false, pointingTo: T(e24.pointingTo) ? globalThis.Boolean(e24.pointingTo) : false }; +}, toJSON(e24) { + let t = {}; + return e24.type !== false && (t.type = e24.type), e24.pointingTo !== false && (t.pointingTo = e24.pointingTo), t; +}, create(e24) { + return Di.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = wf(); + return t.type = e24.type ?? false, t.pointingTo = e24.pointingTo ?? false, t; +} }; +function Mf() { + return { collection: "", property: "" }; +} +var mr = { encode(e24, t = R.default.Writer.create()) { + return e24.collection !== "" && t.uint32(10).string(e24.collection), e24.property !== "" && t.uint32(18).string(e24.property), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Mf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.collection = r.string(); + continue; + case 2: + if (n !== 18) break; + i.property = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { collection: T(e24.collection) ? globalThis.String(e24.collection) : "", property: T(e24.property) ? globalThis.String(e24.property) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.collection !== "" && (t.collection = e24.collection), e24.property !== "" && (t.property = e24.property), t; +}, create(e24) { + return mr.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Mf(); + return t.collection = e24.collection ?? "", t.property = e24.property ?? "", t; +} }; +function Ef() { + return { took: 0, singleResult: void 0, groupedResults: void 0 }; +} +var xs = { encode(e24, t = R.default.Writer.create()) { + return e24.took !== 0 && t.uint32(13).float(e24.took), e24.singleResult !== void 0 && Ki.encode(e24.singleResult, t.uint32(18).fork()).ldelim(), e24.groupedResults !== void 0 && Xi.encode(e24.groupedResults, t.uint32(26).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ef(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 13) break; + i.took = r.float(); + continue; + case 2: + if (n !== 18) break; + i.singleResult = Ki.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.groupedResults = Xi.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { took: T(e24.took) ? globalThis.Number(e24.took) : 0, singleResult: T(e24.singleResult) ? Ki.fromJSON(e24.singleResult) : void 0, groupedResults: T(e24.groupedResults) ? Xi.fromJSON(e24.groupedResults) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.took !== 0 && (t.took = e24.took), e24.singleResult !== void 0 && (t.singleResult = Ki.toJSON(e24.singleResult)), e24.groupedResults !== void 0 && (t.groupedResults = Xi.toJSON(e24.groupedResults)), t; +}, create(e24) { + return xs.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ef(); + return t.took = e24.took ?? 0, t.singleResult = e24.singleResult !== void 0 && e24.singleResult !== null ? Ki.fromPartial(e24.singleResult) : void 0, t.groupedResults = e24.groupedResults !== void 0 && e24.groupedResults !== null ? Xi.fromPartial(e24.groupedResults) : void 0, t; +} }; +function Uf() { + return { aggregations: [] }; +} +var Tt = { encode(e24, t = R.default.Writer.create()) { + for (let r of e24.aggregations) Fi.encode(r, t.uint32(10).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Uf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.aggregations.push(Fi.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { aggregations: globalThis.Array.isArray(e24?.aggregations) ? e24.aggregations.map((t) => Fi.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.aggregations?.length && (t.aggregations = e24.aggregations.map((r) => Fi.toJSON(r))), t; +}, create(e24) { + return Tt.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Uf(); + return t.aggregations = e24.aggregations?.map((r) => Fi.fromPartial(r)) || [], t; +} }; +function Df() { + return { property: "", int: void 0, number: void 0, text: void 0, boolean: void 0, date: void 0, reference: void 0 }; +} +var Fi = { encode(e24, t = R.default.Writer.create()) { + return e24.property !== "" && t.uint32(10).string(e24.property), e24.int !== void 0 && Wi.encode(e24.int, t.uint32(18).fork()).ldelim(), e24.number !== void 0 && qi.encode(e24.number, t.uint32(26).fork()).ldelim(), e24.text !== void 0 && Li.encode(e24.text, t.uint32(34).fork()).ldelim(), e24.boolean !== void 0 && $i.encode(e24.boolean, t.uint32(42).fork()).ldelim(), e24.date !== void 0 && Hi.encode(e24.date, t.uint32(50).fork()).ldelim(), e24.reference !== void 0 && Qi.encode(e24.reference, t.uint32(58).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Df(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.property = r.string(); + continue; + case 2: + if (n !== 18) break; + i.int = Wi.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.number = qi.decode(r, r.uint32()); + continue; + case 4: + if (n !== 34) break; + i.text = Li.decode(r, r.uint32()); + continue; + case 5: + if (n !== 42) break; + i.boolean = $i.decode(r, r.uint32()); + continue; + case 6: + if (n !== 50) break; + i.date = Hi.decode(r, r.uint32()); + continue; + case 7: + if (n !== 58) break; + i.reference = Qi.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { property: T(e24.property) ? globalThis.String(e24.property) : "", int: T(e24.int) ? Wi.fromJSON(e24.int) : void 0, number: T(e24.number) ? qi.fromJSON(e24.number) : void 0, text: T(e24.text) ? Li.fromJSON(e24.text) : void 0, boolean: T(e24.boolean) ? $i.fromJSON(e24.boolean) : void 0, date: T(e24.date) ? Hi.fromJSON(e24.date) : void 0, reference: T(e24.reference) ? Qi.fromJSON(e24.reference) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.property !== "" && (t.property = e24.property), e24.int !== void 0 && (t.int = Wi.toJSON(e24.int)), e24.number !== void 0 && (t.number = qi.toJSON(e24.number)), e24.text !== void 0 && (t.text = Li.toJSON(e24.text)), e24.boolean !== void 0 && (t.boolean = $i.toJSON(e24.boolean)), e24.date !== void 0 && (t.date = Hi.toJSON(e24.date)), e24.reference !== void 0 && (t.reference = Qi.toJSON(e24.reference)), t; +}, create(e24) { + return Fi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Df(); + return t.property = e24.property ?? "", t.int = e24.int !== void 0 && e24.int !== null ? Wi.fromPartial(e24.int) : void 0, t.number = e24.number !== void 0 && e24.number !== null ? qi.fromPartial(e24.number) : void 0, t.text = e24.text !== void 0 && e24.text !== null ? Li.fromPartial(e24.text) : void 0, t.boolean = e24.boolean !== void 0 && e24.boolean !== null ? $i.fromPartial(e24.boolean) : void 0, t.date = e24.date !== void 0 && e24.date !== null ? Hi.fromPartial(e24.date) : void 0, t.reference = e24.reference !== void 0 && e24.reference !== null ? Qi.fromPartial(e24.reference) : void 0, t; +} }; +function Ff() { + return { count: void 0, type: void 0, mean: void 0, median: void 0, mode: void 0, maximum: void 0, minimum: void 0, sum: void 0 }; +} +var Wi = { encode(e24, t = R.default.Writer.create()) { + return e24.count !== void 0 && t.uint32(8).int64(e24.count), e24.type !== void 0 && t.uint32(18).string(e24.type), e24.mean !== void 0 && t.uint32(25).double(e24.mean), e24.median !== void 0 && t.uint32(33).double(e24.median), e24.mode !== void 0 && t.uint32(40).int64(e24.mode), e24.maximum !== void 0 && t.uint32(48).int64(e24.maximum), e24.minimum !== void 0 && t.uint32(56).int64(e24.minimum), e24.sum !== void 0 && t.uint32(64).int64(e24.sum), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Ff(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.count = Se(r.int64()); + continue; + case 2: + if (n !== 18) break; + i.type = r.string(); + continue; + case 3: + if (n !== 25) break; + i.mean = r.double(); + continue; + case 4: + if (n !== 33) break; + i.median = r.double(); + continue; + case 5: + if (n !== 40) break; + i.mode = Se(r.int64()); + continue; + case 6: + if (n !== 48) break; + i.maximum = Se(r.int64()); + continue; + case 7: + if (n !== 56) break; + i.minimum = Se(r.int64()); + continue; + case 8: + if (n !== 64) break; + i.sum = Se(r.int64()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { count: T(e24.count) ? globalThis.Number(e24.count) : void 0, type: T(e24.type) ? globalThis.String(e24.type) : void 0, mean: T(e24.mean) ? globalThis.Number(e24.mean) : void 0, median: T(e24.median) ? globalThis.Number(e24.median) : void 0, mode: T(e24.mode) ? globalThis.Number(e24.mode) : void 0, maximum: T(e24.maximum) ? globalThis.Number(e24.maximum) : void 0, minimum: T(e24.minimum) ? globalThis.Number(e24.minimum) : void 0, sum: T(e24.sum) ? globalThis.Number(e24.sum) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.count !== void 0 && (t.count = Math.round(e24.count)), e24.type !== void 0 && (t.type = e24.type), e24.mean !== void 0 && (t.mean = e24.mean), e24.median !== void 0 && (t.median = e24.median), e24.mode !== void 0 && (t.mode = Math.round(e24.mode)), e24.maximum !== void 0 && (t.maximum = Math.round(e24.maximum)), e24.minimum !== void 0 && (t.minimum = Math.round(e24.minimum)), e24.sum !== void 0 && (t.sum = Math.round(e24.sum)), t; +}, create(e24) { + return Wi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Ff(); + return t.count = e24.count ?? void 0, t.type = e24.type ?? void 0, t.mean = e24.mean ?? void 0, t.median = e24.median ?? void 0, t.mode = e24.mode ?? void 0, t.maximum = e24.maximum ?? void 0, t.minimum = e24.minimum ?? void 0, t.sum = e24.sum ?? void 0, t; +} }; +function Wf() { + return { count: void 0, type: void 0, mean: void 0, median: void 0, mode: void 0, maximum: void 0, minimum: void 0, sum: void 0 }; +} +var qi = { encode(e24, t = R.default.Writer.create()) { + return e24.count !== void 0 && t.uint32(8).int64(e24.count), e24.type !== void 0 && t.uint32(18).string(e24.type), e24.mean !== void 0 && t.uint32(25).double(e24.mean), e24.median !== void 0 && t.uint32(33).double(e24.median), e24.mode !== void 0 && t.uint32(41).double(e24.mode), e24.maximum !== void 0 && t.uint32(49).double(e24.maximum), e24.minimum !== void 0 && t.uint32(57).double(e24.minimum), e24.sum !== void 0 && t.uint32(65).double(e24.sum), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Wf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.count = Se(r.int64()); + continue; + case 2: + if (n !== 18) break; + i.type = r.string(); + continue; + case 3: + if (n !== 25) break; + i.mean = r.double(); + continue; + case 4: + if (n !== 33) break; + i.median = r.double(); + continue; + case 5: + if (n !== 41) break; + i.mode = r.double(); + continue; + case 6: + if (n !== 49) break; + i.maximum = r.double(); + continue; + case 7: + if (n !== 57) break; + i.minimum = r.double(); + continue; + case 8: + if (n !== 65) break; + i.sum = r.double(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { count: T(e24.count) ? globalThis.Number(e24.count) : void 0, type: T(e24.type) ? globalThis.String(e24.type) : void 0, mean: T(e24.mean) ? globalThis.Number(e24.mean) : void 0, median: T(e24.median) ? globalThis.Number(e24.median) : void 0, mode: T(e24.mode) ? globalThis.Number(e24.mode) : void 0, maximum: T(e24.maximum) ? globalThis.Number(e24.maximum) : void 0, minimum: T(e24.minimum) ? globalThis.Number(e24.minimum) : void 0, sum: T(e24.sum) ? globalThis.Number(e24.sum) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.count !== void 0 && (t.count = Math.round(e24.count)), e24.type !== void 0 && (t.type = e24.type), e24.mean !== void 0 && (t.mean = e24.mean), e24.median !== void 0 && (t.median = e24.median), e24.mode !== void 0 && (t.mode = e24.mode), e24.maximum !== void 0 && (t.maximum = e24.maximum), e24.minimum !== void 0 && (t.minimum = e24.minimum), e24.sum !== void 0 && (t.sum = e24.sum), t; +}, create(e24) { + return qi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Wf(); + return t.count = e24.count ?? void 0, t.type = e24.type ?? void 0, t.mean = e24.mean ?? void 0, t.median = e24.median ?? void 0, t.mode = e24.mode ?? void 0, t.maximum = e24.maximum ?? void 0, t.minimum = e24.minimum ?? void 0, t.sum = e24.sum ?? void 0, t; +} }; +function qf() { + return { count: void 0, type: void 0, topOccurences: void 0 }; +} +var Li = { encode(e24, t = R.default.Writer.create()) { + return e24.count !== void 0 && t.uint32(8).int64(e24.count), e24.type !== void 0 && t.uint32(18).string(e24.type), e24.topOccurences !== void 0 && Ji.encode(e24.topOccurences, t.uint32(26).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = qf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.count = Se(r.int64()); + continue; + case 2: + if (n !== 18) break; + i.type = r.string(); + continue; + case 3: + if (n !== 26) break; + i.topOccurences = Ji.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { count: T(e24.count) ? globalThis.Number(e24.count) : void 0, type: T(e24.type) ? globalThis.String(e24.type) : void 0, topOccurences: T(e24.topOccurences) ? Ji.fromJSON(e24.topOccurences) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.count !== void 0 && (t.count = Math.round(e24.count)), e24.type !== void 0 && (t.type = e24.type), e24.topOccurences !== void 0 && (t.topOccurences = Ji.toJSON(e24.topOccurences)), t; +}, create(e24) { + return Li.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = qf(); + return t.count = e24.count ?? void 0, t.type = e24.type ?? void 0, t.topOccurences = e24.topOccurences !== void 0 && e24.topOccurences !== null ? Ji.fromPartial(e24.topOccurences) : void 0, t; +} }; +function Lf() { + return { items: [] }; +} +var Ji = { encode(e24, t = R.default.Writer.create()) { + for (let r of e24.items) zi.encode(r, t.uint32(10).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Lf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.items.push(zi.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { items: globalThis.Array.isArray(e24?.items) ? e24.items.map((t) => zi.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.items?.length && (t.items = e24.items.map((r) => zi.toJSON(r))), t; +}, create(e24) { + return Ji.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Lf(); + return t.items = e24.items?.map((r) => zi.fromPartial(r)) || [], t; +} }; +function Jf() { + return { value: "", occurs: 0 }; +} +var zi = { encode(e24, t = R.default.Writer.create()) { + return e24.value !== "" && t.uint32(10).string(e24.value), e24.occurs !== 0 && t.uint32(16).int64(e24.occurs), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Jf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.value = r.string(); + continue; + case 2: + if (n !== 16) break; + i.occurs = Se(r.int64()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { value: T(e24.value) ? globalThis.String(e24.value) : "", occurs: T(e24.occurs) ? globalThis.Number(e24.occurs) : 0 }; +}, toJSON(e24) { + let t = {}; + return e24.value !== "" && (t.value = e24.value), e24.occurs !== 0 && (t.occurs = Math.round(e24.occurs)), t; +}, create(e24) { + return zi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Jf(); + return t.value = e24.value ?? "", t.occurs = e24.occurs ?? 0, t; +} }; +function zf() { + return { count: void 0, type: void 0, totalTrue: void 0, totalFalse: void 0, percentageTrue: void 0, percentageFalse: void 0 }; +} +var $i = { encode(e24, t = R.default.Writer.create()) { + return e24.count !== void 0 && t.uint32(8).int64(e24.count), e24.type !== void 0 && t.uint32(18).string(e24.type), e24.totalTrue !== void 0 && t.uint32(24).int64(e24.totalTrue), e24.totalFalse !== void 0 && t.uint32(32).int64(e24.totalFalse), e24.percentageTrue !== void 0 && t.uint32(41).double(e24.percentageTrue), e24.percentageFalse !== void 0 && t.uint32(49).double(e24.percentageFalse), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = zf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.count = Se(r.int64()); + continue; + case 2: + if (n !== 18) break; + i.type = r.string(); + continue; + case 3: + if (n !== 24) break; + i.totalTrue = Se(r.int64()); + continue; + case 4: + if (n !== 32) break; + i.totalFalse = Se(r.int64()); + continue; + case 5: + if (n !== 41) break; + i.percentageTrue = r.double(); + continue; + case 6: + if (n !== 49) break; + i.percentageFalse = r.double(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { count: T(e24.count) ? globalThis.Number(e24.count) : void 0, type: T(e24.type) ? globalThis.String(e24.type) : void 0, totalTrue: T(e24.totalTrue) ? globalThis.Number(e24.totalTrue) : void 0, totalFalse: T(e24.totalFalse) ? globalThis.Number(e24.totalFalse) : void 0, percentageTrue: T(e24.percentageTrue) ? globalThis.Number(e24.percentageTrue) : void 0, percentageFalse: T(e24.percentageFalse) ? globalThis.Number(e24.percentageFalse) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.count !== void 0 && (t.count = Math.round(e24.count)), e24.type !== void 0 && (t.type = e24.type), e24.totalTrue !== void 0 && (t.totalTrue = Math.round(e24.totalTrue)), e24.totalFalse !== void 0 && (t.totalFalse = Math.round(e24.totalFalse)), e24.percentageTrue !== void 0 && (t.percentageTrue = e24.percentageTrue), e24.percentageFalse !== void 0 && (t.percentageFalse = e24.percentageFalse), t; +}, create(e24) { + return $i.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = zf(); + return t.count = e24.count ?? void 0, t.type = e24.type ?? void 0, t.totalTrue = e24.totalTrue ?? void 0, t.totalFalse = e24.totalFalse ?? void 0, t.percentageTrue = e24.percentageTrue ?? void 0, t.percentageFalse = e24.percentageFalse ?? void 0, t; +} }; +function $f() { + return { count: void 0, type: void 0, median: void 0, mode: void 0, maximum: void 0, minimum: void 0 }; +} +var Hi = { encode(e24, t = R.default.Writer.create()) { + return e24.count !== void 0 && t.uint32(8).int64(e24.count), e24.type !== void 0 && t.uint32(18).string(e24.type), e24.median !== void 0 && t.uint32(26).string(e24.median), e24.mode !== void 0 && t.uint32(34).string(e24.mode), e24.maximum !== void 0 && t.uint32(42).string(e24.maximum), e24.minimum !== void 0 && t.uint32(50).string(e24.minimum), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = $f(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.count = Se(r.int64()); + continue; + case 2: + if (n !== 18) break; + i.type = r.string(); + continue; + case 3: + if (n !== 26) break; + i.median = r.string(); + continue; + case 4: + if (n !== 34) break; + i.mode = r.string(); + continue; + case 5: + if (n !== 42) break; + i.maximum = r.string(); + continue; + case 6: + if (n !== 50) break; + i.minimum = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { count: T(e24.count) ? globalThis.Number(e24.count) : void 0, type: T(e24.type) ? globalThis.String(e24.type) : void 0, median: T(e24.median) ? globalThis.String(e24.median) : void 0, mode: T(e24.mode) ? globalThis.String(e24.mode) : void 0, maximum: T(e24.maximum) ? globalThis.String(e24.maximum) : void 0, minimum: T(e24.minimum) ? globalThis.String(e24.minimum) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.count !== void 0 && (t.count = Math.round(e24.count)), e24.type !== void 0 && (t.type = e24.type), e24.median !== void 0 && (t.median = e24.median), e24.mode !== void 0 && (t.mode = e24.mode), e24.maximum !== void 0 && (t.maximum = e24.maximum), e24.minimum !== void 0 && (t.minimum = e24.minimum), t; +}, create(e24) { + return Hi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = $f(); + return t.count = e24.count ?? void 0, t.type = e24.type ?? void 0, t.median = e24.median ?? void 0, t.mode = e24.mode ?? void 0, t.maximum = e24.maximum ?? void 0, t.minimum = e24.minimum ?? void 0, t; +} }; +function Hf() { + return { type: void 0, pointingTo: [] }; +} +var Qi = { encode(e24, t = R.default.Writer.create()) { + e24.type !== void 0 && t.uint32(10).string(e24.type); + for (let r of e24.pointingTo) t.uint32(18).string(r); + return t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Hf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.type = r.string(); + continue; + case 2: + if (n !== 18) break; + i.pointingTo.push(r.string()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { type: T(e24.type) ? globalThis.String(e24.type) : void 0, pointingTo: globalThis.Array.isArray(e24?.pointingTo) ? e24.pointingTo.map((t) => globalThis.String(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.type !== void 0 && (t.type = e24.type), e24.pointingTo?.length && (t.pointingTo = e24.pointingTo), t; +}, create(e24) { + return Qi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Hf(); + return t.type = e24.type ?? void 0, t.pointingTo = e24.pointingTo?.map((r) => r) || [], t; +} }; +function Qf() { + return { objectsCount: void 0, aggregations: void 0 }; +} +var Ki = { encode(e24, t = R.default.Writer.create()) { + return e24.objectsCount !== void 0 && t.uint32(8).int64(e24.objectsCount), e24.aggregations !== void 0 && Tt.encode(e24.aggregations, t.uint32(18).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Qf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.objectsCount = Se(r.int64()); + continue; + case 2: + if (n !== 18) break; + i.aggregations = Tt.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { objectsCount: T(e24.objectsCount) ? globalThis.Number(e24.objectsCount) : void 0, aggregations: T(e24.aggregations) ? Tt.fromJSON(e24.aggregations) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.objectsCount !== void 0 && (t.objectsCount = Math.round(e24.objectsCount)), e24.aggregations !== void 0 && (t.aggregations = Tt.toJSON(e24.aggregations)), t; +}, create(e24) { + return Ki.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Qf(); + return t.objectsCount = e24.objectsCount ?? void 0, t.aggregations = e24.aggregations !== void 0 && e24.aggregations !== null ? Tt.fromPartial(e24.aggregations) : void 0, t; +} }; +function Kf() { + return { objectsCount: void 0, aggregations: void 0, groupedBy: void 0 }; +} +var Yi = { encode(e24, t = R.default.Writer.create()) { + return e24.objectsCount !== void 0 && t.uint32(8).int64(e24.objectsCount), e24.aggregations !== void 0 && Tt.encode(e24.aggregations, t.uint32(18).fork()).ldelim(), e24.groupedBy !== void 0 && Zi.encode(e24.groupedBy, t.uint32(26).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Kf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.objectsCount = Se(r.int64()); + continue; + case 2: + if (n !== 18) break; + i.aggregations = Tt.decode(r, r.uint32()); + continue; + case 3: + if (n !== 26) break; + i.groupedBy = Zi.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { objectsCount: T(e24.objectsCount) ? globalThis.Number(e24.objectsCount) : void 0, aggregations: T(e24.aggregations) ? Tt.fromJSON(e24.aggregations) : void 0, groupedBy: T(e24.groupedBy) ? Zi.fromJSON(e24.groupedBy) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.objectsCount !== void 0 && (t.objectsCount = Math.round(e24.objectsCount)), e24.aggregations !== void 0 && (t.aggregations = Tt.toJSON(e24.aggregations)), e24.groupedBy !== void 0 && (t.groupedBy = Zi.toJSON(e24.groupedBy)), t; +}, create(e24) { + return Yi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Kf(); + return t.objectsCount = e24.objectsCount ?? void 0, t.aggregations = e24.aggregations !== void 0 && e24.aggregations !== null ? Tt.fromPartial(e24.aggregations) : void 0, t.groupedBy = e24.groupedBy !== void 0 && e24.groupedBy !== null ? Zi.fromPartial(e24.groupedBy) : void 0, t; +} }; +function Yf() { + return { path: [], text: void 0, int: void 0, boolean: void 0, number: void 0, texts: void 0, ints: void 0, booleans: void 0, numbers: void 0, geo: void 0 }; +} +var Zi = { encode(e24, t = R.default.Writer.create()) { + for (let r of e24.path) t.uint32(10).string(r); + return e24.text !== void 0 && t.uint32(18).string(e24.text), e24.int !== void 0 && t.uint32(24).int64(e24.int), e24.boolean !== void 0 && t.uint32(32).bool(e24.boolean), e24.number !== void 0 && t.uint32(41).double(e24.number), e24.texts !== void 0 && m.encode(e24.texts, t.uint32(50).fork()).ldelim(), e24.ints !== void 0 && rt.encode(e24.ints, t.uint32(58).fork()).ldelim(), e24.booleans !== void 0 && it.encode(e24.booleans, t.uint32(66).fork()).ldelim(), e24.numbers !== void 0 && nt.encode(e24.numbers, t.uint32(74).fork()).ldelim(), e24.geo !== void 0 && at.encode(e24.geo, t.uint32(82).fork()).ldelim(), t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Yf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.path.push(r.string()); + continue; + case 2: + if (n !== 18) break; + i.text = r.string(); + continue; + case 3: + if (n !== 24) break; + i.int = Se(r.int64()); + continue; + case 4: + if (n !== 32) break; + i.boolean = r.bool(); + continue; + case 5: + if (n !== 41) break; + i.number = r.double(); + continue; + case 6: + if (n !== 50) break; + i.texts = m.decode(r, r.uint32()); + continue; + case 7: + if (n !== 58) break; + i.ints = rt.decode(r, r.uint32()); + continue; + case 8: + if (n !== 66) break; + i.booleans = it.decode(r, r.uint32()); + continue; + case 9: + if (n !== 74) break; + i.numbers = nt.decode(r, r.uint32()); + continue; + case 10: + if (n !== 82) break; + i.geo = at.decode(r, r.uint32()); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { path: globalThis.Array.isArray(e24?.path) ? e24.path.map((t) => globalThis.String(t)) : [], text: T(e24.text) ? globalThis.String(e24.text) : void 0, int: T(e24.int) ? globalThis.Number(e24.int) : void 0, boolean: T(e24.boolean) ? globalThis.Boolean(e24.boolean) : void 0, number: T(e24.number) ? globalThis.Number(e24.number) : void 0, texts: T(e24.texts) ? m.fromJSON(e24.texts) : void 0, ints: T(e24.ints) ? rt.fromJSON(e24.ints) : void 0, booleans: T(e24.booleans) ? it.fromJSON(e24.booleans) : void 0, numbers: T(e24.numbers) ? nt.fromJSON(e24.numbers) : void 0, geo: T(e24.geo) ? at.fromJSON(e24.geo) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.path?.length && (t.path = e24.path), e24.text !== void 0 && (t.text = e24.text), e24.int !== void 0 && (t.int = Math.round(e24.int)), e24.boolean !== void 0 && (t.boolean = e24.boolean), e24.number !== void 0 && (t.number = e24.number), e24.texts !== void 0 && (t.texts = m.toJSON(e24.texts)), e24.ints !== void 0 && (t.ints = rt.toJSON(e24.ints)), e24.booleans !== void 0 && (t.booleans = it.toJSON(e24.booleans)), e24.numbers !== void 0 && (t.numbers = nt.toJSON(e24.numbers)), e24.geo !== void 0 && (t.geo = at.toJSON(e24.geo)), t; +}, create(e24) { + return Zi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Yf(); + return t.path = e24.path?.map((r) => r) || [], t.text = e24.text ?? void 0, t.int = e24.int ?? void 0, t.boolean = e24.boolean ?? void 0, t.number = e24.number ?? void 0, t.texts = e24.texts !== void 0 && e24.texts !== null ? m.fromPartial(e24.texts) : void 0, t.ints = e24.ints !== void 0 && e24.ints !== null ? rt.fromPartial(e24.ints) : void 0, t.booleans = e24.booleans !== void 0 && e24.booleans !== null ? it.fromPartial(e24.booleans) : void 0, t.numbers = e24.numbers !== void 0 && e24.numbers !== null ? nt.fromPartial(e24.numbers) : void 0, t.geo = e24.geo !== void 0 && e24.geo !== null ? at.fromPartial(e24.geo) : void 0, t; +} }; +function Zf() { + return { groups: [] }; +} +var Xi = { encode(e24, t = R.default.Writer.create()) { + for (let r of e24.groups) Yi.encode(r, t.uint32(10).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof R.default.Reader ? e24 : R.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Zf(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.groups.push(Yi.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { groups: globalThis.Array.isArray(e24?.groups) ? e24.groups.map((t) => Yi.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.groups?.length && (t.groups = e24.groups.map((r) => Yi.toJSON(r))), t; +}, create(e24) { + return Xi.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Zf(); + return t.groups = e24.groups?.map((r) => Yi.fromPartial(r)) || [], t; +} }; +function Se(e24) { + if (e24.gt(globalThis.Number.MAX_SAFE_INTEGER)) throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + return e24.toNumber(); +} +R.default.util.Long !== long_default && (R.default.util.Long = long_default, R.default.configure()); +function T(e24) { + return e24 != null; +} +var X = class { + static isFilters = (t) => t instanceof ga; + static isText = (t) => typeof t == "string"; + static isTextArray = (t) => t instanceof Array && t.every((r) => typeof r == "string"); + static isInt = (t) => typeof t == "number" && Number.isInteger(t); + static isIntArray = (t) => t instanceof Array && t.every((r) => typeof r == "number" && Number.isInteger(r)); + static isFloat = (t) => typeof t == "number" && !Number.isInteger(t); + static isFloatArray = (t) => t instanceof Array && t.every((r) => typeof r == "number" && !Number.isInteger(r)); + static isBoolean = (t) => typeof t == "boolean"; + static isBooleanArray = (t) => t instanceof Array && t.every((r) => typeof r == "boolean"); + static isDate = (t) => t instanceof Date; + static isDateArray = (t) => t instanceof Array && t.every((r) => r instanceof Date); + static isGeoRange = (t) => { + if (t === void 0) return false; + let r = t; + return r.latitude !== void 0 && r.longitude !== void 0 && r.distance !== void 0; + }; +}; +var oe = class e7 { + static isText = (t) => typeof t == "string"; + static isTextArray = (t) => t instanceof Array && t.length > 0 && t.every(e7.isText); + static isInt = (t) => typeof t == "number" && Number.isInteger(t) && !Number.isNaN(t) && Number.isFinite(t); + static isIntArray = (t) => t instanceof Array && t.length > 0 && t.every(e7.isInt); + static isFloat = (t) => typeof t == "number" && !Number.isInteger(t) && !Number.isNaN(t) && Number.isFinite(t); + static isFloatArray = (t) => t instanceof Array && t.length > 0 && t.every(e7.isFloat); + static isBoolean = (t) => typeof t == "boolean"; + static isBooleanArray = (t) => t instanceof Array && t.length > 0 && t.every(e7.isBoolean); + static isDate = (t) => t instanceof Date; + static isDateArray = (t) => t instanceof Array && t.length > 0 && t.every(e7.isDate); + static isGeoCoordinate = (t) => t instanceof Object && t.latitude !== void 0 && t.longitude !== void 0 && Object.keys(t).length === 2; + static isPhoneNumber = (t) => t instanceof Object && t.number !== void 0 && (Object.keys(t).length === 1 || Object.keys(t).length === 2 && t.defaultCountry !== void 0); + static isNested = (t) => t instanceof Object && !(t instanceof Array) && !e7.isDate(t) && !e7.isGeoCoordinate(t) && !e7.isPhoneNumber(t); + static isNestedArray = (t) => t instanceof Array && t.length > 0 && t.every(e7.isNested); + static isEmptyArray = (t) => t instanceof Array && t.length === 0; + static isDataObject = (t) => t.id !== void 0 || t.properties !== void 0 || t.references !== void 0 || t.vectors !== void 0; +}; +var ji = class { + static isKeys = (t) => t instanceof Array && t.length > 0; + static isAll = (t) => t === "all" || t instanceof Array && t.length === 1 && t[0] === "all"; + static isAllAndQueryProfile = (t) => t instanceof Array && t.length === 2 && t.includes("all") && t.includes("queryProfile"); + static isUndefined = (t) => t === void 0; +}; +var Cs = class e8 { + static aggregations = (t) => t === void 0 ? [] : (Array.isArray(t) || (t = [t]), t.map((r) => dr.fromPartial({ property: r.propertyName, boolean: r.kind === "boolean" ? pr.fromPartial(r) : void 0, date: r.kind === "date" ? gr.fromPartial(r) : void 0, int: r.kind === "integer" ? cr.fromPartial(r) : void 0, number: r.kind === "number" ? lr.fromPartial(r) : void 0, text: r.kind === "text" ? fr.fromPartial({ count: r.count, topOccurencesLimit: r.minOccurrences, topOccurences: r.topOccurrences != null }) : void 0 }))); + static common = (t) => ({ filters: t?.filters ? x.filtersGRPC(t.filters) : void 0, aggregations: e8.aggregations(t?.returnMetrics) }); + static groupBy = (t) => mr.fromPartial({ property: t?.property }); + static hybrid = async (t, r) => ({ ...e8.common(r), objectLimit: r?.objectLimit, hybrid: await x.hybridSearch({ query: t, supportsVectors: true, ...r }) }); + static nearImage = (t, r) => ({ ...e8.common(r), objectLimit: r?.objectLimit, nearImage: x.nearImageSearch({ image: t, ...r }) }); + static nearObject = (t, r) => ({ ...e8.common(r), objectLimit: r?.objectLimit, nearObject: x.nearObjectSearch({ id: t, ...r }) }); + static nearText = (t, r) => ({ ...e8.common(r), objectLimit: r?.objectLimit, nearText: x.nearTextSearch({ query: t, ...r }) }); + static nearVector = async (t, r) => ({ ...e8.common(r), objectLimit: r?.objectLimit, nearVector: await x.nearVectorSearch({ vector: t, supportsVectors: true, ...r }) }); + static overAll = (t) => e8.common(t); +}; +var Ps = class e9 { + static queryProperties = (t, r) => { + let a = t?.filter((s) => typeof s == "string"), i = r, n = t?.filter((s) => typeof s == "object"), o = (s) => { + let u = s.properties.filter((c) => typeof c != "string"); + return { propName: s.name, primitiveProperties: s.properties.filter((c) => typeof c == "string"), objectProperties: u.map(o) }; + }; + return { nonRefProperties: a === void 0 ? [] : a, returnAllNonrefProperties: a === void 0, refProperties: i ? i.map((s) => ({ referenceProperty: s.linkOn, properties: e9.queryProperties(s.returnProperties), metadata: e9.metadata(s.includeVector, s.returnMetadata), targetCollection: s.targetCollection ? s.targetCollection : "" })) : [], objectProperties: n ? n.map((s) => { + let u = s.properties.filter((c) => typeof c != "string"); + return { propName: s.name, primitiveProperties: s.properties.filter((c) => typeof c == "string"), objectProperties: u.map(o) }; + }) : [] }; + }; + static metadata = (t, r) => { + let a = { uuid: true, vector: typeof t == "boolean" ? t : false, vectors: Array.isArray(t) ? t : [] }; + if (ji.isUndefined(r)) return we.fromPartial(a); + let i = { creationTimeUnix: true, lastUpdateTimeUnix: true, distance: true, certainty: true, score: true, explainScore: true, isConsistent: true }; + if (ji.isAll(r)) return { ...a, ...i, queryProfile: false }; + if (ji.isAllAndQueryProfile(r)) return { ...a, ...i, queryProfile: true }; + if (!ji.isKeys(r)) throw new F(`Invalid returnMetadata argument: ${r}.`); + return r?.forEach((n) => { + let o; + n === "creationTime" ? o = "creationTimeUnix" : n === "updateTime" ? o = "lastUpdateTimeUnix" : o = n, a[o] = true; + }), we.fromPartial(a); + }; + static sortBy = (t) => t.map((r) => ({ ascending: !!r.ascending, path: [r.property] })); + static rerank = (t) => ur.fromPartial({ property: t.property, query: t.query }); + static groupBy = (t) => sr.fromPartial({ path: t?.property ? [t.property] : void 0, numberOfGroups: t?.numberOfGroups, objectsPerGroup: t?.objectsPerGroup }); + static isGroupBy = (t) => t === void 0 ? false : t.groupBy !== void 0; + static common = (t) => { + let r = { autocut: t?.autoLimit, limit: t?.limit, offset: t?.offset, filters: t?.filters ? x.filtersGRPC(t.filters) : void 0, properties: t?.returnProperties || t?.returnReferences ? e9.queryProperties(t.returnProperties, t.returnReferences) : void 0, metadata: e9.metadata(t?.includeVector, t?.returnMetadata) }; + return t?.rerank && (r.rerank = e9.rerank(t.rerank)), r; + }; + static bm25 = (t, r) => ({ ...e9.common(r), bm25Search: x.bm25Search({ query: t, ...r }), groupBy: e9.isGroupBy(r) ? e9.groupBy(r.groupBy) : void 0 }); + static fetchObjects = (t) => ({ ...e9.common(t), after: t?.after, sortBy: t?.sort ? e9.sortBy(t.sort.sorts) : void 0 }); + static fetchObjectById = (t) => e9.common({ filters: new Vr().equal(t.id), includeVector: t.includeVector, returnMetadata: ["creationTime", "updateTime", "isConsistent"], returnProperties: t.returnProperties, returnReferences: t.returnReferences }); + static hybrid = async (t, r) => ({ ...e9.common(r), hybridSearch: await x.hybridSearch({ ...t, ...r }), groupBy: e9.isGroupBy(r) ? e9.groupBy(r.groupBy) : void 0 }); + static nearAudio = (t, r) => ({ ...e9.common(r), nearAudio: x.nearAudioSearch({ ...t, ...r }), groupBy: e9.isGroupBy(r) ? e9.groupBy(r.groupBy) : void 0 }); + static nearDepth = (t, r) => ({ ...e9.common(r), nearDepth: x.nearDepthSearch({ ...t, ...r }), groupBy: e9.isGroupBy(r) ? e9.groupBy(r.groupBy) : void 0 }); + static nearImage = (t, r) => ({ ...e9.common(r), nearImage: x.nearImageSearch({ ...t, ...r }), groupBy: e9.isGroupBy(r) ? e9.groupBy(r.groupBy) : void 0 }); + static nearIMU = (t, r) => ({ ...e9.common(r), nearIMU: x.nearIMUSearch({ ...t, ...r }), groupBy: e9.isGroupBy(r) ? e9.groupBy(r.groupBy) : void 0 }); + static nearObject = (t, r) => ({ ...e9.common(r), nearObject: x.nearObjectSearch({ ...t, ...r }), groupBy: e9.isGroupBy(r) ? e9.groupBy(r.groupBy) : void 0 }); + static nearText = (t, r) => ({ ...e9.common(r), nearText: x.nearTextSearch({ ...t, ...r }), groupBy: e9.isGroupBy(r) ? e9.groupBy(r.groupBy) : void 0 }); + static nearThermal = (t, r) => ({ ...e9.common(r), nearThermal: x.nearThermalSearch({ ...t, ...r }), groupBy: e9.isGroupBy(r) ? e9.groupBy(r.groupBy) : void 0 }); + static nearVector = async (t, r) => ({ ...e9.common(r), nearVector: await x.nearVectorSearch({ ...t, ...r }), groupBy: e9.isGroupBy(r) ? e9.groupBy(r.groupBy) : void 0 }); + static nearVideo = (t, r) => ({ ...e9.common(r), nearVideo: x.nearVideoSearch({ ...t, ...r }), groupBy: e9.isGroupBy(r) ? e9.groupBy(r.groupBy) : void 0 }); +}; +var x = class e10 { + static aggregate = Cs; + static search = Ps; + static isNamedVectors = (t) => Array.isArray(t?.includeVector) || t?.targetVector !== void 0; + static isMultiTarget = (t) => t?.targetVector !== void 0 && !Mr.isSingle(t.targetVector); + static isMultiWeightPerTarget = (t) => t?.targetVector !== void 0 && Mr.isMultiJoin(t.targetVector) && t.targetVector.weights !== void 0 && Object.values(t.targetVector.weights).some(Dt.is1DArray); + static isMultiVector = (t) => t !== void 0 && !Array.isArray(t) && Object.values(t).some(Dt.is1DArray || Dt.is2DArray); + static isMultiVectorPerTarget = (t) => t !== void 0 && !Array.isArray(t) && Object.values(t).some(Dt.is2DArray); + static withImages = async (t, r, a) => r == null && a == null ? t : { ...t, images: m.fromPartial({ values: r ? await Promise.all(r.map(lt)) : void 0 }), imageProperties: m.fromPartial({ values: a }) }; + static generativeQuery = async (t, r) => { + let a = qe.fromPartial({ returnMetadata: r?.metadata }); + switch (t.name) { + case "generative-anthropic": + a.anthropic = await e10.withImages(t.config || {}, r?.images, r?.imageProperties); + break; + case "generative-anyscale": + a.anyscale = t.config || {}; + break; + case "generative-aws": + a.aws = await e10.withImages(t.config || {}, r?.images, r?.imageProperties); + break; + case "generative-cohere": + a.cohere = await e10.withImages(t.config || {}, r?.images, r?.imageProperties); + break; + case "generative-databricks": + a.databricks = t.config || {}; + break; + case "generative-dummy": + a.dummy = t.config || {}; + break; + case "generative-friendliai": + a.friendliai = t.config || {}; + break; + case "generative-google": + a.google = await e10.withImages(t.config || {}, r?.images, r?.imageProperties); + break; + case "generative-mistral": + a.mistral = t.config || {}; + break; + case "generative-nvidia": + a.nvidia = t.config || {}; + break; + case "generative-ollama": + a.ollama = await e10.withImages(t.config || {}, r?.images, r?.imageProperties); + break; + case "generative-openai": + a.openai = await e10.withImages(t.config || {}, r?.images, r?.imageProperties); + break; + } + return a; + }; + static generative = async (t, r) => { + let a = e10.isSinglePrompt(r?.singlePrompt) ? r.singlePrompt.prompt : r?.singlePrompt, i = e10.isSinglePrompt(r?.singlePrompt) ? r.singlePrompt.debug : void 0, n = e10.isGroupedTask(r?.groupedTask) ? r.groupedTask.prompt : r?.groupedTask, o = e10.isGroupedTask(r?.groupedTask) ? r.groupedTask.nonBlobProperties : r?.groupedProperties, s = e10.isSinglePrompt(r?.singlePrompt) ? r.singlePrompt : void 0, u = e10.isGroupedTask(r?.groupedTask) ? r.groupedTask : void 0; + return t.supportsSingleGrouped ? Vt.fromPartial({ single: r?.singlePrompt ? ar.fromPartial({ prompt: a, debug: i, queries: r.config ? [await e10.generativeQuery(r.config, s)] : void 0 }) : void 0, grouped: r?.groupedTask ? or2.fromPartial({ task: n, queries: r.config ? [await e10.generativeQuery(r.config, u)] : void 0, properties: o ? m.fromPartial({ values: o }) : void 0 }) : void 0 }) : Vt.fromPartial({ singleResponsePrompt: a, groupedResponseTask: n, groupedProperties: o }); + }; + static isSinglePrompt(t) { + return typeof t != "string" && t !== void 0 && t.prompt !== void 0; + } + static isGroupedTask(t) { + return typeof t != "string" && t !== void 0 && t.prompt !== void 0; + } + static bm25QueryProperties = (t) => t?.map((r) => typeof r == "string" ? r : `${r.name}^${r.weight}`); + static bm25SearchOperator = (t) => { + if (t) return We.fromPartial(t.operator === "And" ? { operator: 2 } : { operator: 1, minimumOrTokensMatch: t.minimumMatch }); + }; + static bm25Search = (t) => Ft.fromPartial({ query: t.query, properties: this.bm25QueryProperties(t.queryProperties), searchOperator: this.bm25SearchOperator(t.operator) }); + static isHybridVectorSearch = (t) => t !== void 0 && !e10.isHybridNearTextSearch(t) && !e10.isHybridNearVectorSearch(t); + static isHybridNearTextSearch = (t) => t?.query !== void 0; + static isHybridNearVectorSearch = (t) => t?.vector !== void 0; + static hybridVector = async (t) => { + let r = t.vector; + if (e10.isHybridVectorSearch(r)) { + let { targets: a, targetVectors: i, vectorBytes: n, vectorPerTarget: o, vectorForTargets: s, vectors: u } = await e10.vectors({ ...t, argumentName: "vector", vector: r }); + return n !== void 0 ? { vectorBytes: n, targetVectors: i, targets: a } : { targetVectors: i, targets: a, nearVector: s != null || o != null ? te.fromPartial({ vectorForTargets: s, vectorPerTarget: o }) : void 0, vectors: u }; + } else if (e10.isHybridNearTextSearch(r)) { + let { targetVectors: a, targets: i } = e10.targetVector(t); + return { targets: i, targetVectors: a, nearText: ae.fromPartial({ query: typeof r.query == "string" ? [r.query] : r.query, certainty: r.certainty, distance: r.distance, moveAway: r.moveAway ? me.fromPartial(r.moveAway) : void 0, moveTo: r.moveTo ? me.fromPartial(r.moveTo) : void 0 }) }; + } else if (e10.isHybridNearVectorSearch(r)) { + let { targetVectors: a, targets: i, vectorBytes: n, vectorPerTarget: o, vectorForTargets: s, vectors: u } = await e10.vectors({ ...t, argumentName: "vector", vector: r.vector }); + return { targetVectors: a, targets: i, nearVector: te.fromPartial({ certainty: r.certainty, distance: r.distance, vectorBytes: n, vectorPerTarget: o, vectorForTargets: s, vectors: u }) }; + } else { + let { targets: a, targetVectors: i } = e10.targetVector(t); + return { targets: a, targetVectors: i }; + } + }; + static hybridSearch = async (t) => { + let r = (c) => { + switch (c) { + case "Ranked": + return 1; + case "RelativeScore": + return 2; + default: + return 0; + } + }, { targets: a, targetVectors: i, vectorBytes: n, nearText: o, nearVector: s, vectors: u } = await e10.hybridVector(t); + return ve.fromPartial({ query: t.query, alpha: t.alpha !== void 0 ? t.alpha : 0.5, properties: this.bm25QueryProperties(t.queryProperties), vectorBytes: n, vectorDistance: t.maxVectorDistance, fusionType: r(t.fusionType), bm25SearchOperator: this.bm25SearchOperator(t.bm25Operator), targetVectors: i, targets: a, nearText: o, nearVector: s, vectors: u }); + }; + static nearAudioSearch = (t) => { + let { targets: r, targetVectors: a } = e10.targetVector(t); + return Ce.fromPartial({ audio: t.audio, certainty: t.certainty, distance: t.distance, targetVectors: a, targets: r }); + }; + static nearDepthSearch = (t) => { + let { targets: r, targetVectors: a } = e10.targetVector(t); + return Re.fromPartial({ depth: t.depth, certainty: t.certainty, distance: t.distance, targetVectors: a, targets: r }); + }; + static nearImageSearch = (t) => { + let { targets: r, targetVectors: a } = e10.targetVector(t); + return xe.fromPartial({ image: t.image, certainty: t.certainty, distance: t.distance, targetVectors: a, targets: r }); + }; + static nearIMUSearch = (t) => { + let { targets: r, targetVectors: a } = e10.targetVector(t); + return Ne.fromPartial({ imu: t.imu, certainty: t.certainty, distance: t.distance, targetVectors: a, targets: r }); + }; + static nearObjectSearch = (t) => { + let { targets: r, targetVectors: a } = e10.targetVector(t); + return be.fromPartial({ id: t.id, certainty: t.certainty, distance: t.distance, targetVectors: a, targets: r }); + }; + static nearTextSearch = (t) => { + let { targets: r, targetVectors: a } = e10.targetVector(t); + return ae.fromPartial({ query: typeof t.query == "string" ? [t.query] : t.query, certainty: t.certainty, distance: t.distance, targets: r, targetVectors: a, moveAway: t.moveAway ? me.fromPartial({ concepts: t.moveAway.concepts, force: t.moveAway.force, uuids: t.moveAway.objects }) : void 0, moveTo: t.moveTo ? me.fromPartial({ concepts: t.moveTo.concepts, force: t.moveTo.force, uuids: t.moveTo.objects }) : void 0 }); + }; + static nearThermalSearch = (t) => { + let { targets: r, targetVectors: a } = e10.targetVector(t); + return Ae.fromPartial({ thermal: t.thermal, certainty: t.certainty, distance: t.distance, targetVectors: a, targets: r }); + }; + static vectorToBuffer = (t) => new Float32Array(t).buffer; + static vectorToBytes = (t) => { + let a = new DataView(new ArrayBuffer(t.length * 4)); + return t.forEach((i, n) => a.setFloat32(n * 4, i, true)), new Uint8Array(a.buffer); + }; + static vectorsToBytes = async (t) => { + if (t.length === 0) return new Uint8Array(); + if (t[0].length === 0) return new Uint8Array(); + let r = 2, a = 4, i = t[0].length, n = new DataView(new ArrayBuffer(r + t.length * i * a)); + return n.setUint16(0, i, true), n.setUint16(r, t.length, true), await Promise.all(t.map((o, s) => uo().then(() => o.forEach((u, c) => n.setFloat32(r + s * i * a + c * a, u, true))))), new Uint8Array(n.buffer); + }; + static nearVectorSearch = async (t) => te.fromPartial({ certainty: t.certainty, distance: t.distance, ...await e10.vectors({ ...t, argumentName: "nearVector" }) }); + static targetVector = (t) => t?.targetVector === void 0 ? {} : Mr.isSingle(t.targetVector) ? { targets: B.fromPartial({ targetVectors: [t.targetVector] }) } : Mr.isMulti(t.targetVector) ? { targets: B.fromPartial({ targetVectors: t.targetVector }) } : { targets: e10.targets(t.targetVector) }; + static vectors = async (t) => { + let r = new F(`${t.argumentName} argument must be populated and: + - an array of numbers (number[]) + - an object with target names as keys and 1D and/or 2D arrays of numbers (number[] or number[][]) as values + received: ${t.vector} and ${t.targetVector}`); + if (t.vector === void 0) return e10.targetVector(t); + if (Te.isObject(t.vector)) { + if (Object.keys(t.vector).length === 0) throw r; + let a = []; + for (let [i, n] of Object.entries(t.vector)) { + if (!t.supportsVectors) { + if (Te.isListOf2D(n)) throw new He("Lists of multi-vectors are not supported in Weaviate <1.29.0"); + if (Dt.is2DArray(n)) { + n.forEach((s) => a.push({ name: i, vectorBytes: e10.vectorToBytes(s), vectors: [] })); + continue; + } + if (Te.isListOf1D(n)) { + n.vectors.forEach((s) => a.push({ name: i, vectorBytes: e10.vectorToBytes(s), vectors: [] })); + continue; + } + a.push({ name: i, vectorBytes: e10.vectorToBytes(n), vectors: [] }); + continue; + } + let o = { name: i, vectorBytes: new Uint8Array(), vectors: [] }; + if (Te.isListOf1D(n)) o.vectors.push(q.fromPartial({ type: 1, vectorBytes: await e10.vectorsToBytes(n.vectors) })); + else if (Te.isListOf2D(n)) for (let s of n.vectors) o.vectors.push(q.fromPartial({ type: 2, vectorBytes: await e10.vectorsToBytes(s) })); + else Dt.is2DArray(n) ? o.vectors.push(q.fromPartial({ type: 2, vectorBytes: await e10.vectorsToBytes(n) })) : o.vectors.push(q.fromPartial({ type: 1, vectorBytes: e10.vectorToBytes(n) })); + a.push(o); + } + return t.targetVector !== void 0 ? { ...e10.targetVector(t), vectorForTargets: a } : { targetVectors: void 0, targets: B.fromPartial({ targetVectors: a.map((i) => i.name) }), vectorForTargets: a }; + } + if (t.vector.length === 0) throw r; + if (Te.is1D(t.vector)) { + let { targetVectors: a, targets: i } = e10.targetVector(t), n = e10.vectorToBytes(t.vector); + return t.supportsVectors ? { targets: i, targetVectors: a, vectors: [q.fromPartial({ type: 1, vectorBytes: n })] } : { targets: i, targetVectors: a, vectorBytes: n }; + } + if (Te.is2D(t.vector)) { + if (!t.supportsVectors) throw new He("Multi-vectors are not supported in Weaviate <1.29.0"); + let { targetVectors: a, targets: i } = e10.targetVector(t), n = await e10.vectorsToBytes(t.vector); + return { targets: i, targetVectors: a, vectors: [q.fromPartial({ type: 2, vectorBytes: n })] }; + } + throw r; + }; + static targets = (t) => { + let r; + switch (t.combination) { + case "sum": + r = 1; + break; + case "average": + r = 3; + break; + case "minimum": + r = 2; + break; + case "relative-score": + r = 4; + break; + case "manual-weights": + r = 5; + break; + default: + throw new Error("Invalid combination method"); + } + if (t.weights !== void 0) { + let a = Object.entries(t.weights).map(([i, n]) => ({ target: i, weight: n })).reduce((i, { target: n, weight: o }) => Array.isArray(o) ? i.concat(o.map((s) => ({ target: n, weight: s }))) : i.concat([{ target: n, weight: o }]), []); + return { combination: r, targetVectors: a.map((i) => i.target), weightsForTargets: a }; + } else return { combination: r, targetVectors: t.targetVectors, weightsForTargets: [] }; + }; + static nearVideoSearch = (t) => { + let { targets: r, targetVectors: a } = e10.targetVector(t); + return Pe.fromPartial({ video: t.video, certainty: t.certainty, distance: t.distance, targetVectors: a, targets: r }); + }; + static filtersGRPC = (t) => { + let r = (i) => { + let n = []; + return i.filters?.forEach((o) => n.push(e10.filtersGRPC(o))), n; + }, { value: a } = t; + switch (t.operator) { + case "And": + return H.fromPartial({ operator: 7, filters: r(t) }); + case "Or": + return H.fromPartial({ operator: 8, filters: r(t) }); + case "Not": + return H.fromPartial({ operator: 15, filters: r(t) }); + default: + return H.fromPartial({ operator: e10.operator(t.operator), target: t.target, valueText: this.filtersGRPCValueText(a), valueTextArray: this.filtersGRPCValueTextArray(a), valueInt: X.isInt(a) ? a : void 0, valueIntArray: X.isIntArray(a) ? { values: a } : void 0, valueNumber: X.isFloat(a) ? a : void 0, valueNumberArray: X.isFloatArray(a) ? { values: a } : void 0, valueBoolean: X.isBoolean(a) ? a : void 0, valueBooleanArray: X.isBooleanArray(a) ? { values: a } : void 0, valueGeo: X.isGeoRange(a) ? a : void 0 }); + } + }; + static filtersGRPCValueText = (t) => X.isText(t) ? t : X.isDate(t) ? t.toISOString() : void 0; + static filtersGRPCValueTextArray = (t) => X.isTextArray(t) ? { values: t } : X.isDateArray(t) ? { values: t.map((r) => r.toISOString()) } : void 0; + static filterTargetToREST = (t) => { + if (t.property) return [t.property]; + if (t.singleTarget) throw new Zr("Cannot use Filter.byRef() in the aggregate API currently. Instead use Filter.byRefMultiTarget() and specify the target collection explicitly."); + if (t.multiTarget) { + if (t.multiTarget.target === void 0) throw new Zr(`target of multiTarget filter was unexpectedly undefined: ${t}`); + return [t.multiTarget.on, t.multiTarget.targetCollection, ...e10.filterTargetToREST(t.multiTarget.target)]; + } else return t.count ? [t.count.on] : []; + }; + static filtersREST = (t) => { + let { value: r } = t; + if (t.operator === "And" || t.operator === "Or" || t.operator === "Not") return { operator: t.operator, operands: t.filters?.map(e10.filtersREST) }; + { + if (t.target === void 0) throw new Zr(`target of filter was unexpectedly undefined: ${t}`); + let a = { path: e10.filterTargetToREST(t.target), operator: t.operator }; + if (X.isText(r)) return { ...a, valueText: r }; + if (X.isTextArray(r)) return { ...a, valueTextArray: r }; + if (X.isInt(r)) return { ...a, valueInt: r }; + if (X.isIntArray(r)) return { ...a, valueIntArray: r }; + if (X.isBoolean(r)) return { ...a, valueBoolean: r }; + if (X.isBooleanArray(r)) return { ...a, valueBooleanArray: r }; + if (X.isFloat(r)) return { ...a, valueNumber: r }; + if (X.isFloatArray(r)) return { ...a, valueNumberArray: r }; + if (X.isDate(r)) return { ...a, valueDate: r.toISOString() }; + if (X.isDateArray(r)) return { ...a, valueDateArray: r.map((i) => i.toISOString()) }; + if (X.isGeoRange(r)) return { ...a, valueGeoRange: { geoCoordinates: { latitude: r.latitude, longitude: r.longitude }, distance: { max: r.distance } } }; + throw new F("Invalid filter value type"); + } + }; + static operator = (t) => { + switch (t) { + case "Equal": + return 1; + case "NotEqual": + return 2; + case "ContainsAny": + return 12; + case "ContainsAll": + return 13; + case "ContainsNone": + return 14; + case "GreaterThan": + return 3; + case "GreaterThanEqual": + return 4; + case "LessThan": + return 5; + case "LessThanEqual": + return 6; + case "Like": + return 10; + case "WithinGeoRange": + return 9; + case "IsNull": + return 11; + default: + return 0; + } + }; + static restProperties = (t, r) => { + let a = {}; + if (Object.keys(t).forEach((i) => { + let n = t[i]; + oe.isDate(n) ? a[i] = n.toISOString() : oe.isDateArray(n) ? a[i] = n.map((o) => o.toISOString()) : oe.isPhoneNumber(n) ? a[i] = { input: n.number, defaultCountry: n.defaultCountry } : oe.isNestedArray(n) ? a[i] = n.map((o) => e10.restProperties(o)) : oe.isNested(n) ? a[i] = e10.restProperties(n) : a[i] = n; + }), !r) return a; + for (let [i, n] of Object.entries(r)) if (n !== void 0) if (fe.isReferenceManager(n)) a[i] = n.toBeaconObjs(); + else if (fe.isUuid(n)) a[i] = [Fe(n)]; + else if (fe.isMultiTarget(n)) a[i] = typeof n.uuids == "string" ? [Fe(n.uuids, n.targetCollection)] : n.uuids.map((o) => Fe(o, n.targetCollection)); + else { + let o = []; + n.forEach((s) => { + fe.isReferenceManager(s) ? o = o.concat(s.toBeaconObjs()) : fe.isUuid(s) ? o.push(Fe(s)) : o = o.concat((fe.isUuid(s.uuids) ? [s.uuids] : s.uuids).map((u) => Fe(u, s.targetCollection))); + }), a[i] = o; + } + return a; + }; + static batchProperties = (t, r) => { + let a = [], i = [], n = {}, o = [], s = [], u = [], c = [], f2 = [], y = [], P = [], V = (D, S) => { + if (oe.isEmptyArray(S)) o.push(D); + else if (oe.isBooleanArray(S)) s.push({ propName: D, values: S }); + else if (oe.isDateArray(S)) u.push({ propName: D, values: S.map((kt) => kt.toISOString()) }); + else if (oe.isTextArray(S)) u.push({ propName: D, values: S }); + else if (oe.isIntArray(S)) c.push({ propName: D, values: S }); + else if (oe.isFloatArray(S)) f2.push({ propName: D, values: [], valuesBytes: new Uint8Array(new Float64Array(S).buffer) }); + else if (oe.isDate(S)) n[D] = S.toISOString(); + else if (oe.isPhoneNumber(S)) n[D] = { input: S.number, defaultCountry: S.defaultCountry }; + else if (oe.isGeoCoordinate(S)) n[D] = S; + else if (oe.isNestedArray(S)) P.push({ propName: D, values: S.map((kt) => Be.fromPartial(e10.batchProperties(kt))) }); + else if (oe.isNested(S)) { + let kt = e10.batchProperties(S); + y.push({ propName: D, value: Be.fromPartial(kt) }); + } else n[D] = S; + }, j = (D, S) => { + fe.isReferenceManager(S) ? S.isMultiTarget() ? a.push({ propName: D, targetCollection: S.targetCollection, uuids: S.toBeaconStrings() }) : i.push({ propName: D, uuids: S.toBeaconStrings() }) : fe.isUuid(S) ? i.push({ propName: D, uuids: [S] }) : fe.isMultiTarget(S) ? a.push({ propName: D, targetCollection: S.targetCollection, uuids: typeof S.uuids == "string" ? [S.uuids] : S.uuids }) : S.forEach((kt) => j(D, kt)); + }; + return t && Object.entries(t).forEach(([D, S]) => V(D, S)), r && Object.entries(r).forEach(([D, S]) => j(D, S)), { nonRefProperties: n, multiTargetRefProps: a, singleTargetRefProps: i, textArrayProperties: u, intArrayProperties: c, numberArrayProperties: f2, booleanArrayProperties: s, objectProperties: y, objectArrayProperties: P, emptyListProps: o }; + }; + static batchObject = (t, r, a, i) => { + let n = oe.isDataObject(r) ? r : { id: void 0, properties: r, references: void 0, vectors: void 0 }, o, s; + n.vectors !== void 0 && !Array.isArray(n.vectors) ? s = Object.entries(n.vectors).flatMap(([c, f2]) => Te.is1D(f2) ? [q.fromPartial({ vectorBytes: e10.vectorToBytes(f2), name: c })] : f2.map((y) => q.fromPartial({ vectorBytes: e10.vectorToBytes(y), name: c }))) : Array.isArray(n.vectors) && a ? (s = [q.fromPartial({ vectorBytes: e10.vectorToBytes(n.vectors), name: "default" })], o = e10.vectorToBytes(n.vectors)) : n.vectors !== void 0 && (o = e10.vectorToBytes(n.vectors)); + let u = n.id ? n.id : v4_default(); + return { grpc: Ve.fromPartial({ collection: t, properties: e10.batchProperties(n.properties, n.references), tenant: i, uuid: u, vectorBytes: o, vectors: s }), object: { ...n, id: u, collection: t, tenant: i } }; + }; + static batchObjects = (t, r, a, i) => { + let n = [], o = [], s = (c) => { + if (c < r.length) setTimeout(() => s(c + 1)); + else return; + let { grpc: f2, object: y } = e10.batchObject(t, r[c], a, i); + n.push(f2), o.push(y); + }, u = () => { + let c = (f2) => { + n.length < r.length ? setTimeout(() => c(f2), 500) : f2(null); + }; + return new Promise(c); + }; + return s(0), u().then(() => ({ batch: o, mapped: n })); + }; + static batchReference = (t) => { + let r = `weaviate://localhost/${t.fromObjectCollection}/${t.fromObjectUuid}/${t.fromPropertyName}`; + return { grpc: Oe.fromPartial({ fromCollection: t.fromObjectCollection, fromUuid: t.fromObjectUuid, toCollection: t.toObjectCollection, toUuid: t.toObjectUuid, name: t.fromPropertyName, tenant: t.tenant }), beacon: r }; + }; + static tenants(t, r) { + let a = [], i = Math.ceil(t.length / 100); + for (let n = 0; n < i; n++) { + let o = t.slice(n * 100, (n + 1) * 100); + a.push(o.map(r)); + } + return a; + } + static tenantCreate(t) { + let r; + switch (t.activityStatus) { + case "ACTIVE": + r = "HOT"; + break; + case "INACTIVE": + r = "COLD"; + break; + case "HOT": + case "COLD": + case void 0: + r = t.activityStatus; + break; + case "FROZEN": + throw new F("Invalid activity status. Please provide one of the following: ACTIVE, INACTIVE, HOT, COLD."); + default: + throw new F("Invalid activity status. Please provide one of the following: ACTIVE, INACTIVE, HOT, COLD."); + } + return { name: t.name, activityStatus: r }; + } + static tenantUpdate(t) { + let r; + switch (t.activityStatus) { + case "ACTIVE": + r = "HOT"; + break; + case "INACTIVE": + r = "COLD"; + break; + case "OFFLOADED": + r = "FROZEN"; + break; + case "HOT": + case "COLD": + case "FROZEN": + r = t.activityStatus; + break; + default: + throw new F("Invalid activity status. Please provide one of the following: ACTIVE, INACTIVE, HOT, COLD, OFFLOADED."); + } + return { name: t.name, activityStatus: r }; + } +}; +var Xf = () => ({ aggregate: (e24) => new Rs(e24) }); +var Rs = class { + propertyName; + constructor(t) { + this.propertyName = t; + } + map(t) { + let r = {}; + return t.forEach((a) => { + r[a] = true; + }), r; + } + boolean(t) { + return (t === void 0 || t.length === 0) && (t = ["count", "percentageFalse", "percentageTrue", "totalFalse", "totalTrue"]), { ...this.map(t), kind: "boolean", propertyName: this.propertyName }; + } + date(t) { + return (t === void 0 || t.length === 0) && (t = ["count", "maximum", "median", "minimum", "mode"]), { ...this.map(t), kind: "date", propertyName: this.propertyName }; + } + integer(t) { + return (t === void 0 || t.length === 0) && (t = ["count", "maximum", "mean", "median", "minimum", "mode", "sum"]), { ...this.map(t), kind: "integer", propertyName: this.propertyName }; + } + number(t) { + return (t === void 0 || t.length === 0) && (t = ["count", "maximum", "mean", "median", "minimum", "mode", "sum"]), { ...this.map(t), kind: "number", propertyName: this.propertyName }; + } + text(t, r) { + return (t === void 0 || t.length === 0) && (t = ["count", "topOccurrencesOccurs", "topOccurrencesValue"]), { count: t.includes("count"), topOccurrences: t.includes("topOccurrencesOccurs") || t.includes("topOccurrencesValue") ? { occurs: t.includes("topOccurrencesOccurs"), value: t.includes("topOccurrencesValue") } : void 0, minOccurrences: r, kind: "text", propertyName: this.propertyName }; + } +}; +var As = class e11 { + connection; + groupBy; + name; + dbVersionSupport; + consistencyLevel; + tenant; + grpcChecker; + constructor(t, r, a, i, n) { + this.connection = t, this.name = r, this.dbVersionSupport = a, this.consistencyLevel = i, this.tenant = n, this.grpcChecker = this.dbVersionSupport.supportsAggregateGRPC().then((o) => o.supports), this.groupBy = { hybrid: async (o, s) => { + if (await this.grpcChecker) { + let c = typeof s.groupBy == "string" ? { property: s.groupBy } : s.groupBy; + return this.grpc().then(async (f2) => f2.withHybrid({ ...await x.aggregate.hybrid(o, s), groupBy: x.aggregate.groupBy(c), limit: c.limit })).then((f2) => Y.aggregateGroupBy(f2)); + } + let u = this.base(s?.returnMetrics, s?.filters, s?.groupBy).withHybrid({ query: o, alpha: s?.alpha, maxVectorDistance: s?.maxVectorDistance, properties: s?.queryProperties, targetVectors: s?.targetVector ? [s.targetVector] : void 0, vector: s?.vector }); + return s?.objectLimit && (u = u.withObjectLimit(s.objectLimit)), this.doGroupBy(u); + }, nearImage: async (o, s) => { + let [u, c] = await Promise.all([await lt(o), await this.grpcChecker]); + if (c) { + let y = typeof s.groupBy == "string" ? { property: s.groupBy } : s.groupBy; + return this.grpc().then((P) => P.withNearImage({ ...x.aggregate.nearImage(u, s), groupBy: x.aggregate.groupBy(y), limit: y.limit })).then((P) => Y.aggregateGroupBy(P)); + } + let f2 = this.base(s?.returnMetrics, s?.filters, s?.groupBy).withNearImage({ image: u, certainty: s?.certainty, distance: s?.distance, targetVectors: s?.targetVector ? [s.targetVector] : void 0 }); + return s?.objectLimit && f2.withObjectLimit(s?.objectLimit), this.doGroupBy(f2); + }, nearObject: async (o, s) => { + if (await this.grpcChecker) { + let c = typeof s.groupBy == "string" ? { property: s.groupBy } : s.groupBy; + return this.grpc().then((f2) => f2.withNearObject({ ...x.aggregate.nearObject(o, s), groupBy: x.aggregate.groupBy(c), limit: c.limit })).then((f2) => Y.aggregateGroupBy(f2)); + } + let u = this.base(s?.returnMetrics, s?.filters, s?.groupBy).withNearObject({ id: o, certainty: s?.certainty, distance: s?.distance, targetVectors: s?.targetVector ? [s.targetVector] : void 0 }); + return s?.objectLimit && u.withObjectLimit(s.objectLimit), this.doGroupBy(u); + }, nearText: async (o, s) => { + if (await this.grpcChecker) { + let c = typeof s.groupBy == "string" ? { property: s.groupBy } : s.groupBy; + return this.grpc().then((f2) => f2.withNearText({ ...x.aggregate.nearText(o, s), groupBy: x.aggregate.groupBy(c), limit: c.limit })).then((f2) => Y.aggregateGroupBy(f2)); + } + let u = this.base(s?.returnMetrics, s?.filters, s?.groupBy).withNearText({ concepts: Array.isArray(o) ? o : [o], certainty: s?.certainty, distance: s?.distance, targetVectors: s?.targetVector ? [s.targetVector] : void 0 }); + return s?.objectLimit && u.withObjectLimit(s.objectLimit), this.doGroupBy(u); + }, nearVector: async (o, s) => { + if (await this.grpcChecker) { + let c = typeof s.groupBy == "string" ? { property: s.groupBy } : s.groupBy; + return this.grpc().then(async (f2) => f2.withNearVector({ ...await x.aggregate.nearVector(o, s), groupBy: x.aggregate.groupBy(c), limit: c.limit })).then((f2) => Y.aggregateGroupBy(f2)); + } + let u = this.base(s?.returnMetrics, s?.filters, s?.groupBy).withNearVector({ vector: o, certainty: s?.certainty, distance: s?.distance, targetVectors: s?.targetVector ? [s.targetVector] : void 0 }); + return s?.objectLimit && u.withObjectLimit(s.objectLimit), this.doGroupBy(u); + }, overAll: async (o) => { + if (await this.grpcChecker) { + let u = typeof o.groupBy == "string" ? { property: o.groupBy } : o.groupBy; + return this.grpc().then((c) => c.withFetch({ ...x.aggregate.overAll(o), groupBy: x.aggregate.groupBy(u), limit: u.limit })).then((c) => Y.aggregateGroupBy(c)); + } + let s = this.base(o?.returnMetrics, o?.filters, o?.groupBy); + return this.doGroupBy(s); + } }; + } + grpc = () => this.connection.aggregate(this.name, this.consistencyLevel, this.tenant); + gql() { + return new _r(this.connection); + } + base(t, r, a) { + let i = "meta { count }", n = this.gql().withClassName(this.name); + return t && (Array.isArray(t) ? i += t.map((o) => this.metrics(o)).join(" ") : i += this.metrics(t)), a && (n = n.withGroupBy(typeof a == "string" ? [a] : [a.property]), i += "groupedBy { path value }", typeof a != "string" && a?.limit && (n = n.withLimit(a.limit))), i !== "" && (n = n.withFields(i)), r && (n = n.withWhere(x.filtersREST(r))), this.tenant && (n = n.withTenant(this.tenant)), n; + } + metrics(t) { + let r = "", { kind: a, propertyName: i, ...n } = t; + switch (a) { + case "text": { + let { minOccurrences: o, ...s } = n; + r = Object.entries(s).map(([u, c]) => { + if (c) return c instanceof Object ? `topOccurrences${o ? `(limit: ${o})` : ""} { ${c.occurs ? "occurs" : ""} ${c.value ? "value" : ""} }` : u; + }).join(" "); + break; + } + default: + r = Object.entries(n).map(([o, s]) => s ? o : "").join(" "); + } + return `${i} { ${r} }`; + } + static use(t, r, a, i, n) { + return new e11(t, r, a, i, n); + } + async hybrid(t, r) { + if (await this.grpcChecker) return this.grpc().then(async (i) => i.withHybrid(await x.aggregate.hybrid(t, r))).then((i) => Y.aggregate(i)); + let a = this.base(r?.returnMetrics, r?.filters).withHybrid({ query: t, alpha: r?.alpha, maxVectorDistance: r?.maxVectorDistance, properties: r?.queryProperties, targetVectors: r?.targetVector ? [r.targetVector] : void 0, vector: r?.vector }); + return r?.objectLimit && (a = a.withObjectLimit(r.objectLimit)), this.do(a); + } + async nearImage(t, r) { + let [a, i] = await Promise.all([await lt(t), await this.grpcChecker]); + if (i) return this.grpc().then((o) => o.withNearImage(x.aggregate.nearImage(a, r))).then((o) => Y.aggregate(o)); + let n = this.base(r?.returnMetrics, r?.filters).withNearImage({ image: a, certainty: r?.certainty, distance: r?.distance, targetVectors: r?.targetVector ? [r.targetVector] : void 0 }); + return r?.objectLimit && n.withObjectLimit(r?.objectLimit), this.do(n); + } + async nearObject(t, r) { + if (await this.grpcChecker) return this.grpc().then((i) => i.withNearObject(x.aggregate.nearObject(t, r))).then((i) => Y.aggregate(i)); + let a = this.base(r?.returnMetrics, r?.filters).withNearObject({ id: t, certainty: r?.certainty, distance: r?.distance, targetVectors: r?.targetVector ? [r.targetVector] : void 0 }); + return r?.objectLimit && a.withObjectLimit(r.objectLimit), this.do(a); + } + async nearText(t, r) { + if (await this.grpcChecker) return this.grpc().then((i) => i.withNearText(x.aggregate.nearText(t, r))).then((i) => Y.aggregate(i)); + let a = this.base(r?.returnMetrics, r?.filters).withNearText({ concepts: Array.isArray(t) ? t : [t], certainty: r?.certainty, distance: r?.distance, targetVectors: r?.targetVector ? [r.targetVector] : void 0 }); + return r?.objectLimit && a.withObjectLimit(r.objectLimit), this.do(a); + } + async nearVector(t, r) { + if (await this.grpcChecker) return this.grpc().then(async (i) => i.withNearVector(await x.aggregate.nearVector(t, r))).then((i) => Y.aggregate(i)); + if (!Te.is1D(t)) throw new F("Vector can only be a 1D array of numbers when using `nearVector` with <1.29 Weaviate versions."); + let a = this.base(r?.returnMetrics, r?.filters).withNearVector({ vector: t, certainty: r?.certainty, distance: r?.distance, targetVectors: r?.targetVector ? [r.targetVector] : void 0 }); + return r?.objectLimit && a.withObjectLimit(r.objectLimit), this.do(a); + } + async overAll(t) { + return await this.grpcChecker ? this.grpc().then((r) => r.withFetch(x.aggregate.overAll(t))).then((r) => Y.aggregate(r)) : this.do(this.base(t?.returnMetrics, t?.filters)); + } + do = (t) => t.do().then(({ data: r }) => { + let { meta: a, ...i } = r.Aggregate[this.name][0]; + return { properties: i, totalCount: a?.count }; + }).catch((r) => { + throw new _t(r.message, "GraphQL"); + }); + doGroupBy = (t) => t.do().then(({ data: r }) => r.Aggregate[this.name].map((a) => { + let { groupedBy: i, meta: n, ...o } = a; + return { groupedBy: { prop: i.path[0], value: i.value }, properties: o, totalCount: n?.count }; + })).catch((r) => { + throw new _t(r.message, "GraphQL"); + }); +}; +var jf = As.use; +d(); +d(); +d(); +d(); +d(); +function co(e24) { + if (Array.isArray(e24)) { + let t = []; + return e24.forEach((r) => { + M(r) || t.push("string className invalid - set with .withIncludeClassNames(...classNames)"); + }), t; + } + return e24 != null ? ["strings classNames invalid - set with .withIncludeClassNames(...classNames)"] : []; +} +function lo(e24) { + if (Array.isArray(e24)) { + let t = []; + return e24.forEach((r) => { + M(r) || t.push("string className invalid - set with .withExcludeClassNames(...classNames)"); + }), t; + } + return e24 != null ? ["strings classNames invalid - set with .withExcludeClassNames(...classNames)"] : []; +} +function Ot(e24) { + return M(e24) ? [] : ["string backend must set - set with .withBackend(backend)"]; +} +function St(e24) { + return M(e24) ? [] : ["string backupId must be set - set with .withBackupId(backupId)"]; +} +var hr = class extends O { + backend; + backupId; + constructor(t) { + super(t); + } + withBackend(t) { + return this.backend = t, this; + } + withBackupId(t) { + return this.backupId = t, this; + } + validate = () => { + this.addErrors([...Ot(this.backend), ...St(this.backupId)]); + }; + do = () => (this.validate(), this.errors.length > 0 ? Promise.reject(new F("invalid usage: " + this.errors.join(", "))) : this.client.get(this._path())); + _path = () => `/backups/${this.backend}/${this.backupId}`; +}; +d(); +var Mm = 1e3; +var Er = class extends O { + backend; + backupId; + excludeClassNames; + includeClassNames; + statusGetter; + waitForCompletion; + config; + constructor(t, r) { + super(t), this.statusGetter = r; + } + withIncludeClassNames(...t) { + let r = t; + return t.length && Array.isArray(t[0]) && (r = t[0]), this.includeClassNames = r, this; + } + withExcludeClassNames(...t) { + let r = t; + return t.length && Array.isArray(t[0]) && (r = t[0]), this.excludeClassNames = r, this; + } + withBackend(t) { + return this.backend = t, this; + } + withBackupId(t) { + return this.backupId = t, this; + } + withWaitForCompletion(t) { + return this.waitForCompletion = t, this; + } + withConfig(t) { + return this.config = t, this; + } + validate = () => { + this.addErrors([...co(this.includeClassNames), ...lo(this.excludeClassNames), ...Ot(this.backend), ...St(this.backupId)]); + }; + do = () => { + if (this.validate(), this.errors.length > 0) return Promise.reject(new F("invalid usage: " + this.errors.join(", "))); + let t = { id: this.backupId, config: this.config, include: this.includeClassNames, exclude: this.excludeClassNames }; + return this.waitForCompletion ? this._createAndWaitForCompletion(t) : this._create(t); + }; + _create = (t) => this.client.postReturn(this._path(), t); + _createAndWaitForCompletion = (t) => new Promise((r, a) => { + this._create(t).then((i) => { + this.statusGetter.withBackend(this.backend).withBackupId(this.backupId); + let n = () => { + this.statusGetter.do().then((o) => { + o.status == "SUCCESS" || o.status == "FAILED" || o.status == "CANCELED" ? r(this._merge(o, i)) : setTimeout(n, Mm); + }).catch(a); + }; + n(); + }).catch(a); + }); + _path = () => `/backups/${this.backend}`; + _merge = (t, r) => { + let a = {}; + return "id" in t && (a.id = t.id), "path" in t && (a.path = t.path), "backend" in t && (a.backend = t.backend), "status" in t && (a.status = t.status), "error" in t && (a.error = t.error), "classes" in r && (a.classes = r.classes), a; + }; +}; +d(); +var yr = class extends O { + backend; + backupId; + constructor(t) { + super(t); + } + withBackend(t) { + return this.backend = t, this; + } + withBackupId(t) { + return this.backupId = t, this; + } + validate = () => { + this.addErrors([...Ot(this.backend), ...St(this.backupId)]); + }; + do = () => (this.validate(), this.errors.length > 0 ? Promise.reject(new F("invalid usage: " + this.errors.join(", "))) : this.client.get(this._path())); + _path = () => `/backups/${this.backend}/${this.backupId}/restore`; +}; +d(); +var Em = 1e3; +var Ur = class extends O { + backend; + backupId; + excludeClassNames; + includeClassNames; + statusGetter; + waitForCompletion; + config; + overwriteAlias; + constructor(t, r) { + super(t), this.statusGetter = r; + } + withIncludeClassNames(...t) { + let r = t; + return t.length && Array.isArray(t[0]) && (r = t[0]), this.includeClassNames = r, this; + } + withExcludeClassNames(...t) { + let r = t; + return t.length && Array.isArray(t[0]) && (r = t[0]), this.excludeClassNames = r, this; + } + withBackend(t) { + return this.backend = t, this; + } + withBackupId(t) { + return this.backupId = t, this; + } + withWaitForCompletion(t) { + return this.waitForCompletion = t, this; + } + withOverwriteAlias(t) { + return this.overwriteAlias = t, this; + } + withConfig(t) { + return this.config = t, this; + } + validate = () => { + this.addErrors([...co(this.includeClassNames || []), ...lo(this.excludeClassNames || []), ...Ot(this.backend), ...St(this.backupId)]); + }; + do = () => { + if (this.validate(), this.errors.length > 0) return Promise.reject(new F("invalid usage: " + this.errors.join(", "))); + let t = { config: this.config, include: this.includeClassNames, exclude: this.excludeClassNames, overwriteAlias: this.overwriteAlias }; + return this.waitForCompletion ? this._restoreAndWaitForCompletion(t) : this._restore(t); + }; + _restore = (t) => this.client.postReturn(this._path(), t); + _restoreAndWaitForCompletion = (t) => new Promise((r, a) => { + this._restore(t).then((i) => { + this.statusGetter.withBackend(this.backend).withBackupId(this.backupId); + let n = () => { + this.statusGetter.do().then((o) => { + o.status == "SUCCESS" || o.status == "FAILED" || o.status == "CANCELED" ? r(this._merge(o, i)) : setTimeout(n, Em); + }).catch(a); + }; + n(); + }).catch(a); + }); + _path = () => `/backups/${this.backend}/${this.backupId}/restore`; + _merge = (t, r) => { + let a = {}; + return "id" in t && (a.id = t.id), "path" in t && (a.path = t.path), "backend" in t && (a.backend = t.backend), "status" in t && (a.status = t.status), "error" in t && (a.error = t.error), "classes" in r && (a.classes = r.classes), a; + }; +}; +var fo = (e24) => { + let t = (n) => { + if (n.id === void 0) throw new Pt("Backup ID is undefined in response"); + if (n.path === void 0) throw new Pt("Backup path is undefined in response"); + if (n.status === void 0) throw new Pt("Backup status is undefined in response"); + return { id: n.id, error: n.error, path: n.path, status: n.status }; + }, r = (n) => { + if (n.id === void 0) throw new Pt("Backup ID is undefined in response"); + if (n.backend === void 0) throw new Pt("Backup backend is undefined in response"); + if (n.path === void 0) throw new Pt("Backup path is undefined in response"); + if (n.status === void 0) throw new Pt("Backup status is undefined in response"); + return { id: n.id, backend: n.backend, collections: n.classes ? n.classes : [], error: n.error, path: n.path, status: n.status }; + }, a = (n) => new hr(e24).withBackupId(n.backupId).withBackend(n.backend).do().then(t), i = (n) => new yr(e24).withBackupId(n.backupId).withBackend(n.backend).do().then(t); + return { cancel: async (n) => { + let o = []; + if (o = o.concat(St(n.backupId)).concat(Ot(n.backend)), o.length > 0) throw new F(o.join(", ")); + let s = `/backups/${n.backend}/${n.backupId}`, u = n.operation === "restore" ? `${s}/restore` : s; + try { + await e24.delete(u, void 0, false); + } catch (c) { + if (c instanceof Ct) { + if (c.code === 404) return false; + throw new qa(c.message); + } + } + return true; + }, create: async (n) => { + let o = new Er(e24, new hr(e24)).withBackupId(n.backupId).withBackend(n.backend); + n.includeCollections && (o = o.withIncludeClassNames(...n.includeCollections)), n.excludeCollections && (o = o.withExcludeClassNames(...n.excludeCollections)), n.config && (o = o.withConfig({ CompressionLevel: n.config.compressionLevel, CPUPercentage: n.config.cpuPercentage })); + let s; + try { + s = await o.do(); + } catch (c) { + throw new Bt(`Backup creation failed: ${c}`, "creation"); + } + if (s.status === "FAILED") throw new Bt(`Backup creation failed: ${s.error}`, "creation"); + let u; + if (n.waitForCompletion) { + let c = true; + for (; c; ) { + let f2 = await a(n); + if (f2.status === "SUCCESS" && (c = false, u = f2), f2.status === "FAILED") throw new Bt(f2.error ? f2.error : "", "creation"); + if (f2.status === "CANCELED") throw new sa("creation"); + await new Promise((y) => setTimeout(y, 1e3)); + } + } + return u ? { ...r(s), ...u } : r(s); + }, getCreateStatus: a, getRestoreStatus: i, restore: async (n) => { + let o = new Ur(e24, new yr(e24)).withBackupId(n.backupId).withBackend(n.backend); + n.includeCollections && (o = o.withIncludeClassNames(...n.includeCollections)), n.excludeCollections && (o = o.withExcludeClassNames(...n.excludeCollections)), n.config?.overwriteAlias && (o = o.withOverwriteAlias(n.config?.overwriteAlias)), n.config && (o = o.withConfig({ CPUPercentage: n.config.cpuPercentage })); + let s; + try { + s = await o.do(); + } catch (c) { + throw new Bt(`Backup restoration failed: ${c}`, "restoration"); + } + if (s.status === "FAILED") throw new Bt(`Backup restoration failed: ${s.error}`, "restoration"); + let u; + if (n.waitForCompletion) { + let c = true; + for (; c; ) { + let f2 = await i(n); + if (f2.status === "SUCCESS" && (c = false, u = f2), f2.status === "FAILED") throw new Bt(f2.error ? f2.error : "", "restoration"); + if (f2.status === "CANCELED") throw new sa("restoration"); + await new Promise((y) => setTimeout(y, 1e3)); + } + } + return u ? { ...r(s), ...u } : r(s); + }, list: (n, o) => { + let s = `/backups/${n}`; + return o?.startedAtAsc && (s += "?order=asc"), e24.get(s); + } }; +}; +var ep = (e24, t) => { + let r = fo(e24); + return { create: (a) => r.create({ ...a, includeCollections: [t] }), getCreateStatus: r.getCreateStatus, getRestoreStatus: r.getRestoreStatus, restore: (a) => r.restore({ ...a, includeCollections: [t] }) }; +}; +d(); +d(); +function tp(e24) { + return Um("/batch/references", e24); +} +function Um(e24, t) { + return t && t.toString() != "" && (e24 = `${e24}?${t.toString()}`), e24; +} +d(); +d(); +d(); +function Ns(e24) { + if (typeof e24 == "string") { + let t = e24.split("."); + if (t.length >= 2) { + let r = parseInt(t[0], 10), a = parseInt(t[1], 10); + return !(r <= 1 && a < 16); + } + } + return true; +} +d(); +var Dr = class extends O { + className; + consistencyLevel; + id; + tenant; + objectsPath; + constructor(t, r) { + super(t), this.objectsPath = r; + } + withId = (t) => (this.id = t, this); + withClassName = (t) => (this.className = t, this); + withTenant = (t) => (this.tenant = t, this); + withConsistencyLevel = (t) => (this.consistencyLevel = t, this); + buildPath = () => this.objectsPath.buildCheck(this.id, this.className, this.consistencyLevel, this.tenant); + validateIsSet = (t, r, a) => { + (t == null || t == null || t.length == 0) && this.addError(`${r} must be set - set with ${a}`); + }; + validateId = () => { + this.validateIsSet(this.id, "id", ".withId(id)"); + }; + validate = () => { + this.validateId(); + }; + do = () => this.errors.length > 0 ? Promise.reject(new Error("invalid usage: " + this.errors.join(", "))) : (this.validate(), this.buildPath().then((t) => this.client.head(t, void 0))); +}; +d(); +d(); +d(); +d(); +d(); +d(); +var rp = "/objects"; +var Sa = class { + dbVersionSupport; + constructor(t) { + this.dbVersionSupport = t; + } + buildCreate(t) { + return this.build({ consistencyLevel: t }, [this.addQueryParams]); + } + buildDelete(t, r, a, i) { + return this.build({ id: t, className: r, consistencyLevel: a, tenant: i }, [this.addClassNameDeprecatedNotSupportedCheck, this.addId, this.addQueryParams]); + } + buildCheck(t, r, a, i) { + return this.build({ id: t, className: r, consistencyLevel: a, tenant: i }, [this.addClassNameDeprecatedNotSupportedCheck, this.addId, this.addQueryParams]); + } + buildGetOne(t, r, a, i, n, o) { + return this.build({ id: t, className: r, additional: a, consistencyLevel: i, nodeName: n, tenant: o }, [this.addClassNameDeprecatedNotSupportedCheck, this.addId, this.addQueryParams]); + } + buildGet(t, r, a, i, n) { + return this.build({ className: t, limit: r, additional: a, after: i, tenant: n }, [this.addQueryParamsForGet]); + } + buildUpdate(t, r, a) { + return this.build({ id: t, className: r, consistencyLevel: a }, [this.addClassNameDeprecatedCheck, this.addId, this.addQueryParams]); + } + buildMerge(t, r, a) { + return this.build({ id: t, className: r, consistencyLevel: a }, [this.addClassNameDeprecatedCheck, this.addId, this.addQueryParams]); + } + build(t, r) { + return this.dbVersionSupport.supportsClassNameNamespacedEndpointsPromise().then((a) => { + let i = rp; + return r.forEach((n) => { + i = n(t, i, a); + }), i; + }); + } + addClassNameDeprecatedNotSupportedCheck(t, r, a) { + if (a.supports) { + if (M(t.className)) return `${r}/${t.className}`; + a.warns.deprecatedNonClassNameNamespacedEndpointsForObjects(); + } else a.warns.notSupportedClassNamespacedEndpointsForObjects(); + return r; + } + addClassNameDeprecatedCheck(t, r, a) { + if (a.supports) { + if (M(t.className)) return `${r}/${t.className}`; + a.warns.deprecatedNonClassNameNamespacedEndpointsForObjects(); + } + return r; + } + addId(t, r) { + return M(t.id) ? `${r}/${t.id}` : r; + } + addQueryParams(t, r) { + let a = []; + return Array.isArray(t.additional) && t.additional.length > 0 && a.push(`include=${t.additional.join(",")}`), M(t.nodeName) && a.push(`node_name=${t.nodeName}`), M(t.consistencyLevel) && a.push(`consistency_level=${t.consistencyLevel}`), M(t.tenant) && a.push(`tenant=${t.tenant}`), a.length > 0 ? `${r}?${a.join("&")}` : r; + } + addQueryParamsForGet(t, r, a) { + let i = []; + return Array.isArray(t.additional) && t.additional.length > 0 && i.push(`include=${t.additional.join(",")}`), typeof t.limit == "number" && t.limit > 0 && i.push(`limit=${t.limit}`), M(t.className) && (a.supports ? i.push(`class=${t.className}`) : a.warns.notSupportedClassParameterInEndpointsForObjects()), M(t.after) && i.push(`after=${t.after}`), M(t.tenant) && i.push(`tenant=${t.tenant}`), i.length > 0 ? `${r}?${i.join("&")}` : r; + } +}; +var ka = class { + dbVersionSupport; + constructor(t) { + this.dbVersionSupport = t; + } + build(t, r, a, i, n) { + return this.dbVersionSupport.supportsClassNameNamespacedEndpointsPromise().then((o) => { + let s = rp; + o.supports ? M(r) ? s = `${s}/${r}` : o.warns.deprecatedNonClassNameNamespacedEndpointsForReferences() : o.warns.notSupportedClassNamespacedEndpointsForReferences(), o.version && (Ns(o.version) || o.warns.deprecatedWeaviateTooOld()), M(t) && (s = `${s}/${t}`), s = `${s}/references`, M(a) && (s = `${s}/${a}`); + let u = []; + return M(i) && u.push(`consistency_level=${i}`), M(n) && u.push(`tenant=${n}`), u.length > 0 && (s = `${s}?${u.join("&")}`), s; + }); + } +}; +d(); +d(); +d(); +d(); +d(); +d(); +d(); +var Zm = 160 * 1e3; +var po = 10; +var Xm = 1e3; +var jm = 100; +var ip = 4; +var eh = (e24) => e24.type === "error"; +var ap = (e24) => e24.collection !== void 0; +var op = (e24) => e24.fromObjectCollection !== void 0; +function go(e24, t) { + return { stream: async (r) => { + if (!e24.supportsStreaming()) throw new He("Streaming batch (batch.stream / data.ingest) is not supported over gRPC-Web. Use data.insertMany instead."); + let { supports: a, message: i } = await t.supportsServerSideBatching(); + if (!a) throw new Error(i); + let n = new Vs({ consistencyLevel: r, isWcdOnGcp: e24.isWcdOnGcp() }), o = null, s = n.start(e24).catch((c) => { + o = c; + }), u = () => { + if (o) throw o; + return n; + }; + return { addObject: (c) => u().addObject(c), addReference: (c) => u().addReference(c), stop: () => (u().stop(), s), hasErrors: () => Object.keys(n.objErrors).length > 0 || Object.keys(n.refErrors).length > 0, uuids: () => n.uuids, beacons: () => n.beacons, objErrors: () => n.objErrors, refErrors: () => n.refErrors }; + } }; +} +var Vs = class e12 { + consistencyLevel; + queue; + inflightObjs = /* @__PURE__ */ new Set(); + inflightRefs = /* @__PURE__ */ new Set(); + batchSize = 1e3; + objsCache = {}; + refsCache = {}; + pendingObjs = []; + pendingRefs = []; + isStarted = false; + isShuttingDown = false; + isOom = false; + isStopped = false; + isWcdOnGcp = false; + isRenewingStream = false; + oomWaitTime = 300; + objErrors = {}; + refErrors = {}; + uuids = {}; + beacons = {}; + constructor(t) { + this.consistencyLevel = t.consistencyLevel, this.queue = new Os(), this.isWcdOnGcp = t.isWcdOnGcp; + } + async acceptNext(t) { + if (this.isStopped) throw new Error("Batching has been stopped, cannot add more objects"); + for (; t >= this.batchSize || this.isShuttingDown || this.isOom; ) await e12.sleep(po); + } + addObject = (t) => this.acceptNext(this.inflightObjs.size).then(() => (t.id === void 0 && (t.id = v4_default()), this.queue.push(t), t.id)); + addReference = (t) => this.acceptNext(this.inflightRefs.size).then(() => this.queue.push(t)); + static sleep(t) { + return new Promise((r) => setTimeout(r, t)); + } + async *generateStreamRequests(t) { + for (; !this.isStarted; ) console.info("Waiting for server to start the batch ingestion..."), await e12.sleep(po); + let r = Date.now(), a = Ge.create({ data: { objects: { values: this.pendingObjs }, references: { values: this.pendingRefs } } }), i = Ge.encode(a).finish().length, n = i, o = 0, s = 0; + for (; ; ) { + if (this.isShuttingDown) { + console.warn("Server shutting down, closing the client-side of the stream"), this.pendingObjs = a.data?.objects?.values || [], this.pendingRefs = a.data?.references?.values || []; + return; + } + if (this.isWcdOnGcp && Date.now() - r > Zm) { + console.info("GCP connections have a maximum lifetime. Re-establishing the batch stream to avoid timeout errors."), this.isRenewingStream = true, yield Ge.create({ stop: {} }); + return; + } + let u = false, c = Date.now(); + for (; this.isOom; ) { + if (u || (console.warn("Server out-of-memory, waiting for server to recover before resuming batch ingestion..."), this.pendingObjs = a.data?.objects?.values || [], this.pendingRefs = a.data?.references?.values || [], u = true), Date.now() - c > this.oomWaitTime * 1e3) throw new Error(`Batch stream was not re-established within ${this.oomWaitTime} seconds after an OOM message. Terminating batch.`); + await e12.sleep(Xm); + return; + } + let f2 = await this.queue.pull(jm); + if (!(f2 === null && !this.isStopped)) { + if (f2 === null && this.isStopped) { + console.info("Batching stopped by user, closing the client-side of the stream"), (a.data?.objects?.values.length !== void 0 && a.data.objects.values.length > 0 || a.data?.references?.values.length !== void 0 && a.data.references.values.length > 0) && (yield a), yield Ge.create({ stop: {} }); + return; + } + if (ap(f2)) { + let { grpc: y } = x.batchObject(f2.collection, f2, false, f2.tenant); + this.objsCache[y.uuid] = { entry: f2, index: o }; + let P = Ve.encode(y).finish().length + ip; + if (P + i >= t) throw new Error(`Object at index ${o} exceeds the gRPC max message size limit and cannot be sent.`); + if (n + P >= t || a.data.objects.values.length >= this.batchSize) { + for (; this.inflightObjs.size >= this.batchSize; ) await e12.sleep(po); + this.inflightObjs = new Set(a.data?.objects?.values.map((V) => V.uuid)), yield a, a = Ge.create({ data: { objects: { values: [] }, references: { values: [] } } }), n = Ge.encode(a).finish().length; + } + a.data.objects.values.push(y), n += P, o++; + } + if (op(f2)) { + let { grpc: y, beacon: P } = x.batchReference(f2); + this.refsCache[P] = { entry: f2, index: s }; + let V = Oe.encode(y).finish().length + ip; + if (n + V >= t || a.data.references.values.length >= this.batchSize) { + for (; this.inflightRefs.size >= this.batchSize; ) await e12.sleep(po); + this.inflightRefs = new Set(a.data?.references?.values.map((j) => `weaviate://localhost/${j.fromCollection}/${j.fromUuid}/${j.name}`)), yield a, a = Ge.create({ data: { objects: { values: [] }, references: { values: [] } } }), n = Ge.encode(a).finish().length; + } + a.data.references.values.push(y), n += V, s++; + } + } + } + } + async start(t) { + console.info("Starting batch ingestion"); + for await (let r of this.do(t)) if (eh(r)) { + let { index: a, ...i } = r; + ap(i.entry) && (this.objErrors[a] = { message: i.message, object: i.entry }), op(i.entry) && (this.refErrors[a] = { message: i.message, reference: i.entry }); + } else r.type === "success" && (r.uuid !== void 0 && (this.uuids[r.index] = r.uuid), r.beacon !== void 0 && (this.beacons[r.index] = r.beacon)); + if (this.isShuttingDown) return console.warn("Reconnecting after server shutdown..."), await this.reconnect(t), console.warn("Reconnected, resuming batch ingestion..."), this.restart(t); + if (this.isRenewingStream) return console.info("Restarting batch recv after renewing stream..."), this.isRenewingStream = false, this.restart(t); + } + async reconnect(t, r = 0) { + try { + await t.reconnect(); + } catch { + if (r >= 5) throw new Error("Failed to reconnect after server shutdown"); + return console.warn(`Reconnect attempt ${r + 1} failed, retrying...`), await e12.sleep(2 ** r * 1e3), this.reconnect(t, r + 1); + } + } + restart(t) { + return this.isStarted = false, this.start(t); + } + stop() { + this.isStopped = true; + } + async *do(t) { + let r = await t.batch("", this.consistencyLevel).then((a) => a.withStream(this.generateStreamRequests(t.grpcMaxMessageLength))); + for await (let a of r) if (a.acks !== void 0 && (this.inflightObjs = this.inflightObjs.difference(new Set(a.acks.uuids)), this.inflightRefs = this.inflightRefs.difference(new Set(a.acks.beacons))), a.backoff !== void 0 && (this.batchSize = a.backoff.batchSize), a.outOfMemory !== void 0 && (this.isOom = true, this.oomWaitTime = a.outOfMemory.waitTime, a.outOfMemory.uuids.forEach((i) => this.queue.push(this.objsCache[i].entry)), a.outOfMemory.beacons.forEach((i) => this.queue.push(this.refsCache[i].entry)), this.inflightObjs = this.inflightObjs.difference(new Set(a.outOfMemory.uuids)), this.inflightRefs = this.inflightRefs.difference(new Set(a.outOfMemory.beacons))), a.shuttingDown !== void 0 && (console.warn("Received shutting down signal from server"), this.isShuttingDown = true, this.isOom = false), a.started !== void 0 && (this.isStarted = true), a.results !== void 0) { + for (let i of a.results.errors) { + if (i.uuid !== void 0) { + let n = this.objsCache[i.uuid]; + if (n === void 0) continue; + yield { index: n.index, message: i.error, entry: n.entry, type: "error" }, delete this.objsCache[i.uuid]; + } + if (i.beacon !== void 0) { + let n = this.refsCache[i.beacon]; + if (n === void 0) continue; + yield { index: n.index, message: i.error, entry: n.entry, type: "error" }, delete this.refsCache[i.beacon]; + } + } + for (let i of a.results.successes) { + if (i.uuid !== void 0) { + let n = this.objsCache[i.uuid]; + if (n === void 0) continue; + yield { index: n.index, uuid: i.uuid, type: "success" }, delete this.objsCache[i.uuid]; + } + if (i.beacon !== void 0) { + let n = this.refsCache[i.beacon]; + if (n === void 0) continue; + yield { index: n.index, beacon: i.beacon, type: "success" }, delete this.refsCache[i.beacon]; + } + } + } + console.info("Server closed its side of the stream"); + } +}; +var Os = class { + resolvers; + promises; + constructor() { + this.resolvers = new import_deque.Deque(), this.promises = new import_deque.Deque(); + } + _add() { + this.promises.pushBack(new Promise((t) => this.resolvers.pushBack(t))); + } + _readd(t) { + this.promises.pushFront(t); + } + push(t) { + this.resolvers.size() || this._add(), this.resolvers.popFront()(t); + } + pull(t) { + this.promises.size() || this._add(); + let r = this.promises.popFront(); + if (t === void 0) return r; + let a, i = r.then((s) => (clearTimeout(o), s)), n = new Promise((s) => { + a = s; + }), o = setTimeout(() => { + this._readd(r), a(null); + }, t); + return Promise.race([i, n]); + } + get length() { + return this.promises.size() - this.resolvers.size(); + } +}; +var th = (e24, t, r) => (t && (e24 = e24.withConsistencyLevel(t)), r && (e24 = e24.withTenant(r)), e24); +var rh = (e24, t, r, a, i) => { + let n = new Sa(r), o = new ka(r), s = async (u) => { + if (!u) return {}; + let c = { id: u.id, properties: u.properties ? x.restProperties(u.properties, u.references) : void 0 }; + return Array.isArray(u.vectors) ? (await r.requiresNamedVectorsInsertFix()).supports ? (c.vector = u.vectors, c.vectors = { default: u.vectors }) : c.vector = u.vectors : u.vectors && (c.vectors = u.vectors), c; + }; + return { deleteById: (u) => n.buildDelete(u, t, a, i).then((c) => e24.delete(c, void 0, false)).then(() => true), deleteMany: (u, c) => e24.batch(t, a, i).then((f2) => f2.withDelete({ filters: x.filtersGRPC(u), dryRun: c?.dryRun, verbose: c?.verbose })).then((f2) => Y.deleteMany(f2, c?.verbose)), exists: (u) => th(new Dr(e24, n).withId(u).withClassName(t), a, i).do(), ingest: async (u) => { + let c = [], f2 = await go(e24, r).stream(a), y = Date.now(); + for (let S of u) await f2.addObject({ collection: t, ...S, tenant: i }); + await f2.stop(); + let P = f2.objErrors(), V = f2.uuids(); + for (let S = 0; S < Object.keys(V).length + Object.keys(P).length; S++) V[S] ? c.push(V[S]) : P[S] && c.push(P[S]); + let D = (Date.now() - y) / 1e3; + return { allResponses: c, elapsedSeconds: D, errors: P, uuids: V, hasErrors: Object.keys(P).length > 0 }; + }, insert: (u) => Promise.all([n.buildCreate(a), s(u && (oe.isDataObject(u) ? u : { properties: u }))]).then(([c, f2]) => e24.postReturn(c, { class: t, tenant: i, ...f2 }).then((y) => y.id)), insertMany: (u) => e24.batch(t, a).then(async (c) => { + let f2 = await r.requiresNamedVectorsInsertFix(), y = await x.batchObjects(t, u, f2.supports, i), P = Date.now(), V = await c.withObjects({ objects: y.mapped }), D = (Date.now() - P) / 1e3; + return Y.batchObjects(V, y.batch, y.mapped, D); + }), referenceAdd: (u) => o.build(u.fromUuid, t, u.fromProperty, a, i).then((c) => Promise.all(Aa(u.to).map((f2) => e24.postEmpty(c, f2)))).then(() => { + }), referenceAddMany: (u) => { + let c = tp(new URLSearchParams(a ? { consistency_level: a } : {})), f2 = []; + u.forEach((P) => { + Aa(P.to).forEach((V) => { + f2.push({ from: `weaviate://localhost/${t}/${P.fromUuid}/${P.fromProperty}`, to: V.beacon, tenant: i }); + }); + }); + let y = Date.now(); + return e24.postReturn(c, f2).then((P) => { + let V = Date.now(), j = {}; + return P.forEach((D, S) => { + D.result?.status === "FAILED" && (j[S] = { message: D.result?.errors?.error?.[0].message ? D.result?.errors?.error?.[0].message : "unknown error", reference: f2[S] }); + }), { elapsedSeconds: (V - y) / 1e3, errors: j, hasErrors: Object.keys(j).length > 0 }; + }); + }, referenceDelete: (u) => o.build(u.fromUuid, t, u.fromProperty, a, i).then((c) => Promise.all(Aa(u.to).map((f2) => e24.delete(c, f2, false)))).then(() => { + }), referenceReplace: (u) => o.build(u.fromUuid, t, u.fromProperty, a, i).then((c) => e24.put(c, Aa(u.to), false)), replace: (u) => Promise.all([n.buildUpdate(u.id, t, a), s(u)]).then(([c, f2]) => e24.put(c, { class: t, tenant: i, ...f2 })), update: (u) => Promise.all([n.buildUpdate(u.id, t, a), s(u)]).then(([c, f2]) => e24.patch(c, { class: t, tenant: i, ...f2 })) }; +}; +var sp = rh; +d(); +d(); +var ea = class { + connection; + name; + dbVersionSupport; + consistencyLevel; + tenant; + constructor(t, r, a, i, n) { + this.connection = t, this.name = r, this.dbVersionSupport = a, this.consistencyLevel = i, this.tenant = n; + } + getSearcher = (t) => this.connection.search(this.name, this.consistencyLevel, this.tenant, t?.abortSignal); + checkSupportForVectors = async (t) => t === void 0 || x.isHybridNearTextSearch(t) ? false : (await this.dbVersionSupport.supportsVectorsFieldInGRPC()).supports; + supportForSingleGroupedGenerative = async () => { + let t = await this.dbVersionSupport.supportsSingleGrouped(); + if (!t.supports) throw new He(t.message); + return t.supports; + }; + supportForGenerativeConfigRuntime = async (t) => { + if (t === void 0) return true; + let r = await this.dbVersionSupport.supportsGenerativeConfigRuntime(); + if (!r.supports) throw new He(r.message); + return r.supports; + }; + nearSearch = (t) => this.getSearcher(t).then((r) => ({ search: r })); + nearVector = (t, r, a) => Promise.all([this.getSearcher(a), this.checkSupportForVectors(t)]).then(([i, n]) => ({ search: i, supportsVectors: n })); + hybridSearch = (t, r) => Promise.all([this.getSearcher(r), this.checkSupportForVectors(t?.vector)]).then(([a, i]) => ({ search: a, supportsVectors: i })); + fetchObjects = (t) => this.getSearcher(t).then((r) => ({ search: r })); + fetchObjectById = (t) => this.getSearcher(t).then((r) => ({ search: r })); + bm25 = (t) => this.getSearcher(t).then((r) => ({ search: r })); +}; +d(); +var nh = { anthropic(e24) { + let { baseURL: t, stopSequences: r, ...a } = e24 || {}; + return { name: "generative-anthropic", config: e24 ? { ...a, baseUrl: t, stopSequences: m.fromPartial({ values: r }) } : void 0 }; +}, anyscale(e24) { + let { baseURL: t, ...r } = e24 || {}; + return { name: "generative-anyscale", config: e24 ? { ...r, baseUrl: t } : void 0 }; +}, aws(e24) { + return { name: "generative-aws", config: e24 }; +}, azureOpenAI: (e24) => { + let { baseURL: t, stop: r, ...a } = e24 || {}; + return { name: "generative-azure-openai", config: e24 ? { ...a, baseUrl: t, isAzure: true, stop: m.fromPartial({ values: r }) } : { isAzure: true } }; +}, cohere: (e24) => { + let { baseURL: t, stopSequences: r, ...a } = e24 || {}; + return { name: "generative-cohere", config: e24 ? { ...a, baseUrl: t, stopSequences: m.fromPartial({ values: r }) } : void 0 }; +}, databricks: (e24) => { + let { stop: t, ...r } = e24 || {}; + return { name: "generative-databricks", config: e24 ? { ...r, stop: m.fromPartial({ values: t }) } : void 0 }; +}, friendliai(e24) { + let { baseURL: t, ...r } = e24 || {}; + return { name: "generative-friendliai", config: e24 ? { ...r, baseUrl: t } : void 0 }; +}, mistral(e24) { + let { baseURL: t, ...r } = e24 || {}; + return { name: "generative-mistral", config: e24 ? { baseUrl: t, ...r } : void 0 }; +}, nvidia(e24) { + let { baseURL: t, ...r } = e24 || {}; + return { name: "generative-nvidia", config: e24 ? { ...r, baseUrl: t } : void 0 }; +}, ollama(e24) { + return { name: "generative-ollama", config: e24 }; +}, openAI: (e24) => { + let { baseURL: t, stop: r, ...a } = e24 || {}; + return { name: "generative-openai", config: e24 ? { ...a, baseUrl: t, isAzure: false, stop: m.fromPartial({ values: r }) } : { isAzure: false } }; +}, google: (e24) => { + let { stopSequences: t, ...r } = e24 || {}; + return { name: "generative-google", config: e24 ? { ...r, stopSequences: m.fromPartial({ values: t }) } : void 0 }; +}, xai: (e24) => { + let { baseURL: t, ...r } = e24 || {}; + return { name: "generative-xai", config: e24 ? { ...r, baseUrl: t } : void 0 }; +}, contextualai(e24) { + let { knowledge: t, ...r } = e24 || {}; + return { name: "generative-contextualai", config: e24 ? { ...r, knowledge: t ? m.fromPartial({ values: t }) : void 0 } : void 0 }; +} }; +d(); +var Ss = class e13 { + check; + constructor(t) { + this.check = t; + } + static use(t, r, a, i, n) { + return new e13(new ea(t, r, a, i, n)); + } + async parseReply(t) { + return (await Y.use(this.check.dbVersionSupport)).generate(t); + } + async parseGroupByReply(t, r) { + let a = await Y.use(this.check.dbVersionSupport); + return x.search.isGroupBy(t) ? a.generateGroupBy(r) : a.generate(r); + } + fetchObjects(t, r, a) { + return Promise.all([this.check.fetchObjects(a), this.check.supportForSingleGroupedGenerative(), this.check.supportForGenerativeConfigRuntime(t.config)]).then(async ([{ search: i }, n]) => ({ search: i, args: { ...x.search.fetchObjects(r), generative: await x.generative({ supportsSingleGrouped: n }, t) } })).then(({ search: i, args: n }) => i.withFetch(n)).then((i) => this.parseReply(i)); + } + bm25(t, r, a, i) { + return Promise.all([this.check.bm25(i), this.check.supportForSingleGroupedGenerative(), this.check.supportForGenerativeConfigRuntime(r.config)]).then(async ([{ search: n }, o]) => ({ search: n, args: { ...x.search.bm25(t, a), generative: await x.generative({ supportsSingleGrouped: o }, r) } })).then(({ search: n, args: o }) => n.withBm25(o)).then((n) => this.parseGroupByReply(a, n)); + } + hybrid(t, r, a, i) { + return Promise.all([this.check.hybridSearch(a, i), this.check.supportForSingleGroupedGenerative(), this.check.supportForGenerativeConfigRuntime(r.config)]).then(async ([{ search: n, supportsVectors: o }, s]) => ({ search: n, args: { ...await x.search.hybrid({ query: t, supportsVectors: o }, a), generative: await x.generative({ supportsSingleGrouped: s }, r) } })).then(({ search: n, args: o }) => n.withHybrid(o)).then((n) => this.parseGroupByReply(a, n)); + } + nearImage(t, r, a, i) { + return Promise.all([this.check.nearSearch(i), this.check.supportForSingleGroupedGenerative(), this.check.supportForGenerativeConfigRuntime(r.config)]).then(async ([{ search: n }, o]) => ({ search: n, args: { ...x.search.nearImage({ image: await lt(t) }, a), generative: await x.generative({ supportsSingleGrouped: o }, r) } })).then(({ search: n, args: o }) => n.withNearImage(o)).then((n) => this.parseGroupByReply(a, n)); + } + nearObject(t, r, a, i) { + return Promise.all([this.check.nearSearch(i), this.check.supportForSingleGroupedGenerative(), this.check.supportForGenerativeConfigRuntime(r.config)]).then(async ([{ search: n }, o]) => ({ search: n, args: { ...x.search.nearObject({ id: t }, a), generative: await x.generative({ supportsSingleGrouped: o }, r) } })).then(({ search: n, args: o }) => n.withNearObject(o)).then((n) => this.parseGroupByReply(a, n)); + } + nearText(t, r, a, i) { + return Promise.all([this.check.nearSearch(i), this.check.supportForSingleGroupedGenerative(), this.check.supportForGenerativeConfigRuntime(r.config)]).then(async ([{ search: n }, o]) => ({ search: n, args: { ...x.search.nearText({ query: t }, a), generative: await x.generative({ supportsSingleGrouped: o }, r) } })).then(({ search: n, args: o }) => n.withNearText(o)).then((n) => this.parseGroupByReply(a, n)); + } + nearVector(t, r, a, i) { + return Promise.all([this.check.nearVector(t, a, i), this.check.supportForSingleGroupedGenerative(), this.check.supportForGenerativeConfigRuntime(r.config)]).then(async ([{ search: n, supportsVectors: o }, s]) => ({ search: n, args: { ...await x.search.nearVector({ vector: t, supportsVectors: o }, a), generative: await x.generative({ supportsSingleGrouped: s }, r) } })).then(({ search: n, args: o }) => n.withNearVector(o)).then((n) => this.parseGroupByReply(a, n)); + } + nearMedia(t, r, a, i, n) { + return Promise.all([this.check.nearSearch(n), this.check.supportForSingleGroupedGenerative(), this.check.supportForGenerativeConfigRuntime(a.config)]).then(([{ search: o }, s]) => { + let u; + switch (r) { + case "audio": + u = (c, f2) => o.withNearAudio({ ...x.search.nearAudio({ audio: c }, i), generative: f2 }); + break; + case "depth": + u = (c, f2) => o.withNearDepth({ ...x.search.nearDepth({ depth: c }, i), generative: f2 }); + break; + case "image": + u = (c, f2) => o.withNearImage({ ...x.search.nearImage({ image: c }, i), generative: f2 }); + break; + case "imu": + u = (c, f2) => o.withNearIMU({ ...x.search.nearIMU({ imu: c }, i), generative: f2 }); + break; + case "thermal": + u = (c, f2) => o.withNearThermal({ ...x.search.nearThermal({ thermal: c }, i), generative: f2 }); + break; + case "video": + u = (c, f2) => o.withNearVideo({ ...x.search.nearVideo({ video: c }), generative: f2 }); + break; + default: + throw new F(`Invalid media type: ${r}`); + } + return Promise.all([lt(t), x.generative({ supportsSingleGrouped: s }, a)]).then(([c, f2]) => u(c, f2)); + }).then((o) => this.parseGroupByReply(i, o)); + } +}; +var up = Ss.use; +d(); +var ih = 100; +var mo = class { + constructor(t) { + this.query = t; + this.query = t; + } + cache = []; + last = void 0; + [Symbol.asyncIterator]() { + return { next: async () => { + let t = await this.query(ih, this.last); + if (this.cache = t, this.cache.length == 0) return { done: true, value: void 0 }; + let r = this.cache.shift(); + if (r === void 0) throw new b("Object iterator returned an object that is undefined"); + if (this.last = r?.uuid, this.last === void 0) throw new b("Object iterator returned an object without a UUID"); + return { done: false, value: r }; + } }; + } +}; +d(); +d(); +var ah = { nearText: () => { +}, nearVector: () => { +} }; +var oh = { listOfVectors: (...e24) => ({ kind: "listOfVectors", dimensionality: Te.is1D(e24[0]) ? "1D" : "2D", vectors: e24 }) }; +var ks = { hybridVector: ah, nearVector: oh }; +d(); +var Is = class e14 { + check; + constructor(t) { + this.check = t; + } + static use(t, r, a, i, n) { + return new e14(new ea(t, r, a, i, n)); + } + async parseReply(t) { + return (await Y.use(this.check.dbVersionSupport)).query(t); + } + async parseGroupByReply(t, r) { + let a = await Y.use(this.check.dbVersionSupport); + return x.search.isGroupBy(t) ? a.queryGroupBy(r) : a.query(r); + } + fetchObjectById(t, r, a) { + return this.check.fetchObjectById(a).then(({ search: i }) => i.withFetch(x.search.fetchObjectById({ id: t, ...r }))).then((i) => this.parseReply(i)).then((i) => i.objects.length === 1 ? i.objects[0] : null); + } + fetchObjects(t, r) { + return this.check.fetchObjects(r).then(({ search: a }) => a.withFetch(x.search.fetchObjects(t))).then((a) => this.parseReply(a)); + } + bm25(t, r, a) { + return this.check.bm25(a).then(({ search: i }) => i.withBm25(x.search.bm25(t, r))).then((i) => this.parseGroupByReply(r, i)); + } + hybrid(t, r, a) { + return this.check.hybridSearch(r, a).then(async ({ search: i, supportsVectors: n }) => ({ search: i, args: await x.search.hybrid({ query: t, supportsVectors: n }, r) })).then(({ search: i, args: n }) => i.withHybrid(n)).then((i) => this.parseGroupByReply(r, i)); + } + nearImage(t, r, a) { + return this.check.nearSearch(a).then(({ search: i }) => lt(t).then((n) => ({ search: i, args: x.search.nearImage({ image: n }, r) }))).then(({ search: i, args: n }) => i.withNearImage(n)).then((i) => this.parseGroupByReply(r, i)); + } + nearMedia(t, r, a, i) { + return this.check.nearSearch(i).then(({ search: n }) => { + let o; + switch (r) { + case "audio": + o = (s) => n.withNearAudio(x.search.nearAudio({ audio: s }, a)); + break; + case "depth": + o = (s) => n.withNearDepth(x.search.nearDepth({ depth: s }, a)); + break; + case "image": + o = (s) => n.withNearImage(x.search.nearImage({ image: s }, a)); + break; + case "imu": + o = (s) => n.withNearIMU(x.search.nearIMU({ imu: s }, a)); + break; + case "thermal": + o = (s) => n.withNearThermal(x.search.nearThermal({ thermal: s }, a)); + break; + case "video": + o = (s) => n.withNearVideo(x.search.nearVideo({ video: s })); + break; + default: + throw new F(`Invalid media type: ${r}`); + } + return lt(t).then(o); + }).then((n) => this.parseGroupByReply(a, n)); + } + nearObject(t, r, a) { + return this.check.nearSearch(a).then(({ search: i }) => ({ search: i, args: x.search.nearObject({ id: t }, r) })).then(({ search: i, args: n }) => i.withNearObject(n)).then((i) => this.parseGroupByReply(r, i)); + } + nearText(t, r, a) { + return this.check.nearSearch(a).then(({ search: i }) => ({ search: i, args: x.search.nearText({ query: t }, r) })).then(({ search: i, args: n }) => i.withNearText(n)).then((i) => this.parseGroupByReply(r, i)); + } + nearVector(t, r, a) { + return this.check.nearVector(t, r, a).then(async ({ search: i, supportsVectors: n }) => ({ search: i, args: await x.search.nearVector({ vector: t, supportsVectors: n }, r) })).then(({ search: i, args: n }) => i.withNearVector(n)).then((i) => this.parseGroupByReply(r, i)); + } +}; +var dp = Is.use; +d(); +d(); +var Fr = class { + sorts; + constructor() { + this.sorts = []; + } + byProperty(t, r = true) { + return this.sorts.push({ property: t, ascending: r }), this; + } + byId(t = true) { + return this.sorts.push({ property: "_id", ascending: t }), this; + } + byCreationTime(t = true) { + return this.sorts.push({ property: "_creationTimeUnix", ascending: t }), this; + } + byUpdateTime(t = true) { + return this.sorts.push({ property: "_lastUpdateTimeUnix", ascending: t }), this; + } +}; +var sh = () => ({ byProperty(e24, t = true) { + return new Fr().byProperty(e24, t); +}, byId(e24 = true) { + return new Fr().byId(e24); +}, byCreationTime(e24 = true) { + return new Fr().byCreationTime(e24); +}, byUpdateTime(e24 = true) { + return new Fr().byUpdateTime(e24); +} }); +var cp = sh; +d(); +d(); +var ta = (e24) => Array.isArray(e24) ? e24 : [e24]; +var ra = (e24) => typeof e24 == "string" ? e24 : e24.name; +var _s = (e24) => ({ name: e24.name, activityStatus: Y.activityStatusREST(e24.activityStatus) }); +var uh = (e24, t, r) => { + let a = (n) => e24.tenants(t).then((o) => o.withGet({ names: n })).then(Y.tenantsGet), i = async (n) => { + let o = []; + for await (let s of x.tenants(ta(n), x.tenantUpdate).map((u) => new Rr(e24, t, u).do().then((c) => c.map(_s)))) o.push(...s); + return o; + }; + return { create: (n) => new Cr(e24, t, ta(n).map(x.tenantCreate)).do().then((o) => o.map(_s)), get: () => a(), getByNames: (n) => a(n.map(ra)), getByName: async (n) => { + let o = ra(n); + return await r.supportsTenantGetRESTMethod().then((s) => !s.supports) ? a([o]).then((s) => s[o] ?? null) : e24.get(`/schema/${t}/tenants/${o}`).then(_s).catch((s) => { + if (s instanceof Ct && s.code === 404) return null; + throw s; + }); + }, remove: (n) => new Pr(e24, t, ta(n).map(ra)).do(), update: i, activate: (n) => i(ta(n).map((o) => ({ name: ra(o), activityStatus: "ACTIVE" }))), deactivate: (n) => i(ta(n).map((o) => ({ name: ra(o), activityStatus: "INACTIVE" }))), offload: (n) => i(ta(n).map((o) => ({ name: ra(o), activityStatus: "OFFLOADED" }))) }; +}; +var lp = uh; +d(); +var fp = () => ({ sum: (e24) => ({ combination: "sum", targetVectors: e24 }), average: (e24) => ({ combination: "average", targetVectors: e24 }), minimum: (e24) => ({ combination: "minimum", targetVectors: e24 }), relativeScore: (e24) => ({ combination: "relative-score", targetVectors: Object.keys(e24), weights: e24 }), manualWeights: (e24) => ({ combination: "manual-weights", targetVectors: Object.keys(e24), weights: e24 }) }); +var dh = (e24) => typeof e24 == "string"; +var ch = (e24) => e24.charAt(0).toUpperCase() + e24.slice(1); +var Bs = (e24, t, r, a, i) => { + if (!dh(t)) throw new F(`The collection name must be a string, got: ${typeof t}`); + let n = ch(t), o = jf(e24, n, r, a, i), s = dp(e24, n, r, a, i); + return { aggregate: o, backup: ep(e24, n), config: hu(e24, n, r, i), data: sp(e24, n, r, a, i), filter: ao(), generate: up(e24, n, r, a, i), metrics: Xf(), multiTargetVector: fp(), name: t, query: s, sort: cp(), tenants: lp(e24, n, r), exists: () => new Ht(e24).withClassName(n).do(), iterator: (u) => new mo((c, f2) => s.fetchObjects({ limit: c, after: f2, includeVector: u?.includeVector, returnMetadata: u?.returnMetadata, returnProperties: u?.returnProperties, returnReferences: u?.returnReferences }).then((y) => y.objects)), length: () => o.overAll().then(({ totalCount: u }) => u), withConsistency: (u) => Bs(e24, n, r, u, i), withTenant: (u) => Bs(e24, n, r, a, typeof u == "string" ? u : u.name) }; +}; +var na = Bs; +d(); +d(); +d(); +var lh = (e24) => ({ nodes: (t) => { + let r = new URLSearchParams(), a = "/nodes"; + return t?.collection && (a = a.concat(`/${t.collection}`)), r.append("output", t?.output ? t.output : "minimal"), e24.get(`${a}?${r.toString()}`).then((i) => i.nodes); +}, queryShardingState: (t, r) => { + let a = new URLSearchParams(); + return a.append("collection", t), r?.shard && a.append("shard", r.shard), e24.get(`/replication/sharding-state?${a.toString()}`).then((i) => i); +}, replicate: (t) => e24.postReturn("/replication/replicate", (({ replicationType: r, ...a }) => ({ type: r, ...a }))(t)).then((r) => r.id), replications: { cancel: (t) => e24.postEmpty(`/replication/replicate/${t}/cancel`, {}), delete: (t) => e24.delete(`/replication/replicate/${t}`, {}, false), deleteAll: () => e24.delete("/replication/replicate", {}, false), get: (t, r) => e24.get(`/replication/replicate/${t}?includeHistory=${r?.includeHistory ? r?.includeHistory : "false"}`).then((a) => a || null), query: (t) => { + let { collection: r, shard: a, targetNode: i, includeHistory: n } = t || {}, o = new URLSearchParams(); + return r && o.append("collection", r), a && o.append("shard", a), i && o.append("targetNode", i), n && o.append("includeHistory", n.toString()), e24.get(`/replication/replicate?${o.toString()}`); +} } }); +var pp = lh; +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +d(); +var fh = (e24, t) => { + let r = () => new Qt(e24).do().then((i) => i.classes ? i.classes.map(da) : []), a = (i) => new $t(e24).withClassName(i).do(); + return { create: async function(i) { + let { name: n, invertedIndex: o, multiTenancy: s, objectTTL: u, replication: c, sharding: f2, ...y } = i, P = {}; + if (i.generative) { + let zr = i.generative.name === "generative-azure-openai" ? "generative-openai" : i.generative.name; + P[zr] = i.generative.config ? i.generative.config : {}; + } + i.reranker && (P[i.reranker.name] = i.reranker.config ? i.reranker.config : {}); + let V; + u && (V = { enabled: u.enabled, deleteOn: u.deleteOn, defaultTtl: u.defaultTTLSeconds, filterExpiredObjects: u.filterExpiredObjects }); + let j = { ...y, class: n, invertedIndexConfig: o, moduleConfig: P, multiTenancyConfig: s, objectTtlConfig: V, replicationConfig: c, shardingConfig: f2 }, { vectorsConfig: D, vectorizers: S } = i.vectorizers ? Ya(i.vectorizers) : { vectorsConfig: void 0, vectorizers: [] }, { supports: kt } = await t.supportsServerSideDefaultVectorIndexType(); + if (!kt && D) for (let zr of Object.values(D)) zr.vectorIndexType || (zr.vectorIndexType = "hnsw"); + j.vectorConfig = D; + let Fp = i.properties ? i.properties.map((zr) => Qa(zr, S)) : [], Wp = i.references ? i.references.map(Ka) : []; + return j.properties = [...Fp, ...Wp], await new zt(e24).withClass(j).do(), na(e24, n, t); + }, createFromSchema: async function(i) { + let { class: n } = await new zt(e24).withClass(i).do(); + return na(e24, n, t); + }, createFromJson: async (i) => { + let { class: n } = await e24.postReturn("/schema", i); + return na(e24, n, t); + }, delete: a, deleteAll: () => r().then((i) => Promise.all(i?.map((n) => a(n.name)))), exists: (i) => new Ht(e24).withClassName(i).do(), export: (i) => new st(e24).withClassName(i).do().then(da), exportToJson: (i) => e24.get(`/schema/${i}`, true), listAll: r, get: (i) => na(e24, i, t), use: (i) => na(e24, i, t) }; +}; +var gp = fh; +d(); +d(); +var ph = (e24) => ({ create: (t) => e24.postReturn("/aliases/", { ...t, class: t.collection }), listAll: (t) => e24.get(`/aliases${t?.collection !== void 0 ? "/?class=" + t.collection : ""}`).then((r) => r.aliases !== void 0 ? r.aliases.map((a) => ({ alias: a.alias, collection: a.class })) : []), get: (t) => e24.get(`/aliases/${t}`).then((r) => ({ alias: r.alias, collection: r.class })), update: (t) => e24.put(`/aliases/${t.alias}`, { class: t.newTargetCollection }), delete: (t) => e24.delete(`/aliases/${t}`, null) }); +var mp = ph; +d(); +d(); +var gh = "0001-01-01T00:00:00.000Z"; +var Me = class e15 { + static includes = (t, ...r) => r.filter((a) => Array.from(t.actions).includes(a)).length > 0; + static isAlias = (t) => e15.includes(t, "create_aliases", "read_aliases", "update_aliases", "delete_aliases"); + static isBackups = (t) => e15.includes(t, "manage_backups"); + static isMcp = (t) => e15.includes(t, "create_mcp", "read_mcp", "update_mcp"); + static isCluster = (t) => e15.includes(t, "read_cluster"); + static isCollections = (t) => e15.includes(t, "create_collections", "delete_collections", "read_collections", "update_collections"); + static isData = (t) => e15.includes(t, "create_data", "delete_data", "read_data", "update_data"); + static isGroups = (t) => e15.includes(t, "read_groups", "assign_and_revoke_groups"); + static isNodes = (t) => e15.includes(t, "read_nodes"); + static isReplicate = (t) => e15.includes(t, "create_replicate", "read_replicate", "update_replicate", "delete_replicate"); + static isRoles = (t) => e15.includes(t, "create_roles", "read_roles", "update_roles", "delete_roles"); + static isTenants = (t) => e15.includes(t, "create_tenants", "delete_tenants", "read_tenants", "update_tenants"); + static isUsers = (t) => e15.includes(t, "read_users", "assign_and_revoke_users"); + static isPermission = (t) => !Array.isArray(t); + static isPermissionArray = (t) => Array.isArray(t) && t.every(e15.isPermission); + static isPermissionMatrix = (t) => Array.isArray(t) && t.every(e15.isPermissionArray); + static isPermissionTuple = (t) => Array.isArray(t) && t.every((r) => e15.isPermission(r) || e15.isPermissionArray(r)); +}; +var ee = class e16 { + static flattenPermissions = (t) => Array.isArray(t) ? t.flat(2) : [t]; + static permissionToWeaviate = (t) => { + if (Me.isAlias(t)) return Array.from(t.actions).map((r) => ({ aliases: t, action: r })); + if (Me.isBackups(t)) return Array.from(t.actions).map((r) => ({ backups: t, action: r })); + if (Me.isMcp(t)) return Array.from(t.actions).map((r) => ({ action: r })); + if (Me.isCluster(t)) return Array.from(t.actions).map((r) => ({ action: r })); + if (Me.isCollections(t)) return Array.from(t.actions).map((r) => ({ collections: t, action: r })); + if (Me.isData(t)) return Array.from(t.actions).map((r) => ({ data: t, action: r })); + if (Me.isGroups(t)) return Array.from(t.actions).map((r) => ({ groups: { group: t.groupID, groupType: t.groupType }, action: r })); + if (Me.isNodes(t)) return Array.from(t.actions).map((r) => ({ nodes: t, action: r })); + if (Me.isReplicate(t)) return Array.from(t.actions).map((r) => ({ replicate: t, action: r })); + if (Me.isRoles(t)) return Array.from(t.actions).map((r) => ({ roles: t, action: r })); + if (Me.isTenants(t)) return Array.from(t.actions).map((r) => ({ tenants: t, action: r })); + if (Me.isUsers(t)) return Array.from(t.actions).map((r) => ({ users: t, action: r })); + throw new Error(`Unknown permission type: ${JSON.stringify(t, null, 2)}`); + }; + static roleFromWeaviate = (t) => Gs.use(t).map(); + static roles = (t) => t.reduce((r, a) => ({ ...r, [a.name]: e16.roleFromWeaviate(a) }), {}); + static groupsAssignments = (t) => t.map((r) => ({ groupID: r.groupId || "", groupType: r.groupType })); + static users = (t) => t.reduce((r, a) => ({ ...r, [a]: { id: a } }), {}); + static user = (t) => ({ id: t.username, roles: t.roles?.map(e16.roleFromWeaviate) }); + static dbUser = (t) => ({ userType: t.dbUserType, id: t.userId, roleNames: t.roles, active: t.active, createdAt: e16.unknownDate(t.createdAt), lastUsedAt: e16.unknownDate(t.lastUsedAt), apiKeyFirstLetters: t.apiKeyFirstLetters }); + static dbUsers = (t) => t.map(e16.dbUser); + static assignedUsers = (t) => t.map((r) => ({ id: r.userId || "", userType: r.userType })); + static unknownDate = (t) => t !== void 0 && typeof t == "string" && t !== gh ? new Date(t) : void 0; +}; +var Gs = class e17 { + mappings; + role; + constructor(t) { + this.mappings = { aliases: {}, backups: {}, cluster: {}, collections: {}, data: {}, groups: {}, mcp: {}, nodes: {}, replicate: {}, roles: {}, tenants: {}, users: {} }, this.role = t; + } + static use = (t) => new e17(t); + map = () => (this.role.permissions !== null && this.role.permissions.forEach(this.permissionFromWeaviate), { name: this.role.name, aliasPermissions: Object.values(this.mappings.aliases), backupsPermissions: Object.values(this.mappings.backups), clusterPermissions: Object.values(this.mappings.cluster), collectionsPermissions: Object.values(this.mappings.collections), dataPermissions: Object.values(this.mappings.data), groupsPermissions: Object.values(this.mappings.groups), mcpPermissions: Object.values(this.mappings.mcp), nodesPermissions: Object.values(this.mappings.nodes), replicatePermissions: Object.values(this.mappings.replicate), rolesPermissions: Object.values(this.mappings.roles), tenantsPermissions: Object.values(this.mappings.tenants), usersPermissions: Object.values(this.mappings.users) }); + aliases = (t) => { + if (t.aliases !== void 0) { + let { alias: r, collection: a } = t.aliases; + if (r === void 0) throw new Error("Alias permission missing an alias"); + this.mappings.aliases[r] === void 0 && (this.mappings.aliases[r] = { alias: r, collection: a || "*", actions: [] }), this.mappings.aliases[r].actions.push(t.action); + } + }; + backups = (t) => { + if (t.backups !== void 0) { + let r = t.backups.collection; + if (r === void 0) throw new Error("Backups permission missing collection"); + this.mappings.backups[r] === void 0 && (this.mappings.backups[r] = { collection: r, actions: [] }), this.mappings.backups[r].actions.push(t.action); + } + }; + mcp = (t) => { + (t.action === "create_mcp" || t.action === "read_mcp" || t.action === "update_mcp") && (this.mappings.mcp[""] === void 0 && (this.mappings.mcp[""] = { actions: [] }), this.mappings.mcp[""].actions.push(t.action)); + }; + cluster = (t) => { + t.action === "read_cluster" && (this.mappings.cluster[""] === void 0 && (this.mappings.cluster[""] = { actions: [] }), this.mappings.cluster[""].actions.push("read_cluster")); + }; + collections = (t) => { + if (t.collections !== void 0) { + let r = t.collections.collection; + if (r === void 0) throw new Error("Collections permission missing collection"); + this.mappings.collections[r] === void 0 && (this.mappings.collections[r] = { collection: r, actions: [] }), this.mappings.collections[r].actions.push(t.action); + } + }; + data = (t) => { + if (t.data !== void 0) { + let { collection: r, tenant: a } = t.data; + if (r === void 0) throw new Error("Data permission missing collection"); + let i = a === void 0 ? r : `${r}#${a}`; + this.mappings.data[i] === void 0 && (this.mappings.data[i] = { collection: r, tenant: a || "*", actions: [] }), this.mappings.data[i].actions.push(t.action); + } + }; + groups = (t) => { + if (t.groups !== void 0) { + let { group: r, groupType: a } = t.groups; + if (r === void 0) throw new Error("Group permission missing groupID"); + if (a === void 0) throw new Error("Group permission missing groupType"); + let i = `${a}#${r}`; + this.mappings.groups[i] === void 0 && (this.mappings.groups[i] = { groupType: a, groupID: r, actions: [] }), this.mappings.groups[i].actions.push(t.action); + } + }; + nodes = (t) => { + if (t.nodes !== void 0) { + let { collection: r } = t.nodes, { verbosity: a } = t.nodes; + if (a === void 0) throw new Error("Nodes permission missing verbosity"); + if (a === "verbose") { + if (r === void 0) throw new Error("Nodes permission missing collection"); + } else if (a === "minimal") r = "*"; + else throw new Error("Nodes permission missing verbosity"); + let i = `${r}#${a}`; + this.mappings.nodes[i] === void 0 && (this.mappings.nodes[i] = { collection: r, verbosity: a, actions: [] }), this.mappings.nodes[i].actions.push(t.action); + } + }; + replicate = (t) => { + if (t.replicate !== void 0) { + let { collection: r, shard: a } = t.replicate; + if (r === void 0) throw new Error("Replicate permission missing collection"); + if (a === void 0) throw new Error("Replicate permission missing shard"); + let i = `${r}#${a}`; + this.mappings.replicate[i] === void 0 && (this.mappings.replicate[i] = { collection: r, shard: a, actions: [] }), this.mappings.replicate[i].actions.push(t.action); + } + }; + roles = (t) => { + if (t.roles !== void 0) { + let r = t.roles.role; + if (r === void 0) throw new Error("Roles permission missing role"); + this.mappings.roles[r] === void 0 && (this.mappings.roles[r] = { role: r, actions: [] }), this.mappings.roles[r].actions.push(t.action); + } + }; + tenants = (t) => { + if (t.tenants !== void 0) { + let { collection: r, tenant: a } = t.tenants; + if (r === void 0) throw new Error("Tenants permission missing collection"); + let i = a === void 0 ? r : `${r}#${a}`; + this.mappings.tenants[i] === void 0 && (this.mappings.tenants[i] = { collection: r, tenant: a || "*", actions: [] }), this.mappings.tenants[i].actions.push(t.action); + } + }; + users = (t) => { + if (t.users !== void 0) { + let r = t.users.users; + if (r === void 0) throw new Error("Users permission missing user"); + this.mappings.users[r] === void 0 && (this.mappings.users[r] = { users: r, actions: [] }), this.mappings.users[r].actions.push(t.action); + } + }; + permissionFromWeaviate = (t) => { + this.aliases(t), this.backups(t), this.cluster(t), this.collections(t), this.data(t), this.groups(t), this.mcp(t), this.nodes(t), this.replicate(t), this.roles(t), this.tenants(t), this.users(t); + }; +}; +var mh = (e24) => ({ oidc: { getAssignedRoles: (t, r) => e24.get(`/authz/groups/${encodeURIComponent(t)}/roles/oidc${r ? "?includeFullRoles=true" : ""}`).then(ee.roles), assignRoles: (t, r) => e24.postEmpty(`/authz/groups/${encodeURIComponent(t)}/assign`, { roles: Array.isArray(r) ? r : [r], groupType: "oidc" }), revokeRoles: (t, r) => e24.postEmpty(`/authz/groups/${encodeURIComponent(t)}/revoke`, { roles: Array.isArray(r) ? r : [r], groupType: "oidc" }), getKnownGroupNames: () => e24.get("/authz/groups/oidc") } }); +var hp = mh; +d(); +d(); +var Wr = class extends O { + dbVersionProvider; + constructor(t, r) { + super(t), this.dbVersionProvider = r; + } + validate() { + } + do = () => this.client.get("/.well-known/live", false).then(() => (setTimeout(() => this.dbVersionProvider.refresh()), Promise.resolve(true))).catch(() => Promise.resolve(false)); +}; +d(); +var Lt = class extends O { + constructor(t) { + super(t); + } + validate() { + } + do = () => this.client.get("/meta", true); +}; +d(); +var qr = class extends O { + dbVersionProvider; + constructor(t, r) { + super(t), this.dbVersionProvider = r; + } + validate() { + } + do = () => this.client.get("/.well-known/ready", false).then(() => (setTimeout(() => this.dbVersionProvider.refresh()), Promise.resolve(true))).catch(() => Promise.resolve(false)); +}; +d(); +var hh = (e24) => ({ listAll: () => e24.get("/authz/roles").then(ee.roles), byName: (t) => e24.get(`/authz/roles/${t}`).then(ee.roleFromWeaviate), assignedUserIds: (t) => e24.get(`/authz/roles/${t}/users`), userAssignments: (t) => e24.get(`/authz/roles/${t}/user-assignments`, true).then(ee.assignedUsers), create: (t, r) => { + let a = r ? ee.flattenPermissions(r).flatMap(ee.permissionToWeaviate) : void 0; + return e24.postEmpty("/authz/roles", { name: t, permissions: a }).then(() => ee.roleFromWeaviate({ name: t, permissions: a || [] })); +}, delete: (t) => e24.delete(`/authz/roles/${t}`, null), exists: (t) => e24.get(`/authz/roles/${t}`).then(() => true).catch(() => false), addPermissions: (t, r) => e24.postEmpty(`/authz/roles/${t}/add-permissions`, { permissions: ee.flattenPermissions(r).flatMap(ee.permissionToWeaviate) }), removePermissions: (t, r) => e24.postEmpty(`/authz/roles/${t}/remove-permissions`, { permissions: ee.flattenPermissions(r).flatMap(ee.permissionToWeaviate) }), hasPermissions: (t, r) => Promise.all((Array.isArray(r) ? r : [r]).flatMap((a) => ee.permissionToWeaviate(a)).map((a) => e24.postReturn(`/authz/roles/${t}/has-permission`, a))).then((a) => a.every((i) => i)), getGroupAssignments: (t) => e24.get(`/authz/roles/${t}/group-assignments`).then(ee.groupsAssignments) }); +var yp = { aliases: (e24) => { + let t = Array.isArray(e24.alias) ? e24.alias : [e24.alias], r = Array.isArray(e24.collection) ? e24.collection : [e24.collection]; + return t.flatMap((i) => r.map((n) => ({ alias: i, collection: n }))).map(({ collection: i, alias: n }) => { + let o = { alias: n, collection: i, actions: [] }; + return e24.create && o.actions.push("create_aliases"), e24.read && o.actions.push("read_aliases"), e24.update && o.actions.push("update_aliases"), e24.delete && o.actions.push("delete_aliases"), o; + }); +}, backup: (e24) => (Array.isArray(e24.collection) ? e24.collection : [e24.collection]).flatMap((r) => { + let a = { collection: r, actions: [] }; + return e24.manage && a.actions.push("manage_backups"), a; +}), mcp: (e24) => { + let t = { actions: [] }; + return e24.create && t.actions.push("create_mcp"), e24.read && t.actions.push("read_mcp"), e24.update && t.actions.push("update_mcp"), [t]; +}, cluster: (e24) => { + let t = { actions: [] }; + return e24.read && t.actions.push("read_cluster"), [t]; +}, collections: (e24) => (Array.isArray(e24.collection) ? e24.collection : [e24.collection]).flatMap((r) => { + let a = { collection: r, actions: [] }; + return e24.create_collection && a.actions.push("create_collections"), e24.read_config && a.actions.push("read_collections"), e24.update_config && a.actions.push("update_collections"), e24.delete_collection && a.actions.push("delete_collections"), a; +}), data: (e24) => { + let t = Array.isArray(e24.collection) ? e24.collection : [e24.collection], r = Array.isArray(e24.tenant) ? e24.tenant : [e24.tenant ?? "*"]; + return t.flatMap((i) => r.map((n) => ({ collection: i, tenant: n }))).flatMap(({ collection: i, tenant: n }) => { + let o = { collection: i, tenant: n, actions: [] }; + return e24.create && o.actions.push("create_data"), e24.read && o.actions.push("read_data"), e24.update && o.actions.push("update_data"), e24.delete && o.actions.push("delete_data"), o; + }); +}, groups: { oidc: (e24) => { + let t = Array.isArray(e24.groupID) ? e24.groupID : [e24.groupID], r = []; + return e24.read && r.push("read_groups"), e24.assignAndRevoke && r.push("assign_and_revoke_groups"), t.map((a) => ({ groupID: a, groupType: "oidc", actions: r })); +} }, nodes: { minimal: (e24) => { + let t = { collection: "*", actions: [], verbosity: "minimal" }; + return e24.read && t.actions.push("read_nodes"), [t]; +}, verbose: (e24) => (Array.isArray(e24.collection) ? e24.collection : [e24.collection]).flatMap((r) => { + let a = { collection: r, actions: [], verbosity: "verbose" }; + return e24.read && a.actions.push("read_nodes"), a; +}) }, replicate: (e24) => { + let t = Array.isArray(e24.collection) ? e24.collection : [e24.collection], r = Array.isArray(e24.shard) ? e24.shard : [e24.shard]; + return t.flatMap((i) => r.map((n) => ({ collection: i, shard: n }))).map(({ collection: i, shard: n }) => { + let o = { collection: i, shard: n, actions: [] }; + return e24.create && o.actions.push("create_replicate"), e24.read && o.actions.push("read_replicate"), e24.update && o.actions.push("update_replicate"), e24.delete && o.actions.push("delete_replicate"), o; + }); +}, roles: (e24) => (Array.isArray(e24.role) ? e24.role : [e24.role]).flatMap((r) => { + let a = { role: r, actions: [] }; + return e24.create && a.actions.push("create_roles"), e24.read && a.actions.push("read_roles"), e24.update && a.actions.push("update_roles"), e24.delete && a.actions.push("delete_roles"), a; +}), tenants: (e24) => { + let t = Array.isArray(e24.collection) ? e24.collection : [e24.collection], r = Array.isArray(e24.tenant) ? e24.tenant : [e24.tenant ?? "*"]; + return t.flatMap((i) => r.map((n) => ({ collection: i, tenant: n }))).flatMap(({ collection: i, tenant: n }) => { + let o = { collection: i, tenant: n, actions: [] }; + return e24.create && o.actions.push("create_tenants"), e24.read && o.actions.push("read_tenants"), e24.update && o.actions.push("update_tenants"), e24.delete && o.actions.push("delete_tenants"), o; + }); +}, users: (e24) => (Array.isArray(e24.user) ? e24.user : [e24.user]).flatMap((r) => { + let a = { users: r, actions: [] }; + return e24.assignAndRevoke && a.actions.push("assign_and_revoke_users"), e24.read && a.actions.push("read_users"), a; +}) }; +var Tp = hh; +d(); +d(); +var ws2 = (e24) => ({ indexed: e24.indexed || [], query: e24.query || [] }); +var yh = (e24, t) => ({ text: (r, a, i) => { + if (i?.stopwords !== void 0 && i?.stopwordPresets !== void 0) return Promise.reject(new F("stopwords and stopwordPresets are mutually exclusive; pass at most one")); + let n = i?.stopwords !== void 0 || i?.stopwordPresets !== void 0; + return t.supportsTokenize().then(({ supports: o, message: s }) => o ? Promise.resolve() : Promise.reject(new Error(s))).then(() => n ? t.supportsTokenizeStopwords().then(({ supports: o, message: s }) => o ? Promise.resolve() : Promise.reject(new Error(s))) : Promise.resolve()).then(() => e24.postReturn("/tokenize", { text: r, tokenization: a, analyzerConfig: Io(i?.analyzerConfig), stopwords: i?.stopwords, stopwordPresets: i?.stopwordPresets }).then(ws2)); +}, forProperty: (r, a, i) => t.supportsTokenize().then(({ supports: n, message: o }) => n ? Promise.resolve() : Promise.reject(new Error(o))).then(() => e24.postReturn(`/schema/${r}/properties/${a}/tokenize`, { text: i })).then(ws2) }); +var vp = yh; +d(); +var Th = (e24) => { + let t = xh(e24); + return { getMyUser: () => e24.get("/users/own-info").then(ee.user), getAssignedRoles: (r) => e24.get(`/authz/users/${encodeURIComponent(r)}/roles`).then(ee.roles), assignRoles: (r, a) => t.assignRoles(r, a), revokeRoles: (r, a) => t.revokeRoles(r, a), db: vh(e24), oidc: bh(e24) }; +}; +var vh = (e24) => { + let t = Ms(e24), r = (a) => (i) => { + if (i instanceof Ct && i.code === a) return false; + throw i; + }; + return { getAssignedRoles: (a, i) => t.getAssignedRoles("db", a, i), assignRoles: (a, i) => t.assignRoles(a, i, { userType: "db" }), revokeRoles: (a, i) => t.revokeRoles(a, i, { userType: "db" }), create: (a) => e24.postReturn(`/users/db/${encodeURIComponent(a)}`, null).then((i) => i.apikey), delete: (a) => e24.delete(`/users/db/${encodeURIComponent(a)}`, null).then(() => true).catch(() => false), rotateKey: (a) => e24.postReturn(`/users/db/${encodeURIComponent(a)}/rotate-key`, null).then((i) => i.apikey), activate: (a) => e24.postEmpty(`/users/db/${encodeURIComponent(a)}/activate`, null).then(() => true).catch(r(409)), deactivate: (a, i) => e24.postEmpty(`/users/db/${encodeURIComponent(a)}/deactivate`, i || null).then(() => true).catch(r(409)), byName: (a, i) => e24.get(`/users/db/${encodeURIComponent(a)}?includeLastUsedTime=${i?.includeLastUsedTime || false}`, true).then(ee.dbUser), listAll: (a) => e24.get(`/users/db?includeLastUsedTime=${a?.includeLastUsedTime || false}`, true).then(ee.dbUsers) }; +}; +var bh = (e24) => { + let t = Ms(e24); + return { getAssignedRoles: (r, a) => t.getAssignedRoles("oidc", r, a), assignRoles: (r, a) => t.assignRoles(r, a, { userType: "oidc" }), revokeRoles: (r, a) => t.revokeRoles(r, a, { userType: "oidc" }) }; +}; +var xh = (e24) => { + let t = Ms(e24); + return { assignRoles: (r, a) => t.assignRoles(r, a), revokeRoles: (r, a) => t.revokeRoles(r, a) }; +}; +var Ms = (e24) => ({ getAssignedRoles: (t, r, a) => e24.get(`/authz/users/${encodeURIComponent(r)}/roles/${t}?includeFullRoles=${a?.includePermissions || false}`).then(ee.roles), assignRoles: (t, r, a) => e24.postEmpty(`/authz/users/${encodeURIComponent(r)}/assign`, { ...a, roles: Array.isArray(t) ? t : [t] }), revokeRoles: (t, r, a) => e24.postEmpty(`/authz/users/${encodeURIComponent(r)}/revoke`, { ...a, roles: Array.isArray(t) ? t : [t] }) }); +var bp = Th; +d(); +d(); +var Lr = class extends cn { + gql; + constructor(t) { + super(t), this.gql = Ph(t); + } + query = (t, r) => this.authEnabled ? this.login().then((a) => { + let i = { Authorization: `Bearer ${a}` }; + return this.gql.query(t, r, i); + }) : this.gql.query(t, r); + close = () => this.http.close(); +}; +var Ph = (e24) => { + let r = `${e24.host}/v1/graphql`, a = e24.headers; + return { query: (i, n, o) => new GraphQLClient(r, { headers: { ...a, ...o } }).request(i, n, o).then((s) => ({ data: s })) }; +}; +d(); +d(); +var Jr = ze(Ke()); +function Rh(e24) { + switch (e24) { + case 0: + case "UNKNOWN": + return 0; + case 1: + case "SERVING": + return 1; + case 2: + case "NOT_SERVING": + return 2; + case 3: + case "SERVICE_UNKNOWN": + return 3; + case -1: + case "UNRECOGNIZED": + default: + return -1; + } +} +function Ah(e24) { + switch (e24) { + case 0: + return "UNKNOWN"; + case 1: + return "SERVING"; + case 2: + return "NOT_SERVING"; + case 3: + return "SERVICE_UNKNOWN"; + case -1: + default: + return "UNRECOGNIZED"; + } +} +function xp() { + return { service: "" }; +} +var Es = { encode(e24, t = Jr.default.Writer.create()) { + return e24.service !== "" && t.uint32(10).string(e24.service), t; +}, decode(e24, t) { + let r = e24 instanceof Jr.default.Reader ? e24 : Jr.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = xp(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.service = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { service: Rp(e24.service) ? globalThis.String(e24.service) : "" }; +}, toJSON(e24) { + let t = {}; + return e24.service !== "" && (t.service = e24.service), t; +}, create(e24) { + return Es.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = xp(); + return t.service = e24.service ?? "", t; +} }; +function Cp() { + return { status: 0 }; +} +var Us = { encode(e24, t = Jr.default.Writer.create()) { + return e24.status !== 0 && t.uint32(8).int32(e24.status), t; +}, decode(e24, t) { + let r = e24 instanceof Jr.default.Reader ? e24 : Jr.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Cp(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 8) break; + i.status = r.int32(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { status: Rp(e24.status) ? Rh(e24.status) : 0 }; +}, toJSON(e24) { + let t = {}; + return e24.status !== 0 && (t.status = Ah(e24.status)), t; +}, create(e24) { + return Us.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Cp(); + return t.status = e24.status ?? 0, t; +} }; +var Pp = { name: "Health", fullName: "grpc.health.v1.Health", methods: { check: { name: "Check", requestType: Es, requestStream: false, responseType: Us, responseStream: false, options: {} }, watch: { name: "Watch", requestType: Es, requestStream: false, responseType: Us, responseStream: true, options: {} } } }; +function Rp(e24) { + return e24 != null; +} +d(); +d(); +var Je = ze(Ke()); +function Np() { + return { collection: "", filters: void 0, verbose: false, dryRun: false, consistencyLevel: void 0, tenant: void 0 }; +} +var Ia = { encode(e24, t = Je.default.Writer.create()) { + return e24.collection !== "" && t.uint32(10).string(e24.collection), e24.filters !== void 0 && H.encode(e24.filters, t.uint32(18).fork()).ldelim(), e24.verbose !== false && t.uint32(24).bool(e24.verbose), e24.dryRun !== false && t.uint32(32).bool(e24.dryRun), e24.consistencyLevel !== void 0 && t.uint32(40).int32(e24.consistencyLevel), e24.tenant !== void 0 && t.uint32(50).string(e24.tenant), t; +}, decode(e24, t) { + let r = e24 instanceof Je.default.Reader ? e24 : Je.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Np(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.collection = r.string(); + continue; + case 2: + if (n !== 18) break; + i.filters = H.decode(r, r.uint32()); + continue; + case 3: + if (n !== 24) break; + i.verbose = r.bool(); + continue; + case 4: + if (n !== 32) break; + i.dryRun = r.bool(); + continue; + case 5: + if (n !== 40) break; + i.consistencyLevel = r.int32(); + continue; + case 6: + if (n !== 50) break; + i.tenant = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { collection: Le(e24.collection) ? globalThis.String(e24.collection) : "", filters: Le(e24.filters) ? H.fromJSON(e24.filters) : void 0, verbose: Le(e24.verbose) ? globalThis.Boolean(e24.verbose) : false, dryRun: Le(e24.dryRun) ? globalThis.Boolean(e24.dryRun) : false, consistencyLevel: Le(e24.consistencyLevel) ? tr(e24.consistencyLevel) : void 0, tenant: Le(e24.tenant) ? globalThis.String(e24.tenant) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.collection !== "" && (t.collection = e24.collection), e24.filters !== void 0 && (t.filters = H.toJSON(e24.filters)), e24.verbose !== false && (t.verbose = e24.verbose), e24.dryRun !== false && (t.dryRun = e24.dryRun), e24.consistencyLevel !== void 0 && (t.consistencyLevel = rr(e24.consistencyLevel)), e24.tenant !== void 0 && (t.tenant = e24.tenant), t; +}, create(e24) { + return Ia.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Np(); + return t.collection = e24.collection ?? "", t.filters = e24.filters !== void 0 && e24.filters !== null ? H.fromPartial(e24.filters) : void 0, t.verbose = e24.verbose ?? false, t.dryRun = e24.dryRun ?? false, t.consistencyLevel = e24.consistencyLevel ?? void 0, t.tenant = e24.tenant ?? void 0, t; +} }; +function Vp() { + return { took: 0, failed: 0, matches: 0, successful: 0, objects: [] }; +} +var Fs = { encode(e24, t = Je.default.Writer.create()) { + e24.took !== 0 && t.uint32(13).float(e24.took), e24.failed !== 0 && t.uint32(16).int64(e24.failed), e24.matches !== 0 && t.uint32(24).int64(e24.matches), e24.successful !== 0 && t.uint32(32).int64(e24.successful); + for (let r of e24.objects) ia.encode(r, t.uint32(42).fork()).ldelim(); + return t; +}, decode(e24, t) { + let r = e24 instanceof Je.default.Reader ? e24 : Je.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Vp(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 13) break; + i.took = r.float(); + continue; + case 2: + if (n !== 16) break; + i.failed = Ds(r.int64()); + continue; + case 3: + if (n !== 24) break; + i.matches = Ds(r.int64()); + continue; + case 4: + if (n !== 32) break; + i.successful = Ds(r.int64()); + continue; + case 5: + if (n !== 42) break; + i.objects.push(ia.decode(r, r.uint32())); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { took: Le(e24.took) ? globalThis.Number(e24.took) : 0, failed: Le(e24.failed) ? globalThis.Number(e24.failed) : 0, matches: Le(e24.matches) ? globalThis.Number(e24.matches) : 0, successful: Le(e24.successful) ? globalThis.Number(e24.successful) : 0, objects: globalThis.Array.isArray(e24?.objects) ? e24.objects.map((t) => ia.fromJSON(t)) : [] }; +}, toJSON(e24) { + let t = {}; + return e24.took !== 0 && (t.took = e24.took), e24.failed !== 0 && (t.failed = Math.round(e24.failed)), e24.matches !== 0 && (t.matches = Math.round(e24.matches)), e24.successful !== 0 && (t.successful = Math.round(e24.successful)), e24.objects?.length && (t.objects = e24.objects.map((r) => ia.toJSON(r))), t; +}, create(e24) { + return Fs.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Vp(); + return t.took = e24.took ?? 0, t.failed = e24.failed ?? 0, t.matches = e24.matches ?? 0, t.successful = e24.successful ?? 0, t.objects = e24.objects?.map((r) => ia.fromPartial(r)) || [], t; +} }; +function Op() { + return { uuid: new Uint8Array(0), successful: false, error: void 0 }; +} +var ia = { encode(e24, t = Je.default.Writer.create()) { + return e24.uuid.length !== 0 && t.uint32(10).bytes(e24.uuid), e24.successful !== false && t.uint32(16).bool(e24.successful), e24.error !== void 0 && t.uint32(26).string(e24.error), t; +}, decode(e24, t) { + let r = e24 instanceof Je.default.Reader ? e24 : Je.default.Reader.create(e24), a = t === void 0 ? r.len : r.pos + t, i = Op(); + for (; r.pos < a; ) { + let n = r.uint32(); + switch (n >>> 3) { + case 1: + if (n !== 10) break; + i.uuid = r.bytes(); + continue; + case 2: + if (n !== 16) break; + i.successful = r.bool(); + continue; + case 3: + if (n !== 26) break; + i.error = r.string(); + continue; + } + if ((n & 7) === 4 || n === 0) break; + r.skipType(n & 7); + } + return i; +}, fromJSON(e24) { + return { uuid: Le(e24.uuid) ? Nh(e24.uuid) : new Uint8Array(0), successful: Le(e24.successful) ? globalThis.Boolean(e24.successful) : false, error: Le(e24.error) ? globalThis.String(e24.error) : void 0 }; +}, toJSON(e24) { + let t = {}; + return e24.uuid.length !== 0 && (t.uuid = Vh(e24.uuid)), e24.successful !== false && (t.successful = e24.successful), e24.error !== void 0 && (t.error = e24.error), t; +}, create(e24) { + return ia.fromPartial(e24 ?? {}); +}, fromPartial(e24) { + let t = Op(); + return t.uuid = e24.uuid ?? new Uint8Array(0), t.successful = e24.successful ?? false, t.error = e24.error ?? void 0, t; +} }; +function Nh(e24) { + if (globalThis.Buffer) return Uint8Array.from(globalThis.Buffer.from(e24, "base64")); + { + let t = globalThis.atob(e24), r = new Uint8Array(t.length); + for (let a = 0; a < t.length; ++a) r[a] = t.charCodeAt(a); + return r; + } +} +function Vh(e24) { + if (globalThis.Buffer) return globalThis.Buffer.from(e24).toString("base64"); + { + let t = []; + return e24.forEach((r) => { + t.push(globalThis.String.fromCharCode(r)); + }), globalThis.btoa(t.join("")); + } +} +function Ds(e24) { + if (e24.gt(globalThis.Number.MAX_SAFE_INTEGER)) throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); + return e24.toNumber(); +} +Je.default.util.Long !== long_default && (Je.default.util.Long = long_default, Je.default.configure()); +function Le(e24) { + return e24 != null; +} +d(); +var vt = class { + connection; + collection; + timeout; + consistencyLevel; + tenant; + metadata; + abortSignal; + constructor(t, r, a, i, n, o, s) { + this.connection = t, this.collection = r, this.metadata = a, this.timeout = i, this.consistencyLevel = this.mapConsistencyLevel(n), this.tenant = o, this.abortSignal = s; + } + mapConsistencyLevel(t) { + switch (t) { + case "ALL": + return 3; + case "QUORUM": + return 2; + case "ONE": + return 1; + default: + return 0; + } + } + sendWithTimeout = (t, r) => { + let a = new AbortController(), i = this.abortSignal ? AbortSignal.any([a.signal, this.abortSignal]) : a.signal, n = setTimeout(() => a.abort(), this.timeout * 1e3); + return t(i).catch((o) => { + throw o instanceof import_nice_grpc_common.ServerError && o.code === import_nice_grpc_common.Status.PERMISSION_DENIED ? new jr(7, o.message) : (0, import_abort_controller_x.isAbortError)(o) && this.abortSignal === void 0 ? new Xr(`timed out after ${this.timeout * 1e3}ms`) : (0, import_abort_controller_x.isAbortError)(o) && this.abortSignal !== void 0 ? o : r(o); + }).finally(() => clearTimeout(n)); + }; +}; +d(); +var Tr = { retry: true, retryMaxAttempts: 5, retryableStatuses: [import_nice_grpc_common.Status.UNAVAILABLE], onRetryableError(e24, t, r) { + console.warn(e24, `Attempt ${t} failed. Retrying in ${r}ms.`); +} }; +var _a = class e18 extends vt { + static use(t, r, a, i, n, o) { + return new e18(t, r, a, i, n, o); + } + withStream = (t) => this.callStream(t); + withDelete = (t) => this.callDelete(Ia.fromPartial(t)); + withObjects = (t) => this.callObjects(Oa.fromPartial(t)); + async *callStream(t) { + let r = this.consistencyLevel; + async function* a() { + yield Ge.create({ start: { consistencyLevel: r } }); + for await (let i of t) yield i; + } + try { + for await (let i of this.connection.batchStream(a(), { metadata: this.metadata })) yield i; + } catch (i) { + throw i instanceof import_nice_grpc_common.ClientError ? new Ja(i.message) : i; + } + } + callDelete(t) { + return this.sendWithTimeout((r) => this.connection.batchDelete({ ...t, collection: this.collection, consistencyLevel: this.consistencyLevel, tenant: this.tenant }, { metadata: this.metadata, signal: r }), (r) => new Da(r.message)); + } + callObjects(t) { + return this.sendWithTimeout((r) => this.connection.batchObjects({ ...t, consistencyLevel: this.consistencyLevel }, { metadata: this.metadata, signal: r, ...Tr }), (r) => new Wa(r.message)); + } +}; +d(); +var Ba = class e19 extends vt { + static use(t, r, a, i, n, o, s) { + return new e19(t, r, a, i, n, o, s); + } + withFetch = (t) => this.call(he.fromPartial(t)); + withBm25 = (t) => this.call(he.fromPartial(t)); + withHybrid = (t) => this.call(he.fromPartial(t)); + withNearAudio = (t) => this.call(he.fromPartial(t)); + withNearDepth = (t) => this.call(he.fromPartial(t)); + withNearImage = (t) => this.call(he.fromPartial(t)); + withNearIMU = (t) => this.call(he.fromPartial(t)); + withNearObject = (t) => this.call(he.fromPartial(t)); + withNearText = (t) => this.call(he.fromPartial(t)); + withNearThermal = (t) => this.call(he.fromPartial(t)); + withNearVector = (t) => this.call(he.fromPartial(t)); + withNearVideo = (t) => this.call(he.fromPartial(t)); + call = (t) => this.sendWithTimeout((r) => this.connection.search({ ...t, collection: this.collection, consistencyLevel: this.consistencyLevel, tenant: this.tenant, uses123Api: true, uses125Api: true, uses127Api: true }, { metadata: this.metadata, signal: r, ...Tr }), (r) => new _t(r.message, "gRPC")); +}; +d(); +var Ga = class e20 extends vt { + static use(t, r, a, i) { + return new e20(t, r, a, i); + } + withGet = (t) => this.call(Ra.fromPartial({ names: t.names ? { values: t.names } : void 0 })); + call(t) { + return this.sendWithTimeout((r) => this.connection.tenantsGet({ ...t, collection: this.collection }, { metadata: this.metadata, signal: r, ...Tr }), (r) => new Fa(r.message)); + } +}; +d(); +var ho = class { + dbVersionProvider; + constructor(t) { + this.dbVersionProvider = t; + } + getVersion = () => this.dbVersionProvider.getVersion(); + supportsClassNameNamespacedEndpointsPromise() { + return this.dbVersionProvider.getVersion().then((t) => t.show()).then((t) => ({ version: t, supports: this.supportsClassNameNamespacedEndpoints(t), warns: { deprecatedNonClassNameNamespacedEndpointsForObjects: () => console.warn(`Usage of objects paths without className is deprecated in Weaviate ${t}. Please provide className parameter`), deprecatedNonClassNameNamespacedEndpointsForReferences: () => console.warn(`Usage of references paths without className is deprecated in Weaviate ${t}. Please provide className parameter`), deprecatedNonClassNameNamespacedEndpointsForBeacons: () => console.warn(`Usage of beacons paths without className is deprecated in Weaviate ${t}. Please provide className parameter`), deprecatedWeaviateTooOld: () => console.warn(`Usage of weaviate ${t} is deprecated. Please consider upgrading to the latest version. See https://www.weaviate.io/developers/weaviate for details.`), notSupportedClassNamespacedEndpointsForObjects: () => console.warn(`Usage of objects paths with className is not supported in Weaviate ${t}. className parameter is ignored`), notSupportedClassNamespacedEndpointsForReferences: () => console.warn(`Usage of references paths with className is not supported in Weaviate ${t}. className parameter is ignored`), notSupportedClassNamespacedEndpointsForBeacons: () => console.warn(`Usage of beacons paths with className is not supported in Weaviate ${t}. className parameter is ignored`), notSupportedClassParameterInEndpointsForObjects: () => console.warn(`Usage of objects paths with class query parameter is not supported in Weaviate ${t}. class query parameter is ignored`) } })); + } + supportsClassNameNamespacedEndpoints(t) { + if (typeof t == "string") { + let r = t.split("."); + if (r.length >= 2) { + let a = parseInt(r[0], 10), i = parseInt(r[1], 10); + return a == 1 && i >= 14 || a >= 2; + } + } + return false; + } + errorMessage = (t, r, a) => `${t} is not supported with Weaviate version v${r}. Please use version v${a} or higher.`; + supportsCompatibleGrpcService = () => this.dbVersionProvider.getVersion().then((t) => ({ version: t, supports: t.isAtLeast(1, 27, 0), message: this.errorMessage("The gRPC API", t.show(), "1.27.0") })); + requiresNamedVectorsInsertFix = () => this.dbVersionProvider.getVersion().then((t) => ({ version: t, supports: t.isAtLeast(1, 24, 0) && t.isLowerThan(1, 24, 26) || t.isAtLeast(1, 25, 0) && t.isLowerThan(1, 25, 22) || t.isAtLeast(1, 26, 0) && t.isLowerThan(1, 26, 8) || t.isAtLeast(1, 27, 0) && t.isLowerThan(1, 27, 1), message: this.errorMessage("Named vectors insert fix", t.show(), "1.24.0 <= x < 1.24.26, 1.25.0 <= x < 1.25.22, 1.26.0 <= x < 1.26.8, 1.27.0 <= x < 1.27.1") })); + supportsTenantGetRESTMethod = () => this.dbVersionProvider.getVersion().then((t) => ({ version: t, supports: t.isAtLeast(1, 28, 0), message: this.errorMessage("Tenant get method over REST", t.show(), "1.28.0") })); + supportsAggregateGRPC = () => this.dbVersionProvider.getVersion().then((t) => ({ version: t, supports: t.isAtLeast(1, 29, 0), message: this.errorMessage("Aggregate gRPC method", t.show(), "1.29.0") })); + supportsVectorsFieldInGRPC = () => this.dbVersionProvider.getVersion().then((t) => ({ version: t, supports: t.isAtLeast(1, 29, 0), message: void 0 })); + supportsSingleGrouped = () => this.dbVersionProvider.getVersion().then((t) => ({ version: t, supports: t.isAtLeast(1, 27, 14) && t.isLowerThan(1, 28, 0) || t.isAtLeast(1, 28, 8) && t.isLowerThan(1, 29, 0) || t.isAtLeast(1, 29, 0) && t.isLowerThan(1, 30, 0) || t.isAtLeast(1, 30, 0), message: this.errorMessage("Single/Grouped fields in gRPC", t.show(), "1.30.0") })); + supportsGenerativeConfigRuntime = () => this.dbVersionProvider.getVersion().then((t) => ({ version: t, supports: t.isAtLeast(1, 30, 0), message: this.errorMessage("Generative config runtime", t.show(), "1.30.0") })); + supportsServerSideBatching = () => this.dbVersionProvider.getVersion().then((t) => ({ version: t, supports: t.isAtLeast(1, 36, 0), message: this.errorMessage("Server-side batching", t.show(), "1.36.0") })); + supportsTokenize = () => this.dbVersionProvider.getVersion().then((t) => ({ version: t, supports: t.isAtLeast(1, 37, 0), message: this.errorMessage("Tokenize endpoint", t.show(), "1.37.0") })); + supportsTokenizeStopwords = () => this.dbVersionProvider.getVersion().then((t) => ({ version: t, supports: t.isAtLeast(1, 37, 2), message: this.errorMessage("Tokenize endpoint stopwords / stopwordPresets", t.show(), "1.37.2") })); + supportsServerSideDefaultVectorIndexType = () => this.dbVersionProvider.getVersion().then((t) => ({ version: t, supports: t.isAtLeast(1, 37, 5), message: void 0 })); +}; +var _h = ""; +var Ws = class { + versionPromise; + versionStringGetter; + constructor(t) { + this.versionStringGetter = t, this.versionPromise = void 0; + } + getVersionString() { + return this.getVersion().then((t) => t.show()); + } + getVersion() { + return this.versionPromise ? this.versionPromise : this.versionStringGetter().then((t) => this.cache(t)); + } + refresh(t = false) { + return t || !this.versionPromise ? (this.versionPromise = void 0, this.versionStringGetter().then((r) => this.cache(r)).then(() => Promise.resolve(true))) : Promise.resolve(false); + } + cache(t) { + return t === _h ? Promise.resolve(new yo(0, 0, 0)) : (this.versionPromise = Promise.resolve(yo.fromString(t)), this.versionPromise); + } +}; +function kp(e24) { + let t = new Lt(e24), r = () => t.do().then((a) => a.version ? a.version : ""); + return new Ws(r); +} +var yo = class e21 { + major; + minor; + patch; + constructor(t, r, a) { + this.major = t, this.minor = r, this.patch = a; + } + static fromString = (t) => { + let r = t.replace(/\.(amd64|arm64|x86_64)$/, ""), a = /^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/, i = r.match(a); + if (i) { + let [n, o, s, u] = i; + return new e21(parseInt(o, 10), parseInt(s, 10), parseInt(u, 10)); + } + if (a = /^v?(\d+)\.(\d+)$/, i = r.match(a), i) { + let [n, o, s] = i; + return new e21(parseInt(o, 10), parseInt(s, 10)); + } + throw new Error(`Invalid version string: ${t}`); + }; + checkNumber = (t) => { + if (!Number.isSafeInteger(t)) throw new Error(`Invalid number: ${t}`); + }; + show = () => this.major === 0 && this.major === this.minor && this.minor === this.patch ? "" : `${this.major}.${this.minor}${this.patch !== void 0 ? `.${this.patch}` : ""}`; + isAtLeast = (t, r, a) => (this.checkNumber(t), this.checkNumber(r), this.major > t ? true : this.major < t ? false : this.minor > r ? true : this.minor < r ? false : this.patch !== void 0 && a !== void 0 && this.patch >= a ? (this.checkNumber(a), true) : false); + isLowerThan = (t, r, a) => !this.isAtLeast(t, r, a); +}; +d(); +var wa = class e22 extends vt { + static use(t, r, a, i, n, o) { + return new e22(t, r, a, i, n, o); + } + withFetch = (t) => this.call(ke.fromPartial(t)); + withHybrid = (t) => this.call(ke.fromPartial(t)); + withNearAudio = (t) => this.call(ke.fromPartial(t)); + withNearDepth = (t) => this.call(ke.fromPartial(t)); + withNearImage = (t) => this.call(ke.fromPartial(t)); + withNearIMU = (t) => this.call(ke.fromPartial(t)); + withNearObject = (t) => this.call(ke.fromPartial(t)); + withNearText = (t) => this.call(ke.fromPartial(t)); + withNearThermal = (t) => this.call(ke.fromPartial(t)); + withNearVector = (t) => this.call(ke.fromPartial(t)); + withNearVideo = (t) => this.call(ke.fromPartial(t)); + call = (t) => this.sendWithTimeout((r) => this.connection.aggregate({ ...t, collection: this.collection, tenant: this.tenant, objectsCount: true }, { metadata: this.metadata, signal: r, ...Tr }), (r) => new _t(r.message, "gRPC")); +}; +var Ip = 104858e3; +var aa = class e23 extends Lr { + grpc; + grpcMaxMessageLength; + params; + constructor(t) { + super(t), this.grpc = _p(t), this.grpcMaxMessageLength = t.grpcMaxMessageLength, this.params = t; + } + static use = (t) => { + let r = new Lr(t), a = kp(r), i = new ho(a); + return t.skipInitChecks ? { connection: new e23({ ...t, grpcMaxMessageLength: Ip }), dbVersionProvider: a, dbVersionSupport: i } : Promise.all([e23.connect(t, r.get("/meta", true).then((n) => n.grpcMaxMessageSize || Ip)), i.supportsCompatibleGrpcService().then((n) => { + if (!n.supports) throw new He(`Checking for gRPC compatibility failed with message: ${n.message}`); + })]).then(([n]) => ({ connection: n, dbVersionProvider: a, dbVersionSupport: i })); + }; + async reconnect() { + if (this.grpc.close(), this.grpc = _p(this.params), !await this.grpc.health()) throw new Yr(this.params.grpcAddress); + } + static async connect(t, r) { + let a = await r.then((n) => new e23({ ...t, grpcMaxMessageLength: n })); + if (!await a.grpc.health()) throw await a.close(), new Yr(t.grpcAddress); + return a; + } + batch = (t, r, a) => this.authEnabled ? this.login().then((i) => this.grpc.batch(t, r, a, `Bearer ${i}`)) : new Promise((i) => i(this.grpc.batch(t, r, a))); + aggregate = (t, r, a) => this.authEnabled ? this.login().then((i) => this.grpc.aggregate(t, r, a, `Bearer ${i}`)) : new Promise((i) => i(this.grpc.aggregate(t, r, a))); + search = (t, r, a, i) => this.authEnabled ? this.login().then((n) => this.grpc.search(t, r, a, `Bearer ${n}`, i)) : new Promise((n) => n(this.grpc.search(t, r, a, void 0, i))); + tenants = (t) => this.authEnabled ? this.login().then((r) => this.grpc.tenants(t, `Bearer ${r}`)) : new Promise((r) => r(this.grpc.tenants(t))); + supportsStreaming = () => this.params.transport?.supportsStreaming ?? true; + close = () => { + this.grpc.close(), this.http.close(); + }; +}; +var _p = (e24) => { + if (!e24.transport) throw new Error("grpcClient requires a transport to be configured"); + let { client: t, health: r, close: a } = e24.transport.create(e24); + return { aggregate: (i, n, o, s) => wa.use(t, i, qs(e24, s), e24.timeout?.query || 30, n, o), batch: (i, n, o, s) => _a.use(t, i, qs(e24, s), e24.timeout?.insert || 90, n, o), close: () => a(), health: () => { + let i = new AbortController(), n = setTimeout(() => i.abort(), (e24.timeout?.init || 2) * 1e3); + return r.check({ service: "/grpc.health.v1.Health/Check" }, { signal: i.signal, retry: true, retryMaxAttempts: 1, retryableStatuses: [import_nice_grpc_common.Status.UNAVAILABLE], onRetryableError(o, s, u) { + console.warn(o, `Healthcheck ${s} failed. Retrying in ${u}ms.`); + } }).then((o) => o.status === 1).catch((o) => { + throw (0, import_abort_controller_x.isAbortError)(o) ? new Yr(e24.grpcAddress) : o; + }).finally(() => clearTimeout(n)); + }, search: (i, n, o, s, u) => Ba.use(t, i, qs(e24, s), e24.timeout?.query || 30, n, o, u), tenants: (i, n) => Ga.use(t, i, new import_nice_grpc_common.Metadata(n ? { ...e24.headers, authorization: n } : e24.headers), e24.timeout?.query || 30) }; +}; +var qs = (e24, t) => new import_nice_grpc_common.Metadata({ ...t ? { ...e24.headers, authorization: t, "X-Weaviate-Cluster-Url": e24.host } : e24.headers, ...Ut() }); +var Gp = (e24, t) => e24.includes("http") ? (console.warn(`The ${t}.host parameter should not include the protocol. Please remove the http:// or https:// from the ${t}.host parameter. To specify a secure connection, set the secure parameter to true. The protocol will be inferred from the secure parameter instead.`), e24.replace("http://", "").replace("https://", "")) : e24; +async function wp(e24, t, r) { + let { host: a } = e24.connectionParams.http, { host: i } = e24.connectionParams.grpc, { port: n, secure: o, path: s } = e24.connectionParams.http, { port: u, secure: c, path: f2 } = e24.connectionParams.grpc; + a = Gp(a, "rest"), i = Gp(i, "grpc"), e24.headers || (e24.headers = {}); + let y = o ? "https" : "http", P = r(o), { connection: V, dbVersionProvider: j, dbVersionSupport: D } = await aa.use({ host: `${y}://${a}:${n}${s || ""}`, scheme: y, headers: e24.headers, grpcAddress: `${i}:${u}${f2 || ""}`, grpcSecure: c, grpcProxyUrl: e24.proxies?.grpc, apiKey: is(e24.auth) ? $d(e24.auth) : void 0, authClientSecret: is(e24.auth) ? void 0 : e24.auth, agent: P, timeout: e24.timeout, skipInitChecks: e24.skipInitChecks, transport: t }), S = { alias: mp(V), backup: fo(V), batch: go(V, D), cluster: pp(V), collections: gp(V, D), groups: hp(V), roles: Tp(V), tokenize: vp(V, D), users: bp(V), close: () => Promise.resolve(V.close()), getMeta: () => new Lt(V).do(), getConnectionDetails: V.getDetails, getOpenIDConfig: () => new Et(V.http).do(), getWeaviateVersion: () => D.getVersion(), isLive: () => new Wr(V, j).do(), isReady: () => new qr(V, j).do() }; + return V.oidcAuth && (S.oidcAuth = V.oidcAuth), S; +} +d(); +d(); +var Mp = { name: "Weaviate", fullName: "weaviate.v1.Weaviate", methods: { search: { name: "Search", requestType: he, requestStream: false, responseType: bs, responseStream: false, options: {} }, batchObjects: { name: "BatchObjects", requestType: Oa, requestStream: false, responseType: ps, responseStream: false, options: {} }, batchReferences: { name: "BatchReferences", requestType: ls, requestStream: false, responseType: gs, responseStream: false, options: {} }, batchDelete: { name: "BatchDelete", requestType: Ia, requestStream: false, responseType: Fs, responseStream: false, options: {} }, tenantsGet: { name: "TenantsGet", requestType: Ra, requestStream: false, responseType: ss, responseStream: false, options: {} }, aggregate: { name: "Aggregate", requestType: ke, requestStream: false, responseType: xs, responseStream: false, options: {} }, batchStream: { name: "BatchStream", requestType: Ge, requestStream: true, responseType: fs, responseStream: true, options: {} } } }; +var Ep = (0, import_nice_grpc_web.createClientFactory)().use(import_nice_grpc_client_middleware_retry.retryMiddleware); +var Up = { supportsStreaming: false, create: (e24) => { + let t = /^https?:\/\//.test(e24.grpcAddress) ? e24.grpcAddress : `${e24.grpcSecure ? "https" : "http"}://${e24.grpcAddress}`, r = (0, import_nice_grpc_web.createChannel)(t, (0, import_nice_grpc_web.FetchTransport)()), a = Ep.create(Mp, r), i = Ep.create(Pp, r); + return { client: a, health: i, close: () => { + } }; +} }; +d(); +d(); +function D_(e24, t = "") { + let r = e24.toString() + t.toString(); + return v5_default(r, v5_default.DNS).toString(); +} +var Ls = "/grpc-web"; +function To(e24) { + return wp(e24, Up, () => { + }); +} +function Dh(e24, t) { + if (!e24) throw new Error("Missing `clusterURL` parameter"); + e24.startsWith("http") || (e24 = `https://${e24}`); + let r = new URL(e24), { authCredentials: a, headers: i, timeout: n, skipInitChecks: o, grpcWebPath: s } = t || {}; + return To({ connectionParams: { http: { secure: true, host: r.hostname, port: 443 }, grpc: { secure: true, host: r.hostname, port: 443, path: s ?? Ls } }, auth: a, headers: i, timeout: n, skipInitChecks: o }); +} +function Fh(e24) { + let { httpHost: t, httpPort: r, httpSecure: a, httpPath: i, grpcHost: n, grpcPort: o, grpcSecure: s, grpcPath: u, authCredentials: c, headers: f2, timeout: y, skipInitChecks: P } = e24 || {}; + return To({ connectionParams: { http: { secure: a || false, host: t || "localhost", port: r || 8080, path: i || "" }, grpc: { secure: s || false, host: n || "localhost", port: o ?? r ?? 8080, path: u ?? Ls } }, auth: c, headers: f2, timeout: y, skipInitChecks: P }); +} +function Wh(e24) { + let { host: t, port: r, grpcPort: a, grpcWebPath: i, authCredentials: n, headers: o, timeout: s, skipInitChecks: u } = e24 || {}; + return To({ connectionParams: { http: { secure: false, host: t || "localhost", port: r || 8080 }, grpc: { secure: false, host: t || "localhost", port: a || r || 8080, path: i || Ls } }, auth: n, headers: o, timeout: s, skipInitChecks: u }); +} +var Z_ = { connectToCustom: Fh, connectToLocal: Wh, connectToWeaviateCloud: Dh, client: To, ApiKey: Br, AuthUserPasswordCredentials: xa, AuthAccessTokenCredentials: dn, AuthClientCredentials: Ca, configure: ja, configGuards: yu, filter: ao(), reconfigure: Pu, permissions: yp, query: ks }; +export { + Br as ApiKey, + dn as AuthAccessTokenCredentials, + Ca as AuthClientCredentials, + xa as AuthUserPasswordCredentials, + ds as Bm25Operator, + ga as Filters, + mo as Iterator, + Rs as MetricsManager, + Bo as Quantizer, + us as Reference, + ir as ReferenceManager, + Fr as Sorting, + _o as VectorIndex, + sa as WeaviateBackupCanceled, + qa as WeaviateBackupCancellationError, + Bt as WeaviateBackupFailed, + Wa as WeaviateBatchError, + Ja as WeaviateBatchStreamError, + Da as WeaviateDeleteManyError, + b as WeaviateDeserializationError, + Yr as WeaviateGRPCUnavailableError, + jr as WeaviateInsufficientPermissionsError, + F as WeaviateInvalidInputError, + _t as WeaviateQueryError, + Xr as WeaviateRequestTimeoutError, + Zr as WeaviateSerializationError, + fu as WeaviateStartUpError, + Fa as WeaviateTenantsGetError, + La as WeaviateUnauthenticatedError, + Pt as WeaviateUnexpectedResponseError, + Ct as WeaviateUnexpectedStatusCodeError, + He as WeaviateUnsupportedFeatureError, + yu as configGuards, + ja as configure, + Fh as connectToCustom, + Wh as connectToLocal, + Dh as connectToWeaviateCloud, + wg as dataType, + Z_ as default, + lm as downloadImageFromURLAsBase64, + D_ as generateUuid5, + Tu as generative, + nh as generativeParameters, + Xf as metrics, + Cu as multiVectors, + ks as queryFactory, + Pu as reconfigure, + vu as reranker, + lt as toBase64FromMedia, + Mg as tokenization, + Eg as vectorDistances, + Rt as vectorIndex, + bu as vectorizer, + xu as vectors +}; +/*! Bundled license information: + +ieee754/index.js: + (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) + +buffer/index.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) +*/ +/*! Bundled license information: + +@datastructures-js/deque/src/deque.js: + (** + * @license MIT + * @copyright 2022 Eyas Ranjous + * + * @class + * double-ended queue + *) + +long/index.js: + (** + * @license + * Copyright 2009 The Closure Library Authors + * Copyright 2020 Daniel Wirtz / The long.js Authors. + * + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + *) +*/ diff --git a/yarn.lock b/yarn.lock index 145bf53f1..5f22f4a55 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3685,11 +3685,6 @@ resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.2.tgz#ae64fbc014ff44c8bfad03dd4c93cd2d6a4c82db" integrity sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw== -"@protobufjs/inquire@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.1.tgz#6cb936f4ac50965230af1e9d0bbfd57ea3675aa4" - integrity sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew== - "@protobufjs/path@^1.1.2": version "1.1.2" resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" @@ -9799,6 +9794,11 @@ isomorphic-fetch@^3.0.0: node-fetch "^2.6.1" whatwg-fetch "^3.4.1" +isomorphic-ws@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" + integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== + jackspeak@^2.3.6: version "2.3.6" resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" @@ -9886,6 +9886,11 @@ joi@^17.9.2: "@sideway/formula" "^3.0.1" "@sideway/pinpoint" "^2.0.0" +js-base64@^3.7.2: + version "3.7.8" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.8.tgz#af44496bc09fa178ed9c4adf67eb2b46f5c6d2a4" + integrity sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" @@ -11700,6 +11705,16 @@ nice-grpc-common@^2.0.3: dependencies: ts-error "^1.0.6" +nice-grpc-web@^3.3.10: + version "3.3.10" + resolved "https://registry.yarnpkg.com/nice-grpc-web/-/nice-grpc-web-3.3.10.tgz#8f82b1b7cb28726386478a2565515f33319e910a" + integrity sha512-8XyCtbs7uL0mWQEjpkjZy57bnLbtheRbIWgj8p98XPbjFqXOBkTLu+ebj5H4fUu/yxqt+6ULPPDHT/icUsyieA== + dependencies: + abort-controller-x "^0.5.0" + isomorphic-ws "^5.0.0" + js-base64 "^3.7.2" + nice-grpc-common "^2.0.3" + nice-grpc@^2.1.14: version "2.1.16" resolved "https://registry.yarnpkg.com/nice-grpc/-/nice-grpc-2.1.16.tgz#10f335eeb8c9c5aca85cc04e618a9e86c9d6b4fa" @@ -15796,6 +15811,15 @@ weaviate-client@^3.12.1: nice-grpc-common "^2.0.2" uuid "^14.0.0" +weaviate-ts-client@^1.3.3: + version "1.6.0" + resolved "https://registry.yarnpkg.com/weaviate-ts-client/-/weaviate-ts-client-1.6.0.tgz#83c516f2265dcfe6d0be30e234911a32115ba52b" + integrity sha512-1We0l8/uw6r8xnPsY8nSne1+/Ntd6o2JFq5LODqb63ac9v4QWDpT8dyPSRriUhif+IZ2Ttusw+w38361z72eaw== + dependencies: + graphql-request "^5.2.0" + isomorphic-fetch "^3.0.0" + uuid "^9.0.1" + weaviate-ts-embedded@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/weaviate-ts-embedded/-/weaviate-ts-embedded-1.2.0.tgz#08d0916cbf698e9ea12ef3ae9c6b96ab8f84a288" From 16bab79f8af7098e9bf09830c97012e4af4ccb46 Mon Sep 17 00:00:00 2001 From: Ivan Despot <66276597+g-despot@users.noreply.github.com> Date: Thu, 11 Jun 2026 10:23:24 +0300 Subject: [PATCH 3/3] Prompt for connection details on Run; use native grpc-web locally MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Run without stored credentials no longer executes against the localhost fallback. It opens the Connect panel in prompt mode: explains the snippet runs against the reader's own cluster, links to creating a free Weaviate Cloud cluster, and offers "Save and run" plus a remembered "Use local instance" opt-out. Weaviate 1.38 ships grpc-web in-process (weaviate/weaviate#11673), so tests/docker-compose-anon.yml now sets GRPC_WEB_ENABLED=true — the standard local test instance works with the playground's local path without Envoy or a custom build. Co-Authored-By: Claude Fable 5 --- BROWSER_PLAYGROUND_README.md | 6 +- src/theme/Tabs/index.js | 143 ++++++++++++++++++++---- src/theme/Tabs/playgroundCredentials.js | 21 ++++ src/theme/Tabs/styles.module.css | 31 ++++- tests/docker-compose-anon.yml | 3 +- 5 files changed, 181 insertions(+), 23 deletions(-) diff --git a/BROWSER_PLAYGROUND_README.md b/BROWSER_PLAYGROUND_README.md index 8700dcc58..ef1b003e5 100644 --- a/BROWSER_PLAYGROUND_README.md +++ b/BROWSER_PLAYGROUND_README.md @@ -36,6 +36,8 @@ The bundle's web entry (`connectToCustom`, `connectToWeaviateCloud`) speaks grpc The **Connect** button next to **Run** stores the reader's Weaviate Cloud cluster URL and API key in `localStorage` (`src/theme/Tabs/playgroundCredentials.js`). Before each run the runner injects them as the `WEAVIATE_URL` (normalized to a bare host) and `WEAVIATE_API_KEY` environment variables — `os.environ` for Python, a `process.env` shim for TypeScript — and removes them when cleared. Snippets read them with `os.environ.get(...)` and fall back to `localhost` when unset. The values never leave the reader's browser except in the requests the snippet itself makes to their Weaviate instance. +Hitting **Run** with no stored connection details does not execute. Instead it opens the Connect panel in prompt mode, which explains that the snippet runs against the reader's own cluster, links to creating a free Weaviate Cloud cluster, and offers **Save and run** (starts the run once a cluster URL is saved) plus a **Use local instance** escape hatch for readers with a local grpc-web-fronted Weaviate. The local choice is remembered in `localStorage` (`weaviatePlayground.useLocalInstance`) so subsequent runs go straight through; clearing credentials also forgets it. This prompt is an interim flow — once docs can provision an ephemeral Weaviate Cloud cluster dynamically, it will be replaced by one-click provisioning. + ## The Python Client The wheels are built from weaviate-python-client PR #2056 (branch `feat/grpc-web-wasm-transport`). Only the async client works under WebAssembly, the sync client raises an error. gRPC calls are routed over grpc-web using `fetch`. The companion package also reroutes the client's REST calls (httpx) through `fetch`, since httpx normally opens raw sockets that do not exist in the browser. @@ -55,7 +57,9 @@ The wheel filenames (`weaviate_client-4.21.4.dev5-py3-none-any.whl` and `weaviat ## Server Requirements -Snippets need a Weaviate instance fronted by a grpc-web transcoder such as Envoy or connectrpc/vanguard-go. The snippet defaults assume REST and grpc-web share `localhost:8080` with the path prefix `/grpc-web` (Weaviate Cloud clusters use port 443). The transcoder must send CORS headers for the docs origin and expose the `grpc-status` and `grpc-message` response headers. The REST passthrough (`/v1/...`) needs the same CORS treatment — without `Access-Control-Allow-Origin` on REST responses and preflights, browsers block `is_ready()` and every other REST call even when grpc-web queries work. Chrome and Firefox allow `http://localhost` fetches from an https page, so a local instance works from the production docs site in those browsers. Safari blocks them, and Chrome's Private Network Access checks may require the transcoder to answer a preflight request. +Snippets need a Weaviate instance that speaks grpc-web. As of Weaviate 1.38 (verified on `1.38.0-rc.1`), grpc-web support is built in (weaviate/weaviate#11673): set `GRPC_WEB_ENABLED=true` and an in-process transcoder serves grpc-web on the REST port under `/grpc-web/` — no Envoy or external proxy needed. The built-in transcoder sends CORS headers (`*` by default, configurable via `CORS_ALLOW_ORIGIN`) and exposes the `grpc-status`/`grpc-message` response headers. Older Weaviate versions need an external grpc-web transcoder such as Envoy or connectrpc/vanguard-go with equivalent CORS treatment. + +The snippet defaults assume REST and grpc-web share `localhost:8080` with the path prefix `/grpc-web` (Weaviate Cloud clusters use port 443). The local test instance in `tests/docker-compose-anon.yml` has `GRPC_WEB_ENABLED` set, so the playground's **Use local instance** path works against it with no credentials. One quirk: Weaviate's regular REST routes (`/v1/meta`, `/v1/schema`, …) send `Access-Control-Allow-Origin`, but `/v1/.well-known/ready` does not (the liveness/readiness middleware short-circuits before the CORS middleware), so browsers block `is_ready()` specifically — snippets should skip it (the movies snippet keeps it commented out for this reason). Chrome and Firefox allow `http://localhost` fetches from an https page, so a local instance works from the production docs site in those browsers. Safari blocks them, and Chrome's Private Network Access checks may require answering a preflight request. ## Limitations diff --git a/src/theme/Tabs/index.js b/src/theme/Tabs/index.js index 9b16bff2d..250df485b 100644 --- a/src/theme/Tabs/index.js +++ b/src/theme/Tabs/index.js @@ -23,6 +23,10 @@ import { loadCredentials, saveCredentials, clearCredentials, + normalizeClusterUrl, + hasCredentials, + isLocalOptIn, + setLocalOptIn, } from "./playgroundCredentials"; // Language configuration @@ -318,13 +322,31 @@ const CodeExecutor = ({ code, language, onExecute, isExecuting }) => { // Button + panel for storing the reader's Weaviate Cloud URL and API key. // They are kept in localStorage and injected as WEAVIATE_URL / // WEAVIATE_API_KEY environment variables before each in-browser run. -const CredentialsButton = () => { +// +// When `promptOpen` is true (the reader hit Run without connection details), +// the panel opens in prompt mode: it explains why the details are needed, +// links to creating a free cluster, and offers "Save and run" plus a +// "Use local instance" escape hatch. `onConnected` starts the pending run. +const CredentialsButton = ({ + promptOpen = false, + onPromptDismiss, + onConnected, +}) => { const [isOpen, setIsOpen] = useState(false); const [url, setUrl] = useState(""); const [apiKey, setApiKey] = useState(""); const [isSaved, setIsSaved] = useState(false); const wrapperRef = useRef(null); + const panelOpen = isOpen || promptOpen; + + const closePanel = () => { + setIsOpen(false); + if (promptOpen && onPromptDismiss) { + onPromptDismiss(); + } + }; + // Sync state from storage, including when another instance on the page // saves or clears credentials. useEffect(() => { @@ -339,40 +361,65 @@ const CredentialsButton = () => { return () => window.removeEventListener(CREDENTIALS_CHANGE_EVENT, sync); }, []); + // When Run opens the prompt, discard any unsaved draft so the fields show + // what a run would actually use. + useEffect(() => { + if (promptOpen) { + const creds = loadCredentials(); + setUrl(creds.url); + setApiKey(creds.apiKey); + } + }, [promptOpen]); + // Close the panel on outside clicks useEffect(() => { - if (!isOpen) return undefined; + if (!panelOpen) return undefined; const handleClickOutside = (event) => { if (wrapperRef.current && !wrapperRef.current.contains(event.target)) { - setIsOpen(false); + closePanel(); } }; document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); - }, [isOpen]); + }, [panelOpen, promptOpen]); const handleSave = () => { saveCredentials({ url, apiKey }); - setIsOpen(false); + const savedUrl = Boolean(normalizeClusterUrl(url)); + closePanel(); + // In prompt mode, saving a cluster URL starts the run the reader asked for + if (promptOpen && savedUrl && onConnected) { + onConnected(); + } }; const handleClear = () => { clearCredentials(); }; + const handleUseLocal = () => { + setLocalOptIn(true); + closePanel(); + if (onConnected) { + onConnected(); + } + }; + return (

- {isOpen && ( + {panelOpen && (
+ {promptOpen && ( + + )}
- - + {promptOpen ? ( + + ) : ( + + )}
)} @@ -496,6 +578,10 @@ const CodeDropdownTabs = ({ }); const [isExecuting, setIsExecuting] = useState(false); + // When the reader hits Run without stored connection details, the Connect + // panel opens in prompt mode instead of executing against the localhost + // fallback (which most readers do not have running). + const [showConnectPrompt, setShowConnectPrompt] = useState(false); // State for editing mode const [isEditing, setIsEditing] = useState(false); const [editedCode, setEditedCode] = useState(null); @@ -593,6 +679,7 @@ const CodeDropdownTabs = ({ isInternalChange.current = true; setSelectedValue(newValue); setIsExecuting(false); // Reset execution state when changing language + setShowConnectPrompt(false); if (typeof window !== "undefined") { if (groupId) { localStorage.setItem(`docusaurus.tab.${groupId}`, newValue); @@ -605,13 +692,23 @@ const CodeDropdownTabs = ({ }; // Save code if editing, then run - const handleExecute = () => { + const startRun = () => { if (isEditing) { setIsEditing(false); } setIsExecuting(true); }; + // Run gate: without stored credentials (and no explicit local-instance + // choice), prompt for connection details instead of running. + const handleExecute = () => { + if (!hasCredentials() && !isLocalOptIn()) { + setShowConnectPrompt(true); + return; + } + startRun(); + }; + // This handler now calculates and sets the editor's height const handleEditToggle = () => { if (isEditing) { @@ -715,7 +812,13 @@ const CodeDropdownTabs = ({ )} - {canExecute && } + {canExecute && ( + setShowConnectPrompt(false)} + onConnected={startRun} + /> + )} {(overrideDocsUrl || docSystem?.baseUrl) && ( diff --git a/src/theme/Tabs/playgroundCredentials.js b/src/theme/Tabs/playgroundCredentials.js index c0181b9e2..d1ffc5e39 100644 --- a/src/theme/Tabs/playgroundCredentials.js +++ b/src/theme/Tabs/playgroundCredentials.js @@ -7,6 +7,9 @@ const URL_STORAGE_KEY = "weaviatePlayground.wcdUrl"; const API_KEY_STORAGE_KEY = "weaviatePlayground.wcdApiKey"; +// Set when the reader explicitly chooses to run against a local instance, so +// the Run button stops prompting for Weaviate Cloud credentials. +const LOCAL_OPT_IN_STORAGE_KEY = "weaviatePlayground.useLocalInstance"; // Other CodeDropdownTabs instances on the page listen for this to keep their // "Connect" button state in sync (same pattern as codeLanguageChange). @@ -55,6 +58,9 @@ export function clearCredentials() { if (typeof window === "undefined") return; localStorage.removeItem(URL_STORAGE_KEY); localStorage.removeItem(API_KEY_STORAGE_KEY); + // Clearing credentials also forgets the local-instance choice, so the next + // Run click prompts for connection details again. + localStorage.removeItem(LOCAL_OPT_IN_STORAGE_KEY); window.dispatchEvent(new CustomEvent(CREDENTIALS_CHANGE_EVENT)); } @@ -62,3 +68,18 @@ export function hasCredentials() { const { url, apiKey } = loadCredentials(); return Boolean(url || apiKey); } + +export function isLocalOptIn() { + if (typeof window === "undefined") return false; + return localStorage.getItem(LOCAL_OPT_IN_STORAGE_KEY) === "true"; +} + +export function setLocalOptIn(value) { + if (typeof window === "undefined") return; + if (value) { + localStorage.setItem(LOCAL_OPT_IN_STORAGE_KEY, "true"); + } else { + localStorage.removeItem(LOCAL_OPT_IN_STORAGE_KEY); + } + window.dispatchEvent(new CustomEvent(CREDENTIALS_CHANGE_EVENT)); +} diff --git a/src/theme/Tabs/styles.module.css b/src/theme/Tabs/styles.module.css index 99b6fa6cb..45d4ed26b 100644 --- a/src/theme/Tabs/styles.module.css +++ b/src/theme/Tabs/styles.module.css @@ -121,6 +121,30 @@ html[data-theme="dark"] .editButton { box-shadow: 0 6px 16px rgba(0, 0, 0, 0.15); } +/* Shown above the fields when the Run button opens the panel because no + connection details are stored yet */ +.credentialsPromptIntro { + display: flex; + flex-direction: column; + gap: 0.35rem; + + strong { + font-size: 13px; + color: var(--ifm-font-color-base); + } + + p { + margin: 0; + font-size: 12px; + line-height: 1.5; + color: var(--ifm-color-emphasis-700); + } + + a { + font-weight: 600; + } +} + .credentialsField { display: flex; flex-direction: column; @@ -180,9 +204,14 @@ html[data-theme="dark"] .editButton { background-color: var(--ifm-color-primary); border: 1px solid var(--ifm-color-primary); - &:hover { + &:hover:not(:disabled) { background-color: var(--ifm-color-primary-dark); } + + &:disabled { + opacity: 0.5; + cursor: not-allowed; + } } .credentialsClear { diff --git a/tests/docker-compose-anon.yml b/tests/docker-compose-anon.yml index d56a3f729..b520398d3 100644 --- a/tests/docker-compose-anon.yml +++ b/tests/docker-compose-anon.yml @@ -8,13 +8,14 @@ services: - '8080' - --scheme - http - image: cr.weaviate.io/semitechnologies/weaviate:1.38.0-rc.1 + image: cr.weaviate.io/semitechnologies/weaviate:1.38.0-rc.1-eca1ba3.arm64 ports: - 8080:8080 - 50051:50051 restart: on-failure:0 environment: QUERY_DEFAULTS_LIMIT: 25 + GRPC_WEB_ENABLED: 'true' AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' PERSISTENCE_DATA_PATH: '/var/lib/weaviate' ASYNC_INDEXING: 'true'