From 547065d64122cf56ea786ee5a11f8a47aea70494 Mon Sep 17 00:00:00 2001 From: Erik Peterson Date: Tue, 20 Jun 2023 16:49:05 -0700 Subject: [PATCH 1/8] Implement openai functions feature flag Signed-off-by: Merwane Hamadi --- .env.template | 6 +- autogpt/agent/agent.py | 44 +++- autogpt/agent/agent_manager.py | 8 +- autogpt/app.py | 24 +- autogpt/command_decorator.py | 12 +- autogpt/config/ai_config.py | 2 +- autogpt/config/config.py | 2 + autogpt/json_utils/utilities.py | 10 +- autogpt/llm/chat.py | 10 +- autogpt/llm/utils/__init__.py | 24 +- autogpt/memory/message_history.py | 2 +- autogpt/models/chat_completion_response.py | 4 + autogpt/models/command.py | 8 +- autogpt/models/command_argument.py | 9 + autogpt/models/command_function.py | 18 ++ autogpt/processing/text.py | 7 +- autogpt/prompts/generator.py | 26 ++- autogpt/setup.py | 2 +- tests/unit/test_agent_manager.py | 5 +- tests/unit/test_commands.py | 28 +-- tests/unit/test_message_history.py | 10 +- tests/unit/test_prompt_generator.py | 255 ++++++++++++--------- 22 files changed, 350 insertions(+), 166 deletions(-) create mode 100644 autogpt/models/chat_completion_response.py create mode 100644 autogpt/models/command_argument.py create mode 100644 autogpt/models/command_function.py diff --git a/.env.template b/.env.template index 067452457937..4eb344a7b8b7 100644 --- a/.env.template +++ b/.env.template @@ -25,10 +25,14 @@ OPENAI_API_KEY=your-openai-api-key ## PROMPT_SETTINGS_FILE - Specifies which Prompt Settings file to use (defaults to prompt_settings.yaml) # PROMPT_SETTINGS_FILE=prompt_settings.yaml -## OPENAI_API_BASE_URL - Custom url for the OpenAI API, useful for connecting to custom backends. No effect if USE_AZURE is true, leave blank to keep the default url +## OPENAI_API_BASE_URL - Custom url for the OpenAI API, useful for connecting to custom backends. No effect if USE_AZURE is true, leave blank to keep the default url # the following is an example: # OPENAI_API_BASE_URL=http://localhost:443/v1 +## OPENAI_FUNCTIONS - Enables OpenAI functions: https://platform.openai.com/docs/guides/gpt/function-calling +# the following is an example: +# OPENAI_FUNCTIONS=False + ## AUTHORISE COMMAND KEY - Key to authorise commands # AUTHORISE_COMMAND_KEY=y diff --git a/autogpt/agent/agent.py b/autogpt/agent/agent.py index 7537233efc0f..1a8248b8a119 100644 --- a/autogpt/agent/agent.py +++ b/autogpt/agent/agent.py @@ -20,6 +20,7 @@ from autogpt.logs import logger, print_assistant_thoughts from autogpt.memory.message_history import MessageHistory from autogpt.memory.vector import VectorMemory +from autogpt.models.command_function import CommandFunction from autogpt.models.command_registry import CommandRegistry from autogpt.speech import say_text from autogpt.spinner import Spinner @@ -138,11 +139,14 @@ def signal_handler(signum, frame): self.system_prompt, self.triggering_prompt, self.fast_token_limit, + self.get_functions_from_commands(), self.config.fast_llm_model, ) try: - assistant_reply_json = extract_json_from_response(assistant_reply) + assistant_reply_json = extract_json_from_response( + assistant_reply.content + ) validate_json(assistant_reply_json, self.config) except json.JSONDecodeError as e: logger.error(f"Exception while validating assistant reply JSON: {e}") @@ -160,7 +164,9 @@ def signal_handler(signum, frame): print_assistant_thoughts( self.ai_name, assistant_reply_json, self.config ) - command_name, arguments = get_command(assistant_reply_json) + command_name, arguments = get_command( + assistant_reply_json, assistant_reply, self.config + ) if self.config.speak_mode: say_text(f"I want to execute {command_name}") @@ -314,3 +320,37 @@ def _resolve_pathlike_command_args(self, command_args): self.workspace.get_path(command_args[pathlike]) ) return command_args + + def get_functions_from_commands(self) -> list[CommandFunction]: + """Get functions from the commands. "functions" in this context refers to OpenAI functions + see https://platform.openai.com/docs/guides/gpt/function-calling + """ + functions = [] + if not self.config.openai_functions: + return functions + for command in self.command_registry.commands.values(): + properties = {} + required = [] + + for argument in command.arguments: + properties[argument.name] = { + "type": argument.type, + "description": argument.description, + } + if argument.required: + required.append(argument.name) + + parameters = { + "type": "object", + "properties": properties, + "required": required, + } + functions.append( + CommandFunction( + name=command.name, + description=command.description, + parameters=parameters, + ) + ) + + return functions diff --git a/autogpt/agent/agent_manager.py b/autogpt/agent/agent_manager.py index 1f1c8a1de05f..eaecbf3b41a8 100644 --- a/autogpt/agent/agent_manager.py +++ b/autogpt/agent/agent_manager.py @@ -41,7 +41,9 @@ def create_agent( if plugin_messages := plugin.pre_instruction(messages.raw()): messages.extend([Message(**raw_msg) for raw_msg in plugin_messages]) # Start GPT instance - agent_reply = create_chat_completion(prompt=messages, config=self.config) + agent_reply = create_chat_completion( + prompt=messages, config=self.config + ).content messages.add("assistant", agent_reply) @@ -92,7 +94,9 @@ def message_agent(self, key: str | int, message: str) -> str: messages.extend([Message(**raw_msg) for raw_msg in plugin_messages]) # Start GPT instance - agent_reply = create_chat_completion(prompt=messages, config=self.config) + agent_reply = create_chat_completion( + prompt=messages, config=self.config + ).content messages.add("assistant", agent_reply) diff --git a/autogpt/app.py b/autogpt/app.py index 78e3a4dd206e..4f1c3a9a436e 100644 --- a/autogpt/app.py +++ b/autogpt/app.py @@ -3,6 +3,8 @@ from typing import Dict from autogpt.agent.agent import Agent +from autogpt.config import Config +from autogpt.models.chat_completion_response import ChatCompletionResponse def is_valid_int(value: str) -> bool: @@ -21,11 +23,13 @@ def is_valid_int(value: str) -> bool: return False -def get_command(response_json: Dict): +def get_command( + assistant_reply_json: Dict, assistant_reply: ChatCompletionResponse, config: Config +): """Parse the response and return the command name and arguments Args: - response_json (json): The response from the AI + assistant_reply_json (json): The response from the AI Returns: tuple: The command name and arguments @@ -35,14 +39,22 @@ def get_command(response_json: Dict): Exception: If any other error occurs """ + if config.openai_functions: + assistant_reply_json["command"] = { + "name": assistant_reply.function_call.name, + "args": json.loads(assistant_reply.function_call.arguments), + } try: - if "command" not in response_json: + if "command" not in assistant_reply_json: return "Error:", "Missing 'command' object in JSON" - if not isinstance(response_json, dict): - return "Error:", f"'response_json' object is not dictionary {response_json}" + if not isinstance(assistant_reply_json, dict): + return ( + "Error:", + f"'assistant_reply_json' object is not dictionary {assistant_reply_json}", + ) - command = response_json["command"] + command = assistant_reply_json["command"] if not isinstance(command, dict): return "Error:", "'command' object is not a dictionary" diff --git a/autogpt/command_decorator.py b/autogpt/command_decorator.py index 1edd766ec4dd..d86e41096b22 100644 --- a/autogpt/command_decorator.py +++ b/autogpt/command_decorator.py @@ -3,6 +3,7 @@ from autogpt.config import Config from autogpt.models.command import Command +from autogpt.models.command_argument import CommandArgument # Unique identifier for auto-gpt commands AUTO_GPT_COMMAND_IDENTIFIER = "auto_gpt_command" @@ -18,11 +19,20 @@ def command( """The command decorator is used to create Command objects from ordinary functions.""" def decorator(func: Callable[..., Any]) -> Command: + typed_arguments = [ + CommandArgument( + name=arg_name, + description=argument.get("description"), + type=argument.get("type", "string"), + required=argument.get("required", False), + ) + for arg_name, argument in arguments.items() + ] cmd = Command( name=name, description=description, method=func, - signature=arguments, + arguments=typed_arguments, enabled=enabled, disabled_reason=disabled_reason, ) diff --git a/autogpt/config/ai_config.py b/autogpt/config/ai_config.py index 6b9e15f181b7..3c645abe36f3 100644 --- a/autogpt/config/ai_config.py +++ b/autogpt/config/ai_config.py @@ -164,5 +164,5 @@ def construct_full_prompt( if self.api_budget > 0.0: full_prompt += f"\nIt takes money to let you run. Your API budget is ${self.api_budget:.3f}" self.prompt_generator = prompt_generator - full_prompt += f"\n\n{prompt_generator.generate_prompt_string()}" + full_prompt += f"\n\n{prompt_generator.generate_prompt_string(config)}" return full_prompt diff --git a/autogpt/config/config.py b/autogpt/config/config.py index 5e0999b15666..d032f8224eab 100644 --- a/autogpt/config/config.py +++ b/autogpt/config/config.py @@ -88,6 +88,8 @@ def __init__(self) -> None: if self.openai_organization is not None: openai.organization = self.openai_organization + self.openai_functions = os.getenv("OPENAI_FUNCTIONS", "False") == "True" + self.elevenlabs_api_key = os.getenv("ELEVENLABS_API_KEY") # ELEVENLABS_VOICE_1_ID is deprecated and included for backwards-compatibility self.elevenlabs_voice_id = os.getenv( diff --git a/autogpt/json_utils/utilities.py b/autogpt/json_utils/utilities.py index 4fbf0c0578bf..b78d6322ed7f 100644 --- a/autogpt/json_utils/utilities.py +++ b/autogpt/json_utils/utilities.py @@ -29,11 +29,15 @@ def extract_json_from_response(response_content: str) -> dict: def llm_response_schema( - schema_name: str = LLM_DEFAULT_RESPONSE_FORMAT, + config: Config, schema_name: str = LLM_DEFAULT_RESPONSE_FORMAT ) -> dict[str, Any]: filename = os.path.join(os.path.dirname(__file__), f"{schema_name}.json") with open(filename, "r") as f: - return json.load(f) + json_schema = json.load(f) + if config.openai_functions: + del json_schema["properties"]["command"] + json_schema["required"] = ["thoughts"] + return json_schema def validate_json( @@ -47,7 +51,7 @@ def validate_json( Returns: bool: Whether the json_object is valid or not """ - schema = llm_response_schema(schema_name) + schema = llm_response_schema(config, schema_name) validator = Draft7Validator(schema) if errors := sorted(validator.iter_errors(json_object), key=lambda e: e.path): diff --git a/autogpt/llm/chat.py b/autogpt/llm/chat.py index 0a088d061be8..5952da58b84a 100644 --- a/autogpt/llm/chat.py +++ b/autogpt/llm/chat.py @@ -1,7 +1,9 @@ from __future__ import annotations import time -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, List + +from autogpt.models.command_function import CommandFunction if TYPE_CHECKING: from autogpt.agent.agent import Agent @@ -21,6 +23,7 @@ def chat_with_ai( system_prompt: str, triggering_prompt: str, token_limit: int, + functions: List[CommandFunction], model: str | None = None, ): """ @@ -94,6 +97,7 @@ def chat_with_ai( current_tokens_used += count_message_tokens([user_input_msg], model) current_tokens_used += 500 # Reserve space for new_summary_message + current_tokens_used += 500 # Reserve space for the openai functions TODO improve # Add Messages until the token limit is reached or there are no more messages to add. for cycle in reversed(list(agent.history.per_cycle(agent.config))): @@ -193,11 +197,13 @@ def chat_with_ai( assistant_reply = create_chat_completion( prompt=message_sequence, config=agent.config, + functions=functions, max_tokens=tokens_remaining, ) # Update full message history agent.history.append(user_input_msg) - agent.history.add("assistant", assistant_reply, "ai_response") + + agent.history.add("assistant", assistant_reply.content, "ai_response") return assistant_reply diff --git a/autogpt/llm/utils/__init__.py b/autogpt/llm/utils/__init__.py index 3b0d3e17608e..d083bb80a7ad 100644 --- a/autogpt/llm/utils/__init__.py +++ b/autogpt/llm/utils/__init__.py @@ -7,6 +7,8 @@ from autogpt.config import Config from autogpt.logs import logger +from ...models.chat_completion_response import ChatCompletionResponse +from ...models.command_function import CommandFunction from ..api_manager import ApiManager from ..base import ChatSequence, Message from ..providers import openai as iopenai @@ -52,7 +54,7 @@ def call_ai_function( Message("user", arg_str), ], ) - return create_chat_completion(prompt=prompt, temperature=0) + return create_chat_completion(prompt=prompt, temperature=0).content def create_text_completion( @@ -88,10 +90,11 @@ def create_text_completion( def create_chat_completion( prompt: ChatSequence, config: Config, + functions: Optional[List[CommandFunction]] = [], model: Optional[str] = None, temperature: Optional[float] = None, max_tokens: Optional[int] = None, -) -> str: +) -> ChatCompletionResponse: """Create a chat completion using the OpenAI API Args: @@ -134,6 +137,10 @@ def create_chat_completion( chat_completion_kwargs[ "deployment_id" ] = config.get_azure_deployment_id_for_model(model) + if functions: + chat_completion_kwargs["functions"] = [ + function.__dict__ for function in functions + ] response = iopenai.create_chat_completion( messages=prompt.raw(), @@ -141,19 +148,20 @@ def create_chat_completion( ) logger.debug(f"Response: {response}") - resp = "" - if not hasattr(response, "error"): - resp = response.choices[0].message["content"] - else: + if hasattr(response, "error"): logger.error(response.error) raise RuntimeError(response.error) + first_message = response.choices[0].message + content = first_message["content"] + function_call = first_message.get("function_call", {}) + for plugin in config.plugins: if not plugin.can_handle_on_response(): continue - resp = plugin.on_response(resp) + content = plugin.on_response(content) - return resp + return ChatCompletionResponse(content=content, function_call=function_call) def check_model( diff --git a/autogpt/memory/message_history.py b/autogpt/memory/message_history.py index 4dba13dd8923..f3e1dc30c946 100644 --- a/autogpt/memory/message_history.py +++ b/autogpt/memory/message_history.py @@ -228,7 +228,7 @@ def summarize_batch(self, new_events_batch, config): PROMPT_SUMMARY_FILE_NAME, ) - self.summary = create_chat_completion(prompt, config) + self.summary = create_chat_completion(prompt, config).content self.agent.log_cycle_handler.log_cycle( self.agent.ai_name, diff --git a/autogpt/models/chat_completion_response.py b/autogpt/models/chat_completion_response.py new file mode 100644 index 000000000000..c2b241533a5e --- /dev/null +++ b/autogpt/models/chat_completion_response.py @@ -0,0 +1,4 @@ +class ChatCompletionResponse: + def __init__(self, content: str, function_call: dict[str, str]): + self.content = content + self.function_call = function_call diff --git a/autogpt/models/command.py b/autogpt/models/command.py index f88bbcae6081..aa0883a34f88 100644 --- a/autogpt/models/command.py +++ b/autogpt/models/command.py @@ -9,7 +9,7 @@ class Command: Attributes: name (str): The name of the command. description (str): A brief description of what the command does. - signature (str): The signature of the function that the command executes. Defaults to None. + arguments (str): The arguments of the function that the command executes. Defaults to None. """ def __init__( @@ -17,14 +17,14 @@ def __init__( name: str, description: str, method: Callable[..., Any], - signature: Dict[str, Dict[str, Any]], + arguments: Dict[str, Dict[str, Any]], enabled: bool | Callable[[Config], bool] = True, disabled_reason: Optional[str] = None, ): self.name = name self.description = description self.method = method - self.signature = signature + self.arguments = arguments self.enabled = enabled self.disabled_reason = disabled_reason @@ -38,4 +38,4 @@ def __call__(self, *args, **kwargs) -> Any: return self.method(*args, **kwargs) def __str__(self) -> str: - return f"{self.name}: {self.description}, args: {self.signature}" + return f"{self.name}: {self.description}, args: {self.arguments}" diff --git a/autogpt/models/command_argument.py b/autogpt/models/command_argument.py new file mode 100644 index 000000000000..c70c0880d6e2 --- /dev/null +++ b/autogpt/models/command_argument.py @@ -0,0 +1,9 @@ +class CommandArgument: + def __init__(self, name: str, type: str, description: str, required: bool): + self.name = name + self.type = type + self.description = description + self.required = required + + def __repr__(self): + return f"CommandArgument('{self.name}', '{self.type}', '{self.description}', {self.required})" diff --git a/autogpt/models/command_function.py b/autogpt/models/command_function.py new file mode 100644 index 000000000000..7cd85e453ab3 --- /dev/null +++ b/autogpt/models/command_function.py @@ -0,0 +1,18 @@ +from typing import Any + + +class CommandFunction: + """Represents a "function" in OpenAI, which is mapped to a Command in Auto-GPT""" + + def __init__(self, name: str, description: str, parameters: dict[str, Any]): + self.name = name + self.description = description + self.parameters = parameters + + @property + def __dict__(self) -> dict: + return { + "name": self.name, + "description": self.description, + "parameters": self.parameters, + } diff --git a/autogpt/processing/text.py b/autogpt/processing/text.py index 78eabf45bbb5..30caa5970cbd 100644 --- a/autogpt/processing/text.py +++ b/autogpt/processing/text.py @@ -67,7 +67,8 @@ def summarize_text( Args: text (str): The text to summarize - config (Config): The config object + config (Config): Thtext( + "\n\n".joine config object instruction (str): Additional instruction for summarization, e.g. "focus on information related to polar bears", "omit personal information contained in the text" question (str): Question to answer in the summary @@ -114,8 +115,8 @@ def summarize_text( logger.debug(f"Summarizing with {model}:\n{summarization_prompt.dump()}\n") summary = create_chat_completion( - summarization_prompt, config, temperature=0, max_tokens=500 - ) + prompt=summarization_prompt, config=config, temperature=0, max_tokens=500 + ).content logger.debug(f"\n{'-'*16} SUMMARY {'-'*17}\n{summary}\n{'-'*42}\n") return summary.strip(), None diff --git a/autogpt/prompts/generator.py b/autogpt/prompts/generator.py index 2a0334bf45a7..f48816247a13 100644 --- a/autogpt/prompts/generator.py +++ b/autogpt/prompts/generator.py @@ -1,7 +1,10 @@ """ A module for generating custom prompt strings.""" +import json from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional +from autogpt.config import Config from autogpt.json_utils.utilities import llm_response_schema +from autogpt.models.command import Command if TYPE_CHECKING: from autogpt.models.command_registry import CommandRegistry @@ -127,7 +130,7 @@ def _generate_numbered_list(self, items: List[Any], item_type="list") -> str: else: return "\n".join(f"{i+1}. {item}" for i, item in enumerate(items)) - def generate_prompt_string(self) -> str: + def generate_prompt_string(self, config: Config) -> str: """ Generate a prompt string based on the constraints, commands, resources, and performance evaluations. @@ -137,11 +140,26 @@ def generate_prompt_string(self) -> str: """ return ( f"Constraints:\n{self._generate_numbered_list(self.constraints)}\n\n" - "Commands:\n" - f"{self._generate_numbered_list(self.commands, item_type='command')}\n\n" f"Resources:\n{self._generate_numbered_list(self.resources)}\n\n" + f"{generate_commands(self, self.commands, config)}" "Performance Evaluation:\n" f"{self._generate_numbered_list(self.performance_evaluation)}\n\n" "Respond with only valid JSON conforming to the following schema: \n" - f"{llm_response_schema()}\n" + f"{json.dumps(llm_response_schema(config))}\n" ) + + +def generate_commands(self, commands: List[Command], config: Config) -> str: + """ + Generate a prompt string based on the constraints, commands, resources, + and performance evaluations. + + Returns: + str: The generated prompt string. + """ + if config.openai_functions: + return "" + return ( + "Commands:\n" + f"{self._generate_numbered_list(self.commands, item_type='command')}\n\n" + ) diff --git a/autogpt/setup.py b/autogpt/setup.py index 2fe8b3a9f1e8..f17a91e05ec1 100644 --- a/autogpt/setup.py +++ b/autogpt/setup.py @@ -185,7 +185,7 @@ def generate_aiconfig_automatic(user_prompt: str, config: Config) -> AIConfig: ], ), config, - ) + ).content # Debug LLM Output logger.debug(f"AI Config Generator Raw Output: {output}") diff --git a/tests/unit/test_agent_manager.py b/tests/unit/test_agent_manager.py index a372b7260dad..d9b99efea47b 100644 --- a/tests/unit/test_agent_manager.py +++ b/tests/unit/test_agent_manager.py @@ -2,6 +2,7 @@ from autogpt.agent.agent_manager import AgentManager from autogpt.llm.chat import create_chat_completion +from autogpt.models.chat_completion_response import ChatCompletionResponse @pytest.fixture @@ -32,7 +33,9 @@ def mock_create_chat_completion(mocker): "autogpt.agent.agent_manager.create_chat_completion", wraps=create_chat_completion, ) - mock_create_chat_completion.return_value = "irrelevant" + mock_create_chat_completion.return_value = ChatCompletionResponse( + content="irrelevant", function_call={} + ) return mock_create_chat_completion diff --git a/tests/unit/test_commands.py b/tests/unit/test_commands.py index cb3f539acec2..2730a3bd7fc7 100644 --- a/tests/unit/test_commands.py +++ b/tests/unit/test_commands.py @@ -8,7 +8,7 @@ from autogpt.models.command import Command from autogpt.models.command_registry import CommandRegistry -SIGNATURE = "(arg1: int, arg2: str) -> str" +ARGUMENTS = "(arg1: int, arg2: str) -> str" class TestCommand: @@ -26,13 +26,13 @@ def test_command_creation(self): name="example", description="Example command", method=self.example_command_method, - signature=SIGNATURE, + arguments=ARGUMENTS, ) assert cmd.name == "example" assert cmd.description == "Example command" assert cmd.method == self.example_command_method - assert cmd.signature == "(arg1: int, arg2: str) -> str" + assert cmd.arguments == "(arg1: int, arg2: str) -> str" def test_command_call(self): """Test that Command(*args) calls and returns the result of method(*args).""" @@ -41,7 +41,7 @@ def test_command_call(self): name="example", description="Example command", method=self.example_command_method, - signature={ + arguments={ "prompt": { "type": "string", "description": "The prompt used to generate the image", @@ -58,21 +58,21 @@ def test_command_call_with_invalid_arguments(self): name="example", description="Example command", method=self.example_command_method, - signature=SIGNATURE, + arguments=ARGUMENTS, ) with pytest.raises(TypeError): cmd(arg1="invalid", does_not_exist="test") - def test_command_custom_signature(self): - custom_signature = "custom_arg1: int, custom_arg2: str" + def test_command_custom_arguments(self): + custom_arguments = "custom_arg1: int, custom_arg2: str" cmd = Command( name="example", description="Example command", method=self.example_command_method, - signature=custom_signature, + arguments=custom_arguments, ) - assert cmd.signature == custom_signature + assert cmd.arguments == custom_arguments class TestCommandRegistry: @@ -87,7 +87,7 @@ def test_register_command(self): name="example", description="Example command", method=self.example_command_method, - signature=SIGNATURE, + arguments=ARGUMENTS, ) registry.register(cmd) @@ -102,7 +102,7 @@ def test_unregister_command(self): name="example", description="Example command", method=self.example_command_method, - signature=SIGNATURE, + arguments=ARGUMENTS, ) registry.register(cmd) @@ -117,7 +117,7 @@ def test_get_command(self): name="example", description="Example command", method=self.example_command_method, - signature=SIGNATURE, + arguments=ARGUMENTS, ) registry.register(cmd) @@ -139,7 +139,7 @@ def test_call_command(self): name="example", description="Example command", method=self.example_command_method, - signature=SIGNATURE, + arguments=ARGUMENTS, ) registry.register(cmd) @@ -161,7 +161,7 @@ def test_get_command_prompt(self): name="example", description="Example command", method=self.example_command_method, - signature=SIGNATURE, + arguments=ARGUMENTS, ) registry.register(cmd) diff --git a/tests/unit/test_message_history.py b/tests/unit/test_message_history.py index 14b60895ecf2..6e6c2d2a4e5d 100644 --- a/tests/unit/test_message_history.py +++ b/tests/unit/test_message_history.py @@ -11,6 +11,7 @@ from autogpt.llm.providers.openai import OPEN_AI_CHAT_MODELS from autogpt.llm.utils import count_string_tokens from autogpt.memory.message_history import MessageHistory +from autogpt.models.chat_completion_response import ChatCompletionResponse @pytest.fixture @@ -45,10 +46,13 @@ def test_message_history_batch_summary(mocker, agent, config): message_count = 0 # Setting the mock output and inputs - mock_summary_text = "I executed browse_website command for each of the websites returned from Google search, but none of them have any job openings." + mock_summary_response = ChatCompletionResponse( + content="I executed browse_website command for each of the websites returned from Google search, but none of them have any job openings.", + function_call={}, + ) mock_summary = mocker.patch( "autogpt.memory.message_history.create_chat_completion", - return_value=mock_summary_text, + return_value=mock_summary_response, ) system_prompt = 'You are AIJobSearcher, an AI designed to search for job openings for software engineer role\nYour decisions must always be made independently without seeking user assistance. Play to your strengths as an LLM and pursue simple strategies with no legal complications.\n\nGOALS:\n\n1. Find any job openings for software engineers online\n2. Go through each of the websites and job openings to summarize their requirements and URL, and skip that if you already visit the website\n\nIt takes money to let you run. Your API budget is $5.000\n\nConstraints:\n1. ~4000 word limit for short term memory. Your short term memory is short, so immediately save important information to files.\n2. If you are unsure how you previously did something or want to recall past events, thinking about similar events will help you remember.\n3. No user assistance\n4. Exclusively use the commands listed in double quotes e.g. "command name"\n\nCommands:\n1. google_search: Google Search, args: "query": ""\n2. browse_website: Browse Website, args: "url": "", "question": ""\n3. task_complete: Task Complete (Shutdown), args: "reason": ""\n\nResources:\n1. Internet access for searches and information gathering.\n2. Long Term memory management.\n3. GPT-3.5 powered Agents for delegation of simple tasks.\n4. File output.\n\nPerformance Evaluation:\n1. Continuously review and analyze your actions to ensure you are performing to the best of your abilities.\n2. Constructively self-criticize your big-picture behavior constantly.\n3. Reflect on past decisions and strategies to refine your approach.\n4. Every command has a cost, so be smart and efficient. Aim to complete tasks in the least number of steps.\n5. Write all code to a file.\n\nYou should only respond in JSON format as described below \nResponse Format: \n{\n "thoughts": {\n "text": "thought",\n "reasoning": "reasoning",\n "plan": "- short bulleted\\n- list that conveys\\n- long-term plan",\n "criticism": "constructive self-criticism",\n "speak": "thoughts summary to say to user"\n },\n "command": {\n "name": "command name",\n "args": {\n "arg name": "value"\n }\n }\n} \nEnsure the response can be parsed by Python json.loads' @@ -139,6 +143,6 @@ def test_message_history_batch_summary(mocker, agent, config): assert new_summary_message == Message( role="system", content="This reminds you of these events from your past: \n" - + mock_summary_text, + + mock_summary_response.content, type=None, ) diff --git a/tests/unit/test_prompt_generator.py b/tests/unit/test_prompt_generator.py index 1fa1754d744d..c5ffaf78cd12 100644 --- a/tests/unit/test_prompt_generator.py +++ b/tests/unit/test_prompt_generator.py @@ -1,115 +1,152 @@ -from unittest import TestCase - from autogpt.prompts.generator import PromptGenerator -class TestPromptGenerator(TestCase): +def test_add_constraint(): + """ + Test if the add_constraint() method adds a constraint to the generator's constraints list. + """ + constraint = "Constraint1" + generator = PromptGenerator() + generator.add_constraint(constraint) + assert constraint in generator.constraints + + +def test_add_command(): + """ + Test if the add_command() method adds a command to the generator's commands list. + """ + command_label = "Command Label" + command_name = "command_name" + args = {"arg1": "value1", "arg2": "value2"} + generator = PromptGenerator() + generator.add_command(command_label, command_name, args) + command = { + "label": command_label, + "name": command_name, + "args": args, + "function": None, + } + assert command in generator.commands + + +def test_add_resource(): + """ + Test if the add_resource() method adds a resource to the generator's resources list. + """ + resource = "Resource1" + generator = PromptGenerator() + generator.add_resource(resource) + assert resource in generator.resources + + +def test_add_performance_evaluation(): + """ + Test if the add_performance_evaluation() method adds an evaluation to the generator's + performance_evaluation list. + """ + evaluation = "Evaluation1" + generator = PromptGenerator() + generator.add_performance_evaluation(evaluation) + assert evaluation in generator.performance_evaluation + + +def test_generate_prompt_string(config): + """ + Test if the generate_prompt_string() method generates a prompt string with all the added + constraints, commands, resources, and evaluations. + """ + + # Define the test data + constraints = ["Constraint1", "Constraint2"] + commands = [ + { + "label": "Command1", + "name": "command_name1", + "args": {"arg1": "value1"}, + }, + { + "label": "Command2", + "name": "command_name2", + "args": {}, + }, + ] + resources = ["Resource1", "Resource2"] + evaluations = ["Evaluation1", "Evaluation2"] + + # Add test data to the generator + generator = PromptGenerator() + for constraint in constraints: + generator.add_constraint(constraint) + for command in commands: + generator.add_command(command["label"], command["name"], command["args"]) + for resource in resources: + generator.add_resource(resource) + for evaluation in evaluations: + generator.add_performance_evaluation(evaluation) + + # Generate the prompt string and verify its correctness + prompt_string = generator.generate_prompt_string(config) + assert prompt_string is not None + + # Check if all constraints, commands, resources, and evaluations are present in the prompt string + for constraint in constraints: + assert constraint in prompt_string + for command in commands: + assert command["name"] in prompt_string + for key, value in command["args"].items(): + assert f'"{key}": "{value}"' in prompt_string + for resource in resources: + assert resource in prompt_string + for evaluation in evaluations: + assert evaluation in prompt_string + + +def test_generate_prompt_string(config): """ - Test cases for the PromptGenerator class, which is responsible for generating - prompts for the AI with constraints, commands, resources, and performance evaluations. + Test if the generate_prompt_string() method generates a prompt string with all the added + constraints, commands, resources, and evaluations. """ - @classmethod - def setUpClass(cls): - """ - Set up the initial state for each test method by creating an instance of PromptGenerator. - """ - cls.generator = PromptGenerator() - - # Test whether the add_constraint() method adds a constraint to the generator's constraints list - def test_add_constraint(self): - """ - Test if the add_constraint() method adds a constraint to the generator's constraints list. - """ - constraint = "Constraint1" - self.generator.add_constraint(constraint) - self.assertIn(constraint, self.generator.constraints) - - # Test whether the add_command() method adds a command to the generator's commands list - def test_add_command(self): - """ - Test if the add_command() method adds a command to the generator's commands list. - """ - command_label = "Command Label" - command_name = "command_name" - args = {"arg1": "value1", "arg2": "value2"} - self.generator.add_command(command_label, command_name, args) - command = { - "label": command_label, - "name": command_name, - "args": args, - "function": None, - } - self.assertIn(command, self.generator.commands) - - def test_add_resource(self): - """ - Test if the add_resource() method adds a resource to the generator's resources list. - """ - resource = "Resource1" - self.generator.add_resource(resource) - self.assertIn(resource, self.generator.resources) - - def test_add_performance_evaluation(self): - """ - Test if the add_performance_evaluation() method adds an evaluation to the generator's - performance_evaluation list. - """ - evaluation = "Evaluation1" - self.generator.add_performance_evaluation(evaluation) - self.assertIn(evaluation, self.generator.performance_evaluation) - - def test_generate_prompt_string(self): - """ - Test if the generate_prompt_string() method generates a prompt string with all the added - constraints, commands, resources, and evaluations. - """ - # Define the test data - constraints = ["Constraint1", "Constraint2"] - commands = [ - { - "label": "Command1", - "name": "command_name1", - "args": {"arg1": "value1"}, - }, - { - "label": "Command2", - "name": "command_name2", - "args": {}, - }, - ] - resources = ["Resource1", "Resource2"] - evaluations = ["Evaluation1", "Evaluation2"] - - # Add test data to the generator - for constraint in constraints: - self.generator.add_constraint(constraint) - for command in commands: - self.generator.add_command( - command["label"], command["name"], command["args"] - ) - for resource in resources: - self.generator.add_resource(resource) - for evaluation in evaluations: - self.generator.add_performance_evaluation(evaluation) - - # Generate the prompt string and verify its correctness - prompt_string = self.generator.generate_prompt_string() - self.assertIsNotNone(prompt_string) - - # Check if all constraints, commands, resources, and evaluations are present in the prompt string - for constraint in constraints: - self.assertIn(constraint, prompt_string) - for command in commands: - self.assertIn(command["name"], prompt_string) - for key, value in command["args"].items(): - self.assertIn(f'"{key}": "{value}"', prompt_string) - for resource in resources: - self.assertIn(resource, prompt_string) - for evaluation in evaluations: - self.assertIn(evaluation, prompt_string) - - self.assertIn("constraints", prompt_string.lower()) - self.assertIn("commands", prompt_string.lower()) - self.assertIn("resources", prompt_string.lower()) - self.assertIn("performance evaluation", prompt_string.lower()) + # Define the test data + constraints = ["Constraint1", "Constraint2"] + commands = [ + { + "label": "Command1", + "name": "command_name1", + "args": {"arg1": "value1"}, + }, + { + "label": "Command2", + "name": "command_name2", + "args": {}, + }, + ] + resources = ["Resource1", "Resource2"] + evaluations = ["Evaluation1", "Evaluation2"] + + # Add test data to the generator + generator = PromptGenerator() + for constraint in constraints: + generator.add_constraint(constraint) + for command in commands: + generator.add_command(command["label"], command["name"], command["args"]) + for resource in resources: + generator.add_resource(resource) + for evaluation in evaluations: + generator.add_performance_evaluation(evaluation) + + # Generate the prompt string and verify its correctness + prompt_string = generator.generate_prompt_string(config) + assert prompt_string is not None + + # Check if all constraints, commands, resources, and evaluations are present in the prompt string + for constraint in constraints: + assert constraint in prompt_string + for command in commands: + assert command["name"] in prompt_string + for key, value in command["args"].items(): + assert f'"{key}": "{value}"' in prompt_string + for resource in resources: + assert resource in prompt_string + for evaluation in evaluations: + assert evaluation in prompt_string From fb6c9671e1a5aeada12086d08c4bc09afff415e8 Mon Sep 17 00:00:00 2001 From: merwanehamadi Date: Wed, 21 Jun 2023 09:19:35 -0700 Subject: [PATCH 2/8] Update autogpt/models/command_function.py Co-authored-by: Reinier van der Leer --- autogpt/models/command_function.py | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/autogpt/models/command_function.py b/autogpt/models/command_function.py index 7cd85e453ab3..e59967b078f3 100644 --- a/autogpt/models/command_function.py +++ b/autogpt/models/command_function.py @@ -1,18 +1,10 @@ from typing import Any +@dataclass class CommandFunction: """Represents a "function" in OpenAI, which is mapped to a Command in Auto-GPT""" - def __init__(self, name: str, description: str, parameters: dict[str, Any]): - self.name = name - self.description = description - self.parameters = parameters - - @property - def __dict__(self) -> dict: - return { - "name": self.name, - "description": self.description, - "parameters": self.parameters, - } + name: str + description: str + parameters: dict[str, Any] From 3bbdd3faa6db7c17f43189d9841b7eb2819fdb35 Mon Sep 17 00:00:00 2001 From: merwanehamadi Date: Wed, 21 Jun 2023 09:21:00 -0700 Subject: [PATCH 3/8] Update autogpt/json_utils/utilities.py Co-authored-by: Reinier van der Leer --- autogpt/json_utils/utilities.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autogpt/json_utils/utilities.py b/autogpt/json_utils/utilities.py index b78d6322ed7f..7162abc58c40 100644 --- a/autogpt/json_utils/utilities.py +++ b/autogpt/json_utils/utilities.py @@ -36,7 +36,7 @@ def llm_response_schema( json_schema = json.load(f) if config.openai_functions: del json_schema["properties"]["command"] - json_schema["required"] = ["thoughts"] + json_schema["required"].remove("command") return json_schema From d763723ce6a98614d11a424031b7b80665f02af8 Mon Sep 17 00:00:00 2001 From: Merwane Hamadi Date: Wed, 21 Jun 2023 10:00:32 -0700 Subject: [PATCH 4/8] Cleanup OpenAI functions implementation Signed-off-by: Merwane Hamadi --- autogpt/agent/agent.py | 36 ---------------------- autogpt/app.py | 8 +++-- autogpt/llm/base.py | 12 +++++++- autogpt/llm/chat.py | 8 ++--- autogpt/llm/providers/openai.py | 36 ++++++++++++++++++++++ autogpt/llm/utils/__init__.py | 16 ++++++---- autogpt/models/chat_completion_response.py | 4 --- autogpt/models/command_argument.py | 13 +++++--- autogpt/models/command_function.py | 10 ------ autogpt/processing/text.py | 3 +- autogpt/prompts/generator.py | 5 ++- tests/unit/test_agent_manager.py | 11 ++++--- tests/unit/test_message_history.py | 6 ++-- 13 files changed, 86 insertions(+), 82 deletions(-) delete mode 100644 autogpt/models/chat_completion_response.py delete mode 100644 autogpt/models/command_function.py diff --git a/autogpt/agent/agent.py b/autogpt/agent/agent.py index 1a8248b8a119..fca03a5fb3b6 100644 --- a/autogpt/agent/agent.py +++ b/autogpt/agent/agent.py @@ -20,7 +20,6 @@ from autogpt.logs import logger, print_assistant_thoughts from autogpt.memory.message_history import MessageHistory from autogpt.memory.vector import VectorMemory -from autogpt.models.command_function import CommandFunction from autogpt.models.command_registry import CommandRegistry from autogpt.speech import say_text from autogpt.spinner import Spinner @@ -139,7 +138,6 @@ def signal_handler(signum, frame): self.system_prompt, self.triggering_prompt, self.fast_token_limit, - self.get_functions_from_commands(), self.config.fast_llm_model, ) @@ -320,37 +318,3 @@ def _resolve_pathlike_command_args(self, command_args): self.workspace.get_path(command_args[pathlike]) ) return command_args - - def get_functions_from_commands(self) -> list[CommandFunction]: - """Get functions from the commands. "functions" in this context refers to OpenAI functions - see https://platform.openai.com/docs/guides/gpt/function-calling - """ - functions = [] - if not self.config.openai_functions: - return functions - for command in self.command_registry.commands.values(): - properties = {} - required = [] - - for argument in command.arguments: - properties[argument.name] = { - "type": argument.type, - "description": argument.description, - } - if argument.required: - required.append(argument.name) - - parameters = { - "type": "object", - "properties": properties, - "required": required, - } - functions.append( - CommandFunction( - name=command.name, - description=command.description, - parameters=parameters, - ) - ) - - return functions diff --git a/autogpt/app.py b/autogpt/app.py index 4f1c3a9a436e..a73bb82024be 100644 --- a/autogpt/app.py +++ b/autogpt/app.py @@ -4,7 +4,7 @@ from autogpt.agent.agent import Agent from autogpt.config import Config -from autogpt.models.chat_completion_response import ChatCompletionResponse +from autogpt.llm import ChatModelResponse def is_valid_int(value: str) -> bool: @@ -24,12 +24,14 @@ def is_valid_int(value: str) -> bool: def get_command( - assistant_reply_json: Dict, assistant_reply: ChatCompletionResponse, config: Config + assistant_reply_json: Dict, assistant_reply: ChatModelResponse, config: Config ): """Parse the response and return the command name and arguments Args: - assistant_reply_json (json): The response from the AI + assistant_reply_json (json): The json response from the AI + assistant_reply (ChatModelResponse): The model response from the AI + config (Config): The config object Returns: tuple: The command name and arguments diff --git a/autogpt/llm/base.py b/autogpt/llm/base.py index d372ad252ea0..48f5b43bb8cd 100644 --- a/autogpt/llm/base.py +++ b/autogpt/llm/base.py @@ -2,7 +2,7 @@ from dataclasses import dataclass, field from math import ceil, floor -from typing import List, Literal, TypedDict +from typing import Any, Dict, List, Literal, TypedDict MessageRole = Literal["system", "user", "assistant"] MessageType = Literal["ai_response", "action_result"] @@ -157,3 +157,13 @@ class ChatModelResponse(LLMResponse): """Standard response struct for a response from an LLM model.""" content: str = None + function_call: Dict[str, Any] = None + + +@dataclass +class OpenAIFunctionSpec: + """Represents a "function" in OpenAI, which is mapped to a Command in Auto-GPT""" + + name: str + description: str + parameters: dict[str, Any] diff --git a/autogpt/llm/chat.py b/autogpt/llm/chat.py index 5952da58b84a..c5d5a945a7ee 100644 --- a/autogpt/llm/chat.py +++ b/autogpt/llm/chat.py @@ -1,9 +1,9 @@ from __future__ import annotations import time -from typing import TYPE_CHECKING, List +from typing import TYPE_CHECKING -from autogpt.models.command_function import CommandFunction +from autogpt.llm.providers.openai import get_openai_command_specs if TYPE_CHECKING: from autogpt.agent.agent import Agent @@ -23,7 +23,6 @@ def chat_with_ai( system_prompt: str, triggering_prompt: str, token_limit: int, - functions: List[CommandFunction], model: str | None = None, ): """ @@ -197,13 +196,12 @@ def chat_with_ai( assistant_reply = create_chat_completion( prompt=message_sequence, config=agent.config, - functions=functions, + functions=get_openai_command_specs(agent), max_tokens=tokens_remaining, ) # Update full message history agent.history.append(user_input_msg) - agent.history.add("assistant", assistant_reply.content, "ai_response") return assistant_reply diff --git a/autogpt/llm/providers/openai.py b/autogpt/llm/providers/openai.py index ef3846671099..c92feb1dfd00 100644 --- a/autogpt/llm/providers/openai.py +++ b/autogpt/llm/providers/openai.py @@ -13,6 +13,7 @@ ChatModelInfo, EmbeddingModelInfo, MessageDict, + OpenAIFunctionSpec, TextModelInfo, TText, ) @@ -267,3 +268,38 @@ def create_embedding( input=input, **kwargs, ) + + +def get_openai_command_specs(agent) -> list[OpenAIFunctionSpec]: + """Get functions from the commands. "functions" in this context refers to OpenAI functions + see https://platform.openai.com/docs/guides/gpt/function-calling + """ + functions = [] + if not agent.config.openai_functions: + return functions + for command in agent.command_registry.commands.values(): + properties = {} + required = [] + + for argument in command.arguments: + properties[argument.name] = { + "type": argument.type, + "description": argument.description, + } + if argument.required: + required.append(argument.name) + + parameters = { + "type": "object", + "properties": properties, + "required": required, + } + functions.append( + OpenAIFunctionSpec( + name=command.name, + description=command.description, + parameters=parameters, + ) + ) + + return functions diff --git a/autogpt/llm/utils/__init__.py b/autogpt/llm/utils/__init__.py index d083bb80a7ad..a86727866e01 100644 --- a/autogpt/llm/utils/__init__.py +++ b/autogpt/llm/utils/__init__.py @@ -7,11 +7,10 @@ from autogpt.config import Config from autogpt.logs import logger -from ...models.chat_completion_response import ChatCompletionResponse -from ...models.command_function import CommandFunction from ..api_manager import ApiManager -from ..base import ChatSequence, Message +from ..base import ChatModelResponse, ChatSequence, Message, OpenAIFunctionSpec from ..providers import openai as iopenai +from ..providers.openai import OPEN_AI_CHAT_MODELS from .token_counter import * @@ -90,11 +89,11 @@ def create_text_completion( def create_chat_completion( prompt: ChatSequence, config: Config, - functions: Optional[List[CommandFunction]] = [], + functions: Optional[List[OpenAIFunctionSpec]] = [], model: Optional[str] = None, temperature: Optional[float] = None, max_tokens: Optional[int] = None, -) -> ChatCompletionResponse: +) -> ChatModelResponse: """Create a chat completion using the OpenAI API Args: @@ -106,6 +105,7 @@ def create_chat_completion( Returns: str: The response from the chat completion """ + if model is None: model = prompt.model.name if temperature is None: @@ -161,7 +161,11 @@ def create_chat_completion( continue content = plugin.on_response(content) - return ChatCompletionResponse(content=content, function_call=function_call) + return ChatModelResponse( + model_info=OPEN_AI_CHAT_MODELS[model], + content=content, + function_call=function_call, + ) def check_model( diff --git a/autogpt/models/chat_completion_response.py b/autogpt/models/chat_completion_response.py deleted file mode 100644 index c2b241533a5e..000000000000 --- a/autogpt/models/chat_completion_response.py +++ /dev/null @@ -1,4 +0,0 @@ -class ChatCompletionResponse: - def __init__(self, content: str, function_call: dict[str, str]): - self.content = content - self.function_call = function_call diff --git a/autogpt/models/command_argument.py b/autogpt/models/command_argument.py index c70c0880d6e2..67d4b3004b5f 100644 --- a/autogpt/models/command_argument.py +++ b/autogpt/models/command_argument.py @@ -1,9 +1,12 @@ +import dataclasses + + +@dataclasses.dataclass class CommandArgument: - def __init__(self, name: str, type: str, description: str, required: bool): - self.name = name - self.type = type - self.description = description - self.required = required + name: str + type: str + description: str + required: bool def __repr__(self): return f"CommandArgument('{self.name}', '{self.type}', '{self.description}', {self.required})" diff --git a/autogpt/models/command_function.py b/autogpt/models/command_function.py deleted file mode 100644 index e59967b078f3..000000000000 --- a/autogpt/models/command_function.py +++ /dev/null @@ -1,10 +0,0 @@ -from typing import Any - - -@dataclass -class CommandFunction: - """Represents a "function" in OpenAI, which is mapped to a Command in Auto-GPT""" - - name: str - description: str - parameters: dict[str, Any] diff --git a/autogpt/processing/text.py b/autogpt/processing/text.py index 30caa5970cbd..24851b1c4dd0 100644 --- a/autogpt/processing/text.py +++ b/autogpt/processing/text.py @@ -67,8 +67,7 @@ def summarize_text( Args: text (str): The text to summarize - config (Config): Thtext( - "\n\n".joine config object + config (Config): The config object instruction (str): Additional instruction for summarization, e.g. "focus on information related to polar bears", "omit personal information contained in the text" question (str): Question to answer in the summary diff --git a/autogpt/prompts/generator.py b/autogpt/prompts/generator.py index f48816247a13..8296d3dcf754 100644 --- a/autogpt/prompts/generator.py +++ b/autogpt/prompts/generator.py @@ -4,7 +4,6 @@ from autogpt.config import Config from autogpt.json_utils.utilities import llm_response_schema -from autogpt.models.command import Command if TYPE_CHECKING: from autogpt.models.command_registry import CommandRegistry @@ -141,7 +140,7 @@ def generate_prompt_string(self, config: Config) -> str: return ( f"Constraints:\n{self._generate_numbered_list(self.constraints)}\n\n" f"Resources:\n{self._generate_numbered_list(self.resources)}\n\n" - f"{generate_commands(self, self.commands, config)}" + f"{generate_commands(self, config)}" "Performance Evaluation:\n" f"{self._generate_numbered_list(self.performance_evaluation)}\n\n" "Respond with only valid JSON conforming to the following schema: \n" @@ -149,7 +148,7 @@ def generate_prompt_string(self, config: Config) -> str: ) -def generate_commands(self, commands: List[Command], config: Config) -> str: +def generate_commands(self, config: Config) -> str: """ Generate a prompt string based on the constraints, commands, resources, and performance evaluations. diff --git a/tests/unit/test_agent_manager.py b/tests/unit/test_agent_manager.py index d9b99efea47b..7140db059d0c 100644 --- a/tests/unit/test_agent_manager.py +++ b/tests/unit/test_agent_manager.py @@ -1,8 +1,9 @@ import pytest from autogpt.agent.agent_manager import AgentManager +from autogpt.llm import ChatModelResponse from autogpt.llm.chat import create_chat_completion -from autogpt.models.chat_completion_response import ChatCompletionResponse +from autogpt.llm.providers.openai import OPEN_AI_CHAT_MODELS @pytest.fixture @@ -28,13 +29,15 @@ def model(): @pytest.fixture(autouse=True) -def mock_create_chat_completion(mocker): +def mock_create_chat_completion(mocker, config): mock_create_chat_completion = mocker.patch( "autogpt.agent.agent_manager.create_chat_completion", wraps=create_chat_completion, ) - mock_create_chat_completion.return_value = ChatCompletionResponse( - content="irrelevant", function_call={} + mock_create_chat_completion.return_value = ChatModelResponse( + model_info=OPEN_AI_CHAT_MODELS[config.fast_llm_model], + content="irrelevant", + function_call={}, ) return mock_create_chat_completion diff --git a/tests/unit/test_message_history.py b/tests/unit/test_message_history.py index 6e6c2d2a4e5d..a3650005ec23 100644 --- a/tests/unit/test_message_history.py +++ b/tests/unit/test_message_history.py @@ -7,11 +7,10 @@ from autogpt.agent import Agent from autogpt.config import AIConfig from autogpt.config.config import Config -from autogpt.llm.base import ChatSequence, Message +from autogpt.llm.base import ChatModelResponse, ChatSequence, Message from autogpt.llm.providers.openai import OPEN_AI_CHAT_MODELS from autogpt.llm.utils import count_string_tokens from autogpt.memory.message_history import MessageHistory -from autogpt.models.chat_completion_response import ChatCompletionResponse @pytest.fixture @@ -46,7 +45,8 @@ def test_message_history_batch_summary(mocker, agent, config): message_count = 0 # Setting the mock output and inputs - mock_summary_response = ChatCompletionResponse( + mock_summary_response = ChatModelResponse( + model_info=OPEN_AI_CHAT_MODELS[model], content="I executed browse_website command for each of the websites returned from Google search, but none of them have any job openings.", function_call={}, ) From 7eb696dee21864ad78e6136dcba06a2258c48e72 Mon Sep 17 00:00:00 2001 From: merwanehamadi Date: Wed, 21 Jun 2023 11:27:35 -0700 Subject: [PATCH 5/8] Update json to dict in docstrings Co-authored-by: Reinier van der Leer --- autogpt/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autogpt/app.py b/autogpt/app.py index a73bb82024be..5ff56839f50d 100644 --- a/autogpt/app.py +++ b/autogpt/app.py @@ -29,7 +29,7 @@ def get_command( """Parse the response and return the command name and arguments Args: - assistant_reply_json (json): The json response from the AI + assistant_reply_json (dict): The response object from the AI assistant_reply (ChatModelResponse): The model response from the AI config (Config): The config object From b4f2077d3c073e134b052f6606c9d73d5fcc89c3 Mon Sep 17 00:00:00 2001 From: merwanehamadi Date: Wed, 21 Jun 2023 11:28:36 -0700 Subject: [PATCH 6/8] update docstrings of get_openai_command_specs Co-authored-by: Reinier van der Leer --- autogpt/llm/providers/openai.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autogpt/llm/providers/openai.py b/autogpt/llm/providers/openai.py index c92feb1dfd00..697365a1cea5 100644 --- a/autogpt/llm/providers/openai.py +++ b/autogpt/llm/providers/openai.py @@ -271,7 +271,7 @@ def create_embedding( def get_openai_command_specs(agent) -> list[OpenAIFunctionSpec]: - """Get functions from the commands. "functions" in this context refers to OpenAI functions + """Get OpenAI-consumable function specs for the agent's available commands. see https://platform.openai.com/docs/guides/gpt/function-calling """ functions = [] From 0c39937f9854c182b6799f88de74a0b026a93910 Mon Sep 17 00:00:00 2001 From: Merwane Hamadi Date: Wed, 21 Jun 2023 14:14:22 -0700 Subject: [PATCH 7/8] Implement complete data types Signed-off-by: Merwane Hamadi --- autogpt/app.py | 2 +- autogpt/llm/base.py | 27 ++++++++++++++++++++++++--- autogpt/llm/providers/openai.py | 20 +++++++++++--------- autogpt/llm/utils/__init__.py | 3 ++- 4 files changed, 38 insertions(+), 14 deletions(-) diff --git a/autogpt/app.py b/autogpt/app.py index 5ff56839f50d..2a630ec3eb72 100644 --- a/autogpt/app.py +++ b/autogpt/app.py @@ -53,7 +53,7 @@ def get_command( if not isinstance(assistant_reply_json, dict): return ( "Error:", - f"'assistant_reply_json' object is not dictionary {assistant_reply_json}", + f"The previous message sent was not a dictionary {assistant_reply_json}", ) command = assistant_reply_json["command"] diff --git a/autogpt/llm/base.py b/autogpt/llm/base.py index 48f5b43bb8cd..6e8a8c590ac4 100644 --- a/autogpt/llm/base.py +++ b/autogpt/llm/base.py @@ -2,7 +2,9 @@ from dataclasses import dataclass, field from math import ceil, floor -from typing import Any, Dict, List, Literal, TypedDict +from typing import List, Literal, TypedDict + +from autogpt.models.command_argument import CommandArgument MessageRole = Literal["system", "user", "assistant"] MessageType = Literal["ai_response", "action_result"] @@ -157,7 +159,7 @@ class ChatModelResponse(LLMResponse): """Standard response struct for a response from an LLM model.""" content: str = None - function_call: Dict[str, Any] = None + function_call: OpenAIFunctionCall = None @dataclass @@ -166,4 +168,23 @@ class OpenAIFunctionSpec: name: str description: str - parameters: dict[str, Any] + parameters: OpenAIFunctionParameter + + +@dataclass +class OpenAIFunctionCall: + name: str + arguments: List[CommandArgument] + + +@dataclass +class OpenAIFunctionParameter: + type: str + properties: OpenAIFunctionProperties + required: bool + + +@dataclass +class OpenAIFunctionProperties: + type: str + description: str diff --git a/autogpt/llm/providers/openai.py b/autogpt/llm/providers/openai.py index 697365a1cea5..1423e7ffb980 100644 --- a/autogpt/llm/providers/openai.py +++ b/autogpt/llm/providers/openai.py @@ -13,6 +13,8 @@ ChatModelInfo, EmbeddingModelInfo, MessageDict, + OpenAIFunctionParameter, + OpenAIFunctionProperties, OpenAIFunctionSpec, TextModelInfo, TText, @@ -282,18 +284,18 @@ def get_openai_command_specs(agent) -> list[OpenAIFunctionSpec]: required = [] for argument in command.arguments: - properties[argument.name] = { - "type": argument.type, - "description": argument.description, - } + properties[argument.name] = OpenAIFunctionProperties( + type=argument.type, + description=argument.description, + ) if argument.required: required.append(argument.name) + parameters = OpenAIFunctionParameter( + type="object", + properties=properties, + required=required, + ) - parameters = { - "type": "object", - "properties": properties, - "required": required, - } functions.append( OpenAIFunctionSpec( name=command.name, diff --git a/autogpt/llm/utils/__init__.py b/autogpt/llm/utils/__init__.py index a86727866e01..dc34704acaeb 100644 --- a/autogpt/llm/utils/__init__.py +++ b/autogpt/llm/utils/__init__.py @@ -1,5 +1,6 @@ from __future__ import annotations +from dataclasses import asdict from typing import List, Literal, Optional from colorama import Fore @@ -139,7 +140,7 @@ def create_chat_completion( ] = config.get_azure_deployment_id_for_model(model) if functions: chat_completion_kwargs["functions"] = [ - function.__dict__ for function in functions + asdict(function) for function in functions ] response = iopenai.create_chat_completion( From e87072cc4c54d85ee04f8cd0cfd4daa97e66e62f Mon Sep 17 00:00:00 2001 From: Merwane Hamadi Date: Wed, 21 Jun 2023 17:14:38 -0700 Subject: [PATCH 8/8] CI test --- autogpt/api/__main__.py | 18 + autogpt/api/application.py | 46 + autogpt/api/lifetime.py | 40 + autogpt/api/settings.py | 19 + autogpt/api/static/docs/redoc.standalone.js | 1804 +++++++++++++++++ autogpt/api/static/docs/swagger-ui-bundle.js | 6 + autogpt/api/static/docs/swagger-ui.css | 1 + autogpt/api/v1/__init__.py | 0 autogpt/api/v1/endpoints/__init__.py | 0 autogpt/api/v1/endpoints/agents.py | 29 + autogpt/api/v1/endpoints/docs.py | 53 + autogpt/api/v1/endpoints/health.py | 12 + autogpt/api/v1/endpoints/interactions.py | 50 + autogpt/api/v1/endpoints/tasks.py | 48 + autogpt/api/v1/router.py | 10 + autogpt/main.py | 7 +- autogpt/workspace/workspace.py | 7 + pyproject.toml | 6 + requirements.txt | 3 +- .../basic_abilities/test_browse_website.py | 2 +- .../basic_abilities/test_write_file.py | 104 +- .../challenge_decorator.py | 5 +- .../debug_code/test_debug_code_challenge_a.py | 6 +- .../test_information_retrieval_challenge_a.py | 4 +- .../test_information_retrieval_challenge_b.py | 4 +- .../test_kubernetes_template_challenge_a.py | 4 +- .../memory/test_memory_challenge_a.py | 8 +- .../memory/test_memory_challenge_b.py | 6 +- .../memory/test_memory_challenge_c.py | 6 +- .../memory/test_memory_challenge_d.py | 6 +- ..._challenge_should_be_formatted_properly.py | 2 +- tests/challenges/utils.py | 9 +- 32 files changed, 2274 insertions(+), 51 deletions(-) create mode 100644 autogpt/api/__main__.py create mode 100644 autogpt/api/application.py create mode 100644 autogpt/api/lifetime.py create mode 100644 autogpt/api/settings.py create mode 100644 autogpt/api/static/docs/redoc.standalone.js create mode 100644 autogpt/api/static/docs/swagger-ui-bundle.js create mode 100644 autogpt/api/static/docs/swagger-ui.css create mode 100644 autogpt/api/v1/__init__.py create mode 100644 autogpt/api/v1/endpoints/__init__.py create mode 100644 autogpt/api/v1/endpoints/agents.py create mode 100644 autogpt/api/v1/endpoints/docs.py create mode 100644 autogpt/api/v1/endpoints/health.py create mode 100644 autogpt/api/v1/endpoints/interactions.py create mode 100644 autogpt/api/v1/endpoints/tasks.py create mode 100644 autogpt/api/v1/router.py diff --git a/autogpt/api/__main__.py b/autogpt/api/__main__.py new file mode 100644 index 000000000000..70a958777b0e --- /dev/null +++ b/autogpt/api/__main__.py @@ -0,0 +1,18 @@ +import uvicorn + +from autogpt.api.settings import settings + + +def main() -> None: + uvicorn.run( + "autogpt.api.application:get_app", + workers=settings.workers_count, + host=settings.host, + port=settings.port, + reload=settings.reload, + factory=settings.factory, + ) + + +if __name__ == "__main__": + main() diff --git a/autogpt/api/application.py b/autogpt/api/application.py new file mode 100644 index 000000000000..49b8054f599f --- /dev/null +++ b/autogpt/api/application.py @@ -0,0 +1,46 @@ +from pathlib import Path + +from fastapi import FastAPI +from fastapi.responses import ORJSONResponse +from fastapi.staticfiles import StaticFiles + +from autogpt.api.lifetime import register_shutdown_event, register_startup_event +from autogpt.api.v1.router import api_router as api_router_v1 + +APP_ROOT = Path(__file__).parent + + +def get_app() -> FastAPI: + """ + Get FastAPI application. + + This is the main constructor of an application. + + :return: application. + """ + + app = FastAPI( + title="autogpt", + version=1, + docs_url=None, + redoc_url=None, + openapi_url="/api/openapi.json", + default_response_class=ORJSONResponse, + ) + # api_router.add_websocket_route("/ws", websocket_endpoint, name="websocket") + # Adds startup and shutdown events. + register_startup_event(app) + register_shutdown_event(app) + + # Main router for the API. + app.include_router(router=api_router_v1, prefix="/api/v1") + + # Adds static directory. + # This directory is used to access swagger files. + app.mount( + "/static", + StaticFiles(directory=APP_ROOT / "static"), + name="static", + ) + + return app diff --git a/autogpt/api/lifetime.py b/autogpt/api/lifetime.py new file mode 100644 index 000000000000..71be9fe85ca6 --- /dev/null +++ b/autogpt/api/lifetime.py @@ -0,0 +1,40 @@ +from typing import Awaitable, Callable + +from fastapi import FastAPI + + +def register_startup_event( + app: FastAPI, +) -> Callable[[], Awaitable[None]]: # pragma: no cover + """ + Actions to run on application startup. + + This function uses fastAPI app to store data + in the state, such as db_engine. + + :param app: the fastAPI application. + :return: function that actually performs actions. + """ + + @app.on_event("startup") + async def _startup() -> None: # noqa: WPS430 + pass # noqa: WPS420 + + return _startup + + +def register_shutdown_event( + app: FastAPI, +) -> Callable[[], Awaitable[None]]: # pragma: no cover + """ + Actions to run on application's shutdown. + + :param app: fastAPI application. + :return: function that actually performs actions. + """ + + @app.on_event("shutdown") + async def _shutdown() -> None: # noqa: WPS430 + pass # noqa: WPS420 + + return _shutdown diff --git a/autogpt/api/settings.py b/autogpt/api/settings.py new file mode 100644 index 000000000000..c439bfa32127 --- /dev/null +++ b/autogpt/api/settings.py @@ -0,0 +1,19 @@ +from pydantic import BaseSettings + + +class Settings(BaseSettings): + """ + Application settings. + + These parameters can be configured + with environment variables. + """ + + host: str = "0.0.0.0" + port: int = 6060 + workers_count: int = 1 + reload: bool = True + factory: bool = True + + +settings = Settings() diff --git a/autogpt/api/static/docs/redoc.standalone.js b/autogpt/api/static/docs/redoc.standalone.js new file mode 100644 index 000000000000..6cd53acbcc61 --- /dev/null +++ b/autogpt/api/static/docs/redoc.standalone.js @@ -0,0 +1,1804 @@ +/*! For license information please see redoc.standalone.js.LICENSE.txt */!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("null")):"function"==typeof define&&define.amd?define(["null"],t):"object"==typeof exports?exports.Redoc=t(require("null")):e.Redoc=t(e.null)}(this,(function(e){return function(){var t={5499:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=void 0;let n=r(3325),i=r(6479),o=r(5522),a=r(1603),s=["/properties"],l="http://json-schema.org/draft-07/schema";class c extends n.default{_addVocabularies(){super._addVocabularies(),i.default.forEach((e=>this.addVocabulary(e))),this.opts.discriminator&&this.addKeyword(o.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(a,s):a;this.addMetaSchema(e,l,!1),this.refs["http://json-schema.org/schema"]=l}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(l)?l:void 0)}}e.exports=t=c,Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var u=r(1321);Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return u.KeywordCxt}});var p=r(4475);Object.defineProperty(t,"_",{enumerable:!0,get:function(){return p._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return p.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return p.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return p.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return p.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return p.CodeGen}})},4667:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.regexpCode=t.getProperty=t.safeStringify=t.stringify=t.strConcat=t.addCodeArg=t.str=t._=t.nil=t._Code=t.Name=t.IDENTIFIER=t._CodeOrName=void 0;class r{}t._CodeOrName=r,t.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class n extends r{constructor(e){if(super(),!t.IDENTIFIER.test(e))throw Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}t.Name=n;class i extends r{constructor(e){super(),this._items="string"==typeof e?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return""===e||'""'===e}get str(){var e;return null!==(e=this._str)&&void 0!==e?e:this._str=this._items.reduce(((e,t)=>`${e}${t}`),"")}get names(){var e;return null!==(e=this._names)&&void 0!==e?e:this._names=this._items.reduce(((e,t)=>(t instanceof n&&(e[t.str]=(e[t.str]||0)+1),e)),{})}}function o(e,...t){let r=[e[0]],n=0;for(;n"),GTE:new n._Code(">="),LT:new n._Code("<"),LTE:new n._Code("<="),EQ:new n._Code("==="),NEQ:new n._Code("!=="),NOT:new n._Code("!"),OR:new n._Code("||"),AND:new n._Code("&&"),ADD:new n._Code("+")};class s{optimizeNodes(){return this}optimizeNames(e,t){return this}}class l extends s{constructor(e,t,r){super(),this.varKind=e,this.name=t,this.rhs=r}render({es5:e,_n:t}){let r=e?i.varKinds.var:this.varKind,n=void 0===this.rhs?"":` = ${this.rhs}`;return`${r} ${this.name}${n};`+t}optimizeNames(e,t){if(e[this.name.str])return this.rhs&&(this.rhs=C(this.rhs,e,t)),this}get names(){return this.rhs instanceof n._CodeOrName?this.rhs.names:{}}}class c extends s{constructor(e,t,r){super(),this.lhs=e,this.rhs=t,this.sideEffects=r}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,t){if(!(this.lhs instanceof n.Name)||e[this.lhs.str]||this.sideEffects)return this.rhs=C(this.rhs,e,t),this}get names(){return $(this.lhs instanceof n.Name?{}:{...this.lhs.names},this.rhs)}}class u extends c{constructor(e,t,r,n){super(e,r,n),this.op=t}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}}class p extends s{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}}class d extends s{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}}class f extends s{constructor(e){super(),this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}}class h extends s{constructor(e){super(),this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,t){return this.code=C(this.code,e,t),this}get names(){return this.code instanceof n._CodeOrName?this.code.names:{}}}class m extends s{constructor(e=[]){super(),this.nodes=e}render(e){return this.nodes.reduce(((t,r)=>t+r.render(e)),"")}optimizeNodes(){let{nodes:e}=this,t=e.length;for(;t--;){let r=e[t].optimizeNodes();Array.isArray(r)?e.splice(t,1,...r):r?e[t]=r:e.splice(t,1)}return e.length>0?this:void 0}optimizeNames(e,t){let{nodes:r}=this,n=r.length;for(;n--;){let i=r[n];i.optimizeNames(e,t)||(R(e,i.names),r.splice(n,1))}return r.length>0?this:void 0}get names(){return this.nodes.reduce(((e,t)=>A(e,t.names)),{})}}class g extends m{render(e){return"{"+e._n+super.render(e)+"}"+e._n}}class y extends g{}y.kind="else";class v extends g{constructor(e,t){super(t),this.condition=e}render(e){let t=`if(${this.condition})`+super.render(e);return this.else&&(t+="else "+this.else.render(e)),t}optimizeNodes(){super.optimizeNodes();let e=this.condition;if(!0===e)return this.nodes;let t=this.else;if(t){let e=t.optimizeNodes();t=this.else=Array.isArray(e)?new y(e):e}return t?!1===e?t instanceof v?t:t.nodes:this.nodes.length?this:new v(j(e),t instanceof v?[t]:t.nodes):!1!==e&&this.nodes.length?this:void 0}optimizeNames(e,t){var r;if(this.else=null===(r=this.else)||void 0===r?void 0:r.optimizeNames(e,t),super.optimizeNames(e,t)||this.else)return this.condition=C(this.condition,e,t),this}get names(){let e=super.names;return $(e,this.condition),this.else&&A(e,this.else.names),e}}v.kind="if";class b extends g{}b.kind="for";class x extends b{constructor(e){super(),this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iteration=C(this.iteration,e,t),this}get names(){return A(super.names,this.iteration.names)}}class w extends b{constructor(e,t,r,n){super(),this.varKind=e,this.name=t,this.from=r,this.to=n}render(e){let t=e.es5?i.varKinds.var:this.varKind,{name:r,from:n,to:o}=this;return`for(${t} ${r}=${n}; ${r}<${o}; ${r}++)`+super.render(e)}get names(){let e=$(super.names,this.from);return $(e,this.to)}}class k extends b{constructor(e,t,r,n){super(),this.loop=e,this.varKind=t,this.name=r,this.iterable=n}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iterable=C(this.iterable,e,t),this}get names(){return A(super.names,this.iterable.names)}}class _ extends g{constructor(e,t,r){super(),this.name=e,this.args=t,this.async=r}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}}_.kind="func";class O extends m{render(e){return"return "+super.render(e)}}O.kind="return";class S extends g{render(e){let t="try"+super.render(e);return this.catch&&(t+=this.catch.render(e)),this.finally&&(t+=this.finally.render(e)),t}optimizeNodes(){var e,t;return super.optimizeNodes(),null===(e=this.catch)||void 0===e||e.optimizeNodes(),null===(t=this.finally)||void 0===t||t.optimizeNodes(),this}optimizeNames(e,t){var r,n;return super.optimizeNames(e,t),null===(r=this.catch)||void 0===r||r.optimizeNames(e,t),null===(n=this.finally)||void 0===n||n.optimizeNames(e,t),this}get names(){let e=super.names;return this.catch&&A(e,this.catch.names),this.finally&&A(e,this.finally.names),e}}class E extends g{constructor(e){super(),this.error=e}render(e){return`catch(${this.error})`+super.render(e)}}E.kind="catch";class P extends g{render(e){return"finally"+super.render(e)}}function A(e,t){for(let r in t)e[r]=(e[r]||0)+(t[r]||0);return e}function $(e,t){return t instanceof n._CodeOrName?A(e,t.names):e}function C(e,t,r){var i;return e instanceof n.Name?o(e):(i=e)instanceof n._Code&&i._items.some((e=>e instanceof n.Name&&1===t[e.str]&&void 0!==r[e.str]))?new n._Code(e._items.reduce(((e,t)=>(t instanceof n.Name&&(t=o(t)),t instanceof n._Code?e.push(...t._items):e.push(t),e)),[])):e;function o(e){let n=r[e.str];return void 0===n||1!==t[e.str]?e:(delete t[e.str],n)}}function R(e,t){for(let r in t)e[r]=(e[r]||0)-(t[r]||0)}function j(e){return"boolean"==typeof e||"number"==typeof e||null===e?!e:n._`!${L(e)}`}P.kind="finally",t.CodeGen=class{constructor(e,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...t,_n:t.lines?"\n":""},this._extScope=e,this._scope=new i.Scope({parent:e}),this._nodes=[new class extends m{}]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,t){let r=this._extScope.value(e,t);return(this._values[r.prefix]||(this._values[r.prefix]=new Set)).add(r),r}getScopeValue(e,t){return this._extScope.getValue(e,t)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,t,r,n){let i=this._scope.toName(t);return void 0!==r&&n&&(this._constants[i.str]=r),this._leafNode(new l(e,i,r)),i}const(e,t,r){return this._def(i.varKinds.const,e,t,r)}let(e,t,r){return this._def(i.varKinds.let,e,t,r)}var(e,t,r){return this._def(i.varKinds.var,e,t,r)}assign(e,t,r){return this._leafNode(new c(e,t,r))}add(e,r){return this._leafNode(new u(e,t.operators.ADD,r))}code(e){return"function"==typeof e?e():e!==n.nil&&this._leafNode(new h(e)),this}object(...e){let t=["{"];for(let[r,i]of e)t.length>1&&t.push(","),t.push(r),(r!==i||this.opts.es5)&&(t.push(":"),n.addCodeArg(t,i));return t.push("}"),new n._Code(t)}if(e,t,r){if(this._blockNode(new v(e)),t&&r)this.code(t).else().code(r).endIf();else if(t)this.code(t).endIf();else if(r)throw Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new v(e))}else(){return this._elseNode(new y)}endIf(){return this._endBlockNode(v,y)}_for(e,t){return this._blockNode(e),t&&this.code(t).endFor(),this}for(e,t){return this._for(new x(e),t)}forRange(e,t,r,n,o=(this.opts.es5?i.varKinds.var:i.varKinds.let)){let a=this._scope.toName(e);return this._for(new w(o,a,t,r),(()=>n(a)))}forOf(e,t,r,o=i.varKinds.const){let a=this._scope.toName(e);if(this.opts.es5){let e=t instanceof n.Name?t:this.var("_arr",t);return this.forRange("_i",0,n._`${e}.length`,(t=>{this.var(a,n._`${e}[${t}]`),r(a)}))}return this._for(new k("of",o,a,t),(()=>r(a)))}forIn(e,t,r,o=(this.opts.es5?i.varKinds.var:i.varKinds.const)){if(this.opts.ownProperties)return this.forOf(e,n._`Object.keys(${t})`,r);let a=this._scope.toName(e);return this._for(new k("in",o,a,t),(()=>r(a)))}endFor(){return this._endBlockNode(b)}label(e){return this._leafNode(new p(e))}break(e){return this._leafNode(new d(e))}return(e){let t=new O;if(this._blockNode(t),this.code(e),1!==t.nodes.length)throw Error('CodeGen: "return" should have one node');return this._endBlockNode(O)}try(e,t,r){if(!t&&!r)throw Error('CodeGen: "try" without "catch" and "finally"');let n=new S;if(this._blockNode(n),this.code(e),t){let e=this.name("e");this._currNode=n.catch=new E(e),t(e)}return r&&(this._currNode=n.finally=new P,this.code(r)),this._endBlockNode(E,P)}throw(e){return this._leafNode(new f(e))}block(e,t){return this._blockStarts.push(this._nodes.length),e&&this.code(e).endBlock(t),this}endBlock(e){let t=this._blockStarts.pop();if(void 0===t)throw Error("CodeGen: not in self-balancing block");let r=this._nodes.length-t;if(r<0||void 0!==e&&r!==e)throw Error(`CodeGen: wrong number of nodes: ${r} vs ${e} expected`);return this._nodes.length=t,this}func(e,t=n.nil,r,i){return this._blockNode(new _(e,t,r)),i&&this.code(i).endFunc(),this}endFunc(){return this._endBlockNode(_)}optimize(e=1){for(;e-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,t){let r=this._currNode;if(r instanceof e||t&&r instanceof t)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${t?`${e.kind}/${t.kind}`:e.kind}"`)}_elseNode(e){let t=this._currNode;if(!(t instanceof v))throw Error('CodeGen: "else" without "if"');return this._currNode=t.else=e,this}get _root(){return this._nodes[0]}get _currNode(){let e=this._nodes;return e[e.length-1]}set _currNode(e){let t=this._nodes;t[t.length-1]=e}},t.not=j;let T=N(t.operators.AND);t.and=function(...e){return e.reduce(T)};let I=N(t.operators.OR);function N(e){return(t,r)=>t===n.nil?r:r===n.nil?t:n._`${L(t)} ${e} ${L(r)}`}function L(e){return e instanceof n.Name?e:n._`(${e})`}t.or=function(...e){return e.reduce(I)}},7791:function(e,t,r){"use strict";var n,i;Object.defineProperty(t,"__esModule",{value:!0}),t.ValueScope=t.ValueScopeName=t.Scope=t.varKinds=t.UsedValueState=void 0;let o=r(4667);class a extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`),this.value=e.value}}(i=n=t.UsedValueState||(t.UsedValueState={}))[i.Started=0]="Started",i[i.Completed=1]="Completed",t.varKinds={const:new o.Name("const"),let:new o.Name("let"),var:new o.Name("var")};class s{constructor({prefixes:e,parent:t}={}){this._names={},this._prefixes=e,this._parent=t}toName(e){return e instanceof o.Name?e:this.name(e)}name(e){return new o.Name(this._newName(e))}_newName(e){return`${e}${(this._names[e]||this._nameGroup(e)).index++}`}_nameGroup(e){var t,r;if((null===(r=null===(t=this._parent)||void 0===t?void 0:t._prefixes)||void 0===r?void 0:r.has(e))||this._prefixes&&!this._prefixes.has(e))throw Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}}t.Scope=s;class l extends o.Name{constructor(e,t){super(t),this.prefix=e}setValue(e,{property:t,itemIndex:r}){this.value=e,this.scopePath=o._`.${new o.Name(t)}[${r}]`}}t.ValueScopeName=l;let c=o._`\n`;t.ValueScope=class extends s{constructor(e){super(e),this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?c:o.nil}}get(){return this._scope}name(e){return new l(e,this._newName(e))}value(e,t){var r;if(void 0===t.ref)throw Error("CodeGen: ref must be passed in value");let n=this.toName(e),{prefix:i}=n,o=null!==(r=t.key)&&void 0!==r?r:t.ref,a=this._values[i];if(a){let e=a.get(o);if(e)return e}else a=this._values[i]=new Map;a.set(o,n);let s=this._scope[i]||(this._scope[i]=[]),l=s.length;return s[l]=t.ref,n.setValue(t,{property:i,itemIndex:l}),n}getValue(e,t){let r=this._values[e];if(r)return r.get(t)}scopeRefs(e,t=this._values){return this._reduceValues(t,(t=>{if(void 0===t.scopePath)throw Error(`CodeGen: name "${t}" has no value`);return o._`${e}${t.scopePath}`}))}scopeCode(e=this._values,t,r){return this._reduceValues(e,(e=>{if(void 0===e.value)throw Error(`CodeGen: name "${e}" has no value`);return e.value.code}),t,r)}_reduceValues(e,r,i={},s){let l=o.nil;for(let c in e){let u=e[c];if(!u)continue;let p=i[c]=i[c]||new Map;u.forEach((e=>{if(p.has(e))return;p.set(e,n.Started);let i=r(e);if(i){let r=this.opts.es5?t.varKinds.var:t.varKinds.const;l=o._`${l}${r} ${e} = ${i};${this.opts._n}`}else{if(!(i=null==s?void 0:s(e)))throw new a(e);l=o._`${l}${i}${this.opts._n}`}p.set(e,n.Completed)}))}return l}}},1885:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.extendErrors=t.resetErrorsCount=t.reportExtraError=t.reportError=t.keyword$DataError=t.keywordError=void 0;let n=r(4475),i=r(6124),o=r(5018);function a(e,t){let r=e.const("err",t);e.if(n._`${o.default.vErrors} === null`,(()=>e.assign(o.default.vErrors,n._`[${r}]`)),n._`${o.default.vErrors}.push(${r})`),e.code(n._`${o.default.errors}++`)}function s(e,t){let{gen:r,validateName:i,schemaEnv:o}=e;o.$async?r.throw(n._`new ${e.ValidationError}(${t})`):(r.assign(n._`${i}.errors`,t),r.return(!1))}t.keywordError={message:({keyword:e})=>n.str`should pass "${e}" keyword validation`},t.keyword$DataError={message:({keyword:e,schemaType:t})=>t?n.str`"${e}" keyword must be ${t} ($data)`:n.str`"${e}" keyword is invalid ($data)`},t.reportError=function(e,r=t.keywordError,i,o){let{it:l}=e,{gen:u,compositeRule:p,allErrors:d}=l,f=c(e,r,i);(null!=o?o:p||d)?a(u,f):s(l,n._`[${f}]`)},t.reportExtraError=function(e,r=t.keywordError,n){let{it:i}=e,{gen:l,compositeRule:u,allErrors:p}=i;a(l,c(e,r,n)),u||p||s(i,o.default.vErrors)},t.resetErrorsCount=function(e,t){e.assign(o.default.errors,t),e.if(n._`${o.default.vErrors} !== null`,(()=>e.if(t,(()=>e.assign(n._`${o.default.vErrors}.length`,t)),(()=>e.assign(o.default.vErrors,null)))))},t.extendErrors=function({gen:e,keyword:t,schemaValue:r,data:i,errsCount:a,it:s}){if(void 0===a)throw Error("ajv implementation error");let l=e.name("err");e.forRange("i",a,o.default.errors,(a=>{e.const(l,n._`${o.default.vErrors}[${a}]`),e.if(n._`${l}.instancePath === undefined`,(()=>e.assign(n._`${l}.instancePath`,n.strConcat(o.default.instancePath,s.errorPath)))),e.assign(n._`${l}.schemaPath`,n.str`${s.errSchemaPath}/${t}`),s.opts.verbose&&(e.assign(n._`${l}.schema`,r),e.assign(n._`${l}.data`,i))}))};let l={keyword:new n.Name("keyword"),schemaPath:new n.Name("schemaPath"),params:new n.Name("params"),propertyName:new n.Name("propertyName"),message:new n.Name("message"),schema:new n.Name("schema"),parentSchema:new n.Name("parentSchema")};function c(e,t,r){let{createErrors:a}=e.it;return!1===a?n._`{}`:function(e,t,r={}){let{gen:a,it:s}=e,c=[function({errorPath:e},{instancePath:t}){let r=t?n.str`${e}${i.getErrorPath(t,i.Type.Str)}`:e;return[o.default.instancePath,n.strConcat(o.default.instancePath,r)]}(s,r),function({keyword:e,it:{errSchemaPath:t}},{schemaPath:r,parentSchema:o}){let a=o?t:n.str`${t}/${e}`;return r&&(a=n.str`${a}${i.getErrorPath(r,i.Type.Str)}`),[l.schemaPath,a]}(e,r)];return function(e,{params:t,message:r},i){let{keyword:a,data:s,schemaValue:c,it:u}=e,{opts:p,propertyName:d,topSchemaRef:f,schemaPath:h}=u;i.push([l.keyword,a],[l.params,"function"==typeof t?t(e):t||n._`{}`]),p.messages&&i.push([l.message,"function"==typeof r?r(e):r]),p.verbose&&i.push([l.schema,c],[l.parentSchema,n._`${f}${h}`],[o.default.data,s]),d&&i.push([l.propertyName,d])}(e,t,c),a.object(...c)}(e,t,r)}},7805:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.resolveSchema=t.getCompilingSchema=t.resolveRef=t.compileSchema=t.SchemaEnv=void 0;let n=r(4475),i=r(8451),o=r(5018),a=r(9826),s=r(6124),l=r(1321),c=r(540);class u{constructor(e){var t;let r;this.refs={},this.dynamicAnchors={},"object"==typeof e.schema&&(r=e.schema),this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=null!==(t=e.baseId)&&void 0!==t?t:a.normalizeId(null==r?void 0:r[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=null==r?void 0:r.$async,this.refs={}}}function p(e){let t=f.call(this,e);if(t)return t;let r,s=a.getFullPath(e.root.baseId),{es5:c,lines:u}=this.opts.code,{ownProperties:p}=this.opts,d=new n.CodeGen(this.scope,{es5:c,lines:u,ownProperties:p});e.$async&&(r=d.scopeValue("Error",{ref:i.default,code:n._`require("ajv/dist/runtime/validation_error").default`}));let h=d.scopeName("validate");e.validateName=h;let m,g={gen:d,allErrors:this.opts.allErrors,data:o.default.data,parentData:o.default.parentData,parentDataProperty:o.default.parentDataProperty,dataNames:[o.default.data],dataPathArr:[n.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:d.scopeValue("schema",!0===this.opts.code.source?{ref:e.schema,code:n.stringify(e.schema)}:{ref:e.schema}),validateName:h,ValidationError:r,schema:e.schema,schemaEnv:e,rootId:s,baseId:e.baseId||s,schemaPath:n.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:n._`""`,opts:this.opts,self:this};try{this._compilations.add(e),l.validateFunctionCode(g),d.optimize(this.opts.code.optimize);let t=d.toString();m=`const visitedNodesForRef = new WeakMap(); ${d.scopeRefs(o.default.scope)}return ${t}`,this.opts.code.process&&(m=this.opts.code.process(m,e));let r=Function(`${o.default.self}`,`${o.default.scope}`,m)(this,this.scope.get());if(this.scope.value(h,{ref:r}),r.errors=null,r.schema=e.schema,r.schemaEnv=e,e.$async&&(r.$async=!0),!0===this.opts.code.source&&(r.source={validateName:h,validateCode:t,scopeValues:d._values}),this.opts.unevaluated){let{props:e,items:t}=g;r.evaluated={props:e instanceof n.Name?void 0:e,items:t instanceof n.Name?void 0:t,dynamicProps:e instanceof n.Name,dynamicItems:t instanceof n.Name},r.source&&(r.source.evaluated=n.stringify(r.evaluated))}return e.validate=r,e}catch(t){throw delete e.validate,delete e.validateName,m&&this.logger.error("Error compiling schema, function code:",m),t}finally{this._compilations.delete(e)}}function d(e){return a.inlineRef(e.schema,this.opts.inlineRefs)?e.schema:e.validate?e:p.call(this,e)}function f(e){var t,r;for(let n of this._compilations)if(r=e,(t=n).schema===r.schema&&t.root===r.root&&t.baseId===r.baseId)return n}function h(e,t){let r;for(;"string"==typeof(r=this.refs[t]);)t=r;return r||this.schemas[t]||m.call(this,e,t)}function m(e,t){let r=c.parse(t),n=a._getFullPath(r),i=a.getFullPath(e.baseId);if(Object.keys(e.schema).length>0&&n===i)return y.call(this,r,e);let o=a.normalizeId(n),s=this.refs[o]||this.schemas[o];if("string"==typeof s){let t=m.call(this,e,s);if("object"!=typeof(null==t?void 0:t.schema))return;return y.call(this,r,t)}if("object"==typeof(null==s?void 0:s.schema)){if(s.validate||p.call(this,s),o===a.normalizeId(t)){let{schema:t}=s,{schemaId:r}=this.opts,n=t[r];return n&&(i=a.resolveUrl(i,n)),new u({schema:t,schemaId:r,root:e,baseId:i})}return y.call(this,r,s)}}t.SchemaEnv=u,t.compileSchema=p,t.resolveRef=function(e,t,r){var n;let i=a.resolveUrl(t,r),o=e.refs[i];if(o)return o;let s=h.call(this,e,i);if(void 0===s){let r=null===(n=e.localRefs)||void 0===n?void 0:n[i],{schemaId:o}=this.opts;r&&(s=new u({schema:r,schemaId:o,root:e,baseId:t}))}if(void 0===s&&this.opts.loadSchemaSync){let n=this.opts.loadSchemaSync(t,r,i);!n||this.refs[i]||this.schemas[i]||(this.addSchema(n,i,void 0),s=h.call(this,e,i))}return void 0!==s?e.refs[i]=d.call(this,s):void 0},t.getCompilingSchema=f,t.resolveSchema=m;let g=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function y(e,{baseId:t,schema:r,root:n}){var i;if("/"!==(null===(i=e.fragment)||void 0===i?void 0:i[0]))return;for(let n of e.fragment.slice(1).split("/")){if("boolean"==typeof r||void 0===(r=r[s.unescapeFragment(n)]))return;let e="object"==typeof r&&r[this.opts.schemaId];!g.has(n)&&e&&(t=a.resolveUrl(t,e))}let o;if("boolean"!=typeof r&&r.$ref&&!s.schemaHasRulesButRef(r,this.RULES)){let e=a.resolveUrl(t,r.$ref);o=m.call(this,n,e)}let{schemaId:l}=this.opts;return(o=o||new u({schema:r,schemaId:l,root:n,baseId:t})).schema!==o.root.schema?o:void 0}},5018:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475),i={data:new n.Name("data"),valCxt:new n.Name("valCxt"),instancePath:new n.Name("instancePath"),parentData:new n.Name("parentData"),parentDataProperty:new n.Name("parentDataProperty"),rootData:new n.Name("rootData"),dynamicAnchors:new n.Name("dynamicAnchors"),vErrors:new n.Name("vErrors"),errors:new n.Name("errors"),this:new n.Name("this"),self:new n.Name("self"),scope:new n.Name("scope"),json:new n.Name("json"),jsonPos:new n.Name("jsonPos"),jsonLen:new n.Name("jsonLen"),jsonPart:new n.Name("jsonPart")};t.default=i},4143:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(9826);t.default=class extends Error{constructor(e,t,r){super(r||`can't resolve reference ${t} from id ${e}`),this.missingRef=n.resolveUrl(e,t),this.missingSchema=n.normalizeId(n.getFullPath(this.missingRef))}}},9826:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getSchemaRefs=t.resolveUrl=t.normalizeId=t._getFullPath=t.getFullPath=t.inlineRef=void 0;let n=r(6124),i=r(4063),o=r(4029),a=r(540),s=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);t.inlineRef=function(e,t=!0){return"boolean"==typeof e||(!0===t?!function e(t){for(let r in t){if(l.has(r))return!0;let n=t[r];if(Array.isArray(n)&&n.some(e)||"object"==typeof n&&e(n))return!0}return!1}(e):!!t&&function e(t){let r=0;for(let i in t)if("$ref"===i||(r++,!s.has(i)&&("object"==typeof t[i]&&n.eachItem(t[i],(t=>r+=e(t))),r===1/0)))return 1/0;return r}(e)<=t)};let l=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function c(e="",t){return!1!==t&&(e=d(e)),u(a.parse(e))}function u(e){return a.serialize(e).split("#")[0]+"#"}t.getFullPath=c,t._getFullPath=u;let p=/#\/?$/;function d(e){return e?e.replace(p,""):""}t.normalizeId=d,t.resolveUrl=function(e,t){return t=d(t),a.resolve(e,t)};let f=/^[a-z_][-a-z0-9._]*$/i;t.getSchemaRefs=function(e){if("boolean"==typeof e)return{};let{schemaId:t}=this.opts,r=d(e[t]),n={"":r},s=c(r,!1),l={},u=new Set;return o(e,{allKeys:!0},((e,r,i,o)=>{if(void 0===o)return;let c=s+r,m=n[o];function g(t){if(t=d(m?a.resolve(m,t):t),u.has(t))throw h(t);u.add(t);let r=this.refs[t];return"string"==typeof r&&(r=this.refs[r]),"object"==typeof r?p(e,r.schema,t):t!==d(c)&&("#"===t[0]?(p(e,l[t],t),l[t]=e):this.refs[t]=c),t}function y(e){if("string"==typeof e){if(!f.test(e))throw Error(`invalid anchor "${e}"`);g.call(this,`#${e}`)}}"string"==typeof e[t]&&(m=g.call(this,e[t])),y.call(this,e.$anchor),y.call(this,e.$dynamicAnchor),n[r]=m})),l;function p(e,t,r){if(void 0!==t&&!i(e,t))throw h(r)}function h(e){return Error(`reference "${e}" resolves to more than one schema`)}}},3664:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getRules=t.isJSONType=void 0;let r=new Set(["string","number","integer","boolean","null","object","array"]);t.isJSONType=function(e){return"string"==typeof e&&r.has(e)},t.getRules=function(){let e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}},6124:function(e,t,r){"use strict";var n,i;Object.defineProperty(t,"__esModule",{value:!0}),t.checkStrictMode=t.getErrorPath=t.Type=t.useFunc=t.setEvaluated=t.evaluatedPropsToName=t.mergeEvaluated=t.eachItem=t.unescapeJsonPointer=t.escapeJsonPointer=t.escapeFragment=t.unescapeFragment=t.schemaRefOrVal=t.schemaHasRulesButRef=t.schemaHasRules=t.checkUnknownRules=t.alwaysValidSchema=t.toHash=void 0;let o=r(4475),a=r(4667);function s(e,t=e.schema){let{opts:r,self:n}=e;if(!r.strictSchema||"boolean"==typeof t)return;let i=n.RULES.keywords;for(let r in t)i[r]||m(e,`unknown keyword: "${r}"`)}function l(e,t){if("boolean"==typeof e)return!e;for(let r in e)if(t[r])return!0;return!1}function c(e){return"number"==typeof e?`${e}`:e.replace(/~/g,"~0").replace(/\//g,"~1")}function u(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function p({mergeNames:e,mergeToName:t,mergeValues:r,resultToName:n}){return(i,a,s,l)=>{let c=void 0===s?a:s instanceof o.Name?(a instanceof o.Name?e(i,a,s):t(i,a,s),s):a instanceof o.Name?(t(i,s,a),a):r(a,s);return l!==o.Name||c instanceof o.Name?c:n(i,c)}}function d(e,t){if(!0===t)return e.var("props",!0);let r=e.var("props",o._`{}`);return void 0!==t&&f(e,r,t),r}function f(e,t,r){Object.keys(r).forEach((r=>e.assign(o._`${t}${o.getProperty(r)}`,!0)))}t.toHash=function(e){let t={};for(let r of e)t[r]=!0;return t},t.alwaysValidSchema=function(e,t){return"boolean"==typeof t?t:0===Object.keys(t).length||(s(e,t),!l(t,e.self.RULES.all))},t.checkUnknownRules=s,t.schemaHasRules=l,t.schemaHasRulesButRef=function(e,t){if("boolean"==typeof e)return!e;for(let r in e)if("$ref"!==r&&t.all[r])return!0;return!1},t.schemaRefOrVal=function({topSchemaRef:e,schemaPath:t},r,n,i){if(!i){if("number"==typeof r||"boolean"==typeof r)return r;if("string"==typeof r)return o._`${r}`}return o._`${e}${t}${o.getProperty(n)}`},t.unescapeFragment=function(e){return u(decodeURIComponent(e))},t.escapeFragment=function(e){return encodeURIComponent(c(e))},t.escapeJsonPointer=c,t.unescapeJsonPointer=u,t.eachItem=function(e,t){if(Array.isArray(e))for(let r of e)t(r);else t(e)},t.mergeEvaluated={props:p({mergeNames:(e,t,r)=>e.if(o._`${r} !== true && ${t} !== undefined`,(()=>{e.if(o._`${t} === true`,(()=>e.assign(r,!0)),(()=>e.assign(r,o._`${r} || {}`).code(o._`Object.assign(${r}, ${t})`)))})),mergeToName:(e,t,r)=>e.if(o._`${r} !== true`,(()=>{!0===t?e.assign(r,!0):(e.assign(r,o._`${r} || {}`),f(e,r,t))})),mergeValues:(e,t)=>!0===e||{...e,...t},resultToName:d}),items:p({mergeNames:(e,t,r)=>e.if(o._`${r} !== true && ${t} !== undefined`,(()=>e.assign(r,o._`${t} === true ? true : ${r} > ${t} ? ${r} : ${t}`))),mergeToName:(e,t,r)=>e.if(o._`${r} !== true`,(()=>e.assign(r,!0===t||o._`${r} > ${t} ? ${r} : ${t}`))),mergeValues:(e,t)=>!0===e||Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})},t.evaluatedPropsToName=d,t.setEvaluated=f;let h={};function m(e,t,r=e.opts.strictSchema){if(r){if(t=`strict mode: ${t}`,!0===r)throw Error(t);e.self.logger.warn(t)}}t.useFunc=function(e,t){return e.scopeValue("func",{ref:t,code:h[t.code]||(h[t.code]=new a._Code(t.code))})},(i=n=t.Type||(t.Type={}))[i.Num=0]="Num",i[i.Str=1]="Str",t.getErrorPath=function(e,t,r){if(e instanceof o.Name){let i=t===n.Num;return r?i?o._`"[" + ${e} + "]"`:o._`"['" + ${e} + "']"`:i?o._`"/" + ${e}`:o._`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?o.getProperty(e).toString():"/"+c(e)},t.checkStrictMode=m},4566:function(e,t){"use strict";function r(e,t){return t.rules.some((t=>n(e,t)))}function n(e,t){var r;return void 0!==e[t.keyword]||(null===(r=t.definition.implements)||void 0===r?void 0:r.some((t=>void 0!==e[t])))}Object.defineProperty(t,"__esModule",{value:!0}),t.shouldUseRule=t.shouldUseGroup=t.schemaHasRulesForType=void 0,t.schemaHasRulesForType=function({schema:e,self:t},n){let i=t.RULES.types[n];return i&&!0!==i&&r(e,i)},t.shouldUseGroup=r,t.shouldUseRule=n},7627:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.boolOrEmptySchema=t.topBoolOrEmptySchema=void 0;let n=r(1885),i=r(4475),o=r(5018),a={message:"boolean schema is false"};function s(e,t){let{gen:r,data:i}=e;n.reportError({gen:r,keyword:"false schema",data:i,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e},a,void 0,t)}t.topBoolOrEmptySchema=function(e){let{gen:t,schema:r,validateName:n}=e;!1===r?s(e,!1):"object"==typeof r&&!0===r.$async?t.return(o.default.data):(t.assign(i._`${n}.errors`,null),t.return(!0))},t.boolOrEmptySchema=function(e,t){let{gen:r,schema:n}=e;!1===n?(r.var(t,!1),s(e)):r.var(t,!0)}},7927:function(e,t,r){"use strict";var n,i;Object.defineProperty(t,"__esModule",{value:!0}),t.reportTypeError=t.checkDataTypes=t.checkDataType=t.coerceAndCheckDataType=t.getJSONTypes=t.getSchemaTypes=t.DataType=void 0;let o=r(3664),a=r(4566),s=r(1885),l=r(4475),c=r(6124);function u(e){let t=Array.isArray(e)?e:e?[e]:[];if(t.every(o.isJSONType))return t;throw Error("type must be JSONType or JSONType[]: "+t.join(","))}(i=n=t.DataType||(t.DataType={}))[i.Correct=0]="Correct",i[i.Wrong=1]="Wrong",t.getSchemaTypes=function(e){let t=u(e.type);if(t.includes("null")){if(!1===e.nullable)throw Error("type: null contradicts nullable: false")}else{if(!t.length&&void 0!==e.nullable)throw Error('"nullable" cannot be used without "type"');!0===e.nullable&&t.push("null")}return t},t.getJSONTypes=u,t.coerceAndCheckDataType=function(e,t){var r,i;let{gen:o,data:s,opts:c}=e,u=(r=t,(i=c.coerceTypes)?r.filter((e=>p.has(e)||"array"===i&&"array"===e)):[]),d=t.length>0&&!(0===u.length&&1===t.length&&a.schemaHasRulesForType(e,t[0]));if(d){let r=f(t,s,c.strictNumbers,n.Wrong);o.if(r,(()=>{u.length?function(e,t,r){let{gen:n,data:i,opts:o}=e,a=n.let("dataType",l._`typeof ${i}`),s=n.let("coerced",l._`undefined`);for(let e of("array"===o.coerceTypes&&n.if(l._`${a} == 'object' && Array.isArray(${i}) && ${i}.length == 1`,(()=>n.assign(i,l._`${i}[0]`).assign(a,l._`typeof ${i}`).if(f(t,i,o.strictNumbers),(()=>n.assign(s,i))))),n.if(l._`${s} !== undefined`),r))(p.has(e)||"array"===e&&"array"===o.coerceTypes)&&c(e);function c(e){switch(e){case"string":return void n.elseIf(l._`${a} == "number" || ${a} == "boolean"`).assign(s,l._`"" + ${i}`).elseIf(l._`${i} === null`).assign(s,l._`""`);case"number":return void n.elseIf(l._`${a} == "boolean" || ${i} === null + || (${a} == "string" && ${i} && ${i} == +${i})`).assign(s,l._`+${i}`);case"integer":return void n.elseIf(l._`${a} === "boolean" || ${i} === null + || (${a} === "string" && ${i} && ${i} == +${i} && !(${i} % 1))`).assign(s,l._`+${i}`);case"boolean":return void n.elseIf(l._`${i} === "false" || ${i} === 0 || ${i} === null`).assign(s,!1).elseIf(l._`${i} === "true" || ${i} === 1`).assign(s,!0);case"null":return n.elseIf(l._`${i} === "" || ${i} === 0 || ${i} === false`),void n.assign(s,null);case"array":n.elseIf(l._`${a} === "string" || ${a} === "number" + || ${a} === "boolean" || ${i} === null`).assign(s,l._`[${i}]`)}}n.else(),m(e),n.endIf(),n.if(l._`${s} !== undefined`,(()=>{n.assign(i,s),function({gen:e,parentData:t,parentDataProperty:r},n){e.if(l._`${t} !== undefined`,(()=>e.assign(l._`${t}[${r}]`,n)))}(e,s)}))}(e,t,u):m(e)}))}return d};let p=new Set(["string","number","integer","boolean","null"]);function d(e,t,r,i=n.Correct){let o,a=i===n.Correct?l.operators.EQ:l.operators.NEQ;switch(e){case"null":return l._`${t} ${a} null`;case"array":o=l._`Array.isArray(${t})`;break;case"object":o=l._`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":o=s(l._`!(${t} % 1) && !isNaN(${t})`);break;case"number":o=s();break;default:return l._`typeof ${t} ${a} ${e}`}return i===n.Correct?o:l.not(o);function s(e=l.nil){return l.and(l._`typeof ${t} == "number"`,e,r?l._`isFinite(${t})`:l.nil)}}function f(e,t,r,n){if(1===e.length)return d(e[0],t,r,n);let i,o=c.toHash(e);if(o.array&&o.object){let e=l._`typeof ${t} != "object"`;i=o.null?e:l._`!${t} || ${e}`,delete o.null,delete o.array,delete o.object}else i=l.nil;for(let e in o.number&&delete o.integer,o)i=l.and(i,d(e,t,r,n));return i}t.checkDataType=d,t.checkDataTypes=f;let h={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>"string"==typeof e?l._`{type: ${e}}`:l._`{type: ${t}}`};function m(e){let t=function(e){let{gen:t,data:r,schema:n}=e,i=c.schemaRefOrVal(e,n,"type");return{gen:t,keyword:"type",data:r,schema:n.type,schemaCode:i,schemaValue:i,parentSchema:n,params:{},it:e}}(e);s.reportError(t,h)}t.reportTypeError=m},2537:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assignDefaults=void 0;let n=r(4475),i=r(6124);function o(e,t,r){let{gen:o,compositeRule:a,data:s,opts:l}=e;if(void 0===r)return;let c=n._`${s}${n.getProperty(t)}`;if(a)return void i.checkStrictMode(e,`default is ignored for: ${c}`);let u=n._`${c} === undefined`;"empty"===l.useDefaults&&(u=n._`${u} || ${c} === null || ${c} === ""`),o.if(u,n._`${c} = ${n.stringify(r)}`)}t.assignDefaults=function(e,t){let{properties:r,items:n}=e.schema;if("object"===t&&r)for(let t in r)o(e,t,r[t].default);else"array"===t&&Array.isArray(n)&&n.forEach(((t,r)=>o(e,r,t.default)))}},1321:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getData=t.KeywordCxt=t.validateFunctionCode=void 0;let n=r(7627),i=r(7927),o=r(4566),a=r(7927),s=r(2537),l=r(6488),c=r(4688),u=r(4475),p=r(5018),d=r(9826),f=r(6124),h=r(1885);function m({gen:e,validateName:t,schema:r,schemaEnv:n,opts:i},o){i.code.es5?e.func(t,u._`${p.default.data}, ${p.default.valCxt}`,n.$async,(()=>{e.code(u._`"use strict"; ${g(r,i)}`),function(e,t){e.if(p.default.valCxt,(()=>{e.var(p.default.instancePath,u._`${p.default.valCxt}.${p.default.instancePath}`),e.var(p.default.parentData,u._`${p.default.valCxt}.${p.default.parentData}`),e.var(p.default.parentDataProperty,u._`${p.default.valCxt}.${p.default.parentDataProperty}`),e.var(p.default.rootData,u._`${p.default.valCxt}.${p.default.rootData}`),t.dynamicRef&&e.var(p.default.dynamicAnchors,u._`${p.default.valCxt}.${p.default.dynamicAnchors}`)}),(()=>{e.var(p.default.instancePath,u._`""`),e.var(p.default.parentData,u._`undefined`),e.var(p.default.parentDataProperty,u._`undefined`),e.var(p.default.rootData,p.default.data),t.dynamicRef&&e.var(p.default.dynamicAnchors,u._`{}`)}))}(e,i),e.code(o)})):e.func(t,u._`${p.default.data}, ${u._`{${p.default.instancePath}="", ${p.default.parentData}, ${p.default.parentDataProperty}, ${p.default.rootData}=${p.default.data}${i.dynamicRef?u._`, ${p.default.dynamicAnchors}={}`:u.nil}}={}`}`,n.$async,(()=>e.code(g(r,i)).code(o)))}function g(e,t){let r="object"==typeof e&&e[t.schemaId];return r&&(t.code.source||t.code.process)?u._`/*# sourceURL=${r} */`:u.nil}function y({schema:e,self:t}){if("boolean"==typeof e)return!e;for(let r in e)if(t.RULES.all[r])return!0;return!1}function v(e){return"boolean"!=typeof e.schema}function b(e){f.checkUnknownRules(e),function(e){let{schema:t,errSchemaPath:r,opts:n,self:i}=e;t.$ref&&n.ignoreKeywordsWithRef&&f.schemaHasRulesButRef(t,i.RULES)&&i.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}(e)}function x(e,t){if(e.opts.jtd)return k(e,[],!1,t);let r=i.getSchemaTypes(e.schema);k(e,r,!i.coerceAndCheckDataType(e,r),t)}function w({gen:e,schemaEnv:t,schema:r,errSchemaPath:n,opts:i}){let o=r.$comment;if(!0===i.$comment)e.code(u._`${p.default.self}.logger.log(${o})`);else if("function"==typeof i.$comment){let r=u.str`${n}/$comment`,i=e.scopeValue("root",{ref:t.root});e.code(u._`${p.default.self}.opts.$comment(${o}, ${r}, ${i}.schema)`)}}function k(e,t,r,n){var i,s,l,c,d,h;let{gen:m,schema:g,data:y,allErrors:v,opts:b,self:x}=e,{RULES:w}=x;function k(i){o.shouldUseGroup(g,i)&&(i.type?(m.if(a.checkDataType(i.type,y,b.strictNumbers)),_(e,i),1===t.length&&t[0]===i.type&&r&&(m.else(),a.reportTypeError(e)),m.endIf()):_(e,i),v||m.if(u._`${p.default.errors} === ${n||0}`))}!g.$ref||!b.ignoreKeywordsWithRef&&f.schemaHasRulesButRef(g,w)?(b.jtd||(s=t,!(i=e).schemaEnv.meta&&i.opts.strictTypes&&(l=i,(c=s).length&&(l.dataTypes.length?(c.forEach((e=>{O(l.dataTypes,e)||S(l,`type "${e}" not allowed by context "${l.dataTypes.join(",")}"`)})),l.dataTypes=l.dataTypes.filter((e=>O(c,e)))):l.dataTypes=c),i.opts.allowUnionTypes||(d=i,(h=s).length>1&&(2!==h.length||!h.includes("null"))&&S(d,"use allowUnionTypes to allow union type keyword")),function(e,t){let r=e.self.RULES.all;for(let n in r){let i=r[n];if("object"==typeof i&&o.shouldUseRule(e.schema,i)){let{type:r}=i.definition;r.length&&!r.some((e=>{var r,n;return n=e,(r=t).includes(n)||"number"===n&&r.includes("integer")}))&&S(e,`missing type "${r.join(",")}" for keyword "${n}"`)}}}(i,i.dataTypes))),m.block((()=>{for(let e of w.rules)k(e);k(w.post)}))):m.block((()=>P(e,"$ref",w.all.$ref.definition)))}function _(e,t){let{gen:r,schema:n,opts:{useDefaults:i}}=e;i&&s.assignDefaults(e,t.type),r.block((()=>{for(let r of t.rules)o.shouldUseRule(n,r)&&P(e,r.keyword,r.definition,t.type)}))}function O(e,t){return e.includes(t)||"integer"===t&&e.includes("number")}function S(e,t){t+=` at "${e.schemaEnv.baseId+e.errSchemaPath}" (strictTypes)`,f.checkStrictMode(e,t,e.opts.strictTypes)}t.validateFunctionCode=function(e){v(e)&&(b(e),y(e))?function(e){let{schema:t,opts:r,gen:n}=e;m(e,(()=>{r.$comment&&t.$comment&&w(e),function(e){let{schema:t,opts:r}=e;void 0!==t.default&&r.useDefaults&&r.strictSchema&&f.checkStrictMode(e,"default is ignored in the schema root")}(e),n.let(p.default.vErrors,null),n.let(p.default.errors,0),r.unevaluated&&function(e){let{gen:t,validateName:r}=e;e.evaluated=t.const("evaluated",u._`${r}.evaluated`),t.if(u._`${e.evaluated}.dynamicProps`,(()=>t.assign(u._`${e.evaluated}.props`,u._`undefined`))),t.if(u._`${e.evaluated}.dynamicItems`,(()=>t.assign(u._`${e.evaluated}.items`,u._`undefined`)))}(e),x(e),function(e){let{gen:t,schemaEnv:r,validateName:n,ValidationError:i,opts:o}=e;r.$async?t.if(u._`${p.default.errors} === 0`,(()=>t.return(p.default.data)),(()=>t.throw(u._`new ${i}(${p.default.vErrors})`))):(t.assign(u._`${n}.errors`,p.default.vErrors),o.unevaluated&&function({gen:e,evaluated:t,props:r,items:n}){r instanceof u.Name&&e.assign(u._`${t}.props`,r),n instanceof u.Name&&e.assign(u._`${t}.items`,n)}(e),t.return(u._`${p.default.errors} === 0`))}(e)}))}(e):m(e,(()=>n.topBoolOrEmptySchema(e)))};class E{constructor(e,t,r){if(l.validateKeywordUsage(e,t,r),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=r,this.data=e.data,this.schema=e.schema[r],this.$data=t.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=f.schemaRefOrVal(e,this.schema,r,this.$data),this.schemaType=t.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=t,this.$data)this.schemaCode=e.gen.const("vSchema",C(this.$data,e));else if(this.schemaCode=this.schemaValue,!l.validSchemaType(this.schema,t.schemaType,t.allowUndefined))throw Error(`${r} value must be ${JSON.stringify(t.schemaType)}`);("code"in t?t.trackErrors:!1!==t.errors)&&(this.errsCount=e.gen.const("_errs",p.default.errors))}result(e,t,r){this.gen.if(u.not(e)),r?r():this.error(),t?(this.gen.else(),t(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(e,t){this.result(e,void 0,t)}fail(e){if(void 0===e)return this.error(),void(this.allErrors||this.gen.if(!1));this.gen.if(e),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);let{schemaCode:t}=this;this.fail(u._`${t} !== undefined && (${u.or(this.invalid$data(),e)})`)}error(e,t,r){if(t)return this.setParams(t),this._error(e,r),void this.setParams({});this._error(e,r)}_error(e,t){(e?h.reportExtraError:h.reportError)(this,this.def.error,t)}$dataError(){h.reportError(this,this.def.$dataError||h.keyword$DataError)}reset(){if(void 0===this.errsCount)throw Error('add "trackErrors" to keyword definition');h.resetErrorsCount(this.gen,this.errsCount)}ok(e){this.allErrors||this.gen.if(e)}setParams(e,t){t?Object.assign(this.params,e):this.params=e}block$data(e,t,r=u.nil){this.gen.block((()=>{this.check$data(e,r),t()}))}check$data(e=u.nil,t=u.nil){if(!this.$data)return;let{gen:r,schemaCode:n,schemaType:i,def:o}=this;r.if(u.or(u._`${n} === undefined`,t)),e!==u.nil&&r.assign(e,!0),(i.length||o.validateSchema)&&(r.elseIf(this.invalid$data()),this.$dataError(),e!==u.nil&&r.assign(e,!1)),r.else()}invalid$data(){let{gen:e,schemaCode:t,schemaType:r,def:n,it:i}=this;return u.or(function(){if(r.length){if(!(t instanceof u.Name))throw Error("ajv implementation error");let e=Array.isArray(r)?r:[r];return u._`${a.checkDataTypes(e,t,i.opts.strictNumbers,a.DataType.Wrong)}`}return u.nil}(),function(){if(n.validateSchema){let r=e.scopeValue("validate$data",{ref:n.validateSchema});return u._`!${r}(${t})`}return u.nil}())}subschema(e,t){var r,i;let o=c.getSubschema(this.it,e);c.extendSubschemaData(o,this.it,e),c.extendSubschemaMode(o,e);let a={...this.it,...o,items:void 0,props:void 0};return i=t,v(r=a)&&(b(r),y(r))?function(e,t){let{schema:r,gen:n,opts:i}=e;i.$comment&&r.$comment&&w(e),function(e){let t=e.schema[e.opts.schemaId];t&&(e.baseId=d.resolveUrl(e.baseId,t))}(e),function(e){if(e.schema.$async&&!e.schemaEnv.$async)throw Error("async schema in sync schema")}(e);let o=n.const("_errs",p.default.errors);x(e,o),n.var(t,u._`${o} === ${p.default.errors}`)}(r,i):n.boolOrEmptySchema(r,i),a}mergeEvaluated(e,t){let{it:r,gen:n}=this;r.opts.unevaluated&&(!0!==r.props&&void 0!==e.props&&(r.props=f.mergeEvaluated.props(n,e.props,r.props,t)),!0!==r.items&&void 0!==e.items&&(r.items=f.mergeEvaluated.items(n,e.items,r.items,t)))}mergeValidEvaluated(e,t){let{it:r,gen:n}=this;if(r.opts.unevaluated&&(!0!==r.props||!0!==r.items))return n.if(t,(()=>this.mergeEvaluated(e,u.Name))),!0}}function P(e,t,r,n){let i=new E(e,r,t);"code"in r?r.code(i,n):i.$data&&r.validate?l.funcKeywordCode(i,r):"macro"in r?l.macroKeywordCode(i,r):(r.compile||r.validate)&&l.funcKeywordCode(i,r)}t.KeywordCxt=E;let A=/^\/(?:[^~]|~0|~1)*$/,$=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function C(e,{dataLevel:t,dataNames:r,dataPathArr:n}){let i,o;if(""===e)return p.default.rootData;if("/"===e[0]){if(!A.test(e))throw Error(`Invalid JSON-pointer: ${e}`);i=e,o=p.default.rootData}else{let a=$.exec(e);if(!a)throw Error(`Invalid JSON-pointer: ${e}`);let s=+a[1];if("#"===(i=a[2])){if(s>=t)throw Error(l("property/index",s));return n[t-s]}if(s>t)throw Error(l("data",s));if(o=r[t-s],!i)return o}let a=o,s=i.split("/");for(let e of s)e&&(a=u._`${a} && ${o=u._`${o}${u.getProperty(f.unescapeJsonPointer(e))}`}`);return a;function l(e,r){return`Cannot access ${e} ${r} levels up, current level is ${t}`}}t.getData=C},6488:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateKeywordUsage=t.validSchemaType=t.funcKeywordCode=t.macroKeywordCode=void 0;let n=r(4475),i=r(5018),o=r(8619),a=r(1885);function s(e){let{gen:t,data:r,it:i}=e;t.if(i.parentData,(()=>t.assign(r,n._`${i.parentData}[${i.parentDataProperty}]`)))}function l(e,t,r){if(void 0===r)throw Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword","function"==typeof r?{ref:r}:{ref:r,code:n.stringify(r)})}t.macroKeywordCode=function(e,t){let{gen:r,keyword:i,schema:o,parentSchema:a,it:s}=e,c=t.macro.call(s.self,o,a,s),u=l(r,i,c);!1!==s.opts.validateSchema&&s.self.validateSchema(c,!0);let p=r.name("valid");e.subschema({schema:c,schemaPath:n.nil,errSchemaPath:`${s.errSchemaPath}/${i}`,topSchemaRef:u,compositeRule:!0},p),e.pass(p,(()=>e.error(!0)))},t.funcKeywordCode=function(e,t){var r;let{gen:c,keyword:u,schema:p,parentSchema:d,$data:f,it:h}=e;!function({schemaEnv:e},t){if(t.async&&!e.$async)throw Error("async keyword in sync schema")}(h,t);let m=!f&&t.compile?t.compile.call(h.self,p,d,h):t.validate,g=l(c,u,m),y=c.let("valid");function v(r=(t.async?n._`await `:n.nil)){let a=h.opts.passContext?i.default.this:i.default.self,s=!("compile"in t&&!f||!1===t.schema);c.assign(y,n._`${r}${o.callValidateCode(e,g,a,s)}`,t.modifying)}function b(e){var r;c.if(n.not(null!==(r=t.valid)&&void 0!==r?r:y),e)}e.block$data(y,(function(){if(!1===t.errors)v(),t.modifying&&s(e),b((()=>e.error()));else{let r=t.async?function(){let e=c.let("ruleErrs",null);return c.try((()=>v(n._`await `)),(t=>c.assign(y,!1).if(n._`${t} instanceof ${h.ValidationError}`,(()=>c.assign(e,n._`${t}.errors`)),(()=>c.throw(t))))),e}():function(){let e=n._`${g}.errors`;return c.assign(e,null),v(n.nil),e}();t.modifying&&s(e),b((()=>function(e,t){let{gen:r}=e;r.if(n._`Array.isArray(${t})`,(()=>{r.assign(i.default.vErrors,n._`${i.default.vErrors} === null ? ${t} : ${i.default.vErrors}.concat(${t})`).assign(i.default.errors,n._`${i.default.vErrors}.length`),a.extendErrors(e)}),(()=>e.error()))}(e,r)))}})),e.ok(null!==(r=t.valid)&&void 0!==r?r:y)},t.validSchemaType=function(e,t,r=!1){return!t.length||t.some((t=>"array"===t?Array.isArray(e):"object"===t?e&&"object"==typeof e&&!Array.isArray(e):typeof e==t||r&&void 0===e))},t.validateKeywordUsage=function({schema:e,opts:t,self:r,errSchemaPath:n},i,o){if(Array.isArray(i.keyword)?!i.keyword.includes(o):i.keyword!==o)throw Error("ajv implementation error");let a=i.dependencies;if(null==a?void 0:a.some((t=>!Object.prototype.hasOwnProperty.call(e,t))))throw Error(`parent schema must have dependencies of ${o}: ${a.join(",")}`);if(i.validateSchema&&!i.validateSchema(e[o])){let e=`keyword "${o}" value is invalid at path "${n}": `+r.errorsText(i.validateSchema.errors);if("log"!==t.validateSchema)throw Error(e);r.logger.error(e)}}},4688:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.extendSubschemaMode=t.extendSubschemaData=t.getSubschema=void 0;let n=r(4475),i=r(6124);t.getSubschema=function(e,{keyword:t,schemaProp:r,schema:o,schemaPath:a,errSchemaPath:s,topSchemaRef:l}){if(void 0!==t&&void 0!==o)throw Error('both "keyword" and "schema" passed, only one allowed');if(void 0!==t){let o=e.schema[t];return void 0===r?{schema:o,schemaPath:n._`${e.schemaPath}${n.getProperty(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:o[r],schemaPath:n._`${e.schemaPath}${n.getProperty(t)}${n.getProperty(r)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${i.escapeFragment(r)}`}}if(void 0!==o){if(void 0===a||void 0===s||void 0===l)throw Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:o,schemaPath:a,topSchemaRef:l,errSchemaPath:s}}throw Error('either "keyword" or "schema" must be passed')},t.extendSubschemaData=function(e,t,{dataProp:r,dataPropType:o,data:a,dataTypes:s,propertyName:l}){if(void 0!==a&&void 0!==r)throw Error('both "data" and "dataProp" passed, only one allowed');let{gen:c}=t;if(void 0!==r){let{errorPath:a,dataPathArr:s,opts:l}=t;u(c.let("data",n._`${t.data}${n.getProperty(r)}`,!0)),e.errorPath=n.str`${a}${i.getErrorPath(r,o,l.jsPropertySyntax)}`,e.parentDataProperty=n._`${r}`,e.dataPathArr=[...s,e.parentDataProperty]}function u(r){e.data=r,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,r]}void 0!==a&&(u(a instanceof n.Name?a:c.let("data",a,!0)),void 0!==l&&(e.propertyName=l)),s&&(e.dataTypes=s)},t.extendSubschemaMode=function(e,{jtdDiscriminator:t,jtdMetadata:r,compositeRule:n,createErrors:i,allErrors:o}){void 0!==n&&(e.compositeRule=n),void 0!==i&&(e.createErrors=i),void 0!==o&&(e.allErrors=o),e.jtdDiscriminator=t,e.jtdMetadata=r}},3325:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=void 0;var n=r(1321);Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return n.KeywordCxt}});var i=r(4475);Object.defineProperty(t,"_",{enumerable:!0,get:function(){return i._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return i.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return i.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return i.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return i.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return i.CodeGen}});let o=r(8451),a=r(4143),s=r(3664),l=r(7805),c=r(4475),u=r(9826),p=r(7927),d=r(6124),f=r(425),h=["removeAdditional","useDefaults","coerceTypes"],m=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]);class g{constructor(e={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...function(e){var t,r,n,i,o,a,s,l,c,u,p,d,f,h,m,g,y,v,b,x,w,k;let _=e.strict,O=null===(t=e.code)||void 0===t?void 0:t.optimize,S=!0===O||void 0===O?1:O||0;return{strictSchema:null===(n=null!==(r=e.strictSchema)&&void 0!==r?r:_)||void 0===n||n,strictNumbers:null===(o=null!==(i=e.strictNumbers)&&void 0!==i?i:_)||void 0===o||o,strictTypes:null!==(s=null!==(a=e.strictTypes)&&void 0!==a?a:_)&&void 0!==s?s:"log",strictTuples:null!==(c=null!==(l=e.strictTuples)&&void 0!==l?l:_)&&void 0!==c?c:"log",strictRequired:null!==(p=null!==(u=e.strictRequired)&&void 0!==u?u:_)&&void 0!==p&&p,code:e.code?{...e.code,optimize:S}:{optimize:S},loopRequired:null!==(d=e.loopRequired)&&void 0!==d?d:200,loopEnum:null!==(f=e.loopEnum)&&void 0!==f?f:200,meta:null===(h=e.meta)||void 0===h||h,messages:null===(m=e.messages)||void 0===m||m,inlineRefs:null===(g=e.inlineRefs)||void 0===g||g,schemaId:null!==(y=e.schemaId)&&void 0!==y?y:"$id",addUsedSchema:null===(v=e.addUsedSchema)||void 0===v||v,validateSchema:null===(b=e.validateSchema)||void 0===b||b,validateFormats:null===(x=e.validateFormats)||void 0===x||x,unicodeRegExp:null===(w=e.unicodeRegExp)||void 0===w||w,int32range:null===(k=e.int32range)||void 0===k||k}}(e)};let{es5:t,lines:r}=this.opts.code;this.scope=new c.ValueScope({scope:{},prefixes:m,es5:t,lines:r}),this.logger=function(e){if(!1===e)return b;if(void 0===e)return console;if(e.log&&e.warn&&e.error)return e;throw Error("logger must implement log, warn and error methods")}(e.logger);let n=e.validateFormats;e.validateFormats=!1,this.RULES=s.getRules(),y.call(this,{errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},e,"NOT SUPPORTED"),y.call(this,{ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},e,"DEPRECATED","warn"),this._metaOpts=function(){let e={...this.opts};for(let t of h)delete e[t];return e}.call(this),e.formats&&function(){for(let e in this.opts.formats){let t=this.opts.formats[e];t&&this.addFormat(e,t)}}.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords&&function(e){if(Array.isArray(e))this.addVocabulary(e);else for(let t in this.logger.warn("keywords option as map is deprecated, pass array"),e){let r=e[t];r.keyword||(r.keyword=t),this.addKeyword(r)}}.call(this,e.keywords),"object"==typeof e.meta&&this.addMetaSchema(e.meta),function(){let e=this.opts.schemas;if(e)if(Array.isArray(e))this.addSchema(e);else for(let t in e)this.addSchema(e[t],t)}.call(this),e.validateFormats=n}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:e,meta:t,schemaId:r}=this.opts,n=f;"id"===r&&((n={...f}).id=n.$id,delete n.$id),t&&e&&this.addMetaSchema(n,n[r],!1)}defaultMeta(){let{meta:e,schemaId:t}=this.opts;return this.opts.defaultMeta="object"==typeof e?e[t]||e:void 0}validate(e,t){let r;if("string"==typeof e){if(!(r=this.getSchema(e)))throw Error(`no schema with key or ref "${e}"`)}else r=this.compile(e);let n=r(t);return"$async"in r||(this.errors=r.errors),n}compile(e,t){let r=this._addSchema(e,t);return r.validate||this._compileSchemaEnv(r)}compileAsync(e,t){if("function"!=typeof this.opts.loadSchema)throw Error("options.loadSchema should be a function");let{loadSchema:r}=this.opts;return n.call(this,e,t);async function n(e,t){await i.call(this,e.$schema);let r=this._addSchema(e,t);return r.validate||o.call(this,r)}async function i(e){e&&!this.getSchema(e)&&await n.call(this,{$ref:e},!0)}async function o(e){try{return this._compileSchemaEnv(e)}catch(t){if(!(t instanceof a.default))throw t;return s.call(this,t),await l.call(this,t.missingSchema),o.call(this,e)}}function s({missingSchema:e,missingRef:t}){if(this.refs[e])throw Error(`AnySchema ${e} is loaded but ${t} cannot be resolved`)}async function l(e){let r=await c.call(this,e);this.refs[e]||await i.call(this,r.$schema),this.refs[e]||this.addSchema(r,e,t)}async function c(e){let t=this._loading[e];if(t)return t;try{return await(this._loading[e]=r(e))}finally{delete this._loading[e]}}}addSchema(e,t,r,n=this.opts.validateSchema){if(Array.isArray(e)){for(let t of e)this.addSchema(t,void 0,r,n);return this}let i;if("object"==typeof e){let{schemaId:t}=this.opts;if(void 0!==(i=e[t])&&"string"!=typeof i)throw Error(`schema ${t} must be string`)}return t=u.normalizeId(t||i),this._checkUnique(t),this.schemas[t]=this._addSchema(e,r,t,n,!0),this}addMetaSchema(e,t,r=this.opts.validateSchema){return this.addSchema(e,t,!0,r),this}validateSchema(e,t){if("boolean"==typeof e)return!0;let r;if(void 0!==(r=e.$schema)&&"string"!=typeof r)throw Error("$schema must be a string");if(!(r=r||this.opts.defaultMeta||this.defaultMeta()))return this.logger.warn("meta-schema not available"),this.errors=null,!0;let n=this.validate(r,e);if(!n&&t){let e="schema is invalid: "+this.errorsText();if("log"!==this.opts.validateSchema)throw Error(e);this.logger.error(e)}return n}getSchema(e){let t;for(;"string"==typeof(t=v.call(this,e));)e=t;if(void 0===t){let{schemaId:r}=this.opts,n=new l.SchemaEnv({schema:{},schemaId:r});if(!(t=l.resolveSchema.call(this,n,e)))return;this.refs[e]=t}return t.validate||this._compileSchemaEnv(t)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let t=v.call(this,e);return"object"==typeof t&&this._cache.delete(t.schema),delete this.schemas[e],delete this.refs[e],this}case"object":{this._cache.delete(e);let t=e[this.opts.schemaId];return t&&(t=u.normalizeId(t),delete this.schemas[t],delete this.refs[t]),this}default:throw Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(let t of e)this.addKeyword(t);return this}addKeyword(e,t){let r;if("string"==typeof e)r=e,"object"==typeof t&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),t.keyword=r);else{if("object"!=typeof e||void 0!==t)throw Error("invalid addKeywords parameters");if(Array.isArray(r=(t=e).keyword)&&!r.length)throw Error("addKeywords: keyword must be string or non-empty array")}if(w.call(this,r,t),!t)return d.eachItem(r,(e=>k.call(this,e))),this;O.call(this,t);let n={...t,type:p.getJSONTypes(t.type),schemaType:p.getJSONTypes(t.schemaType)};return d.eachItem(r,0===n.type.length?e=>k.call(this,e,n):e=>n.type.forEach((t=>k.call(this,e,n,t)))),this}getKeyword(e){let t=this.RULES.all[e];return"object"==typeof t?t.definition:!!t}removeKeyword(e){let{RULES:t}=this;for(let r of(delete t.keywords[e],delete t.all[e],t.rules)){let t=r.rules.findIndex((t=>t.keyword===e));t>=0&&r.rules.splice(t,1)}return this}addFormat(e,t){return"string"==typeof t&&(t=RegExp(t)),this.formats[e]=t,this}errorsText(e=this.errors,{separator:t=", ",dataVar:r="data"}={}){return e&&0!==e.length?e.map((e=>`${r}${e.instancePath} ${e.message}`)).reduce(((e,r)=>e+t+r)):"No errors"}$dataMetaSchema(e,t){let r=this.RULES.all;for(let n of(e=JSON.parse(JSON.stringify(e)),t)){let t=n.split("/").slice(1),i=e;for(let e of t)i=i[e];for(let e in r){let t=r[e];if("object"!=typeof t)continue;let{$data:n}=t.definition,o=i[e];n&&o&&(i[e]=E(o))}}return e}_removeAllSchemas(e,t){for(let r in e){let n=e[r];t&&!t.test(r)||("string"==typeof n?delete e[r]:n&&!n.meta&&(this._cache.delete(n.schema),delete e[r]))}}_addSchema(e,t,r,n=this.opts.validateSchema,i=this.opts.addUsedSchema){let o,{schemaId:a}=this.opts;if("object"==typeof e)o=e[a];else{if(this.opts.jtd)throw Error("schema must be object");if("boolean"!=typeof e)throw Error("schema must be object or boolean")}let s=this._cache.get(e);if(void 0!==s)return s;let c=u.getSchemaRefs.call(this,e);return r=u.normalizeId(o||r),s=new l.SchemaEnv({schema:e,schemaId:a,meta:t,baseId:r,localRefs:c}),this._cache.set(s.schema,s),i&&!r.startsWith("#")&&(r&&this._checkUnique(r),this.refs[r]=s),n&&this.validateSchema(e,!0),s}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta?this._compileMetaSchema(e):l.compileSchema.call(this,e),!e.validate)throw Error("ajv implementation error");return e.validate}_compileMetaSchema(e){let t=this.opts;this.opts=this._metaOpts;try{l.compileSchema.call(this,e)}finally{this.opts=t}}}function y(e,t,r,n="error"){for(let i in e){let o=i;o in t&&this.logger[n](`${r}: option ${i}. ${e[o]}`)}}function v(e){return e=u.normalizeId(e),this.schemas[e]||this.refs[e]}t.default=g,g.ValidationError=o.default,g.MissingRefError=a.default;let b={log(){},warn(){},error(){}},x=/^[a-z_$][a-z0-9_$:-]*$/i;function w(e,t){let{RULES:r}=this;if(d.eachItem(e,(e=>{if(r.keywords[e])throw Error(`Keyword ${e} is already defined`);if(!x.test(e))throw Error(`Keyword ${e} has invalid name`)})),t&&t.$data&&!("code"in t)&&!("validate"in t))throw Error('$data keyword must have "code" or "validate" function')}function k(e,t,r){var n;let i=null==t?void 0:t.post;if(r&&i)throw Error('keyword with "post" flag cannot have "type"');let{RULES:o}=this,a=i?o.post:o.rules.find((({type:e})=>e===r));if(a||(a={type:r,rules:[]},o.rules.push(a)),o.keywords[e]=!0,!t)return;let s={keyword:e,definition:{...t,type:p.getJSONTypes(t.type),schemaType:p.getJSONTypes(t.schemaType)}};t.before?_.call(this,a,s,t.before):a.rules.push(s),o.all[e]=s,null===(n=t.implements)||void 0===n||n.forEach((e=>this.addKeyword(e)))}function _(e,t,r){let n=e.rules.findIndex((e=>e.keyword===r));n>=0?e.rules.splice(n,0,t):(e.rules.push(t),this.logger.warn(`rule ${r} is not defined`))}function O(e){let{metaSchema:t}=e;void 0!==t&&(e.$data&&this.opts.$data&&(t=E(t)),e.validateSchema=this.compile(t,!0))}let S={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function E(e){return{anyOf:[e,S]}}},412:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4063);n.code='require("ajv/dist/runtime/equal").default',t.default=n},5872:function(e,t){"use strict";function r(e){let t,r=e.length,n=0,i=0;for(;i=55296&&t<=56319&&i{var a;return a=o,void r.forRange("i",t.length,c,(t=>{e.subschema({keyword:s,dataProp:t,dataPropType:i.Type.Num},a),l.allErrors||r.if(n.not(a),(()=>r.break()))}))})),e.ok(o)}}t.validateAdditionalItems=o,t.default={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:{message:({params:{len:e}})=>n.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>n._`{limit: ${e}}`},code(e){let{parentSchema:t,it:r}=e,{items:n}=t;Array.isArray(n)?o(e,n):i.checkStrictMode(r,'"additionalItems" is ignored when "items" is not an array of schemas')}}},1422:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(8619),i=r(4475),o=r(5018),a=r(6124);t.default={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:{message:"must NOT have additional properties",params:({params:e})=>i._`{additionalProperty: ${e.additionalProperty}}`},code(e){let{gen:t,parentSchema:r,data:s,errsCount:l,it:c}=e,{schema:u=c.opts.defaultAdditionalProperties}=e;if(!l)throw Error("ajv implementation error");let{allErrors:p,opts:d}=c;if(c.props=!0,"all"!==d.removeAdditional&&a.alwaysValidSchema(c,u))return;let f=n.allSchemaProperties(r.properties),h=n.allSchemaProperties(r.patternProperties);function m(e){t.code(i._`delete ${s}[${e}]`)}function g(r){if("all"===d.removeAdditional||d.removeAdditional&&!1===u)m(r);else{if(!1===u)return e.setParams({additionalProperty:r}),e.error(),void(p||t.break());if("object"==typeof u&&!a.alwaysValidSchema(c,u)){let n=t.name("valid");"failing"===d.removeAdditional?(y(r,n,!1),t.if(i.not(n),(()=>{e.reset(),m(r)}))):(y(r,n),p||t.if(i.not(n),(()=>t.break())))}}}function y(t,r,n){let i={keyword:"additionalProperties",dataProp:t,dataPropType:a.Type.Str};!1===n&&Object.assign(i,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(i,r)}t.forIn("key",s,(o=>{f.length||h.length?t.if(function(o){let s;if(f.length>8){let e=a.schemaRefOrVal(c,r.properties,"properties");s=n.isOwnProperty(t,e,o)}else s=f.length?i.or(...f.map((e=>i._`${o} === ${e}`))):i.nil;return h.length&&(s=i.or(s,...h.map((t=>i._`${n.usePattern(e,t)}.test(${o})`)))),i.not(s)}(o),(()=>g(o))):g(o)})),e.ok(i._`${l} === ${o.default.errors}`)}}},5716:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(6124);t.default={keyword:"allOf",schemaType:"array",code(e){let{gen:t,schema:r,it:i}=e;if(!Array.isArray(r))throw Error("ajv implementation error");let o=t.name("valid");r.forEach(((t,r)=>{if(n.alwaysValidSchema(i,t))return;let a=e.subschema({keyword:"allOf",schemaProp:r},o);e.ok(o),e.mergeEvaluated(a)}))}}},1668:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:r(8619).validateUnion,error:{message:"must match a schema in anyOf"}};t.default=n},9564:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475),i=r(6124);t.default={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:{message:({params:{min:e,max:t}})=>void 0===t?n.str`must contain at least ${e} valid item(s)`:n.str`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>void 0===t?n._`{minContains: ${e}}`:n._`{minContains: ${e}, maxContains: ${t}}`},code(e){let t,r,{gen:o,schema:a,parentSchema:s,data:l,it:c}=e,{minContains:u,maxContains:p}=s;c.opts.next?(t=void 0===u?1:u,r=p):t=1;let d=o.const("len",n._`${l}.length`);if(e.setParams({min:t,max:r}),void 0===r&&0===t)return void i.checkStrictMode(c,'"minContains" == 0 without "maxContains": "contains" keyword ignored');if(void 0!==r&&t>r)return i.checkStrictMode(c,'"minContains" > "maxContains" is always invalid'),void e.fail();if(i.alwaysValidSchema(c,a)){let i=n._`${d} >= ${t}`;return void 0!==r&&(i=n._`${i} && ${d} <= ${r}`),void e.pass(i)}c.items=!0;let f=o.name("valid");if(void 0===r&&1===t)h(f,(()=>o.if(f,(()=>o.break()))));else{o.let(f,!1);let e=o.name("_valid"),i=o.let("count",0);h(e,(()=>o.if(e,(()=>{var e;return e=i,o.code(n._`${e}++`),void(void 0===r?o.if(n._`${e} >= ${t}`,(()=>o.assign(f,!0).break())):(o.if(n._`${e} > ${r}`,(()=>o.assign(f,!1).break())),1===t?o.assign(f,!0):o.if(n._`${e} >= ${t}`,(()=>o.assign(f,!0)))))}))))}function h(t,r){o.forRange("i",0,d,(n=>{e.subschema({keyword:"contains",dataProp:n,dataPropType:i.Type.Num,compositeRule:!0},t),r()}))}e.result(f,(()=>e.reset()))}}},1117:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateSchemaDeps=t.validatePropertyDeps=t.error=void 0;let n=r(4475),i=r(6124),o=r(8619);t.error={message:({params:{property:e,depsCount:t,deps:r}})=>n.str`must have ${1===t?"property":"properties"} ${r} when property ${e} is present`,params:({params:{property:e,depsCount:t,deps:r,missingProperty:i}})=>n._`{property: ${e}, + missingProperty: ${i}, + depsCount: ${t}, + deps: ${r}}`};let a={keyword:"dependencies",type:"object",schemaType:"object",error:t.error,code(e){let[t,r]=function({schema:e}){let t={},r={};for(let n in e)"__proto__"!==n&&((Array.isArray(e[n])?t:r)[n]=e[n]);return[t,r]}(e);s(e,t),l(e,r)}};function s(e,t=e.schema){let{gen:r,data:i,it:a}=e;if(0===Object.keys(t).length)return;let s=r.let("missing");for(let l in t){let c=t[l];if(0===c.length)continue;let u=o.propertyInData(r,i,l,a.opts.ownProperties);e.setParams({property:l,depsCount:c.length,deps:c.join(", ")}),a.allErrors?r.if(u,(()=>{for(let t of c)o.checkReportMissingProp(e,t)})):(r.if(n._`${u} && (${o.checkMissingProp(e,c,s)})`),o.reportMissingProp(e,s),r.else())}}function l(e,t=e.schema){let{gen:r,data:n,keyword:a,it:s}=e,l=r.name("valid");for(let c in t)i.alwaysValidSchema(s,t[c])||(r.if(o.propertyInData(r,n,c,s.opts.ownProperties),(()=>{let t=e.subschema({keyword:a,schemaProp:c},l);e.mergeValidEvaluated(t,l)}),(()=>r.var(l,!0))),e.ok(l))}t.validatePropertyDeps=s,t.validateSchemaDeps=l,t.default=a},5184:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475),i=r(6124);function o(e,t){let r=e.schema[t];return void 0!==r&&!i.alwaysValidSchema(e,r)}t.default={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:{message:({params:e})=>n.str`must match "${e.ifClause}" schema`,params:({params:e})=>n._`{failingKeyword: ${e.ifClause}}`},code(e){let{gen:t,parentSchema:r,it:a}=e;void 0===r.then&&void 0===r.else&&i.checkStrictMode(a,'"if" without "then" and "else" is ignored');let s=o(a,"then"),l=o(a,"else");if(!s&&!l)return;let c=t.let("valid",!0),u=t.name("_valid");if(function(){let t=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},u);e.mergeEvaluated(t)}(),e.reset(),s&&l){let r=t.let("ifClause");e.setParams({ifClause:r}),t.if(u,p("then",r),p("else",r))}else s?t.if(u,p("then")):t.if(n.not(u),p("else"));function p(r,i){return()=>{let o=e.subschema({keyword:r},u);t.assign(c,u),e.mergeValidEvaluated(o,c),i?t.assign(i,n._`${r}`):e.setParams({ifClause:r})}}e.pass(c,(()=>e.error(!0)))}}},9616:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(3074),i=r(6988),o=r(6348),a=r(9822),s=r(9564),l=r(1117),c=r(4002),u=r(1422),p=r(9690),d=r(9883),f=r(8435),h=r(1668),m=r(9684),g=r(5716),y=r(5184),v=r(5642);t.default=function(e=!1){let t=[f.default,h.default,m.default,g.default,y.default,v.default,c.default,u.default,l.default,p.default,d.default];return e?t.push(i.default,a.default):t.push(n.default,o.default),t.push(s.default),t}},6348:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateTuple=void 0;let n=r(4475),i=r(6124),o=r(8619);function a(e,t,r=e.schema){let{gen:o,parentSchema:a,data:s,keyword:l,it:c}=e;!function(e){let{opts:n,errSchemaPath:o}=c,a=r.length,s=a===e.minItems&&(a===e.maxItems||!1===e[t]);if(n.strictTuples&&!s){let e=`"${l}" is ${a}-tuple, but minItems or maxItems/${t} are not specified or different at path "${o}"`;i.checkStrictMode(c,e,n.strictTuples)}}(a),c.opts.unevaluated&&r.length&&!0!==c.items&&(c.items=i.mergeEvaluated.items(o,r.length,c.items));let u=o.name("valid"),p=o.const("len",n._`${s}.length`);r.forEach(((t,r)=>{i.alwaysValidSchema(c,t)||(o.if(n._`${p} > ${r}`,(()=>e.subschema({keyword:l,schemaProp:r,dataProp:r},u))),e.ok(u))}))}t.validateTuple=a,t.default={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){let{schema:t,it:r}=e;if(Array.isArray(t))return a(e,"additionalItems",t);r.items=!0,i.alwaysValidSchema(r,t)||e.ok(o.validateArray(e))}}},9822:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475),i=r(6124),o=r(8619),a=r(3074);t.default={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:{message:({params:{len:e}})=>n.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>n._`{limit: ${e}}`},code(e){let{schema:t,parentSchema:r,it:n}=e,{prefixItems:s}=r;n.items=!0,i.alwaysValidSchema(n,t)||(s?a.validateAdditionalItems(e,s):e.ok(o.validateArray(e)))}}},8435:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(6124);t.default={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){let{gen:t,schema:r,it:i}=e;if(n.alwaysValidSchema(i,r))return void e.fail();let o=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},o),e.result(o,(()=>e.error()),(()=>e.reset()))},error:{message:"must NOT be valid"}}},9684:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475),i=r(6124);t.default={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:{message:"must match exactly one schema in oneOf",params:({params:e})=>n._`{passingSchemas: ${e.passing}}`},code(e){let{gen:t,schema:r,parentSchema:o,it:a}=e;if(!Array.isArray(r))throw Error("ajv implementation error");if(a.opts.discriminator&&o.discriminator)return;let s=r,l=t.let("valid",!1),c=t.let("passing",null),u=t.name("_valid");e.setParams({passing:c}),t.block((function(){s.forEach(((r,o)=>{let s;i.alwaysValidSchema(a,r)?t.var(u,!0):s=e.subschema({keyword:"oneOf",schemaProp:o,compositeRule:!0},u),o>0&&t.if(n._`${u} && ${l}`).assign(l,!1).assign(c,n._`[${c}, ${o}]`).else(),t.if(u,(()=>{t.assign(l,!0),t.assign(c,o),s&&e.mergeEvaluated(s,n.Name)}))}))})),e.result(l,(()=>e.reset()),(()=>e.error(!0)))}}},9883:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(8619),i=r(4475),o=r(6124),a=r(6124);t.default={keyword:"patternProperties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,data:s,parentSchema:l,it:c}=e,{opts:u}=c,p=n.allSchemaProperties(r),d=p.filter((e=>o.alwaysValidSchema(c,r[e])));if(0===p.length||d.length===p.length&&(!c.opts.unevaluated||!0===c.props))return;let f=u.strictSchema&&!u.allowMatchingProperties&&l.properties,h=t.name("valid");!0===c.props||c.props instanceof i.Name||(c.props=a.evaluatedPropsToName(t,c.props));let{props:m}=c;function g(e){for(let t in f)RegExp(e).test(t)&&o.checkStrictMode(c,`property ${t} matches pattern ${e} (use allowMatchingProperties)`)}function y(r){t.forIn("key",s,(o=>{t.if(i._`${n.usePattern(e,r)}.test(${o})`,(()=>{let n=d.includes(r);n||e.subschema({keyword:"patternProperties",schemaProp:r,dataProp:o,dataPropType:a.Type.Str},h),c.opts.unevaluated&&!0!==m?t.assign(i._`${m}[${o}]`,!0):n||c.allErrors||t.if(i.not(h),(()=>t.break()))}))}))}!function(){for(let e of p)f&&g(e),c.allErrors?y(e):(t.var(h,!0),y(e),t.if(h))}()}}},6988:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(6348);t.default={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:e=>n.validateTuple(e,"items")}},9690:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(1321),i=r(8619),o=r(6124),a=r(1422);t.default={keyword:"properties",type:"object",schemaType:"object",code(e){let{gen:t,schema:r,parentSchema:s,data:l,it:c}=e;("all"===c.opts.removeAdditional&&void 0===s.additionalProperties||!1===c.opts.defaultAdditionalProperties)&&a.default.code(new n.KeywordCxt(c,a.default,"additionalProperties"));let u=i.allSchemaProperties(r);for(let e of u)c.definedProperties.add(e);c.opts.unevaluated&&u.length&&!0!==c.props&&(c.props=o.mergeEvaluated.props(t,o.toHash(u),c.props));let p=u.filter((e=>!o.alwaysValidSchema(c,r[e])));if(0===p.length)return;let d=t.name("valid");for(let r of p)f(r)?h(r):(t.if(i.propertyInData(t,l,r,c.opts.ownProperties)),h(r),c.allErrors||t.else().var(d,!0),t.endIf()),e.it.definedProperties.add(r),e.ok(d);function f(e){return c.opts.useDefaults&&!c.compositeRule&&void 0!==r[e].default}function h(t){e.subschema({keyword:"properties",schemaProp:t,dataProp:t},d)}}}},4002:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475),i=r(6124);t.default={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:{message:"property name must be valid",params:({params:e})=>n._`{propertyName: ${e.propertyName}}`},code(e){let{gen:t,schema:r,data:o,it:a}=e;if(i.alwaysValidSchema(a,r))return;let s=t.name("valid");t.forIn("key",o,(r=>{e.setParams({propertyName:r}),e.subschema({keyword:"propertyNames",data:r,dataTypes:["string"],propertyName:r,compositeRule:!0},s),t.if(n.not(s),(()=>{e.error(!0),a.allErrors||t.break()}))})),e.ok(s)}}},5642:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(6124);t.default={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:r}){void 0===t.if&&n.checkStrictMode(r,`"${e}" without "if" is ignored`)}}},8619:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateUnion=t.validateArray=t.usePattern=t.callValidateCode=t.schemaProperties=t.allSchemaProperties=t.noPropertyInData=t.propertyInData=t.isOwnProperty=t.hasPropFunc=t.reportMissingProp=t.checkMissingProp=t.checkReportMissingProp=void 0;let n=r(4475),i=r(6124),o=r(5018);function a(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:n._`Object.prototype.hasOwnProperty`})}function s(e,t,r){return n._`${a(e)}.call(${t}, ${r})`}function l(e,t,r,i){let o=n._`${t}${n.getProperty(r)} === undefined`;return i?n.or(o,n.not(s(e,t,r))):o}function c(e){return e?Object.keys(e).filter((e=>"__proto__"!==e)):[]}t.checkReportMissingProp=function(e,t){let{gen:r,data:i,it:o}=e;r.if(l(r,i,t,o.opts.ownProperties),(()=>{e.setParams({missingProperty:n._`${t}`},!0),e.error()}))},t.checkMissingProp=function({gen:e,data:t,it:{opts:r}},i,o){return n.or(...i.map((i=>n.and(l(e,t,i,r.ownProperties),n._`${o} = ${i}`))))},t.reportMissingProp=function(e,t){e.setParams({missingProperty:t},!0),e.error()},t.hasPropFunc=a,t.isOwnProperty=s,t.propertyInData=function(e,t,r,i){let o=n._`${t}${n.getProperty(r)} !== undefined`;return i?n._`${o} && ${s(e,t,r)}`:o},t.noPropertyInData=l,t.allSchemaProperties=c,t.schemaProperties=function(e,t){return c(t).filter((r=>!i.alwaysValidSchema(e,t[r])))},t.callValidateCode=function({schemaCode:e,data:t,it:{gen:r,topSchemaRef:i,schemaPath:a,errorPath:s},it:l},c,u,p){let d=p?n._`${e}, ${t}, ${i}${a}`:t,f=[[o.default.instancePath,n.strConcat(o.default.instancePath,s)],[o.default.parentData,l.parentData],[o.default.parentDataProperty,l.parentDataProperty],[o.default.rootData,o.default.rootData]];l.opts.dynamicRef&&f.push([o.default.dynamicAnchors,o.default.dynamicAnchors]);let h=n._`${d}, ${r.object(...f)}`;return u!==n.nil?n._`${c}.call(${u}, ${h})`:n._`${c}(${h})`},t.usePattern=function({gen:e,it:{opts:t}},r){let i=t.unicodeRegExp?"u":"";return e.scopeValue("pattern",{key:r,ref:RegExp(r,i),code:n._`new RegExp(${r}, ${i})`})},t.validateArray=function(e){let{gen:t,data:r,keyword:o,it:a}=e,s=t.name("valid");if(a.allErrors){let e=t.let("valid",!0);return l((()=>t.assign(e,!1))),e}return t.var(s,!0),l((()=>t.break())),s;function l(a){let l=t.const("len",n._`${r}.length`);t.forRange("i",0,l,(r=>{e.subschema({keyword:o,dataProp:r,dataPropType:i.Type.Num},s),t.if(n.not(s),a)}))}},t.validateUnion=function(e){let{gen:t,schema:r,keyword:o,it:a}=e;if(!Array.isArray(r))throw Error("ajv implementation error");if(r.some((e=>i.alwaysValidSchema(a,e)))&&!a.opts.unevaluated)return;let s=t.let("valid",!1),l=t.name("_valid");t.block((()=>r.forEach(((r,i)=>{let a=e.subschema({keyword:o,schemaProp:i,compositeRule:!0},l);t.assign(s,n._`${s} || ${l}`),e.mergeValidEvaluated(a,l)||t.if(n.not(s))})))),e.result(s,(()=>e.reset()),(()=>e.error(!0)))}},5060:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={keyword:"id",code(){throw Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}}},8223:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(5060),i=r(4028),o=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",n.default,i.default];t.default=o},4028:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.callRef=t.getValidate=void 0;let n=r(4143),i=r(8619),o=r(4475),a=r(5018),s=r(7805),l=r(6124);function c(e,t){let{gen:r}=e;return t.validate?r.scopeValue("validate",{ref:t.validate}):o._`${r.scopeValue("wrapper",{ref:t})}.validate`}function u(e,t,r,n){let{gen:s,it:c}=e,{allErrors:u,schemaEnv:p,opts:d}=c,f=d.passContext?a.default.this:o.nil;function h(e){let t=o._`${e}.errors`;s.assign(a.default.vErrors,o._`${a.default.vErrors} === null ? ${t} : ${a.default.vErrors}.concat(${t})`),s.assign(a.default.errors,o._`${a.default.vErrors}.length`)}function m(e){var t;if(!c.opts.unevaluated)return;let n=null===(t=null==r?void 0:r.validate)||void 0===t?void 0:t.evaluated;if(!0!==c.props)if(n&&!n.dynamicProps)void 0!==n.props&&(c.props=l.mergeEvaluated.props(s,n.props,c.props));else{let t=s.var("props",o._`${e}.evaluated.props`);c.props=l.mergeEvaluated.props(s,t,c.props,o.Name)}if(!0!==c.items)if(n&&!n.dynamicItems)void 0!==n.items&&(c.items=l.mergeEvaluated.items(s,n.items,c.items));else{let t=s.var("items",o._`${e}.evaluated.items`);c.items=l.mergeEvaluated.items(s,t,c.items,o.Name)}}n?function(){if(!p.$async)throw Error("async schema referenced by sync schema");let r=s.let("valid");s.try((()=>{s.code(o._`await ${i.callValidateCode(e,t,f)}`),m(t),u||s.assign(r,!0)}),(e=>{s.if(o._`!(${e} instanceof ${c.ValidationError})`,(()=>s.throw(e))),h(e),u||s.assign(r,!1)})),e.ok(r)}():function(){let r=s.name("visitedNodes");s.code(o._`const ${r} = visitedNodesForRef.get(${t}) || new Set()`),s.if(o._`!${r}.has(${e.data})`,(()=>{s.code(o._`visitedNodesForRef.set(${t}, ${r})`),s.code(o._`const dataNode = ${e.data}`),s.code(o._`${r}.add(dataNode)`);let n=e.result(i.callValidateCode(e,t,f),(()=>m(t)),(()=>h(t)));return s.code(o._`${r}.delete(dataNode)`),n}))}()}t.getValidate=c,t.callRef=u,t.default={keyword:"$ref",schemaType:"string",code(e){let{gen:t,schema:r,it:i}=e,{baseId:a,schemaEnv:l,validateName:p,opts:d,self:f}=i,{root:h}=l;if(("#"===r||"#/"===r)&&a===h.baseId)return function(){if(l===h)return u(e,p,l,l.$async);let r=t.scopeValue("root",{ref:h});return u(e,o._`${r}.validate`,h,h.$async)}();let m=s.resolveRef.call(f,h,a,r);if(void 0===m)throw new n.default(a,r);return m instanceof s.SchemaEnv?function(t){let r=c(e,t);u(e,r,t,t.$async)}(m):function(n){let i=t.scopeValue("schema",!0===d.code.source?{ref:n,code:o.stringify(n)}:{ref:n}),a=t.name("valid"),s=e.subschema({schema:n,dataTypes:[],schemaPath:o.nil,topSchemaRef:i,errSchemaPath:r},a);e.mergeEvaluated(s),e.ok(a)}(m)}}},5522:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475),i=r(6545);t.default={keyword:"discriminator",type:"object",schemaType:"object",error:{message:({params:{discrError:e,tagName:t}})=>e===i.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:r}})=>n._`{error: ${e}, tag: ${r}, tagValue: ${t}}`},code(e){let{gen:t,data:r,schema:o,parentSchema:a,it:s}=e,{oneOf:l}=a;if(!s.opts.discriminator)throw Error("discriminator: requires discriminator option");let c=o.propertyName;if("string"!=typeof c)throw Error("discriminator: requires propertyName");if(!l)throw Error("discriminator: requires oneOf keyword");let u=t.let("valid",!1),p=t.const("tag",n._`${r}${n.getProperty(c)}`);function d(r){let i=t.name("valid"),o=e.subschema({keyword:"oneOf",schemaProp:r},i);return e.mergeEvaluated(o,n.Name),i}function f(e){return e.hasOwnProperty("$ref")}t.if(n._`typeof ${p} == "string"`,(()=>function(){let r=function(){var e;let t={},r=i(a),n=!0;for(let t=0;te.error(!1,{discrError:i.DiscrError.Tag,tag:p,tagName:c}))),e.ok(u)}}},6545:function(e,t){"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.DiscrError=void 0,(r=t.DiscrError||(t.DiscrError={})).Tag="tag",r.Mapping="mapping"},6479:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(8223),i=r(3799),o=r(9616),a=r(3815),s=r(4826),l=[n.default,i.default,o.default(),a.default,s.metadataVocabulary,s.contentVocabulary];t.default=l},157:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475);t.default={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:{message:({schemaCode:e})=>n.str`must match format "${e}"`,params:({schemaCode:e})=>n._`{format: ${e}}`},code(e,t){let{gen:r,data:i,$data:o,schema:a,schemaCode:s,it:l}=e,{opts:c,errSchemaPath:u,schemaEnv:p,self:d}=l;c.validateFormats&&(o?function(){let o=r.scopeValue("formats",{ref:d.formats,code:c.code.formats}),a=r.const("fDef",n._`${o}[${s}]`),l=r.let("fType"),u=r.let("format");r.if(n._`typeof ${a} == "object" && !(${a} instanceof RegExp)`,(()=>r.assign(l,n._`${a}.type || "string"`).assign(u,n._`${a}.validate`)),(()=>r.assign(l,n._`"string"`).assign(u,a))),e.fail$data(n.or(!1===c.strictSchema?n.nil:n._`${s} && !${u}`,function(){let e=p.$async?n._`(${a}.async ? await ${u}(${i}) : ${u}(${i}))`:n._`${u}(${i})`,r=n._`(typeof ${u} == "function" ? ${e} : ${u}.test(${i}))`;return n._`${u} && ${u} !== true && ${l} === ${t} && !${r}`}()))}():function(){let o=d.formats[a];if(!o)return void function(){if(!1!==c.strictSchema)throw Error(e());function e(){return`unknown format "${a}" ignored in schema at path "${u}"`}d.logger.warn(e())}();if(!0===o)return;let[s,l,f]=function(e){let t=e instanceof RegExp?n.regexpCode(e):c.code.formats?n._`${c.code.formats}${n.getProperty(a)}`:void 0,i=r.scopeValue("formats",{key:a,ref:e,code:t});return"object"!=typeof e||e instanceof RegExp?["string",e,i]:[e.type||"string",e.validate,n._`${i}.validate`]}(o);s===t&&e.pass(function(){if("object"==typeof o&&!(o instanceof RegExp)&&o.async){if(!p.$async)throw Error("async format in sync schema");return n._`await ${f}(${i})`}return"function"==typeof l?n._`${f}(${i})`:n._`${f}.test(${i})`}())}())}}},3815:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=[r(157).default];t.default=n},4826:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.contentVocabulary=t.metadataVocabulary=void 0,t.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"],t.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]},7535:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475),i=r(6124),o=r(412);t.default={keyword:"const",$data:!0,error:{message:"must be equal to constant",params:({schemaCode:e})=>n._`{allowedValue: ${e}}`},code(e){let{gen:t,data:r,$data:a,schemaCode:s,schema:l}=e;a||l&&"object"==typeof l?e.fail$data(n._`!${i.useFunc(t,o.default)}(${r}, ${s})`):e.fail(n._`${l} !== ${r}`)}}},4147:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475),i=r(6124),o=r(412);t.default={keyword:"enum",schemaType:"array",$data:!0,error:{message:"must be equal to one of the allowed values",params:({schemaCode:e})=>n._`{allowedValues: ${e}}`},code(e){let{gen:t,data:r,$data:a,schema:s,schemaCode:l,it:c}=e;if(!a&&0===s.length)throw Error("enum must have non-empty array");let u,p=s.length>=c.opts.loopEnum,d=i.useFunc(t,o.default);if(p||a)u=t.let("valid"),e.block$data(u,(function(){t.assign(u,!1),t.forOf("v",l,(e=>t.if(n._`${d}(${r}, ${e})`,(()=>t.assign(u,!0).break()))))}));else{if(!Array.isArray(s))throw Error("ajv implementation error");let e=t.const("vSchema",l);u=n.or(...s.map(((t,i)=>function(e,t){let i=s[t];return"object"==typeof i&&null!==i?n._`${d}(${r}, ${e}[${t}])`:n._`${r} === ${i}`}(e,i))))}e.pass(u)}}},3799:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(9640),i=r(7692),o=r(3765),a=r(8582),s=r(6711),l=r(7835),c=r(8950),u=r(7326),p=r(7535),d=r(4147),f=[n.default,i.default,o.default,a.default,s.default,l.default,c.default,u.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},p.default,d.default];t.default=f},8950:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475);t.default={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:{message:({keyword:e,schemaCode:t})=>n.str`must NOT have ${"maxItems"===e?"more":"fewer"} than ${t} items`,params:({schemaCode:e})=>n._`{limit: ${e}}`},code(e){let{keyword:t,data:r,schemaCode:i}=e,o="maxItems"===t?n.operators.GT:n.operators.LT;e.fail$data(n._`${r}.length ${o} ${i}`)}}},3765:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475),i=r(6124),o=r(5872);t.default={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:{message:({keyword:e,schemaCode:t})=>n.str`must NOT have ${"maxLength"===e?"more":"fewer"} than ${t} characters`,params:({schemaCode:e})=>n._`{limit: ${e}}`},code(e){let{keyword:t,data:r,schemaCode:a,it:s}=e,l="maxLength"===t?n.operators.GT:n.operators.LT,c=!1===s.opts.unicode?n._`${r}.length`:n._`${i.useFunc(e.gen,o.default)}(${r})`;e.fail$data(n._`${c} ${l} ${a}`)}}},9640:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475),i=n.operators,o={maximum:{okStr:"<=",ok:i.LTE,fail:i.GT},minimum:{okStr:">=",ok:i.GTE,fail:i.LT},exclusiveMaximum:{okStr:"<",ok:i.LT,fail:i.GTE},exclusiveMinimum:{okStr:">",ok:i.GT,fail:i.LTE}},a={keyword:Object.keys(o),type:"number",schemaType:"number",$data:!0,error:{message:({keyword:e,schemaCode:t})=>n.str`must be ${o[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>n._`{comparison: ${o[e].okStr}, limit: ${t}}`},code(e){let{keyword:t,data:r,schemaCode:i}=e;e.fail$data(n._`${r} ${o[t].fail} ${i} || isNaN(${r})`)}};t.default=a},6711:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475);t.default={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:{message:({keyword:e,schemaCode:t})=>n.str`must NOT have ${"maxProperties"===e?"more":"fewer"} than ${t} items`,params:({schemaCode:e})=>n._`{limit: ${e}}`},code(e){let{keyword:t,data:r,schemaCode:i}=e,o="maxProperties"===t?n.operators.GT:n.operators.LT;e.fail$data(n._`Object.keys(${r}).length ${o} ${i}`)}}},7692:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(4475);t.default={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:{message:({schemaCode:e})=>n.str`must be multiple of ${e}`,params:({schemaCode:e})=>n._`{multipleOf: ${e}}`},code(e){let{gen:t,data:r,schemaCode:i,it:o}=e,a=o.opts.multipleOfPrecision,s=t.let("res"),l=a?n._`Math.abs(Math.round(${s}) - ${s}) > 1e-${a}`:n._`${s} !== parseInt(${s})`;e.fail$data(n._`(${i} === 0 || (${s} = ${r}/${i}, ${l}))`)}}},8582:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(8619),i=r(4475);t.default={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:{message:({schemaCode:e})=>i.str`must match pattern "${e}"`,params:({schemaCode:e})=>i._`{pattern: ${e}}`},code(e){let{data:t,$data:r,schema:o,schemaCode:a,it:s}=e,l=s.opts.unicodeRegExp?"u":"",c=r?i._`(new RegExp(${a}, ${l}))`:n.usePattern(e,o);e.fail$data(i._`!${c}.test(${t})`)}}},7835:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(8619),i=r(4475),o=r(6124);t.default={keyword:"required",type:"object",schemaType:"array",$data:!0,error:{message:({params:{missingProperty:e}})=>i.str`must have required property '${e}'`,params:({params:{missingProperty:e}})=>i._`{missingProperty: ${e}}`},code(e){let{gen:t,schema:r,schemaCode:a,data:s,$data:l,it:c}=e,{opts:u}=c;if(!l&&0===r.length)return;let p=r.length>=u.loopRequired;if(c.allErrors?function(){if(p||l)e.block$data(i.nil,d);else for(let t of r)n.checkReportMissingProp(e,t)}():function(){let o=t.let("missing");if(p||l){let r=t.let("valid",!0);e.block$data(r,(()=>{var l,c;return l=o,c=r,e.setParams({missingProperty:l}),void t.forOf(l,a,(()=>{t.assign(c,n.propertyInData(t,s,l,u.ownProperties)),t.if(i.not(c),(()=>{e.error(),t.break()}))}),i.nil)})),e.ok(r)}else t.if(n.checkMissingProp(e,r,o)),n.reportMissingProp(e,o),t.else()}(),u.strictRequired){let t=e.parentSchema.properties,{definedProperties:n}=e.it;for(let e of r)if(void 0===(null==t?void 0:t[e])&&!n.has(e)){let t=`required property "${e}" is not defined at "${c.schemaEnv.baseId+c.errSchemaPath}" (strictRequired)`;o.checkStrictMode(c,t,c.opts.strictRequired)}}function d(){t.forOf("prop",a,(r=>{e.setParams({missingProperty:r}),t.if(n.noPropertyInData(t,s,r,u.ownProperties),(()=>e.error()))}))}}}},7326:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});let n=r(7927),i=r(4475),o=r(6124),a=r(412);t.default={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:{message:({params:{i:e,j:t}})=>i.str`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>i._`{i: ${e}, j: ${t}}`},code(e){let{gen:t,data:r,$data:s,schema:l,parentSchema:c,schemaCode:u,it:p}=e;if(!s&&!l)return;let d=t.let("valid"),f=c.items?n.getSchemaTypes(c.items):[];function h(o,a){let s=t.name("item"),l=n.checkDataTypes(f,s,p.opts.strictNumbers,n.DataType.Wrong),c=t.const("indices",i._`{}`);t.for(i._`;${o}--;`,(()=>{t.let(s,i._`${r}[${o}]`),t.if(l,i._`continue`),f.length>1&&t.if(i._`typeof ${s} == "string"`,i._`${s} += "_"`),t.if(i._`typeof ${c}[${s}] == "number"`,(()=>{t.assign(a,i._`${c}[${s}]`),e.error(),t.assign(d,!1).break()})).code(i._`${c}[${s}] = ${o}`)}))}function m(n,s){let l=o.useFunc(t,a.default),c=t.name("outer");t.label(c).for(i._`;${n}--;`,(()=>t.for(i._`${s} = ${n}; ${s}--;`,(()=>t.if(i._`${l}(${r}[${n}], ${r}[${s}])`,(()=>{e.error(),t.assign(d,!1).break(c)}))))))}e.block$data(d,(function(){let n=t.let("i",i._`${r}.length`),o=t.let("j");e.setParams({i:n,j:o}),t.assign(d,!0),t.if(i._`${n} > 1`,(()=>(f.length>0&&!f.some((e=>"object"===e||"array"===e))?h:m)(n,o)))}),i._`${u} === false`),e.ok(d)}}},4029:function(e){"use strict";var t=e.exports=function(e,r,n){"function"==typeof r&&(n=r,r={}),function e(r,n,i,o,a,s,l,c,u,p){if(o&&"object"==typeof o&&!Array.isArray(o)){for(var d in n(o,a,s,l,c,u,p),o){var f=o[d];if(Array.isArray(f)){if(d in t.arrayKeywords)for(var h=0;h0;)if(a=s.pop()+(a?`-${a}`:""),!o||!o[a]||d(o[a],e,r))return a;if(!o[a=m.refBaseName(n)+(a?`_${a}`:"")]||d(o[a],e,r))return a;let c=a,u=2;for(;o[a]&&!d(o[a],e,r);)a=`${c}-${u}`,u++;return o[a]||r.report({message:`Two schemas are referenced with the same name but different content. Renamed ${c} to ${a}.`,location:r.location,forceSeverity:"warn"}),a}(r,t,n);return l[t][i]=r.node,e===h.OasMajorVersion.Version3?`#/components/${t}/${i}`:`#/${t}/${i}`}function d(e,t,r){var n;return!(!m.isRef(e)||(null===(n=r.resolve(e).location)||void 0===n?void 0:n.absolutePointer)!==t.location.absolutePointer)||a(e,t.node)}return e===h.OasMajorVersion.Version3&&(c.DiscriminatorMapping={leave(r,n){for(let i of Object.keys(r)){let o=r[i],a=n.resolve({$ref:o});if(!a.location||void 0===a.node)return void y.reportUnresolvedRef(a,n.report,n.location.child(i));let s=_("Schema",e);t?p(s,a,n):r[i]=p(s,a,n)}}}),c}(A,k,O,t,I,E)},...j],C);return f.walkDocument({document:t,rootType:C.DefinitionRoot,normalizedVisitors:N,resolvedRefMap:I,ctx:T}),{bundle:t,problems:T.problems.map((e=>r.addProblemToIgnore(e))),fileDependencies:o.getFiles(),rootType:C.DefinitionRoot,refTypes:T.refTypes,visitorsData:T.visitorsData}}))}function _(e,t){switch(t){case h.OasMajorVersion.Version3:switch(e){case"Schema":return"schemas";case"Parameter":return"parameters";case"Response":return"responses";case"Example":return"examples";case"RequestBody":return"requestBodies";case"Header":return"headers";case"SecuritySchema":return"securitySchemes";case"Link":return"links";case"Callback":return"callbacks";default:return null}case h.OasMajorVersion.Version2:switch(e){case"Schema":return"definitions";case"Parameter":return"parameters";case"Response":return"responses";default:return null}}}(n=i=t.OasVersion||(t.OasVersion={})).Version2="oas2",n.Version3_0="oas3_0",n.Version3_1="oas3_1",t.bundle=function(e){return o(this,void 0,void 0,(function*(){let{ref:t,doc:r,externalRefResolver:n=new s.BaseResolver(e.config.resolve),base:i=null}=e;if(!t&&!r)throw Error("Document or reference is required.\n");let o=void 0!==r?r:yield n.resolveDocument(i,t,!0);if(o instanceof Error)throw o;return k(Object.assign(Object.assign({document:o},e),{config:e.config.lint,externalRefResolver:n}))}))},t.bundleDocument=k,t.mapTypeToComponent=_},6877:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={rules:{"info-description":"error","info-contact":"error","info-license":"error","info-license-url":"error","tag-description":"error","tags-alphabetical":"error","parameter-description":"error","no-identical-paths":"error","no-ambiguous-paths":"error","no-path-trailing-slash":"error","path-segment-plural":"error","path-declaration-must-exist":"error","path-not-include-query":"error","path-parameters-defined":"error","operation-description":"error","operation-2xx-response":"error","operation-4xx-response":"error",assertions:"error","operation-operationId":"error","operation-summary":"error","operation-operationId-unique":"error","operation-operationId-url-safe":"error","operation-parameters-unique":"error","operation-tag-defined":"error","operation-security-defined":"error","operation-singular-tag":"error","no-unresolved-refs":"error","no-enum-type-mismatch":"error","boolean-parameter-prefixes":"error","paths-kebab-case":"error","no-http-verbs-in-paths":"error","path-excludes-patterns":{severity:"error",patterns:[]},"request-mime-type":"error",spec:"error","no-invalid-schema-examples":"error","no-invalid-parameter-examples":"error","scalar-property-missing-example":"error"},oas3_0Rules:{"no-invalid-media-type-examples":"error","no-server-example.com":"error","no-server-trailing-slash":"error","no-empty-servers":"error","no-example-value-and-externalValue":"error","no-unused-components":"error","no-undefined-server-variable":"error","no-servers-empty-enum":"error"},oas3_1Rules:{"no-server-example.com":"error","no-server-trailing-slash":"error","no-empty-servers":"error","no-example-value-and-externalValue":"error","no-unused-components":"error","no-undefined-server-variable":"error","no-servers-empty-enum":"error"}}},6242:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultPlugin=t.builtInConfigs=void 0;let n=r(8057),i=r(6877),o=r(9016),a=r(226),s=r(7523),l=r(226),c=r(7523),u=r(1753),p=r(7060);t.builtInConfigs={recommended:n.default,minimal:o.default,all:i.default,"redocly-registry":{decorators:{"registry-dependencies":"on"}}},t.defaultPlugin={id:"",rules:{oas3:a.rules,oas2:s.rules},preprocessors:{oas3:l.preprocessors,oas2:c.preprocessors},decorators:{oas3:u.decorators,oas2:p.decorators},configs:t.builtInConfigs}},7040:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{l(n.next(e))}catch(e){o(e)}}function s(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):((t=e.value)instanceof r?t:new r((function(e){e(t)}))).then(a,s)}l((n=n.apply(e,t||[])).next())}))},i=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);it.indexOf(n[i])&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.resolvePreset=t.resolveLint=t.resolveApis=t.resolvePlugins=t.resolveConfig=void 0;let o=r(6470),a=r(6212),s=r(7468),l=r(4182),c=r(6242),u=r(2565),p=r(771),d=r(3777);function f(e,t=""){if(!e)return[];let r=require,n=new Map;return e.map((e=>{if(p.isString(e)&&s.isAbsoluteUrl(e))throw Error(a.red("We don't support remote plugins yet."));let i=p.isString(e)?r(o.resolve(o.dirname(t),e)):e,l=i.id;if("string"!=typeof l)throw Error(a.red(`Plugin must define \`id\` property in ${a.blue(e.toString())}.`));if(n.has(l)){let t=n.get(l);throw Error(a.red(`Plugin "id" must be unique. Plugin ${a.blue(e.toString())} uses id "${a.blue(l)}" already seen in ${a.blue(t)}`))}n.set(l,e.toString());let c=Object.assign(Object.assign({id:l},i.configs?{configs:i.configs}:{}),i.typeExtension?{typeExtension:i.typeExtension}:{});if(i.rules){if(!i.rules.oas3&&!i.rules.oas2)throw Error(`Plugin rules must have \`oas3\` or \`oas2\` rules "${e}.`);c.rules={},i.rules.oas3&&(c.rules.oas3=u.prefixRules(i.rules.oas3,l)),i.rules.oas2&&(c.rules.oas2=u.prefixRules(i.rules.oas2,l))}if(i.preprocessors){if(!i.preprocessors.oas3&&!i.preprocessors.oas2)throw Error(`Plugin \`preprocessors\` must have \`oas3\` or \`oas2\` preprocessors "${e}.`);c.preprocessors={},i.preprocessors.oas3&&(c.preprocessors.oas3=u.prefixRules(i.preprocessors.oas3,l)),i.preprocessors.oas2&&(c.preprocessors.oas2=u.prefixRules(i.preprocessors.oas2,l))}if(i.decorators){if(!i.decorators.oas3&&!i.decorators.oas2)throw Error(`Plugin \`decorators\` must have \`oas3\` or \`oas2\` decorators "${e}.`);c.decorators={},i.decorators.oas3&&(c.decorators.oas3=u.prefixRules(i.decorators.oas3,l)),i.decorators.oas2&&(c.decorators.oas2=u.prefixRules(i.decorators.oas2,l))}return c})).filter(p.notUndefined)}function h({rawConfig:e,configPath:t="",resolver:r}){var i,o;return n(this,void 0,void 0,(function*(){let{apis:n={},lint:a={}}=e,s={};for(let[e,l]of Object.entries(n||{})){if(null===(o=null===(i=l.lint)||void 0===i?void 0:i.extends)||void 0===o?void 0:o.some(p.isNotString))throw Error("Error configuration format not detected in extends value must contain strings");let n=y(a,l.lint),c=yield m({lintConfig:n,configPath:t,resolver:r});s[e]=Object.assign(Object.assign({},l),{lint:c})}return s}))}function m(e,t=[],r=[]){return n(this,void 0,void 0,(function*(){let a=yield function e({lintConfig:t,configPath:r="",resolver:a=new l.BaseResolver},d=[],h=[]){var m,y,v;return n(this,void 0,void 0,(function*(){if(d.includes(r))throw Error(`Circular dependency in config file: "${r}"`);let l=u.getUniquePlugins(f([...(null==t?void 0:t.plugins)||[],c.defaultPlugin],r)),b=null===(m=null==t?void 0:t.plugins)||void 0===m?void 0:m.filter(p.isString).map((e=>o.resolve(o.dirname(r),e))),x=s.isAbsoluteUrl(r)?r:r&&o.resolve(r),w=yield Promise.all((null===(y=null==t?void 0:t.extends)||void 0===y?void 0:y.map((t=>n(this,void 0,void 0,(function*(){if(!s.isAbsoluteUrl(t)&&!o.extname(t))return g(t,l);let i=s.isAbsoluteUrl(t)?t:s.isAbsoluteUrl(r)?new URL(t,r).href:o.resolve(o.dirname(r),t),c=yield function(e,t){return n(this,void 0,void 0,(function*(){try{let r=yield t.loadExternalRef(e),n=u.transformConfig(p.parseYaml(r.body));if(!n.lint)throw Error(`Lint configuration format not detected: "${e}"`);return n.lint}catch(t){throw Error(`Failed to load "${e}": ${t.message}`)}}))}(i,a);return yield e({lintConfig:c,configPath:i,resolver:a},[...d,x],h)})))))||[]),k=u.mergeExtends([...w,Object.assign(Object.assign({},t),{plugins:l,extends:void 0,extendPaths:[...d,x],pluginPaths:b})]),{plugins:_=[]}=k,O=i(k,["plugins"]);return Object.assign(Object.assign({},O),{extendPaths:null===(v=O.extendPaths)||void 0===v?void 0:v.filter((e=>e&&!s.isAbsoluteUrl(e))),plugins:u.getUniquePlugins(_),recommendedFallback:null==t?void 0:t.recommendedFallback,doNotResolveExamples:null==t?void 0:t.doNotResolveExamples})}))}(e,t,r);return Object.assign(Object.assign({},a),{rules:a.rules&&function(e){if(!e)return e;let t={},r=[];for(let[n,i]of Object.entries(e))if(n.startsWith("assert/")&&"object"==typeof i&&null!==i){let e=i;r.push(Object.assign(Object.assign({},e),{assertionId:n.replace("assert/","")}))}else t[n]=i;return r.length>0&&(t.assertions=r),t}(a.rules)})}))}function g(e,t){var r;let{pluginId:n,configName:i}=u.parsePresetName(e),o=t.find((e=>e.id===n));if(!o)throw Error(`Invalid config ${a.red(e)}: plugin ${n} is not included.`);let s=null===(r=o.configs)||void 0===r?void 0:r[i];if(!s)throw Error(n?`Invalid config ${a.red(e)}: plugin ${n} doesn't export config with name ${i}.`:`Invalid config ${a.red(e)}: there is no such built-in config.`);return s}function y(e,t){return Object.assign(Object.assign(Object.assign({},e),t),{rules:Object.assign(Object.assign({},null==e?void 0:e.rules),null==t?void 0:t.rules),oas2Rules:Object.assign(Object.assign({},null==e?void 0:e.oas2Rules),null==t?void 0:t.oas2Rules),oas3_0Rules:Object.assign(Object.assign({},null==e?void 0:e.oas3_0Rules),null==t?void 0:t.oas3_0Rules),oas3_1Rules:Object.assign(Object.assign({},null==e?void 0:e.oas3_1Rules),null==t?void 0:t.oas3_1Rules),preprocessors:Object.assign(Object.assign({},null==e?void 0:e.preprocessors),null==t?void 0:t.preprocessors),oas2Preprocessors:Object.assign(Object.assign({},null==e?void 0:e.oas2Preprocessors),null==t?void 0:t.oas2Preprocessors),oas3_0Preprocessors:Object.assign(Object.assign({},null==e?void 0:e.oas3_0Preprocessors),null==t?void 0:t.oas3_0Preprocessors),oas3_1Preprocessors:Object.assign(Object.assign({},null==e?void 0:e.oas3_1Preprocessors),null==t?void 0:t.oas3_1Preprocessors),decorators:Object.assign(Object.assign({},null==e?void 0:e.decorators),null==t?void 0:t.decorators),oas2Decorators:Object.assign(Object.assign({},null==e?void 0:e.oas2Decorators),null==t?void 0:t.oas2Decorators),oas3_0Decorators:Object.assign(Object.assign({},null==e?void 0:e.oas3_0Decorators),null==t?void 0:t.oas3_0Decorators),oas3_1Decorators:Object.assign(Object.assign({},null==e?void 0:e.oas3_1Decorators),null==t?void 0:t.oas3_1Decorators),recommendedFallback:!(null==t?void 0:t.extends)&&e.recommendedFallback})}t.resolveConfig=function(e,t){var r,i,o,a,s;return n(this,void 0,void 0,(function*(){if(null===(i=null===(r=e.lint)||void 0===r?void 0:r.extends)||void 0===i?void 0:i.some(p.isNotString))throw Error("Error configuration format not detected in extends value must contain strings");let n=new l.BaseResolver(u.getResolveConfig(e.resolve)),c=null!==(a=null===(o=null==e?void 0:e.lint)||void 0===o?void 0:o.extends)&&void 0!==a?a:["recommended"],f=!(null===(s=null==e?void 0:e.lint)||void 0===s?void 0:s.extends),g=Object.assign(Object.assign({},null==e?void 0:e.lint),{extends:c,recommendedFallback:f}),y=yield h({rawConfig:Object.assign(Object.assign({},e),{lint:g}),configPath:t,resolver:n}),v=yield m({lintConfig:g,configPath:t,resolver:n});return new d.Config(Object.assign(Object.assign({},e),{apis:y,lint:v}),t)}))},t.resolvePlugins=f,t.resolveApis=h,t.resolveLint=m,t.resolvePreset=g},3777:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Config=t.LintConfig=t.AVAILABLE_REGIONS=t.DOMAINS=t.DEFAULT_REGION=t.IGNORE_FILE=t.env=void 0;let n=r(5101),i=r(6470),o=r(5273),a=r(771),s=r(1510),l=r(2565);t.env="undefined"!=typeof process&&{}||{},t.IGNORE_FILE=".redocly.lint-ignore.yaml",t.DEFAULT_REGION="us",t.DOMAINS=function(){let e={us:"redocly.com",eu:"eu.redocly.com"},r=t.env.REDOCLY_DOMAIN;return(null==r?void 0:r.endsWith(".redocly.host"))&&(e[r.split(".")[0]]=r),"redoc.online"===r&&(e[r]=r),e}(),t.AVAILABLE_REGIONS=Object.keys(t.DOMAINS);class c{constructor(e,r){this.rawConfig=e,this.configFile=r,this.ignore={},this._usedRules=new Set,this._usedVersions=new Set,this.plugins=e.plugins||[],this.doNotResolveExamples=!!e.doNotResolveExamples,this.recommendedFallback=e.recommendedFallback||!1,this.rules={[s.OasVersion.Version2]:Object.assign(Object.assign({},e.rules),e.oas2Rules),[s.OasVersion.Version3_0]:Object.assign(Object.assign({},e.rules),e.oas3_0Rules),[s.OasVersion.Version3_1]:Object.assign(Object.assign({},e.rules),e.oas3_1Rules)},this.preprocessors={[s.OasVersion.Version2]:Object.assign(Object.assign({},e.preprocessors),e.oas2Preprocessors),[s.OasVersion.Version3_0]:Object.assign(Object.assign({},e.preprocessors),e.oas3_0Preprocessors),[s.OasVersion.Version3_1]:Object.assign(Object.assign({},e.preprocessors),e.oas3_1Preprocessors)},this.decorators={[s.OasVersion.Version2]:Object.assign(Object.assign({},e.decorators),e.oas2Decorators),[s.OasVersion.Version3_0]:Object.assign(Object.assign({},e.decorators),e.oas3_0Decorators),[s.OasVersion.Version3_1]:Object.assign(Object.assign({},e.decorators),e.oas3_1Decorators)},this.extendPaths=e.extendPaths||[],this.pluginPaths=e.pluginPaths||[];let a=this.configFile?i.dirname(this.configFile):"undefined"!=typeof process&&process.cwd()||"",l=i.join(a,t.IGNORE_FILE);if(n.hasOwnProperty("existsSync")&&n.existsSync(l))for(let e of(this.ignore=o.parseYaml(n.readFileSync(l,"utf-8"))||{},Object.keys(this.ignore))){for(let t of(this.ignore[i.resolve(i.dirname(l),e)]=this.ignore[e],Object.keys(this.ignore[e])))this.ignore[e][t]=new Set(this.ignore[e][t]);delete this.ignore[e]}}saveIgnore(){let e=this.configFile?i.dirname(this.configFile):process.cwd(),r=i.join(e,t.IGNORE_FILE),s={};for(let t of Object.keys(this.ignore)){let r=s[a.slash(i.relative(e,t))]=this.ignore[t];for(let e of Object.keys(r))r[e]=Array.from(r[e])}n.writeFileSync(r,"# This file instructs Redocly's linter to ignore the rules contained for specific parts of your API.\n# See https://redoc.ly/docs/cli/ for more information.\n"+o.stringifyYaml(s))}addIgnore(e){let t=this.ignore,r=e.location[0];if(void 0===r.pointer)return;let n=t[r.source.absoluteRef]=t[r.source.absoluteRef]||{};(n[e.ruleId]=n[e.ruleId]||new Set).add(r.pointer)}addProblemToIgnore(e){let t=e.location[0];if(void 0===t.pointer)return e;let r=(this.ignore[t.source.absoluteRef]||{})[e.ruleId],n=r&&r.has(t.pointer);return n?Object.assign(Object.assign({},e),{ignored:n}):e}extendTypes(e,t){let r=e;for(let e of this.plugins)if(void 0!==e.typeExtension)switch(t){case s.OasVersion.Version3_0:case s.OasVersion.Version3_1:if(!e.typeExtension.oas3)continue;r=e.typeExtension.oas3(r,t);case s.OasVersion.Version2:if(!e.typeExtension.oas2)continue;r=e.typeExtension.oas2(r,t);default:throw Error("Not implemented")}return r}getRuleSettings(e,t){this._usedRules.add(e),this._usedVersions.add(t);let r=this.rules[t][e]||"off";return"string"==typeof r?{severity:r}:Object.assign({severity:"error"},r)}getPreprocessorSettings(e,t){this._usedRules.add(e),this._usedVersions.add(t);let r=this.preprocessors[t][e]||"off";return"string"==typeof r?{severity:"on"===r?"error":r}:Object.assign({severity:"error"},r)}getDecoratorSettings(e,t){this._usedRules.add(e),this._usedVersions.add(t);let r=this.decorators[t][e]||"off";return"string"==typeof r?{severity:"on"===r?"error":r}:Object.assign({severity:"error"},r)}getUnusedRules(){let e=[],t=[],r=[];for(let n of Array.from(this._usedVersions))e.push(...Object.keys(this.rules[n]).filter((e=>!this._usedRules.has(e)))),t.push(...Object.keys(this.decorators[n]).filter((e=>!this._usedRules.has(e)))),r.push(...Object.keys(this.preprocessors[n]).filter((e=>!this._usedRules.has(e))));return{rules:e,preprocessors:r,decorators:t}}getRulesForOasVersion(e){switch(e){case s.OasMajorVersion.Version3:let e=[];return this.plugins.forEach((t=>{var r;return(null===(r=t.preprocessors)||void 0===r?void 0:r.oas3)&&e.push(t.preprocessors.oas3)})),this.plugins.forEach((t=>{var r;return(null===(r=t.rules)||void 0===r?void 0:r.oas3)&&e.push(t.rules.oas3)})),this.plugins.forEach((t=>{var r;return(null===(r=t.decorators)||void 0===r?void 0:r.oas3)&&e.push(t.decorators.oas3)})),e;case s.OasMajorVersion.Version2:let t=[];return this.plugins.forEach((e=>{var r;return(null===(r=e.preprocessors)||void 0===r?void 0:r.oas2)&&t.push(e.preprocessors.oas2)})),this.plugins.forEach((e=>{var r;return(null===(r=e.rules)||void 0===r?void 0:r.oas2)&&t.push(e.rules.oas2)})),this.plugins.forEach((e=>{var r;return(null===(r=e.decorators)||void 0===r?void 0:r.oas2)&&t.push(e.decorators.oas2)})),t}}skipRules(e){for(let t of e||[])for(let e of Object.values(s.OasVersion))this.rules[e][t]&&(this.rules[e][t]="off")}skipPreprocessors(e){for(let t of e||[])for(let e of Object.values(s.OasVersion))this.preprocessors[e][t]&&(this.preprocessors[e][t]="off")}skipDecorators(e){for(let t of e||[])for(let e of Object.values(s.OasVersion))this.decorators[e][t]&&(this.decorators[e][t]="off")}}t.LintConfig=c,t.Config=class{constructor(e,t){this.rawConfig=e,this.configFile=t,this.apis=e.apis||{},this.lint=new c(e.lint||{},t),this["features.openapi"]=e["features.openapi"]||{},this["features.mockServer"]=e["features.mockServer"]||{},this.resolve=l.getResolveConfig(null==e?void 0:e.resolve),this.region=e.region,this.organization=e.organization}}},8698:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),i(r(3777),t),i(r(3865),t),i(r(5030),t),i(r(6242),t),i(r(9129),t),i(r(2565),t),i(r(7040),t)},9129:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{l(n.next(e))}catch(e){o(e)}}function s(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):((t=e.value)instanceof r?t:new r((function(e){e(t)}))).then(a,s)}l((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.getConfig=t.findConfig=t.CONFIG_FILE_NAMES=t.loadConfig=void 0;let i=r(5101),o=r(6470),a=r(1094),s=r(771),l=r(3777),c=r(2565),u=r(7040);function p(e){if(!i.hasOwnProperty("existsSync"))return;let r=t.CONFIG_FILE_NAMES.map((t=>e?o.resolve(e,t):t)).filter(i.existsSync);if(r.length>1)throw Error(`\n Multiple configuration files are not allowed. \n Found the following files: ${r.join(", ")}. \n Please use 'redocly.yaml' instead.\n `);return r[0]}function d(e=p()){return n(this,void 0,void 0,(function*(){if(!e)return{};try{let t=(yield s.loadYaml(e))||{};return c.transformConfig(t)}catch(t){throw Error(`Error parsing config file at '${e}': ${t.message}`)}}))}t.loadConfig=function(e=p(),t,r){return n(this,void 0,void 0,(function*(){let i=yield d(e);return"function"==typeof r&&(yield r(i)),yield function({rawConfig:e,customExtends:t,configPath:r}){var i;return n(this,void 0,void 0,(function*(){void 0!==t?(e.lint=e.lint||{},e.lint.extends=t):s.isEmptyObject(e);let n=new a.RedoclyClient,o=yield n.getTokens();if(o.length)for(let t of(e.resolve||(e.resolve={}),e.resolve.http||(e.resolve.http={}),e.resolve.http.headers=[...null!==(i=e.resolve.http.headers)&&void 0!==i?i:[]],o)){let r=l.DOMAINS[t.region];e.resolve.http.headers.push({matches:`https://api.${r}/registry/**`,name:"Authorization",envVariable:void 0,value:t.token},..."us"===t.region?[{matches:"https://api.redoc.ly/registry/**",name:"Authorization",envVariable:void 0,value:t.token}]:[])}return u.resolveConfig(e,r)}))}({rawConfig:i,customExtends:t,configPath:e})}))},t.CONFIG_FILE_NAMES=["redocly.yaml","redocly.yml",".redocly.yaml",".redocly.yml"],t.findConfig=p,t.getConfig=d},9016:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={rules:{"info-description":"warn","info-contact":"off","info-license":"off","info-license-url":"off","tag-description":"warn","tags-alphabetical":"off","parameter-description":"off","no-path-trailing-slash":"warn","no-identical-paths":"warn","no-ambiguous-paths":"warn","path-declaration-must-exist":"warn","path-not-include-query":"warn","path-parameters-defined":"warn","operation-description":"off","operation-2xx-response":"warn","operation-4xx-response":"off",assertions:"warn","operation-operationId":"warn","operation-summary":"warn","operation-operationId-unique":"warn","operation-parameters-unique":"warn","operation-tag-defined":"off","operation-security-defined":"warn","operation-operationId-url-safe":"warn","operation-singular-tag":"off","no-unresolved-refs":"error","no-enum-type-mismatch":"warn","boolean-parameter-prefixes":"off","paths-kebab-case":"off",spec:"error"},oas3_0Rules:{"no-invalid-media-type-examples":{severity:"warn",disallowAdditionalProperties:!0},"no-server-example.com":"warn","no-server-trailing-slash":"error","no-empty-servers":"warn","no-example-value-and-externalValue":"warn","no-unused-components":"warn","no-undefined-server-variable":"warn","no-servers-empty-enum":"error"},oas3_1Rules:{"no-server-example.com":"warn","no-server-trailing-slash":"error","no-empty-servers":"warn","no-example-value-and-externalValue":"warn","no-unused-components":"warn","no-undefined-server-variable":"warn","no-servers-empty-enum":"error"}}},8057:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={rules:{"info-description":"warn","info-contact":"off","info-license":"warn","info-license-url":"warn","tag-description":"warn","tags-alphabetical":"off","parameter-description":"off","no-path-trailing-slash":"error","no-identical-paths":"error","no-ambiguous-paths":"warn","path-declaration-must-exist":"error","path-not-include-query":"error","path-parameters-defined":"error","operation-description":"off","operation-2xx-response":"warn",assertions:"warn","operation-4xx-response":"warn","operation-operationId":"warn","operation-summary":"error","operation-operationId-unique":"error","operation-operationId-url-safe":"error","operation-parameters-unique":"error","operation-tag-defined":"off","operation-security-defined":"error","operation-singular-tag":"off","no-unresolved-refs":"error","no-enum-type-mismatch":"error","boolean-parameter-prefixes":"off","paths-kebab-case":"off",spec:"error"},oas3_0Rules:{"no-invalid-media-type-examples":{severity:"warn",disallowAdditionalProperties:!0},"no-server-example.com":"warn","no-server-trailing-slash":"error","no-empty-servers":"error","no-example-value-and-externalValue":"error","no-unused-components":"warn","no-undefined-server-variable":"error","no-servers-empty-enum":"error"},oas3_1Rules:{"no-server-example.com":"warn","no-server-trailing-slash":"error","no-empty-servers":"error","no-example-value-and-externalValue":"error","no-unused-components":"warn","no-undefined-server-variable":"error","no-servers-empty-enum":"error"}}},5030:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.initRules=void 0;let n=r(771);t.initRules=function(e,t,r,i){return e.flatMap((e=>Object.keys(e).map((n=>{let o=e[n],a="rules"===r?t.getRuleSettings(n,i):"preprocessors"===r?t.getPreprocessorSettings(n,i):t.getDecoratorSettings(n,i);if("off"===a.severity)return;let s=o(a);return Array.isArray(s)?s.map((e=>({severity:a.severity,ruleId:n,visitor:e}))):{severity:a.severity,ruleId:n,visitor:s}})))).flatMap((e=>e)).filter(n.notUndefined)}},3865:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},2565:function(e,t,r){"use strict";var n=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&0>t.indexOf(n)&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);it.indexOf(n[i])&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.getUniquePlugins=t.getResolveConfig=t.transformConfig=t.getMergedConfig=t.mergeExtends=t.prefixRules=t.transformApiDefinitionsToApis=t.parsePresetName=void 0;let i=r(6212),o=r(771),a=r(3777);function s(e={}){let t={};for(let[r,n]of Object.entries(e))t[r]={root:n};return t}t.parsePresetName=function(e){if(e.indexOf("/")>-1){let[t,r]=e.split("/");return{pluginId:t,configName:r}}return{pluginId:"",configName:e}},t.transformApiDefinitionsToApis=s,t.prefixRules=function(e,t){if(!t)return e;let r={};for(let n of Object.keys(e))r[`${t}/${n}`]=e[n];return r},t.mergeExtends=function(e){let t={rules:{},oas2Rules:{},oas3_0Rules:{},oas3_1Rules:{},preprocessors:{},oas2Preprocessors:{},oas3_0Preprocessors:{},oas3_1Preprocessors:{},decorators:{},oas2Decorators:{},oas3_0Decorators:{},oas3_1Decorators:{},plugins:[],pluginPaths:[],extendPaths:[]};for(let r of e){if(r.extends)throw Error(`\`extends\` is not supported in shared configs yet: ${JSON.stringify(r,null,2)}.`);Object.assign(t.rules,r.rules),Object.assign(t.oas2Rules,r.oas2Rules),o.assignExisting(t.oas2Rules,r.rules||{}),Object.assign(t.oas3_0Rules,r.oas3_0Rules),o.assignExisting(t.oas3_0Rules,r.rules||{}),Object.assign(t.oas3_1Rules,r.oas3_1Rules),o.assignExisting(t.oas3_1Rules,r.rules||{}),Object.assign(t.preprocessors,r.preprocessors),Object.assign(t.oas2Preprocessors,r.oas2Preprocessors),o.assignExisting(t.oas2Preprocessors,r.preprocessors||{}),Object.assign(t.oas3_0Preprocessors,r.oas3_0Preprocessors),o.assignExisting(t.oas3_0Preprocessors,r.preprocessors||{}),Object.assign(t.oas3_1Preprocessors,r.oas3_1Preprocessors),o.assignExisting(t.oas3_1Preprocessors,r.preprocessors||{}),Object.assign(t.decorators,r.decorators),Object.assign(t.oas2Decorators,r.oas2Decorators),o.assignExisting(t.oas2Decorators,r.decorators||{}),Object.assign(t.oas3_0Decorators,r.oas3_0Decorators),o.assignExisting(t.oas3_0Decorators,r.decorators||{}),Object.assign(t.oas3_1Decorators,r.oas3_1Decorators),o.assignExisting(t.oas3_1Decorators,r.decorators||{}),t.plugins.push(...r.plugins||[]),t.pluginPaths.push(...r.pluginPaths||[]),t.extendPaths.push(...new Set(r.extendPaths))}return t},t.getMergedConfig=function(e,t){var r,n,i,o,s,l;let c=[...Object.values(e.apis).map((e=>{var t;return null===(t=null==e?void 0:e.lint)||void 0===t?void 0:t.extendPaths})),null===(n=null===(r=e.rawConfig)||void 0===r?void 0:r.lint)||void 0===n?void 0:n.extendPaths].flat().filter(Boolean),u=[...Object.values(e.apis).map((e=>{var t;return null===(t=null==e?void 0:e.lint)||void 0===t?void 0:t.pluginPaths})),null===(o=null===(i=e.rawConfig)||void 0===i?void 0:i.lint)||void 0===o?void 0:o.pluginPaths].flat().filter(Boolean);return t?new a.Config(Object.assign(Object.assign({},e.rawConfig),{lint:Object.assign(Object.assign({},e.apis[t]?e.apis[t].lint:e.rawConfig.lint),{extendPaths:c,pluginPaths:u}),"features.openapi":Object.assign(Object.assign({},e["features.openapi"]),null===(s=e.apis[t])||void 0===s?void 0:s["features.openapi"]),"features.mockServer":Object.assign(Object.assign({},e["features.mockServer"]),null===(l=e.apis[t])||void 0===l?void 0:l["features.mockServer"])}),e.configFile):e},t.transformConfig=function(e){if(e.apis&&e.apiDefinitions)throw Error("Do not use 'apiDefinitions' field. Use 'apis' instead.\n");if(e["features.openapi"]&&e.referenceDocs)throw Error("Do not use 'referenceDocs' field. Use 'features.openapi' instead.\n");let t=e,{apiDefinitions:r,referenceDocs:o}=t,a=n(t,["apiDefinitions","referenceDocs"]);return r&&process.stderr.write(`The ${i.yellow("apiDefinitions")} field is deprecated. Use ${i.green("apis")} instead. Read more about this change: https://redocly.com/docs/api-registry/guides/migration-guide-config-file/#changed-properties\n`),o&&process.stderr.write(`The ${i.yellow("referenceDocs")} field is deprecated. Use ${i.green("features.openapi")} instead. Read more about this change: https://redocly.com/docs/api-registry/guides/migration-guide-config-file/#changed-properties\n`),Object.assign({"features.openapi":o,apis:s(r)},a)},t.getResolveConfig=function(e){var t,r;return{http:{headers:null!==(r=null===(t=null==e?void 0:e.http)||void 0===t?void 0:t.headers)&&void 0!==r?r:[],customFetch:void 0}}},t.getUniquePlugins=function(e){let t=new Set,r=[];for(let n of e)t.has(n.id)?n.id&&process.stderr.write(`Duplicate plugin id "${i.yellow(n.id)}".\n`):(r.push(n),t.add(n.id));return r}},1988:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkIfMatchByStrategy=t.filter=void 0;let n=r(7468),i=r(771);function o(e){return Array.isArray(e)?e:[e]}t.filter=function(e,t,r){let{parent:o,key:a}=t,s=!1;if(Array.isArray(e))for(let i=0;ie.includes(t))):"all"===r&&t.every((t=>e.includes(t)))):e===t)}},9244:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FilterIn=void 0;let n=r(1988);t.FilterIn=({property:e,value:t,matchStrategy:r})=>{let i=r||"any",o=r=>(null==r?void 0:r[e])&&!n.checkIfMatchByStrategy(null==r?void 0:r[e],t,i);return{any:{enter(e,t){n.filter(e,t,o)}}}}},8623:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FilterOut=void 0;let n=r(1988);t.FilterOut=({property:e,value:t,matchStrategy:r})=>{let i=r||"any",o=r=>n.checkIfMatchByStrategy(null==r?void 0:r[e],t,i);return{any:{enter(e,t){n.filter(e,t,o)}}}}},4555:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InfoDescriptionOverride=void 0;let n=r(771);t.InfoDescriptionOverride=({filePath:e})=>({Info:{leave(t,{report:r,location:i}){if(!e)throw Error('Parameter "filePath" is not provided for "info-description-override" rule');try{t.description=n.readFileAsStringSync(e)}catch(e){r({message:`Failed to read markdown override file for "info.description".\n${e.message}`,location:i.child("description")})}}}})},7802:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationDescriptionOverride=void 0;let n=r(771);t.OperationDescriptionOverride=({operationIds:e})=>({Operation:{leave(t,{report:r,location:i}){if(!t.operationId)return;if(!e)throw Error('Parameter "operationIds" is not provided for "operation-description-override" rule');let o=t.operationId;if(e[o])try{t.description=n.readFileAsStringSync(e[o])}catch(e){r({message:`Failed to read markdown override file for operation "${o}".\n${e.message}`,location:i.child("operationId").key()})}}}})},2287:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RegistryDependencies=void 0;let n=r(1094);t.RegistryDependencies=()=>{let e=new Set;return{DefinitionRoot:{leave(t,r){r.getVisitorData().links=Array.from(e)}},ref(t){if(t.$ref){let r=t.$ref.split("#/")[0];n.isRedoclyRegistryURL(r)&&e.add(r)}}}}},5830:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RemoveXInternal=void 0;let n=r(771),i=r(7468);t.RemoveXInternal=({internalFlagProperty:e})=>{let t=e||"x-internal";return{any:{enter(e,r){!function(e,r){var o,a,s,l;let{parent:c,key:u}=r,p=!1;if(Array.isArray(e))for(let n=0;n({Tag:{leave(t,{report:r}){if(!e)throw Error('Parameter "tagNames" is not provided for "tag-description-override" rule');if(e[t.name])try{t.description=n.readFileAsStringSync(e[t.name])}catch(e){r({message:`Failed to read markdown override file for tag "${t.name}".\n${e.message}`})}}}})},7060:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decorators=void 0;let n=r(2287),i=r(7802),o=r(423),a=r(4555),s=r(5830),l=r(9244),c=r(8623);t.decorators={"registry-dependencies":n.RegistryDependencies,"operation-description-override":i.OperationDescriptionOverride,"tag-description-override":o.TagDescriptionOverride,"info-description-override":a.InfoDescriptionOverride,"remove-x-internal":s.RemoveXInternal,"filter-in":l.FilterIn,"filter-out":c.FilterOut}},1753:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decorators=void 0;let n=r(2287),i=r(7802),o=r(423),a=r(4555),s=r(5830),l=r(9244),c=r(8623);t.decorators={"registry-dependencies":n.RegistryDependencies,"operation-description-override":i.OperationDescriptionOverride,"tag-description-override":o.TagDescriptionOverride,"info-description-override":a.InfoDescriptionOverride,"remove-x-internal":s.RemoveXInternal,"filter-in":l.FilterIn,"filter-out":c.FilterOut}},5273:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.stringifyYaml=t.parseYaml=void 0;let n=r(3320),i=n.JSON_SCHEMA.extend({implicit:[n.types.merge],explicit:[n.types.binary,n.types.omap,n.types.pairs,n.types.set]});t.parseYaml=(e,t)=>n.load(e,Object.assign({schema:i},t)),t.stringifyYaml=(e,t)=>n.dump(e,t)},1510:function(e,t){"use strict";var r,n,i,o;Object.defineProperty(t,"__esModule",{value:!0}),t.openAPIMajor=t.detectOpenAPI=t.OasMajorVersion=t.OasVersion=void 0,(i=r=t.OasVersion||(t.OasVersion={})).Version2="oas2",i.Version3_0="oas3_0",i.Version3_1="oas3_1",(o=n=t.OasMajorVersion||(t.OasMajorVersion={})).Version2="oas2",o.Version3="oas3",t.detectOpenAPI=function(e){if("object"!=typeof e)throw Error("Document must be JSON object, got "+typeof e);if(!e.openapi&&!e.swagger)throw Error("This doesn’t look like an OpenAPI document.\n");if(e.openapi&&"string"!=typeof e.openapi)throw Error(`Invalid OpenAPI version: should be a string but got "${typeof e.openapi}"`);if(e.openapi&&e.openapi.startsWith("3.0"))return r.Version3_0;if(e.openapi&&e.openapi.startsWith("3.1"))return r.Version3_1;if(e.swagger&&"2.0"===e.swagger)return r.Version2;throw Error(`Unsupported OpenAPI Version: ${e.openapi||e.swagger}`)},t.openAPIMajor=function(e){return e===r.Version2?n.Version2:n.Version3}},1094:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{l(n.next(e))}catch(e){o(e)}}function s(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):((t=e.value)instanceof r?t:new r((function(e){e(t)}))).then(a,s)}l((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.isRedoclyRegistryURL=t.RedoclyClient=void 0;let i=r(2116),o=r(6470),a=r(6918),s=r(8836),l=r(1390),c=r(3777),u=r(771),p=".redocly-config.json";t.RedoclyClient=class{constructor(e){this.accessTokens={},this.region=this.loadRegion(e),this.loadTokens(),this.domain=e?c.DOMAINS[e]:c.env.REDOCLY_DOMAIN||c.DOMAINS[c.DEFAULT_REGION],c.env.REDOCLY_DOMAIN=this.domain,this.registryApi=new l.RegistryApi(this.accessTokens,this.region)}loadRegion(e){if(e&&!c.DOMAINS[e])throw Error(`Invalid argument: region in config file.\nGiven: ${s.green(e)}, choices: "us", "eu".`);return c.env.REDOCLY_DOMAIN?c.AVAILABLE_REGIONS.find((e=>c.DOMAINS[e]===c.env.REDOCLY_DOMAIN))||c.DEFAULT_REGION:e||c.DEFAULT_REGION}getRegion(){return this.region}hasTokens(){return u.isNotEmptyObject(this.accessTokens)}hasToken(){return!!this.accessTokens[this.region]}getAuthorizationHeader(){return n(this,void 0,void 0,(function*(){return this.accessTokens[this.region]}))}setAccessTokens(e){this.accessTokens=e}loadTokens(){let e=o.resolve(a.homedir(),p),t=this.readCredentialsFile(e);u.isNotEmptyObject(t)&&this.setAccessTokens(Object.assign(Object.assign({},t),t.token&&!t[this.region]&&{[this.region]:t.token})),c.env.REDOCLY_AUTHORIZATION&&this.setAccessTokens(Object.assign(Object.assign({},this.accessTokens),{[this.region]:c.env.REDOCLY_AUTHORIZATION}))}getAllTokens(){return Object.entries(this.accessTokens).filter((([e])=>c.AVAILABLE_REGIONS.includes(e))).map((([e,t])=>({region:e,token:t})))}getValidTokens(){return n(this,void 0,void 0,(function*(){let e=this.getAllTokens(),t=yield Promise.allSettled(e.map((({token:e,region:t})=>this.verifyToken(e,t))));return e.filter(((e,r)=>"fulfilled"===t[r].status)).map((({token:e,region:t})=>({token:e,region:t,valid:!0})))}))}getTokens(){return n(this,void 0,void 0,(function*(){return this.hasTokens()?yield this.getValidTokens():[]}))}isAuthorizedWithRedoclyByRegion(){return n(this,void 0,void 0,(function*(){if(!this.hasTokens())return!1;let e=this.accessTokens[this.region];if(!e)return!1;try{return yield this.verifyToken(e,this.region),!0}catch(e){return!1}}))}isAuthorizedWithRedocly(){return n(this,void 0,void 0,(function*(){return this.hasTokens()&&u.isNotEmptyObject(yield this.getValidTokens())}))}readCredentialsFile(e){return i.existsSync(e)?JSON.parse(i.readFileSync(e,"utf-8")):{}}verifyToken(e,t,r=!1){return n(this,void 0,void 0,(function*(){return this.registryApi.authStatus(e,t,r)}))}login(e,t=!1){return n(this,void 0,void 0,(function*(){let r=o.resolve(a.homedir(),p);try{yield this.verifyToken(e,this.region,t)}catch(e){throw Error("Authorization failed. Please check if you entered a valid API key.")}let n=Object.assign(Object.assign({},this.readCredentialsFile(r)),{[this.region]:e,token:e});this.accessTokens=n,this.registryApi.setAccessTokens(n),i.writeFileSync(r,JSON.stringify(n,null,2))}))}logout(){let e=o.resolve(a.homedir(),p);i.existsSync(e)&&i.unlinkSync(e)}},t.isRedoclyRegistryURL=function(e){let t=c.env.REDOCLY_DOMAIN||c.DOMAINS[c.DEFAULT_REGION];return!(!e.startsWith(`https://api.${t}/registry/`)&&!e.startsWith(`https://api.${"redocly.com"===t?"redoc.ly":t}/registry/`))}},1390:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{l(n.next(e))}catch(e){o(e)}}function s(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):((t=e.value)instanceof r?t:new r((function(e){e(t)}))).then(a,s)}l((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RegistryApi=void 0;let i=r(8150),o=r(3777),a=r(771),s=r(3244).i8;t.RegistryApi=class{constructor(e,t){this.accessTokens=e,this.region=t}get accessToken(){return a.isNotEmptyObject(this.accessTokens)&&this.accessTokens[this.region]}getBaseUrl(e=o.DEFAULT_REGION){return`https://api.${o.DOMAINS[e]}/registry`}setAccessTokens(e){return this.accessTokens=e,this}request(e="",t={},r){return n(this,void 0,void 0,(function*(){let n=Object.assign({},t.headers||{},{"x-redocly-cli-version":s});if(!n.hasOwnProperty("authorization"))throw Error("Unauthorized");let o=yield i.default(`${this.getBaseUrl(r)}${e}`,Object.assign({},t,{headers:n}));if(401===o.status)throw Error("Unauthorized");if(404===o.status){let e=yield o.json();throw Error(e.code)}return o}))}authStatus(e,t,r=!1){return n(this,void 0,void 0,(function*(){try{let r=yield this.request("",{headers:{authorization:e}},t);return yield r.json()}catch(e){throw r&&console.log(e),e}}))}prepareFileUpload({organizationId:e,name:t,version:r,filesHash:i,filename:o,isUpsert:a}){return n(this,void 0,void 0,(function*(){let n=yield this.request(`/${e}/${t}/${r}/prepare-file-upload`,{method:"POST",headers:{"content-type":"application/json",authorization:this.accessToken},body:JSON.stringify({filesHash:i,filename:o,isUpsert:a})},this.region);if(n.ok)return n.json();throw Error("Could not prepare file upload")}))}pushApi({organizationId:e,name:t,version:r,rootFilePath:i,filePaths:o,branch:a,isUpsert:s,isPublic:l,batchId:c,batchSize:u}){return n(this,void 0,void 0,(function*(){if(!(yield this.request(`/${e}/${t}/${r}`,{method:"PUT",headers:{"content-type":"application/json",authorization:this.accessToken},body:JSON.stringify({rootFilePath:i,filePaths:o,branch:a,isUpsert:s,isPublic:l,batchId:c,batchSize:u})},this.region)).ok)throw Error("Could not push api")}))}}},7468:function(e,t){"use strict";function r(e,t){return""===e&&(e="#/"),"/"===e[e.length-1]?e+t:e+"/"+t}Object.defineProperty(t,"__esModule",{value:!0}),t.isMappingRef=t.isAbsoluteUrl=t.refBaseName=t.pointerBaseName=t.parsePointer=t.parseRef=t.escapePointer=t.unescapePointer=t.Location=t.isRef=t.joinPointer=void 0,t.joinPointer=r,t.isRef=function(e){return e&&"string"==typeof e.$ref};class n{constructor(e,t){this.source=e,this.pointer=t}child(e){return new n(this.source,r(this.pointer,(Array.isArray(e)?e:[e]).map(o).join("/")))}key(){return Object.assign(Object.assign({},this),{reportOnKey:!0})}get absolutePointer(){return this.source.absoluteRef+("#/"===this.pointer?"":this.pointer)}}function i(e){return decodeURIComponent(e.replace(/~1/g,"/").replace(/~0/g,"~"))}function o(e){return"number"==typeof e?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}t.Location=n,t.unescapePointer=i,t.escapePointer=o,t.parseRef=function(e){let[t,r]=e.split("#/");return{uri:t||null,pointer:r?r.split("/").map(i).filter(Boolean):[]}},t.parsePointer=function(e){return e.substr(2).split("/").map(i)},t.pointerBaseName=function(e){let t=e.split("/");return t[t.length-1]},t.refBaseName=function(e){let t=e.split(/[\/\\]/);return t[t.length-1].replace(/\.[^.]+$/,"")},t.isAbsoluteUrl=function(e){return e.startsWith("http://")||e.startsWith("https://")},t.isMappingRef=function(e){return e.startsWith("#")||e.startsWith("https://")||e.startsWith("http://")||e.startsWith("./")||e.startsWith("../")||e.indexOf("/")>-1}},4182:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{l(n.next(e))}catch(e){o(e)}}function s(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):((t=e.value)instanceof r?t:new r((function(e){e(t)}))).then(a,s)}l((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.resolveDocument=t.BaseResolver=t.makeDocumentFromString=t.makeRefId=t.YamlParseError=t.ResolveError=t.Source=void 0;let i=r(3197),o=r(6470),a=r(7468),s=r(5220),l=r(771);class c{constructor(e,t,r){this.absoluteRef=e,this.body=t,this.mimeType=r}getAst(e){var t;return void 0===this._ast&&(this._ast=null!==(t=e(this.body,{filename:this.absoluteRef}))&&void 0!==t?t:void 0,this._ast&&0===this._ast.kind&&""===this._ast.value&&1!==this._ast.startPosition&&(this._ast.startPosition=1,this._ast.endPosition=1)),this._ast}getLines(){return void 0===this._lines&&(this._lines=this.body.split(/\r\n|[\n\r]/g)),this._lines}}t.Source=c;class u extends Error{constructor(e){super(e.message),this.originalError=e,Object.setPrototypeOf(this,u.prototype)}}t.ResolveError=u;class p extends Error{constructor(e,t){super(e.message.split("\n")[0]),this.originalError=e,this.source=t,Object.setPrototypeOf(this,p.prototype);let[,r,n]=this.message.match(/\((\d+):(\d+)\)$/)||[];this.line=parseInt(r,10),this.col=parseInt(n,10)}}function d(e,t){return e+"::"+t}function f(e,t){return{prev:e,node:t}}t.YamlParseError=p,t.makeRefId=d,t.makeDocumentFromString=function(e,t){let r=new c(t,e);try{return{source:r,parsed:l.parseYaml(e,{filename:t})}}catch(e){throw new p(e,r)}},t.BaseResolver=class{constructor(e={http:{headers:[]}}){this.config=e,this.cache=new Map}getFiles(){return new Set(Array.from(this.cache.keys()))}resolveExternalRef(e,t){return a.isAbsoluteUrl(t)?t:e&&a.isAbsoluteUrl(e)?new URL(t,e).href:o.resolve(e?o.dirname(e):process.cwd(),t)}loadExternalRef(e){return n(this,void 0,void 0,(function*(){try{if(a.isAbsoluteUrl(e)){let{body:t,mimeType:r}=yield l.readFileFromUrl(e,this.config.http);return new c(e,t,r)}return new c(e,yield i.promises.readFile(e,"utf-8"))}catch(e){throw new u(e)}}))}parseDocument(e,t=!1){var r;let n=e.absoluteRef.substr(e.absoluteRef.lastIndexOf("."));if(![".json",".json",".yml",".yaml"].includes(n)&&!(null===(r=e.mimeType)||void 0===r?void 0:r.match(/(json|yaml|openapi)/))&&!t)return{source:e,parsed:e.body};try{return{source:e,parsed:l.parseYaml(e.body,{filename:e.absoluteRef})}}catch(t){throw new p(t,e)}}resolveDocument(e,t,r=!1){return n(this,void 0,void 0,(function*(){let n=this.resolveExternalRef(e,t),i=this.cache.get(n);if(i)return i;let o=this.loadExternalRef(n).then((e=>this.parseDocument(e,r)));return this.cache.set(n,o),o}))}};let h={name:"unknown",properties:{}},m={name:"scalar",properties:{}};t.resolveDocument=function(e){return n(this,void 0,void 0,(function*(){let t,{rootDocument:r,externalRefResolver:i,rootType:o}=e,l=new Map,c=new Set,u=[];!function e(t,r,o,p){!function t(o,p,g){if("object"!=typeof o||null===o)return;let y=`${p.name}::${g}`;if(!c.has(y))if(c.add(y),Array.isArray(o)){let e=p.items;if(p!==h&&void 0===e)return;for(let r=0;r{t.resolved&&e(t.node,t.document,t.nodePointer,p)}));u.push(t)}}}(t,p,r.source.absoluteRef+"#/")}(r.parsed,r,0,o);do{t=yield Promise.all(u)}while(u.length!==t.length);return l}))}},7275:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateJsonSchema=t.releaseAjvInstance=void 0;let n=r(5499),i=r(7468),o=null;t.releaseAjvInstance=function(){o=null},t.validateJsonSchema=function(e,t,r,a,s,l){let c=function(e,t,r,i){var a,s;let l=(a=r,s=i,o||(o=new n.default({schemaId:"$id",meta:!0,allErrors:!0,strictSchema:!1,inlineRefs:!1,validateSchema:!1,discriminator:!0,allowUnionTypes:!0,validateFormats:!1,defaultAdditionalProperties:!s,loadSchemaSync(e,t){let r=a({$ref:t},e.split("#")[0]);return!(!r||!r.location)&&Object.assign({$id:r.location.absolutePointer},r.node)},logger:!1})),o);return l.getSchema(t.absolutePointer)||l.addSchema(Object.assign({$id:t.absolutePointer},e),t.absolutePointer),l.getSchema(t.absolutePointer)}(t,r,s,l);return c?{valid:!!c(e,{instancePath:a,parentData:{fake:{}},parentDataProperty:"fake",rootData:{},dynamicAnchors:{}}),errors:(c.errors||[]).map((function(e){let t=e.message,r="enum"===e.keyword?e.params.allowedValues:void 0;r&&(t+=` ${r.map((e=>`"${e}"`)).join(", ")}`),"type"===e.keyword&&(t=`type ${t}`);let n=e.instancePath.substring(a.length+1),o=n.substring(n.lastIndexOf("/")+1);if(o&&(t=`\`${o}\` property ${t}`),"additionalProperties"===e.keyword){let r=e.params.additionalProperty;t=`${t} \`${r}\``,e.instancePath+="/"+i.escapePointer(r)}return Object.assign(Object.assign({},e),{message:t,suggest:r})}))}:{valid:!0,errors:[]}}},9740:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.asserts=t.runOnValuesSet=t.runOnKeysSet=void 0;let n=r(771),i=r(5738);t.runOnKeysSet=new Set(["mutuallyExclusive","mutuallyRequired","enum","pattern","minLength","maxLength","casing","sortOrder","disallowed","required","requireAny","ref"]),t.runOnValuesSet=new Set(["pattern","enum","defined","undefined","nonEmpty","minLength","maxLength","casing","sortOrder","ref"]),t.asserts={pattern(e,t,r){if(void 0===e)return{isValid:!0};let o=n.isString(e)?[e]:e,a=i.regexFromString(t);for(let t of o)if(!(null==a?void 0:a.test(t)))return{isValid:!1,location:n.isString(e)?r:r.key()};return{isValid:!0}},enum(e,t,r){if(void 0===e)return{isValid:!0};let i=n.isString(e)?[e]:e;for(let o of i)if(!t.includes(o))return{isValid:!1,location:n.isString(e)?r:r.child(o).key()};return{isValid:!0}},defined(e,t=!0,r){let n=void 0!==e;return{isValid:t?n:!n,location:r}},required(e,t,r){for(let n of t)if(!e.includes(n))return{isValid:!1,location:r.key()};return{isValid:!0}},disallowed(e,t,r){if(void 0===e)return{isValid:!0};let i=n.isString(e)?[e]:e;for(let o of i)if(t.includes(o))return{isValid:!1,location:n.isString(e)?r:r.child(o).key()};return{isValid:!0}},undefined(e,t=!0,r){let n=void 0===e;return{isValid:t?n:!n,location:r}},nonEmpty(e,t=!0,r){let n=null==e||""===e;return{isValid:t?!n:n,location:r}},minLength:(e,t,r)=>void 0===e?{isValid:!0}:{isValid:e.length>=t,location:r},maxLength:(e,t,r)=>void 0===e?{isValid:!0}:{isValid:e.length<=t,location:r},casing(e,t,r){if(void 0===e)return{isValid:!0};let i=n.isString(e)?[e]:e;for(let o of i){let i=!1;switch(t){case"camelCase":i=!!o.match(/^[a-z][a-zA-Z0-9]+$/g);break;case"kebab-case":i=!!o.match(/^([a-z][a-z0-9]*)(-[a-z0-9]+)*$/g);break;case"snake_case":i=!!o.match(/^([a-z][a-z0-9]*)(_[a-z0-9]+)*$/g);break;case"PascalCase":i=!!o.match(/^[A-Z][a-zA-Z0-9]+$/g);break;case"MACRO_CASE":i=!!o.match(/^([A-Z][A-Z0-9]*)(_[A-Z0-9]+)*$/g);break;case"COBOL-CASE":i=!!o.match(/^([A-Z][A-Z0-9]*)(-[A-Z0-9]+)*$/g);break;case"flatcase":i=!!o.match(/^[a-z][a-z0-9]+$/g)}if(!i)return{isValid:!1,location:n.isString(e)?r:r.child(o).key()}}return{isValid:!0}},sortOrder:(e,t,r)=>void 0===e?{isValid:!0}:{isValid:i.isOrdered(e,t),location:r},mutuallyExclusive:(e,t,r)=>({isValid:2>i.getIntersectionLength(e,t),location:r.key()}),mutuallyRequired:(e,t,r)=>({isValid:!(i.getIntersectionLength(e,t)>0)||i.getIntersectionLength(e,t)===t.length,location:r.key()}),requireAny:(e,t,r)=>({isValid:i.getIntersectionLength(e,t)>=1,location:r.key()}),ref(e,t,r,n){if(void 0===n)return{isValid:!0};let o=n.hasOwnProperty("$ref");if("boolean"==typeof t)return{isValid:t?o:!o,location:o?r:r.key()};let a=i.regexFromString(t);return{isValid:o&&(null==a?void 0:a.test(n.$ref)),location:o?r:r.key()}}}},4015:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Assertions=void 0;let n=r(9740),i=r(5738);t.Assertions=e=>{let t=[],r=Object.values(e).filter((e=>"object"==typeof e&&null!==e));for(let[e,o]of r.entries()){let r=o.assertionId&&`${o.assertionId} assertion`||`assertion #${e+1}`;if(!o.subject)throw Error(`${r}: 'subject' is required`);let a=Array.isArray(o.subject)?o.subject:[o.subject],s=Object.keys(n.asserts).filter((e=>void 0!==o[e])).map((e=>({assertId:r,name:e,conditions:o[e],message:o.message,severity:o.severity||"error",suggest:o.suggest||[],runsOnKeys:n.runOnKeysSet.has(e),runsOnValues:n.runOnValuesSet.has(e)}))),l=s.find((e=>e.runsOnKeys&&!e.runsOnValues)),c=s.find((e=>e.runsOnValues&&!e.runsOnKeys));if(c&&!o.property)throw Error(`${c.name} can't be used on all keys. Please provide a single property.`);if(l&&o.property)throw Error(`${l.name} can't be used on a single property. Please use 'property'.`);for(let e of a){let r=i.buildSubjectVisitor(o.property,s,o.context),n=i.buildVisitorObject(e,o.context,r);t.push(n)}}return t}},5738:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.regexFromString=t.isOrdered=t.getIntersectionLength=t.buildSubjectVisitor=t.buildVisitorObject=void 0;let n=r(7468),i=r(9740);function o({values:e,rawValues:t,assert:r,location:n,report:o}){let a=i.asserts[r.name](e,r.conditions,n,t);a.isValid||o({message:r.message||`The ${r.assertId} doesn't meet required conditions`,location:a.location||n,forceSeverity:r.severity,suggest:r.suggest,ruleId:r.assertId})}t.buildVisitorObject=function(e,t,r){if(!t)return{[e]:r};let n={},i=n;for(let r=0;ro?!o.includes(t):a?a.includes(t):void 0}:{},n=n[i.type]}return n[e]=r,i},t.buildSubjectVisitor=function(e,t,r){return(i,{report:a,location:s,rawLocation:l,key:c,type:u,resolve:p,rawNode:d})=>{var f;if(r){let e=r[r.length-1];if(e.type===u.name){let t=e.matchParentKeys,r=e.excludeParentKeys;if(t&&!t.includes(c)||r&&r.includes(c))return}}for(let r of(e&&(e=Array.isArray(e)?e:[e]),t)){let t="ref"===r.name?l:s;if(e)for(let s of e)o({values:n.isRef(i[s])?null===(f=p(i[s]))||void 0===f?void 0:f.node:i[s],rawValues:d[s],assert:r,location:t.child(s),report:a});else{let e="ref"===r.name?d:Object.keys(i);o({values:Object.keys(i),rawValues:e,assert:r,location:t,report:a})}}}},t.getIntersectionLength=function(e,t){let r=new Set(t),n=0;for(let t of e)r.has(t)&&n++;return n},t.isOrdered=function(e,t){let r=t.direction||t,n=t.property;for(let t=1;t=o:i<=o))return!1}return!0},t.regexFromString=function(e){let t=e.match(/^\/(.*)\/(.*)|(.*)/);return t&&RegExp(t[1]||t[3],t[2])}},8265:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InfoContact=void 0;let n=r(780);t.InfoContact=()=>({Info(e,{report:t,location:r}){e.contact||t({message:n.missingRequiredField("Info","contact"),location:r.child("contact").key()})}})},8675:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InfoDescription=void 0;let n=r(780);t.InfoDescription=()=>({Info(e,t){n.validateDefinedAndNonEmpty("description",e,t)}})},9622:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InfoLicense=void 0;let n=r(780);t.InfoLicense=()=>({Info(e,{report:t}){e.license||t({message:n.missingRequiredField("Info","license"),location:{reportOnKey:!0}})}})},476:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InfoLicenseUrl=void 0;let n=r(780);t.InfoLicenseUrl=()=>({License(e,t){n.validateDefinedAndNonEmpty("url",e,t)}})},3467:function(e,t){"use strict";function r(e,t){let r=e.split("/"),n=t.split("/");if(r.length!==n.length)return!1;let i=0,o=0,a=!0;for(let e=0;e({PathMap(e,{report:t,location:n}){let i=[];for(let o of Object.keys(e)){let e=i.find((e=>r(e,o)));e&&t({message:`Paths should resolve unambiguously. Found two ambiguous paths: \`${e}\` and \`${o}\`.`,location:n.child([o]).key()}),i.push(o)}}})},2319:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoEnumTypeMismatch=void 0;let n=r(780);t.NoEnumTypeMismatch=()=>({Schema(e,{report:t,location:r}){if(!e.enum||Array.isArray(e.enum)){if(e.enum&&e.type&&!Array.isArray(e.type)){let i=e.enum.filter((t=>!n.matchesJsonSchemaType(t,e.type,e.nullable)));for(let o of i)t({message:`All values of \`enum\` field must be of the same type as the \`type\` field: expected "${e.type}" but received "${n.oasTypeOf(o)}".`,location:r.child(["enum",e.enum.indexOf(o)])})}if(e.enum&&e.type&&Array.isArray(e.type)){let i={};for(let t of e.enum){for(let r of(i[t]=[],e.type))n.matchesJsonSchemaType(t,r,e.nullable)||i[t].push(r);i[t].length!==e.type.length&&delete i[t]}for(let n of Object.keys(i))t({message:`Enum value \`${n}\` must be of one type. Allowed types: \`${e.type}\`.`,location:r.child(["enum",e.enum.indexOf(n)])})}}}})},525:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoHttpVerbsInPaths=void 0;let n=r(771),i=["get","head","post","put","patch","delete","options","trace"];t.NoHttpVerbsInPaths=({splitIntoWords:e})=>({PathItem(t,{key:r,report:o,location:a}){let s=r.toString();if(!s.startsWith("/"))return;let l=s.split("/");for(let t of l){if(!t||n.isPathParameter(t))continue;let r=r=>e?n.splitCamelCaseIntoWords(t).has(r):t.toLocaleLowerCase().includes(r);for(let e of i)r(e)&&o({message:`path \`${s}\` should not contain http verb ${e}`,location:a.key()})}}})},4628:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoIdenticalPaths=void 0,t.NoIdenticalPaths=()=>({PathMap(e,{report:t,location:r}){let n=new Map;for(let i of Object.keys(e)){let e=i.replace(/{.+?}/g,"{VARIABLE}"),o=n.get(e);o?t({message:`The path already exists which differs only by path parameter name(s): \`${o}\` and \`${i}\`.`,location:r.child([i]).key()}):n.set(e,i)}}})},1562:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoInvalidParameterExamples=void 0;let n=r(780);t.NoInvalidParameterExamples=e=>{var t;let r=null===(t=e.disallowAdditionalProperties)||void 0===t||t;return{Parameter:{leave(e,t){if(e.example&&n.validateExample(e.example,e.schema,t.location.child("example"),t,r),e.examples)for(let[r,i]of Object.entries(e.examples))"value"in i&&n.validateExample(i.value,e.schema,t.location.child(["examples",r]),t,!1)}}}}},78:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoInvalidSchemaExamples=void 0;let n=r(780);t.NoInvalidSchemaExamples=e=>{var t;let r=null===(t=e.disallowAdditionalProperties)||void 0===t||t;return{Schema:{leave(e,t){if(e.examples)for(let i of e.examples)n.validateExample(i,e,t.location.child(["examples",e.examples.indexOf(i)]),t,r);e.example&&n.validateExample(e.example,e,t.location.child("example"),t,!1)}}}}},700:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoPathTrailingSlash=void 0,t.NoPathTrailingSlash=()=>({PathItem(e,{report:t,key:r,location:n}){r.endsWith("/")&&"/"!==r&&t({message:`\`${r}\` should not have a trailing slash.`,location:n.key()})}})},5946:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Operation2xxResponse=void 0,t.Operation2xxResponse=()=>({ResponsesMap(e,{report:t}){Object.keys(e).some((e=>"default"===e||/2[Xx0-9]{2}/.test(e)))||t({message:"Operation must have at least one `2xx` response.",location:{reportOnKey:!0}})}})},5281:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Operation4xxResponse=void 0,t.Operation4xxResponse=()=>({ResponsesMap(e,{report:t}){Object.keys(e).some((e=>/4[Xx0-9]{2}/.test(e)))||t({message:"Operation must have at least one `4xx` response.",location:{reportOnKey:!0}})}})},3408:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationDescription=void 0;let n=r(780);t.OperationDescription=()=>({Operation(e,t){n.validateDefinedAndNonEmpty("description",e,t)}})},8742:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationIdUnique=void 0,t.OperationIdUnique=()=>{let e=new Set;return{Operation(t,{report:r,location:n}){t.operationId&&(e.has(t.operationId)&&r({message:"Every operation must have a unique `operationId`.",location:n.child([t.operationId])}),e.add(t.operationId))}}}},5064:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationIdUrlSafe=void 0;let r=/^[A-Za-z0-9-._~:/?#\[\]@!\$&'()*+,;=]*$/;t.OperationIdUrlSafe=()=>({Operation(e,{report:t,location:n}){e.operationId&&!r.test(e.operationId)&&t({message:"Operation `operationId` should not have URL invalid characters.",location:n.child(["operationId"])})}})},8786:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationOperationId=void 0;let n=r(780);t.OperationOperationId=()=>({DefinitionRoot:{PathItem:{Operation(e,t){n.validateDefinedAndNonEmpty("operationId",e,t)}}}})},4112:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationParametersUnique=void 0,t.OperationParametersUnique=()=>{let e,t;return{PathItem:{enter(){e=new Set},Parameter(t,{report:r,key:n,parentLocations:i}){let o=`${t.in}___${t.name}`;e.has(o)&&r({message:`Paths must have unique \`name\` + \`in\` parameters.\nRepeats of \`in:${t.in}\` + \`name:${t.name}\`.`,location:i.PathItem.child(["parameters",n])}),e.add(`${t.in}___${t.name}`)},Operation:{enter(){t=new Set},Parameter(e,{report:r,key:n,parentLocations:i}){let o=`${e.in}___${e.name}`;t.has(o)&&r({message:`Operations must have unique \`name\` + \`in\` parameters. Repeats of \`in:${e.in}\` + \`name:${e.name}\`.`,location:i.Operation.child(["parameters",n])}),t.add(o)}}}}}},7892:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationSecurityDefined=void 0,t.OperationSecurityDefined=()=>{let e=new Map;return{DefinitionRoot:{leave(t,{report:r}){for(let[t,n]of e.entries())if(!n.defined)for(let e of n.from)r({message:`There is no \`${t}\` security scheme defined.`,location:e.key()})}},SecurityScheme(t,{key:r}){e.set(r.toString(),{defined:!0,from:[]})},SecurityRequirement(t,{location:r}){for(let n of Object.keys(t)){let t=e.get(n),i=r.child([n]);t?t.from.push(i):e.set(n,{from:[i]})}}}}},8613:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationSingularTag=void 0,t.OperationSingularTag=()=>({Operation(e,{report:t,location:r}){e.tags&&e.tags.length>1&&t({message:"Operation `tags` object should have only one tag.",location:r.child(["tags"]).key()})}})},9578:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationSummary=void 0;let n=r(780);t.OperationSummary=()=>({Operation(e,t){n.validateDefinedAndNonEmpty("summary",e,t)}})},5097:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationTagDefined=void 0,t.OperationTagDefined=()=>{let e;return{DefinitionRoot(t){var r;e=new Set((null!==(r=t.tags)&&void 0!==r?r:[]).map((e=>e.name)))},Operation(t,{report:r,location:n}){if(t.tags)for(let i=0;i({Parameter(e,{report:t,location:r}){void 0===e.description?t({message:"Parameter object description must be present.",location:{reportOnKey:!0}}):e.description||t({message:"Parameter object description must be non-empty string.",location:r.child(["description"])})}})},7890:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathDeclarationMustExist=void 0,t.PathDeclarationMustExist=()=>({PathItem(e,{report:t,key:r}){-1!==r.indexOf("{}")&&t({message:"Path parameter declarations must be non-empty. `{}` is invalid.",location:{reportOnKey:!0}})}})},3689:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathExcludesPatterns=void 0,t.PathExcludesPatterns=({patterns:e})=>({PathItem(t,{report:r,key:n,location:i}){if(!e)throw Error('Parameter "patterns" is not provided for "path-excludes-patterns" rule');let o=n.toString();if(o.startsWith("/")){let t=e.filter((e=>o.match(e)));for(let e of t)r({message:`path \`${o}\` should not match regex pattern: \`${e}\``,location:i.key()})}}})},2332:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathHttpVerbsOrder=void 0;let r=["get","head","post","put","patch","delete","options","trace"];t.PathHttpVerbsOrder=e=>{let t=e&&e.order||r;if(!Array.isArray(t))throw Error("path-http-verbs-order `order` option must be an array");return{PathItem(e,{report:r,location:n}){let i=Object.keys(e).filter((e=>t.includes(e)));for(let e=0;e({PathMap:{PathItem(e,{report:t,key:r}){r.toString().includes("?")&&t({message:"Don't put query string items in the path, they belong in parameters with `in: query`.",location:{reportOnKey:!0}})}}})},7421:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathParamsDefined=void 0;let r=/\{([a-zA-Z0-9_.-]+)\}+/g;t.PathParamsDefined=()=>{let e,t,n;return{PathItem:{enter(i,{key:o}){t=new Set,n=o,e=new Set(Array.from(o.toString().matchAll(r)).map((e=>e[1])))},Parameter(r,{report:i,location:o}){"path"===r.in&&r.name&&(t.add(r.name),e.has(r.name)||i({message:`Path parameter \`${r.name}\` is not used in the path \`${n}\`.`,location:o.child(["name"])}))},Operation:{leave(r,{report:i,location:o}){for(let r of Array.from(e.keys()))t.has(r)||i({message:`The operation does not define the path parameter \`{${r}}\` expected by path \`${n}\`.`,location:o.child(["parameters"]).key()})},Parameter(r,{report:i,location:o}){"path"===r.in&&r.name&&(t.add(r.name),e.has(r.name)||i({message:`Path parameter \`${r.name}\` is not used in the path \`${n}\`.`,location:o.child(["name"])}))}}}}}},3807:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathSegmentPlural=void 0;let n=r(771);t.PathSegmentPlural=e=>{let{ignoreLastPathSegment:t,exceptions:r}=e;return{PathItem:{leave(e,{report:i,key:o,location:a}){let s=o.toString();if(s.startsWith("/")){let e=s.split("/");for(let o of(e.shift(),t&&e.length>1&&e.pop(),e))r&&r.includes(o)||!n.isPathParameter(o)&&n.isSingular(o)&&i({message:`path segment \`${o}\` should be plural.`,location:a.key()})}}}}}},9527:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathsKebabCase=void 0,t.PathsKebabCase=()=>({PathItem(e,{report:t,key:r}){r.substr(1).split("/").filter((e=>""!==e)).every((e=>/^{.+}$/.test(e)||/^[a-z0-9-.]+$/.test(e)))||t({message:`\`${r}\` does not use kebab-case.`,location:{reportOnKey:!0}})}})},5839:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ResponseContainsHeader=void 0;let n=r(771);t.ResponseContainsHeader=e=>{let t=e.names||{};return{Operation:{Response:{enter(e,{report:r,location:i,key:o}){var a;let s=t[o]||t[n.getMatchingStatusCodeRange(o)]||t[n.getMatchingStatusCodeRange(o).toLowerCase()]||[];for(let t of s)(null===(a=e.headers)||void 0===a?void 0:a[t])||r({message:`Response object must contain a "${t}" header.`,location:i.child("headers").key()})}}}}}},5669:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ScalarPropertyMissingExample=void 0;let n=r(1510),i=["string","integer","number","boolean","null"];t.ScalarPropertyMissingExample=()=>({SchemaProperties(e,{report:t,location:r,oasVersion:o,resolve:a}){var s;for(let l of Object.keys(e)){let c=a(e[l]).node;c&&(s=c).type&&!(s.allOf||s.anyOf||s.oneOf)&&"binary"!==s.format&&(Array.isArray(s.type)?s.type.every((e=>i.includes(e))):i.includes(s.type))&&void 0===c.example&&void 0===c.examples&&t({message:`Scalar property should have "example"${o===n.OasVersion.Version3_1?' or "examples"':""} defined.`,location:r.child(l).key()})}}})},6471:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OasSpec=void 0;let n=r(5220),i=r(780),o=r(7468),a=r(771);t.OasSpec=()=>({any(e,{report:t,type:r,location:s,key:l,resolve:c,ignoreNextVisitorsOnNode:u}){var p,d,f,h;let m=i.oasTypeOf(e);if(r.items)return void("array"!==m&&(t({message:`Expected type \`${r.name}\` (array) but got \`${m}\``}),u()));if("object"!==m)return t({message:`Expected type \`${r.name}\` (object) but got \`${m}\``}),void u();let g="function"==typeof r.required?r.required(e,l):r.required;for(let r of g||[])e.hasOwnProperty(r)||t({message:`The field \`${r}\` must be present on this level.`,location:[{reportOnKey:!0}]});let y=null===(p=r.allowed)||void 0===p?void 0:p.call(r,e);if(y&&a.isPlainObject(e))for(let n in e)y.includes(n)||r.extensionsPrefix&&n.startsWith(r.extensionsPrefix)||!Object.keys(r.properties).includes(n)||t({message:`The field \`${n}\` is not allowed here.`,location:s.child([n]).key()});let v=r.requiredOneOf||null;if(v){let n=!1;for(let t of v||[])e.hasOwnProperty(t)&&(n=!0);n||t({message:`Must contain at least one of the following fields: ${null===(d=r.requiredOneOf)||void 0===d?void 0:d.join(", ")}.`,location:[{reportOnKey:!0}]})}for(let a of Object.keys(e)){let l=s.child([a]),u=e[a],p=r.properties[a];if(void 0===p&&(p=r.additionalProperties),"function"==typeof p&&(p=p(u,a)),n.isNamedType(p))continue;let d=p,m=i.oasTypeOf(u);if(void 0!==d){if(null!==d){if(!1!==d.resolvable&&o.isRef(u)&&(u=c(u).node),d.enum)d.enum.includes(u)||t({location:l,message:`\`${a}\` can be one of the following only: ${d.enum.map((e=>`"${e}"`)).join(", ")}.`,suggest:i.getSuggest(u,d.enum)});else if(d.type&&!i.matchesJsonSchemaType(u,d.type,!1))t({message:`Expected type \`${d.type}\` but got \`${m}\`.`,location:l});else if("array"===m&&(null===(f=d.items)||void 0===f?void 0:f.type)){let e=null===(h=d.items)||void 0===h?void 0:h.type;for(let r=0;re[a]&&t({message:`The value of the ${a} field must be greater than or equal to ${d.minimum}`,location:s.child([a])})}}else{if(a.startsWith("x-"))continue;t({message:`Property \`${a}\` is not expected here.`,suggest:i.getSuggest(a,Object.keys(r.properties)),location:l.key()})}}}})},7281:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TagDescription=void 0;let n=r(780);t.TagDescription=()=>({Tag(e,t){n.validateDefinedAndNonEmpty("description",e,t)}})},6855:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TagsAlphabetical=void 0,t.TagsAlphabetical=()=>({DefinitionRoot(e,{report:t,location:r}){if(e.tags)for(let n=0;ne.tags[n+1].name&&t({message:"The `tags` array should be in alphabetical order.",location:r.child(["tags",n])})}})},348:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reportUnresolvedRef=t.NoUnresolvedRefs=void 0;let n=r(4182);function i(e,t,r){var i;let o=e.error;o instanceof n.YamlParseError&&t({message:"Failed to parse: "+o.message,location:{source:o.source,pointer:void 0,start:{col:o.col,line:o.line}}});let a=null===(i=e.error)||void 0===i?void 0:i.message;t({location:r,message:"Can't resolve $ref"+(a?": "+a:"")})}t.NoUnresolvedRefs=()=>({ref:{leave(e,{report:t,location:r},n){void 0===n.node&&i(n,t,r)}},DiscriminatorMapping(e,{report:t,resolve:r,location:n}){for(let o of Object.keys(e)){let a=r({$ref:e[o]});if(void 0!==a.node)return;i(a,t,n.child(o))}}}),t.reportUnresolvedRef=i},9566:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BooleanParameterPrefixes=void 0,t.BooleanParameterPrefixes=e=>{let t=e.prefixes||["is","has"],r=RegExp(`^(${t.join("|")})[A-Z-_]`),n=t.map((e=>`\`${e}\``)),i=1===n.length?n[0]:n.slice(0,-1).join(", ")+" or "+n[t.length-1];return{Parameter(e,{report:t,location:n}){"boolean"!==e.type||r.test(e.name)||t({message:`Boolean parameter \`${e.name}\` should have ${i} prefix.`,location:n.child("name")})}}}},7523:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preprocessors=t.rules=void 0;let n=r(6471),i=r(78),o=r(1562),a=r(8675),s=r(8265),l=r(9622),c=r(476),u=r(9566),p=r(7281),d=r(6855),f=r(9527),h=r(2319),m=r(700),g=r(5946),y=r(5281),v=r(4015),b=r(8742),x=r(4112),w=r(7421),k=r(5097),_=r(7890),O=r(5064),S=r(3408),E=r(5023),P=r(3529),A=r(8613),$=r(7892),C=r(348),R=r(2332),j=r(4628),T=r(8786),I=r(9578),N=r(3467),L=r(525),D=r(3689),M=r(7028),F=r(1750),z=r(3807),U=r(5839),V=r(7899),B=r(5669);t.rules={spec:n.OasSpec,"no-invalid-schema-examples":i.NoInvalidSchemaExamples,"no-invalid-parameter-examples":o.NoInvalidParameterExamples,"info-description":a.InfoDescription,"info-contact":s.InfoContact,"info-license":l.InfoLicense,"info-license-url":c.InfoLicenseUrl,"tag-description":p.TagDescription,"tags-alphabetical":d.TagsAlphabetical,"paths-kebab-case":f.PathsKebabCase,"no-enum-type-mismatch":h.NoEnumTypeMismatch,"boolean-parameter-prefixes":u.BooleanParameterPrefixes,"no-path-trailing-slash":m.NoPathTrailingSlash,"operation-2xx-response":g.Operation2xxResponse,"operation-4xx-response":y.Operation4xxResponse,assertions:v.Assertions,"operation-operationId-unique":b.OperationIdUnique,"operation-parameters-unique":x.OperationParametersUnique,"path-parameters-defined":w.PathParamsDefined,"operation-tag-defined":k.OperationTagDefined,"path-declaration-must-exist":_.PathDeclarationMustExist,"operation-operationId-url-safe":O.OperationIdUrlSafe,"operation-operationId":T.OperationOperationId,"operation-summary":I.OperationSummary,"operation-description":S.OperationDescription,"path-not-include-query":E.PathNotIncludeQuery,"path-params-defined":w.PathParamsDefined,"parameter-description":P.ParameterDescription,"operation-singular-tag":A.OperationSingularTag,"operation-security-defined":$.OperationSecurityDefined,"no-unresolved-refs":C.NoUnresolvedRefs,"no-identical-paths":j.NoIdenticalPaths,"no-ambiguous-paths":N.NoAmbiguousPaths,"path-http-verbs-order":R.PathHttpVerbsOrder,"no-http-verbs-in-paths":L.NoHttpVerbsInPaths,"path-excludes-patterns":D.PathExcludesPatterns,"request-mime-type":M.RequestMimeType,"response-mime-type":F.ResponseMimeType,"path-segment-plural":z.PathSegmentPlural,"response-contains-header":U.ResponseContainsHeader,"response-contains-property":V.ResponseContainsProperty,"scalar-property-missing-example":B.ScalarPropertyMissingExample},t.preprocessors={}},4508:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RemoveUnusedComponents=void 0;let n=r(771);t.RemoveUnusedComponents=()=>{let e=new Map;function t(t,r,n){var i;e.set(t.absolutePointer,{used:(null===(i=e.get(t.absolutePointer))||void 0===i?void 0:i.used)||!1,componentType:r,name:n})}return{ref:{leave(t,{type:r,resolve:n,key:i}){if(["Schema","Parameter","Response","SecurityScheme"].includes(r.name)){let r=n(t);r.location&&e.set(r.location.absolutePointer,{used:!0,name:i.toString()})}}},DefinitionRoot:{leave(t,r){let i=r.getVisitorData();i.removedCount=0;let o=new Set;for(let r of(e.forEach((e=>{let{used:r,name:n,componentType:a}=e;!r&&a&&(o.add(a),delete t[a][n],i.removedCount++)})),o))n.isEmptyObject(t[r])&&delete t[r]}},NamedSchemas:{Schema(e,{location:r,key:n}){e.allOf||t(r,"definitions",n.toString())}},NamedParameters:{Parameter(e,{location:r,key:n}){t(r,"parameters",n.toString())}},NamedResponses:{Response(e,{location:r,key:n}){t(r,"responses",n.toString())}},NamedSecuritySchemes:{SecurityScheme(e,{location:r,key:n}){t(r,"securityDefinitions",n.toString())}}}}},7028:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RequestMimeType=void 0;let n=r(771);t.RequestMimeType=({allowedValues:e})=>({DefinitionRoot(t,r){n.validateMimeType({type:"consumes",value:t},r,e)},Operation:{leave(t,r){n.validateMimeType({type:"consumes",value:t},r,e)}}})},7899:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ResponseContainsProperty=void 0;let n=r(771);t.ResponseContainsProperty=e=>{let t,r=e.names||{};return{Operation:{Response:{skip:(e,t)=>"204"==`${t}`,enter(e,r){t=r.key},Schema(e,{report:i,location:o}){var a;if("object"!==e.type)return;let s=r[t]||r[n.getMatchingStatusCodeRange(t)]||r[n.getMatchingStatusCodeRange(t).toLowerCase()]||[];for(let t of s)(null===(a=e.properties)||void 0===a?void 0:a[t])||i({message:`Response object must contain a top-level "${t}" property.`,location:o.child("properties").key()})}}}}}},1750:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ResponseMimeType=void 0;let n=r(771);t.ResponseMimeType=({allowedValues:e})=>({DefinitionRoot(t,r){n.validateMimeType({type:"produces",value:t},r,e)},Operation:{leave(t,r){n.validateMimeType({type:"produces",value:t},r,e)}}})},962:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BooleanParameterPrefixes=void 0,t.BooleanParameterPrefixes=e=>{let t=e.prefixes||["is","has"],r=RegExp(`^(${t.join("|")})[A-Z-_]`),n=t.map((e=>`\`${e}\``)),i=1===n.length?n[0]:n.slice(0,-1).join(", ")+" or "+n[t.length-1];return{Parameter:{Schema(e,{report:t,parentLocations:n},o){"boolean"!==e.type||r.test(o.Parameter.name)||t({message:`Boolean parameter \`${o.Parameter.name}\` should have ${i} prefix.`,location:n.Parameter.child(["name"])})}}}}},226:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preprocessors=t.rules=void 0;let n=r(6471),i=r(5946),o=r(5281),a=r(4015),s=r(8742),l=r(4112),c=r(7421),u=r(5097),p=r(1265),d=r(2319),f=r(700),h=r(7890),m=r(5064),g=r(6855),y=r(5486),v=r(2947),b=r(8675),x=r(7281),w=r(8265),k=r(9622),_=r(3408),O=r(897),S=r(5023),E=r(3529),P=r(8613),A=r(476),$=r(7892),C=r(348),R=r(962),j=r(9527),T=r(2332),I=r(7020),N=r(9336),L=r(4628),D=r(6208),M=r(8786),F=r(9578),z=r(3467),U=r(472),V=r(525),B=r(3736),q=r(503),W=r(3807),H=r(3689),Y=r(78),K=r(1562),G=r(5839),Q=r(7557),X=r(5669);t.rules={spec:n.OasSpec,"info-description":b.InfoDescription,"info-contact":w.InfoContact,"info-license":k.InfoLicense,"info-license-url":A.InfoLicenseUrl,"operation-2xx-response":i.Operation2xxResponse,"operation-4xx-response":o.Operation4xxResponse,assertions:a.Assertions,"operation-operationId-unique":s.OperationIdUnique,"operation-parameters-unique":l.OperationParametersUnique,"path-parameters-defined":c.PathParamsDefined,"operation-tag-defined":u.OperationTagDefined,"no-example-value-and-externalValue":p.NoExampleValueAndExternalValue,"no-enum-type-mismatch":d.NoEnumTypeMismatch,"no-path-trailing-slash":f.NoPathTrailingSlash,"no-empty-servers":I.NoEmptyServers,"path-declaration-must-exist":h.PathDeclarationMustExist,"operation-operationId-url-safe":m.OperationIdUrlSafe,"operation-operationId":M.OperationOperationId,"operation-summary":F.OperationSummary,"tags-alphabetical":g.TagsAlphabetical,"no-server-example.com":y.NoServerExample,"no-server-trailing-slash":v.NoServerTrailingSlash,"tag-description":x.TagDescription,"operation-description":_.OperationDescription,"no-unused-components":O.NoUnusedComponents,"path-not-include-query":S.PathNotIncludeQuery,"path-params-defined":c.PathParamsDefined,"parameter-description":E.ParameterDescription,"operation-singular-tag":P.OperationSingularTag,"operation-security-defined":$.OperationSecurityDefined,"no-unresolved-refs":C.NoUnresolvedRefs,"paths-kebab-case":j.PathsKebabCase,"boolean-parameter-prefixes":R.BooleanParameterPrefixes,"path-http-verbs-order":T.PathHttpVerbsOrder,"no-invalid-media-type-examples":N.ValidContentExamples,"no-identical-paths":L.NoIdenticalPaths,"no-ambiguous-paths":z.NoAmbiguousPaths,"no-undefined-server-variable":D.NoUndefinedServerVariable,"no-servers-empty-enum":U.NoEmptyEnumServers,"no-http-verbs-in-paths":V.NoHttpVerbsInPaths,"path-excludes-patterns":H.PathExcludesPatterns,"request-mime-type":B.RequestMimeType,"response-mime-type":q.ResponseMimeType,"path-segment-plural":W.PathSegmentPlural,"no-invalid-schema-examples":Y.NoInvalidSchemaExamples,"no-invalid-parameter-examples":K.NoInvalidParameterExamples,"response-contains-header":G.ResponseContainsHeader,"response-contains-property":Q.ResponseContainsProperty,"scalar-property-missing-example":X.ScalarPropertyMissingExample},t.preprocessors={}},7020:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoEmptyServers=void 0,t.NoEmptyServers=()=>({DefinitionRoot(e,{report:t,location:r}){e.hasOwnProperty("servers")?Array.isArray(e.servers)&&0!==e.servers.length||t({message:"Servers must be a non-empty array.",location:r.child(["servers"]).key()}):t({message:"Servers must be present.",location:r.child(["openapi"]).key()})}})},1265:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoExampleValueAndExternalValue=void 0,t.NoExampleValueAndExternalValue=()=>({Example(e,{report:t,location:r}){e.value&&e.externalValue&&t({message:"Example object can have either `value` or `externalValue` fields.",location:r.child(["value"]).key()})}})},9336:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ValidContentExamples=void 0;let n=r(7468),i=r(780);t.ValidContentExamples=e=>{var t;let r=null===(t=e.disallowAdditionalProperties)||void 0===t||t;return{MediaType:{leave(e,t){let{location:o,resolve:a}=t;if(e.schema)if(e.example)s(e.example,o.child("example"));else if(e.examples)for(let t of Object.keys(e.examples))s(e.examples[t],o.child(["examples",t,"value"]),!0);function s(o,s,l){if(n.isRef(o)){let e=a(o);if(!e.location)return;s=l?e.location.child("value"):e.location,o=e.node}i.validateExample(l?o.value:o,e.schema,s,t,r)}}}}}},5486:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoServerExample=void 0,t.NoServerExample=()=>({Server(e,{report:t,location:r}){-1!==["example.com","localhost"].indexOf(e.url)&&t({message:"Server `url` should not point at example.com.",location:r.child(["url"])})}})},2947:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoServerTrailingSlash=void 0,t.NoServerTrailingSlash=()=>({Server(e,{report:t,location:r}){e.url&&e.url.endsWith("/")&&"/"!==e.url&&t({message:"Server `url` should not have a trailing slash.",location:r.child(["url"])})}})},472:function(e,t){"use strict";var r,n;function i(e){var t;if(e.variables&&0===Object.keys(e.variables).length)return;let n=[];for(var i in e.variables){let o=e.variables[i];if(!o.enum||(Array.isArray(o.enum)&&0===(null===(t=o.enum)||void 0===t?void 0:t.length)&&n.push(r.empty),!o.default))continue;let a=e.variables[i].default;o.enum&&!o.enum.includes(a)&&n.push(r.invalidDefaultValue)}return n.length?n:void 0}Object.defineProperty(t,"__esModule",{value:!0}),t.NoEmptyEnumServers=void 0,(n=r||(r={})).empty="empty",n.invalidDefaultValue="invalidDefaultValue",t.NoEmptyEnumServers=()=>({DefinitionRoot(e,{report:t,location:n}){if(!e.servers||0===e.servers.length)return;let o=[];if(Array.isArray(e.servers))for(let t of e.servers){let e=i(t);e&&o.push(...e)}else{let t=i(e.servers);if(!t)return;o.push(...t)}for(let e of o)e===r.empty&&t({message:"Server variable with `enum` must be a non-empty array.",location:n.child(["servers"]).key()}),e===r.invalidDefaultValue&&t({message:"Server variable define `enum` and `default`. `enum` must include default value",location:n.child(["servers"]).key()})}})},6208:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoUndefinedServerVariable=void 0,t.NoUndefinedServerVariable=()=>({Server(e,{report:t,location:r}){var n;if(!e.url)return;let i=(null===(n=e.url.match(/{[^}]+}/g))||void 0===n?void 0:n.map((e=>e.slice(1,e.length-1))))||[],o=(null==e?void 0:e.variables)&&Object.keys(e.variables)||[];for(let e of i)o.includes(e)||t({message:`The \`${e}\` variable is not defined in the \`variables\` objects.`,location:r.child(["url"])});for(let e of o)i.includes(e)||t({message:`The \`${e}\` variable is not used in the server's \`url\` field.`,location:r.child(["variables",e]).key(),from:r.child("url")})}})},897:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoUnusedComponents=void 0,t.NoUnusedComponents=()=>{let e=new Map;function t(t,r){var n;e.set(t.absolutePointer,{used:(null===(n=e.get(t.absolutePointer))||void 0===n?void 0:n.used)||!1,location:t,name:r})}return{ref(t,{type:r,resolve:n,key:i,location:o}){if(["Schema","Header","Parameter","Response","Example","RequestBody"].includes(r.name)){let r=n(t);r.location&&e.set(r.location.absolutePointer,{used:!0,name:i.toString(),location:o})}},DefinitionRoot:{leave(t,{report:r}){e.forEach((e=>{e.used||r({message:`Component: "${e.name}" is never used.`,location:e.location.key()})}))}},NamedSchemas:{Schema(e,{location:r,key:n}){e.allOf||t(r,n.toString())}},NamedParameters:{Parameter(e,{location:r,key:n}){t(r,n.toString())}},NamedResponses:{Response(e,{location:r,key:n}){t(r,n.toString())}},NamedExamples:{Example(e,{location:r,key:n}){t(r,n.toString())}},NamedRequestBodies:{RequestBody(e,{location:r,key:n}){t(r,n.toString())}},NamedHeaders:{Header(e,{location:r,key:n}){t(r,n.toString())}}}}},6350:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RemoveUnusedComponents=void 0;let n=r(771);t.RemoveUnusedComponents=()=>{let e=new Map;function t(t,r,n){var i;e.set(t.absolutePointer,{used:(null===(i=e.get(t.absolutePointer))||void 0===i?void 0:i.used)||!1,componentType:r,name:n})}return{ref:{leave(t,{type:r,resolve:n,key:i}){if(["Schema","Header","Parameter","Response","Example","RequestBody"].includes(r.name)){let r=n(t);r.location&&e.set(r.location.absolutePointer,{used:!0,name:i.toString()})}}},DefinitionRoot:{leave(t,r){let i=r.getVisitorData();i.removedCount=0,e.forEach((e=>{let{used:r,componentType:o,name:a}=e;if(!r&&o){let e=t.components[o];delete e[a],i.removedCount++,n.isEmptyObject(e)&&delete t.components[o]}})),n.isEmptyObject(t.components)&&delete t.components}},NamedSchemas:{Schema(e,{location:r,key:n}){e.allOf||t(r,"schemas",n.toString())}},NamedParameters:{Parameter(e,{location:r,key:n}){t(r,"parameters",n.toString())}},NamedResponses:{Response(e,{location:r,key:n}){t(r,"responses",n.toString())}},NamedExamples:{Example(e,{location:r,key:n}){t(r,"examples",n.toString())}},NamedRequestBodies:{RequestBody(e,{location:r,key:n}){t(r,"requestBodies",n.toString())}},NamedHeaders:{Header(e,{location:r,key:n}){t(r,"headers",n.toString())}}}}},3736:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RequestMimeType=void 0;let n=r(771);t.RequestMimeType=({allowedValues:e})=>({PathMap:{RequestBody:{leave(t,r){n.validateMimeTypeOAS3({type:"consumes",value:t},r,e)}},Callback:{RequestBody(){},Response:{leave(t,r){n.validateMimeTypeOAS3({type:"consumes",value:t},r,e)}}}},WebhooksMap:{Response:{leave(t,r){n.validateMimeTypeOAS3({type:"consumes",value:t},r,e)}}}})},7557:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ResponseContainsProperty=void 0;let n=r(771);t.ResponseContainsProperty=e=>{let t,r=e.names||{};return{Operation:{Response:{skip:(e,t)=>"204"==`${t}`,enter(e,r){t=r.key},MediaType:{Schema(e,{report:i,location:o}){var a;if("object"!==e.type)return;let s=r[t]||r[n.getMatchingStatusCodeRange(t)]||r[n.getMatchingStatusCodeRange(t).toLowerCase()]||[];for(let t of s)(null===(a=e.properties)||void 0===a?void 0:a[t])||i({message:`Response object must contain a top-level "${t}" property.`,location:o.child("properties").key()})}}}}}}},503:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ResponseMimeType=void 0;let n=r(771);t.ResponseMimeType=({allowedValues:e})=>({PathMap:{Response:{leave(t,r){n.validateMimeTypeOAS3({type:"produces",value:t},r,e)}},Callback:{Response(){},RequestBody:{leave(t,r){n.validateMimeTypeOAS3({type:"produces",value:t},r,e)}}}},WebhooksMap:{RequestBody:{leave(t,r){n.validateMimeTypeOAS3({type:"produces",value:t},r,e)}}}})},780:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateExample=t.getSuggest=t.validateDefinedAndNonEmpty=t.fieldNonEmpty=t.missingRequiredField=t.matchesJsonSchemaType=t.oasTypeOf=void 0;let n=r(9991),i=r(7468),o=r(7275);function a(e,t){return`${e} object should contain \`${t}\` field.`}function s(e,t){return`${e} object \`${t}\` must be non-empty string.`}t.oasTypeOf=function(e){return Array.isArray(e)?"array":null===e?"null":typeof e},t.matchesJsonSchemaType=function(e,t,r){if(r&&null===e)return null===e;switch(t){case"array":return Array.isArray(e);case"object":return"object"==typeof e&&null!==e&&!Array.isArray(e);case"null":return null===e;case"integer":return Number.isInteger(e);default:return typeof e===t}},t.missingRequiredField=a,t.fieldNonEmpty=s,t.validateDefinedAndNonEmpty=function(e,t,r){"object"==typeof t&&(void 0===t[e]?r.report({message:a(r.type.name,e),location:r.location.child([e]).key()}):t[e]||r.report({message:s(r.type.name,e),location:r.location.child([e]).key()}))},t.getSuggest=function(e,t){if("string"!=typeof e||!t.length)return[];let r=[];for(let i=0;ie.distance-t.distance)),r.map((e=>e.variant))},t.validateExample=function(e,t,r,{resolve:n,location:a,report:s},l){try{let{valid:c,errors:u}=o.validateJsonSchema(e,t,a.child("schema"),r.pointer,n,l);if(!c)for(let e of u)s({message:`Example value must conform to the schema: ${e.message}.`,location:Object.assign(Object.assign({},new i.Location(r.source,e.instancePath)),{reportOnKey:"additionalProperties"===e.keyword}),from:a,suggest:e.suggest})}catch(e){s({message:`Example validation errored: ${e.message}.`,location:a.child("schema"),from:a})}}},5220:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isNamedType=t.normalizeTypes=t.mapOf=t.listOf=void 0,t.listOf=function(e){return{name:`${e}List`,properties:{},items:e}},t.mapOf=function(e){return{name:`${e}Map`,properties:{},additionalProperties:()=>e}},t.normalizeTypes=function(e,t={}){let r={};for(let t of Object.keys(e))r[t]=Object.assign(Object.assign({},e[t]),{name:t});for(let e of Object.values(r))n(e);return r;function n(e){if(e.additionalProperties&&(e.additionalProperties=i(e.additionalProperties)),e.items&&(e.items=i(e.items)),e.properties){let r={};for(let[n,o]of Object.entries(e.properties))r[n]=i(o),t.doNotResolveExamples&&o&&o.isExample&&(r[n]=Object.assign(Object.assign({},o),{resolvable:!1}));e.properties=r}}function i(e){if("string"==typeof e){if(!r[e])throw Error(`Unknown type name found: ${e}`);return r[e]}return"function"==typeof e?(t,r)=>i(e(t,r)):e&&e.name?(n(e=Object.assign({},e)),e):e&&e.directResolveAs?Object.assign(Object.assign({},e),{directResolveAs:i(e.directResolveAs)}):e}},t.isNamedType=function(e){return"string"==typeof(null==e?void 0:e.name)}},388:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Oas2Types=void 0;let n=r(5220),i=/^[0-9][0-9Xx]{2}$/,o={properties:{swagger:{type:"string"},info:"Info",host:{type:"string"},basePath:{type:"string"},schemes:{type:"array",items:{type:"string"}},consumes:{type:"array",items:{type:"string"}},produces:{type:"array",items:{type:"string"}},paths:"PathMap",definitions:"NamedSchemas",parameters:"NamedParameters",responses:"NamedResponses",securityDefinitions:"NamedSecuritySchemes",security:n.listOf("SecurityRequirement"),tags:n.listOf("Tag"),externalDocs:"ExternalDocs"},required:["swagger","paths","info"]},a={properties:{$ref:{type:"string"},parameters:n.listOf("Parameter"),get:"Operation",put:"Operation",post:"Operation",delete:"Operation",options:"Operation",head:"Operation",patch:"Operation"}},s={properties:{tags:{type:"array",items:{type:"string"}},summary:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs",operationId:{type:"string"},consumes:{type:"array",items:{type:"string"}},produces:{type:"array",items:{type:"string"}},parameters:n.listOf("Parameter"),responses:"ResponsesMap",schemes:{type:"array",items:{type:"string"}},deprecated:{type:"boolean"},security:n.listOf("SecurityRequirement"),"x-codeSamples":n.listOf("XCodeSample"),"x-code-samples":n.listOf("XCodeSample"),"x-hideTryItPanel":{type:"boolean"}},required:["responses"]},l={properties:{description:{type:"string"},schema:"Schema",headers:n.mapOf("Header"),examples:"Examples"},required:["description"]},c={properties:{format:{type:"string"},title:{type:"string"},description:{type:"string"},default:null,multipleOf:{type:"number"},maximum:{type:"number"},minimum:{type:"number"},exclusiveMaximum:{type:"boolean"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"number"},minLength:{type:"number"},pattern:{type:"string"},maxItems:{type:"number"},minItems:{type:"number"},uniqueItems:{type:"boolean"},maxProperties:{type:"number"},minProperties:{type:"number"},required:{type:"array",items:{type:"string"}},enum:{type:"array"},type:{type:"string",enum:["object","array","string","number","integer","boolean","null"]},items:e=>Array.isArray(e)?n.listOf("Schema"):"Schema",allOf:n.listOf("Schema"),properties:"SchemaProperties",additionalProperties:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",discriminator:{type:"string"},readOnly:{type:"boolean"},xml:"Xml",externalDocs:"ExternalDocs",example:{isExample:!0},"x-tags":{type:"array",items:{type:"string"}}}};t.Oas2Types={DefinitionRoot:o,Tag:{properties:{name:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs"},required:["name"]},ExternalDocs:{properties:{description:{type:"string"},url:{type:"string"}},required:["url"]},SecurityRequirement:{properties:{},additionalProperties:{type:"array",items:{type:"string"}}},Info:{properties:{title:{type:"string"},description:{type:"string"},termsOfService:{type:"string"},contact:"Contact",license:"License",version:{type:"string"}},required:["title","version"]},Contact:{properties:{name:{type:"string"},url:{type:"string"},email:{type:"string"}}},License:{properties:{name:{type:"string"},url:{type:"string"}},required:["name"]},PathMap:{properties:{},additionalProperties:(e,t)=>t.startsWith("/")?"PathItem":void 0},PathItem:a,Parameter:{properties:{name:{type:"string"},in:{type:"string",enum:["query","header","path","formData","body"]},description:{type:"string"},required:{type:"boolean"},schema:"Schema",type:{type:"string",enum:["string","number","integer","boolean","array","file"]},format:{type:"string"},allowEmptyValue:{type:"boolean"},items:"ParameterItems",collectionFormat:{type:"string",enum:["csv","ssv","tsv","pipes","multi"]},default:null,maximum:{type:"integer"},exclusiveMaximum:{type:"boolean"},minimum:{type:"integer"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"integer"},minLength:{type:"integer"},pattern:{type:"string"},maxItems:{type:"integer"},minItems:{type:"integer"},uniqueItems:{type:"boolean"},enum:{type:"array"},multipleOf:{type:"number"}},required:e=>e&&e.in?"body"===e.in?["name","in","schema"]:"array"===e.type?["name","in","type","items"]:["name","in","type"]:["name","in"]},ParameterItems:{properties:{type:{type:"string",enum:["string","number","integer","boolean","array"]},format:{type:"string"},items:"ParameterItems",collectionFormat:{type:"string",enum:["csv","ssv","tsv","pipes","multi"]},default:null,maximum:{type:"integer"},exclusiveMaximum:{type:"boolean"},minimum:{type:"integer"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"integer"},minLength:{type:"integer"},pattern:{type:"string"},maxItems:{type:"integer"},minItems:{type:"integer"},uniqueItems:{type:"boolean"},enum:{type:"array"},multipleOf:{type:"number"}},required:e=>e&&"array"===e.type?["type","items"]:["type"]},Operation:s,Examples:{properties:{},additionalProperties:{isExample:!0}},Header:{properties:{description:{type:"string"},type:{type:"string",enum:["string","number","integer","boolean","array"]},format:{type:"string"},items:"ParameterItems",collectionFormat:{type:"string",enum:["csv","ssv","tsv","pipes","multi"]},default:null,maximum:{type:"integer"},exclusiveMaximum:{type:"boolean"},minimum:{type:"integer"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"integer"},minLength:{type:"integer"},pattern:{type:"string"},maxItems:{type:"integer"},minItems:{type:"integer"},uniqueItems:{type:"boolean"},enum:{type:"array"},multipleOf:{type:"number"}},required:e=>e&&"array"===e.type?["type","items"]:["type"]},ResponsesMap:{properties:{default:"Response"},additionalProperties:(e,t)=>i.test(t)?"Response":void 0},Response:l,Schema:c,Xml:{properties:{name:{type:"string"},namespace:{type:"string"},prefix:{type:"string"},attribute:{type:"boolean"},wrapped:{type:"boolean"}}},SchemaProperties:{properties:{},additionalProperties:"Schema"},NamedSchemas:n.mapOf("Schema"),NamedResponses:n.mapOf("Response"),NamedParameters:n.mapOf("Parameter"),NamedSecuritySchemes:n.mapOf("SecurityScheme"),SecurityScheme:{properties:{type:{enum:["basic","apiKey","oauth2"]},description:{type:"string"},name:{type:"string"},in:{type:"string",enum:["query","header"]},flow:{enum:["implicit","password","application","accessCode"]},authorizationUrl:{type:"string"},tokenUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}}},required(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in"];case"oauth2":switch(null==e?void 0:e.flow){case"implicit":return["type","flow","authorizationUrl","scopes"];case"accessCode":return["type","flow","authorizationUrl","tokenUrl","scopes"];case"application":case"password":return["type","flow","tokenUrl","scopes"];default:return["type","flow","scopes"]}default:return["type"]}},allowed(e){switch(null==e?void 0:e.type){case"basic":return["type","description"];case"apiKey":return["type","name","in","description"];case"oauth2":switch(null==e?void 0:e.flow){case"implicit":return["type","flow","authorizationUrl","description","scopes"];case"accessCode":return["type","flow","authorizationUrl","tokenUrl","description","scopes"];case"application":case"password":return["type","flow","tokenUrl","description","scopes"];default:return["type","flow","tokenUrl","authorizationUrl","description","scopes"]}default:return["type","description"]}},extensionsPrefix:"x-"},XCodeSample:{properties:{lang:{type:"string"},label:{type:"string"},source:{type:"string"}}}}},5241:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Oas3Types=void 0;let n=r(5220),i=r(7468),o=/^[0-9][0-9Xx]{2}$/,a={properties:{openapi:null,info:"Info",servers:n.listOf("Server"),security:n.listOf("SecurityRequirement"),tags:n.listOf("Tag"),externalDocs:"ExternalDocs",paths:"PathMap",components:"Components","x-webhooks":"WebhooksMap"},required:["openapi","paths","info"]},s={properties:{url:{type:"string"},description:{type:"string"},variables:n.mapOf("ServerVariable")},required:["url"]},l={properties:{$ref:{type:"string"},servers:n.listOf("Server"),parameters:n.listOf("Parameter"),summary:{type:"string"},description:{type:"string"},get:"Operation",put:"Operation",post:"Operation",delete:"Operation",options:"Operation",head:"Operation",patch:"Operation",trace:"Operation"}},c={properties:{name:{type:"string"},in:{enum:["query","header","path","cookie"]},description:{type:"string"},required:{type:"boolean"},deprecated:{type:"boolean"},allowEmptyValue:{type:"boolean"},style:{enum:["form","simple","label","matrix","spaceDelimited","pipeDelimited","deepObject"]},explode:{type:"boolean"},allowReserved:{type:"boolean"},schema:"Schema",example:{isExample:!0},examples:n.mapOf("Example"),content:"MediaTypeMap"},required:["name","in"],requiredOneOf:["schema","content"]},u={properties:{tags:{type:"array",items:{type:"string"}},summary:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs",operationId:{type:"string"},parameters:n.listOf("Parameter"),security:n.listOf("SecurityRequirement"),servers:n.listOf("Server"),requestBody:"RequestBody",responses:"ResponsesMap",deprecated:{type:"boolean"},callbacks:n.mapOf("Callback"),"x-codeSamples":n.listOf("XCodeSample"),"x-code-samples":n.listOf("XCodeSample"),"x-hideTryItPanel":{type:"boolean"}},required:["responses"]},p={properties:{schema:"Schema",example:{isExample:!0},examples:n.mapOf("Example"),encoding:n.mapOf("Encoding")}},d={properties:{contentType:{type:"string"},headers:n.mapOf("Header"),style:{enum:["form","simple","label","matrix","spaceDelimited","pipeDelimited","deepObject"]},explode:{type:"boolean"},allowReserved:{type:"boolean"}}},f={properties:{description:{type:"string"},required:{type:"boolean"},deprecated:{type:"boolean"},allowEmptyValue:{type:"boolean"},style:{enum:["form","simple","label","matrix","spaceDelimited","pipeDelimited","deepObject"]},explode:{type:"boolean"},allowReserved:{type:"boolean"},schema:"Schema",example:{isExample:!0},examples:n.mapOf("Example"),content:"MediaTypeMap"}},h={properties:{description:{type:"string"},headers:n.mapOf("Header"),content:"MediaTypeMap",links:n.mapOf("Link")},required:["description"]},m={properties:{externalDocs:"ExternalDocs",discriminator:"Discriminator",title:{type:"string"},multipleOf:{type:"number",minimum:0},maximum:{type:"number"},minimum:{type:"number"},exclusiveMaximum:{type:"boolean"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"integer",minimum:0},minLength:{type:"integer",minimum:0},pattern:{type:"string"},maxItems:{type:"integer",minimum:0},minItems:{type:"integer",minimum:0},uniqueItems:{type:"boolean"},maxProperties:{type:"integer",minimum:0},minProperties:{type:"integer",minimum:0},required:{type:"array",items:{type:"string"}},enum:{type:"array"},type:{enum:["object","array","string","number","integer","boolean","null"]},allOf:n.listOf("Schema"),anyOf:n.listOf("Schema"),oneOf:n.listOf("Schema"),not:"Schema",properties:"SchemaProperties",items:e=>Array.isArray(e)?n.listOf("Schema"):"Schema",additionalItems:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",additionalProperties:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",description:{type:"string"},format:{type:"string"},default:null,nullable:{type:"boolean"},readOnly:{type:"boolean"},writeOnly:{type:"boolean"},xml:"Xml",example:{isExample:!0},deprecated:{type:"boolean"},"x-tags":{type:"array",items:{type:"string"}}}};t.Oas3Types={DefinitionRoot:a,Tag:{properties:{name:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs"},required:["name"]},ExternalDocs:{properties:{description:{type:"string"},url:{type:"string"}},required:["url"]},Server:s,ServerVariable:{properties:{enum:{type:"array",items:{type:"string"}},default:{type:"string"},description:null},required:["default"]},SecurityRequirement:{properties:{},additionalProperties:{type:"array",items:{type:"string"}}},Info:{properties:{title:{type:"string"},version:{type:"string"},description:{type:"string"},termsOfService:{type:"string"},contact:"Contact",license:"License"},required:["title","version"]},Contact:{properties:{name:{type:"string"},url:{type:"string"},email:{type:"string"}}},License:{properties:{name:{type:"string"},url:{type:"string"}},required:["name"]},PathMap:{properties:{},additionalProperties:(e,t)=>t.startsWith("/")?"PathItem":void 0},PathItem:l,Parameter:c,Operation:u,Callback:n.mapOf("PathItem"),RequestBody:{properties:{description:{type:"string"},required:{type:"boolean"},content:"MediaTypeMap"},required:["content"]},MediaTypeMap:{properties:{},additionalProperties:"MediaType"},MediaType:p,Example:{properties:{value:{isExample:!0},summary:{type:"string"},description:{type:"string"},externalValue:{type:"string"}}},Encoding:d,Header:f,ResponsesMap:{properties:{default:"Response"},additionalProperties:(e,t)=>o.test(t)?"Response":void 0},Response:h,Link:{properties:{operationRef:{type:"string"},operationId:{type:"string"},parameters:null,requestBody:null,description:{type:"string"},server:"Server"}},Schema:m,Xml:{properties:{name:{type:"string"},namespace:{type:"string"},prefix:{type:"string"},attribute:{type:"boolean"},wrapped:{type:"boolean"}}},SchemaProperties:{properties:{},additionalProperties:"Schema"},DiscriminatorMapping:{properties:{},additionalProperties:e=>i.isMappingRef(e)?{type:"string",directResolveAs:"Schema"}:{type:"string"}},Discriminator:{properties:{propertyName:{type:"string"},mapping:"DiscriminatorMapping"},required:["propertyName"]},Components:{properties:{parameters:"NamedParameters",schemas:"NamedSchemas",responses:"NamedResponses",examples:"NamedExamples",requestBodies:"NamedRequestBodies",headers:"NamedHeaders",securitySchemes:"NamedSecuritySchemes",links:"NamedLinks",callbacks:"NamedCallbacks"}},NamedSchemas:n.mapOf("Schema"),NamedResponses:n.mapOf("Response"),NamedParameters:n.mapOf("Parameter"),NamedExamples:n.mapOf("Example"),NamedRequestBodies:n.mapOf("RequestBody"),NamedHeaders:n.mapOf("Header"),NamedSecuritySchemes:n.mapOf("SecurityScheme"),NamedLinks:n.mapOf("Link"),NamedCallbacks:n.mapOf("Callback"),ImplicitFlow:{properties:{refreshUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},authorizationUrl:{type:"string"}},required:["authorizationUrl","scopes"]},PasswordFlow:{properties:{refreshUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},tokenUrl:{type:"string"}},required:["tokenUrl","scopes"]},ClientCredentials:{properties:{refreshUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},tokenUrl:{type:"string"}},required:["tokenUrl","scopes"]},AuthorizationCode:{properties:{refreshUrl:{type:"string"},authorizationUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},tokenUrl:{type:"string"}},required:["authorizationUrl","tokenUrl","scopes"]},SecuritySchemeFlows:{properties:{implicit:"ImplicitFlow",password:"PasswordFlow",clientCredentials:"ClientCredentials",authorizationCode:"AuthorizationCode"}},SecurityScheme:{properties:{type:{enum:["apiKey","http","oauth2","openIdConnect"]},description:{type:"string"},name:{type:"string"},in:{type:"string",enum:["query","header","cookie"]},scheme:{type:"string"},bearerFormat:{type:"string"},flows:"SecuritySchemeFlows",openIdConnectUrl:{type:"string"}},required(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in"];case"http":return["type","scheme"];case"oauth2":return["type","flows"];case"openIdConnect":return["type","openIdConnectUrl"];default:return["type"]}},allowed(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in","description"];case"http":return["type","scheme","bearerFormat","description"];case"oauth2":return["type","flows","description"];case"openIdConnect":return["type","openIdConnectUrl","description"];default:return["type","description"]}},extensionsPrefix:"x-"},XCodeSample:{properties:{lang:{type:"string"},label:{type:"string"},source:{type:"string"}}},WebhooksMap:{properties:{},additionalProperties:()=>"PathItem"}}},2608:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Oas3_1Types=void 0;let n=r(5220),i=r(5241),o={properties:{openapi:null,info:"Info",servers:n.listOf("Server"),security:n.listOf("SecurityRequirement"),tags:n.listOf("Tag"),externalDocs:"ExternalDocs",paths:"PathMap",webhooks:"WebhooksMap",components:"Components",jsonSchemaDialect:{type:"string"}},required:["openapi","info"],requiredOneOf:["paths","components","webhooks"]},a={properties:{tags:{type:"array",items:{type:"string"}},summary:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs",operationId:{type:"string"},parameters:n.listOf("Parameter"),security:n.listOf("SecurityRequirement"),servers:n.listOf("Server"),requestBody:"RequestBody",responses:"ResponsesMap",deprecated:{type:"boolean"},callbacks:n.mapOf("Callback"),"x-codeSamples":n.listOf("XCodeSample"),"x-code-samples":n.listOf("XCodeSample"),"x-hideTryItPanel":{type:"boolean"}}},s={properties:{$id:{type:"string"},id:{type:"string"},$schema:{type:"string"},definitions:"NamedSchemas",$defs:"NamedSchemas",$vocabulary:{type:"string"},externalDocs:"ExternalDocs",discriminator:"Discriminator",myArbitraryKeyword:{type:"boolean"},title:{type:"string"},multipleOf:{type:"number",minimum:0},maximum:{type:"number"},minimum:{type:"number"},exclusiveMaximum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{type:"integer",minimum:0},minLength:{type:"integer",minimum:0},pattern:{type:"string"},maxItems:{type:"integer",minimum:0},minItems:{type:"integer",minimum:0},uniqueItems:{type:"boolean"},maxProperties:{type:"integer",minimum:0},minProperties:{type:"integer",minimum:0},required:{type:"array",items:{type:"string"}},enum:{type:"array"},type:e=>Array.isArray(e)?{type:"array",items:{enum:["object","array","string","number","integer","boolean","null"]}}:{enum:["object","array","string","number","integer","boolean","null"]},allOf:n.listOf("Schema"),anyOf:n.listOf("Schema"),oneOf:n.listOf("Schema"),not:"Schema",if:"Schema",then:"Schema",else:"Schema",dependentSchemas:n.listOf("Schema"),prefixItems:n.listOf("Schema"),contains:"Schema",minContains:{type:"integer",minimum:0},maxContains:{type:"integer",minimum:0},patternProperties:{type:"object"},propertyNames:"Schema",unevaluatedItems:"Schema",unevaluatedProperties:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",summary:{type:"string"},properties:"SchemaProperties",items:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",additionalProperties:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",description:{type:"string"},format:{type:"string"},contentEncoding:{type:"string"},contentMediaType:{type:"string"},default:null,readOnly:{type:"boolean"},writeOnly:{type:"boolean"},xml:"Xml",examples:{type:"array"},example:{isExample:!0},deprecated:{type:"boolean"},const:null,$comment:{type:"string"},"x-tags":{type:"array",items:{type:"string"}}}};t.Oas3_1Types=Object.assign(Object.assign({},i.Oas3Types),{Info:{properties:{title:{type:"string"},version:{type:"string"},description:{type:"string"},termsOfService:{type:"string"},summary:{type:"string"},contact:"Contact",license:"License"},required:["title","version"]},DefinitionRoot:o,Schema:s,License:{properties:{name:{type:"string"},url:{type:"string"},identifier:{type:"string"}},required:["name"]},Components:{properties:{parameters:"NamedParameters",schemas:"NamedSchemas",responses:"NamedResponses",examples:"NamedExamples",requestBodies:"NamedRequestBodies",headers:"NamedHeaders",securitySchemes:"NamedSecuritySchemes",links:"NamedLinks",callbacks:"NamedCallbacks",pathItems:"NamedPathItems"}},NamedPathItems:n.mapOf("PathItem"),SecurityScheme:{properties:{type:{enum:["apiKey","http","oauth2","openIdConnect","mutualTLS"]},description:{type:"string"},name:{type:"string"},in:{type:"string",enum:["query","header","cookie"]},scheme:{type:"string"},bearerFormat:{type:"string"},flows:"SecuritySchemeFlows",openIdConnectUrl:{type:"string"}},required(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in"];case"http":return["type","scheme"];case"oauth2":return["type","flows"];case"openIdConnect":return["type","openIdConnectUrl"];default:return["type"]}},allowed(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in","description"];case"http":return["type","scheme","bearerFormat","description"];case"oauth2":switch(null==e?void 0:e.flows){case"implicit":return["type","flows","authorizationUrl","refreshUrl","description","scopes"];case"password":case"clientCredentials":return["type","flows","tokenUrl","refreshUrl","description","scopes"];default:return["type","flows","authorizationUrl","refreshUrl","tokenUrl","description","scopes"]}case"openIdConnect":return["type","openIdConnectUrl","description"];default:return["type","description"]}},extensionsPrefix:"x-"},Operation:a})},771:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function a(e){try{l(n.next(e))}catch(e){o(e)}}function s(e){try{l(n.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):((t=e.value)instanceof r?t:new r((function(e){e(t)}))).then(a,s)}l((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.isCustomRuleId=t.getMatchingStatusCodeRange=t.assignExisting=t.isNotString=t.isString=t.isNotEmptyObject=t.slash=t.isPathParameter=t.readFileAsStringSync=t.isSingular=t.validateMimeTypeOAS3=t.validateMimeType=t.splitCamelCaseIntoWords=t.omitObjectProps=t.pickObjectProps=t.readFileFromUrl=t.isEmptyArray=t.isEmptyObject=t.isPlainObject=t.notUndefined=t.loadYaml=t.popStack=t.pushStack=t.stringifyYaml=t.parseYaml=void 0;let i=r(3197),o=r(4099),a=r(8150),s=r(3450),l=r(5273),c=r(8698);var u=r(5273);function p(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function d(e,t){return t.match(/^https?:\/\//)||(e=e.replace(/^https?:\/\//,"")),o(e,t)}function f(e){return"string"==typeof e}Object.defineProperty(t,"parseYaml",{enumerable:!0,get:function(){return u.parseYaml}}),Object.defineProperty(t,"stringifyYaml",{enumerable:!0,get:function(){return u.stringifyYaml}}),t.pushStack=function(e,t){return{prev:e,value:t}},t.popStack=function(e){var t;return null!==(t=null==e?void 0:e.prev)&&void 0!==t?t:null},t.loadYaml=function(e){return n(this,void 0,void 0,(function*(){let t=yield i.promises.readFile(e,"utf-8");return l.parseYaml(t)}))},t.notUndefined=function(e){return void 0!==e},t.isPlainObject=p,t.isEmptyObject=function(e){return p(e)&&0===Object.keys(e).length},t.isEmptyArray=function(e){return Array.isArray(e)&&0===e.length},t.readFileFromUrl=function(e,t){return n(this,void 0,void 0,(function*(){let r={};for(let n of t.headers)d(e,n.matches)&&(r[n.name]=void 0!==n.envVariable?c.env[n.envVariable]||"":n.value);let n=yield(t.customFetch||a.default)(e,{headers:r});if(!n.ok)throw Error(`Failed to load ${e}: ${n.status} ${n.statusText}`);return{body:yield n.text(),mimeType:n.headers.get("content-type")}}))},t.pickObjectProps=function(e,t){return Object.fromEntries(t.filter((t=>t in e)).map((t=>[t,e[t]])))},t.omitObjectProps=function(e,t){return Object.fromEntries(Object.entries(e).filter((([e])=>!t.includes(e))))},t.splitCamelCaseIntoWords=function(e){let t=e.split(/(?:[-._])|([A-Z][a-z]+)/).filter(Boolean).map((e=>e.toLocaleLowerCase())),r=e.split(/([A-Z]{2,})/).filter((e=>e&&e===e.toUpperCase())).map((e=>e.toLocaleLowerCase()));return new Set([...t,...r])},t.validateMimeType=function({type:e,value:t},{report:r,location:n},i){if(!i)throw Error(`Parameter "allowedValues" is not provided for "${"consumes"===e?"request":"response"}-mime-type" rule`);if(t[e])for(let o of t[e])i.includes(o)||r({message:`Mime type "${o}" is not allowed`,location:n.child(t[e].indexOf(o)).key()})},t.validateMimeTypeOAS3=function({type:e,value:t},{report:r,location:n},i){if(!i)throw Error(`Parameter "allowedValues" is not provided for "${"consumes"===e?"request":"response"}-mime-type" rule`);if(t.content)for(let e of Object.keys(t.content))i.includes(e)||r({message:`Mime type "${e}" is not allowed`,location:n.child("content").child(e).key()})},t.isSingular=function(e){return s.isSingular(e)},t.readFileAsStringSync=function(e){return i.readFileSync(e,"utf-8")},t.isPathParameter=function(e){return e.startsWith("{")&&e.endsWith("}")},t.slash=function(e){return/^\\\\\?\\/.test(e)?e:e.replace(/\\/g,"/")},t.isNotEmptyObject=function(e){return!!e&&Object.keys(e).length>0},t.isString=f,t.isNotString=function(e){return!f(e)},t.assignExisting=function(e,t){for(let r of Object.keys(t))e.hasOwnProperty(r)&&(e[r]=t[r])},t.getMatchingStatusCodeRange=e=>`${e}`.replace(/^(\d)\d\d$/,((e,t)=>`${t}XX`)),t.isCustomRuleId=function(e){return e.includes("/")}},8065:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeVisitors=void 0,t.normalizeVisitors=function(e,t){let r={any:{enter:[],leave:[]}};for(let e of Object.keys(t))r[e]={enter:[],leave:[]};for(let{ruleId:t,severity:n,visitor:o}of(r.ref={enter:[],leave:[]},e))i({ruleId:t,severity:n},o,null);for(let e of Object.keys(r))r[e].enter.sort(((e,t)=>t.depth-e.depth)),r[e].leave.sort(((e,t)=>e.depth-t.depth));return r;function n(e,t,i,o,a=[]){if(a.includes(t))return;a=[...a,t];let s=new Set;for(let r of Object.values(t.properties))r!==i?"object"==typeof r&&null!==r&&r.name&&s.add(r):l(e,a);for(let r of(t.additionalProperties&&"function"!=typeof t.additionalProperties&&(t.additionalProperties===i?l(e,a):void 0!==t.additionalProperties.name&&s.add(t.additionalProperties)),t.items&&(t.items===i?l(e,a):void 0!==t.items.name&&s.add(t.items)),Array.from(s.values())))n(e,r,i,o,a);function l(e,t){for(let n of t.slice(1))r[n.name]=r[n.name]||{enter:[],leave:[]},r[n.name].enter.push(Object.assign(Object.assign({},e),{visit(){},depth:0,context:{isSkippedLevel:!0,seen:new Set,parent:o}}))}}function i(e,o,a,s=0){let l=Object.keys(t);if(0===s)l.push("any"),l.push("ref");else{if(o.any)throw Error("any() is allowed only on top level");if(o.ref)throw Error("ref() is allowed only on top level")}for(let c of l){let l=o[c],u=r[c];if(!l)continue;let p,d,f,h="object"==typeof l;if("ref"===c&&h&&l.skip)throw Error("ref() visitor does not support skip");"function"==typeof l?p=l:h&&(p=l.enter,d=l.leave,f=l.skip);let m={activatedOn:null,type:t[c],parent:a,isSkippedLevel:!1};if("object"==typeof l&&i(e,l,m,s+1),a&&n(e,a.type,t[c],a),p||h){if(p&&"function"!=typeof p)throw Error("DEV: should be function");u.enter.push(Object.assign(Object.assign({},e),{visit:p||(()=>{}),skip:f,depth:s,context:m}))}if(d){if("function"!=typeof d)throw Error("DEV: should be function");u.leave.push(Object.assign(Object.assign({},e),{visit:d,depth:s,context:m}))}}}}},9443:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.walkDocument=void 0;let n=r(7468),i=r(4182),o=r(771),a=r(5220);t.walkDocument=function(e){let{document:t,rootType:r,normalizedVisitors:s,resolvedRefMap:l,ctx:c}=e,u={},p=new Set;!function e(t,r,d,f,h){var m,g,y,v,b,x,w,k,_,O,S;let E=(e,t=A.source.absoluteRef)=>{if(!n.isRef(e))return{location:d,node:e};let r=i.makeRefId(t,e.$ref),o=l.get(r);if(!o)return{location:void 0,node:void 0};let{resolved:a,node:s,document:c,nodePointer:u,error:p}=o;return{location:a?new n.Location(c.source,u):p instanceof i.YamlParseError?new n.Location(p.source,""):void 0,node:s,error:p}},P=d,A=d,{node:$,location:C,error:R}=E(t),j=new Set;if(n.isRef(t)){let e=s.ref.enter;for(let{visit:n,ruleId:i,severity:o,context:a}of e)!p.has(t)&&(j.add(a),n(t,{report:I.bind(void 0,i,o),resolve:E,rawNode:t,rawLocation:P,location:d,type:r,parent:f,key:h,parentLocations:{},oasVersion:c.oasVersion,getVisitorData:N.bind(void 0,i)},{node:$,location:C,error:R}),(null==C?void 0:C.source.absoluteRef)&&c.refTypes&&c.refTypes.set(null==C?void 0:C.source.absoluteRef,r))}if(void 0!==$&&C&&"scalar"!==r.name){A=C;let i=null===(g=null===(m=u[r.name])||void 0===m?void 0:m.has)||void 0===g?void 0:g.call(m,$),l=!1,c=s.any.enter.concat((null===(y=s[r.name])||void 0===y?void 0:y.enter)||[]),p=[];for(let{context:e,visit:n,skip:a,ruleId:s,severity:u}of c)if(e.isSkippedLevel)!e.parent.activatedOn||e.parent.activatedOn.value.nextLevelTypeActivated||e.seen.has(t)||(e.seen.add(t),l=!0,p.push(e));else if(e.parent&&e.parent.activatedOn&&(null===(v=e.activatedOn)||void 0===v?void 0:v.value.withParentNode)!==e.parent.activatedOn.value.node&&(null===(b=e.parent.activatedOn.value.nextLevelTypeActivated)||void 0===b?void 0:b.value)!==r||!e.parent&&!i){p.push(e);let i={node:$,location:C,nextLevelTypeActivated:null,withParentNode:null===(w=null===(x=e.parent)||void 0===x?void 0:x.activatedOn)||void 0===w?void 0:w.value.node,skipped:null!==(O=(null===(_=null===(k=e.parent)||void 0===k?void 0:k.activatedOn)||void 0===_?void 0:_.value.skipped)||(null==a?void 0:a($,h)))&&void 0!==O&&O};e.activatedOn=o.pushStack(e.activatedOn,i);let c=e.parent;for(;c;)c.activatedOn.value.nextLevelTypeActivated=o.pushStack(c.activatedOn.value.nextLevelTypeActivated,r),c=c.parent;if(!i.skipped){l=!0,j.add(e);let{ignoreNextVisitorsOnNode:r}=T(n,$,t,e,s,u);if(r)break}}if(l||!i)if(u[r.name]=u[r.name]||new Set,u[r.name].add($),Array.isArray($)){let t=r.items;if(void 0!==t)for(let r=0;r<$.length;r++)e($[r],t,C.child([r]),$,r)}else if("object"==typeof $&&null!==$){let i=Object.keys(r.properties);for(let o of(r.additionalProperties&&i.push(...Object.keys($).filter((e=>!i.includes(e)))),n.isRef(t)&&i.push(...Object.keys(t).filter((e=>"$ref"!==e&&!i.includes(e)))),i)){let i=$[o],s=C;void 0===i&&(i=t[o],s=d);let l=r.properties[o];void 0===l&&(l=r.additionalProperties),"function"==typeof l&&(l=l(i,o)),!a.isNamedType(l)&&(null==l?void 0:l.directResolveAs)&&(l=l.directResolveAs,i={$ref:i}),l&&void 0===l.name&&!1!==l.resolvable&&(l={name:"scalar",properties:{}}),a.isNamedType(l)&&("scalar"!==l.name||n.isRef(i))&&e(i,l,s.child([o]),$,o)}}let f=s.any.leave,E=((null===(S=s[r.name])||void 0===S?void 0:S.leave)||[]).concat(f);for(let e of p.reverse())if(e.isSkippedLevel)e.seen.delete($);else if(e.activatedOn=o.popStack(e.activatedOn),e.parent){let t=e.parent;for(;t;)t.activatedOn.value.nextLevelTypeActivated=o.popStack(t.activatedOn.value.nextLevelTypeActivated),t=t.parent}for(let{context:e,visit:r,ruleId:n,severity:i}of E)!e.isSkippedLevel&&j.has(e)&&T(r,$,t,e,n,i)}if(A=d,n.isRef(t)){let e=s.ref.leave;for(let{visit:n,ruleId:i,severity:o,context:a}of e)j.has(a)&&n(t,{report:I.bind(void 0,i,o),resolve:E,rawNode:t,rawLocation:P,location:d,type:r,parent:f,key:h,parentLocations:{},oasVersion:c.oasVersion,getVisitorData:N.bind(void 0,i)},{node:$,location:C,error:R})}function T(e,t,n,i,o,a){let s=I.bind(void 0,o,a),l=!1;return e(t,{report:s,resolve:E,rawNode:n,location:A,rawLocation:P,type:r,parent:f,key:h,parentLocations:function(e){var t,r;let n={};for(;e.parent;)(null===(t=e.parent.activatedOn)||void 0===t?void 0:t.value.location)&&(n[e.parent.type.name]=null===(r=e.parent.activatedOn)||void 0===r?void 0:r.value.location),e=e.parent;return n}(i),oasVersion:c.oasVersion,ignoreNextVisitorsOnNode(){l=!0},getVisitorData:N.bind(void 0,o)},function(e){var t;let r={};for(;e.parent;)r[e.parent.type.name]=null===(t=e.parent.activatedOn)||void 0===t?void 0:t.value.node,e=e.parent;return r}(i),i),{ignoreNextVisitorsOnNode:l}}function I(e,t,r){let n=r.location?Array.isArray(r.location)?r.location:[r.location]:[Object.assign(Object.assign({},A),{reportOnKey:!1})];c.problems.push(Object.assign(Object.assign({ruleId:r.ruleId||e,severity:r.forceSeverity||t},r),{suggest:r.suggest||[],location:n.map((e=>Object.assign(Object.assign(Object.assign({},A),{reportOnKey:!1}),e)))}))}function N(e){return c.visitorsData[e]=c.visitorsData[e]||{},c.visitorsData[e]}}(t.parsed,r,new n.Location(t.source,"#/"),void 0,"")}},5019:function(e,t,r){var n=r(5623);e.exports=function(e){return e?("{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2)),function e(t,r){var i=[],o=n("{","}",t);if(!o)return[t];var s=o.pre,l=o.post.length?e(o.post,!1):[""];if(/\$$/.test(o.pre))for(var u=0;u=0;if(!x&&!w)return o.post.match(/,.*\}/)?e(t=o.pre+"{"+o.body+a+o.post):[t];if(x)g=o.body.split(/\.\./);else if(1===(g=function e(t){if(!t)return[""];var r=[],i=n("{","}",t);if(!i)return t.split(",");var o=i.pre,a=i.body,s=i.post,l=o.split(",");l[l.length-1]+="{"+a+"}";var c=e(s);return s.length&&(l[l.length-1]+=c.shift(),l.push.apply(l,c)),r.push.apply(r,l),r}(o.body)).length&&1===(g=e(g[0],!1).map(p)).length)return l.map((function(e){return o.pre+g[0]+e}));if(x){var k,_=c(g[0]),O=c(g[1]),S=Math.max(g[0].length,g[1].length),E=3==g.length?Math.abs(c(g[2])):1,P=f;O<_&&(E*=-1,P=h);var A=g.some(d);y=[];for(var $=_;P($,O);$+=E){if(b)"\\"===(k=String.fromCharCode($))&&(k="");else if(k=String($),A){var C=S-k.length;if(C>0){var R=Array(C+1).join("0");k=$<0?"-"+R+k.slice(1):R+k}}y.push(k)}}else{y=[];for(var j=0;j=t}},5751:function(e){let t="object"==typeof process&&process&&!1;e.exports=t?{sep:"\\"}:{sep:"/"}},4099:function(e,t,r){let n=e.exports=(e,t,r={})=>(g(t),!(!r.nocomment&&"#"===t.charAt(0))&&new v(t,r).match(e));e.exports=n;let i=r(5751);n.sep=i.sep;let o=Symbol("globstar **");n.GLOBSTAR=o;let a=r(5019),s={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},l="[^/]",c="[^/]*?",u=e=>e.split("").reduce(((e,t)=>(e[t]=!0,e)),{}),p=u("().*{}+?[]^$\\!"),d=u("[.("),f=/\/+/;n.filter=(e,t={})=>(r,i,o)=>n(r,e,t);let h=(e,t={})=>{let r={};return Object.keys(e).forEach((t=>r[t]=e[t])),Object.keys(t).forEach((e=>r[e]=t[e])),r};n.defaults=e=>{if(!e||"object"!=typeof e||!Object.keys(e).length)return n;let t=n,r=(r,n,i)=>t(r,n,h(e,i));return(r.Minimatch=class extends t.Minimatch{constructor(t,r){super(t,h(e,r))}}).defaults=r=>t.defaults(h(e,r)).Minimatch,r.filter=(r,n)=>t.filter(r,h(e,n)),r.defaults=r=>t.defaults(h(e,r)),r.makeRe=(r,n)=>t.makeRe(r,h(e,n)),r.braceExpand=(r,n)=>t.braceExpand(r,h(e,n)),r.match=(r,n,i)=>t.match(r,n,h(e,i)),r},n.braceExpand=(e,t)=>m(e,t);let m=(e,t={})=>(g(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:a(e)),g=e=>{if("string"!=typeof e)throw TypeError("invalid pattern");if(e.length>65536)throw TypeError("pattern is too long")},y=Symbol("subparse");n.makeRe=(e,t)=>new v(e,t||{}).makeRe(),n.match=(e,t,r={})=>{let n=new v(t,r);return e=e.filter((e=>n.match(e))),n.options.nonull&&!e.length&&e.push(t),e};class v{constructor(e,t){g(e),t||(t={}),this.options=t,this.set=[],this.pattern=e,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.make()}debug(){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0))return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate();let r=this.globSet=this.braceExpand();t.debug&&(this.debug=(...e)=>console.error(...e)),this.debug(this.pattern,r),r=this.globParts=r.map((e=>e.split(f))),this.debug(this.pattern,r),r=r.map(((e,t,r)=>e.map(this.parse,this))),this.debug(this.pattern,r),r=r.filter((e=>-1===e.indexOf(!1))),this.debug(this.pattern,r),this.set=r}parseNegate(){if(this.options.nonegate)return;let e=this.pattern,t=!1,r=0;for(let n=0;n>> no match, partial?",e,d,t,f),d!==s))}if("string"==typeof u?(c=p===u,this.debug("string match",u,p,c)):(c=p.match(u),this.debug("pattern match",u,p,c)),!c)return!1}if(i===s&&a===l)return!0;if(i===s)return r;if(a===l)return i===s-1&&""===e[i];throw Error("wtf?")}braceExpand(){return m(this.pattern,this.options)}parse(e,t){g(e);let r=this.options;if("**"===e){if(!r.noglobstar)return o;e="*"}if(""===e)return"";let n,i,a,u,f="",h=!!r.nocase,m=!1,v=[],b=[],x=!1,w=-1,k=-1,_="."===e.charAt(0)?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",O=()=>{if(n){switch(n){case"*":f+=c,h=!0;break;case"?":f+=l,h=!0;break;default:f+="\\"+n}this.debug("clearStateChar %j %j",n,f),n=!1}};for(let t,o=0;o(r||(r="\\"),t+t+r+"|"))),this.debug("tail=%j\n %s",e,e,a,f);let t="*"===a.type?c:"?"===a.type?l:"\\"+a.type;h=!0,f=f.slice(0,a.reStart)+t+"\\("+e}O(),m&&(f+="\\\\");let S=d[f.charAt(0)];for(let e=b.length-1;e>-1;e--){let r=b[e],n=f.slice(0,r.reStart),i=f.slice(r.reStart,r.reEnd-8),o=f.slice(r.reEnd),a=f.slice(r.reEnd-8,r.reEnd)+o,s=n.split("(").length-1,l=o;for(let e=0;e((e=e.map((e=>"string"==typeof e?e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):e===o?o:e._src)).reduce(((e,t)=>(e[e.length-1]===o&&t===o||e.push(t),e)),[])).forEach(((t,n)=>{t===o&&e[n-1]!==o&&(0===n?e.length>1?e[n+1]="(?:\\/|"+r+"\\/)?"+e[n+1]:e[n]=r:n===e.length-1?e[n-1]+="(?:\\/|"+r+")?":(e[n-1]+="(?:\\/|\\/"+r+"\\/)"+e[n+1],e[n+1]=o))})),e.filter((e=>e!==o)).join("/")))).join("|");i="^(?:"+i+")$",this.negate&&(i="^(?!"+i+").*$");try{this.regexp=RegExp(i,n)}catch(e){this.regexp=!1}return this.regexp}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return""===e;if("/"===e&&t)return!0;let r=this.options;"/"!==i.sep&&(e=e.split(i.sep).join("/")),e=e.split(f),this.debug(this.pattern,"split",e);let n,o=this.set;this.debug(this.pattern,"set",o);for(let t=e.length-1;t>=0&&!(n=e[t]);t--);for(let i=0;i=0&&c>0){if(e===t)return[l,c];for(n=[],o=r.length;u>=0&&!s;)u==l?(n.push(u),l=r.indexOf(e,u+1)):1==n.length?s=[n.pop(),c]:((i=n.pop())=0?l:c;n.length&&(s=[o,a])}return s}e.exports=t,t.range=n},4480:function(e,t,r){"use strict";var n=r.g.process&&process.nextTick||r.g.setImmediate||function(e){setTimeout(e,0)};e.exports=function(e,t){return e?void t.then((function(t){n((function(){e(null,t)}))}),(function(t){n((function(){e(t)}))})):t}},4184:function(e,t){var r;!function(){"use strict";var n={}.hasOwnProperty;function i(){for(var e=[],t=0;tu;)if((s=l[u++])!=s)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===r)return e||u||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},2092:function(e,t,r){var n=r(9974),i=r(8361),o=r(7908),a=r(7466),s=r(5417),l=[].push,c=function(e){var t=1==e,r=2==e,c=3==e,u=4==e,p=6==e,d=7==e,f=5==e||p;return function(h,m,g,y){for(var v,b,x=o(h),w=i(x),k=n(m,g,3),_=a(w.length),O=0,S=y||s,E=t?S(h,_):r||d?S(h,0):void 0;_>O;O++)if((f||O in w)&&(b=k(v=w[O],O,x),e))if(t)E[O]=b;else if(b)switch(e){case 3:return!0;case 5:return v;case 6:return O;case 2:l.call(E,v)}else switch(e){case 4:return!1;case 7:l.call(E,v)}return p?-1:c||u?u:E}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},1194:function(e,t,r){var n=r(7293),i=r(5112),o=r(7392),a=i("species");e.exports=function(e){return o>=51||!n((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},5417:function(e,t,r){var n=r(111),i=r(3157),o=r(5112)("species");e.exports=function(e,t){var r;return i(e)&&("function"!=typeof(r=e.constructor)||r!==Array&&!i(r.prototype)?n(r)&&null===(r=r[o])&&(r=void 0):r=void 0),new(void 0===r?Array:r)(0===t?0:t)}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,r){var n=r(1694),i=r(4326),o=r(5112)("toStringTag"),a="Arguments"==i(function(){return arguments}());e.exports=n?i:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?r:a?i(t):"Object"==(n=i(t))&&"function"==typeof t.callee?"Arguments":n}},9920:function(e,t,r){var n=r(6656),i=r(3887),o=r(1236),a=r(3070);e.exports=function(e,t){for(var r=i(t),s=a.f,l=o.f,c=0;c=74)&&(n=a.match(/Chrome\/(\d+)/))&&(i=n[1]),e.exports=i&&+i},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,r){var n=r(7854),i=r(1236).f,o=r(8880),a=r(1320),s=r(3505),l=r(9920),c=r(4705);e.exports=function(e,t){var r,u,p,d,f,h=e.target,m=e.global,g=e.stat;if(r=m?n:g?n[h]||s(h,{}):(n[h]||{}).prototype)for(u in t){if(d=t[u],p=e.noTargetGet?(f=i(r,u))&&f.value:r[u],!c(m?u:h+(g?".":"#")+u,e.forced)&&void 0!==p){if(typeof d==typeof p)continue;l(d,p)}(e.sham||p&&p.sham)&&o(d,"sham",!0),a(r,u,d,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},9974:function(e,t,r){var n=r(3099);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 0:return function(){return e.call(t)};case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,i){return e.call(t,r,n,i)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,r){var n=r(857),i=r(7854),o=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?o(n[e])||o(i[e]):n[e]&&n[e][t]||i[e]&&i[e][t]}},7854:function(e,t,r){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||function(){return this}()||Function("return this")()},6656:function(e,t,r){var n=r(7908),i={}.hasOwnProperty;e.exports=Object.hasOwn||function(e,t){return i.call(n(e),t)}},3501:function(e){e.exports={}},490:function(e,t,r){var n=r(5005);e.exports=n("document","documentElement")},4664:function(e,t,r){var n=r(9781),i=r(7293),o=r(317);e.exports=!n&&!i((function(){return 7!=Object.defineProperty(o("div"),"a",{get:function(){return 7}}).a}))},8361:function(e,t,r){var n=r(7293),i=r(4326),o="".split;e.exports=n((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==i(e)?o.call(e,""):Object(e)}:Object},2788:function(e,t,r){var n=r(5465),i=Function.toString;"function"!=typeof n.inspectSource&&(n.inspectSource=function(e){return i.call(e)}),e.exports=n.inspectSource},9909:function(e,t,r){var n,i,o,a=r(8536),s=r(7854),l=r(111),c=r(8880),u=r(6656),p=r(5465),d=r(6200),f=r(3501),h="Object already initialized",m=s.WeakMap;if(a||p.state){var g=p.state||(p.state=new m),y=g.get,v=g.has,b=g.set;n=function(e,t){if(v.call(g,e))throw TypeError(h);return t.facade=e,b.call(g,e,t),t},i=function(e){return y.call(g,e)||{}},o=function(e){return v.call(g,e)}}else{var x=d("state");f[x]=!0,n=function(e,t){if(u(e,x))throw TypeError(h);return t.facade=e,c(e,x,t),t},i=function(e){return u(e,x)?e[x]:{}},o=function(e){return u(e,x)}}e.exports={set:n,get:i,has:o,enforce:function(e){return o(e)?i(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!l(t)||(r=i(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return r}}}},3157:function(e,t,r){var n=r(4326);e.exports=Array.isArray||function(e){return"Array"==n(e)}},4705:function(e,t,r){var n=r(7293),i=/#|\.prototype\./,o=function(e,t){var r=s[a(e)];return r==c||r!=l&&("function"==typeof t?n(t):!!t)},a=o.normalize=function(e){return String(e).replace(i,".").toLowerCase()},s=o.data={},l=o.NATIVE="N",c=o.POLYFILL="P";e.exports=o},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},133:function(e,t,r){var n=r(7392),i=r(7293);e.exports=!!Object.getOwnPropertySymbols&&!i((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},8536:function(e,t,r){var n=r(7854),i=r(2788),o=n.WeakMap;e.exports="function"==typeof o&&/native code/.test(i(o))},30:function(e,t,r){var n,i=r(9670),o=r(6048),a=r(748),s=r(3501),l=r(490),c=r(317),u=r(6200)("IE_PROTO"),p=function(){},d=function(e){return"