From 6c4a9f4de32d3ef4470f313698bb5c013501b937 Mon Sep 17 00:00:00 2001 From: Luca Faggianelli Date: Mon, 24 Apr 2023 17:52:26 +0200 Subject: [PATCH 01/19] update tests --- tests/pipeline_1.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/pipeline_1.py b/tests/pipeline_1.py index c56869c7..ac183328 100644 --- a/tests/pipeline_1.py +++ b/tests/pipeline_1.py @@ -23,7 +23,6 @@ async def pipe_1_task_1(data, params=None): "id": "pipe_1_task_1", "name": "Pipe 1 Task 1", "description": None, - "params": None, } ], "triggers": [], From de94a536c4e3c05fcc0f087031244c0778af67f9 Mon Sep 17 00:00:00 2001 From: Luca Faggianelli Date: Mon, 24 Apr 2023 18:06:51 +0200 Subject: [PATCH 02/19] run sync tasks in async loop to not block the app --- examples/dummy/app.py | 17 ----------------- examples/run.ps1 | 2 +- examples/run.sh | 2 +- examples/{dummy => src}/__init__.py | 0 examples/src/app.py | 19 +++++++++++++++++++ .../sales_pipeline.py} | 0 examples/src/sync_pipeline.py | 17 +++++++++++++++++ mario/pipeline/__init__.py | 6 ++++-- 8 files changed, 42 insertions(+), 21 deletions(-) delete mode 100755 examples/dummy/app.py rename examples/{dummy => src}/__init__.py (100%) create mode 100644 examples/src/app.py rename examples/{dummy/dummy_pipeline.py => src/sales_pipeline.py} (100%) create mode 100644 examples/src/sync_pipeline.py diff --git a/examples/dummy/app.py b/examples/dummy/app.py deleted file mode 100755 index 4b3d5ce9..00000000 --- a/examples/dummy/app.py +++ /dev/null @@ -1,17 +0,0 @@ -""" -# Run as: -```sh -cd examples -export PYTHONPATH=$(pwd)/.. -uvicorn dummy.app:app --reload --reload-dir .. -``` -""" - -from mario import Mario - -from .dummy_pipeline import sales_pipeline - - -app = Mario() - -app.register_pipeline(sales_pipeline) diff --git a/examples/run.ps1 b/examples/run.ps1 index 226f4c3d..c7455d38 100644 --- a/examples/run.ps1 +++ b/examples/run.ps1 @@ -1,2 +1,2 @@ $env:PYTHONPATH="$(pwd)/.." -uvicorn dummy.app:app --reload --reload-dir .. \ No newline at end of file +uvicorn src.app:app --reload --reload-dir .. \ No newline at end of file diff --git a/examples/run.sh b/examples/run.sh index 97984c53..000e77fd 100755 --- a/examples/run.sh +++ b/examples/run.sh @@ -1,2 +1,2 @@ export PYTHONPATH=$(pwd)/.. -uvicorn dummy.app:app --reload --reload-dir .. \ No newline at end of file +uvicorn src.app:app --reload --reload-dir .. \ No newline at end of file diff --git a/examples/dummy/__init__.py b/examples/src/__init__.py similarity index 100% rename from examples/dummy/__init__.py rename to examples/src/__init__.py diff --git a/examples/src/app.py b/examples/src/app.py new file mode 100644 index 00000000..bcafcaa2 --- /dev/null +++ b/examples/src/app.py @@ -0,0 +1,19 @@ +""" +# Run as: +```sh +cd examples +export PYTHONPATH=$(pwd)/.. +uvicorn src.app:app --reload --reload-dir .. +``` +""" + +from mario import Mario + +from .sales_pipeline import sales_pipeline +from .sync_pipeline import sync_pipeline + + +app = Mario() + +app.register_pipeline(sales_pipeline) +app.register_pipeline(sync_pipeline) diff --git a/examples/dummy/dummy_pipeline.py b/examples/src/sales_pipeline.py similarity index 100% rename from examples/dummy/dummy_pipeline.py rename to examples/src/sales_pipeline.py diff --git a/examples/src/sync_pipeline.py b/examples/src/sync_pipeline.py new file mode 100644 index 00000000..7fd65600 --- /dev/null +++ b/examples/src/sync_pipeline.py @@ -0,0 +1,17 @@ +import time + +from mario import Pipeline, task + + +@task +def sync_task(): + """ + This task is not async though it shouldn't block + the rest of the app + """ + time.sleep(10) + + +sync_pipeline = Pipeline( + id="sync_pipeline", description="This pipeline contains a sync task", tasks=[sync_task] +) diff --git a/mario/pipeline/__init__.py b/mario/pipeline/__init__.py index 762cd703..745a9180 100644 --- a/mario/pipeline/__init__.py +++ b/mario/pipeline/__init__.py @@ -1,5 +1,5 @@ from typing import Callable, Union -from asyncio import iscoroutinefunction +from asyncio import iscoroutinefunction, get_event_loop import functools from .task import Task @@ -14,7 +14,9 @@ async def wrapper_decorator(*args, **kwargs): if iscoroutinefunction(func): value = await func(*args, **kwargs) else: - value = func(*args, **kwargs) + value = await get_event_loop().run_in_executor( + None, functools.partial(func, **kwargs), *args + ) task_context.reset(token) From 37ebef73cd626c8b1ac05bfc212bfddb4b9af044 Mon Sep 17 00:00:00 2001 From: Luca Faggianelli Date: Tue, 25 Apr 2023 12:23:51 +0200 Subject: [PATCH 03/19] simplify pipelines registration #101 --- README.md | 13 ++----------- docs/create-a-pipeline.md | 24 +++++++++++++----------- examples/run.ps1 | 2 +- examples/run.sh | 2 +- examples/src/app.py | 21 +++++++++------------ examples/src/sales_pipeline.py | 6 ++---- examples/src/sync_pipeline.py | 8 +++++--- mario/__init__.py | 33 +++++++++++++++++++++++++++++++-- mario/pipeline/pipeline.py | 19 +++++++++++++------ 9 files changed, 77 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 49fccd3b..f5ee649a 100644 --- a/README.md +++ b/README.md @@ -130,10 +130,10 @@ from datetime import datetime from random import randint from apscheduler.triggers.interval import IntervalTrigger -from mario import Mario, task, get_logger, Pipeline, Trigger +from mario import task, get_logger, Trigger, register_pipeline -sales_pipeline = Pipeline( +register_pipeline( id="sales_pipeline", tasks = [fetch_raw_sales_data], triggers = [ @@ -175,15 +175,6 @@ async def fetch_raw_sales_data(input_data, params=None): return sales ``` -Finally create a MarioPype instance and register the pipeline so -Mario knows it's there: - -```py -app = Mario() - -app.register_pipeline(dummy_pipeline) -``` - ### Run Mario Pype Mario Pype is based on FastAPI so you can run it as a normal FastAPI app via `uvicorn`: diff --git a/docs/create-a-pipeline.md b/docs/create-a-pipeline.md index 45ca723b..45391df0 100644 --- a/docs/create-a-pipeline.md +++ b/docs/create-a-pipeline.md @@ -28,15 +28,15 @@ Before starting, let's define some naming so there will be no confusion! A *Pipeline* contains a list of tasks and eventually a list of triggers, so in your `app.py` add this: -```py +```py title="src/app.py" from datetime import datetime from random import randint from apscheduler.triggers.interval import IntervalTrigger -from mario import Mario, task, get_logger, Pipeline, Trigger +from mario import task, get_logger, Trigger, register_pipeline -sales_pipeline = Pipeline( +register_pipeline( id="sales_pipeline", tasks = [fetch_raw_sales_data], triggers = [ @@ -60,7 +60,7 @@ but it showcases the basics: notice how the `@task` decorator is used to declare a task -```py +```py title="src/app.py" @task async def fetch_raw_sales_data(): # using MarioPype logger your logs will be stored @@ -86,23 +86,25 @@ async def fetch_raw_sales_data(): return sales ``` -Finally create a Mario instance and register the pipeline so -MarioPype knows it's there: +Finally add this at the bottom of your file to start the app: -```py -app = Mario() +```py title="src/app.py" +if __name__ == "__main__": + import uvicorn -app.register_pipeline(dummy_pipeline) + uvicorn.run("mario:get_app", reload=True, factory=True) ``` ### Run Mario Pype Mario Pype is based on FastAPI so you can run it as a normal FastAPI app -via `uvicorn` or another ASGI web server: +via `uvicorn` (as in this example) or another ASGI web server. + +So install `uvicorn` and run the app: ```sh pip install uvicorn -uvicorn src.app:app --reload +python src/app.py ``` Now open the page [http://localhost:8000](http://localhost:8000) in your browser and enjoy! diff --git a/examples/run.ps1 b/examples/run.ps1 index c7455d38..3132246c 100644 --- a/examples/run.ps1 +++ b/examples/run.ps1 @@ -1,2 +1,2 @@ $env:PYTHONPATH="$(pwd)/.." -uvicorn src.app:app --reload --reload-dir .. \ No newline at end of file +python src/app.py \ No newline at end of file diff --git a/examples/run.sh b/examples/run.sh index 000e77fd..852087e7 100755 --- a/examples/run.sh +++ b/examples/run.sh @@ -1,2 +1,2 @@ export PYTHONPATH=$(pwd)/.. -uvicorn src.app:app --reload --reload-dir .. \ No newline at end of file +python src/app.py \ No newline at end of file diff --git a/examples/src/app.py b/examples/src/app.py index bcafcaa2..b7f05728 100644 --- a/examples/src/app.py +++ b/examples/src/app.py @@ -1,19 +1,16 @@ """ -# Run as: -```sh -cd examples -export PYTHONPATH=$(pwd)/.. -uvicorn src.app:app --reload --reload-dir .. -``` +Run via the run.sh or run.ps1 script """ -from mario import Mario +from mario import get_app # noqa: F401 -from .sales_pipeline import sales_pipeline -from .sync_pipeline import sync_pipeline +from examples.src import sales_pipeline, sync_pipeline # noqa: F401 -app = Mario() +if __name__ == "__main__": + import uvicorn -app.register_pipeline(sales_pipeline) -app.register_pipeline(sync_pipeline) + # `reload_dirs` is used to reload when the mario package itself changes + # this is useful during development of the mario package, normally shouldn't + # be used + uvicorn.run("mario:get_app", reload=True, factory=True, reload_dirs="..") diff --git a/examples/src/sales_pipeline.py b/examples/src/sales_pipeline.py index d4a16257..db58770a 100644 --- a/examples/src/sales_pipeline.py +++ b/examples/src/sales_pipeline.py @@ -7,9 +7,7 @@ import pandas as pd from pydantic import BaseModel -from mario.pipeline import task -from mario.pipeline.pipeline import Pipeline, Trigger -from mario.logger import get_logger +from mario import register_pipeline, task, Trigger, get_logger class InputParams(BaseModel): @@ -45,7 +43,7 @@ async def get_sales_data(params: InputParams): return data -sales_pipeline = Pipeline( +register_pipeline( id="sales_pipeline", description="""This is a very useless pipeline""", tasks=[get_sales_data], diff --git a/examples/src/sync_pipeline.py b/examples/src/sync_pipeline.py index 7fd65600..7ef08c95 100644 --- a/examples/src/sync_pipeline.py +++ b/examples/src/sync_pipeline.py @@ -1,6 +1,6 @@ import time -from mario import Pipeline, task +from mario import register_pipeline, task @task @@ -12,6 +12,8 @@ def sync_task(): time.sleep(10) -sync_pipeline = Pipeline( - id="sync_pipeline", description="This pipeline contains a sync task", tasks=[sync_task] +register_pipeline( + id="sync_pipeline", + description="This pipeline contains a sync task", + tasks=[sync_task], ) diff --git a/mario/__init__.py b/mario/__init__.py index c41facf4..aa5f11f4 100644 --- a/mario/__init__.py +++ b/mario/__init__.py @@ -1,6 +1,8 @@ import logging +from typing import List, Type from apscheduler.schedulers.base import SchedulerAlreadyRunningError +from pydantic import BaseModel from .api import app from .config import settings @@ -17,7 +19,7 @@ _logger.addHandler(logging.StreamHandler()) -class Mario: +class _Mario: def __init__(self) -> None: self._apply_settings() @@ -30,7 +32,7 @@ def _apply_settings(self): for notification in settings.notifications or []: self.add_notification_rule(notification) - def register_pipeline(self, pipeline): + def register_pipeline(self, pipeline: Pipeline): orchestrator.register_pipeline(pipeline) def add_notification_rule(self, notification: NotificationRule): @@ -43,3 +45,30 @@ def stop(self): # can be served directly by uvicorn async def __call__(self, scope, receive, send): await app.__call__(scope, receive, send) + + +_app = _Mario() + + +def get_app(): + return _app + + +def register_pipeline( + id: str, + tasks: List[Task], + name: str = None, + description: str = None, + params: Type[BaseModel] = None, + triggers: List[Trigger] = None, +): + pipeline = Pipeline( + id=id, + tasks=tasks, + name=name, + description=description, + params=params, + triggers=triggers, + ) + + _app.register_pipeline(pipeline) diff --git a/mario/pipeline/pipeline.py b/mario/pipeline/pipeline.py index 0669e514..be90db60 100644 --- a/mario/pipeline/pipeline.py +++ b/mario/pipeline/pipeline.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, List, Type +from typing import Any, Dict, List, Optional, Type from pydantic import BaseModel, Field, validator @@ -9,11 +9,14 @@ class Pipeline(BaseModel): id: str - name: str = None - description: str = None - params: Type[BaseModel] = Field(exclude=True, default=None) - tasks: List[Task] = Field(default_factory=list) - triggers: List[Trigger] = Field(default_factory=list) + tasks: List[Task] + name: Optional[str] = None + description: Optional[str] = None + params: Optional[Type[BaseModel]] = Field(exclude=True, default=None) + triggers: Optional[List[Trigger]] = Field(default_factory=list) + + class Config: + validate_assignment = True @validator("name", always=True) def generate_default_name(cls, name: str, values: Dict[str, Any]) -> str: @@ -30,3 +33,7 @@ def generate_default_description( return cls.__doc__ return description + + @validator("triggers", pre=True, always=True) + def set_name(cls, triggers): + return triggers or [] From 71f54df8f4523e71bfb46a8c87749d8f8696cf0e Mon Sep 17 00:00:00 2001 From: Luca Faggianelli Date: Tue, 25 Apr 2023 12:51:31 +0200 Subject: [PATCH 04/19] improve create a pipeline page --- docs/create-a-pipeline.md | 124 +++++++++++++++++++++++++++++--------- mkdocs.yml | 1 + 2 files changed, 96 insertions(+), 29 deletions(-) diff --git a/docs/create-a-pipeline.md b/docs/create-a-pipeline.md index 45391df0..8e5e3cb0 100644 --- a/docs/create-a-pipeline.md +++ b/docs/create-a-pipeline.md @@ -25,44 +25,27 @@ Before starting, let's define some naming so there will be no confusion! ## Basic pipeline -A *Pipeline* contains a list of tasks and eventually a list of triggers, -so in your `app.py` add this: - -```py title="src/app.py" -from datetime import datetime -from random import randint - -from apscheduler.triggers.interval import IntervalTrigger -from mario import task, get_logger, Trigger, register_pipeline - - -register_pipeline( - id="sales_pipeline", - tasks = [fetch_raw_sales_data], - triggers = [ - Trigger( - id="daily", - name="Daily", - description="Run the pipeline every day", - aps_trigger=IntervalTrigger(days=1), - ) - ], -) -``` +### Create a task A *Task* is the base block in Mario Pype and it's just a Python function that performs an action, i.e. download some data from an HTTP API, runs a query on a DB, etc. -This is the task `fetch_raw_sales_data` used in the `sales_pipeline` pipeline ... it doesn't do much, -but it showcases the basics: - !!! info notice how the `@task` decorator is used to declare a task ```py title="src/app.py" +from datetime import datetime +from random import randint + +from apscheduler.triggers.interval import IntervalTrigger +from mario import task, get_logger, Trigger, register_pipeline + + @task async def fetch_raw_sales_data(): + """Fetch latest 50 sales of the day""" + # using MarioPype logger your logs will be stored # and accessible on the web UI logger = get_logger() @@ -83,9 +66,32 @@ async def fetch_raw_sales_data(): # Return the results of your task to have it stored # and accessible on the web UI + # If you have other tasks, the output of a task is + # passed to the following one return sales ``` +### Create a pipeline + +A *Pipeline* contains a list of tasks and eventually a list of triggers, +so in your `app.py` add this: + +```py title="src/app.py" +register_pipeline( + id="sales_pipeline", + description="Aggregate sales activity from all stores across the country", + tasks = [fetch_raw_sales_data], + triggers = [ + Trigger( + id="daily", + name="Daily", + description="Run the pipeline every day", + aps_trigger=IntervalTrigger(days=1), + ), + ], +) +``` + Finally add this at the bottom of your file to start the app: ```py title="src/app.py" @@ -95,7 +101,67 @@ if __name__ == "__main__": uvicorn.run("mario:get_app", reload=True, factory=True) ``` -### Run Mario Pype +Now your `src/app.py` should look like this: + +??? Example "Click to see the full content of src/app.py" + + ```py title="src/app.py" + from datetime import datetime + from random import randint + + from apscheduler.triggers.interval import IntervalTrigger + from mario import task, get_logger, Trigger, register_pipeline + + + @task + async def fetch_raw_sales_data(): + """Fetch latest 50 sales of the day""" + + # using MarioPype logger your logs will be stored + # and accessible on the web UI + logger = get_logger() + + logger.debug("Fetching sales data...") + + sales = [ + { + "price": randint(1, 1000), + "store_id": randint(1, 10), + "date": datetime.today(), + "sku": randint(1, 50), + } + for _ in range(50) + ] + + logger.info("Fetched %s sales data rows", len(sales)) + + # Return the results of your task to have it stored + # and accessible on the web UI + return sales + + + register_pipeline( + id="sales_pipeline", + description="Aggregate sales activity from all stores across the country", + tasks=[fetch_raw_sales_data], + triggers=[ + Trigger( + id="daily", + name="Daily", + description="Run the pipeline every day", + aps_trigger=IntervalTrigger(days=1), + ), + ], + ) + + if __name__ == "__main__": + import uvicorn + + uvicorn.run("mario:get_app", reload=True, factory=True) + + ``` + +### Run the app Mario Pype is based on FastAPI so you can run it as a normal FastAPI app via `uvicorn` (as in this example) or another ASGI web server. @@ -107,4 +173,4 @@ pip install uvicorn python src/app.py ``` -Now open the page [http://localhost:8000](http://localhost:8000) in your browser and enjoy! +Now open the page [http://localhost:8000](http://localhost:8000){target=_blank} in your browser and enjoy! diff --git a/mkdocs.yml b/mkdocs.yml index ae8efaad..5c85df70 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -57,6 +57,7 @@ markdown_extensions: - pymdownx.highlight: anchor_linenums: true - admonition + - attr_list - pymdownx.details - pymdownx.superfences From 606f83d0804c330589365c45e3d9d95515a3bf8f Mon Sep 17 00:00:00 2001 From: Luca Faggianelli Date: Tue, 25 Apr 2023 12:51:52 +0200 Subject: [PATCH 05/19] Add docs info to readme --- README.md | 19 +++++++++++++++++-- requirements-dev.txt | 1 + 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f5ee649a..eb6c6e99 100644 --- a/README.md +++ b/README.md @@ -177,10 +177,14 @@ async def fetch_raw_sales_data(input_data, params=None): ### Run Mario Pype -Mario Pype is based on FastAPI so you can run it as a normal FastAPI app via `uvicorn`: +Mario Pype is based on FastAPI so you can run it as a normal FastAPI app +via `uvicorn` (as in this example) or another ASGI web server. + +So install `uvicorn` and run the app: ```sh -uvicorn my_project.app:app --reload +pip install uvicorn +python src/app.py ``` Now open the page http://localhost:8000 in your browser and enjoy! @@ -282,6 +286,17 @@ run the development server: yarn dev ``` +### Documentation + +The documentation website is based on MkDocs Material, the source code is in the +`docs/` folder and the config is in the `mkdocs.yml` file. + +To run a local dev server, run: + +``` +mkdocs serve +``` + ### Testing Tests are based on `pytest`, to run the entire suite just run: diff --git a/requirements-dev.txt b/requirements-dev.txt index 82169af7..494297e8 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,6 +1,7 @@ black==23.1.0 coverage==7.2.3 flake8==6.0.0 +mkdocs-material==9.1.* pytest==7.3.0 pytest_asyncio==0.21.0 pytest-env==0.8.1 From cd913e6c0286bc1fc406fbd9ecacbe3577e8da84 Mon Sep 17 00:00:00 2001 From: Luca Faggianelli Date: Tue, 25 Apr 2023 13:07:29 +0200 Subject: [PATCH 06/19] cleanup readme --- README.md | 150 +++------------------------- docs/assets/images/minimal-code.png | Bin 0 -> 230403 bytes 2 files changed, 12 insertions(+), 138 deletions(-) create mode 100644 docs/assets/images/minimal-code.png diff --git a/README.md b/README.md index eb6c6e99..9330ff40 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,9 @@ Mario Pype is a simple task scheduler for Python with a web UI and a REST API, if you need to run and monitor recurring python scripts then it's the right tool for you! -![Mario Pype Screen Shot](docs/assets/images/screenshot.png) +
+ Mario Pype Screen Shot +
> This project is at its beginning, so it can be shaped and improved with your feedback and help! @@ -75,158 +77,30 @@ When you shouldn't use it:

(back to top)

- - -## Getting Started +## 🚀 Getting Started Check the 👉 [official website](https://lucafaggianelli.github.io/mario-pype/) -for more detailed info! - -### Prerequisites - -To run Mario Pype you only need Python (v3.8 or later), if you don't have it installed yet, go -to the [official Python website](https://www.python.org/downloads/), download it -and install it. -### Installation - -Create and activate a virtual enrivonment in your new project folder, -for example: - -```sh -python -m venv .venv -# on Mac/Linux -source .venv/bin/activate -# on Win -.venv/Script/activate -``` +## 🧐 Show me the code -Then install the library: - -> Mario Pype is not published yet on pypi.org, that's why you need to install it - from git! - -```sh -pip install git+https://github.com/lucafaggianelli/mario-pype -``` - -Now you're ready to get started! Create a new folder in your project root with -a file named `app.py` (or any name you want) in it, -as in Python files should be in a top-level package. - -

(back to top)

- - -### Create your first Pipeline - -*Pipelines* are entities that can be scheduled and are composed of 1 or multiple *Tasks*. - -A Pipeline is a Python class that contains a list of tasks and eventually a list of triggers, -so in your `app.py` add this: - -```py -from datetime import datetime -from random import randint - -from apscheduler.triggers.interval import IntervalTrigger -from mario import task, get_logger, Trigger, register_pipeline - - -register_pipeline( - id="sales_pipeline", - tasks = [fetch_raw_sales_data], - triggers = [ - Trigger( - id="daily", - name="Daily", - description="Run the pipeline every day", - aps_trigger=IntervalTrigger(days=1), - ) - ], -) -``` - -A *Task* is the base block in Mario Pype and it's just a Python function that -performs an action. - -This is the Task `fetch_raw_sales_data` used in the `sales_pipeline` pipeline ... it doesn't do much, -but it showcase the basics: - -```py -@task -async def fetch_raw_sales_data(input_data, params=None): - logger = get_logger() - - logger.debug("Fetching sales data...") - - sales = [ - { - "price": randint(1, 1000), - "store_id": randint(1, 10), - "date": datetime.today(), - "sku": randint(1, 50), - } - for _ in range(50) - ] - - logger.info("Fetched %s sales data rows", len(sales)) - - return sales -``` - -### Run Mario Pype - -Mario Pype is based on FastAPI so you can run it as a normal FastAPI app -via `uvicorn` (as in this example) or another ASGI web server. - -So install `uvicorn` and run the app: - -```sh -pip install uvicorn -python src/app.py -``` - -Now open the page http://localhost:8000 in your browser and enjoy! - -### Usage from the UI - -From the home page at http://localhost:8000 hit the button *Run pipeline* -then click *Run* in the dialog. - -Now close the dialog and click on the pipeline name, then find the run on the right -and click on its number to view the details - -### Configure notifications - -You can optionally configure notifications creating the file `mario.config.yaml` -in the project root: - -```yml -notifications: - - pipeline_status: - - failed - - completed - channels: - - mailto://myuser:mypass@gmail.com -``` - -You can have multiple notifications configs and multiple channels for each config. -The channel is a URI directly passed to the notifications engine -[Apprise](https://github.com/caronc/apprise), check their docs for the supported channels. +This is how it looks a minimalist pipeline: +
+ Minimal code +
I know you want to see it!
+
-## Roadmap +## 🛣 Roadmap See the [open issues](https://github.com/lucafaggianelli/mario-pype/issues) for a full list of proposed features (and known issues).

(back to top)

- -## Contributing +## 👩‍💻 Contributing Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. diff --git a/docs/assets/images/minimal-code.png b/docs/assets/images/minimal-code.png new file mode 100644 index 0000000000000000000000000000000000000000..26353bd58932bbea53db30f79f7e11459d5193ae GIT binary patch literal 230403 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%0D=F0{b5TFw0j^y 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 e3gn6MQ~w{pH7#gVI}rQ;0000}k literal 0 HcmV?d00001 From 4f61e2da3c078794ff1eef13310eeda389ff30c7 Mon Sep 17 00:00:00 2001 From: Luca Faggianelli Date: Tue, 25 Apr 2023 18:13:50 +0200 Subject: [PATCH 07/19] better docs --- .../images/pipeline-page-tasks-card.png | Bin 0 -> 16426 bytes docs/assets/images/run-pipeline-button.png | Bin 0 -> 2075 bytes docs/assets/images/run-pipeline-dialog.png | Bin 0 -> 9230 bytes docs/assets/images/run-trigger-button.png | Bin 0 -> 2068 bytes .../images/trigger-page-trigger-card.png | Bin 0 -> 17449 bytes docs/triggers.md | 170 ++++++++++++++++++ docs/usage.md | 0 mkdocs.yml | 14 +- 8 files changed, 180 insertions(+), 4 deletions(-) create mode 100644 docs/assets/images/pipeline-page-tasks-card.png create mode 100644 docs/assets/images/run-pipeline-button.png create mode 100644 docs/assets/images/run-pipeline-dialog.png create mode 100644 docs/assets/images/run-trigger-button.png create mode 100644 docs/assets/images/trigger-page-trigger-card.png create mode 100644 docs/triggers.md delete mode 100644 docs/usage.md diff --git a/docs/assets/images/pipeline-page-tasks-card.png b/docs/assets/images/pipeline-page-tasks-card.png new file mode 100644 index 0000000000000000000000000000000000000000..8177b5d99fd2cb92f52967d0b094ffc9ba0d0a18 GIT binary patch literal 16426 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

=Z;e?^k~sOR6Y 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 z + ![Image title](assets/images/pipeline-page-tasks-card.png) +

