diff --git a/.github/release.yml b/.github/release.yml index 957c8b64f01b6..65bef5f17df68 100644 --- a/.github/release.yml +++ b/.github/release.yml @@ -1,34 +1,29 @@ # .github/release.yml changelog: - exclude: - labels: - - maintenance categories: - - title: Breaking Changes + - title: Breaking Changes โš ๏ธ labels: - breaking - - title: Exciting New Features ๐ŸŽ‰ + - deprecation + - title: New Features ๐ŸŽ‰ labels: - feature - - title: Enhancements - labels: - enhancement - - title: Fixes + - title: Bug Fixes ๐Ÿž labels: - fix - - title: Experimental + - bug + - title: Experimental ๐Ÿ”ฌ labels: - experimental - - title: Deprecations - labels: - - deprecation - - title: Documentation + - title: Integrations & Dependencies ๐Ÿค labels: - - docs - - title: Collections + - integrations + - upstream dependency + - title: Development & Tidiness ๐Ÿงน labels: - - collections + - development - title: Uncategorized labels: - "*" \ No newline at end of file diff --git a/.github/workflows/create-tags-for-changed-integrations.yaml b/.github/workflows/create-tags-for-changed-integrations.yaml deleted file mode 100644 index 9a67d3460e809..0000000000000 --- a/.github/workflows/create-tags-for-changed-integrations.yaml +++ /dev/null @@ -1,41 +0,0 @@ -name: Create tags for changed integrations - -on: - release: - types: [published] - workflow_dispatch: - -permissions: {} -jobs: - create-integrations-tags: - runs-on: ubuntu-latest - permissions: - contents: write - - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -U packaging gh-util - - - name: Get previous tag - id: get-previous-tag - run: echo "tag=$(git tag --list '[0-9]*' --sort=-version:refname | grep -v '2.82' | head -n 2 | tail -n 1)" >> $GITHUB_OUTPUT - - - name: Push tags for changed integrations - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - PREVIOUS_TAG: ${{ steps.get-previous-tag.outputs.tag }} - CURRENT_COMMIT: ${{ github.sha }} - - run: python scripts/create_tags_for_changed_collections.py diff --git a/.github/workflows/python-tests.yaml b/.github/workflows/python-tests.yaml index 1705296544ca2..6b778847fc9a7 100644 --- a/.github/workflows/python-tests.yaml +++ b/.github/workflows/python-tests.yaml @@ -182,43 +182,6 @@ jobs: && docker container logs postgres || echo "Ignoring bad exit code" - notify-tests-failing-on-main: - needs: run-tests - if: github.ref == 'refs/heads/main' && failure() - runs-on: ubuntu-latest - env: - FAILURE_THRESHOLD: 1 - steps: - - name: Download all failure flags - uses: actions/download-artifact@v4 - with: - path: failure-flags/ - - - name: Check for failure flags - id: check_failure - run: | - failure_count=$(ls -1q failure-flags/*/*.txt | wc -l) - - if [ $failure_count -gt $FAILURE_THRESHOLD ]; then - too_many_tests_failed="true" - else - too_many_tests_failed="false" - fi - echo "failure_count=$failure_count" >> $GITHUB_OUTPUT - echo "too_many_tests_failed=$too_many_tests_failed" >> $GITHUB_OUTPUT - - - name: Send Slack Notification - if: ${{ steps.check_failure.outputs.too_many_tests_failed == 'true' }} - uses: 8398a7/action-slack@v3 - with: - author_name: Prefect OSS Tests Failing on Main - channel: CBH18KG8G # This is #engineering - fields: message,commit,author,workflowRun - status: failure - text: ":warning: Unit tests are failing in Prefect's main branch. Commit author: please either fix or remove the failing tests. If you remove the failing tests create a GitHub issue with the details." - env: - SLACK_WEBHOOK_URL: ${{ secrets.ENGINEERING_REVIEW_SLACK_WEBHOOK_URL }} - run-docker-tests: runs-on: group: oss-larger-runners diff --git a/docs/3.0rc/api-ref/rest-api/server/schema.json b/docs/3.0rc/api-ref/rest-api/server/schema.json index 855c4413560f0..6434d946620ee 100644 --- a/docs/3.0rc/api-ref/rest-api/server/schema.json +++ b/docs/3.0rc/api-ref/rest-api/server/schema.json @@ -21688,11 +21688,6 @@ "title": "Prefect Home", "default": "~/.prefect" }, - "PREFECT_EXTRA_ENTRYPOINTS": { - "type": "string", - "title": "Prefect Extra Entrypoints", - "default": "" - }, "PREFECT_DEBUG_MODE": { "type": "boolean", "title": "Prefect Debug Mode", @@ -22381,11 +22376,6 @@ "title": "Prefect Task Scheduling Pending Task Timeout", "default": "PT0S" }, - "PREFECT_EXPERIMENTAL_DISABLE_SYNC_COMPAT": { - "type": "boolean", - "title": "Prefect Experimental Disable Sync Compat", - "default": false - }, "PREFECT_EXPERIMENTAL_ENABLE_SCHEDULE_CONCURRENCY": { "type": "boolean", "title": "Prefect Experimental Enable Schedule Concurrency", diff --git a/scripts/create_tags_for_changed_collections.py b/scripts/create_tags_for_changed_collections.py deleted file mode 100644 index 9c75675243505..0000000000000 --- a/scripts/create_tags_for_changed_collections.py +++ /dev/null @@ -1,109 +0,0 @@ -import asyncio -import os -import subprocess -import sys -from pathlib import Path -from typing import Dict, List - -from gh_util.functions import create_repo_tag -from gh_util.types import GitHubTagger -from packaging.version import Version - -INTEGRATIONS_BASEPATH = "src/integrations" -OWNER = "prefecthq" -REPO = "prefect" - - -def get_changed_files(previous_tag: str, current_commit: str) -> List[str]: - cmd = f"git diff --name-only {previous_tag}..{current_commit}" - output = subprocess.check_output(cmd, shell=True, text=True) - return output.strip().split("\n") - - -def increment_patch_version(version: str) -> str: - v = Version(version) - return f"{v.major}.{v.minor}.{v.micro + 1}" - - -async def get_changed_integrations( - changed_files: List[str], glob_pattern: str -) -> Dict[str, str]: - integrations_base_path = Path(INTEGRATIONS_BASEPATH) - changed_integrations = {} - modified_integrations_files = [ - file_path - for file_path in changed_files - if Path(file_path).match(glob_pattern) - and integrations_base_path in Path(file_path).parents - and Path(file_path).parent.name.startswith("prefect_") - ] - for file_path in modified_integrations_files: - path = Path(file_path) - integration_name = path.parent.name.replace("_", "-") - command = f"git tag --list 'prefect-*' --sort=-version:refname | grep -E '^{integration_name}-' | head -n 1" - try: - latest_tag = subprocess.check_output(command, shell=True, text=True).strip() - latest_ref = latest_tag.split("-")[-1] - print(f"Latest ref for {integration_name}: {latest_ref}") - except subprocess.CalledProcessError: - print(f"No tags found for {integration_name}") - continue - - changed_integrations[integration_name] = increment_patch_version(latest_ref) - - print(changed_integrations) - - return changed_integrations - - -async def create_tags(changed_integrations: Dict[str, str], dry_run: bool = False): - for integration_name, version in changed_integrations.items(): - tag_name = f"{integration_name}-{version}".replace("_", "-") - if dry_run: - print(f"Would create tag {tag_name} for integration {integration_name}") - continue - - github_actor = os.environ.get("GITHUB_ACTOR", "github-bot") - - await create_repo_tag( - owner=OWNER, - repo=REPO, - tag_name=tag_name, - commit_sha=os.environ.get("CURRENT_COMMIT", ""), - message=f"Release {integration_name} {version}", - # we need to pass a specific tagger here, because - # the underlying function tries to use the inferred GITHUB_TOKEN - # to pull user metadata via GET /user - this is returning - # a 403, as Automatic Token users don't have the ability - # to be assigned the `user` scope - # https://docs.github.com/en/rest/users/users?apiVersion=2022-11-28#get-the-authenticated-user - # https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs - tagger=GitHubTagger( - name=github_actor, - email=f"{github_actor}@users.noreply.github.com", - ), - ) - - -async def main(glob_pattern: str = "**/*.py", dry_run: bool = False): - previous_tag = os.environ.get("PREVIOUS_TAG", "") - current_commit = os.environ.get("CURRENT_COMMIT", "") - - if not previous_tag or not current_commit: - raise ValueError( - "Error: `PREVIOUS_TAG` or `CURRENT_COMMIT` environment variable is missing." - ) - - changed_files = get_changed_files(previous_tag, current_commit) - - if changed_integrations := await get_changed_integrations( - changed_files, glob_pattern - ): - await create_tags(changed_integrations, dry_run=dry_run) - - -if __name__ == "__main__": - glob_pattern = sys.argv[1] if len(sys.argv) > 1 else "**/*.py" - dry_run = sys.argv[2] == "--dry-run" if len(sys.argv) > 2 else False - - asyncio.run(main(glob_pattern=glob_pattern, dry_run=dry_run)) diff --git a/scripts/generate-release-notes.py b/scripts/generate-release-notes.py deleted file mode 100755 index 108093f1126e5..0000000000000 --- a/scripts/generate-release-notes.py +++ /dev/null @@ -1,315 +0,0 @@ -#!/usr/bin/env python3 -""" -This script generates release notes using the GitHub Release API then prints it to -standard output. You must be logged into GitHub using the `gh` CLI tool or provide a -GitHub token via `GITHUB_TOKEN` environment variable. - -Usage: - - generate-release-notes.py [] [] [] - -The release tag defaults to `preview` but often should be set to the new version: - - generate-release-notes.py "2.3.0" - -The target defaults to `main` but can be set to a different commit or branch: - - generate-release-notes.py "2.3.0" "my-test-branch" - -The previous tag defaults to the last tag, but can be set to a different tag to view -release notes for a different release. In this case, the target must be provided too. - - generate-release-notes.py "2.3.3" "main" "2.3.2" -""" - -import os -import re -import shutil -import subprocess -import sys -from datetime import datetime -from typing import List, Optional - -import httpx - -REPO_ORG = "PrefectHQ" -REPO_NAMES = [ - "prefect", - "prefect-ui-library", - "prefect-azure", - "prefect-aws", - "prefect-gcp", -] -DEFAULT_TAG = "preview" - -TOKEN_REGEX = re.compile(r"\s* Token:\s(.*)") -ENTRY_REGEX = re.compile(r"^\* (.*) by @(.*) in (.*)$", re.MULTILINE) - -# TODO: Make this dynamic -PREFECTIONISTS = { - "aaazzam", - "abrookins", - "aimeemcmanus", - "arhead7", - "biancaines", - "billpalombi", - "bunchesofdonald", - "chrisguidry", - "cicdw", - "collincchoy", - "daniel-prefect", - "desertaxle", - "djsauble", - "discdiver", - "dylanbhughes", - "EmilRex", - "gabcoyne", - "jakekaplan", - "jeanluciano", - "jimid27", - "jlowin", - "justin-prefect", - "LarryUllman", - "kevingrismore", - "marvin-robot", - "masonmenges", - "neha-julka", - "parkedwards", - "pleek91", - "prefectcboyd", - "robfreedy", - "Sahiler", - "sarahbanana09", - "sarahmk125", - "seanpwlms", - "SMPrefect", - "taylor-curran", - "tess-dicker", - "thomas-te", - "WillRaphaelson", - "zangell44", - "zhen0", - "znicholasbrown", - "zzstoatzz", -} - - -def get_latest_repo_release_date(repo_org: str, repo_name: str) -> datetime: - """ - Retrieve the latest release date for a repository. - """ - response = httpx.get( - f"https://api.github.com/repos/{repo_org}/{repo_name}/releases/latest" - ) - if response.status_code == 200: - release_date_str = response.json()["published_at"] - return datetime.fromisoformat(release_date_str.replace("Z", "+00:00")) - raise Exception( - f"Failed to retrieve latest {repo_name} release date: {response.json()}" - ) - - -def get_latest_and_previous_releases( - repo_org: str, repo_name: str, github_token: str -) -> tuple: - """ - Retrieves the latest and the previous release tags for the specified repository. - """ - - headers = { - "Authorization": f"Bearer {github_token}", - "Accept": "application/vnd.github.v3+json", - } - response = httpx.get( - f"https://api.github.com/repos/{repo_org}/{repo_name}/releases", headers=headers - ) - response.raise_for_status() - releases = response.json() - - if not releases: - raise Exception(f"No releases found for {repo_name}") - - # sort releases by published date - releases = sorted(releases, key=lambda x: x["published_at"], reverse=True) - - latest_tag = releases[0]["tag_name"] - previous_tag = releases[1]["tag_name"] if len(releases) > 1 else None - - return latest_tag, previous_tag - - -def generate_release_notes( - repo_org: str, - repo_names: List[str], - tag_name: str, - github_token: str, - target_commit: str, - previous_tag: Optional[str] = None, -): - """ - Generate release notes using the GitHub API. - """ - integrations_section = [] - - latest_prefect_release_date = get_latest_repo_release_date(repo_org, "prefect") - - for repo_name in repo_names: - if latest_prefect_release_date: - latest_repo_release_date = get_latest_repo_release_date(repo_org, repo_name) - - repo_has_release_since_latest_prefect_release = ( - latest_repo_release_date >= latest_prefect_release_date - ) - if not repo_has_release_since_latest_prefect_release: - continue - - if repo_name != "prefect": - tag_name, previous_tag = get_latest_and_previous_releases( - repo_org, repo_name, github_token - ) - - request = {"tag_name": tag_name, "target_commitish": target_commit} - if previous_tag: - request["previous_tag_name"] = previous_tag - - response = httpx.post( - f"https://api.github.com/repos/{repo_org}/{repo_name}/releases/generate-notes", - headers={ - "Accept": "application/vnd.github+json", - "Authorization": f"Bearer {github_token}", - }, - json=request, - ) - if not response.status_code == 200: - print( - f"Received status code {response.status_code} from GitHub API:", - file=sys.stderr, - ) - print(response.json(), file=sys.stderr) - exit(1) - - release_notes = response.json()["body"] - - if repo_name == "prefect": - # Drop the first line of the release notes ("## What's Changed") - release_notes = "\n".join(release_notes.splitlines()[1:]) - # Add newlines before all categories - release_notes = release_notes.replace("\n###", "\n\n###") - # Update 'what's new' to 'release tag' - release_notes = release_notes.replace( - "## What's Changed", f"## Release {tag_name}" - ) - # Parse all entries - entries = ENTRY_REGEX.findall(release_notes) - # Generate a contributors section - contributors = "" - for contributor in sorted(set(user for _, user, _ in entries)): - if contributor not in PREFECTIONISTS: - contributors += f"\n- @{contributor}" - - # Replace the heading of the existing contributors section; append contributors - release_notes = release_notes.replace( - "\n**Full Changelog**:", - "### Contributors" + contributors + "\n\n**All changes**:", - ) - # Strip contributors from individual entries - release_notes = ENTRY_REGEX.sub( - lambda match: f"- {match.group(1)} โ€” {match.group(3)}", - release_notes, - ) - prefect_release_notes = release_notes - - else: - # Drop the first line of the release notes ("## What's Changed") - # and drop the change preview and the contributors sections - release_notes = "\n".join(release_notes.splitlines()[1:]) - # Add newlines before all categories - release_notes = release_notes.replace("\n###", "\n\n###") - # Parse all entries - entries = ENTRY_REGEX.findall(release_notes) - - # Strip contributors from individual entries - release_notes = ENTRY_REGEX.sub( - lambda match: f"- {match.group(1)} โ€” {match.group(3)}", - release_notes, - ) - - # we won't include the full changelog and integrations contributors - search_strings = [ - "## New Contributors", - "## Contributors", - "**Full Changelog**", - ] - indices = [release_notes.find(s) for s in search_strings] - indices = [i for i in indices if i != -1] - - if indices: - split_index = min(indices) - changelog = release_notes[:split_index].strip() - else: - changelog = release_notes.strip() - - integrations_section.append(changelog) - - if integrations_section != [""]: - parts = prefect_release_notes.split("### Contributors") - # ensure that Integrations section is before Contributors - # Print all accumulated non-Prefect changes under "Integrations" - integrations_heading = "### Integrations\n" + "\n".join(integrations_section) - - prefect_release_notes = ( - parts[0] + integrations_heading + "\n\n### Contributors" + parts[1] - ) - - print(prefect_release_notes) - - -def get_github_token() -> str: - """ - Retrieve the current GitHub token from the `gh` CLI. - """ - if "GITHUB_TOKEN" in os.environ: - return os.environ["GITHUB_TOKEN"] - - if not shutil.which("gh"): - print( - "You must provide a GitHub access token via GITHUB_TOKEN or have the gh CLI" - " installed." - ) - exit(1) - - gh_auth_status = subprocess.run( - ["gh", "auth", "status", "--show-token"], capture_output=True - ) - output = gh_auth_status.stdout.decode() - if not gh_auth_status.returncode == 0: - print( - "Failed to retrieve authentication status from GitHub CLI:", file=sys.stderr - ) - print(output, file=sys.stderr) - exit(1) - - match = TOKEN_REGEX.search(output) - if not match: - print( - ( - "Failed to find token in GitHub CLI output with regex" - f" {TOKEN_REGEX.pattern!r}:" - ), - file=sys.stderr, - ) - print(output, file=sys.stderr) - exit(1) - - return match.groups()[0] - - -if __name__ == "__main__": - generate_release_notes( - REPO_ORG, - REPO_NAMES, - tag_name=sys.argv[1] if len(sys.argv) > 1 else DEFAULT_TAG, - target_commit=sys.argv[2] if len(sys.argv) > 2 else "main", - previous_tag=sys.argv[3] if len(sys.argv) > 3 else None, - github_token=get_github_token(), - ) diff --git a/src/prefect/settings.py b/src/prefect/settings.py index 0fb08728270e2..4364508f6423d 100644 --- a/src/prefect/settings.py +++ b/src/prefect/settings.py @@ -481,18 +481,6 @@ def default_cloud_ui_url(settings, value): directory may be created automatically when required. """ -PREFECT_EXTRA_ENTRYPOINTS = Setting( - str, - default="", -) -""" -Modules for Prefect to import when Prefect is imported. - -Values should be separated by commas, e.g. `my_module,my_other_module`. -Objects within modules may be specified by a ':' partition, e.g. `my_module:my_object`. -If a callable object is provided, it will be called with no arguments on import. -""" - PREFECT_DEBUG_MODE = Setting( bool, default=False, @@ -1438,11 +1426,6 @@ def default_cloud_ui_url(settings, value): PENDING for a while is a sign that the task worker may have crashed. """ -PREFECT_EXPERIMENTAL_DISABLE_SYNC_COMPAT = Setting(bool, default=False) -""" -Whether or not to disable the sync_compatible decorator utility. -""" - PREFECT_EXPERIMENTAL_ENABLE_SCHEDULE_CONCURRENCY = Setting(bool, default=False) # Defaults ----------------------------------------------------------------------------- diff --git a/src/prefect/utilities/asyncutils.py b/src/prefect/utilities/asyncutils.py index 99aa5cfd5b3ef..5832fd3440aa6 100644 --- a/src/prefect/utilities/asyncutils.py +++ b/src/prefect/utilities/asyncutils.py @@ -354,11 +354,8 @@ def coroutine_wrapper( *args: Any, _sync: Optional[bool] = None, **kwargs: Any ) -> Union[R, Coroutine[Any, Any, R]]: from prefect.context import MissingContextError, get_run_context - from prefect.settings import ( - PREFECT_EXPERIMENTAL_DISABLE_SYNC_COMPAT, - ) - if PREFECT_EXPERIMENTAL_DISABLE_SYNC_COMPAT or _sync is False: + if _sync is False: return async_fn(*args, **kwargs) is_async = True diff --git a/tests/utilities/test_asyncutils.py b/tests/utilities/test_asyncutils.py index 26a7046e94a4f..a331eacdb37f5 100644 --- a/tests/utilities/test_asyncutils.py +++ b/tests/utilities/test_asyncutils.py @@ -1,5 +1,4 @@ import asyncio -import inspect import threading import uuid from contextlib import asynccontextmanager, contextmanager @@ -11,10 +10,6 @@ from prefect._internal.concurrency.threads import get_run_sync_loop from prefect.context import ContextModel -from prefect.settings import ( - PREFECT_EXPERIMENTAL_DISABLE_SYNC_COMPAT, - temporary_settings, -) from prefect.utilities.asyncutils import ( GatherIncomplete, LazySemaphore, @@ -223,12 +218,6 @@ async def test_sync_compatible_call_from_async(fn): assert await fn(1, y=2) == 6 -@pytest.mark.parametrize("fn", SYNC_COMPAT_TEST_CASES) -def test_sync_compatible_is_disabled_by_flag(fn): - with temporary_settings({PREFECT_EXPERIMENTAL_DISABLE_SYNC_COMPAT: True}): - assert inspect.isawaitable(fn(1, y=2)) - - async def test_sync_compatible_call_from_sync_in_async_thread(): # Here we are in the async main thread diff --git a/ui/package-lock.json b/ui/package-lock.json index fb1b6c1740f93..1112f98034ba7 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -9,7 +9,7 @@ "version": "2.8.0", "dependencies": { "@prefecthq/prefect-design": "2.11.6", - "@prefecthq/prefect-ui-library": "3.5.3", + "@prefecthq/prefect-ui-library": "3.5.5", "@prefecthq/vue-charts": "2.0.4", "@prefecthq/vue-compositions": "1.11.4", "@types/lodash.debounce": "4.0.9", @@ -17,19 +17,19 @@ "lodash.debounce": "4.0.8", "lodash.merge": "^4.6.2", "tailwindcss": "3.4.6", - "vue": "3.4.33", + "vue": "3.4.34", "vue-router": "4.4.0" }, "devDependencies": { "@prefecthq/eslint-config": "1.0.32", "@types/lodash.merge": "^4.6.9", - "@vitejs/plugin-vue": "5.0.5", + "@vitejs/plugin-vue": "5.1.0", "autoprefixer": "10.4.19", "eslint": "^8.57.0", "ts-node": "10.9.2", - "typescript": "^5.5.3", - "vite": "5.3.4", - "vue-tsc": "^2.0.26" + "typescript": "^5.5.4", + "vite": "5.3.5", + "vue-tsc": "^2.0.29" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -1080,9 +1080,9 @@ } }, "node_modules/@prefecthq/prefect-ui-library": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@prefecthq/prefect-ui-library/-/prefect-ui-library-3.5.3.tgz", - "integrity": "sha512-/+j/0faeoKjqGWMBdEH7JxY+K8vjtu4g6OulKqlVViO8M/OnL2WolOHfRf6aSSPYte0FBL8Jor7WOghSxSzbAA==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@prefecthq/prefect-ui-library/-/prefect-ui-library-3.5.5.tgz", + "integrity": "sha512-3Daxdd6EBnswADienW7GaEBibfp52lFwz+2t3s+STiM0lcObsnfIHTWyjRcFoJTN+6FH8zEjI/DJPxyNwRNvfw==", "dependencies": { "@prefecthq/graphs": "2.4.0", "axios": "1.6.7", @@ -1749,9 +1749,9 @@ "dev": true }, "node_modules/@vitejs/plugin-vue": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.5.tgz", - "integrity": "sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.0.tgz", + "integrity": "sha512-QMRxARyrdiwi1mj3AW4fLByoHTavreXq0itdEW696EihXglf1MB3D4C2gBvE0jMPH29ZjC3iK8aIaUMLf4EOGA==", "dev": true, "engines": { "node": "^18.0.0 || >=20.0.0" @@ -1762,62 +1762,62 @@ } }, "node_modules/@volar/language-core": { - "version": "2.4.0-alpha.15", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.15.tgz", - "integrity": "sha512-mt8z4Fm2WxfQYoQHPcKVjLQV6PgPqyKLbkCVY2cr5RSaamqCHjhKEpsFX66aL4D/7oYguuaUw9Bx03Vt0TpIIA==", + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.18.tgz", + "integrity": "sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==", "dev": true, "dependencies": { - "@volar/source-map": "2.4.0-alpha.15" + "@volar/source-map": "2.4.0-alpha.18" } }, "node_modules/@volar/source-map": { - "version": "2.4.0-alpha.15", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.15.tgz", - "integrity": "sha512-8Htngw5TmBY4L3ClDqBGyfLhsB8EmoEXUH1xydyEtEoK0O6NX5ur4Jw8jgvscTlwzizyl/wsN1vn0cQXVbbXYg==", + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.18.tgz", + "integrity": "sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==", "dev": true }, "node_modules/@volar/typescript": { - "version": "2.4.0-alpha.15", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.15.tgz", - "integrity": "sha512-U3StRBbDuxV6Woa4hvGS4kz3XcOzrWUKgFdEFN+ba1x3eaYg7+ytau8ul05xgA+UNGLXXsKur7fTUhDFyISk0w==", + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.18.tgz", + "integrity": "sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==", "dev": true, "dependencies": { - "@volar/language-core": "2.4.0-alpha.15", + "@volar/language-core": "2.4.0-alpha.18", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "node_modules/@vue/compiler-core": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.33.tgz", - "integrity": "sha512-MoIREbkdPQlnGfSKDMgzTqzqx5nmEjIc0ydLVYlTACGBsfvOJ4tHSbZXKVF536n6fB+0eZaGEOqsGThPpdvF5A==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.34.tgz", + "integrity": "sha512-Z0izUf32+wAnQewjHu+pQf1yw00EGOmevl1kE+ljjjMe7oEfpQ+BI3/JNK7yMB4IrUsqLDmPecUrpj3mCP+yJQ==", "dependencies": { "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.33", + "@vue/shared": "3.4.34", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.33.tgz", - "integrity": "sha512-GzB8fxEHKw0gGet5BKlpfXEqoBnzSVWwMnT+dc25wE7pFEfrU/QsvjZMP9rD4iVXHBBoemTct8mN0GJEI6ZX5A==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.34.tgz", + "integrity": "sha512-3PUOTS1h5cskdOJMExCu2TInXuM0j60DRPpSCJDqOCupCfUZCJoyQmKtRmA8EgDNZ5kcEE7vketamRZfrEuVDw==", "dependencies": { - "@vue/compiler-core": "3.4.33", - "@vue/shared": "3.4.33" + "@vue/compiler-core": "3.4.34", + "@vue/shared": "3.4.34" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.33.tgz", - "integrity": "sha512-7rk7Vbkn21xMwIUpHQR4hCVejwE6nvhBOiDgoBcR03qvGqRKA7dCBSsHZhwhYUsmjlbJ7OtD5UFIyhP6BY+c8A==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.34.tgz", + "integrity": "sha512-x6lm0UrM03jjDXTPZgD9Ad8bIVD1ifWNit2EaWQIZB5CULr46+FbLQ5RpK7AXtDHGjx9rmvC7QRCTjsiGkAwRw==", "dependencies": { "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.33", - "@vue/compiler-dom": "3.4.33", - "@vue/compiler-ssr": "3.4.33", - "@vue/shared": "3.4.33", + "@vue/compiler-core": "3.4.34", + "@vue/compiler-dom": "3.4.34", + "@vue/compiler-ssr": "3.4.34", + "@vue/shared": "3.4.34", "estree-walker": "^2.0.2", "magic-string": "^0.30.10", "postcss": "^8.4.39", @@ -1825,12 +1825,22 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.33.tgz", - "integrity": "sha512-0WveC9Ai+eT/1b6LCV5IfsufBZ0HP7pSSTdDjcuW302tTEgoBw8rHVHKPbGUtzGReUFCRXbv6zQDDgucnV2WzQ==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.34.tgz", + "integrity": "sha512-8TDBcLaTrFm5rnF+Qm4BlliaopJgqJ28Nsrc80qazynm5aJO+Emu7y0RWw34L8dNnTRdcVBpWzJxhGYzsoVu4g==", + "dependencies": { + "@vue/compiler-dom": "3.4.34", + "@vue/shared": "3.4.34" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, "dependencies": { - "@vue/compiler-dom": "3.4.33", - "@vue/shared": "3.4.33" + "de-indent": "^1.0.2", + "he": "^1.2.0" } }, "node_modules/@vue/devtools-api": { @@ -1863,19 +1873,19 @@ } }, "node_modules/@vue/language-core": { - "version": "2.0.26", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.26.tgz", - "integrity": "sha512-/lt6SfQ3O1yDAhPsnLv9iSUgXd1dMHqUm/t3RctfqjuwQf1LnftZ414X3UBn6aXT4MiwXWtbNJ4Z0NZWwDWgJQ==", + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.29.tgz", + "integrity": "sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==", "dev": true, "dependencies": { - "@volar/language-core": "~2.4.0-alpha.15", + "@volar/language-core": "~2.4.0-alpha.18", "@vue/compiler-dom": "^3.4.0", + "@vue/compiler-vue2": "^2.7.16", "@vue/shared": "^3.4.0", "computeds": "^0.0.1", "minimatch": "^9.0.3", "muggle-string": "^0.4.1", - "path-browserify": "^1.0.1", - "vue-template-compiler": "^2.7.14" + "path-browserify": "^1.0.1" }, "peerDependencies": { "typescript": "*" @@ -1911,49 +1921,49 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.33.tgz", - "integrity": "sha512-B24QIelahDbyHipBgbUItQblbd4w5HpG3KccL+YkGyo3maXyS253FzcTR3pSz739OTphmzlxP7JxEMWBpewilA==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.34.tgz", + "integrity": "sha512-ua+Lo+wBRlBEX9TtgPOShE2JwIO7p6BTZ7t1KZVPoaBRfqbC7N3c8Mpzicx173fXxx5VXeU6ykiHo7WgLzJQDA==", "dependencies": { - "@vue/shared": "3.4.33" + "@vue/shared": "3.4.34" } }, "node_modules/@vue/runtime-core": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.33.tgz", - "integrity": "sha512-6wavthExzT4iAxpe8q37/rDmf44nyOJGISJPxCi9YsQO+8w9v0gLCFLfH5TzD1V1AYrTAdiF4Y1cgUmP68jP6w==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.34.tgz", + "integrity": "sha512-PXhkiRPwcPGJ1BnyBZFI96GfInCVskd0HPNIAZn7i3YOmLbtbTZpB7/kDTwC1W7IqdGPkTVC63IS7J2nZs4Ebg==", "dependencies": { - "@vue/reactivity": "3.4.33", - "@vue/shared": "3.4.33" + "@vue/reactivity": "3.4.34", + "@vue/shared": "3.4.34" } }, "node_modules/@vue/runtime-dom": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.33.tgz", - "integrity": "sha512-iHsMCUSFJ+4z432Bn9kZzHX+zOXa6+iw36DaVRmKYZpPt9jW9riF32SxNwB124i61kp9+AZtheQ/mKoJLerAaQ==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.34.tgz", + "integrity": "sha512-dXqIe+RqFAK2Euak4UsvbIupalrhc67OuQKpD7HJ3W2fv8jlqvI7szfBCsAEcE8o/wyNpkloxB6J8viuF/E3gw==", "dependencies": { - "@vue/reactivity": "3.4.33", - "@vue/runtime-core": "3.4.33", - "@vue/shared": "3.4.33", + "@vue/reactivity": "3.4.34", + "@vue/runtime-core": "3.4.34", + "@vue/shared": "3.4.34", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.33.tgz", - "integrity": "sha512-jTH0d6gQcaYideFP/k0WdEu8PpRS9MF8d0b6SfZzNi+ap972pZ0TNIeTaESwdOtdY0XPVj54XEJ6K0wXxir4fw==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.34.tgz", + "integrity": "sha512-GeyEUfMVRZMD/mZcNONEqg7MiU10QQ1DB3O/Qr6+8uXpbwdlmVgQ5Qs1/ZUAFX1X2UUtqMoGrDRbxdWfOJFT7Q==", "dependencies": { - "@vue/compiler-ssr": "3.4.33", - "@vue/shared": "3.4.33" + "@vue/compiler-ssr": "3.4.34", + "@vue/shared": "3.4.34" }, "peerDependencies": { - "vue": "3.4.33" + "vue": "3.4.34" } }, "node_modules/@vue/shared": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.33.tgz", - "integrity": "sha512-aoRY0jQk3A/cuvdkodTrM4NMfxco8n55eG4H7ML/CRy7OryHfiqvug4xrCBBMbbN+dvXAetDDwZW9DXWWjBntA==" + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.34.tgz", + "integrity": "sha512-x5LmiRLpRsd9KTjAB8MPKf0CDPMcuItjP0gbNqFCIgL1I8iYp4zglhj9w9FPCdIbHG2M91RVeIbArFfFTz9I3A==" }, "node_modules/@vueuse/core": { "version": "10.11.0", @@ -6549,9 +6559,9 @@ "integrity": "sha512-m9lHc3eBCJerXYdx+G0uWZihyUXdqTzzgOdqiDDsoUo75WjhFJH6vP5/6w/xhyu04zoxHUqgYhf9FEt85dk/Ng==" }, "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "devOptional": true, "bin": { "tsc": "bin/tsc", @@ -6670,9 +6680,9 @@ } }, "node_modules/vite": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.4.tgz", - "integrity": "sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.5.tgz", + "integrity": "sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==", "dev": true, "dependencies": { "esbuild": "^0.21.3", @@ -6731,15 +6741,15 @@ "dev": true }, "node_modules/vue": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.33.tgz", - "integrity": "sha512-VdMCWQOummbhctl4QFMcW6eNtXHsFyDlX60O/tsSQuCcuDOnJ1qPOhhVla65Niece7xq/P2zyZReIO5mP+LGTQ==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.34.tgz", + "integrity": "sha512-VZze05HWlA3ItreQ/ka7Sx7PoD0/3St8FEiSlSTVgb6l4hL+RjtP2/8g5WQBzZgyf8WG2f+g1bXzC7zggLhAJA==", "dependencies": { - "@vue/compiler-dom": "3.4.33", - "@vue/compiler-sfc": "3.4.33", - "@vue/runtime-dom": "3.4.33", - "@vue/server-renderer": "3.4.33", - "@vue/shared": "3.4.33" + "@vue/compiler-dom": "3.4.34", + "@vue/compiler-sfc": "3.4.34", + "@vue/runtime-dom": "3.4.34", + "@vue/server-renderer": "3.4.34", + "@vue/shared": "3.4.34" }, "peerDependencies": { "typescript": "*" @@ -6788,24 +6798,14 @@ "vue": "^3.2.0" } }, - "node_modules/vue-template-compiler": { - "version": "2.7.16", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", - "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", - "dev": true, - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, "node_modules/vue-tsc": { - "version": "2.0.26", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.26.tgz", - "integrity": "sha512-tOhuwy2bIXbMhz82ef37qeiaQHMXKQkD6mOF6CCPl3/uYtST3l6fdNyfMxipudrQTxTfXVPlgJdMENBFfC1CfQ==", + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.29.tgz", + "integrity": "sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==", "dev": true, "dependencies": { - "@volar/typescript": "~2.4.0-alpha.15", - "@vue/language-core": "2.0.26", + "@volar/typescript": "~2.4.0-alpha.18", + "@vue/language-core": "2.0.29", "semver": "^7.5.4" }, "bin": { @@ -7679,9 +7679,9 @@ } }, "@prefecthq/prefect-ui-library": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@prefecthq/prefect-ui-library/-/prefect-ui-library-3.5.3.tgz", - "integrity": "sha512-/+j/0faeoKjqGWMBdEH7JxY+K8vjtu4g6OulKqlVViO8M/OnL2WolOHfRf6aSSPYte0FBL8Jor7WOghSxSzbAA==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@prefecthq/prefect-ui-library/-/prefect-ui-library-3.5.5.tgz", + "integrity": "sha512-3Daxdd6EBnswADienW7GaEBibfp52lFwz+2t3s+STiM0lcObsnfIHTWyjRcFoJTN+6FH8zEjI/DJPxyNwRNvfw==", "requires": { "@prefecthq/graphs": "2.4.0", "axios": "1.6.7", @@ -8125,69 +8125,69 @@ "dev": true }, "@vitejs/plugin-vue": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.5.tgz", - "integrity": "sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.0.tgz", + "integrity": "sha512-QMRxARyrdiwi1mj3AW4fLByoHTavreXq0itdEW696EihXglf1MB3D4C2gBvE0jMPH29ZjC3iK8aIaUMLf4EOGA==", "dev": true, "requires": {} }, "@volar/language-core": { - "version": "2.4.0-alpha.15", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.15.tgz", - "integrity": "sha512-mt8z4Fm2WxfQYoQHPcKVjLQV6PgPqyKLbkCVY2cr5RSaamqCHjhKEpsFX66aL4D/7oYguuaUw9Bx03Vt0TpIIA==", + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.18.tgz", + "integrity": "sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==", "dev": true, "requires": { - "@volar/source-map": "2.4.0-alpha.15" + "@volar/source-map": "2.4.0-alpha.18" } }, "@volar/source-map": { - "version": "2.4.0-alpha.15", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.15.tgz", - "integrity": "sha512-8Htngw5TmBY4L3ClDqBGyfLhsB8EmoEXUH1xydyEtEoK0O6NX5ur4Jw8jgvscTlwzizyl/wsN1vn0cQXVbbXYg==", + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.18.tgz", + "integrity": "sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==", "dev": true }, "@volar/typescript": { - "version": "2.4.0-alpha.15", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.15.tgz", - "integrity": "sha512-U3StRBbDuxV6Woa4hvGS4kz3XcOzrWUKgFdEFN+ba1x3eaYg7+ytau8ul05xgA+UNGLXXsKur7fTUhDFyISk0w==", + "version": "2.4.0-alpha.18", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.18.tgz", + "integrity": "sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==", "dev": true, "requires": { - "@volar/language-core": "2.4.0-alpha.15", + "@volar/language-core": "2.4.0-alpha.18", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "@vue/compiler-core": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.33.tgz", - "integrity": "sha512-MoIREbkdPQlnGfSKDMgzTqzqx5nmEjIc0ydLVYlTACGBsfvOJ4tHSbZXKVF536n6fB+0eZaGEOqsGThPpdvF5A==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.34.tgz", + "integrity": "sha512-Z0izUf32+wAnQewjHu+pQf1yw00EGOmevl1kE+ljjjMe7oEfpQ+BI3/JNK7yMB4IrUsqLDmPecUrpj3mCP+yJQ==", "requires": { "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.33", + "@vue/shared": "3.4.34", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "@vue/compiler-dom": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.33.tgz", - "integrity": "sha512-GzB8fxEHKw0gGet5BKlpfXEqoBnzSVWwMnT+dc25wE7pFEfrU/QsvjZMP9rD4iVXHBBoemTct8mN0GJEI6ZX5A==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.34.tgz", + "integrity": "sha512-3PUOTS1h5cskdOJMExCu2TInXuM0j60DRPpSCJDqOCupCfUZCJoyQmKtRmA8EgDNZ5kcEE7vketamRZfrEuVDw==", "requires": { - "@vue/compiler-core": "3.4.33", - "@vue/shared": "3.4.33" + "@vue/compiler-core": "3.4.34", + "@vue/shared": "3.4.34" } }, "@vue/compiler-sfc": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.33.tgz", - "integrity": "sha512-7rk7Vbkn21xMwIUpHQR4hCVejwE6nvhBOiDgoBcR03qvGqRKA7dCBSsHZhwhYUsmjlbJ7OtD5UFIyhP6BY+c8A==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.34.tgz", + "integrity": "sha512-x6lm0UrM03jjDXTPZgD9Ad8bIVD1ifWNit2EaWQIZB5CULr46+FbLQ5RpK7AXtDHGjx9rmvC7QRCTjsiGkAwRw==", "requires": { "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.33", - "@vue/compiler-dom": "3.4.33", - "@vue/compiler-ssr": "3.4.33", - "@vue/shared": "3.4.33", + "@vue/compiler-core": "3.4.34", + "@vue/compiler-dom": "3.4.34", + "@vue/compiler-ssr": "3.4.34", + "@vue/shared": "3.4.34", "estree-walker": "^2.0.2", "magic-string": "^0.30.10", "postcss": "^8.4.39", @@ -8195,12 +8195,22 @@ } }, "@vue/compiler-ssr": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.33.tgz", - "integrity": "sha512-0WveC9Ai+eT/1b6LCV5IfsufBZ0HP7pSSTdDjcuW302tTEgoBw8rHVHKPbGUtzGReUFCRXbv6zQDDgucnV2WzQ==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.34.tgz", + "integrity": "sha512-8TDBcLaTrFm5rnF+Qm4BlliaopJgqJ28Nsrc80qazynm5aJO+Emu7y0RWw34L8dNnTRdcVBpWzJxhGYzsoVu4g==", + "requires": { + "@vue/compiler-dom": "3.4.34", + "@vue/shared": "3.4.34" + } + }, + "@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, "requires": { - "@vue/compiler-dom": "3.4.33", - "@vue/shared": "3.4.33" + "de-indent": "^1.0.2", + "he": "^1.2.0" } }, "@vue/devtools-api": { @@ -8220,19 +8230,19 @@ } }, "@vue/language-core": { - "version": "2.0.26", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.26.tgz", - "integrity": "sha512-/lt6SfQ3O1yDAhPsnLv9iSUgXd1dMHqUm/t3RctfqjuwQf1LnftZ414X3UBn6aXT4MiwXWtbNJ4Z0NZWwDWgJQ==", + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.29.tgz", + "integrity": "sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==", "dev": true, "requires": { - "@volar/language-core": "~2.4.0-alpha.15", + "@volar/language-core": "~2.4.0-alpha.18", "@vue/compiler-dom": "^3.4.0", + "@vue/compiler-vue2": "^2.7.16", "@vue/shared": "^3.4.0", "computeds": "^0.0.1", "minimatch": "^9.0.3", "muggle-string": "^0.4.1", - "path-browserify": "^1.0.1", - "vue-template-compiler": "^2.7.14" + "path-browserify": "^1.0.1" }, "dependencies": { "brace-expansion": { @@ -8256,46 +8266,46 @@ } }, "@vue/reactivity": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.33.tgz", - "integrity": "sha512-B24QIelahDbyHipBgbUItQblbd4w5HpG3KccL+YkGyo3maXyS253FzcTR3pSz739OTphmzlxP7JxEMWBpewilA==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.34.tgz", + "integrity": "sha512-ua+Lo+wBRlBEX9TtgPOShE2JwIO7p6BTZ7t1KZVPoaBRfqbC7N3c8Mpzicx173fXxx5VXeU6ykiHo7WgLzJQDA==", "requires": { - "@vue/shared": "3.4.33" + "@vue/shared": "3.4.34" } }, "@vue/runtime-core": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.33.tgz", - "integrity": "sha512-6wavthExzT4iAxpe8q37/rDmf44nyOJGISJPxCi9YsQO+8w9v0gLCFLfH5TzD1V1AYrTAdiF4Y1cgUmP68jP6w==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.34.tgz", + "integrity": "sha512-PXhkiRPwcPGJ1BnyBZFI96GfInCVskd0HPNIAZn7i3YOmLbtbTZpB7/kDTwC1W7IqdGPkTVC63IS7J2nZs4Ebg==", "requires": { - "@vue/reactivity": "3.4.33", - "@vue/shared": "3.4.33" + "@vue/reactivity": "3.4.34", + "@vue/shared": "3.4.34" } }, "@vue/runtime-dom": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.33.tgz", - "integrity": "sha512-iHsMCUSFJ+4z432Bn9kZzHX+zOXa6+iw36DaVRmKYZpPt9jW9riF32SxNwB124i61kp9+AZtheQ/mKoJLerAaQ==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.34.tgz", + "integrity": "sha512-dXqIe+RqFAK2Euak4UsvbIupalrhc67OuQKpD7HJ3W2fv8jlqvI7szfBCsAEcE8o/wyNpkloxB6J8viuF/E3gw==", "requires": { - "@vue/reactivity": "3.4.33", - "@vue/runtime-core": "3.4.33", - "@vue/shared": "3.4.33", + "@vue/reactivity": "3.4.34", + "@vue/runtime-core": "3.4.34", + "@vue/shared": "3.4.34", "csstype": "^3.1.3" } }, "@vue/server-renderer": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.33.tgz", - "integrity": "sha512-jTH0d6gQcaYideFP/k0WdEu8PpRS9MF8d0b6SfZzNi+ap972pZ0TNIeTaESwdOtdY0XPVj54XEJ6K0wXxir4fw==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.34.tgz", + "integrity": "sha512-GeyEUfMVRZMD/mZcNONEqg7MiU10QQ1DB3O/Qr6+8uXpbwdlmVgQ5Qs1/ZUAFX1X2UUtqMoGrDRbxdWfOJFT7Q==", "requires": { - "@vue/compiler-ssr": "3.4.33", - "@vue/shared": "3.4.33" + "@vue/compiler-ssr": "3.4.34", + "@vue/shared": "3.4.34" } }, "@vue/shared": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.33.tgz", - "integrity": "sha512-aoRY0jQk3A/cuvdkodTrM4NMfxco8n55eG4H7ML/CRy7OryHfiqvug4xrCBBMbbN+dvXAetDDwZW9DXWWjBntA==" + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.34.tgz", + "integrity": "sha512-x5LmiRLpRsd9KTjAB8MPKf0CDPMcuItjP0gbNqFCIgL1I8iYp4zglhj9w9FPCdIbHG2M91RVeIbArFfFTz9I3A==" }, "@vueuse/core": { "version": "10.11.0", @@ -11551,9 +11561,9 @@ "integrity": "sha512-m9lHc3eBCJerXYdx+G0uWZihyUXdqTzzgOdqiDDsoUo75WjhFJH6vP5/6w/xhyu04zoxHUqgYhf9FEt85dk/Ng==" }, "typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "devOptional": true }, "unbox-primitive": { @@ -11638,9 +11648,9 @@ } }, "vite": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.4.tgz", - "integrity": "sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.5.tgz", + "integrity": "sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==", "dev": true, "requires": { "esbuild": "^0.21.3", @@ -11656,15 +11666,15 @@ "dev": true }, "vue": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.33.tgz", - "integrity": "sha512-VdMCWQOummbhctl4QFMcW6eNtXHsFyDlX60O/tsSQuCcuDOnJ1qPOhhVla65Niece7xq/P2zyZReIO5mP+LGTQ==", + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.34.tgz", + "integrity": "sha512-VZze05HWlA3ItreQ/ka7Sx7PoD0/3St8FEiSlSTVgb6l4hL+RjtP2/8g5WQBzZgyf8WG2f+g1bXzC7zggLhAJA==", "requires": { - "@vue/compiler-dom": "3.4.33", - "@vue/compiler-sfc": "3.4.33", - "@vue/runtime-dom": "3.4.33", - "@vue/server-renderer": "3.4.33", - "@vue/shared": "3.4.33" + "@vue/compiler-dom": "3.4.34", + "@vue/compiler-sfc": "3.4.34", + "@vue/runtime-dom": "3.4.34", + "@vue/server-renderer": "3.4.34", + "@vue/shared": "3.4.34" } }, "vue-eslint-parser": { @@ -11690,24 +11700,14 @@ "@vue/devtools-api": "^6.5.1" } }, - "vue-template-compiler": { - "version": "2.7.16", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", - "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", - "dev": true, - "requires": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, "vue-tsc": { - "version": "2.0.26", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.26.tgz", - "integrity": "sha512-tOhuwy2bIXbMhz82ef37qeiaQHMXKQkD6mOF6CCPl3/uYtST3l6fdNyfMxipudrQTxTfXVPlgJdMENBFfC1CfQ==", + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.29.tgz", + "integrity": "sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==", "dev": true, "requires": { - "@volar/typescript": "~2.4.0-alpha.15", - "@vue/language-core": "2.0.26", + "@volar/typescript": "~2.4.0-alpha.18", + "@vue/language-core": "2.0.29", "semver": "^7.5.4" } }, diff --git a/ui/package.json b/ui/package.json index 5420ef3fcf148..95469a558ded0 100644 --- a/ui/package.json +++ b/ui/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@prefecthq/prefect-design": "2.11.6", - "@prefecthq/prefect-ui-library": "3.5.3", + "@prefecthq/prefect-ui-library": "3.5.5", "@prefecthq/vue-charts": "2.0.4", "@prefecthq/vue-compositions": "1.11.4", "@types/lodash.debounce": "4.0.9", @@ -19,18 +19,18 @@ "lodash.debounce": "4.0.8", "lodash.merge": "^4.6.2", "tailwindcss": "3.4.6", - "vue": "3.4.33", + "vue": "3.4.34", "vue-router": "4.4.0" }, "devDependencies": { "@prefecthq/eslint-config": "1.0.32", "@types/lodash.merge": "^4.6.9", - "@vitejs/plugin-vue": "5.0.5", + "@vitejs/plugin-vue": "5.1.0", "autoprefixer": "10.4.19", "eslint": "^8.57.0", "ts-node": "10.9.2", - "typescript": "^5.5.3", - "vite": "5.3.4", - "vue-tsc": "^2.0.26" + "typescript": "^5.5.4", + "vite": "5.3.5", + "vue-tsc": "^2.0.29" } } diff --git a/ui/src/pages/DeploymentDuplicate.vue b/ui/src/pages/DeploymentDuplicate.vue index 56ffe775dc054..fb249c6bf0172 100644 --- a/ui/src/pages/DeploymentDuplicate.vue +++ b/ui/src/pages/DeploymentDuplicate.vue @@ -4,13 +4,13 @@ - +