URL to run the pipeline programmatically via an HTTP POST request
+ + +### Manual trigger + +![Manual run button](assets/images/run-pipeline-button.png){align=right} + +The web UI features a *manual run* button (which is based on the HTTP trigger). +You will find this button in the home page and in the pipeline page. + +### With parameters + +If the pipeline has input parameters, when you click the manual run button, +the dialog will present a form to let you customize the input parameters: + +
+ ![Manual run with parameters](assets/images/run-pipeline-dialog.png) +
Manual run with parameters
+
+ +The input form in the dialog is created automatically thanks to the Pydantic's +`BaseModel` that you declared in the pipeline. + +Parameters are configurable also when you run a pipeline via the HTTP trigger, +just pass the parameters as JSON body in the HTTP request. + + +## Schedules + +Scheduling a pipeline is probably the first thing you're looking for +when using Mario Pype. It's very easy, just add 1 or more triggers +when registering a pipeline, (the `triggers` argument must be a list +even if you only have 1 trigger). +The actual schedule is defined via the `aps_trigger` argument: + +```py hl_lines="1 7-15" +from apscheduler.triggers.interval import IntervalTrigger +from mario import register_pipeline, Trigger + +register_pipeline( + id="sales_pipeline", + tasks=[get_sales_data], + triggers=[ + Trigger( + id="daily", + description="Run the pipeline every day", + aps_trigger=IntervalTrigger( + days=1, + ), + ), + ], +) +``` + +`aps_trigger` accepts any APS trigger, at the moment the following schedules/APS triggers are available: + +* [`CronTrigger`](https://apscheduler.readthedocs.io/en/3.x/modules/triggers/cron.html#module-apscheduler.triggers.cron){target=_blank} +* [`DateTrigger`](https://apscheduler.readthedocs.io/en/3.x/modules/triggers/date.html#module-apscheduler.triggers.date){target=_blank} +* [`IntervalTrigger`](https://apscheduler.readthedocs.io/en/3.x/modules/triggers/interval.html#module-apscheduler.triggers.interval){target=_blank} +* [`Combining`](https://apscheduler.readthedocs.io/en/3.x/modules/triggers/combining.html#module-apscheduler.triggers.combining){target=_blank} + +## Triggers with parameters + +Adding triggers to a pipeline is not useful only for scheduling purposes, +but also for definign *alternative* entrypoints to run a pipeline with +custom parameters. + +If a pipeline has input parameters, then its triggers can have custom parameters: + +```py hl_lines="3-5 13 21-24" +from pydantic import BaseModel + +class InputParams(BaseModel): + past_days: int + convert_currency: bool = False + +def get_sales_data(params: InputParams): + print(params.past_days) + +register_pipeline( + id="sales_pipeline", + tasks=[get_sales_data], + params=InputParams, + triggers=[ + Trigger( + id="daily", + description="Get last 5 days of sales data in USD dollars", + aps_trigger=IntervalTrigger( + days=1, + ), + params={ + "past_days": 5, + "convert_currency": True, + }, + ), + ], +) +``` + +In the triggers page you'll find info about the trigger, including its +URL and its parameters. + +
+ ![Trigger info](assets/images/trigger-page-trigger-card.png) +
Trigger info, in the trigger page
+
+ + +Be aware that you cannot customize the input parameters when running a trigger +(manually or via HTTP), so be sure to provide a valid object +in the trigger's `params` argument. + +![Alt text](assets/images/run-trigger-button.png){align=right} + +Indeed when you click the *Run trigger* button, there will be no dialog to +confirm the run or customize the parameters. + + +!!! info "Why?" + + This is a design choice. A trigger is by definition a well-defined entrypoint + that could run without human intervention, that is via a schedule, and to have + consistent runs of the same trigger either via a schedule or via a UI button, + the trigger must be *immutable*. + +For example, based on the previous code, you can't declare the trigger like this, +because `past_days` is missing but it's mandatory in `InputParams`: + +```py +Trigger( + # ... + params={ + "convert_currency": True, + } +) +``` +Though you can omit optional values, so this would be valid: + +```py +Trigger( + # ... + params={ + "past_days": 3, + } +) +``` + +If you have a complex input parameters model, it's very useful to declare several triggers, +without a schedule, just to have clear entrypoints for a user that wants to run the pipeline +manually and doesn't know much about the code. diff --git a/docs/usage.md b/docs/usage.md deleted file mode 100644 index e69de29b..00000000 diff --git a/mkdocs.yml b/mkdocs.yml index 5c85df70..86288667 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -58,12 +58,18 @@ markdown_extensions: anchor_linenums: true - admonition - attr_list + - md_in_html - pymdownx.details - pymdownx.superfences nav: - Welcome: index.md - - Get started: get-started.md - - Your first pipeline: create-a-pipeline.md - - Configuration: configuration.md - - Deployment: deployment.md + - Get Started: + - Install: get-started.md + - Your first pipeline: create-a-pipeline.md + - Docs: + - Pipelines: pipelines.md + - Tasks: tasks.md + - Triggers: triggers.md + - Configuration: configuration.md + - Deployment: deployment.md From cc5980c80aca7864f5114fb299ac76ce5517ec5f Mon Sep 17 00:00:00 2001 From: Luca Faggianelli Date: Wed, 26 Apr 2023 13:47:59 +0200 Subject: [PATCH 08/19] add pages --- docs/a-better-pipeline.md | 24 ++++++++++++++++++++++++ docs/pipelines.md | 0 docs/tasks.md | 0 examples/src/sales_pipeline.py | 2 +- mkdocs.yml | 1 + 5 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 docs/a-better-pipeline.md create mode 100644 docs/pipelines.md create mode 100644 docs/tasks.md diff --git a/docs/a-better-pipeline.md b/docs/a-better-pipeline.md new file mode 100644 index 00000000..51dfa1bc --- /dev/null +++ b/docs/a-better-pipeline.md @@ -0,0 +1,24 @@ + + +```py +register_pipeline( + id="sales_pipeline", + description="""This is a very useless pipeline""", + tasks=[get_sales_data], + triggers=[ + Trigger( + id="daily", + name="Daily", + description="Run the pipeline every day", + params=InputParams(some_value=2), + aps_trigger=IntervalTrigger( + days=1, + start_date=datetime( + 2023, 1, 1, 22, 30, tzinfo=tz.gettz("Europe/Brussels") + ), + ), + ) + ], + params=InputParams, +) +``` \ No newline at end of file diff --git a/docs/pipelines.md b/docs/pipelines.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/tasks.md b/docs/tasks.md new file mode 100644 index 00000000..e69de29b diff --git a/examples/src/sales_pipeline.py b/examples/src/sales_pipeline.py index db58770a..fb8a6ae1 100644 --- a/examples/src/sales_pipeline.py +++ b/examples/src/sales_pipeline.py @@ -15,7 +15,7 @@ class InputParams(BaseModel): @task -async def get_sales_data(params: InputParams): +async def get_sales_data(params: InputParams) -> pd.DataFrame: """Fetch raw sales data by store and SKU""" logger = get_logger() diff --git a/mkdocs.yml b/mkdocs.yml index 86288667..2e681d69 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -67,6 +67,7 @@ nav: - Get Started: - Install: get-started.md - Your first pipeline: create-a-pipeline.md + - A better pipeline: a-better-pipeline.md - Docs: - Pipelines: pipelines.md - Tasks: tasks.md From 4d608a965f2910dc6cc3b545ed9ff97b42cdcc4f Mon Sep 17 00:00:00 2001 From: Luca Faggianelli Date: Mon, 22 May 2023 14:07:16 +0200 Subject: [PATCH 09/19] rename aps_trigger to schedule --- docs/a-better-pipeline.md | 2 +- docs/create-a-pipeline.md | 4 ++-- docs/triggers.md | 8 ++++---- examples/src/sales_pipeline.py | 2 +- frontend/src/components/TriggersList.tsx | 2 +- .../pipelines/[pipelineId]/triggers/[triggerId]/index.tsx | 2 +- frontend/src/types.ts | 2 +- mario/orchestrator/__init__.py | 2 +- mario/pipeline/trigger.py | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/a-better-pipeline.md b/docs/a-better-pipeline.md index 51dfa1bc..84751529 100644 --- a/docs/a-better-pipeline.md +++ b/docs/a-better-pipeline.md @@ -11,7 +11,7 @@ register_pipeline( name="Daily", description="Run the pipeline every day", params=InputParams(some_value=2), - aps_trigger=IntervalTrigger( + schedule=IntervalTrigger( days=1, start_date=datetime( 2023, 1, 1, 22, 30, tzinfo=tz.gettz("Europe/Brussels") diff --git a/docs/create-a-pipeline.md b/docs/create-a-pipeline.md index 8e5e3cb0..c9be2011 100644 --- a/docs/create-a-pipeline.md +++ b/docs/create-a-pipeline.md @@ -86,7 +86,7 @@ register_pipeline( id="daily", name="Daily", description="Run the pipeline every day", - aps_trigger=IntervalTrigger(days=1), + schedule=IntervalTrigger(days=1), ), ], ) @@ -149,7 +149,7 @@ Now your `src/app.py` should look like this: id="daily", name="Daily", description="Run the pipeline every day", - aps_trigger=IntervalTrigger(days=1), + schedule=IntervalTrigger(days=1), ), ], ) diff --git a/docs/triggers.md b/docs/triggers.md index 9c87088b..5a1d5eab 100644 --- a/docs/triggers.md +++ b/docs/triggers.md @@ -51,7 +51,7 @@ Scheduling a pipeline is probably the first thing you're looking for when using Mario Pype. It's very easy, just add 1 or more triggers when registering a pipeline, (the `triggers` argument must be a list even if you only have 1 trigger). -The actual schedule is defined via the `aps_trigger` argument: +The actual schedule is defined via the `schedule` argument: ```py hl_lines="1 7-15" from apscheduler.triggers.interval import IntervalTrigger @@ -64,7 +64,7 @@ register_pipeline( Trigger( id="daily", description="Run the pipeline every day", - aps_trigger=IntervalTrigger( + schedule=IntervalTrigger( days=1, ), ), @@ -72,7 +72,7 @@ register_pipeline( ) ``` -`aps_trigger` accepts any APS trigger, at the moment the following schedules/APS triggers are available: +`schedule` accepts any APS trigger, at the moment the following schedules/APS triggers are available: * [`CronTrigger`](https://apscheduler.readthedocs.io/en/3.x/modules/triggers/cron.html#module-apscheduler.triggers.cron){target=_blank} * [`DateTrigger`](https://apscheduler.readthedocs.io/en/3.x/modules/triggers/date.html#module-apscheduler.triggers.date){target=_blank} @@ -105,7 +105,7 @@ register_pipeline( Trigger( id="daily", description="Get last 5 days of sales data in USD dollars", - aps_trigger=IntervalTrigger( + schedule=IntervalTrigger( days=1, ), params={ diff --git a/examples/src/sales_pipeline.py b/examples/src/sales_pipeline.py index fb8a6ae1..96423f2e 100644 --- a/examples/src/sales_pipeline.py +++ b/examples/src/sales_pipeline.py @@ -53,7 +53,7 @@ async def get_sales_data(params: InputParams) -> pd.DataFrame: name="Daily", description="Run the pipeline every day", params=InputParams(some_value=2), - aps_trigger=IntervalTrigger( + schedule=IntervalTrigger( days=1, start_date=datetime( 2023, 1, 1, 22, 30, tzinfo=tz.gettz("Europe/Brussels") diff --git a/frontend/src/components/TriggersList.tsx b/frontend/src/components/TriggersList.tsx index 523f4714..a977fc90 100644 --- a/frontend/src/components/TriggersList.tsx +++ b/frontend/src/components/TriggersList.tsx @@ -44,7 +44,7 @@ const TriggersList: React.FC = ({ pipeline }) => { > {trigger.name} - {trigger.aps_trigger} + {trigger.schedule} ))} diff --git a/frontend/src/pages/pipelines/[pipelineId]/triggers/[triggerId]/index.tsx b/frontend/src/pages/pipelines/[pipelineId]/triggers/[triggerId]/index.tsx index 7024e3e6..47ebd91e 100644 --- a/frontend/src/pages/pipelines/[pipelineId]/triggers/[triggerId]/index.tsx +++ b/frontend/src/pages/pipelines/[pipelineId]/triggers/[triggerId]/index.tsx @@ -111,7 +111,7 @@ const TriggerView: React.FC = () => { Schedule - {trigger.aps_trigger} + {trigger.schedule} diff --git a/frontend/src/types.ts b/frontend/src/types.ts index 06894a6a..611b7f75 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -15,7 +15,7 @@ export interface Trigger { id: string name: string description?: string - aps_trigger?: string + schedule?: string paused?: boolean params?: any } diff --git a/mario/orchestrator/__init__.py b/mario/orchestrator/__init__.py index f693d433..cb86413f 100644 --- a/mario/orchestrator/__init__.py +++ b/mario/orchestrator/__init__.py @@ -38,7 +38,7 @@ def register_pipeline(self, pipeline: Pipeline): self.scheduler.add_job( id=job_id, func=run, - trigger=trigger.aps_trigger, + trigger=trigger.schedule, kwargs=dict(pipeline=pipeline, trigger=trigger), # run once instead of many times if the scheduler determines that the # job should be run more than once in succession diff --git a/mario/pipeline/trigger.py b/mario/pipeline/trigger.py index f58ff395..40ff308a 100644 --- a/mario/pipeline/trigger.py +++ b/mario/pipeline/trigger.py @@ -7,7 +7,7 @@ class Trigger(BaseModel): id: str name: str - aps_trigger: BaseTrigger + schedule: BaseTrigger description: str = __doc__ params: dict = None paused: bool = False From 1f1a3a5f40885473a418331d71bf1600f47a1b0a Mon Sep 17 00:00:00 2001 From: Luca Faggianelli Date: Mon, 22 May 2023 14:08:39 +0200 Subject: [PATCH 10/19] Update frontend build --- .../{HandsonTable-763b26e1.js => HandsonTable-61c9230e.js} | 2 +- mario/static/assets/{index-be6853e2.js => index-6c284eea.js} | 4 ++-- mario/static/index.html | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename mario/static/assets/{HandsonTable-763b26e1.js => HandsonTable-61c9230e.js} (99%) rename mario/static/assets/{index-be6853e2.js => index-6c284eea.js} (56%) diff --git a/mario/static/assets/HandsonTable-763b26e1.js b/mario/static/assets/HandsonTable-61c9230e.js similarity index 99% rename from mario/static/assets/HandsonTable-763b26e1.js rename to mario/static/assets/HandsonTable-61c9230e.js index c4b378b2..af9a2c5a 100644 --- a/mario/static/assets/HandsonTable-763b26e1.js +++ b/mario/static/assets/HandsonTable-61c9230e.js @@ -1,4 +1,4 @@ -import{j as hz}from"./index-be6853e2.js";import{ak as vS,a9 as Yt,al as iL,am as dz}from"./vendor-ccd85f8c.js";var cv=function(e){return e&&e.Math==Math&&e},gt=cv(typeof globalThis=="object"&&globalThis)||cv(typeof window=="object"&&window)||cv(typeof self=="object"&&self)||cv(typeof vS=="object"&&vS)||function(){return this}()||Function("return this")(),xn={},je=function(e){try{return!!e()}catch{return!0}},vz=je,Bt=!vz(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7}),yz=je,wd=!yz(function(){var e=function(){}.bind();return typeof e!="function"||e.hasOwnProperty("prototype")}),pz=wd,hv=Function.prototype.call,Gt=pz?hv.bind(hv):function(){return hv.apply(hv,arguments)},Sd={},aL={}.propertyIsEnumerable,lL=Object.getOwnPropertyDescriptor,mz=lL&&!aL.call({1:2},1);Sd.f=mz?function(t){var r=lL(this,t);return!!r&&r.enumerable}:aL;var Cd=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}},sL=wd,uL=Function.prototype,yS=uL.call,gz=sL&&uL.bind.bind(yS,yS),Be=sL?gz:function(e){return function(){return yS.apply(e,arguments)}},fL=Be,bz=fL({}.toString),wz=fL("".slice),Dn=function(e){return wz(bz(e),8,-1)},Sz=Be,Cz=je,_z=Dn,Fg=Object,Oz=Sz("".split),_d=Cz(function(){return!Fg("z").propertyIsEnumerable(0)})?function(e){return _z(e)=="String"?Oz(e,""):Fg(e)}:Fg,dn=function(e){return e==null},Rz=dn,Ez=TypeError,Rr=function(e){if(Rz(e))throw Ez("Can't call method on "+e);return e},Pz=_d,Tz=Rr,Nr=function(e){return Pz(Tz(e))},pS=typeof document=="object"&&document.all,kz=typeof pS>"u"&&pS!==void 0,cL={all:pS,IS_HTMLDDA:kz},hL=cL,$z=hL.all,_t=hL.IS_HTMLDDA?function(e){return typeof e=="function"||e===$z}:function(e){return typeof e=="function"},nT=_t,dL=cL,Az=dL.all,Ft=dL.IS_HTMLDDA?function(e){return typeof e=="object"?e!==null:nT(e)||e===Az}:function(e){return typeof e=="object"?e!==null:nT(e)},Vg=gt,Iz=_t,Mz=function(e){return Iz(e)?e:void 0},xo=function(e,t){return arguments.length<2?Mz(Vg[e]):Vg[e]&&Vg[e][t]},xz=Be,bi=xz({}.isPrototypeOf),Ha=typeof navigator<"u"&&String(navigator.userAgent)||"",vL=gt,Wg=Ha,oT=vL.process,iT=vL.Deno,aT=oT&&oT.versions||iT&&iT.version,lT=aT&&aT.v8,an,op;lT&&(an=lT.split("."),op=an[0]>0&&an[0]<4?1:+(an[0]+an[1]));!op&&Wg&&(an=Wg.match(/Edge\/(\d+)/),(!an||an[1]>=74)&&(an=Wg.match(/Chrome\/(\d+)/),an&&(op=+an[1])));var Od=op,sT=Od,Dz=je,Qu=!!Object.getOwnPropertySymbols&&!Dz(function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&sT&&sT<41}),Nz=Qu,yL=Nz&&!Symbol.sham&&typeof Symbol.iterator=="symbol",Hz=xo,Lz=_t,jz=bi,Bz=yL,Fz=Object,Rd=Bz?function(e){return typeof e=="symbol"}:function(e){var t=Hz("Symbol");return Lz(t)&&jz(t.prototype,Fz(e))},Vz=String,Ju=function(e){try{return Vz(e)}catch{return"Object"}},Wz=_t,Uz=Ju,zz=TypeError,La=function(e){if(Wz(e))return e;throw zz(Uz(e)+" is not a function")},Gz=La,Yz=dn,ja=function(e,t){var r=e[t];return Yz(r)?void 0:Gz(r)},Ug=Gt,zg=_t,Gg=Ft,Kz=TypeError,pL=function(e,t){var r,n;if(t==="string"&&zg(r=e.toString)&&!Gg(n=Ug(r,e))||zg(r=e.valueOf)&&!Gg(n=Ug(r,e))||t!=="string"&&zg(r=e.toString)&&!Gg(n=Ug(r,e)))return n;throw Kz("Can't convert object to primitive value")},pi={},qz={get exports(){return pi},set exports(e){pi=e}},Xz=!1,uT=gt,Zz=Object.defineProperty,cR=function(e,t){try{Zz(uT,e,{value:t,configurable:!0,writable:!0})}catch{uT[e]=t}return t},Qz=gt,Jz=cR,fT="__core-js_shared__",eG=Qz[fT]||Jz(fT,{}),hR=eG,cT=hR;(qz.exports=function(e,t){return cT[e]||(cT[e]=t!==void 0?t:{})})("versions",[]).push({version:"3.29.1",mode:"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.29.1/LICENSE",source:"https://github.com/zloirock/core-js"});var tG=Rr,rG=Object,Er=function(e){return rG(tG(e))},nG=Be,oG=Er,iG=nG({}.hasOwnProperty),$t=Object.hasOwn||function(t,r){return iG(oG(t),r)},aG=Be,lG=0,sG=Math.random(),uG=aG(1 .toString),Cm=function(e){return"Symbol("+(e===void 0?"":e)+")_"+uG(++lG+sG,36)},fG=gt,cG=pi,hT=$t,hG=Cm,dG=Qu,vG=yL,kl=fG.Symbol,Yg=cG("wks"),yG=vG?kl.for||kl:kl&&kl.withoutSetter||hG,St=function(e){return hT(Yg,e)||(Yg[e]=dG&&hT(kl,e)?kl[e]:yG("Symbol."+e)),Yg[e]},pG=Gt,dT=Ft,vT=Rd,mG=ja,gG=pL,bG=St,wG=TypeError,SG=bG("toPrimitive"),mL=function(e,t){if(!dT(e)||vT(e))return e;var r=mG(e,SG),n;if(r){if(t===void 0&&(t="default"),n=pG(r,e,t),!dT(n)||vT(n))return n;throw wG("Can't convert object to primitive value")}return t===void 0&&(t="number"),gG(e,t)},CG=mL,_G=Rd,_m=function(e){var t=CG(e,"string");return _G(t)?t:t+""},OG=gt,yT=Ft,mS=OG.document,RG=yT(mS)&&yT(mS.createElement),Om=function(e){return RG?mS.createElement(e):{}},EG=Bt,PG=je,TG=Om,gL=!EG&&!PG(function(){return Object.defineProperty(TG("div"),"a",{get:function(){return 7}}).a!=7}),kG=Bt,$G=Gt,AG=Sd,IG=Cd,MG=Nr,xG=_m,DG=$t,NG=gL,pT=Object.getOwnPropertyDescriptor;xn.f=kG?pT:function(t,r){if(t=MG(t),r=xG(r),NG)try{return pT(t,r)}catch{}if(DG(t,r))return IG(!$G(AG.f,t,r),t[r])};var mr={},HG=Bt,LG=je,bL=HG&&LG(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!=42}),jG=Ft,BG=String,FG=TypeError,Dt=function(e){if(jG(e))return e;throw FG(BG(e)+" is not an object")},VG=Bt,WG=gL,UG=bL,dv=Dt,mT=_m,zG=TypeError,Kg=Object.defineProperty,GG=Object.getOwnPropertyDescriptor,qg="enumerable",Xg="configurable",Zg="writable";mr.f=VG?UG?function(t,r,n){if(dv(t),r=mT(r),dv(n),typeof t=="function"&&r==="prototype"&&"value"in n&&Zg in n&&!n[Zg]){var o=GG(t,r);o&&o[Zg]&&(t[r]=n.value,n={configurable:Xg in n?n[Xg]:o[Xg],enumerable:qg in n?n[qg]:o[qg],writable:!1})}return Kg(t,r,n)}:Kg:function(t,r,n){if(dv(t),r=mT(r),dv(n),WG)try{return Kg(t,r,n)}catch{}if("get"in n||"set"in n)throw zG("Accessors not supported");return"value"in n&&(t[r]=n.value),t};var YG=Bt,KG=mr,qG=Cd,Ba=YG?function(e,t,r){return KG.f(e,t,qG(1,r))}:function(e,t,r){return e[t]=r,e},ip={},XG={get exports(){return ip},set exports(e){ip=e}},gS=Bt,ZG=$t,wL=Function.prototype,QG=gS&&Object.getOwnPropertyDescriptor,dR=ZG(wL,"name"),JG=dR&&function(){}.name==="something",eY=dR&&(!gS||gS&&QG(wL,"name").configurable),Ed={EXISTS:dR,PROPER:JG,CONFIGURABLE:eY},tY=Be,rY=_t,bS=hR,nY=tY(Function.toString);rY(bS.inspectSource)||(bS.inspectSource=function(e){return nY(e)});var SL=bS.inspectSource,oY=gt,iY=_t,gT=oY.WeakMap,CL=iY(gT)&&/native code/.test(String(gT)),aY=pi,lY=Cm,bT=aY("keys"),Rm=function(e){return bT[e]||(bT[e]=lY(e))},Pd={},sY=CL,_L=gt,uY=Ft,fY=Ba,Qg=$t,Jg=hR,cY=Rm,hY=Pd,wT="Object already initialized",wS=_L.TypeError,dY=_L.WeakMap,ap,fc,lp,vY=function(e){return lp(e)?fc(e):ap(e,{})},yY=function(e){return function(t){var r;if(!uY(t)||(r=fc(t)).type!==e)throw wS("Incompatible receiver, "+e+" required");return r}};if(sY||Jg.state){var yn=Jg.state||(Jg.state=new dY);yn.get=yn.get,yn.has=yn.has,yn.set=yn.set,ap=function(e,t){if(yn.has(e))throw wS(wT);return t.facade=e,yn.set(e,t),t},fc=function(e){return yn.get(e)||{}},lp=function(e){return yn.has(e)}}else{var qa=cY("state");hY[qa]=!0,ap=function(e,t){if(Qg(e,qa))throw wS(wT);return t.facade=e,fY(e,qa,t),t},fc=function(e){return Qg(e,qa)?e[qa]:{}},lp=function(e){return Qg(e,qa)}}var Do={set:ap,get:fc,has:lp,enforce:vY,getterFor:yY},vR=Be,pY=je,mY=_t,vv=$t,SS=Bt,gY=Ed.CONFIGURABLE,bY=SL,OL=Do,wY=OL.enforce,SY=OL.get,ST=String,my=Object.defineProperty,CY=vR("".slice),_Y=vR("".replace),OY=vR([].join),RY=SS&&!pY(function(){return my(function(){},"length",{value:8}).length!==8}),EY=String(String).split("String"),PY=XG.exports=function(e,t,r){CY(ST(t),0,7)==="Symbol("&&(t="["+_Y(ST(t),/^Symbol\(([^)]*)\)/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!vv(e,"name")||gY&&e.name!==t)&&(SS?my(e,"name",{value:t,configurable:!0}):e.name=t),RY&&r&&vv(r,"arity")&&e.length!==r.arity&&my(e,"length",{value:r.arity});try{r&&vv(r,"constructor")&&r.constructor?SS&&my(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch{}var n=wY(e);return vv(n,"source")||(n.source=OY(EY,typeof t=="string"?t:"")),e};Function.prototype.toString=PY(function(){return mY(this)&&SY(this).source||bY(this)},"toString");var TY=_t,kY=mr,$Y=ip,AY=cR,qr=function(e,t,r,n){n||(n={});var o=n.enumerable,i=n.name!==void 0?n.name:t;if(TY(r)&&$Y(r,i,n),n.global)o?e[t]=r:AY(t,r);else{try{n.unsafe?e[t]&&(o=!0):delete e[t]}catch{}o?e[t]=r:kY.f(e,t,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return e},Fa={},IY=Math.ceil,MY=Math.floor,xY=Math.trunc||function(t){var r=+t;return(r>0?MY:IY)(r)},DY=xY,wi=function(e){var t=+e;return t!==t||t===0?0:DY(t)},NY=wi,HY=Math.max,LY=Math.min,Td=function(e,t){var r=NY(e);return r<0?HY(r+t,0):LY(r,t)},jY=wi,BY=Math.min,Va=function(e){return e>0?BY(jY(e),9007199254740991):0},FY=Va,Xr=function(e){return FY(e.length)},VY=Nr,WY=Td,UY=Xr,CT=function(e){return function(t,r,n){var o=VY(t),i=UY(o),a=WY(n,i),l;if(e&&r!=r){for(;i>a;)if(l=o[a++],l!=l)return!0}else for(;i>a;a++)if((e||a in o)&&o[a]===r)return e||a||0;return!e&&-1}},yR={includes:CT(!0),indexOf:CT(!1)},zY=Be,eb=$t,GY=Nr,YY=yR.indexOf,KY=Pd,_T=zY([].push),RL=function(e,t){var r=GY(e),n=0,o=[],i;for(i in r)!eb(KY,i)&&eb(r,i)&&_T(o,i);for(;t.length>n;)eb(r,i=t[n++])&&(~YY(o,i)||_T(o,i));return o},pR=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],qY=RL,XY=pR,ZY=XY.concat("length","prototype");Fa.f=Object.getOwnPropertyNames||function(t){return qY(t,ZY)};var kd={};kd.f=Object.getOwnPropertySymbols;var QY=xo,JY=Be,e3=Fa,t3=kd,r3=Dt,n3=JY([].concat),EL=QY("Reflect","ownKeys")||function(t){var r=e3.f(r3(t)),n=t3.f;return n?n3(r,n(t)):r},OT=$t,o3=EL,i3=xn,a3=mr,PL=function(e,t,r){for(var n=o3(t),o=a3.f,i=i3.f,a=0;aa;)D3.f(t,l=o[a++],n[l]);return t};var j3=xo,kL=j3("document","documentElement"),B3=Dt,F3=gR,RT=pR,V3=Pd,W3=kL,U3=Om,z3=Rm,ET=">",PT="<",CS="prototype",_S="script",$L=z3("IE_PROTO"),rb=function(){},AL=function(e){return PT+_S+ET+e+PT+"/"+_S+ET},TT=function(e){e.write(AL("")),e.close();var t=e.parentWindow.Object;return e=null,t},G3=function(){var e=U3("iframe"),t="java"+_S+":",r;return e.style.display="none",W3.appendChild(e),e.src=String(t),r=e.contentWindow.document,r.open(),r.write(AL("document.F=Object")),r.close(),r.F},yv,by=function(){try{yv=new ActiveXObject("htmlfile")}catch{}by=typeof document<"u"?document.domain&&yv?TT(yv):G3():TT(yv);for(var e=RT.length;e--;)delete by[CS][RT[e]];return by()};V3[$L]=!0;var ef=Object.create||function(t,r){var n;return t!==null?(rb[CS]=B3(t),n=new rb,rb[CS]=null,n[$L]=t):n=by(),r===void 0?n:F3.f(n,r)},bR={},Y3=_m,K3=mr,q3=Cd,tf=function(e,t,r){var n=Y3(t);n in e?K3.f(e,n,q3(0,r)):e[n]=r},kT=Td,X3=Xr,Z3=tf,Q3=Array,J3=Math.max,wR=function(e,t,r){for(var n=X3(e),o=kT(t,n),i=kT(r===void 0?n:r,n),a=Q3(J3(i-o,0)),l=0;og;g++)if((l||g in d)&&(_=d[g],T=v(_,g,h),e))if(t)S[g]=T;else if(T)switch(e){case 3:return!0;case 5:return _;case 6:return g;case 2:NT(S,_)}else switch(e){case 4:return!1;case 7:NT(S,_)}return i?-1:n||o?o:S}},Wa={forEach:Bo(0),map:Bo(1),filter:Bo(2),some:Bo(3),every:Bo(4),find:Bo(5),findIndex:Bo(6),filterReject:Bo(7)},$m=Ae,RR=gt,ER=Gt,WK=Be,Yl=Bt,Kl=Qu,UK=je,Qt=$t,zK=bi,OS=Dt,Am=Nr,PR=_m,GK=Vt,RS=Cd,cc=ef,BL=Ad,YK=Fa,FL=bR,KK=kd,VL=xn,WL=mr,qK=gR,UL=Sd,nb=qr,XK=Id,TR=pi,ZK=Rm,zL=Pd,HT=Cm,QK=St,JK=SR,e4=CR,t4=DL,r4=Tm,GL=Do,Im=Wa.forEach,_r=ZK("hidden"),Mm="Symbol",hc="prototype",n4=GL.set,LT=GL.getterFor(Mm),zr=Object[hc],ga=RR.Symbol,Wf=ga&&ga[hc],o4=RR.TypeError,ob=RR.QObject,YL=VL.f,Wi=WL.f,KL=FL.f,i4=UL.f,qL=WK([].push),To=TR("symbols"),Dd=TR("op-symbols"),a4=TR("wks"),ES=!ob||!ob[hc]||!ob[hc].findChild,PS=Yl&&UK(function(){return cc(Wi({},"a",{get:function(){return Wi(this,"a",{value:7}).a}})).a!=7})?function(e,t,r){var n=YL(zr,t);n&&delete zr[t],Wi(e,t,r),n&&e!==zr&&Wi(zr,t,n)}:Wi,ib=function(e,t){var r=To[e]=cc(Wf);return n4(r,{type:Mm,tag:e,description:t}),Yl||(r.description=t),r},xm=function(t,r,n){t===zr&&xm(Dd,r,n),OS(t);var o=PR(r);return OS(n),Qt(To,o)?(n.enumerable?(Qt(t,_r)&&t[_r][o]&&(t[_r][o]=!1),n=cc(n,{enumerable:RS(0,!1)})):(Qt(t,_r)||Wi(t,_r,RS(1,{})),t[_r][o]=!0),PS(t,o,n)):Wi(t,o,n)},kR=function(t,r){OS(t);var n=Am(r),o=BL(n).concat(QL(n));return Im(o,function(i){(!Yl||ER(TS,n,i))&&xm(t,i,n[i])}),t},l4=function(t,r){return r===void 0?cc(t):kR(cc(t),r)},TS=function(t){var r=PR(t),n=ER(i4,this,r);return this===zr&&Qt(To,r)&&!Qt(Dd,r)?!1:n||!Qt(this,r)||!Qt(To,r)||Qt(this,_r)&&this[_r][r]?n:!0},XL=function(t,r){var n=Am(t),o=PR(r);if(!(n===zr&&Qt(To,o)&&!Qt(Dd,o))){var i=YL(n,o);return i&&Qt(To,o)&&!(Qt(n,_r)&&n[_r][o])&&(i.enumerable=!0),i}},ZL=function(t){var r=KL(Am(t)),n=[];return Im(r,function(o){!Qt(To,o)&&!Qt(zL,o)&&qL(n,o)}),n},QL=function(e){var t=e===zr,r=KL(t?Dd:Am(e)),n=[];return Im(r,function(o){Qt(To,o)&&(!t||Qt(zr,o))&&qL(n,To[o])}),n};Kl||(ga=function(){if(zK(Wf,this))throw o4("Symbol is not a constructor");var t=!arguments.length||arguments[0]===void 0?void 0:GK(arguments[0]),r=HT(t),n=function(o){this===zr&&ER(n,Dd,o),Qt(this,_r)&&Qt(this[_r],r)&&(this[_r][r]=!1),PS(this,r,RS(1,o))};return Yl&&ES&&PS(zr,r,{configurable:!0,set:n}),ib(r,t)},Wf=ga[hc],nb(Wf,"toString",function(){return LT(this).tag}),nb(ga,"withoutSetter",function(e){return ib(HT(e),e)}),UL.f=TS,WL.f=xm,qK.f=kR,VL.f=XL,YK.f=FL.f=ZL,KK.f=QL,JK.f=function(e){return ib(QK(e),e)},Yl&&(XK(Wf,"description",{configurable:!0,get:function(){return LT(this).description}}),nb(zr,"propertyIsEnumerable",TS,{unsafe:!0})));$m({global:!0,constructor:!0,wrap:!0,forced:!Kl,sham:!Kl},{Symbol:ga});Im(BL(a4),function(e){e4(e)});$m({target:Mm,stat:!0,forced:!Kl},{useSetter:function(){ES=!0},useSimple:function(){ES=!1}});$m({target:"Object",stat:!0,forced:!Kl,sham:!Yl},{create:l4,defineProperty:xm,defineProperties:kR,getOwnPropertyDescriptor:XL});$m({target:"Object",stat:!0,forced:!Kl},{getOwnPropertyNames:ZL});t4();r4(ga,Mm);zL[_r]=!0;var s4=Qu,JL=s4&&!!Symbol.for&&!!Symbol.keyFor,u4=Ae,f4=xo,c4=$t,h4=Vt,ej=pi,d4=JL,ab=ej("string-to-symbol-registry"),v4=ej("symbol-to-string-registry");u4({target:"Symbol",stat:!0,forced:!d4},{for:function(e){var t=h4(e);if(c4(ab,t))return ab[t];var r=f4("Symbol")(t);return ab[t]=r,v4[r]=t,r}});var y4=Ae,p4=$t,m4=Rd,g4=Ju,b4=pi,w4=JL,jT=b4("symbol-to-string-registry");y4({target:"Symbol",stat:!0,forced:!w4},{keyFor:function(t){if(!m4(t))throw TypeError(g4(t)+" is not a symbol");if(p4(jT,t))return jT[t]}});var S4=wd,tj=Function.prototype,BT=tj.apply,FT=tj.call,Ua=typeof Reflect=="object"&&Reflect.apply||(S4?FT.bind(BT):function(){return FT.apply(BT,arguments)}),C4=Be,Nd=C4([].slice),_4=Be,VT=rf,O4=_t,WT=Dn,R4=Vt,UT=_4([].push),E4=function(e){if(O4(e))return e;if(VT(e)){for(var t=e.length,r=[],n=0;n=t.length?(e.target=void 0,wv(void 0,!0)):r=="keys"?wv(n,!1):r=="values"?wv(t[n],!1):wv([n,t[n]],!1)},"values"),uk=sk.Arguments=sk.Array;HR("keys");HR("values");HR("entries");if(M8&&uk.name!=="values")try{A8(uk,"name",{value:"values"})}catch{}var H8=mR,L8=Pm,j8=H8?{}.toString:function(){return"[object "+L8(this)+"]"},B8=mR,F8=qr,V8=j8;B8||F8(Object.prototype,"toString",V8,{unsafe:!0});var W8=St,U8=jd,z8=W8("iterator"),G8=Array.prototype,gj=function(e){return e!==void 0&&(U8.Array===e||G8[z8]===e)},Y8=Pm,fk=ja,K8=dn,q8=jd,X8=St,Z8=X8("iterator"),LR=function(e){if(!K8(e))return fk(e,Z8)||fk(e,"@@iterator")||q8[Y8(e)]},Q8=Gt,J8=La,e5=Dt,t5=Ju,r5=LR,n5=TypeError,bj=function(e,t){var r=arguments.length<2?r5(e):t;if(J8(r))return e5(Q8(r,e));throw n5(t5(e)+" is not iterable")},o5=Gt,ck=Dt,i5=ja,wj=function(e,t,r){var n,o;ck(e);try{if(n=i5(e,"return"),!n){if(t==="throw")throw r;return r}n=o5(n,e)}catch(i){o=!0,n=i}if(t==="throw")throw r;if(o)throw n;return ck(n),r},a5=xd,l5=Gt,s5=Dt,u5=Ju,f5=gj,c5=Xr,hk=bi,h5=bj,d5=LR,dk=wj,v5=TypeError,Sy=function(e,t){this.stopped=e,this.result=t},vk=Sy.prototype,jR=function(e,t,r){var n=r&&r.that,o=!!(r&&r.AS_ENTRIES),i=!!(r&&r.IS_RECORD),a=!!(r&&r.IS_ITERATOR),l=!!(r&&r.INTERRUPTED),s=a5(t,n),u,f,c,h,d,v,p,g=function(S){return u&&dk(u,"normal",S),new Sy(!0,S)},w=function(S){return o?(s5(S),l?s(S[0],S[1],g):s(S[0],S[1])):l?s(S,g):s(S)};if(i)u=e.iterator;else if(a)u=e;else{if(f=d5(e),!f)throw v5(u5(e)+" is not iterable");if(f5(f)){for(c=0,h=c5(e);h>c;c++)if(d=w(e[c]),d&&hk(vk,d))return d;return new Sy(!1)}u=h5(e,f)}for(v=i?e.next:u.next;!(p=l5(v,u)).done;){try{d=w(p.value)}catch(S){dk(u,"throw",S)}if(typeof d=="object"&&d&&hk(vk,d))return d}return new Sy(!1)},y5=bi,p5=TypeError,BR=function(e,t){if(y5(t,e))return e;throw p5("Incorrect invocation")},m5=St,Sj=m5("iterator"),Cj=!1;try{var g5=0,yk={next:function(){return{done:!!g5++}},return:function(){Cj=!0}};yk[Sj]=function(){return this},Array.from(yk,function(){throw 2})}catch{}var _j=function(e,t){if(!t&&!Cj)return!1;var r=!1;try{var n={};n[Sj]=function(){return{next:function(){return{done:r=!0}}}},e(n)}catch{}return r},b5=_t,w5=Ft,pk=xR,FR=function(e,t,r){var n,o;return pk&&b5(n=t.constructor)&&n!==r&&w5(o=n.prototype)&&o!==r.prototype&&pk(e,o),e},S5=Ae,C5=gt,_5=Be,mk=Em,O5=qr,R5=_a,E5=jR,P5=BR,T5=_t,k5=dn,fb=Ft,cb=je,$5=_j,A5=Tm,I5=FR,Nm=function(e,t,r){var n=e.indexOf("Map")!==-1,o=e.indexOf("Weak")!==-1,i=n?"set":"add",a=C5[e],l=a&&a.prototype,s=a,u={},f=function(w){var S=_5(l[w]);O5(l,w,w=="add"?function(T){return S(this,T===0?0:T),this}:w=="delete"?function(_){return o&&!fb(_)?!1:S(this,_===0?0:_)}:w=="get"?function(T){return o&&!fb(T)?void 0:S(this,T===0?0:T)}:w=="has"?function(T){return o&&!fb(T)?!1:S(this,T===0?0:T)}:function(T,R){return S(this,T===0?0:T,R),this})},c=mk(e,!T5(a)||!(o||l.forEach&&!cb(function(){new a().entries().next()})));if(c)s=r.getConstructor(t,e,n,i),R5.enable();else if(mk(e,!0)){var h=new s,d=h[i](o?{}:-0,1)!=h,v=cb(function(){h.has(1)}),p=$5(function(w){new a(w)}),g=!o&&cb(function(){for(var w=new a,S=5;S--;)w[i](S,S);return!w.has(-0)});p||(s=t(function(w,S){P5(w,l);var _=I5(new a,w,s);return k5(S)||E5(S,_[i],{that:_,AS_ENTRIES:n}),_}),s.prototype=l,l.constructor=s),(v||g)&&(f("delete"),f("has"),n&&f("get")),(g||d)&&f(i),o&&l.clear&&delete l.clear}return u[e]=s,S5({global:!0,constructor:!0,forced:s!=a},u),A5(s,e),o||r.setStrong(s,e,n),s},M5=qr,VR=function(e,t,r){for(var n in t)M5(e,n,t[n],r);return e},x5=xo,D5=Id,N5=St,H5=Bt,gk=N5("species"),Oj=function(e){var t=x5(e);H5&&t&&!t[gk]&&D5(t,gk,{configurable:!0,get:function(){return this}})},L5=ef,j5=Id,bk=VR,B5=xd,F5=BR,V5=dn,W5=jR,U5=DR,Sv=NR,z5=Oj,pf=Bt,wk=_a.fastKey,Rj=Do,Sk=Rj.set,hb=Rj.getterFor,Ej={getConstructor:function(e,t,r,n){var o=e(function(u,f){F5(u,i),Sk(u,{type:t,index:L5(null),first:void 0,last:void 0,size:0}),pf||(u.size=0),V5(f)||W5(f,u[n],{that:u,AS_ENTRIES:r})}),i=o.prototype,a=hb(t),l=function(u,f,c){var h=a(u),d=s(u,f),v,p;return d?d.value=c:(h.last=d={index:p=wk(f,!0),key:f,value:c,previous:v=h.last,next:void 0,removed:!1},h.first||(h.first=d),v&&(v.next=d),pf?h.size++:u.size++,p!=="F"&&(h.index[p]=d)),u},s=function(u,f){var c=a(u),h=wk(f),d;if(h!=="F")return c.index[h];for(d=c.first;d;d=d.next)if(d.key==f)return d};return bk(i,{clear:function(){for(var f=this,c=a(f),h=c.index,d=c.first;d;)d.removed=!0,d.previous&&(d.previous=d.previous.next=void 0),delete h[d.index],d=d.next;c.first=c.last=void 0,pf?c.size=0:f.size=0},delete:function(u){var f=this,c=a(f),h=s(f,u);if(h){var d=h.next,v=h.previous;delete c.index[h.index],h.removed=!0,v&&(v.next=d),d&&(d.previous=v),c.first==h&&(c.first=d),c.last==h&&(c.last=v),pf?c.size--:f.size--}return!!h},forEach:function(f){for(var c=a(this),h=B5(f,arguments.length>1?arguments[1]:void 0),d;d=d?d.next:c.first;)for(h(d.value,d.key,this);d&&d.removed;)d=d.previous},has:function(f){return!!s(this,f)}}),bk(i,r?{get:function(f){var c=s(this,f);return c&&c.value},set:function(f,c){return l(this,f===0?0:f,c)}}:{add:function(f){return l(this,f=f===0?0:f,f)}}),pf&&j5(i,"size",{configurable:!0,get:function(){return a(this).size}}),o},setStrong:function(e,t,r){var n=t+" Iterator",o=hb(t),i=hb(n);U5(e,t,function(a,l){Sk(this,{type:n,target:a,state:o(a),kind:l,last:void 0})},function(){for(var a=i(this),l=a.kind,s=a.last;s&&s.removed;)s=s.previous;return!a.target||!(a.last=s=s?s.next:a.state.first)?(a.target=void 0,Sv(void 0,!0)):l=="keys"?Sv(s.key,!1):l=="values"?Sv(s.value,!1):Sv([s.key,s.value],!1)},r?"entries":"values",!r,!0),z5(t)}},G5=Nm,Y5=Ej;G5("Set",function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},Y5);var WR=Be,K5=wi,q5=Vt,X5=Rr,Z5=WR("".charAt),Ck=WR("".charCodeAt),Q5=WR("".slice),_k=function(e){return function(t,r){var n=q5(X5(t)),o=K5(r),i=n.length,a,l;return o<0||o>=i?e?"":void 0:(a=Ck(n,o),a<55296||a>56319||o+1===i||(l=Ck(n,o+1))<56320||l>57343?e?Z5(n,o):a:e?Q5(n,o,o+2):(a-55296<<10)+(l-56320)+65536)}},UR={codeAt:_k(!1),charAt:_k(!0)},J5=UR.charAt,e7=Vt,Pj=Do,t7=DR,Ok=NR,Tj="String Iterator",r7=Pj.set,n7=Pj.getterFor(Tj);t7(String,"String",function(e){r7(this,{type:Tj,string:e7(e),index:0})},function(){var t=n7(this),r=t.string,n=t.index,o;return n>=r.length?Ok(void 0,!0):(o=J5(r,n),t.index+=o.length,Ok(o,!1))});var kj={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},o7=Om,db=o7("span").classList,Rk=db&&db.constructor&&db.constructor.prototype,$j=Rk===Object.prototype?void 0:Rk,Ek=gt,Aj=kj,i7=$j,Uf=N8,vb=Ba,Ij=St,yb=Ij("iterator"),Pk=Ij("toStringTag"),pb=Uf.values,Mj=function(e,t){if(e){if(e[yb]!==pb)try{vb(e,yb,pb)}catch{e[yb]=pb}if(e[Pk]||vb(e,Pk,t),Aj[t]){for(var r in Uf)if(e[r]!==Uf[r])try{vb(e,r,Uf[r])}catch{e[r]=Uf[r]}}}};for(var mb in Aj)Mj(Ek[mb]&&Ek[mb].prototype,mb);Mj(i7,"DOMTokenList");var a7=Ae,l7=yR.includes,s7=je,u7=Ld,f7=s7(function(){return!Array(1).includes()});a7({target:"Array",proto:!0,forced:f7},{includes:function(t){return l7(this,t,arguments.length>1?arguments[1]:void 0)}});u7("includes");var Tk=Ju,c7=TypeError,xj=function(e,t){if(!delete e[t])throw c7("Cannot delete property "+Tk(t)+" of "+Tk(e))},kk=wR,h7=Math.floor,xS=function(e,t){var r=e.length,n=h7(r/2);return r<8?d7(e,t):v7(e,xS(kk(e,0,n),t),xS(kk(e,n),t),t)},d7=function(e,t){for(var r=e.length,n=1,o,i;n0;)e[i]=e[--i];i!==n++&&(e[i]=o)}return e},v7=function(e,t,r,n){for(var o=t.length,i=r.length,a=0,l=0;a3)){if(k7)return!0;if(Nk)return Nk<603;var e="",t,r,n,o;for(t=65;t<76;t++){switch(r=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(o=0;o<47;o++)Qo.push({k:r+o,v:n})}for(Qo.sort(function(i,a){return a.v-i.v}),o=0;oMk(r)?1:-1}};_7({target:"Array",proto:!0,forced:x7},{sort:function(t){t!==void 0&&O7(t);var r=R7(this);if(Nj)return t===void 0?Hk(r):Hk(r,t);var n=[],o=Ik(r),i,a;for(a=0;aW7)throw V7("Maximum allowed index exceeded");return e},U7=je,z7=St,G7=Od,Y7=z7("species"),Bd=function(e){return G7>=51||!U7(function(){var t=[],r=t.constructor={};return r[Y7]=function(){return{foo:1}},t[e](Boolean).foo!==1})},K7=Ae,q7=Er,X7=Td,Z7=wi,Q7=Xr,J7=F7,e9=Hj,t9=OR,r9=tf,gb=xj,n9=Bd,o9=n9("splice"),i9=Math.max,a9=Math.min;K7({target:"Array",proto:!0,forced:!o9},{splice:function(t,r){var n=q7(this),o=Q7(n),i=X7(t,o),a=arguments.length,l,s,u,f,c,h;for(a===0?l=s=0:a===1?(l=0,s=o-i):(l=a-2,s=a9(i9(Z7(r),0),o-i)),e9(o+l-s),u=t9(n,s),f=0;fo-s+l;f--)gb(n,f-1)}else if(l>s)for(f=o-s;f>i;f--)c=f+s-1,h=f+l-1,c in n?n[h]=n[c]:gb(n,h);for(f=0;f"u"&&pS!==void 0,cL={all:pS,IS_HTMLDDA:kz},hL=cL,$z=hL.all,_t=hL.IS_HTMLDDA?function(e){return typeof e=="function"||e===$z}:function(e){return typeof e=="function"},nT=_t,dL=cL,Az=dL.all,Ft=dL.IS_HTMLDDA?function(e){return typeof e=="object"?e!==null:nT(e)||e===Az}:function(e){return typeof e=="object"?e!==null:nT(e)},Vg=gt,Iz=_t,Mz=function(e){return Iz(e)?e:void 0},xo=function(e,t){return arguments.length<2?Mz(Vg[e]):Vg[e]&&Vg[e][t]},xz=Be,bi=xz({}.isPrototypeOf),Ha=typeof navigator<"u"&&String(navigator.userAgent)||"",vL=gt,Wg=Ha,oT=vL.process,iT=vL.Deno,aT=oT&&oT.versions||iT&&iT.version,lT=aT&&aT.v8,an,op;lT&&(an=lT.split("."),op=an[0]>0&&an[0]<4?1:+(an[0]+an[1]));!op&&Wg&&(an=Wg.match(/Edge\/(\d+)/),(!an||an[1]>=74)&&(an=Wg.match(/Chrome\/(\d+)/),an&&(op=+an[1])));var Od=op,sT=Od,Dz=je,Qu=!!Object.getOwnPropertySymbols&&!Dz(function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&sT&&sT<41}),Nz=Qu,yL=Nz&&!Symbol.sham&&typeof Symbol.iterator=="symbol",Hz=xo,Lz=_t,jz=bi,Bz=yL,Fz=Object,Rd=Bz?function(e){return typeof e=="symbol"}:function(e){var t=Hz("Symbol");return Lz(t)&&jz(t.prototype,Fz(e))},Vz=String,Ju=function(e){try{return Vz(e)}catch{return"Object"}},Wz=_t,Uz=Ju,zz=TypeError,La=function(e){if(Wz(e))return e;throw zz(Uz(e)+" is not a function")},Gz=La,Yz=dn,ja=function(e,t){var r=e[t];return Yz(r)?void 0:Gz(r)},Ug=Gt,zg=_t,Gg=Ft,Kz=TypeError,pL=function(e,t){var r,n;if(t==="string"&&zg(r=e.toString)&&!Gg(n=Ug(r,e))||zg(r=e.valueOf)&&!Gg(n=Ug(r,e))||t!=="string"&&zg(r=e.toString)&&!Gg(n=Ug(r,e)))return n;throw Kz("Can't convert object to primitive value")},pi={},qz={get exports(){return pi},set exports(e){pi=e}},Xz=!1,uT=gt,Zz=Object.defineProperty,cR=function(e,t){try{Zz(uT,e,{value:t,configurable:!0,writable:!0})}catch{uT[e]=t}return t},Qz=gt,Jz=cR,fT="__core-js_shared__",eG=Qz[fT]||Jz(fT,{}),hR=eG,cT=hR;(qz.exports=function(e,t){return cT[e]||(cT[e]=t!==void 0?t:{})})("versions",[]).push({version:"3.29.1",mode:"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.29.1/LICENSE",source:"https://github.com/zloirock/core-js"});var tG=Rr,rG=Object,Er=function(e){return rG(tG(e))},nG=Be,oG=Er,iG=nG({}.hasOwnProperty),$t=Object.hasOwn||function(t,r){return iG(oG(t),r)},aG=Be,lG=0,sG=Math.random(),uG=aG(1 .toString),Cm=function(e){return"Symbol("+(e===void 0?"":e)+")_"+uG(++lG+sG,36)},fG=gt,cG=pi,hT=$t,hG=Cm,dG=Qu,vG=yL,kl=fG.Symbol,Yg=cG("wks"),yG=vG?kl.for||kl:kl&&kl.withoutSetter||hG,St=function(e){return hT(Yg,e)||(Yg[e]=dG&&hT(kl,e)?kl[e]:yG("Symbol."+e)),Yg[e]},pG=Gt,dT=Ft,vT=Rd,mG=ja,gG=pL,bG=St,wG=TypeError,SG=bG("toPrimitive"),mL=function(e,t){if(!dT(e)||vT(e))return e;var r=mG(e,SG),n;if(r){if(t===void 0&&(t="default"),n=pG(r,e,t),!dT(n)||vT(n))return n;throw wG("Can't convert object to primitive value")}return t===void 0&&(t="number"),gG(e,t)},CG=mL,_G=Rd,_m=function(e){var t=CG(e,"string");return _G(t)?t:t+""},OG=gt,yT=Ft,mS=OG.document,RG=yT(mS)&&yT(mS.createElement),Om=function(e){return RG?mS.createElement(e):{}},EG=Bt,PG=je,TG=Om,gL=!EG&&!PG(function(){return Object.defineProperty(TG("div"),"a",{get:function(){return 7}}).a!=7}),kG=Bt,$G=Gt,AG=Sd,IG=Cd,MG=Nr,xG=_m,DG=$t,NG=gL,pT=Object.getOwnPropertyDescriptor;xn.f=kG?pT:function(t,r){if(t=MG(t),r=xG(r),NG)try{return pT(t,r)}catch{}if(DG(t,r))return IG(!$G(AG.f,t,r),t[r])};var mr={},HG=Bt,LG=je,bL=HG&&LG(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!=42}),jG=Ft,BG=String,FG=TypeError,Dt=function(e){if(jG(e))return e;throw FG(BG(e)+" is not an object")},VG=Bt,WG=gL,UG=bL,dv=Dt,mT=_m,zG=TypeError,Kg=Object.defineProperty,GG=Object.getOwnPropertyDescriptor,qg="enumerable",Xg="configurable",Zg="writable";mr.f=VG?UG?function(t,r,n){if(dv(t),r=mT(r),dv(n),typeof t=="function"&&r==="prototype"&&"value"in n&&Zg in n&&!n[Zg]){var o=GG(t,r);o&&o[Zg]&&(t[r]=n.value,n={configurable:Xg in n?n[Xg]:o[Xg],enumerable:qg in n?n[qg]:o[qg],writable:!1})}return Kg(t,r,n)}:Kg:function(t,r,n){if(dv(t),r=mT(r),dv(n),WG)try{return Kg(t,r,n)}catch{}if("get"in n||"set"in n)throw zG("Accessors not supported");return"value"in n&&(t[r]=n.value),t};var YG=Bt,KG=mr,qG=Cd,Ba=YG?function(e,t,r){return KG.f(e,t,qG(1,r))}:function(e,t,r){return e[t]=r,e},ip={},XG={get exports(){return ip},set exports(e){ip=e}},gS=Bt,ZG=$t,wL=Function.prototype,QG=gS&&Object.getOwnPropertyDescriptor,dR=ZG(wL,"name"),JG=dR&&function(){}.name==="something",eY=dR&&(!gS||gS&&QG(wL,"name").configurable),Ed={EXISTS:dR,PROPER:JG,CONFIGURABLE:eY},tY=Be,rY=_t,bS=hR,nY=tY(Function.toString);rY(bS.inspectSource)||(bS.inspectSource=function(e){return nY(e)});var SL=bS.inspectSource,oY=gt,iY=_t,gT=oY.WeakMap,CL=iY(gT)&&/native code/.test(String(gT)),aY=pi,lY=Cm,bT=aY("keys"),Rm=function(e){return bT[e]||(bT[e]=lY(e))},Pd={},sY=CL,_L=gt,uY=Ft,fY=Ba,Qg=$t,Jg=hR,cY=Rm,hY=Pd,wT="Object already initialized",wS=_L.TypeError,dY=_L.WeakMap,ap,fc,lp,vY=function(e){return lp(e)?fc(e):ap(e,{})},yY=function(e){return function(t){var r;if(!uY(t)||(r=fc(t)).type!==e)throw wS("Incompatible receiver, "+e+" required");return r}};if(sY||Jg.state){var yn=Jg.state||(Jg.state=new dY);yn.get=yn.get,yn.has=yn.has,yn.set=yn.set,ap=function(e,t){if(yn.has(e))throw wS(wT);return t.facade=e,yn.set(e,t),t},fc=function(e){return yn.get(e)||{}},lp=function(e){return yn.has(e)}}else{var qa=cY("state");hY[qa]=!0,ap=function(e,t){if(Qg(e,qa))throw wS(wT);return t.facade=e,fY(e,qa,t),t},fc=function(e){return Qg(e,qa)?e[qa]:{}},lp=function(e){return Qg(e,qa)}}var Do={set:ap,get:fc,has:lp,enforce:vY,getterFor:yY},vR=Be,pY=je,mY=_t,vv=$t,SS=Bt,gY=Ed.CONFIGURABLE,bY=SL,OL=Do,wY=OL.enforce,SY=OL.get,ST=String,my=Object.defineProperty,CY=vR("".slice),_Y=vR("".replace),OY=vR([].join),RY=SS&&!pY(function(){return my(function(){},"length",{value:8}).length!==8}),EY=String(String).split("String"),PY=XG.exports=function(e,t,r){CY(ST(t),0,7)==="Symbol("&&(t="["+_Y(ST(t),/^Symbol\(([^)]*)\)/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!vv(e,"name")||gY&&e.name!==t)&&(SS?my(e,"name",{value:t,configurable:!0}):e.name=t),RY&&r&&vv(r,"arity")&&e.length!==r.arity&&my(e,"length",{value:r.arity});try{r&&vv(r,"constructor")&&r.constructor?SS&&my(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch{}var n=wY(e);return vv(n,"source")||(n.source=OY(EY,typeof t=="string"?t:"")),e};Function.prototype.toString=PY(function(){return mY(this)&&SY(this).source||bY(this)},"toString");var TY=_t,kY=mr,$Y=ip,AY=cR,qr=function(e,t,r,n){n||(n={});var o=n.enumerable,i=n.name!==void 0?n.name:t;if(TY(r)&&$Y(r,i,n),n.global)o?e[t]=r:AY(t,r);else{try{n.unsafe?e[t]&&(o=!0):delete e[t]}catch{}o?e[t]=r:kY.f(e,t,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return e},Fa={},IY=Math.ceil,MY=Math.floor,xY=Math.trunc||function(t){var r=+t;return(r>0?MY:IY)(r)},DY=xY,wi=function(e){var t=+e;return t!==t||t===0?0:DY(t)},NY=wi,HY=Math.max,LY=Math.min,Td=function(e,t){var r=NY(e);return r<0?HY(r+t,0):LY(r,t)},jY=wi,BY=Math.min,Va=function(e){return e>0?BY(jY(e),9007199254740991):0},FY=Va,Xr=function(e){return FY(e.length)},VY=Nr,WY=Td,UY=Xr,CT=function(e){return function(t,r,n){var o=VY(t),i=UY(o),a=WY(n,i),l;if(e&&r!=r){for(;i>a;)if(l=o[a++],l!=l)return!0}else for(;i>a;a++)if((e||a in o)&&o[a]===r)return e||a||0;return!e&&-1}},yR={includes:CT(!0),indexOf:CT(!1)},zY=Be,eb=$t,GY=Nr,YY=yR.indexOf,KY=Pd,_T=zY([].push),RL=function(e,t){var r=GY(e),n=0,o=[],i;for(i in r)!eb(KY,i)&&eb(r,i)&&_T(o,i);for(;t.length>n;)eb(r,i=t[n++])&&(~YY(o,i)||_T(o,i));return o},pR=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],qY=RL,XY=pR,ZY=XY.concat("length","prototype");Fa.f=Object.getOwnPropertyNames||function(t){return qY(t,ZY)};var kd={};kd.f=Object.getOwnPropertySymbols;var QY=xo,JY=Be,e3=Fa,t3=kd,r3=Dt,n3=JY([].concat),EL=QY("Reflect","ownKeys")||function(t){var r=e3.f(r3(t)),n=t3.f;return n?n3(r,n(t)):r},OT=$t,o3=EL,i3=xn,a3=mr,PL=function(e,t,r){for(var n=o3(t),o=a3.f,i=i3.f,a=0;aa;)D3.f(t,l=o[a++],n[l]);return t};var j3=xo,kL=j3("document","documentElement"),B3=Dt,F3=gR,RT=pR,V3=Pd,W3=kL,U3=Om,z3=Rm,ET=">",PT="<",CS="prototype",_S="script",$L=z3("IE_PROTO"),rb=function(){},AL=function(e){return PT+_S+ET+e+PT+"/"+_S+ET},TT=function(e){e.write(AL("")),e.close();var t=e.parentWindow.Object;return e=null,t},G3=function(){var e=U3("iframe"),t="java"+_S+":",r;return e.style.display="none",W3.appendChild(e),e.src=String(t),r=e.contentWindow.document,r.open(),r.write(AL("document.F=Object")),r.close(),r.F},yv,by=function(){try{yv=new ActiveXObject("htmlfile")}catch{}by=typeof document<"u"?document.domain&&yv?TT(yv):G3():TT(yv);for(var e=RT.length;e--;)delete by[CS][RT[e]];return by()};V3[$L]=!0;var ef=Object.create||function(t,r){var n;return t!==null?(rb[CS]=B3(t),n=new rb,rb[CS]=null,n[$L]=t):n=by(),r===void 0?n:F3.f(n,r)},bR={},Y3=_m,K3=mr,q3=Cd,tf=function(e,t,r){var n=Y3(t);n in e?K3.f(e,n,q3(0,r)):e[n]=r},kT=Td,X3=Xr,Z3=tf,Q3=Array,J3=Math.max,wR=function(e,t,r){for(var n=X3(e),o=kT(t,n),i=kT(r===void 0?n:r,n),a=Q3(J3(i-o,0)),l=0;og;g++)if((l||g in d)&&(_=d[g],T=v(_,g,h),e))if(t)S[g]=T;else if(T)switch(e){case 3:return!0;case 5:return _;case 6:return g;case 2:NT(S,_)}else switch(e){case 4:return!1;case 7:NT(S,_)}return i?-1:n||o?o:S}},Wa={forEach:Bo(0),map:Bo(1),filter:Bo(2),some:Bo(3),every:Bo(4),find:Bo(5),findIndex:Bo(6),filterReject:Bo(7)},$m=Ae,RR=gt,ER=Gt,WK=Be,Yl=Bt,Kl=Qu,UK=je,Qt=$t,zK=bi,OS=Dt,Am=Nr,PR=_m,GK=Vt,RS=Cd,cc=ef,BL=Ad,YK=Fa,FL=bR,KK=kd,VL=xn,WL=mr,qK=gR,UL=Sd,nb=qr,XK=Id,TR=pi,ZK=Rm,zL=Pd,HT=Cm,QK=St,JK=SR,e4=CR,t4=DL,r4=Tm,GL=Do,Im=Wa.forEach,_r=ZK("hidden"),Mm="Symbol",hc="prototype",n4=GL.set,LT=GL.getterFor(Mm),zr=Object[hc],ga=RR.Symbol,Wf=ga&&ga[hc],o4=RR.TypeError,ob=RR.QObject,YL=VL.f,Wi=WL.f,KL=FL.f,i4=UL.f,qL=WK([].push),To=TR("symbols"),Dd=TR("op-symbols"),a4=TR("wks"),ES=!ob||!ob[hc]||!ob[hc].findChild,PS=Yl&&UK(function(){return cc(Wi({},"a",{get:function(){return Wi(this,"a",{value:7}).a}})).a!=7})?function(e,t,r){var n=YL(zr,t);n&&delete zr[t],Wi(e,t,r),n&&e!==zr&&Wi(zr,t,n)}:Wi,ib=function(e,t){var r=To[e]=cc(Wf);return n4(r,{type:Mm,tag:e,description:t}),Yl||(r.description=t),r},xm=function(t,r,n){t===zr&&xm(Dd,r,n),OS(t);var o=PR(r);return OS(n),Qt(To,o)?(n.enumerable?(Qt(t,_r)&&t[_r][o]&&(t[_r][o]=!1),n=cc(n,{enumerable:RS(0,!1)})):(Qt(t,_r)||Wi(t,_r,RS(1,{})),t[_r][o]=!0),PS(t,o,n)):Wi(t,o,n)},kR=function(t,r){OS(t);var n=Am(r),o=BL(n).concat(QL(n));return Im(o,function(i){(!Yl||ER(TS,n,i))&&xm(t,i,n[i])}),t},l4=function(t,r){return r===void 0?cc(t):kR(cc(t),r)},TS=function(t){var r=PR(t),n=ER(i4,this,r);return this===zr&&Qt(To,r)&&!Qt(Dd,r)?!1:n||!Qt(this,r)||!Qt(To,r)||Qt(this,_r)&&this[_r][r]?n:!0},XL=function(t,r){var n=Am(t),o=PR(r);if(!(n===zr&&Qt(To,o)&&!Qt(Dd,o))){var i=YL(n,o);return i&&Qt(To,o)&&!(Qt(n,_r)&&n[_r][o])&&(i.enumerable=!0),i}},ZL=function(t){var r=KL(Am(t)),n=[];return Im(r,function(o){!Qt(To,o)&&!Qt(zL,o)&&qL(n,o)}),n},QL=function(e){var t=e===zr,r=KL(t?Dd:Am(e)),n=[];return Im(r,function(o){Qt(To,o)&&(!t||Qt(zr,o))&&qL(n,To[o])}),n};Kl||(ga=function(){if(zK(Wf,this))throw o4("Symbol is not a constructor");var t=!arguments.length||arguments[0]===void 0?void 0:GK(arguments[0]),r=HT(t),n=function(o){this===zr&&ER(n,Dd,o),Qt(this,_r)&&Qt(this[_r],r)&&(this[_r][r]=!1),PS(this,r,RS(1,o))};return Yl&&ES&&PS(zr,r,{configurable:!0,set:n}),ib(r,t)},Wf=ga[hc],nb(Wf,"toString",function(){return LT(this).tag}),nb(ga,"withoutSetter",function(e){return ib(HT(e),e)}),UL.f=TS,WL.f=xm,qK.f=kR,VL.f=XL,YK.f=FL.f=ZL,KK.f=QL,JK.f=function(e){return ib(QK(e),e)},Yl&&(XK(Wf,"description",{configurable:!0,get:function(){return LT(this).description}}),nb(zr,"propertyIsEnumerable",TS,{unsafe:!0})));$m({global:!0,constructor:!0,wrap:!0,forced:!Kl,sham:!Kl},{Symbol:ga});Im(BL(a4),function(e){e4(e)});$m({target:Mm,stat:!0,forced:!Kl},{useSetter:function(){ES=!0},useSimple:function(){ES=!1}});$m({target:"Object",stat:!0,forced:!Kl,sham:!Yl},{create:l4,defineProperty:xm,defineProperties:kR,getOwnPropertyDescriptor:XL});$m({target:"Object",stat:!0,forced:!Kl},{getOwnPropertyNames:ZL});t4();r4(ga,Mm);zL[_r]=!0;var s4=Qu,JL=s4&&!!Symbol.for&&!!Symbol.keyFor,u4=Ae,f4=xo,c4=$t,h4=Vt,ej=pi,d4=JL,ab=ej("string-to-symbol-registry"),v4=ej("symbol-to-string-registry");u4({target:"Symbol",stat:!0,forced:!d4},{for:function(e){var t=h4(e);if(c4(ab,t))return ab[t];var r=f4("Symbol")(t);return ab[t]=r,v4[r]=t,r}});var y4=Ae,p4=$t,m4=Rd,g4=Ju,b4=pi,w4=JL,jT=b4("symbol-to-string-registry");y4({target:"Symbol",stat:!0,forced:!w4},{keyFor:function(t){if(!m4(t))throw TypeError(g4(t)+" is not a symbol");if(p4(jT,t))return jT[t]}});var S4=wd,tj=Function.prototype,BT=tj.apply,FT=tj.call,Ua=typeof Reflect=="object"&&Reflect.apply||(S4?FT.bind(BT):function(){return FT.apply(BT,arguments)}),C4=Be,Nd=C4([].slice),_4=Be,VT=rf,O4=_t,WT=Dn,R4=Vt,UT=_4([].push),E4=function(e){if(O4(e))return e;if(VT(e)){for(var t=e.length,r=[],n=0;n=t.length?(e.target=void 0,wv(void 0,!0)):r=="keys"?wv(n,!1):r=="values"?wv(t[n],!1):wv([n,t[n]],!1)},"values"),uk=sk.Arguments=sk.Array;HR("keys");HR("values");HR("entries");if(M8&&uk.name!=="values")try{A8(uk,"name",{value:"values"})}catch{}var H8=mR,L8=Pm,j8=H8?{}.toString:function(){return"[object "+L8(this)+"]"},B8=mR,F8=qr,V8=j8;B8||F8(Object.prototype,"toString",V8,{unsafe:!0});var W8=St,U8=jd,z8=W8("iterator"),G8=Array.prototype,gj=function(e){return e!==void 0&&(U8.Array===e||G8[z8]===e)},Y8=Pm,fk=ja,K8=dn,q8=jd,X8=St,Z8=X8("iterator"),LR=function(e){if(!K8(e))return fk(e,Z8)||fk(e,"@@iterator")||q8[Y8(e)]},Q8=Gt,J8=La,e5=Dt,t5=Ju,r5=LR,n5=TypeError,bj=function(e,t){var r=arguments.length<2?r5(e):t;if(J8(r))return e5(Q8(r,e));throw n5(t5(e)+" is not iterable")},o5=Gt,ck=Dt,i5=ja,wj=function(e,t,r){var n,o;ck(e);try{if(n=i5(e,"return"),!n){if(t==="throw")throw r;return r}n=o5(n,e)}catch(i){o=!0,n=i}if(t==="throw")throw r;if(o)throw n;return ck(n),r},a5=xd,l5=Gt,s5=Dt,u5=Ju,f5=gj,c5=Xr,hk=bi,h5=bj,d5=LR,dk=wj,v5=TypeError,Sy=function(e,t){this.stopped=e,this.result=t},vk=Sy.prototype,jR=function(e,t,r){var n=r&&r.that,o=!!(r&&r.AS_ENTRIES),i=!!(r&&r.IS_RECORD),a=!!(r&&r.IS_ITERATOR),l=!!(r&&r.INTERRUPTED),s=a5(t,n),u,f,c,h,d,v,p,g=function(S){return u&&dk(u,"normal",S),new Sy(!0,S)},w=function(S){return o?(s5(S),l?s(S[0],S[1],g):s(S[0],S[1])):l?s(S,g):s(S)};if(i)u=e.iterator;else if(a)u=e;else{if(f=d5(e),!f)throw v5(u5(e)+" is not iterable");if(f5(f)){for(c=0,h=c5(e);h>c;c++)if(d=w(e[c]),d&&hk(vk,d))return d;return new Sy(!1)}u=h5(e,f)}for(v=i?e.next:u.next;!(p=l5(v,u)).done;){try{d=w(p.value)}catch(S){dk(u,"throw",S)}if(typeof d=="object"&&d&&hk(vk,d))return d}return new Sy(!1)},y5=bi,p5=TypeError,BR=function(e,t){if(y5(t,e))return e;throw p5("Incorrect invocation")},m5=St,Sj=m5("iterator"),Cj=!1;try{var g5=0,yk={next:function(){return{done:!!g5++}},return:function(){Cj=!0}};yk[Sj]=function(){return this},Array.from(yk,function(){throw 2})}catch{}var _j=function(e,t){if(!t&&!Cj)return!1;var r=!1;try{var n={};n[Sj]=function(){return{next:function(){return{done:r=!0}}}},e(n)}catch{}return r},b5=_t,w5=Ft,pk=xR,FR=function(e,t,r){var n,o;return pk&&b5(n=t.constructor)&&n!==r&&w5(o=n.prototype)&&o!==r.prototype&&pk(e,o),e},S5=Ae,C5=gt,_5=Be,mk=Em,O5=qr,R5=_a,E5=jR,P5=BR,T5=_t,k5=dn,fb=Ft,cb=je,$5=_j,A5=Tm,I5=FR,Nm=function(e,t,r){var n=e.indexOf("Map")!==-1,o=e.indexOf("Weak")!==-1,i=n?"set":"add",a=C5[e],l=a&&a.prototype,s=a,u={},f=function(w){var S=_5(l[w]);O5(l,w,w=="add"?function(T){return S(this,T===0?0:T),this}:w=="delete"?function(_){return o&&!fb(_)?!1:S(this,_===0?0:_)}:w=="get"?function(T){return o&&!fb(T)?void 0:S(this,T===0?0:T)}:w=="has"?function(T){return o&&!fb(T)?!1:S(this,T===0?0:T)}:function(T,R){return S(this,T===0?0:T,R),this})},c=mk(e,!T5(a)||!(o||l.forEach&&!cb(function(){new a().entries().next()})));if(c)s=r.getConstructor(t,e,n,i),R5.enable();else if(mk(e,!0)){var h=new s,d=h[i](o?{}:-0,1)!=h,v=cb(function(){h.has(1)}),p=$5(function(w){new a(w)}),g=!o&&cb(function(){for(var w=new a,S=5;S--;)w[i](S,S);return!w.has(-0)});p||(s=t(function(w,S){P5(w,l);var _=I5(new a,w,s);return k5(S)||E5(S,_[i],{that:_,AS_ENTRIES:n}),_}),s.prototype=l,l.constructor=s),(v||g)&&(f("delete"),f("has"),n&&f("get")),(g||d)&&f(i),o&&l.clear&&delete l.clear}return u[e]=s,S5({global:!0,constructor:!0,forced:s!=a},u),A5(s,e),o||r.setStrong(s,e,n),s},M5=qr,VR=function(e,t,r){for(var n in t)M5(e,n,t[n],r);return e},x5=xo,D5=Id,N5=St,H5=Bt,gk=N5("species"),Oj=function(e){var t=x5(e);H5&&t&&!t[gk]&&D5(t,gk,{configurable:!0,get:function(){return this}})},L5=ef,j5=Id,bk=VR,B5=xd,F5=BR,V5=dn,W5=jR,U5=DR,Sv=NR,z5=Oj,pf=Bt,wk=_a.fastKey,Rj=Do,Sk=Rj.set,hb=Rj.getterFor,Ej={getConstructor:function(e,t,r,n){var o=e(function(u,f){F5(u,i),Sk(u,{type:t,index:L5(null),first:void 0,last:void 0,size:0}),pf||(u.size=0),V5(f)||W5(f,u[n],{that:u,AS_ENTRIES:r})}),i=o.prototype,a=hb(t),l=function(u,f,c){var h=a(u),d=s(u,f),v,p;return d?d.value=c:(h.last=d={index:p=wk(f,!0),key:f,value:c,previous:v=h.last,next:void 0,removed:!1},h.first||(h.first=d),v&&(v.next=d),pf?h.size++:u.size++,p!=="F"&&(h.index[p]=d)),u},s=function(u,f){var c=a(u),h=wk(f),d;if(h!=="F")return c.index[h];for(d=c.first;d;d=d.next)if(d.key==f)return d};return bk(i,{clear:function(){for(var f=this,c=a(f),h=c.index,d=c.first;d;)d.removed=!0,d.previous&&(d.previous=d.previous.next=void 0),delete h[d.index],d=d.next;c.first=c.last=void 0,pf?c.size=0:f.size=0},delete:function(u){var f=this,c=a(f),h=s(f,u);if(h){var d=h.next,v=h.previous;delete c.index[h.index],h.removed=!0,v&&(v.next=d),d&&(d.previous=v),c.first==h&&(c.first=d),c.last==h&&(c.last=v),pf?c.size--:f.size--}return!!h},forEach:function(f){for(var c=a(this),h=B5(f,arguments.length>1?arguments[1]:void 0),d;d=d?d.next:c.first;)for(h(d.value,d.key,this);d&&d.removed;)d=d.previous},has:function(f){return!!s(this,f)}}),bk(i,r?{get:function(f){var c=s(this,f);return c&&c.value},set:function(f,c){return l(this,f===0?0:f,c)}}:{add:function(f){return l(this,f=f===0?0:f,f)}}),pf&&j5(i,"size",{configurable:!0,get:function(){return a(this).size}}),o},setStrong:function(e,t,r){var n=t+" Iterator",o=hb(t),i=hb(n);U5(e,t,function(a,l){Sk(this,{type:n,target:a,state:o(a),kind:l,last:void 0})},function(){for(var a=i(this),l=a.kind,s=a.last;s&&s.removed;)s=s.previous;return!a.target||!(a.last=s=s?s.next:a.state.first)?(a.target=void 0,Sv(void 0,!0)):l=="keys"?Sv(s.key,!1):l=="values"?Sv(s.value,!1):Sv([s.key,s.value],!1)},r?"entries":"values",!r,!0),z5(t)}},G5=Nm,Y5=Ej;G5("Set",function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},Y5);var WR=Be,K5=wi,q5=Vt,X5=Rr,Z5=WR("".charAt),Ck=WR("".charCodeAt),Q5=WR("".slice),_k=function(e){return function(t,r){var n=q5(X5(t)),o=K5(r),i=n.length,a,l;return o<0||o>=i?e?"":void 0:(a=Ck(n,o),a<55296||a>56319||o+1===i||(l=Ck(n,o+1))<56320||l>57343?e?Z5(n,o):a:e?Q5(n,o,o+2):(a-55296<<10)+(l-56320)+65536)}},UR={codeAt:_k(!1),charAt:_k(!0)},J5=UR.charAt,e7=Vt,Pj=Do,t7=DR,Ok=NR,Tj="String Iterator",r7=Pj.set,n7=Pj.getterFor(Tj);t7(String,"String",function(e){r7(this,{type:Tj,string:e7(e),index:0})},function(){var t=n7(this),r=t.string,n=t.index,o;return n>=r.length?Ok(void 0,!0):(o=J5(r,n),t.index+=o.length,Ok(o,!1))});var kj={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},o7=Om,db=o7("span").classList,Rk=db&&db.constructor&&db.constructor.prototype,$j=Rk===Object.prototype?void 0:Rk,Ek=gt,Aj=kj,i7=$j,Uf=N8,vb=Ba,Ij=St,yb=Ij("iterator"),Pk=Ij("toStringTag"),pb=Uf.values,Mj=function(e,t){if(e){if(e[yb]!==pb)try{vb(e,yb,pb)}catch{e[yb]=pb}if(e[Pk]||vb(e,Pk,t),Aj[t]){for(var r in Uf)if(e[r]!==Uf[r])try{vb(e,r,Uf[r])}catch{e[r]=Uf[r]}}}};for(var mb in Aj)Mj(Ek[mb]&&Ek[mb].prototype,mb);Mj(i7,"DOMTokenList");var a7=Ae,l7=yR.includes,s7=je,u7=Ld,f7=s7(function(){return!Array(1).includes()});a7({target:"Array",proto:!0,forced:f7},{includes:function(t){return l7(this,t,arguments.length>1?arguments[1]:void 0)}});u7("includes");var Tk=Ju,c7=TypeError,xj=function(e,t){if(!delete e[t])throw c7("Cannot delete property "+Tk(t)+" of "+Tk(e))},kk=wR,h7=Math.floor,xS=function(e,t){var r=e.length,n=h7(r/2);return r<8?d7(e,t):v7(e,xS(kk(e,0,n),t),xS(kk(e,n),t),t)},d7=function(e,t){for(var r=e.length,n=1,o,i;n0;)e[i]=e[--i];i!==n++&&(e[i]=o)}return e},v7=function(e,t,r,n){for(var o=t.length,i=r.length,a=0,l=0;a3)){if(k7)return!0;if(Nk)return Nk<603;var e="",t,r,n,o;for(t=65;t<76;t++){switch(r=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(o=0;o<47;o++)Qo.push({k:r+o,v:n})}for(Qo.sort(function(i,a){return a.v-i.v}),o=0;oMk(r)?1:-1}};_7({target:"Array",proto:!0,forced:x7},{sort:function(t){t!==void 0&&O7(t);var r=R7(this);if(Nj)return t===void 0?Hk(r):Hk(r,t);var n=[],o=Ik(r),i,a;for(a=0;aW7)throw V7("Maximum allowed index exceeded");return e},U7=je,z7=St,G7=Od,Y7=z7("species"),Bd=function(e){return G7>=51||!U7(function(){var t=[],r=t.constructor={};return r[Y7]=function(){return{foo:1}},t[e](Boolean).foo!==1})},K7=Ae,q7=Er,X7=Td,Z7=wi,Q7=Xr,J7=F7,e9=Hj,t9=OR,r9=tf,gb=xj,n9=Bd,o9=n9("splice"),i9=Math.max,a9=Math.min;K7({target:"Array",proto:!0,forced:!o9},{splice:function(t,r){var n=q7(this),o=Q7(n),i=X7(t,o),a=arguments.length,l,s,u,f,c,h;for(a===0?l=s=0:a===1?(l=0,s=o-i):(l=a-2,s=a9(i9(Z7(r),0),o-i)),e9(o+l-s),u=t9(n,s),f=0;fo-s+l;f--)gb(n,f-1)}else if(l>s)for(f=o-s;f>i;f--)c=f+s-1,h=f+l-1,c in n?n[h]=n[c]:gb(n,h);for(f=0;f2){if(t=k9(t),r=Cv(t,0),r===43||r===45){if(n=Cv(t,2),n===88||n===120)return NaN}else if(r===48){switch(Cv(t,1)){case 66:case 98:o=2,i=49;break;case 79:case 111:o=8,i=55;break;default:return+t}for(a=A9(t,2),l=a.length,s=0;si)return NaN;return parseInt(a,o)}}return+t},YR=w9(Hm,!Ml(" 0o1")||!Ml("0b1")||Ml("+0x1")),x9=function(e){return C9(GR,e)&&O9(function(){T9(e)})},Lm=function(t){var r=arguments.length<1?0:Ml(I9(t));return x9(this)?S9(Object(r),this,Lm):r};Lm.prototype=GR;YR&&!Fj&&(GR.constructor=Lm);g9({global:!0,constructor:!0,wrap:!0,forced:YR},{Number:Lm});var D9=function(e,t){for(var r=b9?R9(t):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),n=0,o;r.length>n;n++)jk(t,o=r[n])&&!jk(e,o)&&P9(e,o,E9(t,o))};(YR||Fj)&&D9(Wj[Hm],Ml);var N9=Ae,Bk=rf,H9=km,L9=Ft,Fk=Td,j9=Xr,B9=Nr,F9=tf,V9=St,W9=Bd,U9=Nd,z9=W9("slice"),G9=V9("species"),wb=Array,Y9=Math.max;N9({target:"Array",proto:!0,forced:!z9},{slice:function(t,r){var n=B9(this),o=j9(n),i=Fk(t,o),a=Fk(r===void 0?o:r,o),l,s,u;if(Bk(n)&&(l=n.constructor,H9(l)&&(l===wb||Bk(l.prototype))?l=void 0:L9(l)&&(l=l[G9],l===null&&(l=void 0)),l===wb||l===void 0))return U9(n,i,a);for(s=new(l===void 0?wb:l)(Y9(a-i,0)),u=0;i=51||!q9(function(){var e=[];return e[Gj]=!1,e.concat()[0]!==e}),iq=function(e){if(!Z9(e))return!1;var t=e[Gj];return t!==void 0?!!t:X9(e)},aq=!oq||!tq("concat");K9({target:"Array",proto:!0,arity:1,forced:aq},{concat:function(t){var r=Q9(this),n=eq(r,0),o=0,i,a,l,s,u;for(i=-1,l=arguments.length;i1?arguments[1]:void 0,n),a=o>2?arguments[2]:void 0,l=a===void 0?n:Uk(a,n);l>i;)r[i++]=t;return r},fq=Ae,cq=uq,hq=Ld;fq({target:"Array",proto:!0},{fill:cq});hq("fill");var dq=Ae,vq=Wa.map,yq=Bd,pq=yq("map");dq({target:"Array",proto:!0,forced:!pq},{map:function(t){return vq(this,t,arguments.length>1?arguments[1]:void 0)}});var mq=Dt,Yj=function(){var e=mq(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t},KR=je,gq=gt,qR=gq.RegExp,XR=KR(function(){var e=qR("a","y");return e.lastIndex=2,e.exec("abcd")!=null}),bq=XR||KR(function(){return!qR("a","y").sticky}),wq=XR||KR(function(){var e=qR("^r","gy");return e.lastIndex=2,e.exec("str")!=null}),ZR={BROKEN_CARET:wq,MISSED_STICKY:bq,UNSUPPORTED_Y:XR},Sq=je,Cq=gt,_q=Cq.RegExp,Kj=Sq(function(){var e=_q(".","s");return!(e.dotAll&&e.exec(` `)&&e.flags==="s")}),Oq=je,Rq=gt,Eq=Rq.RegExp,qj=Oq(function(){var e=Eq("(?b)","g");return e.exec("b").groups.a!=="b"||"b".replace(e,"$c")!=="bc"}),$l=Gt,jm=Be,Pq=Vt,Tq=Yj,kq=ZR,$q=pi,Aq=ef,Iq=Do.get,Mq=Kj,xq=qj,Dq=$q("native-string-replace",String.prototype.replace),sp=RegExp.prototype.exec,NS=sp,Nq=jm("".charAt),Hq=jm("".indexOf),Lq=jm("".replace),Sb=jm("".slice),HS=function(){var e=/a/,t=/b*/g;return $l(sp,e,"a"),$l(sp,t,"a"),e.lastIndex!==0||t.lastIndex!==0}(),Xj=kq.BROKEN_CARET,LS=/()??/.exec("")[1]!==void 0,jq=HS||LS||Xj||Mq||xq;jq&&(NS=function(t){var r=this,n=Iq(r),o=Pq(t),i=n.raw,a,l,s,u,f,c,h;if(i)return i.lastIndex=r.lastIndex,a=$l(NS,i,o),r.lastIndex=i.lastIndex,a;var d=n.groups,v=Xj&&r.sticky,p=$l(Tq,r),g=r.source,w=0,S=o;if(v&&(p=Lq(p,"y",""),Hq(p,"g")===-1&&(p+="g"),S=Sb(o,r.lastIndex),r.lastIndex>0&&(!r.multiline||r.multiline&&Nq(o,r.lastIndex-1)!==` `)&&(g="(?: "+g+")",S=" "+S,w++),l=new RegExp("^(?:"+g+")",p)),LS&&(l=new RegExp("^"+g+"$(?!\\s)",p)),HS&&(s=r.lastIndex),u=$l(sp,v?l:r,S),v?u?(u.input=Sb(u.input,w),u[0]=Sb(u[0],w),u.index=r.lastIndex,r.lastIndex+=u[0].length):r.lastIndex=0:HS&&u&&(r.lastIndex=r.global?u.index+u[0].length:s),LS&&u&&u.length>1&&$l(Dq,u[0],l,function(){for(f=1;f]*>)/g,qq=/\$([$&'`]|\d{1,2})/g,Xq=function(e,t,r,n,o,i){var a=r+e.length,l=n.length,s=qq;return o!==void 0&&(o=zq(o),s=Kq),Yq(i,s,function(u,f){var c;switch(_b(f,0)){case"$":return"$";case"&":return e;case"`":return Ob(t,0,r);case"'":return Ob(t,a);case"<":c=o[Ob(f,1,-1)];break;default:var h=+f;if(h===0)return u;if(h>l){var d=Gq(h/10);return d===0?u:d<=l?n[d-1]===void 0?_b(f,1):n[d-1]+_b(f,1):u}c=n[h-1]}return c===void 0?"":c})},qk=Gt,Zq=Dt,Qq=_t,Jq=Dn,eX=Bm,tX=TypeError,Vm=function(e,t){var r=e.exec;if(Qq(r)){var n=qk(r,e,t);return n!==null&&Zq(n),n}if(Jq(e)==="RegExp")return qk(eX,e,t);throw tX("RegExp#exec called on incompatible receiver")},rX=Ua,Xk=Gt,Wm=Be,nX=Fm,oX=je,iX=Dt,aX=_t,lX=dn,sX=wi,uX=Va,Xa=Vt,fX=Rr,cX=QR,hX=ja,dX=Xq,vX=Vm,yX=St,jS=yX("replace"),pX=Math.max,mX=Math.min,gX=Wm([].concat),Rb=Wm([].push),Zk=Wm("".indexOf),Qk=Wm("".slice),bX=function(e){return e===void 0?e:String(e)},wX=function(){return"a".replace(/./,"$0")==="$0"}(),Jk=function(){return/./[jS]?/./[jS]("a","$0")==="":!1}(),SX=!oX(function(){var e=/./;return e.exec=function(){var t=[];return t.groups={a:"7"},t},"".replace(e,"$")!=="7"});nX("replace",function(e,t,r){var n=Jk?"$":"$0";return[function(i,a){var l=fX(this),s=lX(i)?void 0:hX(i,jS);return s?Xk(s,i,l,a):Xk(t,Xa(l),i,a)},function(o,i){var a=iX(this),l=Xa(o);if(typeof i=="string"&&Zk(i,n)===-1&&Zk(i,"$<")===-1){var s=r(t,a,l,i);if(s.done)return s.value}var u=aX(i);u||(i=Xa(i));var f=a.global;if(f){var c=a.unicode;a.lastIndex=0}for(var h=[];;){var d=vX(a,l);if(d===null||(Rb(h,d),!f))break;var v=Xa(d[0]);v===""&&(a.lastIndex=cX(l,uX(a.lastIndex),c))}for(var p="",g=0,w=0;w=g&&(p+=Qk(l,g,_)+X,g=_+S.length)}return p+Qk(l,g)}]},!SX||!wX||Jk);var CX=Dt,_X=wj,OX=function(e,t,r,n){try{return n?t(CX(r)[0],r[1]):t(r)}catch(o){_X(e,"throw",o)}},RX=xd,EX=Gt,PX=Er,TX=OX,kX=gj,$X=km,AX=Xr,e$=tf,IX=bj,MX=LR,t$=Array,xX=function(t){var r=PX(t),n=$X(this),o=arguments.length,i=o>1?arguments[1]:void 0,a=i!==void 0;a&&(i=RX(i,o>2?arguments[2]:void 0));var l=MX(r),s=0,u,f,c,h,d,v;if(l&&!(this===t$&&kX(l)))for(h=IX(r,l),d=h.next,f=n?new this:[];!(c=EX(d,h)).done;s++)v=a?TX(h,i,[c.value,s],!0):c.value,e$(f,s,v);else for(u=AX(r),f=n?new this(u):t$(u);u>s;s++)v=a?i(r[s],s):r[s],e$(f,s,v);return f.length=s,f},DX=Ae,NX=xX,HX=_j,LX=!HX(function(e){Array.from(e)});DX({target:"Array",stat:!0,forced:LX},{from:NX});var jX=Ae,BX=Md,FX=yR.indexOf,VX=nf,BS=BX([].indexOf),Qj=!!BS&&1/BS([1],1,-0)<0,WX=Qj||!VX("indexOf");jX({target:"Array",proto:!0,forced:WX},{indexOf:function(t){var r=arguments.length>1?arguments[1]:void 0;return Qj?BS(this,t,r)||0:FX(this,t,r)}});var UX=Ae,zX=Be,GX=rf,YX=zX([].reverse),r$=[1,2];UX({target:"Array",proto:!0,forced:String(r$)===String(r$.reverse())},{reverse:function(){return GX(this)&&(this.length=this.length),YX(this)}});var KX=Wa.forEach,qX=nf,XX=qX("forEach"),ZX=XX?[].forEach:function(t){return KX(this,t,arguments.length>1?arguments[1]:void 0)},n$=gt,o$=kj,QX=$j,Eb=ZX,JX=Ba,Jj=function(e){if(e&&e.forEach!==Eb)try{JX(e,"forEach",Eb)}catch{e.forEach=Eb}};for(var Pb in o$)o$[Pb]&&Jj(n$[Pb]&&n$[Pb].prototype);Jj(QX);var eZ=typeof Bun=="function"&&Bun&&typeof Bun.version=="string",tZ=TypeError,eB=function(e,t){if(er,a=nZ(n)?n:sZ(n),l=i?aZ(arguments,r):[],s=i?function(){rZ(a,this,l)}:a;return t?e(s,o):e(s)}:e},fZ=Ae,rB=gt,cZ=eE,i$=cZ(rB.setInterval,!0);fZ({global:!0,bind:!0,forced:rB.setInterval!==i$},{setInterval:i$});var hZ=Ae,nB=gt,dZ=eE,a$=dZ(nB.setTimeout,!0);hZ({global:!0,bind:!0,forced:nB.setTimeout!==a$},{setTimeout:a$});var vZ=Ha,yZ=/(?:ipad|iphone|ipod).*applewebkit/i.test(vZ),pZ=Dn,oB=typeof process<"u"&&pZ(process)=="process",Dr=gt,mZ=Ua,gZ=xd,l$=_t,bZ=$t,iB=je,s$=kL,wZ=Nd,u$=Om,SZ=eB,CZ=yZ,_Z=oB,FS=Dr.setImmediate,VS=Dr.clearImmediate,OZ=Dr.process,Tb=Dr.Dispatch,RZ=Dr.Function,f$=Dr.MessageChannel,EZ=Dr.String,kb=0,qf={},c$="onreadystatechange",dc,Ei,$b,Ab;iB(function(){dc=Dr.location});var tE=function(e){if(bZ(qf,e)){var t=qf[e];delete qf[e],t()}},Ib=function(e){return function(){tE(e)}},h$=function(e){tE(e.data)},d$=function(e){Dr.postMessage(EZ(e),dc.protocol+"//"+dc.host)};(!FS||!VS)&&(FS=function(t){SZ(arguments.length,1);var r=l$(t)?t:RZ(t),n=wZ(arguments,1);return qf[++kb]=function(){mZ(r,void 0,n)},Ei(kb),kb},VS=function(t){delete qf[t]},_Z?Ei=function(e){OZ.nextTick(Ib(e))}:Tb&&Tb.now?Ei=function(e){Tb.now(Ib(e))}:f$&&!CZ?($b=new f$,Ab=$b.port2,$b.port1.onmessage=h$,Ei=gZ(Ab.postMessage,Ab)):Dr.addEventListener&&l$(Dr.postMessage)&&!Dr.importScripts&&dc&&dc.protocol!=="file:"&&!iB(d$)?(Ei=d$,Dr.addEventListener("message",h$,!1)):c$ in u$("script")?Ei=function(e){s$.appendChild(u$("script"))[c$]=function(){s$.removeChild(this),tE(e)}}:Ei=function(e){setTimeout(Ib(e),0)});var aB={set:FS,clear:VS},PZ=Ae,TZ=gt,v$=aB.clear;PZ({global:!0,bind:!0,enumerable:!0,forced:TZ.clearImmediate!==v$},{clearImmediate:v$});var kZ=Ae,lB=gt,y$=aB.set,$Z=eE,p$=lB.setImmediate?$Z(y$,!1):y$;kZ({global:!0,bind:!0,enumerable:!0,forced:lB.setImmediate!==p$},{setImmediate:p$});var AZ=Nm,IZ=Ej;AZ("Map",function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},IZ);var MZ=Ae,xZ=je,DZ=Er,sB=Dm,NZ=cj,HZ=xZ(function(){sB(1)});MZ({target:"Object",stat:!0,forced:HZ,sham:!NZ},{getPrototypeOf:function(t){return sB(DZ(t))}});var LZ=Ft,jZ=Dn,BZ=St,FZ=BZ("match"),rE=function(e){var t;return LZ(e)&&((t=e[FZ])!==void 0?!!t:jZ(e)=="RegExp")},VZ=rE,WZ=TypeError,nE=function(e){if(VZ(e))throw WZ("The method doesn't accept regular expressions");return e},UZ=St,zZ=UZ("match"),oE=function(e){var t=/./;try{"/./"[e](t)}catch{try{return t[zZ]=!1,"/./"[e](t)}catch{}}return!1},GZ=Ae,YZ=Be,KZ=nE,qZ=Rr,m$=Vt,XZ=oE,ZZ=YZ("".indexOf);GZ({target:"String",proto:!0,forced:!XZ("includes")},{includes:function(t){return!!~ZZ(m$(qZ(this)),m$(KZ(t)),arguments.length>1?arguments[1]:void 0)}});var QZ=Ae,JZ=Wa.filter,eQ=Bd,tQ=eQ("filter");QZ({target:"Array",proto:!0,forced:!tQ},{filter:function(t){return JZ(this,t,arguments.length>1?arguments[1]:void 0)}});var rQ=Gt,nQ=$t,oQ=bi,iQ=Yj,g$=RegExp.prototype,uB=function(e){var t=e.flags;return t===void 0&&!("flags"in g$)&&!nQ(e,"flags")&&oQ(g$,e)?rQ(iQ,e):t},aQ=mr.f,lQ=function(e,t,r){r in e||aQ(e,r,{configurable:!0,get:function(){return t[r]},set:function(n){t[r]=n}})},sQ=Bt,iE=gt,Fd=Be,uQ=Em,fQ=FR,cQ=Ba,hQ=Fa.f,b$=bi,dQ=rE,w$=Vt,vQ=uB,fB=ZR,yQ=lQ,pQ=qr,mQ=je,gQ=$t,bQ=Do.enforce,wQ=Oj,SQ=St,cB=Kj,hB=qj,CQ=SQ("match"),ni=iE.RegExp,Ol=ni.prototype,_Q=iE.SyntaxError,OQ=Fd(Ol.exec),up=Fd("".charAt),S$=Fd("".replace),C$=Fd("".indexOf),RQ=Fd("".slice),EQ=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,ba=/a/g,Mb=/a/g,PQ=new ni(ba)!==ba,dB=fB.MISSED_STICKY,TQ=fB.UNSUPPORTED_Y,kQ=sQ&&(!PQ||dB||cB||hB||mQ(function(){return Mb[CQ]=!1,ni(ba)!=ba||ni(Mb)==Mb||ni(ba,"i")!="/a/i"})),$Q=function(e){for(var t=e.length,r=0,n="",o=!1,i;r<=t;r++){if(i=up(e,r),i==="\\"){n+=i+up(e,++r);continue}!o&&i==="."?n+="[\\s\\S]":(i==="["?o=!0:i==="]"&&(o=!1),n+=i)}return n},AQ=function(e){for(var t=e.length,r=0,n="",o=[],i={},a=!1,l=!1,s=0,u="",f;r<=t;r++){if(f=up(e,r),f==="\\")f=f+up(e,++r);else if(f==="]")a=!1;else if(!a)switch(!0){case f==="[":a=!0;break;case f==="(":OQ(EQ,RQ(e,r+1))&&(r+=2,l=!0),n+=f,s++;continue;case(f===">"&&l):if(u===""||gQ(i,u))throw new _Q("Invalid capture group name");i[u]=!0,o[o.length]=[u,s],l=!1,u="";continue}l?u+=f:n+=f}return[n,o]};if(uQ("RegExp",kQ)){for(var Pi=function(t,r){var n=b$(Ol,this),o=dQ(t),i=r===void 0,a=[],l=t,s,u,f,c,h,d;if(!n&&o&&i&&t.constructor===Pi)return t;if((o||b$(Ol,t))&&(t=t.source,i&&(r=vQ(l))),t=t===void 0?"":w$(t),r=r===void 0?"":w$(r),l=t,cB&&"dotAll"in ba&&(u=!!r&&C$(r,"s")>-1,u&&(r=S$(r,/s/g,""))),s=r,dB&&"sticky"in ba&&(f=!!r&&C$(r,"y")>-1,f&&TQ&&(r=S$(r,/y/g,""))),hB&&(c=AQ(t),t=c[0],a=c[1]),h=fQ(ni(t,r),n?this:Ol,Pi),(u||f||a.length)&&(d=bQ(h),u&&(d.dotAll=!0,d.raw=Pi($Q(t),s)),f&&(d.sticky=!0),a.length&&(d.groups=a)),t!==l)try{cQ(h,"source",l===""?"(?:)":l)}catch{}return h},_$=hQ(ni),O$=0;_$.length>O$;)yQ(Pi,ni,_$[O$++]);Ol.constructor=Pi,Pi.prototype=Ol,pQ(iE,"RegExp",Pi,{constructor:!0})}wQ("RegExp");var IQ=Ed.PROPER,MQ=qr,xQ=Dt,R$=Vt,DQ=je,NQ=uB,aE="toString",HQ=RegExp.prototype,vB=HQ[aE],LQ=DQ(function(){return vB.call({source:"a",flags:"b"})!="/a/b"}),jQ=IQ&&vB.name!=aE;(LQ||jQ)&&MQ(RegExp.prototype,aE,function(){var t=xQ(this),r=R$(t.source),n=R$(NQ(t));return"/"+r+"/"+n},{unsafe:!0});var BQ=Ae,FQ=Be,VQ=_d,WQ=Nr,UQ=nf,zQ=FQ([].join),GQ=VQ!=Object,YQ=GQ||!UQ("join",",");BQ({target:"Array",proto:!0,forced:YQ},{join:function(t){return zQ(WQ(this),t===void 0?",":t)}});var KQ=Ed.PROPER,qQ=je,E$=jj,P$="​…᠎",XQ=function(e){return qQ(function(){return!!E$[e]()||P$[e]()!==P$||KQ&&E$[e].name!==e})},ZQ=Ae,QQ=Bj.trim,JQ=XQ;ZQ({target:"String",proto:!0,forced:JQ("trim")},{trim:function(){return QQ(this)}});function WS(e){return WS=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},WS(e)}function lE(e){return window.requestAnimationFrame(e)}function eJ(){return!!document.documentElement.classList}function tJ(){return!!document.createTextNode("test").textContent}function rJ(){return!!window.getComputedStyle}function fp(e){window.cancelAnimationFrame(e)}function yB(){return"ontouchstart"in window}var US;function nJ(){var e=document.createElement("TABLE");e.style.borderSpacing="0",e.style.borderWidth="0",e.style.padding="0";var t=document.createElement("TBODY");e.appendChild(t),t.appendChild(document.createElement("TR")),t.firstChild.appendChild(document.createElement("TD")),t.firstChild.firstChild.innerHTML="t
t";var r=document.createElement("CAPTION");r.innerHTML="c
c
c
c",r.style.padding="0",r.style.margin="0",e.insertBefore(r,t),document.body.appendChild(e),US=e.offsetHeight<2*e.lastChild.offsetHeight,document.body.removeChild(e)}function pB(){return US===void 0&&nJ(),US}var Za;function oJ(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Za||((typeof Intl>"u"?"undefined":WS(Intl))==="object"?Za=new Intl.Collator(e,t).compare:typeof String.prototype.localeCompare=="function"?Za=function(n,o){return"".concat(n).localeCompare(o)}:Za=function(n,o){return n===o?0:n>o?-1:1},Za)}var mf;function iJ(){if(mf!==void 0)return mf;try{var e={get passive(){mf=!0}};window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch{mf=!1}return mf}var aJ=CR,lJ=DL;aJ("toPrimitive");lJ();var sJ=Dt,uJ=pL,fJ=TypeError,cJ=function(e){if(sJ(this),e==="string"||e==="default")e="string";else if(e!=="number")throw fJ("Incorrect hint");return uJ(this,e)},hJ=$t,dJ=qr,vJ=cJ,yJ=St,T$=yJ("toPrimitive"),k$=Date.prototype;hJ(k$,T$)||dJ(k$,T$,vJ);var pJ=km,mJ=Ju,gJ=TypeError,mB=function(e){if(pJ(e))return e;throw gJ(mJ(e)+" is not a constructor")},$$=Dt,bJ=mB,wJ=dn,SJ=St,CJ=SJ("species"),_J=function(e,t){var r=$$(e).constructor,n;return r===void 0||wJ(n=$$(r)[CJ])?t:bJ(n)},OJ=Ua,gf=Gt,sE=Be,RJ=Fm,EJ=Dt,PJ=dn,TJ=rE,A$=Rr,kJ=_J,$J=QR,AJ=Va,xb=Vt,IJ=ja,I$=wR,M$=Vm,MJ=Bm,xJ=ZR,DJ=je,Qa=xJ.UNSUPPORTED_Y,x$=4294967295,NJ=Math.min,gB=[].push,HJ=sE(/./.exec),Ja=sE(gB),bf=sE("".slice),LJ=!DJ(function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var r="ab".split(e);return r.length!==2||r[0]!=="a"||r[1]!=="b"});RJ("split",function(e,t,r){var n;return"abbc".split(/(b)*/)[1]=="c"||"test".split(/(?:)/,-1).length!=4||"ab".split(/(?:ab)*/).length!=2||".".split(/(.?)(.?)/).length!=4||".".split(/()()/).length>1||"".split(/.?/).length?n=function(o,i){var a=xb(A$(this)),l=i===void 0?x$:i>>>0;if(l===0)return[];if(o===void 0)return[a];if(!TJ(o))return gf(t,a,o,l);for(var s=[],u=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(o.sticky?"y":""),f=0,c=new RegExp(o.source,u+"g"),h,d,v;(h=gf(MJ,c,a))&&(d=c.lastIndex,!(d>f&&(Ja(s,bf(a,f,h.index)),h.length>1&&h.index=l)));)c.lastIndex===h.index&&c.lastIndex++;return f===a.length?(v||!HJ(c,""))&&Ja(s,""):Ja(s,bf(a,f)),s.length>l?I$(s,0,l):s}:"0".split(void 0,0).length?n=function(o,i){return o===void 0&&i===0?[]:gf(t,this,o,i)}:n=t,[function(i,a){var l=A$(this),s=PJ(i)?void 0:IJ(i,e);return s?gf(s,i,l,a):gf(n,xb(l),i,a)},function(o,i){var a=EJ(this),l=xb(o),s=r(n,a,l,i,n!==t);if(s.done)return s.value;var u=kJ(a,RegExp),f=a.unicode,c=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(Qa?"g":"y"),h=new u(Qa?"^(?:"+a.source+")":a,c),d=i===void 0?x$:i>>>0;if(d===0)return[];if(l.length===0)return M$(h,l)===null?[l]:[];for(var v=0,p=0,g=[];p1&&arguments[1]!==void 0?arguments[1]:" ";return e.split(t)}function L$(e,t,r){return t=BJ(t),t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function BJ(e){var t=FJ(e,"string");return $o(t)==="symbol"?t:String(t)}function FJ(e,t){if($o(e)!=="object"||e===null)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if($o(n)!=="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function $o(e){return $o=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},$o(e)}function vc(e){var t;return Array.isArray(e)?t=e.length?new Array(e.length).fill(null):[]:(t={},Ye(e,function(r,n){n!=="__children"&&(r&&$o(r)==="object"&&!Array.isArray(r)?t[n]=vc(r):Array.isArray(r)?r.length&&$o(r[0])==="object"&&!Array.isArray(r[0])?t[n]=[vc(r[0])]:t[n]=[]:t[n]=null)})),t}function Si(e,t){return t.prototype.constructor=t,e.prototype=new t,e.prototype.constructor=e,e}function zt(e,t,r){var n=Array.isArray(r);return Ye(t,function(o,i){(n===!1||r.includes(i))&&(e[i]=o)}),e}function Um(e,t){Ye(t,function(r,n){t[n]&&$o(t[n])==="object"?(e[n]||(Array.isArray(t[n])?e[n]=[]:Object.prototype.toString.call(t[n])==="[object Date]"?e[n]=t[n]:e[n]={}),Um(e[n],t[n])):e[n]=t[n]})}function yr(e){return $o(e)==="object"?JSON.parse(JSON.stringify(e)):e}function Or(e){var t={};return Ye(e,function(r,n){t[n]=r}),t}function bt(e){e.MIXINS||(e.MIXINS=[]);for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n1&&arguments[1]!==void 0?arguments[1]:"value",n="_".concat(r),o=(t={_touched:!1},L$(t,n,e),L$(t,"isTouched",function(){return this._touched}),t);return Object.defineProperty(o,r,{get:function(){return this[n]},set:function(a){this._touched=!0,this[n]=a},enumerable:!0,configurable:!0}),o}function xt(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Cr=function(t){var r={value:!1};return r.test=function(n,o){r.value=t(n,o)},r},Nn={chrome:Cr(function(e,t){return/Chrome/.test(e)&&/Google/.test(t)}),chromeWebKit:Cr(function(e){return/CriOS/.test(e)}),edge:Cr(function(e){return/Edge/.test(e)}),edgeWebKit:Cr(function(e){return/EdgiOS/.test(e)}),firefox:Cr(function(e){return/Firefox/.test(e)}),firefoxWebKit:Cr(function(e){return/FxiOS/.test(e)}),ie:Cr(function(e){return/Trident/.test(e)}),ie9:Cr(function(){return!!document.documentMode}),mobile:Cr(function(e){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(e)}),safari:Cr(function(e,t){return/Safari/.test(e)&&/Apple Computer/.test(t)})},Vd={mac:Cr(function(e){return/^Mac/.test(e)}),win:Cr(function(e){return/^Win/.test(e)}),linux:Cr(function(e){return/^Linux/.test(e)}),ios:Cr(function(e){return/iPhone|iPad|iPod/i.test(e)})};function WJ(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.userAgent,r=t===void 0?navigator.userAgent:t,n=e.vendor,o=n===void 0?navigator.vendor:n;Ye(Nn,function(i){var a=i.test;return void a(r,o)})}function UJ(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=e.platform,r=t===void 0?navigator.platform:t;Ye(Vd,function(n){var o=n.test;return void o(r)})}WJ();UJ();function SB(){return Nn.chrome.value}function zJ(){return Nn.chromeWebKit.value}function Nb(){return Nn.firefox.value}function GJ(){return Nn.firefoxWebKit.value}function YJ(){return Nn.safari.value}function KJ(){return Nn.edge.value}function qJ(){return Nn.ie.value}function XJ(){return Nn.ie9.value}function $n(){return Nn.mobile.value}function CB(){return Vd.ios.value}function _B(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:navigator,t=e.maxTouchPoints;return t>2&&Vd.mac.value}function j$(){return Vd.win.value}function B$(){return Vd.mac.value}/*! @license DOMPurify 2.4.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.5/LICENSE */function Xo(e){return Xo=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Xo(e)}function zS(e,t){return zS=Object.setPrototypeOf||function(n,o){return n.__proto__=o,n},zS(e,t)}function ZJ(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function _y(e,t,r){return ZJ()?_y=Reflect.construct:_y=function(o,i,a){var l=[null];l.push.apply(l,i);var s=Function.bind.apply(o,l),u=new s;return a&&zS(u,a.prototype),u},_y.apply(null,arguments)}function nn(e){return QJ(e)||JJ(e)||eee(e)||tee()}function QJ(e){if(Array.isArray(e))return GS(e)}function JJ(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function eee(e,t){if(e){if(typeof e=="string")return GS(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return GS(e,t)}}function GS(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);rt in n?$e(n,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[t]=r;var q=(n,t,r)=>(Ae(n,typeof t!="symbol"?t+"":t,r),r);import{j as z,r as g,u as ve,a as _e,F as qe,b as Me,c as Fe,d as Ue,e as je,f as Ke,g as Ve,h as Qe,P as We,D as Xe,i as Be,k as Ge,A as C,I as w,l as Y,m as He,n as N,o as ze,U as v,p as S,q as be,s as xe,t as m,v as A,_ as Ye,W as J,$ as k,L as $,C as Je,X as Ze,S as et,w as tt,N as nt,E as rt,x as we,y as Ne,z as Z,B as Ce,G as ee,H as te,Z as ne,J as O,K as P,M as re,Q as R,O as D,R as st,T as it,V as Le,Y as at,a0 as ot,a1 as ct,a2 as se,a3 as F,a4 as Pe,a5 as he,a6 as lt,a7 as me,a8 as pe,a9 as Re,aa as dt,ab as ut,ac as ht,ad as mt,ae as pt,af as gt,ag as ft,ah as yt,ai as vt,aj as bt}from"./vendor-ccd85f8c.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const a of s)if(a.type==="childList")for(const c of a.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&o(c)}).observe(document,{childList:!0,subtree:!0});function r(s){const a={};return s.integrity&&(a.integrity=s.integrity),s.referrerPolicy&&(a.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?a.credentials="include":s.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function o(s){if(s.ep)return;s.ep=!0;const a=r(s);fetch(s.href,a)}})();const T=z.Fragment,e=z.jsx,i=z.jsxs;class xt extends Error{constructor(r,o){const s=r.status||r.status===0?r.status:"",a=r.statusText||"",c=`${s} ${a}`.trim(),u=c?`status code ${c}`:"an unknown error";super(`Request failed with ${u}`);q(this,"response");q(this,"request");this.name="HTTPError",this.response=r,this.request=o}}const wt=n=>{const t=new URLSearchParams;return Object.entries(n).forEach(([r,o])=>{o!==void 0&&t.set(r,o)}),t};class Nt{constructor(t={}){q(this,"config");var r;this.config=t,this.config.baseUrl=(r=this.config.baseUrl)==null?void 0:r.replace(/\/+$/,"")}get baseUrl(){return this.config.baseUrl}async fetch(t){let r,o;if(typeof t=="string")r=t;else{const{url:c,params:u,json:h,...d}=t;if(r=c,o=d,h&&(o.body=JSON.stringify(h),o.headers={"Content-Type":"application/json"}),u){const f=wt(u);r+=`?${f}`}}this.config.baseUrl&&(r=this.config.baseUrl+r);const s=new Request(r,{...o,credentials:"include"}),a=await fetch(s);if(!a.ok)throw new xt(a,s);return a.headers.get("Content-Type")==="application/json"?await a.json():await a.text()}async fetchForceMethod(t,r){return typeof t=="string"?this.fetch({url:t,method:r}):this.fetch({...t,method:r})}async get(t){return this.fetchForceMethod(t,"get")}async post(t){return this.fetchForceMethod(t,"post")}async put(t){return this.fetchForceMethod(t,"put")}async patch(t){return this.fetchForceMethod(t,"patch")}async delete(t){return this.fetchForceMethod(t,"delete")}}const Ct=`${window.location.protocol}//${window.location.host}/api`,K={}.VITE_API_BASE_URL||Ct,L=new Nt({baseUrl:K}),Lt=()=>L.baseUrl,Pt=async()=>await L.get("/whoami"),Rt=async()=>{await L.post("/logout")},ie=()=>{const n=new URL(K);return n.protocol="ws",n.pathname+="/ws",n},St=async()=>await L.get("/pipelines"),ae=async n=>await L.get(`/pipelines/${n}`),Tt=async n=>await L.get(`/pipelines/${n}/input-schema`),oe=async(n,t)=>{const r={pipeline_id:n,trigger_id:t},o=await L.get({url:"/runs",params:r});return o.forEach(s=>{s.start_time=new Date(s.start_time)}),o},kt=async n=>{const t=await L.get(`/runs/${n}`);return t.start_time=new Date(t.start_time),t},Ot=async n=>(await L.get(`/runs/${n}/logs`)).split(` -`).map((r,o)=>{const s=JSON.parse(r);return s.id=o,s.timestamp=new Date(s.timestamp),s}),Dt=async(n,t)=>await L.get(`/runs/${n}/data/${t}`),B=n=>`${K}/pipelines/${n}/run`,Et=n=>({async mutationFn(t){L.post({url:`/pipelines/${n}/run`,json:t})}}),M=(n,t,r=!0)=>`${r?K:""}/pipelines/${n}/triggers/${t}/run`,It=async(n,t)=>await L.post(M(n,t,!1)),Se=g.createContext({isAuthenticated:!1,isAuthenticationEnabled:!0,isLoading:!0,logout:async()=>{},user:null}),$t=(n,t)=>{switch(t.type){case"LOGIN":return{...n,isAuthenticated:!0,isAuthenticationEnabled:t.payload.isAuthenticationEnabled,user:t.payload.user};case"LOGOUT":return{...n,isAuthenticated:!1,user:null};case"POPULATE":return{...n,user:t.payload?{...n.user,...t.payload}:null};case"STOP_LOADING":return{...n,isLoading:!1};default:throw new Error("Unknown action type")}},At=({children:n})=>{const[t,r]=g.useReducer($t,{isAuthenticated:!1,isAuthenticationEnabled:!0,isLoading:!0,logout:async()=>{await Rt(),r({type:"LOGOUT"})},user:null});return g.useEffect(()=>{(async()=>{try{const{is_authentication_enabled:s,user:a}=await Pt();(s&&a||!s)&&r({type:"LOGIN",payload:{user:a,isAuthenticationEnabled:s}})}catch(s){console.error(s)}finally{r({type:"STOP_LOADING"})}})()},[]),e(Se.Provider,{value:t,children:t.isAuthenticationEnabled&&t.isLoading?"Loading...":n})},ce=()=>g.useContext(Se),_t=n=>`translate${n==="bottom"||n==="top"?"Y":"X"}(${n==="bottom"||n==="right"?"-":"+"}10%)`;function qt({initialOpen:n=!1,placement:t="bottom",modal:r,open:o,onOpenChange:s}={}){const[a,c]=g.useState(n),[u,h]=g.useState(),[d,f]=g.useState(),l=o??a,y=s??c,x=Ue({placement:t,open:l,onOpenChange:y,whileElementsMounted:We,middleware:[Xe(5),Be({fallbackAxisSideDirection:"end"}),Ge({padding:5})]}),p=x.context,b=je(p,{enabled:o==null}),E=Ke(p),X=Ve(p),_=Qe([b,E,X]);return g.useMemo(()=>({open:l,setOpen:y,..._,...x,modal:r,labelId:u,descriptionId:d,setLabelId:h,setDescriptionId:f}),[l,y,_,x,r,u,d])}const Te=g.createContext(null),V=()=>{const n=g.useContext(Te);if(n==null)throw new Error("Popover components must be wrapped in ");return n};function Mt({children:n,modal:t=!0,...r}){const o=qt({modal:t,...r});return e(Te.Provider,{value:o,children:n})}const Ft=g.forwardRef(function({children:t,asChild:r=!1,...o},s){const a=V(),c=t.ref,u=ve([a.refs.setReference,s,c]);return r&&g.isValidElement(t)?g.cloneElement(t,a.getReferenceProps({ref:u,...o,...t.props,"data-state":a.open?"open":"closed"})):e("button",{ref:u,type:"button","data-state":a.open?"open":"closed",...a.getReferenceProps(o),children:t})}),Ut=g.forwardRef(function(t,r){const{context:o,...s}=V(),a=ve([s.refs.setFloating,r]),{isMounted:c,styles:u}=_e(o,{initial:({side:h})=>({opacity:0,transform:_t(h)})});return e(qe,{children:c&&e(Me,{context:o,modal:s.modal,children:e("div",{ref:a,style:{position:s.strategy,top:s.y??0,left:s.x??0,width:"max-content",...t.style,...u},"aria-labelledby":s.labelId,"aria-describedby":s.descriptionId,...s.getFloatingProps(t),children:t.children})})})});g.forwardRef(function({children:t,...r},o){const{setDescriptionId:s}=V(),a=Fe();return g.useLayoutEffect(()=>(s(a),()=>s(void 0)),[a,s]),e("p",{...r,ref:o,id:a,children:t})});g.forwardRef(function(t,r){const{setOpen:o}=V();return e("button",{type:"button",ref:r,...t,onClick:s=>{var a;(a=t.onClick)==null||a.call(t,s),o(!1)}})});const jt=()=>{const{logout:n,user:t}=ce();if(!t)return e("div",{children:"Not logged in"});const r=t.name.split(" "),o=r.length>1?`${r.at(0)[0]}${r.at(-1)[0]}`:r[0];return i(Mt,{placement:"bottom-start",children:[e(Ft,{children:e("div",{className:"flex justify-center items-center font-medium bg-white ring-1 ring-slate-200 text-indigo-500 rounded-full ml-4 hover:ring-2 transition-shadow",style:{width:34,height:34},children:o})}),e(Ut,{children:i(C,{className:"shadow-xl",children:[e(w,{children:t.name}),e(Y,{children:t.email}),e(He,{}),e(N,{size:"xs",variant:"secondary",color:"rose",icon:ze,className:"w-full",onClick:async()=>await n(),children:"Logout"})]})})]})},Q=({children:n,header:t})=>{const{isAuthenticated:r,isAuthenticationEnabled:o}=ce();return i("div",{className:"bg-slate-50 p-6 sm:p-10 min-h-screen",children:[i(v,{className:"items-start",children:[t&&e("div",{className:"flex-grow",children:t}),r&&o&&e(jt,{})]}),e("main",{children:n})]})},W=({children:n,footer:t,isOpen:r,maxHeight:o,maxWidth:s="600px",minWidth:a="350px",subtitle:c,title:u,onClose:h})=>{const d=g.createRef();return g.useEffect(()=>{var l,y;r?(l=d.current)==null||l.showModal():(y=d.current)==null||y.close()},[r]),e("dialog",{ref:d,style:{padding:0,background:"transparent",overflow:"visible",maxHeight:o,maxWidth:s,minWidth:a},onClick:l=>{var p;var y=d.current.getBoundingClientRect(),x=y.top<=l.clientY&&l.clientY<=y.top+y.height&&y.left<=l.clientX&&l.clientX<=y.left+y.width;x||(h?h():(p=d.current)==null||p.close())},children:i(C,{children:[u&&e(w,{children:u}),c&&e(Y,{children:c}),e("div",{className:(u||c)&&"mt-6",children:n}),t&&e(v,{className:"justify-end space-x-6 mt-6",children:t})]})})},Kt=n=>{const t=s=>{if(!n.definitions)return;const a=s.split("/").pop();return n.definitions[a]},r=n.properties;if(!r)return e(m,{className:"mt-4",children:"This pipeline has no input"});const o=Object.entries(r).map(([s,a])=>{var l,y,x;if(typeof a=="boolean")return;let c=a,u;if(a.allOf){const p=a.allOf[0];if(u=(l=a.default)==null?void 0:l.toString(),p.$ref){const b=t(p.$ref);b&&(c=b)}}else if(a.$ref){const p=t(a.$ref);p&&(c=p)}else u=(y=c.default)==null?void 0:y.toString();const h=c.title||s,d=(c.enum?"enum":Array.isArray(c.type)?c.type[0]:c.type)||"string",f=(x=n.required)==null?void 0:x.includes(s);if(["number","integer"].includes(d)){const p=c.minimum||c.exclusiveMinimum,b=c.maximum||c.exclusiveMaximum;if(p!==void 0&&b!==void 0){const E=g.createRef(),X=d==="number"?(b-p)/10:1;return i("div",{children:[e(m,{children:h}),e("input",{name:s,type:"range",min:p,max:b,step:X,defaultValue:u,required:f,onInput:_=>E.current&&(E.current.value=_.target.value),className:"w-full mt-2 cursor-ew-resize appearance-none h-2 bg-slate-200 border border-slate-400 rounded"}),i(v,{className:"items-baseline space-x-4",children:[i("div",{className:"ml-1",children:[e("div",{className:"border-r border-slate-300 h-2 w-1"}),e(m,{children:p})]}),e(m,{children:e(A,{children:e("output",{ref:E,className:"px-2 py-1 rounded bg-slate-200 block truncate text-center",children:u})})}),i("div",{className:"mr-1",children:[e("div",{className:"border-r border-slate-300 h-2 w-1"}),e(m,{children:b})]})]})]},s)}else return i("div",{children:[e(m,{children:h}),e("input",{name:s,type:"number",min:p,max:b,defaultValue:u,className:"border-gray-300 rounded-md border shadow-sm px-4 py-2 text-sm font-medium invalid:border-rose-500 mt-2",style:{textAlign:"end",width:"100%"},required:f})]},s)}else return d==="enum"?i("div",{children:[e(m,{children:h}),i("select",{name:s,defaultValue:u||"",className:"border-gray-300 rounded-md border shadow-sm px-4 py-2 text-sm font-medium w-full invalid:border-rose-500 mt-2",required:f,children:[e("option",{disabled:!0,value:"",children:"Select..."}),c.enum.map(p=>e("option",{value:p.toString(),children:p==null?void 0:p.toString()},p==null?void 0:p.toString()))]})]},s):i("div",{children:[i(m,{children:[h," ",f&&"*"]}),e(Ye,{name:s,placeholder:h,defaultValue:u,className:"mt-2"})]},s)});return e("div",{className:"space-y-4",children:o})},le=({pipeline:n})=>{const[t,r]=g.useState(!1),o=S({queryKey:["pipeline-input",n.id],queryFn:()=>Tt(n.id),enabled:t}),s=be(Et(n.id));return i(T,{children:[e(N,{color:"indigo",variant:"secondary",size:"xs",icon:xe,onClick:()=>r(!0),children:"Run pipeline"}),e(W,{isOpen:t,title:`Run ${n.name} manually`,onClose:()=>r(!1),children:i("form",{method:"dialog",onSubmit:a=>{const c=Object.fromEntries(new FormData(a.target).entries());s.mutateAsync(c)},children:[o.isLoading?"Loading...":e("div",{style:{width:350},children:Kt(o.data)}),i(v,{className:"justify-end space-x-6 mt-6",children:[e(N,{variant:"secondary",color:"indigo",onClick:()=>{r(!1)},children:"Close"}),e(N,{color:"indigo",type:"submit",children:"Run"})]})]})})]})},Vt=()=>{const n=S({queryKey:["pipelines"],queryFn:St,initialData:[]});if(n.isLoading)return e("div",{children:"Loading..."});if(n.error)return e("div",{children:"An error has occurred"});const t=n.data;return i(C,{children:[e(w,{children:"Pipelines"}),e(J,{children:t.map(r=>i(k,{children:[i("div",{children:[e(m,{children:e(A,{children:e($,{to:`/pipelines/${r.id}`,children:r.name})})}),r.description&&e(m,{className:"truncate",children:r.description})]}),e(le,{pipeline:r})]},r.id))})]})},U={completed:"emerald",failed:"rose",cancelled:"slate",running:"blue",notrun:"slate",warning:"amber"},G={completed:Je,failed:Ze,cancelled:et,running:tt,notrun:nt,warning:rt},H=["cyan","violet","pink","emerald","orange","stone","fuchsia"],ke=n=>Object.fromEntries(n.map((t,r)=>[t.id,`bg-${H[r%H.length]}-500`])),Qt=n=>we(n).format("D MMM YYYY HH:mm:ss (Z[Z])"),Wt=n=>we(n).format("HH:mm:ss.SSS"),Oe=({status:n})=>e(Ne,{color:U[n],icon:G[n],children:n}),Xt=({startTime:n})=>{const[t,r]=g.useState(Date.now()-n.getTime());return g.useEffect(()=>{const o=setInterval(()=>{r(Date.now()-n.getTime())},500);return()=>{clearInterval(o)}}),e("span",{children:(t/1e3).toFixed(2)})},de=({pipelineId:n,runs:t,triggerId:r})=>{const[o,s]=g.useState(t),a=Z(),c=Ce(),{lastJsonMessage:u}=ee(ie().toString()),h=g.useCallback(d=>{const{data:f,type:l}=d;if(l==="run-update")if(f.run.start_time=new Date(f.run.start_time),f.run.trigger_id=f.trigger,f.run.status==="running")s([f.run,...o]);else{let y=[...o];const x=y.findIndex(p=>p.id===f.run.id);x>=0?y[x]=f.run:y=[f.run,...y],s(y),a.invalidateQueries({queryKey:["runs",n,r]})}},[n,a,o,r]);return g.useEffect(()=>{u&&h(u)},[u]),g.useEffect(()=>{t.length&&s(t)},[t]),i(C,{children:[e(w,{children:"Runs"}),i(te,{children:[e(ne,{children:i(O,{children:[e(P,{className:"text-right",children:"#"}),e(P,{children:"Status"}),!r&&e(P,{children:"Trigger"}),e(P,{children:"Started at"}),e(P,{className:"text-right",children:"Duration"})]})}),e(re,{children:o.map(d=>i(O,{className:"cursor-pointer hover:bg-slate-50 transition-colors",onClick:()=>c(`/pipelines/${d.pipeline_id}/triggers/${d.trigger_id}/runs/${d.id}`),children:[e(R,{className:"text-right",children:d.id}),e(R,{children:e(Oe,{status:d.status})}),!r&&e(R,{children:e($,{to:`/pipelines/${d.pipeline_id}/triggers/${d.trigger_id}`,className:"link--arrow",title:"View trigger details",onClick:f=>f.stopPropagation(),children:d.trigger_id})}),e(R,{children:e(m,{children:Qt(d.start_time)})}),i(R,{className:"text-right",children:[d.status!=="running"?(d.duration/1e3).toFixed(2):e(Xt,{startTime:d.start_time})," ","s"]})]},d.id))})]})]})},Bt=()=>{const n=S({queryKey:["runs",void 0,void 0],queryFn:()=>oe(),initialData:[]});return n.isLoading?e("div",{children:"Loading..."}):n.error?e("div",{children:"An error has occurred"}):e(Q,{header:e(T,{children:e(w,{children:"Mario Pype"})}),children:i(D,{numColsMd:2,className:"gap-6 mt-6",children:[e(Vt,{}),n.isLoading?"Loading...":n.isError?"Error loading runs":e(de,{runs:n.data})]})})},Gt=()=>e("div",{className:"h-screen flex justify-center items-center bg-slate-200",children:i(C,{className:"w-auto",children:[e("div",{className:"w-12 rounded-full mx-auto mb-4",children:e("img",{src:"/mario-pipe-flower.png",alt:"Mario Pype logo"})}),e(w,{className:"mb-6",children:"Welcome to Mario Pype"}),e(N,{onClick:()=>{location.href=`${Lt()}/login`},size:"lg",color:"indigo",className:"shadow-none w-full",children:"Login"})]})}),De=({content:n})=>{const[t,r]=g.useState(!1),o=g.useRef();return e(N,{variant:"light",color:"indigo",size:"sm",icon:t?st:it,onClick:()=>{navigator.clipboard.writeText(n),r(!0),o.current=setTimeout(()=>r(!1),3e3)}})},I=()=>e(m,{children:"/"}),ue=({pipeline:n,trigger:t,run:r})=>{if(r&&!t)throw new Error;return e("div",{className:"breadcrumbs",children:i(v,{className:"space-x-2 justify-start",children:[e(m,{children:e($,{to:"/",children:"Pipelines"})}),e(I,{}),e(m,{children:t?e($,{to:`/pipelines/${n.id}`,children:n.name}):n.name}),t&&i(T,{children:[e(I,{}),e(m,{children:"Triggers"}),e(I,{}),e(m,{children:r?e($,{to:`/pipelines/${n.id}/triggers/${t.id}`,children:t.name}):t.name})]}),r&&t&&i(T,{children:[e(I,{}),e(m,{children:"Runs"}),e(I,{}),i(m,{children:["#",r.id]})]})]})})},ge=n=>(n/1e3).toFixed(1)+" s",Ee=({runs:n})=>{const t=n.filter(o=>o.status==="completed").reverse(),r=t.reduce((o,s)=>o+s.duration,0)/t.length||0;return i(C,{children:[e(v,{className:"items-start",children:e(m,{children:"Duration"})}),e(v,{className:"justify-start items-baseline space-x-3 truncate",children:e(Le,{children:ge(r)})}),e(at,{data:t,index:"id",categories:["duration"],colors:["indigo"],valueFormatter:ge,yAxisWidth:40,showLegend:!1,autoMinValue:!0,className:"mt-6 h-28"})]})},Ie=({runs:n,subject:t})=>{var c,u;const o=n.filter(h=>h.status==="completed").length/n.length*100||0,s=(c=n[0])==null?void 0:c.start_time,a=(u=n[n.length-1])==null?void 0:u.start_time;return i(C,{children:[e(v,{children:i(w,{children:[t," health"]})}),n.length?i(T,{children:[i(v,{className:"mt-4",children:[e(m,{children:"Successful runs"}),i(m,{children:[o.toFixed(1)," %"]})]}),e(ot,{className:"mt-2",data:n.map(h=>({key:h.id,color:U[h.status],tooltip:`#${h.id} ${h.status}`}))})]}):e(m,{className:"text-center mt-8",children:i(ct,{children:["This ",t.toLowerCase()," has no runs yet"]})}),i(v,{className:"mt-2",children:[e(m,{children:s&&s.toDateString()}),e(m,{children:a&&a.toDateString()})]})]})},Ht=({pipeline:n})=>{const t=Ce();return i(C,{children:[e(w,{children:"Triggers"}),i(te,{children:[e(ne,{children:i(O,{children:[e(P,{children:"Name"}),e(P,{children:"Interval"})]})}),e(re,{children:n.triggers.map(r=>i(O,{className:"cursor-pointer hover:bg-slate-50 transition-colors",onClick:()=>t(`/pipelines/${n.id}/triggers/${r.id}`),children:[e(R,{children:r.name}),e(R,{children:e(m,{children:r.aps_trigger})})]},r.id))})]})]})},zt=()=>{const t=se().pipelineId,r=S({queryKey:["pipeline",t],queryFn:()=>ae(t),initialData:{id:"",name:"",description:"",tasks:[],triggers:[]},enabled:!!t}),o=S({queryKey:["runs",t,void 0],queryFn:()=>oe(t),initialData:[]});if(o.isLoading||r.isLoading)return e("div",{children:"Loading..."});if(o.error||r.error)return e("div",{children:"An error has occurred"});const s=r.data;return i(Q,{header:i(v,{className:"items-start",children:[i("div",{children:[i(v,{className:"justify-start space-x-2",children:[i(w,{children:["Pipeline ",s.name]}),s.description&&i(m,{className:"truncate",children:["· ",s.description]})]}),e(ue,{pipeline:s})]}),e(le,{pipeline:s})]}),children:[i(D,{numColsMd:2,numColsLg:3,className:"gap-6 mt-6",children:[i(C,{className:"flex flex-col h-full",children:[e(w,{children:"Tasks"}),e(J,{children:s.tasks.map(a=>e(k,{children:i("div",{children:[e(m,{children:e(A,{children:a.name})}),a.description&&e(m,{className:"truncate",children:a.description})]})},a.id))}),e("div",{style:{flexGrow:1}}),i(k,{children:[i(v,{className:"justify-start",children:[e(m,{children:"Run URL"}),e(F,{size:"sm",color:"slate",icon:Pe,tooltip:"URL to run the pipeline programmatically via an HTTP POST request"})]}),i(v,{className:"justify-end",children:[e("div",{className:"bg-slate-100 border-slate-300 rounded border text-slate-500 text-xs truncate px-1 py-0.5 mr-2",style:{maxWidth:200},title:B(t),children:B(t)}),e(De,{content:B(t)})]})]})]}),e(Ie,{subject:"Pipeline",runs:[...o.data].reverse()}),e(Ee,{runs:o.data})]}),i(D,{numCols:1,numColsSm:1,numColsMd:1,numColsLg:2,className:"gap-6 mt-6",children:[e(he,{children:e(Ht,{pipeline:s})}),e(he,{children:e(de,{runs:o.data,pipelineId:t})})]})]})},Yt=({trigger:n})=>{const[t,r]=g.useState(!1);return i(T,{children:[e(N,{color:"indigo",variant:"light",size:"sm",icon:lt,onClick:()=>r(!0),children:"Show params"}),e(W,{isOpen:t,title:"Trigger params",subtitle:n.name,footer:e(N,{variant:"primary",color:"indigo",onClick:()=>{r(!1)},children:"Close"}),onClose:()=>r(!1),children:e("pre",{className:"p-3 bg-slate-100 rounded-md",children:JSON.stringify(n.params,null,2)})})]})},j={id:"_manual",name:"Manual",description:"Special trigger that identifies pipelines run manually by the user"},Jt=()=>{const n=se(),t=n.pipelineId,r=n.triggerId,o=S({queryKey:["pipeline",t],queryFn:()=>ae(t),initialData:{id:"",name:"",description:"",tasks:[],triggers:[]},enabled:!!t}),s=S({queryKey:["runs",t,r],queryFn:()=>oe(t,r),initialData:[],enabled:!!r}),a=be({mutationFn:()=>It(t,r)});if(s.isLoading||o.isLoading)return e("div",{children:"Loading..."});if(s.error||o.error)return e("div",{children:"An error has occurred"});const c=o.data,u=r===j.id,h=u?j:c.triggers.find(f=>f.id===r);if(!h)return e("div",{children:"Trigger not found"});const d=u?e(le,{pipeline:c}):e(N,{size:"xs",color:"indigo",icon:xe,onClick:()=>{a.mutateAsync()},children:"Run trigger"});return i(Q,{header:i(v,{className:"items-start",children:[i("div",{children:[i(w,{children:["Trigger ",h.name]}),e(ue,{pipeline:c,trigger:h})]}),d]}),children:[i(D,{numColsMd:2,numColsLg:3,className:"gap-6 mt-6",children:[i(C,{className:"flex flex-col h-full",children:[e(w,{children:h.name}),e(Y,{children:h.description}),e("div",{style:{flexGrow:1}}),i(k,{children:[e(m,{children:"Schedule"}),e(m,{children:e(A,{children:h.aps_trigger})})]}),i(k,{children:[e(m,{children:"Params"}),h.params?e(Yt,{trigger:h}):e(m,{children:e("em",{children:"No params"})})]}),i(k,{children:[i(v,{className:"justify-start",children:[e(m,{children:"Run URL"}),e(F,{size:"sm",color:"slate",icon:Pe,tooltip:"URL to run the trigger programmatically via an HTTP POST request"})]}),i(v,{className:"justify-end",children:[e("div",{className:"bg-slate-100 border-slate-300 rounded border text-slate-500 text-xs truncate px-1 py-0.5 mr-2",style:{maxWidth:200},title:M(t,r),children:M(t,r)}),e(De,{content:M(t,r)})]})]})]}),e(Ie,{subject:"Trigger",runs:[...s.data].reverse()}),e(Ee,{runs:s.data})]}),e("div",{className:"mt-6",children:e(de,{runs:s.data,pipelineId:t,triggerId:r})})]})},Zt=({logEntry:n})=>{const[t,r]=g.useState(!1);return i(v,{className:"mt-1",children:[e(N,{color:"rose",variant:"secondary",size:"xs",onClick:()=>r(!0),children:"Traceback info"}),e(W,{isOpen:t,title:"Traceback info",footer:e(N,{variant:"primary",color:"indigo",onClick:()=>{r(!1)},children:"Close"}),maxWidth:"80%",onClose:()=>r(!1),children:e("div",{className:"flex flex-col",children:e("div",{style:{minWidth:350,maxWidth:"100%",overflow:"auto",flexGrow:1,maxHeight:"70vh"},className:"p-3 my-3 bg-slate-100 rounded-md whitespace-pre font-mono",children:n.exc_info})})})]})},fe={DEBUG:"slate",INFO:"sky",WARNING:"amber",ERROR:"rose"},en=({pipeline:n,runId:t})=>{const[r,o]=g.useState({levels:[],tasks:[]}),{lastJsonMessage:s}=ee(ie().toString()),a=Z(),c=S({queryKey:["logs",t],queryFn:()=>Ot(t),enabled:!!t,initialData:[]}),u=g.useCallback(l=>{const{data:y,type:x}=l;x==="logs"&&a.setQueryData(["logs",t],(p=[])=>{const b=JSON.parse(y);return b.id=p.length,b.timestamp=new Date(b.timestamp),[...p,b]})},[t]);g.useEffect(()=>{s&&u(s)},[s]);const h=g.useCallback(l=>{o(y=>({...y,...l}))},[]);if(c.isLoading)return e("div",{children:"Loading..."});if(c.isError)return e("div",{children:"Error loading logs"});const d=c.data.filter(l=>(r.levels.length===0||r.levels.includes(l.level))&&(r.tasks.length===0||r.tasks.includes(l.task))),f=ke(n.tasks);return i(T,{children:[i(D,{numColsMd:3,className:"gap-6",children:[i("div",{children:[e(m,{children:"Tasks"}),e(me,{className:"mt-1",onValueChange:l=>{h({tasks:l})},children:n.tasks.map(l=>e(pe,{text:l.name,value:l.id},l.id))})]}),i("div",{children:[e(m,{children:"Log level"}),e(me,{className:"mt-1",onValueChange:l=>{h({levels:l})},children:Object.keys(fe).map(l=>e(pe,{text:l,value:l},l))})]})]}),e("div",{className:"logs-table",children:i(te,{className:"mt-6",children:[e(ne,{children:i(O,{children:[e(P,{children:"Time"}),e(P,{children:"Level"}),e(P,{children:"Task"}),e(P,{children:"Message"})]})}),e(re,{children:d.map((l,y)=>{const x=y!==0?l.timestamp.getTime()-d[y-1].timestamp.getTime():-1;return i(O,{children:[i(R,{children:[e("span",{className:"font-mono text-xs text-slate-500",children:Wt(l.timestamp)}),x>=0&&i("span",{className:"font-mono text-xs text-slate-500 ml-2",children:["+",x," ms"]})]}),e(R,{children:e(Ne,{size:"xs",color:fe[l.level],children:l.level})}),e(R,{children:i(v,{children:[e("div",{className:`h-2 w-2 mr-2 rounded-full ${f[l.task]}`}),l.task]})}),i(R,{children:[e(m,{children:l.message}),l.exc_info&&e(Zt,{logEntry:l})]})]},l.id)})})]})})]})},tn="modulepreload",nn=function(n){return"/"+n},ye={},rn=function(t,r,o){if(!r||r.length===0)return t();const s=document.getElementsByTagName("link");return Promise.all(r.map(a=>{if(a=nn(a),a in ye)return;ye[a]=!0;const c=a.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(!!o)for(let f=s.length-1;f>=0;f--){const l=s[f];if(l.href===a&&(!c||l.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${a}"]${u}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":tn,c||(d.as="script",d.crossOrigin=""),d.href=a,document.head.appendChild(d),c)return new Promise((f,l)=>{d.addEventListener("load",f),d.addEventListener("error",()=>l(new Error(`Unable to preload CSS for ${a}`)))})})).then(()=>t())},sn=Re.lazy(()=>rn(()=>import("./HandsonTable-763b26e1.js"),["assets/HandsonTable-763b26e1.js","assets/vendor-ccd85f8c.js","assets/HandsonTable-a8e02e84.css"])),an=({runId:n,taskId:t,open:r,onClose:o})=>{const s=S({queryKey:["getRunData",{runId:n,taskId:t}],queryFn:()=>Dt(n,t),enabled:r});return e(T,{children:i(W,{title:t,subtitle:"View data",isOpen:r,maxWidth:"90%",minWidth:"90%",footer:e(N,{variant:"secondary",color:"indigo",onClick:()=>o(),children:"Close"}),onClose:o,children:[!s.isLoading&&!s.isError&&e(g.Suspense,{fallback:e("div",{children:"Loading..."}),children:e(sn,{data:s.data,rowHeaders:!0,colHeaders:Object.keys(s.data[0]),height:"70vh",width:"100%",licenseKey:"non-commercial-and-evaluation"})}),s.isError&&(s.error.response.status===404?e(m,{children:"The task has no data"}):i(m,{color:"rose",children:["Error fetching task data: ",s.error.message]}))]})})},on=({pipeline:n,run:t})=>{const[r,o]=g.useState(),s=ke(n.tasks);return i(C,{children:[e(an,{runId:t.id,taskId:r||"",open:!!r,onClose:()=>o(void 0)}),e(w,{children:"Tasks"}),e(J,{children:n.tasks.map((a,c)=>{var u;return i(k,{className:"space-x-4",children:[t.tasks_run[c]?e(F,{variant:"light",icon:G[t.tasks_run[c].status],color:U[t.tasks_run[c].status]}):e(F,{variant:"light",icon:G.notrun,color:U.notrun}),i("div",{className:"truncate flex-grow",children:[i(v,{className:"justify-start",children:[e("div",{className:`h-2 w-2 mr-2 rounded-full ${s[a.id]}`}),e(m,{className:"truncate",children:e(A,{children:a.name})})]}),a.description&&e(m,{className:"truncate",children:a.description})]}),((u=t.tasks_run[c])==null?void 0:u.has_output)&&e(N,{variant:"light",color:"indigo",size:"xs",icon:dt,onClick:()=>o(a.id),children:"Data"})]},a.id)})})]})},cn=()=>{const{lastJsonMessage:n}=ee(ie().toString()),t=Z(),r=se(),o=r.pipelineId,s=r.triggerId,a=parseInt(r.runId);g.useEffect(()=>{if(n){const{data:p,type:b}=n;b==="run-update"&&t.invalidateQueries({queryKey:["run",o,s,a]}).catch(()=>{})}},[n,o]);const c=S({queryKey:["pipeline",o],queryFn:()=>ae(o),initialData:{id:"",name:"",description:"",tasks:[],triggers:[]},enabled:!!o}),u=S({queryKey:["run",o,s,a],queryFn:()=>kt(a),enabled:!!(o&&s&&a)}),h=c.data,f=s===j.id?j:h.triggers.find(p=>p.id===s),l=u.data;if(!l)return e("div",{children:"Run not found"});if(!f)return e("div",{children:"Trigger not found"});const y=(l.tasks_run||[]).reduce((p,b)=>p+b.duration,0),x=(l.tasks_run||[]).map(p=>p.duration/y*100);return i(Q,{header:i(T,{children:[i(w,{children:["Run #",a]}),e(ue,{pipeline:h,trigger:f,run:l})]}),children:[i(D,{numColsMd:3,className:"gap-6 mt-6",children:[e(on,{pipeline:h,run:l}),i(C,{children:[i(v,{className:"items-start",children:[e(m,{children:"Duration"}),e(Oe,{status:l.status})]}),e(v,{className:"justify-start items-baseline space-x-3 truncate",children:i(Le,{children:[(l.duration/1e3).toFixed(1),"s"]})}),e(ut,{categoryPercentageValues:x,colors:H,showLabels:!1,className:"mt-3"})]})]}),e("div",{className:"mt-6",children:e(C,{children:e(en,{pipeline:h,runId:a})})})]})},ln=({children:n})=>{const{isAuthenticated:t,isLoading:r}=ce(),o=ht();return!t&&!r?e(mt,{to:"/login",replace:!0,state:{from:o}}):e(T,{children:n})},dn=Object.assign({"./pages/index.tsx":Bt,"./pages/login.tsx":Gt,"./pages/pipelines/[pipelineId]/index.tsx":zt,"./pages/pipelines/[pipelineId]/triggers/[triggerId]/index.tsx":Jt,"./pages/pipelines/[pipelineId]/triggers/[triggerId]/runs/[runId]/index.tsx":cn}),un=Object.entries(dn).map(([n,t])=>{const r=n.slice(7).replace(/(index)?\.tsx$/,"").split("/").map(o=>o.replace(/\[(.+)\]/,":$1")).join("/");return{path:r,element:r!=="/login"?e(ln,{children:e(t,{})}):e(t,{})}}),hn=()=>e(pt,{children:un.map(n=>e(gt,{path:n.path,element:n.element},n.path))}),mn=new ft({defaultOptions:{queries:{retry:!1}}});function pn(){return e(yt,{client:mn,children:e(vt,{children:e(At,{children:e(hn,{})})})})}bt.createRoot(document.getElementById("root")).render(e(Re.StrictMode,{children:e(pn,{})}));export{e as j}; +var $e=Object.defineProperty;var Ae=(n,t,r)=>t in n?$e(n,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[t]=r;var M=(n,t,r)=>(Ae(n,typeof t!="symbol"?t+"":t,r),r);import{j as z,r as g,u as ve,a as qe,F as Me,b as _e,c as Fe,d as Ue,e as je,f as Ke,g as Ve,h as Qe,P as We,D as Xe,i as Be,k as Ge,A as C,I as w,l as Y,m as He,n as N,o as ze,U as v,p as S,q as be,s as xe,t as m,v as A,_ as Ye,W as J,$ as k,L as $,C as Je,X as Ze,S as et,w as tt,N as nt,E as rt,x as we,y as Ne,z as Z,B as Ce,G as ee,H as te,Z as ne,J as O,K as P,M as re,Q as R,O as D,R as st,T as it,V as Le,Y as at,a0 as ot,a1 as ct,a2 as se,a3 as F,a4 as Pe,a5 as he,a6 as lt,a7 as me,a8 as pe,a9 as Re,aa as dt,ab as ut,ac as ht,ad as mt,ae as pt,af as gt,ag as ft,ah as yt,ai as vt,aj as bt}from"./vendor-ccd85f8c.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const a of s)if(a.type==="childList")for(const c of a.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&o(c)}).observe(document,{childList:!0,subtree:!0});function r(s){const a={};return s.integrity&&(a.integrity=s.integrity),s.referrerPolicy&&(a.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?a.credentials="include":s.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function o(s){if(s.ep)return;s.ep=!0;const a=r(s);fetch(s.href,a)}})();const T=z.Fragment,e=z.jsx,i=z.jsxs;class xt extends Error{constructor(r,o){const s=r.status||r.status===0?r.status:"",a=r.statusText||"",c=`${s} ${a}`.trim(),u=c?`status code ${c}`:"an unknown error";super(`Request failed with ${u}`);M(this,"response");M(this,"request");this.name="HTTPError",this.response=r,this.request=o}}const wt=n=>{const t=new URLSearchParams;return Object.entries(n).forEach(([r,o])=>{o!==void 0&&t.set(r,o)}),t};class Nt{constructor(t={}){M(this,"config");var r;this.config=t,this.config.baseUrl=(r=this.config.baseUrl)==null?void 0:r.replace(/\/+$/,"")}get baseUrl(){return this.config.baseUrl}async fetch(t){let r,o;if(typeof t=="string")r=t;else{const{url:c,params:u,json:h,...d}=t;if(r=c,o=d,h&&(o.body=JSON.stringify(h),o.headers={"Content-Type":"application/json"}),u){const f=wt(u);r+=`?${f}`}}this.config.baseUrl&&(r=this.config.baseUrl+r);const s=new Request(r,{...o,credentials:"include"}),a=await fetch(s);if(!a.ok)throw new xt(a,s);return a.headers.get("Content-Type")==="application/json"?await a.json():await a.text()}async fetchForceMethod(t,r){return typeof t=="string"?this.fetch({url:t,method:r}):this.fetch({...t,method:r})}async get(t){return this.fetchForceMethod(t,"get")}async post(t){return this.fetchForceMethod(t,"post")}async put(t){return this.fetchForceMethod(t,"put")}async patch(t){return this.fetchForceMethod(t,"patch")}async delete(t){return this.fetchForceMethod(t,"delete")}}const Ct=`${window.location.protocol}//${window.location.host}/api`,K={}.VITE_API_BASE_URL||Ct,L=new Nt({baseUrl:K}),Lt=()=>L.baseUrl,Pt=async()=>await L.get("/whoami"),Rt=async()=>{await L.post("/logout")},ie=()=>{const n=new URL(K);return n.protocol="ws",n.pathname+="/ws",n},St=async()=>await L.get("/pipelines"),ae=async n=>await L.get(`/pipelines/${n}`),Tt=async n=>await L.get(`/pipelines/${n}/input-schema`),oe=async(n,t)=>{const r={pipeline_id:n,trigger_id:t},o=await L.get({url:"/runs",params:r});return o.forEach(s=>{s.start_time=new Date(s.start_time)}),o},kt=async n=>{const t=await L.get(`/runs/${n}`);return t.start_time=new Date(t.start_time),t},Ot=async n=>(await L.get(`/runs/${n}/logs`)).split(` +`).map((r,o)=>{const s=JSON.parse(r);return s.id=o,s.timestamp=new Date(s.timestamp),s}),Dt=async(n,t)=>await L.get(`/runs/${n}/data/${t}`),B=n=>`${K}/pipelines/${n}/run`,Et=n=>({async mutationFn(t){L.post({url:`/pipelines/${n}/run`,json:t})}}),_=(n,t,r=!0)=>`${r?K:""}/pipelines/${n}/triggers/${t}/run`,It=async(n,t)=>await L.post(_(n,t,!1)),Se=g.createContext({isAuthenticated:!1,isAuthenticationEnabled:!0,isLoading:!0,logout:async()=>{},user:null}),$t=(n,t)=>{switch(t.type){case"LOGIN":return{...n,isAuthenticated:!0,isAuthenticationEnabled:t.payload.isAuthenticationEnabled,user:t.payload.user};case"LOGOUT":return{...n,isAuthenticated:!1,user:null};case"POPULATE":return{...n,user:t.payload?{...n.user,...t.payload}:null};case"STOP_LOADING":return{...n,isLoading:!1};default:throw new Error("Unknown action type")}},At=({children:n})=>{const[t,r]=g.useReducer($t,{isAuthenticated:!1,isAuthenticationEnabled:!0,isLoading:!0,logout:async()=>{await Rt(),r({type:"LOGOUT"})},user:null});return g.useEffect(()=>{(async()=>{try{const{is_authentication_enabled:s,user:a}=await Pt();(s&&a||!s)&&r({type:"LOGIN",payload:{user:a,isAuthenticationEnabled:s}})}catch(s){console.error(s)}finally{r({type:"STOP_LOADING"})}})()},[]),e(Se.Provider,{value:t,children:t.isAuthenticationEnabled&&t.isLoading?"Loading...":n})},ce=()=>g.useContext(Se),qt=n=>`translate${n==="bottom"||n==="top"?"Y":"X"}(${n==="bottom"||n==="right"?"-":"+"}10%)`;function Mt({initialOpen:n=!1,placement:t="bottom",modal:r,open:o,onOpenChange:s}={}){const[a,c]=g.useState(n),[u,h]=g.useState(),[d,f]=g.useState(),l=o??a,y=s??c,x=Ue({placement:t,open:l,onOpenChange:y,whileElementsMounted:We,middleware:[Xe(5),Be({fallbackAxisSideDirection:"end"}),Ge({padding:5})]}),p=x.context,b=je(p,{enabled:o==null}),E=Ke(p),X=Ve(p),q=Qe([b,E,X]);return g.useMemo(()=>({open:l,setOpen:y,...q,...x,modal:r,labelId:u,descriptionId:d,setLabelId:h,setDescriptionId:f}),[l,y,q,x,r,u,d])}const Te=g.createContext(null),V=()=>{const n=g.useContext(Te);if(n==null)throw new Error("Popover components must be wrapped in ");return n};function _t({children:n,modal:t=!0,...r}){const o=Mt({modal:t,...r});return e(Te.Provider,{value:o,children:n})}const Ft=g.forwardRef(function({children:t,asChild:r=!1,...o},s){const a=V(),c=t.ref,u=ve([a.refs.setReference,s,c]);return r&&g.isValidElement(t)?g.cloneElement(t,a.getReferenceProps({ref:u,...o,...t.props,"data-state":a.open?"open":"closed"})):e("button",{ref:u,type:"button","data-state":a.open?"open":"closed",...a.getReferenceProps(o),children:t})}),Ut=g.forwardRef(function(t,r){const{context:o,...s}=V(),a=ve([s.refs.setFloating,r]),{isMounted:c,styles:u}=qe(o,{initial:({side:h})=>({opacity:0,transform:qt(h)})});return e(Me,{children:c&&e(_e,{context:o,modal:s.modal,children:e("div",{ref:a,style:{position:s.strategy,top:s.y??0,left:s.x??0,width:"max-content",...t.style,...u},"aria-labelledby":s.labelId,"aria-describedby":s.descriptionId,...s.getFloatingProps(t),children:t.children})})})});g.forwardRef(function({children:t,...r},o){const{setDescriptionId:s}=V(),a=Fe();return g.useLayoutEffect(()=>(s(a),()=>s(void 0)),[a,s]),e("p",{...r,ref:o,id:a,children:t})});g.forwardRef(function(t,r){const{setOpen:o}=V();return e("button",{type:"button",ref:r,...t,onClick:s=>{var a;(a=t.onClick)==null||a.call(t,s),o(!1)}})});const jt=()=>{const{logout:n,user:t}=ce();if(!t)return e("div",{children:"Not logged in"});const r=t.name.split(" "),o=r.length>1?`${r.at(0)[0]}${r.at(-1)[0]}`:r[0];return i(_t,{placement:"bottom-start",children:[e(Ft,{children:e("div",{className:"flex justify-center items-center font-medium bg-white ring-1 ring-slate-200 text-indigo-500 rounded-full ml-4 hover:ring-2 transition-shadow",style:{width:34,height:34},children:o})}),e(Ut,{children:i(C,{className:"shadow-xl",children:[e(w,{children:t.name}),e(Y,{children:t.email}),e(He,{}),e(N,{size:"xs",variant:"secondary",color:"rose",icon:ze,className:"w-full",onClick:async()=>await n(),children:"Logout"})]})})]})},Q=({children:n,header:t})=>{const{isAuthenticated:r,isAuthenticationEnabled:o}=ce();return i("div",{className:"bg-slate-50 p-6 sm:p-10 min-h-screen",children:[i(v,{className:"items-start",children:[t&&e("div",{className:"flex-grow",children:t}),r&&o&&e(jt,{})]}),e("main",{children:n})]})},W=({children:n,footer:t,isOpen:r,maxHeight:o,maxWidth:s="600px",minWidth:a="350px",subtitle:c,title:u,onClose:h})=>{const d=g.createRef();return g.useEffect(()=>{var l,y;r?(l=d.current)==null||l.showModal():(y=d.current)==null||y.close()},[r]),e("dialog",{ref:d,style:{padding:0,background:"transparent",overflow:"visible",maxHeight:o,maxWidth:s,minWidth:a},onClick:l=>{var p;var y=d.current.getBoundingClientRect(),x=y.top<=l.clientY&&l.clientY<=y.top+y.height&&y.left<=l.clientX&&l.clientX<=y.left+y.width;x||(h?h():(p=d.current)==null||p.close())},children:i(C,{children:[u&&e(w,{children:u}),c&&e(Y,{children:c}),e("div",{className:(u||c)&&"mt-6",children:n}),t&&e(v,{className:"justify-end space-x-6 mt-6",children:t})]})})},Kt=n=>{const t=s=>{if(!n.definitions)return;const a=s.split("/").pop();return n.definitions[a]},r=n.properties;if(!r)return e(m,{className:"mt-4",children:"This pipeline has no input"});const o=Object.entries(r).map(([s,a])=>{var l,y,x;if(typeof a=="boolean")return;let c=a,u;if(a.allOf){const p=a.allOf[0];if(u=(l=a.default)==null?void 0:l.toString(),p.$ref){const b=t(p.$ref);b&&(c=b)}}else if(a.$ref){const p=t(a.$ref);p&&(c=p)}else u=(y=c.default)==null?void 0:y.toString();const h=c.title||s,d=(c.enum?"enum":Array.isArray(c.type)?c.type[0]:c.type)||"string",f=(x=n.required)==null?void 0:x.includes(s);if(["number","integer"].includes(d)){const p=c.minimum||c.exclusiveMinimum,b=c.maximum||c.exclusiveMaximum;if(p!==void 0&&b!==void 0){const E=g.createRef(),X=d==="number"?(b-p)/10:1;return i("div",{children:[e(m,{children:h}),e("input",{name:s,type:"range",min:p,max:b,step:X,defaultValue:u,required:f,onInput:q=>E.current&&(E.current.value=q.target.value),className:"w-full mt-2 cursor-ew-resize appearance-none h-2 bg-slate-200 border border-slate-400 rounded"}),i(v,{className:"items-baseline space-x-4",children:[i("div",{className:"ml-1",children:[e("div",{className:"border-r border-slate-300 h-2 w-1"}),e(m,{children:p})]}),e(m,{children:e(A,{children:e("output",{ref:E,className:"px-2 py-1 rounded bg-slate-200 block truncate text-center",children:u})})}),i("div",{className:"mr-1",children:[e("div",{className:"border-r border-slate-300 h-2 w-1"}),e(m,{children:b})]})]})]},s)}else return i("div",{children:[e(m,{children:h}),e("input",{name:s,type:"number",min:p,max:b,defaultValue:u,className:"border-gray-300 rounded-md border shadow-sm px-4 py-2 text-sm font-medium invalid:border-rose-500 mt-2",style:{textAlign:"end",width:"100%"},required:f})]},s)}else return d==="enum"?i("div",{children:[e(m,{children:h}),i("select",{name:s,defaultValue:u||"",className:"border-gray-300 rounded-md border shadow-sm px-4 py-2 text-sm font-medium w-full invalid:border-rose-500 mt-2",required:f,children:[e("option",{disabled:!0,value:"",children:"Select..."}),c.enum.map(p=>e("option",{value:p.toString(),children:p==null?void 0:p.toString()},p==null?void 0:p.toString()))]})]},s):i("div",{children:[i(m,{children:[h," ",f&&"*"]}),e(Ye,{name:s,placeholder:h,defaultValue:u,className:"mt-2"})]},s)});return e("div",{className:"space-y-4",children:o})},le=({pipeline:n})=>{const[t,r]=g.useState(!1),o=S({queryKey:["pipeline-input",n.id],queryFn:()=>Tt(n.id),enabled:t}),s=be(Et(n.id));return i(T,{children:[e(N,{color:"indigo",variant:"secondary",size:"xs",icon:xe,onClick:()=>r(!0),children:"Run pipeline"}),e(W,{isOpen:t,title:`Run ${n.name} manually`,onClose:()=>r(!1),children:i("form",{method:"dialog",onSubmit:a=>{const c=Object.fromEntries(new FormData(a.target).entries());s.mutateAsync(c)},children:[o.isLoading?"Loading...":e("div",{style:{width:350},children:Kt(o.data)}),i(v,{className:"justify-end space-x-6 mt-6",children:[e(N,{variant:"secondary",color:"indigo",onClick:()=>{r(!1)},children:"Close"}),e(N,{color:"indigo",type:"submit",children:"Run"})]})]})})]})},Vt=()=>{const n=S({queryKey:["pipelines"],queryFn:St,initialData:[]});if(n.isLoading)return e("div",{children:"Loading..."});if(n.error)return e("div",{children:"An error has occurred"});const t=n.data;return i(C,{children:[e(w,{children:"Pipelines"}),e(J,{children:t.map(r=>i(k,{children:[i("div",{children:[e(m,{children:e(A,{children:e($,{to:`/pipelines/${r.id}`,children:r.name})})}),r.description&&e(m,{className:"truncate",children:r.description})]}),e(le,{pipeline:r})]},r.id))})]})},U={completed:"emerald",failed:"rose",cancelled:"slate",running:"blue",notrun:"slate",warning:"amber"},G={completed:Je,failed:Ze,cancelled:et,running:tt,notrun:nt,warning:rt},H=["cyan","violet","pink","emerald","orange","stone","fuchsia"],ke=n=>Object.fromEntries(n.map((t,r)=>[t.id,`bg-${H[r%H.length]}-500`])),Qt=n=>we(n).format("D MMM YYYY HH:mm:ss (Z[Z])"),Wt=n=>we(n).format("HH:mm:ss.SSS"),Oe=({status:n})=>e(Ne,{color:U[n],icon:G[n],children:n}),Xt=({startTime:n})=>{const[t,r]=g.useState(Date.now()-n.getTime());return g.useEffect(()=>{const o=setInterval(()=>{r(Date.now()-n.getTime())},500);return()=>{clearInterval(o)}}),e("span",{children:(t/1e3).toFixed(2)})},de=({pipelineId:n,runs:t,triggerId:r})=>{const[o,s]=g.useState(t),a=Z(),c=Ce(),{lastJsonMessage:u}=ee(ie().toString()),h=g.useCallback(d=>{const{data:f,type:l}=d;if(l==="run-update")if(f.run.start_time=new Date(f.run.start_time),f.run.trigger_id=f.trigger,f.run.status==="running")s([f.run,...o]);else{let y=[...o];const x=y.findIndex(p=>p.id===f.run.id);x>=0?y[x]=f.run:y=[f.run,...y],s(y),a.invalidateQueries({queryKey:["runs",n,r]})}},[n,a,o,r]);return g.useEffect(()=>{u&&h(u)},[u]),g.useEffect(()=>{t.length&&s(t)},[t]),i(C,{children:[e(w,{children:"Runs"}),i(te,{children:[e(ne,{children:i(O,{children:[e(P,{className:"text-right",children:"#"}),e(P,{children:"Status"}),!r&&e(P,{children:"Trigger"}),e(P,{children:"Started at"}),e(P,{className:"text-right",children:"Duration"})]})}),e(re,{children:o.map(d=>i(O,{className:"cursor-pointer hover:bg-slate-50 transition-colors",onClick:()=>c(`/pipelines/${d.pipeline_id}/triggers/${d.trigger_id}/runs/${d.id}`),children:[e(R,{className:"text-right",children:d.id}),e(R,{children:e(Oe,{status:d.status})}),!r&&e(R,{children:e($,{to:`/pipelines/${d.pipeline_id}/triggers/${d.trigger_id}`,className:"link--arrow",title:"View trigger details",onClick:f=>f.stopPropagation(),children:d.trigger_id})}),e(R,{children:e(m,{children:Qt(d.start_time)})}),i(R,{className:"text-right",children:[d.status!=="running"?(d.duration/1e3).toFixed(2):e(Xt,{startTime:d.start_time})," ","s"]})]},d.id))})]})]})},Bt=()=>{const n=S({queryKey:["runs",void 0,void 0],queryFn:()=>oe(),initialData:[]});return n.isLoading?e("div",{children:"Loading..."}):n.error?e("div",{children:"An error has occurred"}):e(Q,{header:e(T,{children:e(w,{children:"Mario Pype"})}),children:i(D,{numColsMd:2,className:"gap-6 mt-6",children:[e(Vt,{}),n.isLoading?"Loading...":n.isError?"Error loading runs":e(de,{runs:n.data})]})})},Gt=()=>e("div",{className:"h-screen flex justify-center items-center bg-slate-200",children:i(C,{className:"w-auto",children:[e("div",{className:"w-12 rounded-full mx-auto mb-4",children:e("img",{src:"/mario-pipe-flower.png",alt:"Mario Pype logo"})}),e(w,{className:"mb-6",children:"Welcome to Mario Pype"}),e(N,{onClick:()=>{location.href=`${Lt()}/login`},size:"lg",color:"indigo",className:"shadow-none w-full",children:"Login"})]})}),De=({content:n})=>{const[t,r]=g.useState(!1),o=g.useRef();return e(N,{variant:"light",color:"indigo",size:"sm",icon:t?st:it,onClick:()=>{navigator.clipboard.writeText(n),r(!0),o.current=setTimeout(()=>r(!1),3e3)}})},I=()=>e(m,{children:"/"}),ue=({pipeline:n,trigger:t,run:r})=>{if(r&&!t)throw new Error;return e("div",{className:"breadcrumbs",children:i(v,{className:"space-x-2 justify-start",children:[e(m,{children:e($,{to:"/",children:"Pipelines"})}),e(I,{}),e(m,{children:t?e($,{to:`/pipelines/${n.id}`,children:n.name}):n.name}),t&&i(T,{children:[e(I,{}),e(m,{children:"Triggers"}),e(I,{}),e(m,{children:r?e($,{to:`/pipelines/${n.id}/triggers/${t.id}`,children:t.name}):t.name})]}),r&&t&&i(T,{children:[e(I,{}),e(m,{children:"Runs"}),e(I,{}),i(m,{children:["#",r.id]})]})]})})},ge=n=>(n/1e3).toFixed(1)+" s",Ee=({runs:n})=>{const t=n.filter(o=>o.status==="completed").reverse(),r=t.reduce((o,s)=>o+s.duration,0)/t.length||0;return i(C,{children:[e(v,{className:"items-start",children:e(m,{children:"Duration"})}),e(v,{className:"justify-start items-baseline space-x-3 truncate",children:e(Le,{children:ge(r)})}),e(at,{data:t,index:"id",categories:["duration"],colors:["indigo"],valueFormatter:ge,yAxisWidth:40,showLegend:!1,autoMinValue:!0,className:"mt-6 h-28"})]})},Ie=({runs:n,subject:t})=>{var c,u;const o=n.filter(h=>h.status==="completed").length/n.length*100||0,s=(c=n[0])==null?void 0:c.start_time,a=(u=n[n.length-1])==null?void 0:u.start_time;return i(C,{children:[e(v,{children:i(w,{children:[t," health"]})}),n.length?i(T,{children:[i(v,{className:"mt-4",children:[e(m,{children:"Successful runs"}),i(m,{children:[o.toFixed(1)," %"]})]}),e(ot,{className:"mt-2",data:n.map(h=>({key:h.id,color:U[h.status],tooltip:`#${h.id} ${h.status}`}))})]}):e(m,{className:"text-center mt-8",children:i(ct,{children:["This ",t.toLowerCase()," has no runs yet"]})}),i(v,{className:"mt-2",children:[e(m,{children:s&&s.toDateString()}),e(m,{children:a&&a.toDateString()})]})]})},Ht=({pipeline:n})=>{const t=Ce();return i(C,{children:[e(w,{children:"Triggers"}),i(te,{children:[e(ne,{children:i(O,{children:[e(P,{children:"Name"}),e(P,{children:"Interval"})]})}),e(re,{children:n.triggers.map(r=>i(O,{className:"cursor-pointer hover:bg-slate-50 transition-colors",onClick:()=>t(`/pipelines/${n.id}/triggers/${r.id}`),children:[e(R,{children:r.name}),e(R,{children:e(m,{children:r.schedule})})]},r.id))})]})]})},zt=()=>{const t=se().pipelineId,r=S({queryKey:["pipeline",t],queryFn:()=>ae(t),initialData:{id:"",name:"",description:"",tasks:[],triggers:[]},enabled:!!t}),o=S({queryKey:["runs",t,void 0],queryFn:()=>oe(t),initialData:[]});if(o.isLoading||r.isLoading)return e("div",{children:"Loading..."});if(o.error||r.error)return e("div",{children:"An error has occurred"});const s=r.data;return i(Q,{header:i(v,{className:"items-start",children:[i("div",{children:[i(v,{className:"justify-start space-x-2",children:[i(w,{children:["Pipeline ",s.name]}),s.description&&i(m,{className:"truncate",children:["· ",s.description]})]}),e(ue,{pipeline:s})]}),e(le,{pipeline:s})]}),children:[i(D,{numColsMd:2,numColsLg:3,className:"gap-6 mt-6",children:[i(C,{className:"flex flex-col h-full",children:[e(w,{children:"Tasks"}),e(J,{children:s.tasks.map(a=>e(k,{children:i("div",{children:[e(m,{children:e(A,{children:a.name})}),a.description&&e(m,{className:"truncate",children:a.description})]})},a.id))}),e("div",{style:{flexGrow:1}}),i(k,{children:[i(v,{className:"justify-start",children:[e(m,{children:"Run URL"}),e(F,{size:"sm",color:"slate",icon:Pe,tooltip:"URL to run the pipeline programmatically via an HTTP POST request"})]}),i(v,{className:"justify-end",children:[e("div",{className:"bg-slate-100 border-slate-300 rounded border text-slate-500 text-xs truncate px-1 py-0.5 mr-2",style:{maxWidth:200},title:B(t),children:B(t)}),e(De,{content:B(t)})]})]})]}),e(Ie,{subject:"Pipeline",runs:[...o.data].reverse()}),e(Ee,{runs:o.data})]}),i(D,{numCols:1,numColsSm:1,numColsMd:1,numColsLg:2,className:"gap-6 mt-6",children:[e(he,{children:e(Ht,{pipeline:s})}),e(he,{children:e(de,{runs:o.data,pipelineId:t})})]})]})},Yt=({trigger:n})=>{const[t,r]=g.useState(!1);return i(T,{children:[e(N,{color:"indigo",variant:"light",size:"sm",icon:lt,onClick:()=>r(!0),children:"Show params"}),e(W,{isOpen:t,title:"Trigger params",subtitle:n.name,footer:e(N,{variant:"primary",color:"indigo",onClick:()=>{r(!1)},children:"Close"}),onClose:()=>r(!1),children:e("pre",{className:"p-3 bg-slate-100 rounded-md",children:JSON.stringify(n.params,null,2)})})]})},j={id:"_manual",name:"Manual",description:"Special trigger that identifies pipelines run manually by the user"},Jt=()=>{const n=se(),t=n.pipelineId,r=n.triggerId,o=S({queryKey:["pipeline",t],queryFn:()=>ae(t),initialData:{id:"",name:"",description:"",tasks:[],triggers:[]},enabled:!!t}),s=S({queryKey:["runs",t,r],queryFn:()=>oe(t,r),initialData:[],enabled:!!r}),a=be({mutationFn:()=>It(t,r)});if(s.isLoading||o.isLoading)return e("div",{children:"Loading..."});if(s.error||o.error)return e("div",{children:"An error has occurred"});const c=o.data,u=r===j.id,h=u?j:c.triggers.find(f=>f.id===r);if(!h)return e("div",{children:"Trigger not found"});const d=u?e(le,{pipeline:c}):e(N,{size:"xs",color:"indigo",icon:xe,onClick:()=>{a.mutateAsync()},children:"Run trigger"});return i(Q,{header:i(v,{className:"items-start",children:[i("div",{children:[i(w,{children:["Trigger ",h.name]}),e(ue,{pipeline:c,trigger:h})]}),d]}),children:[i(D,{numColsMd:2,numColsLg:3,className:"gap-6 mt-6",children:[i(C,{className:"flex flex-col h-full",children:[e(w,{children:h.name}),e(Y,{children:h.description}),e("div",{style:{flexGrow:1}}),i(k,{children:[e(m,{children:"Schedule"}),e(m,{children:e(A,{children:h.schedule})})]}),i(k,{children:[e(m,{children:"Params"}),h.params?e(Yt,{trigger:h}):e(m,{children:e("em",{children:"No params"})})]}),i(k,{children:[i(v,{className:"justify-start",children:[e(m,{children:"Run URL"}),e(F,{size:"sm",color:"slate",icon:Pe,tooltip:"URL to run the trigger programmatically via an HTTP POST request"})]}),i(v,{className:"justify-end",children:[e("div",{className:"bg-slate-100 border-slate-300 rounded border text-slate-500 text-xs truncate px-1 py-0.5 mr-2",style:{maxWidth:200},title:_(t,r),children:_(t,r)}),e(De,{content:_(t,r)})]})]})]}),e(Ie,{subject:"Trigger",runs:[...s.data].reverse()}),e(Ee,{runs:s.data})]}),e("div",{className:"mt-6",children:e(de,{runs:s.data,pipelineId:t,triggerId:r})})]})},Zt=({logEntry:n})=>{const[t,r]=g.useState(!1);return i(v,{className:"mt-1",children:[e(N,{color:"rose",variant:"secondary",size:"xs",onClick:()=>r(!0),children:"Traceback info"}),e(W,{isOpen:t,title:"Traceback info",footer:e(N,{variant:"primary",color:"indigo",onClick:()=>{r(!1)},children:"Close"}),maxWidth:"80%",onClose:()=>r(!1),children:e("div",{className:"flex flex-col",children:e("div",{style:{minWidth:350,maxWidth:"100%",overflow:"auto",flexGrow:1,maxHeight:"70vh"},className:"p-3 my-3 bg-slate-100 rounded-md whitespace-pre font-mono",children:n.exc_info})})})]})},fe={DEBUG:"slate",INFO:"sky",WARNING:"amber",ERROR:"rose"},en=({pipeline:n,runId:t})=>{const[r,o]=g.useState({levels:[],tasks:[]}),{lastJsonMessage:s}=ee(ie().toString()),a=Z(),c=S({queryKey:["logs",t],queryFn:()=>Ot(t),enabled:!!t,initialData:[]}),u=g.useCallback(l=>{const{data:y,type:x}=l;x==="logs"&&a.setQueryData(["logs",t],(p=[])=>{const b=JSON.parse(y);return b.id=p.length,b.timestamp=new Date(b.timestamp),[...p,b]})},[t]);g.useEffect(()=>{s&&u(s)},[s]);const h=g.useCallback(l=>{o(y=>({...y,...l}))},[]);if(c.isLoading)return e("div",{children:"Loading..."});if(c.isError)return e("div",{children:"Error loading logs"});const d=c.data.filter(l=>(r.levels.length===0||r.levels.includes(l.level))&&(r.tasks.length===0||r.tasks.includes(l.task))),f=ke(n.tasks);return i(T,{children:[i(D,{numColsMd:3,className:"gap-6",children:[i("div",{children:[e(m,{children:"Tasks"}),e(me,{className:"mt-1",onValueChange:l=>{h({tasks:l})},children:n.tasks.map(l=>e(pe,{text:l.name,value:l.id},l.id))})]}),i("div",{children:[e(m,{children:"Log level"}),e(me,{className:"mt-1",onValueChange:l=>{h({levels:l})},children:Object.keys(fe).map(l=>e(pe,{text:l,value:l},l))})]})]}),e("div",{className:"logs-table",children:i(te,{className:"mt-6",children:[e(ne,{children:i(O,{children:[e(P,{children:"Time"}),e(P,{children:"Level"}),e(P,{children:"Task"}),e(P,{children:"Message"})]})}),e(re,{children:d.map((l,y)=>{const x=y!==0?l.timestamp.getTime()-d[y-1].timestamp.getTime():-1;return i(O,{children:[i(R,{children:[e("span",{className:"font-mono text-xs text-slate-500",children:Wt(l.timestamp)}),x>=0&&i("span",{className:"font-mono text-xs text-slate-500 ml-2",children:["+",x," ms"]})]}),e(R,{children:e(Ne,{size:"xs",color:fe[l.level],children:l.level})}),e(R,{children:i(v,{children:[e("div",{className:`h-2 w-2 mr-2 rounded-full ${f[l.task]}`}),l.task]})}),i(R,{children:[e(m,{children:l.message}),l.exc_info&&e(Zt,{logEntry:l})]})]},l.id)})})]})})]})},tn="modulepreload",nn=function(n){return"/"+n},ye={},rn=function(t,r,o){if(!r||r.length===0)return t();const s=document.getElementsByTagName("link");return Promise.all(r.map(a=>{if(a=nn(a),a in ye)return;ye[a]=!0;const c=a.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(!!o)for(let f=s.length-1;f>=0;f--){const l=s[f];if(l.href===a&&(!c||l.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${a}"]${u}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":tn,c||(d.as="script",d.crossOrigin=""),d.href=a,document.head.appendChild(d),c)return new Promise((f,l)=>{d.addEventListener("load",f),d.addEventListener("error",()=>l(new Error(`Unable to preload CSS for ${a}`)))})})).then(()=>t())},sn=Re.lazy(()=>rn(()=>import("./HandsonTable-61c9230e.js"),["assets/HandsonTable-61c9230e.js","assets/vendor-ccd85f8c.js","assets/HandsonTable-a8e02e84.css"])),an=({runId:n,taskId:t,open:r,onClose:o})=>{const s=S({queryKey:["getRunData",{runId:n,taskId:t}],queryFn:()=>Dt(n,t),enabled:r});return e(T,{children:i(W,{title:t,subtitle:"View data",isOpen:r,maxWidth:"90%",minWidth:"90%",footer:e(N,{variant:"secondary",color:"indigo",onClick:()=>o(),children:"Close"}),onClose:o,children:[!s.isLoading&&!s.isError&&e(g.Suspense,{fallback:e("div",{children:"Loading..."}),children:e(sn,{data:s.data,rowHeaders:!0,colHeaders:Object.keys(s.data[0]),height:"70vh",width:"100%",licenseKey:"non-commercial-and-evaluation"})}),s.isError&&(s.error.response.status===404?e(m,{children:"The task has no data"}):i(m,{color:"rose",children:["Error fetching task data: ",s.error.message]}))]})})},on=({pipeline:n,run:t})=>{const[r,o]=g.useState(),s=ke(n.tasks);return i(C,{children:[e(an,{runId:t.id,taskId:r||"",open:!!r,onClose:()=>o(void 0)}),e(w,{children:"Tasks"}),e(J,{children:n.tasks.map((a,c)=>{var u;return i(k,{className:"space-x-4",children:[t.tasks_run[c]?e(F,{variant:"light",icon:G[t.tasks_run[c].status],color:U[t.tasks_run[c].status]}):e(F,{variant:"light",icon:G.notrun,color:U.notrun}),i("div",{className:"truncate flex-grow",children:[i(v,{className:"justify-start",children:[e("div",{className:`h-2 w-2 mr-2 rounded-full ${s[a.id]}`}),e(m,{className:"truncate",children:e(A,{children:a.name})})]}),a.description&&e(m,{className:"truncate",children:a.description})]}),((u=t.tasks_run[c])==null?void 0:u.has_output)&&e(N,{variant:"light",color:"indigo",size:"xs",icon:dt,onClick:()=>o(a.id),children:"Data"})]},a.id)})})]})},cn=()=>{const{lastJsonMessage:n}=ee(ie().toString()),t=Z(),r=se(),o=r.pipelineId,s=r.triggerId,a=parseInt(r.runId);g.useEffect(()=>{if(n){const{data:p,type:b}=n;b==="run-update"&&t.invalidateQueries({queryKey:["run",o,s,a]}).catch(()=>{})}},[n,o]);const c=S({queryKey:["pipeline",o],queryFn:()=>ae(o),initialData:{id:"",name:"",description:"",tasks:[],triggers:[]},enabled:!!o}),u=S({queryKey:["run",o,s,a],queryFn:()=>kt(a),enabled:!!(o&&s&&a)}),h=c.data,f=s===j.id?j:h.triggers.find(p=>p.id===s),l=u.data;if(!l)return e("div",{children:"Run not found"});if(!f)return e("div",{children:"Trigger not found"});const y=(l.tasks_run||[]).reduce((p,b)=>p+b.duration,0),x=(l.tasks_run||[]).map(p=>p.duration/y*100);return i(Q,{header:i(T,{children:[i(w,{children:["Run #",a]}),e(ue,{pipeline:h,trigger:f,run:l})]}),children:[i(D,{numColsMd:3,className:"gap-6 mt-6",children:[e(on,{pipeline:h,run:l}),i(C,{children:[i(v,{className:"items-start",children:[e(m,{children:"Duration"}),e(Oe,{status:l.status})]}),e(v,{className:"justify-start items-baseline space-x-3 truncate",children:i(Le,{children:[(l.duration/1e3).toFixed(1),"s"]})}),e(ut,{categoryPercentageValues:x,colors:H,showLabels:!1,className:"mt-3"})]})]}),e("div",{className:"mt-6",children:e(C,{children:e(en,{pipeline:h,runId:a})})})]})},ln=({children:n})=>{const{isAuthenticated:t,isLoading:r}=ce(),o=ht();return!t&&!r?e(mt,{to:"/login",replace:!0,state:{from:o}}):e(T,{children:n})},dn=Object.assign({"./pages/index.tsx":Bt,"./pages/login.tsx":Gt,"./pages/pipelines/[pipelineId]/index.tsx":zt,"./pages/pipelines/[pipelineId]/triggers/[triggerId]/index.tsx":Jt,"./pages/pipelines/[pipelineId]/triggers/[triggerId]/runs/[runId]/index.tsx":cn}),un=Object.entries(dn).map(([n,t])=>{const r=n.slice(7).replace(/(index)?\.tsx$/,"").split("/").map(o=>o.replace(/\[(.+)\]/,":$1")).join("/");return{path:r,element:r!=="/login"?e(ln,{children:e(t,{})}):e(t,{})}}),hn=()=>e(pt,{children:un.map(n=>e(gt,{path:n.path,element:n.element},n.path))}),mn=new ft({defaultOptions:{queries:{retry:!1}}});function pn(){return e(yt,{client:mn,children:e(vt,{children:e(At,{children:e(hn,{})})})})}bt.createRoot(document.getElementById("root")).render(e(Re.StrictMode,{children:e(pn,{})}));export{e as j}; diff --git a/mario/static/index.html b/mario/static/index.html index b6bfc406..f164e293 100644 --- a/mario/static/index.html +++ b/mario/static/index.html @@ -5,7 +5,7 @@ Mario Pype - + From b881527bea558660a7515218ffa69aaae76726f3 Mon Sep 17 00:00:00 2001 From: Luca Faggianelli Date: Mon, 22 May 2023 14:59:55 +0200 Subject: [PATCH 11/19] Rename mario pype to plombery --- MANIFEST.in | 2 +- README.md | 40 +-- docs/configuration.md | 22 +- docs/create-a-pipeline.md | 16 +- docs/get-started.md | 9 +- docs/index.md | 4 +- .../integrations/analytics/plausible.html | 2 +- docs/triggers.md | 4 +- examples/.gitignore | 6 +- examples/src/app.py | 8 +- examples/src/sales_pipeline.py | 2 +- examples/src/sync_pipeline.py | 2 +- frontend/index.html | 2 +- frontend/package.json | 6 +- frontend/src/pages/index.tsx | 2 +- frontend/src/pages/login.tsx | 4 +- frontend/vite.config.ts | 2 +- mario/cli.py | 48 ---- mario/static/assets/HandsonTable-61c9230e.js | 229 ------------------ mario/static/assets/HandsonTable-a8e02e84.css | 41 ---- mario/static/assets/index-6c284eea.js | 2 - mario/static/assets/index-c8f76152.css | 1 - mario/static/assets/vendor-ccd85f8c.js | 214 ---------------- mario/static/index.html | 16 -- mario/static/mario-pipe-flower.png | Bin 2068 -> 0 bytes mkdocs.yml | 6 +- {mario => plombery}/__init__.py | 6 +- {mario => plombery}/_version.py | 0 {mario => plombery}/api/__init__.py | 16 +- {mario => plombery}/api/authentication.py | 2 +- {mario => plombery}/api/middlewares.py | 0 {mario => plombery}/config.py | 6 +- {mario => plombery}/constants.py | 0 {mario => plombery}/database/__init__.py | 0 {mario => plombery}/database/base.py | 2 +- {mario => plombery}/database/models.py | 4 +- {mario => plombery}/database/repository.py | 2 +- {mario => plombery}/database/schemas.py | 2 +- {mario => plombery}/logger/__init__.py | 10 +- {mario => plombery}/logger/formatter.py | 0 .../logger/web_socket_handler.py | 2 +- {mario => plombery}/notifications/__init__.py | 8 +- {mario => plombery}/orchestrator/__init__.py | 4 +- .../orchestrator/data_storage.py | 2 +- {mario => plombery}/orchestrator/executor.py | 22 +- {mario => plombery}/pipeline/__init__.py | 0 {mario => plombery}/pipeline/_utils.py | 0 {mario => plombery}/pipeline/context.py | 4 +- {mario => plombery}/pipeline/pipeline.py | 0 {mario => plombery}/pipeline/task.py | 0 {mario => plombery}/pipeline/trigger.py | 0 {mario => plombery}/schemas.py | 0 plombery/static/.gitkeep | 0 {mario => plombery}/websocket/__init__.py | 0 setup.py | 2 +- tests/conftest.py | 12 +- tests/pipeline_1.py | 2 +- tests/test_api.py | 16 +- tests/test_logging.py | 20 +- 59 files changed, 139 insertions(+), 695 deletions(-) delete mode 100644 mario/cli.py delete mode 100644 mario/static/assets/HandsonTable-61c9230e.js delete mode 100644 mario/static/assets/HandsonTable-a8e02e84.css delete mode 100644 mario/static/assets/index-6c284eea.js delete mode 100644 mario/static/assets/index-c8f76152.css delete mode 100644 mario/static/assets/vendor-ccd85f8c.js delete mode 100644 mario/static/index.html delete mode 100644 mario/static/mario-pipe-flower.png rename {mario => plombery}/__init__.py (95%) rename {mario => plombery}/_version.py (100%) rename {mario => plombery}/api/__init__.py (93%) rename {mario => plombery}/api/authentication.py (98%) rename {mario => plombery}/api/middlewares.py (100%) rename {mario => plombery}/config.py (95%) rename {mario => plombery}/constants.py (100%) rename {mario => plombery}/database/__init__.py (100%) rename {mario => plombery}/database/base.py (93%) rename {mario => plombery}/database/models.py (95%) rename {mario => plombery}/database/repository.py (97%) rename {mario => plombery}/database/schemas.py (88%) rename {mario => plombery}/logger/__init__.py (73%) rename {mario => plombery}/logger/formatter.py (100%) rename {mario => plombery}/logger/web_socket_handler.py (87%) rename {mario => plombery}/notifications/__init__.py (86%) rename {mario => plombery}/orchestrator/__init__.py (96%) rename {mario => plombery}/orchestrator/data_storage.py (97%) rename {mario => plombery}/orchestrator/executor.py (88%) rename {mario => plombery}/pipeline/__init__.py (100%) rename {mario => plombery}/pipeline/_utils.py (100%) rename {mario => plombery}/pipeline/context.py (67%) rename {mario => plombery}/pipeline/pipeline.py (100%) rename {mario => plombery}/pipeline/task.py (100%) rename {mario => plombery}/pipeline/trigger.py (100%) rename {mario => plombery}/schemas.py (100%) create mode 100644 plombery/static/.gitkeep rename {mario => plombery}/websocket/__init__.py (100%) diff --git a/MANIFEST.in b/MANIFEST.in index fcba417f..b6e21fca 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1 +1 @@ -recursive-include mario/static * \ No newline at end of file +recursive-include plombery/static * \ No newline at end of file diff --git a/README.md b/README.md index 9330ff40..93c5922e 100644 --- a/README.md +++ b/README.md @@ -21,17 +21,17 @@
@@ -39,12 +39,12 @@ ## About The Project -Mario Pype is a simple task scheduler for Python with a web UI and a REST API, +Plombery is a simple task scheduler for Python with a web UI and a REST API, if you need to run and monitor recurring python scripts then it's the right tool for you!
- Mario Pype Screen Shot + Plombery Screen Shot
> This project is at its beginning, so it can be shaped and improved with @@ -80,7 +80,7 @@ When you shouldn't use it: ## 🚀 Getting Started -Check the 👉 [official website](https://lucafaggianelli.github.io/mario-pype/) +Check the 👉 [official website](https://lucafaggianelli.github.io/plombery/) ## 🧐 Show me the code @@ -94,7 +94,7 @@ This is how it looks a minimalist pipeline: ## 🛣 Roadmap -See the [open issues](https://github.com/lucafaggianelli/mario-pype/issues) for a full list of proposed features (and known issues). +See the [open issues](https://github.com/lucafaggianelli/plombery/issues) for a full list of proposed features (and known issues).

(back to top)

@@ -198,7 +198,7 @@ Distributed under the MIT License. See `LICENSE.txt` for more information. ## Contact -Project Link: [https://github.com/lucafaggianelli/mario-pype](https://github.com/lucafaggianelli/mario-pype) +Project Link: [https://github.com/lucafaggianelli/plombery](https://github.com/lucafaggianelli/plombery)

(back to top)

@@ -207,7 +207,7 @@ Project Link: [https://github.com/lucafaggianelli/mario-pype](https://github.com ## Acknowledgments -Mario Pype is built on top of amazing techs: +Plombery is built on top of amazing techs: * [FastAPI](https://fastapi.tiangolo.com/) * [Pydantic](https://docs.pydantic.dev/) @@ -223,16 +223,16 @@ Mario Pype is built on top of amazing techs: -[contributors-shield]: https://img.shields.io/github/contributors/lucafaggianelli/mario-pype.svg?style=for-the-badge -[contributors-url]: https://github.com/lucafaggianelli/mario-pype/graphs/contributors -[forks-shield]: https://img.shields.io/github/forks/lucafaggianelli/mario-pype.svg?style=for-the-badge -[forks-url]: https://github.com/lucafaggianelli/mario-pype/network/members -[stars-shield]: https://img.shields.io/github/stars/lucafaggianelli/mario-pype.svg?style=for-the-badge -[stars-url]: https://github.com/lucafaggianelli/mario-pype/stargazers -[issues-shield]: https://img.shields.io/github/issues/lucafaggianelli/mario-pype.svg?style=for-the-badge -[issues-url]: https://github.com/lucafaggianelli/mario-pype/issues -[license-shield]: https://img.shields.io/github/license/lucafaggianelli/mario-pype.svg?style=for-the-badge -[license-url]: https://github.com/lucafaggianelli/mario-pype/blob/master/LICENSE +[contributors-shield]: https://img.shields.io/github/contributors/lucafaggianelli/plombery.svg?style=for-the-badge +[contributors-url]: https://github.com/lucafaggianelli/plombery/graphs/contributors +[forks-shield]: https://img.shields.io/github/forks/lucafaggianelli/plombery.svg?style=for-the-badge +[forks-url]: https://github.com/lucafaggianelli/plombery/network/members +[stars-shield]: https://img.shields.io/github/stars/lucafaggianelli/plombery.svg?style=for-the-badge +[stars-url]: https://github.com/lucafaggianelli/plombery/stargazers +[issues-shield]: https://img.shields.io/github/issues/lucafaggianelli/plombery.svg?style=for-the-badge +[issues-url]: https://github.com/lucafaggianelli/plombery/issues +[license-shield]: https://img.shields.io/github/license/lucafaggianelli/plombery.svg?style=for-the-badge +[license-url]: https://github.com/lucafaggianelli/plombery/blob/master/LICENSE [product-screenshot]: images/screenshot.png [Next.js]: https://img.shields.io/badge/next.js-000000?style=for-the-badge&logo=nextdotjs&logoColor=white [Next-url]: https://nextjs.org/ diff --git a/docs/configuration.md b/docs/configuration.md index 05c4c6aa..060dccac 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1,4 +1,4 @@ -MarioPype is configurable via environmental variables, a YAML file +Plombery is configurable via environmental variables, a YAML file or even better via a combination of the 2. !!! info "Why a hybrid configuration?" @@ -8,11 +8,11 @@ or even better via a combination of the 2. configuration should be stored together with the code as they are part of the system and some parts of it are secret so you need env vars -Create a configuration file in the root of your project named `mario.config.yaml` -(or `mario.config.yml` if you prefer) and set the values you need, you should +Create a configuration file in the root of your project named `plombery.config.yaml` +(or `plombery.config.yml` if you prefer) and set the values you need, you should commit this file to the git repo: -```yaml title="mario.config.yaml" +```yaml title="plombery.config.yaml" frontend_url: https://pipelines.example.com auth: @@ -34,7 +34,7 @@ in your shell or in your hosting environment. !!! tip - By default, MarioPype will load any `.env` found in your project root. + By default, Plombery will load any `.env` found in your project root. !!! Warning @@ -54,12 +54,12 @@ MSTEAMS_WEBHOOK=msteams://TokenA/TokenB/TokenC/ !!! tip - If you're running MarioPype locally, in most cases you don't need to change + If you're running Plombery locally, in most cases you don't need to change these settings ### `database_url` -The Sqlite DB URI, by default `sqlite:///./mario.db` +The Sqlite DB URI, by default `sqlite:///./plombery.db` ### `server_url` @@ -75,13 +75,13 @@ during the frontend development. ## Notifications -MarioPype can send notifications after a pipeline has run based on the status +Plombery can send notifications after a pipeline has run based on the status of the run itself (success, failure, etc.). The notifications configuration can be defined in the YAML file as a list of [`NotificationRule`](#notificationrule)s: -```yaml title="mario.config.yaml" +```yaml title="plombery.config.yaml" notifications: # Send notifications only if the pipelines failed - pipeline_status: @@ -123,13 +123,13 @@ channel, for example: * **MS Teams** msteams://TokenA/TokenB/TokenC/ * **AWS SES** ses://user@domain/AccessKeyID/AccessSecretKey/RegionName/email1/ -Behind the scene MarioPype uses [Apprise](https://github.com/caronc/apprise), +Behind the scene Plombery uses [Apprise](https://github.com/caronc/apprise), a library to send notifications to many notification providers, so check their docs for a full list of the available channels. ## Authentication -MarioPype has a buil-in and ready-to-use authentication system +Plombery has a buil-in and ready-to-use authentication system based on OAuth providers, so you can use your corporate auth system or Google, Github, etc. diff --git a/docs/create-a-pipeline.md b/docs/create-a-pipeline.md index c9be2011..e73a5434 100644 --- a/docs/create-a-pipeline.md +++ b/docs/create-a-pipeline.md @@ -27,7 +27,7 @@ Before starting, let's define some naming so there will be no confusion! ### Create a task -A *Task* is the base block in Mario Pype and it's just a Python function that +A *Task* is the base block in Plombery and it's just a Python function that performs an action, i.e. download some data from an HTTP API, runs a query on a DB, etc. !!! info @@ -39,14 +39,14 @@ from datetime import datetime from random import randint from apscheduler.triggers.interval import IntervalTrigger -from mario import task, get_logger, Trigger, register_pipeline +from plombery import task, get_logger, Trigger, register_pipeline @task async def fetch_raw_sales_data(): """Fetch latest 50 sales of the day""" - # using MarioPype logger your logs will be stored + # using Plombery logger your logs will be stored # and accessible on the web UI logger = get_logger() @@ -98,7 +98,7 @@ Finally add this at the bottom of your file to start the app: if __name__ == "__main__": import uvicorn - uvicorn.run("mario:get_app", reload=True, factory=True) + uvicorn.run("plombery:get_app", reload=True, factory=True) ``` Now your `src/app.py` should look like this: @@ -110,14 +110,14 @@ Now your `src/app.py` should look like this: from random import randint from apscheduler.triggers.interval import IntervalTrigger - from mario import task, get_logger, Trigger, register_pipeline + from plombery import task, get_logger, Trigger, register_pipeline @task async def fetch_raw_sales_data(): """Fetch latest 50 sales of the day""" - # using MarioPype logger your logs will be stored + # using Plombery logger your logs will be stored # and accessible on the web UI logger = get_logger() @@ -157,13 +157,13 @@ Now your `src/app.py` should look like this: if __name__ == "__main__": import uvicorn - uvicorn.run("mario:get_app", reload=True, factory=True) + uvicorn.run("plombery:get_app", reload=True, factory=True) ``` ### Run the app -Mario Pype is based on FastAPI so you can run it as a normal FastAPI app +Plombery is based on FastAPI so you can run it as a normal FastAPI app via `uvicorn` (as in this example) or another ASGI web server. So install `uvicorn` and run the app: diff --git a/docs/get-started.md b/docs/get-started.md index 78763367..ff153f13 100644 --- a/docs/get-started.md +++ b/docs/get-started.md @@ -1,6 +1,6 @@ ## Prerequisites -To run Mario Pype you only need Python (v3.8 or later), if you don't have it installed yet, go +To run Plombery you only need Python (v3.8 or later), if you don't have it installed yet, go to the [official Python website](https://www.python.org/downloads/), download it and install it. @@ -32,13 +32,8 @@ source .venv/bin/activate Then install the library: -!!! info - - Mario Pype is not published yet on pypi.org, that's why you need to install it - from git! - ```sh -pip install git+https://github.com/lucafaggianelli/mario-pype +pip install plombery ``` Now you're ready to write your first pipeline! diff --git a/docs/index.md b/docs/index.md index 1383aaa6..bac6e819 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,7 +3,7 @@ hide: - toc --- -# Mario Pype +# Plombery An ⚖️ open source (MIT license) task scheduler for Python with a web UI and a REST API. @@ -20,4 +20,4 @@ If you need to run and monitor recurring python scripts then it's the right tool * 📩 Monitor the pipelines and get alerted if something goes wrong * 💣 Use the REST API for advanced integrations -![Mario Pype Screen Shot](assets/images/screenshot.png) +![Plombery Screen Shot](assets/images/screenshot.png) diff --git a/docs/overrides/partials/integrations/analytics/plausible.html b/docs/overrides/partials/integrations/analytics/plausible.html index 791c237a..f144ae73 100644 --- a/docs/overrides/partials/integrations/analytics/plausible.html +++ b/docs/overrides/partials/integrations/analytics/plausible.html @@ -1 +1 @@ - + diff --git a/docs/triggers.md b/docs/triggers.md index 5a1d5eab..2be6134e 100644 --- a/docs/triggers.md +++ b/docs/triggers.md @@ -48,14 +48,14 @@ just pass the parameters as JSON body in the HTTP request. ## Schedules Scheduling a pipeline is probably the first thing you're looking for -when using Mario Pype. It's very easy, just add 1 or more triggers +when using Plombery. It's very easy, just add 1 or more triggers when registering a pipeline, (the `triggers` argument must be a list even if you only have 1 trigger). The actual schedule is defined via the `schedule` argument: ```py hl_lines="1 7-15" from apscheduler.triggers.interval import IntervalTrigger -from mario import register_pipeline, Trigger +from plombery import register_pipeline, Trigger register_pipeline( id="sales_pipeline", diff --git a/examples/.gitignore b/examples/.gitignore index 0c0b27bb..17a5fabd 100644 --- a/examples/.gitignore +++ b/examples/.gitignore @@ -1,4 +1,4 @@ .data/ -mario.config.yml -mario.config.yaml -mario.db +plombery.config.yml +plombery.config.yaml +plombery.db diff --git a/examples/src/app.py b/examples/src/app.py index b7f05728..930fdd45 100644 --- a/examples/src/app.py +++ b/examples/src/app.py @@ -2,7 +2,7 @@ Run via the run.sh or run.ps1 script """ -from mario import get_app # noqa: F401 +from plombery import get_app # noqa: F401 from examples.src import sales_pipeline, sync_pipeline # noqa: F401 @@ -10,7 +10,7 @@ if __name__ == "__main__": import uvicorn - # `reload_dirs` is used to reload when the mario package itself changes - # this is useful during development of the mario package, normally shouldn't + # `reload_dirs` is used to reload when the plombery package itself changes + # this is useful during development of the plombery package, normally shouldn't # be used - uvicorn.run("mario:get_app", reload=True, factory=True, reload_dirs="..") + uvicorn.run("plombery:get_app", reload=True, factory=True, reload_dirs="..") diff --git a/examples/src/sales_pipeline.py b/examples/src/sales_pipeline.py index 96423f2e..3a8e85b4 100644 --- a/examples/src/sales_pipeline.py +++ b/examples/src/sales_pipeline.py @@ -7,7 +7,7 @@ import pandas as pd from pydantic import BaseModel -from mario import register_pipeline, task, Trigger, get_logger +from plombery import register_pipeline, task, Trigger, get_logger class InputParams(BaseModel): diff --git a/examples/src/sync_pipeline.py b/examples/src/sync_pipeline.py index 7ef08c95..a894bf7e 100644 --- a/examples/src/sync_pipeline.py +++ b/examples/src/sync_pipeline.py @@ -1,6 +1,6 @@ import time -from mario import register_pipeline, task +from plombery import register_pipeline, task @task diff --git a/frontend/index.html b/frontend/index.html index 41ec9ca5..decbd269 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,7 +4,7 @@ - Mario Pype + Plombery
diff --git a/frontend/package.json b/frontend/package.json index c24964f7..b4f65c0c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,16 +1,16 @@ { - "name": "mario-pype", + "name": "plombery", "version": "0.2.0", "description": "", "license": "MIT", "author": { "name": "Luca Faggianelli", "email": "luca@velvetlab.tech", - "url": "https://github.com/lucafaggianelli/mario-pype" + "url": "https://github.com/lucafaggianelli/plombery" }, "repository": { "type": "git", - "url": "https://github.com/lucafaggianelli/mario-pype" + "url": "https://github.com/lucafaggianelli/plombery" }, "type": "module", "scripts": { diff --git a/frontend/src/pages/index.tsx b/frontend/src/pages/index.tsx index 7eb92741..83d82e88 100644 --- a/frontend/src/pages/index.tsx +++ b/frontend/src/pages/index.tsx @@ -21,7 +21,7 @@ const HomePage: React.FC = () => { - Mario Pype + Plombery } > diff --git a/frontend/src/pages/login.tsx b/frontend/src/pages/login.tsx index 7ca36a67..228ac667 100644 --- a/frontend/src/pages/login.tsx +++ b/frontend/src/pages/login.tsx @@ -7,10 +7,10 @@ const LoginPage: React.FC = () => {
- Mario Pype logo + Plombery logo
- Welcome to Mario Pype + Welcome to Plombery