From 4d81849176489ff6030519462f92fa8228034ab1 Mon Sep 17 00:00:00 2001 From: Sean Davis Date: Fri, 13 Nov 2026 20:37:32 +0000 Subject: [PATCH 1/2] Prepare the 0.4.3 release Add proofcli init --example, a small demo that fails because an amount is 999.00 instead of 8.25. Document how to yank a bad PyPI release. Move the unreleased notes into 0.4.3 and point the docs at that version. --- CHANGELOG.md | 6 +- README.md | 45 +++++++-------- demo/src/Closing.tsx | 2 +- demo/src/reel/Adopt.tsx | 2 +- docs/ai-agents.md | 4 +- docs/github-action.md | 2 +- docs/releasing.md | 4 +- docs/yanking.md | 33 +++++++++++ proofcli/__init__.py | 2 +- proofcli/cli.py | 119 ++++++++++++++++++++++++++++++++++++++-- pyproject.toml | 2 +- tests/test_help.py | 7 ++- tests/test_qol.py | 80 +++++++++++++++++++++++++++ 13 files changed, 269 insertions(+), 39 deletions(-) create mode 100644 docs/yanking.md diff --git a/CHANGELOG.md b/CHANGELOG.md index cdf43bd..1958148 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,16 +1,20 @@ # Changelog -## Unreleased +## 0.4.3 — 2026-11-13 ### Added - The README opens with what ProofCLI checks, why an exit code of 0 is not enough, a no-clone try-it, and a still of the broken exporter failing. Those README images use absolute GitHub URLs so they render on PyPI. [docs/ai-agents.md](docs/ai-agents.md) describes using a contract to check changes from an AI coding agent. +- `proofcli init --example DIRECTORY` writes a small exporter, a CSV fixture, and a contract. It needs no clone and no network. The exporter exits 0. ProofCLI exits 1 because Grace's amount is 999.00 where 8.25 was expected. Existing files are left alone unless you pass `--force`. `proofcli init FILE` still writes the passing starter. The README uses this command for the no-clone failure demo. +- [docs/yanking.md](docs/yanking.md) describes how to yank a bad PyPI release and ship a fix. The PyPI publish job waits for approval from bk1202 before it uploads. ### Changed - `proofcli --help` lists `run`, `validate`, and `init`, each with its own one-line description. `proofcli run --help`, `proofcli validate --help`, and `proofcli init --help` each describe that command instead of sharing one sentence. `proofcli SPEC` still runs a spec, and exit codes are unchanged. - GitHub releases now attach one PNG of real ProofCLI output: the failing export check and the passing run. The image is drawn with a vendored monospace font. Pillow is installed only while that release image is built, and ProofCLI itself still has no runtime dependencies. The release workflow no longer renders a demo video or installs the Remotion tools, so a video render cannot block the GitHub release or the PyPI publish that follows it. The motion-demo workflow can still render preview videos as workflow artifacts, and it no longer uploads those videos to a release. - Every pull request and push runs a `release-screenshot` check on Python 3.13. That job installs only the hash-locked Pillow used for the release image, runs the screenshot tests, and fails if one of those tests is skipped or missing. It also uploads the PNG as a workflow artifact. +- The README limit on child-process cleanup now says Linux and macOS both use process groups. The previous sentence named only macOS. +- The demo Action examples show `bk1202/proofcli@v0.4.3`. ## 0.4.2 — 2026-10-16 diff --git a/README.md b/README.md index 302374f..5c2e200 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ProofCLI runs a command and checks the files it writes. Exit code 0 is not proof the output is right. -Passing starter, no git clone: `python3 -m venv .venv && .venv/bin/python -m pip install proofcli==0.4.2 && .venv/bin/proofcli init demo.json && .venv/bin/proofcli run demo.json` +Passing starter, no git clone: `python3 -m venv .venv && .venv/bin/python -m pip install proofcli==0.4.3 && .venv/bin/proofcli init demo.json && .venv/bin/proofcli run demo.json` ![ProofCLI fails the broken exporter. Grace's amount is 999.00, expected 8.25. The exporter's exit code is 0. ProofCLI's process exit is 1.](https://raw.githubusercontent.com/bk1202/proofcli/main/docs/assets/wrong-value-failure.png) @@ -54,7 +54,7 @@ Windows (PowerShell): ```powershell py -3 -m venv .venv -.venv\Scripts\python -m pip install proofcli==0.4.2 +.venv\Scripts\python -m pip install proofcli==0.4.3 .venv\Scripts\proofcli --help ``` @@ -62,11 +62,11 @@ macOS: ```sh python3 -m venv .venv -.venv/bin/python -m pip install proofcli==0.4.2 +.venv/bin/python -m pip install proofcli==0.4.3 .venv/bin/proofcli --help ``` -Use the environment's `python -m proofcli` if the console command is not on PATH. From a checkout, use `python -m pip install .`. The [GitHub release](https://github.com/bk1202/proofcli/releases/tag/v0.4.2) also provides a wheel, source archive, and checksums. PyPI uploads follow successful GitHub release validation; see the [publishing workflow](https://github.com/bk1202/proofcli/actions/workflows/pypi.yml) for index availability. +Use the environment's `python -m proofcli` if the console command is not on PATH. From a checkout, use `python -m pip install .`. The [GitHub release](https://github.com/bk1202/proofcli/releases/tag/v0.4.3) also provides a wheel, source archive, and checksums. PyPI uploads follow successful GitHub release validation; see the [publishing workflow](https://github.com/bk1202/proofcli/actions/workflows/pypi.yml) for index availability. ### Run your first contract @@ -86,33 +86,20 @@ Artifact directories must be new. Reports are replaced atomically when explicitl ### Try the broken export without cloning -The picture at the top is a real run of this contract. The PyPI 0.4.2 wheel does not include the example. Install from the [quick start](#quick-start), put that environment's `proofcli` on `PATH`, and fetch the contract, the exporter, and the fixture from the `v0.4.2` tag: +Install from the [quick start](#quick-start) and put that environment's `proofcli` on `PATH`. This writes a small exporter, a CSV fixture, and a contract. It does not clone the repository or download anything: -```sh -mkdir -p export-demo/fixtures -curl -fsSL -o export-demo/wrong-value.json https://raw.githubusercontent.com/bk1202/proofcli/v0.4.2/examples/export/wrong-value.json -curl -fsSL -o export-demo/export.py https://raw.githubusercontent.com/bk1202/proofcli/v0.4.2/examples/export/export.py -curl -fsSL -o export-demo/fixtures/input.csv https://raw.githubusercontent.com/bk1202/proofcli/v0.4.2/examples/export/fixtures/input.csv +```console +proofcli init --example export-demo proofcli run export-demo/wrong-value.json ``` ProofCLI exits `1`. The exporter exits `0`. `proofcli init demo.json` writes a passing starter. It does not include this exporter. -With ProofCLI [installed](#quick-start), clone the repository and run the failing contract: - -```console -git clone https://github.com/bk1202/proofcli.git -cd proofcli -proofcli run examples/export/wrong-value.json -``` - -**Expected outcome: ProofCLI exits `1`, while the exporter exits `0`.** The exporter creates valid, nonempty JSON and CSV, silently changing Grace's amount to `999.00` while keeping the original total. Its success message, row-count check, and JSON summary check still pass. Exact record assertions identify `$/rows/1/amount`: expected `8.25`, actual `999.00`. - -The terminal report leads with what failed: +**Expected outcome: ProofCLI exits `1`, while the exporter exits `0`.** The exporter writes JSON and CSV, changing Grace's amount to `999.00`. The record checks name `$/rows/1/amount`: expected `8.25`, actual `999.00`. ```text FAILED: False success: wrong-value - 2 of 9 checks failed: + 2 of 8 checks failed: [FAIL] file:report.json:json_equals at $/rows/1/amount: value or type differs expected: "8.25" @@ -121,11 +108,19 @@ FAILED: False success: wrong-value at $/rows/1/amount: value or type differs expected: "8.25" actual: "999.00" - 7 other checks passed. - Command exit code: 0; elapsed: 0.069s + 6 other checks passed. + Command exit code: 0; elapsed: 0.064s ... ``` +The picture at the top is a real run of the fuller contract in this repository, [examples/export/wrong-value.json](examples/export/wrong-value.json). That exporter keeps the original total. Its success message, row-count check, and JSON summary check still pass, and two record checks fail on the same amount. With ProofCLI [installed](#quick-start): + +```console +git clone https://github.com/bk1202/proofcli.git +cd proofcli +proofcli run examples/export/wrong-value.json +``` + Run the correct exporter for comparison, or keep the failed files and report for inspection: ```console @@ -199,7 +194,7 @@ After checking out your repository, add one step: ```yaml steps: - uses: actions/checkout@v7 - - uses: bk1202/proofcli@v0.4.2 + - uses: bk1202/proofcli@v0.4.3 id: proof with: spec: tests/export-contract.json diff --git a/demo/src/Closing.tsx b/demo/src/Closing.tsx index 1fdab8d..ee9621d 100644 --- a/demo/src/Closing.tsx +++ b/demo/src/Closing.tsx @@ -7,7 +7,7 @@ export const Closing: React.FC = () => { return
.github/workflows/export.yml
-
- uses: bk1202/proofcli@v0.4.2
with:
spec: tests/export-contract.json
+
- uses: bk1202/proofcli@v0.4.3
with:
spec: tests/export-contract.json
Python setup included. Your assertions define the check.
diff --git a/demo/src/reel/Adopt.tsx b/demo/src/reel/Adopt.tsx index 583fd29..e5a4350 100644 --- a/demo/src/reel/Adopt.tsx +++ b/demo/src/reel/Adopt.tsx @@ -7,7 +7,7 @@ export const Adopt = () => {
CHECK
THE OUTPUT.
$ python -m pip install proofcli
-
uses:
bk1202/proofcli@v0.4.2
+
uses:
bk1202/proofcli@v0.4.3
; }; diff --git a/docs/ai-agents.md b/docs/ai-agents.md index 324b195..8a42867 100644 --- a/docs/ai-agents.md +++ b/docs/ai-agents.md @@ -40,12 +40,12 @@ The [GitHub Action](github-action.md) checks out nothing by itself. After `actio ```yaml steps: - uses: actions/checkout@v7 - - uses: bk1202/proofcli@v0.4.2 + - uses: bk1202/proofcli@v0.4.3 with: spec: examples/export/good.json ``` -Change `spec` to the contract that should pass for the pull request. The Action exposes `report`, `status`, and `exit-code` outputs. Optional `report` and `artifacts` inputs choose where evidence is saved. Pin a full commit SHA instead of `@v0.4.2` when the workflow needs an immutable action. +Change `spec` to the contract that should pass for the pull request. The Action exposes `report`, `status`, and `exit-code` outputs. Optional `report` and `artifacts` inputs choose where evidence is saved. Pin a full commit SHA instead of `@v0.4.3` when the workflow needs an immutable action. ## Limits diff --git a/docs/github-action.md b/docs/github-action.md index dd1d9d9..4a2f87c 100644 --- a/docs/github-action.md +++ b/docs/github-action.md @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - - uses: bk1202/proofcli@v0.4.2 + - uses: bk1202/proofcli@v0.4.3 id: proof with: spec: tests/export-contract.json diff --git a/docs/releasing.md b/docs/releasing.md index c2b2d89..f8d6689 100644 --- a/docs/releasing.md +++ b/docs/releasing.md @@ -5,9 +5,11 @@ 3. Only after local validation, publish the candidate branch and obtain green Windows/macOS tests, both distribution-install jobs, and the advisory job. Inspect skips/failures. Merge the same reviewed candidate into main; retain CI links as evidence. 4. Create and push an annotated `v` tag targeting the validated commit. A pre-1.0 release is not a production/security certification. 5. The tag triggers `release.yml`. The read-only validation matrix must pass, including Linux runtime and three-platform composite Action checks. The publish job checks tag/version agreement, builds with pinned tools, verifies fresh wheel/sdist installs, installs hash-locked Pillow from `tools/release-requirements.txt` only to draw one PNG from a real failing run and a real passing run, and creates the GitHub release with both distributions, that screenshot, and `SHA256SUMS`. Pillow is not a ProofCLI runtime dependency. The job does not render a demo video. -6. Successful release completion triggers `pypi.yml` on the default branch. Its read-only job accepts only a successful tag-push release from this repository, checks that the tag points to the validated commit, and downloads/checksums the published distribution bytes. A separate `pypi` environment job uses PyPA Trusted Publishing with `id-token: write` to upload those exact bytes. It executes no repository code and stores no long-lived token. +6. Successful release completion triggers `pypi.yml` on the default branch. Its read-only job accepts only a successful tag-push release from this repository, checks that the tag points to the validated commit, and downloads/checksums the published distribution bytes. A separate `pypi` environment job uses PyPA Trusted Publishing with `id-token: write` to upload those exact bytes. It executes no repository code and stores no long-lived token. The `pypi` environment requires approval from bk1202 before that upload. 7. Confirm both workflows, actual downloadable checksums, PyPI version metadata, and a fresh `pip install proofcli==` before announcing index availability. Release creation and PyPI publication do not overwrite published versions; inspect partial failures rather than silently replacing bytes. +To yank a version that is already on PyPI and ship a fix, follow [Yanking a bad release](yanking.md). + Before the first PyPI publication, register a pending GitHub publisher at `https://pypi.org/manage/account/publishing/`: project `proofcli`, owner `bk1202`, repository `proofcli`, workflow `pypi.yml`, environment `pypi`. The workflow cannot create that account-level authorization. If registration is missing, complete it and rerun the failed publication job. Pending registration does not reserve a package name. Actions are pinned to immutable official commits; checkout credentials are not persisted. There is no privileged PR execution or user text interpolated into shell source. Release tags enter shell commands through environment variables. Only GitHub release publication receives repository write permission; only the separate PyPI publication job receives OIDC write permission. diff --git a/docs/yanking.md b/docs/yanking.md new file mode 100644 index 0000000..4c219f7 --- /dev/null +++ b/docs/yanking.md @@ -0,0 +1,33 @@ +# Yanking a bad release and shipping a fix + +Use this when a version already on PyPI is broken or unsafe. PyPI never lets a version number be uploaded twice or replaced, so the fix is always a new version. + +Yanking keeps the files on PyPI but tells installers to skip that version unless it is the only release that matches an exact pin (`==` or `===`, for example `proofcli==X.Y.Z`). It does not delete the files, and it can be undone. PyPI yanks a whole release, not one file inside it. + +Yank sparingly. PyPI's own guidance is to yank when a release is broken or uninstallable, when it breaks its own compatibility promise, or when it contains a security problem. Deleting a release is not part of this procedure. + +## 1. Yank the bad version on PyPI + +1. Sign in to PyPI with an account that can manage `proofcli`, and open `https://pypi.org/manage/project/proofcli/releases/`. +2. Next to the bad version, open Options and choose Yank. +3. Confirm in the dialog. A reason is optional and is shown on the release page and to installers. Give one. +4. From a clean environment, `pip install proofcli` should select the newest release that is not yanked. `pip install proofcli==X.Y.Z` still installs the yanked version. + +## 2. Cut a fixed release + +1. Fix the problem on a branch and add a regression test that fails without the fix. +2. Bump both package version declarations from [the release procedure](releasing.md): `version` under `[project]` in `pyproject.toml`, and `__version__` in `proofcli/__init__.py`. Add a changelog entry that names the yanked version and what was wrong. +3. Update version pins in `README.md` and `docs/` (`proofcli==`, `bk1202/proofcli@v`, and `/proofcli/releases/tag/v` links). `tools/check_versions.py` checks those. It also checks release tags in `.github/workflows/demo-video.yml` and `bk1202/proofcli@v` pins in the demo source. It does not check `CHANGELOG.md`. +4. Follow [the release procedure](releasing.md) from step 2. The new version must be higher than the yanked one (for example `0.4.4` after yanking `0.4.3`). +5. Pushing the annotated `v` tag runs `release.yml` (Release assets). When that run succeeds, `pypi.yml` starts from the default branch. It does not start after a failed release. The upload is the `publish` job. That job uses the `pypi` environment, which requires approval from bk1202 before the files go to PyPI. Open the waiting run and approve it. +6. Do the post-publish checks in [the release procedure](releasing.md) step 7, including a fresh `pip install proofcli==`. + +## 3. Tidy the GitHub side + +- Leave the old tag in place. Do not move or reuse it. +- Edit the old GitHub Release notes to say the version was yanked, why, and which version replaces it. +- If the GitHub Action (`bk1202/proofcli@v...`) was affected, say which tag users should move to. + +## 4. If the upload itself failed halfway + +Do not retry blindly. Check whether the version now exists on PyPI. If it does and the files are fine, nothing more is needed. If it exists and is bad, yank it and release a new version as above. If it does not exist, rerun the failed `publish` job in `pypi.yml`. That job uploads the distributions the `distributions` job already checked. It does not build them again. diff --git a/proofcli/__init__.py b/proofcli/__init__.py index bb8428e..b997adf 100644 --- a/proofcli/__init__.py +++ b/proofcli/__init__.py @@ -1,3 +1,3 @@ """ProofCLI: verify explicit command postconditions.""" -__version__ = "0.4.2" +__version__ = "0.4.3" diff --git a/proofcli/cli.py b/proofcli/cli.py index e47a90b..85c1221 100644 --- a/proofcli/cli.py +++ b/proofcli/cli.py @@ -169,8 +169,12 @@ def _parser(command, explicit): parser.add_argument("--version", action="version", version=f"ProofCLI {__version__}") parser.add_argument("--json", action="store_true", help="emit a single JSON report") if command == "init": - parser.add_argument("path", help="where to create the starter JSON spec") - parser.add_argument("--force", action="store_true", help="replace an existing spec") + parser.add_argument("path", help="starter spec file, or a directory with --example") + parser.add_argument("--force", action="store_true", help="replace an existing spec or example") + parser.add_argument( + "--example", action="store_true", + help="write a demo that fails on 999.00 instead of 8.25", + ) else: parser.add_argument("spec", help="path to a version 1 JSON spec") if command == "run": @@ -215,7 +219,114 @@ def _save_report(path, report): temporary.unlink(missing_ok=True) -def _init(path, force): +_EXAMPLE_CSV = "id,customer,amount\n1,Ada,12.50\n2,Grace,8.25\n3,Linus,13.00\n" + +# Joined lines so the generated script contains a real "\n" string, on every platform. +_EXAMPLE_SCRIPT = "\n".join([ + '"""Write report.json and report.csv from input.csv.', + "", + "The second amount is written as 999.00. The process still exits 0.", + '"""', + "", + "import csv", + "import json", + "from pathlib import Path", + "", + "", + "def main():", + ' with Path("input.csv").open(encoding="utf-8", newline="") as handle:', + " rows = list(csv.DictReader(handle))", + ' rows[1]["amount"] = "999.00"', + ' text = json.dumps({"rows": rows}, indent=2) + "\\n"', + ' Path("report.json").write_text(text, encoding="utf-8")', + ' with Path("report.csv").open("w", encoding="utf-8", newline="") as handle:', + ' writer = csv.DictWriter(handle, fieldnames=["id", "customer", "amount"])', + " writer.writeheader()", + " writer.writerows(rows)", + ' print("Export complete")', + "", + "", + 'if __name__ == "__main__":', + " main()", + "", +]) + + +def _example_spec(): + rows = [ + {"id": "1", "customer": "Ada", "amount": "12.50"}, + {"id": "2", "customer": "Grace", "amount": "8.25"}, + {"id": "3", "customer": "Linus", "amount": "13.00"}, + ] + return { + "version": 1, + "name": "False success: wrong-value", + "argv": ["{python}", "{spec_dir}/export.py"], + "inputs": [{"source": "fixtures/input.csv", "dest": "input.csv"}], + "timeout_seconds": 10, + "expect": { + "exit_code": 0, + "stdout_regex": "Export complete", + "files": [ + {"path": "report.json", "min_size": 1, "json_equals": {"rows": rows}}, + { + "path": "report.csv", + "min_size": 1, + "csv": { + "columns": ["id", "customer", "amount"], + "exact_columns": True, + "rows": rows, + }, + }, + ], + }, + } + + +def _path_occupied(path): + """True for a real file or directory and for a dangling link.""" + return path.is_symlink() or path.exists() + + +def _init_example(directory, force): + """Write a self-contained failing demo. Refuse to replace anything without --force.""" + directory = Path(directory).absolute() + if directory.is_symlink(): + raise SpecError("example path is a link; choose a directory") + if _path_occupied(directory) and not directory.is_dir(): + raise SpecError("example path is a file; choose a directory") + spec_text = json.dumps(_example_spec(), ensure_ascii=True, indent=2) + "\n" + files = [ + (directory / "wrong-value.json", spec_text), + (directory / "export.py", _EXAMPLE_SCRIPT), + (directory / "fixtures" / "input.csv", _EXAMPLE_CSV), + ] + for path, _text in files: + parent = path.parent + if parent.is_symlink() or (_path_occupied(parent) and not parent.is_dir()): + raise SpecError(f"cannot create example files; {parent} is not a directory") + if path.is_dir() and not path.is_symlink(): + raise SpecError(f"{path} is a directory; choose a path that can hold a file") + blocked = [path for path, _text in files if _path_occupied(path)] + if blocked and not force: + raise SpecError("example file already exists; use --force to replace it") + directory.mkdir(parents=True, exist_ok=True) + try: + for path, text in files: + path.parent.mkdir(parents=True, exist_ok=True) + if path.is_symlink(): + # Replace the link itself. Do not follow it and edit another file. + path.unlink() + with path.open("w" if force else "x", encoding="utf-8", newline="\n") as handle: + handle.write(text) + except FileExistsError as exc: + raise SpecError("example file already exists; use --force to replace it") from exc + return {"schema_version": 1, "status": "created", "path": str(directory / "wrong-value.json")} + + +def _init(path, force, example=False): + if example: + return _init_example(path, force) # Preserve a final symlink for exclusive creation: even a dangling link exists. path = Path(path).absolute() spec = { @@ -261,7 +372,7 @@ def _main(argv=None): args = parser.parse_args(tokens) json_output = args.json if command == "init": - report = _init(args.path, args.force) + report = _init(args.path, args.force, args.example) else: spec_path = Path(args.spec).resolve() # Preserve an error report for malformed/missing specs without ever diff --git a/pyproject.toml b/pyproject.toml index 0c3853e..956cc2d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "proofcli" -version = "0.4.2" +version = "0.4.3" description = "Verify command output contracts instead of trusting exit code zero." readme = "README.md" requires-python = ">=3.10" diff --git a/tests/test_help.py b/tests/test_help.py index 2a4c291..e4a29f1 100644 --- a/tests/test_help.py +++ b/tests/test_help.py @@ -111,9 +111,13 @@ def usage_block(text): ) self.assertEqual( usage_block(seen["init"]), - "usage: proofcli init [-h] [--version] [--json] [--force] path", + "usage: proofcli init [-h] [--version] [--json] [--force] [--example] path", ) self.assertIn("replace an existing spec", seen["init"]) + self.assertIn("--example", seen["init"]) + self.assertIn("999.00", seen["init"]) + self.assertNotIn("--example", seen["run"]) + self.assertNotIn("--example", seen["validate"]) self.assertIn("save the complete JSON report to this path", seen["run"]) self.assertNotIn("save the complete JSON report", seen["validate"]) self.assertNotIn("replace an existing spec", seen["validate"]) @@ -173,6 +177,7 @@ def test_help_and_usage_exit_codes_are_unchanged(self): (["run"], "the following arguments are required: spec"), (["validate"], "the following arguments are required: spec"), (["init"], "the following arguments are required: path"), + (["init", "--example"], "the following arguments are required: path"), (["--bogus"], "the following arguments are required: spec"), (["run", missing, "--art", "x"], "unrecognized arguments: --art"), (["--report", "--help"], "argument --report: expected one argument"), diff --git a/tests/test_qol.py b/tests/test_qol.py index 1170f3f..6944b63 100644 --- a/tests/test_qol.py +++ b/tests/test_qol.py @@ -94,6 +94,86 @@ def test_init_human_output_explains_next_command(self): self.assertEqual(result.returncode, 0, result.stderr) self.assertIn("proofcli run", result.stdout) + def _run_printed_command(self, stdout): + """Run the `Next: proofcli run "..."` line with the same CLI subprocess.""" + line = next(item for item in stdout.splitlines() if "Next:" in item) + self.assertIn("proofcli run ", line) + quoted = line.split("proofcli run ", 1)[1].strip() + self.assertTrue(quoted.startswith('"') and quoted.endswith('"'), stdout) + spec = quoted[1:-1] + installed = os.environ.get("PROOFCLI_TEST_INSTALLED") == "1" + env = os.environ.copy() + if installed: + executable = shutil.which("proofcli") + self.assertIsNotNone(executable, "Installed mode requires proofcli on PATH") + argv = [executable, "run", spec] + env.pop("PYTHONPATH", None) + else: + argv = [sys.executable, "-m", "proofcli", "run", spec] + env["PYTHONPATH"] = os.pathsep.join([str(PROJECT), env.get("PYTHONPATH", "")]) + return subprocess.run( + argv, cwd=self.root, env=env, capture_output=True, text=True, + encoding="utf-8", errors="replace", timeout=30, + ), spec + + def test_init_example_writes_a_demo_that_fails_on_the_wrong_amount(self): + directory = self.root / "export-demo" + result = self.invoke(["init", "--example", directory], json_output=False) + self.assertEqual(result.returncode, 0, result.stderr) + spec_path = directory / "wrong-value.json" + script_path = directory / "export.py" + fixture_path = directory / "fixtures" / "input.csv" + self.assertTrue(spec_path.is_file(), result.stdout) + self.assertTrue(script_path.is_file()) + self.assertTrue(fixture_path.is_file()) + self.assertFalse((directory / "report.json").exists()) + spec = json.loads(spec_path.read_text(encoding="utf-8")) + self.assertEqual(spec["argv"][0], "{python}") + self.assertNotIn("sh", spec["argv"]) + self.assertNotIn("bash", spec["argv"]) + self.assertNotIn("cmd", spec["argv"]) + completed, printed_spec = self._run_printed_command(result.stdout) + self.assertEqual(Path(printed_spec), spec_path) + self.assertEqual(completed.returncode, 1, completed.stdout + completed.stderr) + self.assertIn('expected: "8.25"', completed.stdout) + self.assertIn('actual: "999.00"', completed.stdout) + + def test_init_example_refuses_to_overwrite_existing_files(self): + directory = self.root / "export-demo" + (directory / "fixtures").mkdir(parents=True) + kept = directory / "fixtures" / "input.csv" + kept.write_text("original fixture", encoding="utf-8") + result = self.invoke(["init", "--example", directory], json_output=False) + self.assertEqual(result.returncode, 2, result.stdout) + self.assertEqual(result.stdout, "") + self.assertIn("already exists", result.stderr) + self.assertIn("--force", result.stderr) + self.assertEqual(kept.read_text(encoding="utf-8"), "original fixture") + self.assertFalse((directory / "wrong-value.json").exists()) + self.assertFalse((directory / "export.py").exists()) + replaced = self.invoke(["init", "--example", directory, "--force"], json_output=False) + self.assertEqual(replaced.returncode, 0, replaced.stderr) + self.assertNotEqual(kept.read_text(encoding="utf-8"), "original fixture") + completed, _spec = self._run_printed_command(replaced.stdout) + self.assertEqual(completed.returncode, 1, completed.stdout + completed.stderr) + self.assertIn('expected: "8.25"', completed.stdout) + self.assertIn('actual: "999.00"', completed.stdout) + + def test_plain_init_still_writes_a_passing_starter(self): + path = self.root / "starter.json" + result = self.invoke(["init", path], json_output=False) + self.assertEqual(result.returncode, 0, result.stderr) + self.assertEqual([item.name for item in self.root.iterdir()], ["starter.json"]) + generated = json.loads(path.read_text(encoding="utf-8")) + self.assertEqual(generated["argv"][:2], ["{python}", "-c"]) + self.assertIn("ProofCLI verified this output.", generated["argv"][2]) + self.assertEqual(generated["expect"]["exit_code"], 0) + self.assertNotIn("999.00", path.read_text(encoding="utf-8")) + self.assertNotIn("--example", result.stdout) + run = self.invoke(["run", path], json_output=False) + self.assertEqual(run.returncode, 0, run.stderr) + self.assertIn("PASSED", run.stdout) + def test_validate_does_not_execute_the_command(self): path = self.marker_spec() report = self.assert_report(self.invoke(["validate", path]), 0, "valid") From 05c169c9583632fa85a0d10e2621d26e2ad7a4da Mon Sep 17 00:00:00 2001 From: Sean Davis Date: Fri, 13 Nov 2026 20:49:57 +0000 Subject: [PATCH 2/2] Clear the setuptools and demo dependency advisories Use setuptools 84.1.0 and Remotion 4.0.543 so the release checks no longer report the setuptools advisory or the high-severity zod advisory. --- CHANGELOG.md | 1 + demo/package-lock.json | 1165 +++++++++++++++++++--------------------- demo/package.json | 6 +- requirements-build.txt | 2 +- 4 files changed, 559 insertions(+), 615 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1958148..0c85229 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ - Every pull request and push runs a `release-screenshot` check on Python 3.13. That job installs only the hash-locked Pillow used for the release image, runs the screenshot tests, and fails if one of those tests is skipped or missing. It also uploads the PNG as a workflow artifact. - The README limit on child-process cleanup now says Linux and macOS both use process groups. The previous sentence named only macOS. - The demo Action examples show `bk1202/proofcli@v0.4.3`. +- The locked build tools use setuptools 84.1.0, and the motion demo uses Remotion 4.0.543. Those updates clear the setuptools and zod advisories the release checks reported. ## 0.4.2 — 2026-10-16 diff --git a/demo/package-lock.json b/demo/package-lock.json index 5def5a1..1ca2c14 100644 --- a/demo/package-lock.json +++ b/demo/package-lock.json @@ -9,11 +9,11 @@ "version": "1.0.0", "license": "MIT", "dependencies": { - "@remotion/cli": "4.0.535", - "@remotion/media": "4.0.535", + "@remotion/cli": "4.0.543", + "@remotion/media": "4.0.543", "react": "19.2.3", "react-dom": "19.2.3", - "remotion": "4.0.535" + "remotion": "4.0.543" }, "devDependencies": { "@types/react": "19.2.7", @@ -44,20 +44,20 @@ } }, "node_modules/@babel/core": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", - "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "version": "7.29.13", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.13.tgz", + "integrity": "sha512-j1nvOQCZYSgp7HLmisnCXFTpVvFODiijQ9QHkORfGKWH6YDtskTEeCJS7eV545GZ9UBzrq0e2xsOd5QQ5PjIqw==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helpers": "^7.29.7", - "@babel/parser": "^7.29.7", + "@babel/generator": "^7.29.13", + "@babel/helper-compilation-targets": "^7.29.13", + "@babel/helper-module-transforms": "^7.29.13", + "@babel/helpers": "^7.29.13", + "@babel/parser": "^7.29.13", "@babel/template": "^7.29.7", - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7", + "@babel/traverse": "^7.29.13", + "@babel/types": "^7.29.11", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -74,12 +74,12 @@ } }, "node_modules/@babel/core/node_modules/@babel/parser": { - "version": "7.29.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz", - "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.14.tgz", + "integrity": "sha512-VL220vXuyO2z3rNIQwY7ftj9UwpqOt+33sH+sBWkOekbsSR2g7EEMnOx24ZlCH0xOA3DM/33SifVFGbnJD8r/w==", "license": "MIT", "dependencies": { - "@babel/types": "^7.29.8" + "@babel/types": "^7.29.14" }, "bin": { "parser": "bin/babel-parser.js" @@ -89,12 +89,12 @@ } }, "node_modules/@babel/core/node_modules/@babel/types": { - "version": "7.29.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", - "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.14.tgz", + "integrity": "sha512-UjI/dKmwJwT9pOszJitq2G6EObZPnsZUfdCr92z2TlF3EZK9J3EdfOKUrCzHl6wFthbzwhzl1Soc/UIwxRiq6w==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-string-parser": "^7.29.14", "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { @@ -102,22 +102,22 @@ } }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.2.tgz", + "integrity": "sha512-GYrCADwpu6yV5OAvchkQ27Z5wwMxWAEMg5NNWjyHh/5DboFFqbdbvYNIvZouQpxXyeMPoTOh0vdPYKlf0ZswdQ==", "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.29.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", - "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.14.tgz", + "integrity": "sha512-qSY56jgW5JnSXzuekLVil6zaOQxOCtOHidr65KkaMBw772IuAY28Qx4ZykAcDn8+FRF15qk80XzKwgSc/RYW6g==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.8", - "@babel/types": "^7.29.8", + "@babel/parser": "^7.29.14", + "@babel/types": "^7.29.14", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -127,12 +127,12 @@ } }, "node_modules/@babel/generator/node_modules/@babel/parser": { - "version": "7.29.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz", - "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.14.tgz", + "integrity": "sha512-VL220vXuyO2z3rNIQwY7ftj9UwpqOt+33sH+sBWkOekbsSR2g7EEMnOx24ZlCH0xOA3DM/33SifVFGbnJD8r/w==", "license": "MIT", "dependencies": { - "@babel/types": "^7.29.8" + "@babel/types": "^7.29.14" }, "bin": { "parser": "bin/babel-parser.js" @@ -142,12 +142,12 @@ } }, "node_modules/@babel/generator/node_modules/@babel/types": { - "version": "7.29.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", - "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.14.tgz", + "integrity": "sha512-UjI/dKmwJwT9pOszJitq2G6EObZPnsZUfdCr92z2TlF3EZK9J3EdfOKUrCzHl6wFthbzwhzl1Soc/UIwxRiq6w==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-string-parser": "^7.29.14", "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { @@ -155,9 +155,9 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", - "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "version": "7.29.13", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.13.tgz", + "integrity": "sha512-8WxJ4/Vmes3ghacj8VOJy3NW8eyHiFY/4thU/LSBuBE470+igjR/j1ZTNn8fV5VdNrLx6iXUwig526UdOvfP0w==", "license": "MIT", "dependencies": { "@babel/compat-data": "^7.29.7", @@ -171,9 +171,9 @@ } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.2.tgz", + "integrity": "sha512-GYrCADwpu6yV5OAvchkQ27Z5wwMxWAEMg5NNWjyHh/5DboFFqbdbvYNIvZouQpxXyeMPoTOh0vdPYKlf0ZswdQ==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -202,12 +202,12 @@ } }, "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { - "version": "7.29.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", - "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.14.tgz", + "integrity": "sha512-UjI/dKmwJwT9pOszJitq2G6EObZPnsZUfdCr92z2TlF3EZK9J3EdfOKUrCzHl6wFthbzwhzl1Soc/UIwxRiq6w==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-string-parser": "^7.29.14", "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { @@ -215,14 +215,14 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", - "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.14.tgz", + "integrity": "sha512-2XDvQVd9JESaOgGc4jT2/jquTAO7ppA5noTZQqH+MmZ89yjCzScLwtCPbWtkPZylL+TLWR49IwWmk+QkRR4GsA==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7", - "@babel/traverse": "^7.29.7" + "@babel/traverse": "^7.29.14" }, "engines": { "node": ">=6.9.0" @@ -232,9 +232,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", - "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.14.tgz", + "integrity": "sha512-CXvKMFvM80ihI7Vox9jb+kQjnyjESQNPM+vB7U0Zz6TWuZA+Z/FL0QPMH300h33qJtIx+REeBhXqWOPW48TcAQ==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -259,25 +259,25 @@ } }, "node_modules/@babel/helpers": { - "version": "7.29.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.10.tgz", - "integrity": "sha512-EMCx3AGZ3WfAl6ht7AyQoPm2Lh+BGYEMdc4Q6Hf7uSCDOZFuLq44qNwL+iaim8VlyYhRAo4X43+weadK8ZB4Yg==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.14.tgz", + "integrity": "sha512-6E3Mi1r0B0umq6vmZa4/78q+64fqO2YY0THUdjDPKUCKhNb0yQy5NQIaPHCSD3ryTgiTss//P4JsWS80AsZ6LQ==", "license": "MIT", "dependencies": { "@babel/template": "^7.29.7", - "@babel/types": "^7.29.8" + "@babel/types": "^7.29.14" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers/node_modules/@babel/types": { - "version": "7.29.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", - "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.14.tgz", + "integrity": "sha512-UjI/dKmwJwT9pOszJitq2G6EObZPnsZUfdCr92z2TlF3EZK9J3EdfOKUrCzHl6wFthbzwhzl1Soc/UIwxRiq6w==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-string-parser": "^7.29.14", "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { @@ -311,12 +311,12 @@ } }, "node_modules/@babel/template/node_modules/@babel/parser": { - "version": "7.29.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz", - "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.14.tgz", + "integrity": "sha512-VL220vXuyO2z3rNIQwY7ftj9UwpqOt+33sH+sBWkOekbsSR2g7EEMnOx24ZlCH0xOA3DM/33SifVFGbnJD8r/w==", "license": "MIT", "dependencies": { - "@babel/types": "^7.29.8" + "@babel/types": "^7.29.14" }, "bin": { "parser": "bin/babel-parser.js" @@ -326,12 +326,12 @@ } }, "node_modules/@babel/template/node_modules/@babel/types": { - "version": "7.29.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", - "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.14.tgz", + "integrity": "sha512-UjI/dKmwJwT9pOszJitq2G6EObZPnsZUfdCr92z2TlF3EZK9J3EdfOKUrCzHl6wFthbzwhzl1Soc/UIwxRiq6w==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-string-parser": "^7.29.14", "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { @@ -339,17 +339,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.29.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.10.tgz", - "integrity": "sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.14.tgz", + "integrity": "sha512-RAdQJrBgmIH1FWvN0X+1hoDxzMzlP4cv/1Zi4dn4tG1H0cTb+rw7CzUxQJhp1f4ANd8j5vH3fy8BAWFGkBDEsA==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.8", + "@babel/generator": "^7.29.14", "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.9", + "@babel/parser": "^7.29.14", "@babel/template": "^7.29.7", - "@babel/types": "^7.29.8", + "@babel/types": "^7.29.14", "debug": "^4.3.1" }, "engines": { @@ -357,12 +357,12 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/parser": { - "version": "7.29.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz", - "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.14.tgz", + "integrity": "sha512-VL220vXuyO2z3rNIQwY7ftj9UwpqOt+33sH+sBWkOekbsSR2g7EEMnOx24ZlCH0xOA3DM/33SifVFGbnJD8r/w==", "license": "MIT", "dependencies": { - "@babel/types": "^7.29.8" + "@babel/types": "^7.29.14" }, "bin": { "parser": "bin/babel-parser.js" @@ -372,12 +372,12 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/types": { - "version": "7.29.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", - "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "version": "7.29.14", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.14.tgz", + "integrity": "sha512-UjI/dKmwJwT9pOszJitq2G6EObZPnsZUfdCr92z2TlF3EZK9J3EdfOKUrCzHl6wFthbzwhzl1Soc/UIwxRiq6w==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-string-parser": "^7.29.14", "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { @@ -866,9 +866,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.3.tgz", + "integrity": "sha512-lhTtjtoEArWBjismtfS761S9Hlyn+nIZqOZVYoZ1Xn82PMNMVnk+jj/NhC4fAXGTs7ydONcJiR5vyQBTMDu27g==", "license": "MIT", "engines": { "node": ">=6.0.0" @@ -901,9 +901,9 @@ } }, "node_modules/@mediabunny/aac-encoder": { - "version": "1.61.3", - "resolved": "https://registry.npmjs.org/@mediabunny/aac-encoder/-/aac-encoder-1.61.3.tgz", - "integrity": "sha512-SH4DdqqUJRqIErXbuxIze0ACbSyi3Rau90skDwp8YbwopFYm2dgPidLPbwqdmTd/sESHwq7Nf3nDbczAxtcVmA==", + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/@mediabunny/aac-encoder/-/aac-encoder-1.64.0.tgz", + "integrity": "sha512-u9BnYGgDsPw4xjD7YRt285wsz+QR5Cp0Lzi/aZTrZ1FHBqYW4c7uyIFD1NhU+jKOO5IZgXhMOw9Y2IEjyr2k5Q==", "license": "MPL-2.0", "funding": { "type": "individual", @@ -914,9 +914,9 @@ } }, "node_modules/@mediabunny/flac-encoder": { - "version": "1.61.3", - "resolved": "https://registry.npmjs.org/@mediabunny/flac-encoder/-/flac-encoder-1.61.3.tgz", - "integrity": "sha512-j/WaaxIKA1KtyplrRLkSEb68+TMkMfg854CPm/R5Luf0KEx6maZabuHtARmoZ25PsFoyTgutJXLiVupyF7V/jw==", + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/@mediabunny/flac-encoder/-/flac-encoder-1.64.0.tgz", + "integrity": "sha512-PN0B2rwLT6Ovkk88ayaaamYduHj35r7EVM1yu5mjxPrbeO2VoCZSD2aTONzYQGg1PnSJmc9jwtRrK/EMe6pwsg==", "license": "MPL-2.0", "funding": { "type": "individual", @@ -927,9 +927,9 @@ } }, "node_modules/@mediabunny/mp3-encoder": { - "version": "1.61.3", - "resolved": "https://registry.npmjs.org/@mediabunny/mp3-encoder/-/mp3-encoder-1.61.3.tgz", - "integrity": "sha512-Qmegig3hXp8dhbJnze1fumsC7GXkMp6NH5mGgvl5o4zzp2cYgmjjbWps5mPyRq3VHcxLbDdiXDNVcl4Mv7c1tQ==", + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/@mediabunny/mp3-encoder/-/mp3-encoder-1.64.0.tgz", + "integrity": "sha512-agJx3Vv2NsrJDwMBF4l5a0SEA6cszmFS4LVyLaHCQNAY0BKm55HEo+vbD51CJIxuHSYtvFdaurJqHh/S6kF7XQ==", "license": "MPL-2.0", "funding": { "type": "individual", @@ -939,86 +939,39 @@ "mediabunny": "^1.0.0" } }, - "node_modules/@module-federation/error-codes": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.22.0.tgz", - "integrity": "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==", - "license": "MIT" - }, - "node_modules/@module-federation/runtime": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.22.0.tgz", - "integrity": "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==", - "license": "MIT", - "dependencies": { - "@module-federation/error-codes": "0.22.0", - "@module-federation/runtime-core": "0.22.0", - "@module-federation/sdk": "0.22.0" - } - }, - "node_modules/@module-federation/runtime-core": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.22.0.tgz", - "integrity": "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==", - "license": "MIT", - "dependencies": { - "@module-federation/error-codes": "0.22.0", - "@module-federation/sdk": "0.22.0" - } - }, - "node_modules/@module-federation/runtime-tools": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.22.0.tgz", - "integrity": "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==", - "license": "MIT", - "dependencies": { - "@module-federation/runtime": "0.22.0", - "@module-federation/webpack-bundler-runtime": "0.22.0" - } - }, - "node_modules/@module-federation/sdk": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.22.0.tgz", - "integrity": "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==", - "license": "MIT" - }, - "node_modules/@module-federation/webpack-bundler-runtime": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.22.0.tgz", - "integrity": "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==", - "license": "MIT", - "dependencies": { - "@module-federation/runtime": "0.22.0", - "@module-federation/sdk": "0.22.0" - } - }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz", - "integrity": "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", + "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", "license": "MIT", "optional": true, "dependencies": { - "@emnapi/core": "^1.5.0", - "@emnapi/runtime": "^1.5.0", - "@tybys/wasm-util": "^0.10.1" + "@tybys/wasm-util": "^0.10.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" } }, "node_modules/@remotion/bundler": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/bundler/-/bundler-4.0.535.tgz", - "integrity": "sha512-K306vh+WMXbTIw7v+i6916p2D2Der2W0u40sDBqh6fkZ7sdqE27ePR2oXw0RhN2S0UwoknaBiiC9zqb20v9Tdg==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/bundler/-/bundler-4.0.543.tgz", + "integrity": "sha512-D8NjdhQa4X4KXVnQ4hbsjH36MnL0CFTyV0wNJfVdnhKYXmbCZtzv3LnpijGZArxY1q+wh7CXT9eE3WgnnKqaYg==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@remotion/studio": "4.0.535", - "@remotion/studio-shared": "4.0.535", - "@remotion/timeline-utils": "4.0.535", - "@rspack/core": "1.7.11", - "@rspack/plugin-react-refresh": "1.6.1", + "@remotion/studio": "4.0.543", + "@remotion/studio-shared": "4.0.543", + "@remotion/timeline-utils": "4.0.543", + "@rspack/core": "2.3.0", + "@rspack/plugin-react-refresh": "2.0.2", "css-loader": "7.1.4", "esbuild": "0.28.1", "react-refresh": "0.18.0", - "remotion": "4.0.535", + "remotion": "4.0.543", "style-loader": "4.0.0", "webpack": "5.105.0" }, @@ -1028,31 +981,33 @@ } }, "node_modules/@remotion/captions": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/captions/-/captions-4.0.535.tgz", - "integrity": "sha512-eluB1X7J0zYlzbgCbq3qIRJQuFEoVuyGV2Rs3bkYzPyVFAsjV/C8otk/ecaWbqyloWRhonUsLOQ9Yof6uP0rVA==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/captions/-/captions-4.0.543.tgz", + "integrity": "sha512-qlMHi2jWnQrF1TrHbP/Es3i+XaIJuVMXbvOC/LXNYYg7r0tOl6j3auXVYUW5V6okZCR+gMjl9An0fSmbXCtduA==", "license": "MIT" }, "node_modules/@remotion/cli": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/cli/-/cli-4.0.535.tgz", - "integrity": "sha512-wWVLG9Kx4L+aEcMGPm0JnFHGRYEwvQrCFpmmzhaxFIBdbeBx8A7mng/GmVGB59DBZ0Em8T7FIeJrT9q0Toz5Wg==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/cli/-/cli-4.0.543.tgz", + "integrity": "sha512-pDc+pUIAuhoaQN8hqAalxfCgBAjoyU96Q5xbDdJia3xkF9Eq8U5QBAXnc/dVppgqur7f0w+1OY0bBjca/0LB+Q==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { "@babel/parser": "7.24.1", - "@remotion/bundler": "4.0.535", - "@remotion/codemods": "4.0.535", - "@remotion/media-utils": "4.0.535", - "@remotion/player": "4.0.535", - "@remotion/renderer": "4.0.535", - "@remotion/studio": "4.0.535", - "@remotion/studio-server": "4.0.535", - "@remotion/studio-shared": "4.0.535", + "@remotion/bundler": "4.0.543", + "@remotion/codemods": "4.0.543", + "@remotion/licensing": "4.0.543", + "@remotion/media-utils": "4.0.543", + "@remotion/player": "4.0.543", + "@remotion/renderer": "4.0.543", + "@remotion/studio": "4.0.543", + "@remotion/studio-protocol": "4.0.543", + "@remotion/studio-server": "4.0.543", + "@remotion/studio-shared": "4.0.543", "dotenv": "17.3.1", - "mediabunny": "1.61.3", + "mediabunny": "1.64.0", "minimist": "1.2.6", "prompts": "2.4.2", - "remotion": "4.0.535", + "remotion": "4.0.543", "semver": "7.5.3" }, "bin": { @@ -1066,24 +1021,24 @@ } }, "node_modules/@remotion/codemods": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/codemods/-/codemods-4.0.535.tgz", - "integrity": "sha512-VusZb7BZQyhZyDQAYckKhqKmeKiZhVLdE5ml1Wyi67QARaB3aCr6vff3P3h6Dpk9yq5QGMjvy2mNnz4JioaP6w==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/codemods/-/codemods-4.0.543.tgz", + "integrity": "sha512-/0KVSJMa6p2TqcsV1ImaHd8R/lKGJ1J/LWOsZi0yDK+dIietdjZO7jXYXyBppy9BuEES9IWLzGG0jFpEmBMA5g==", "license": "MIT", "dependencies": { "@babel/parser": "7.24.1", "@babel/types": "7.24.0", - "@remotion/studio-protocol": "4.0.535", - "@remotion/studio-shared": "4.0.535", + "@remotion/studio-protocol": "4.0.543", + "@remotion/studio-shared": "4.0.543", "ast-types": "0.16.1", "recast": "0.23.21", - "remotion": "4.0.535" + "remotion": "4.0.543" } }, "node_modules/@remotion/compositor-darwin-arm64": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/compositor-darwin-arm64/-/compositor-darwin-arm64-4.0.535.tgz", - "integrity": "sha512-aJCO62F3A/PWk2zXPZonn+htwN2ou6kwDde9djyBrs2a69kp4mRr9BrqaYNina9S05EJCq0Fgh3NBiy+rthrRg==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/compositor-darwin-arm64/-/compositor-darwin-arm64-4.0.543.tgz", + "integrity": "sha512-vQbuZB/foOzEgw6zy2R6LF82v0nSQX2A5pBWiNtBXlm7z5DstBgKeJZLVquxnhN7GHXVwOWZcVQqeOegM+acGg==", "cpu": [ "arm64" ], @@ -1093,9 +1048,9 @@ ] }, "node_modules/@remotion/compositor-darwin-x64": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/compositor-darwin-x64/-/compositor-darwin-x64-4.0.535.tgz", - "integrity": "sha512-8OPoXULXbLCv6X2b0VVCHL+5po3tz/vm8l26ZY8i3K5ejfv5C3a6xlSJKoI9qFDtoL7ZPIIidpner/+8XkZ03Q==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/compositor-darwin-x64/-/compositor-darwin-x64-4.0.543.tgz", + "integrity": "sha512-gZH/uXHIxokz7DD0Fenhv1KQwe2RX/QkZpw8fkD4CPx0dhzQTgBJTqptbguIG1tPVpLuDHv4WQkY4rH78SLBTg==", "cpu": [ "x64" ], @@ -1105,69 +1060,57 @@ ] }, "node_modules/@remotion/compositor-linux-arm64-gnu": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/compositor-linux-arm64-gnu/-/compositor-linux-arm64-gnu-4.0.535.tgz", - "integrity": "sha512-c4nj5zQh+PCG2Beo0upSMalLWF7zH7CSxRPySNaIRjZ1+kdVMLvswUA00EAbMpTYBt4cIMajNlg+Z1mAGkJMdA==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/compositor-linux-arm64-gnu/-/compositor-linux-arm64-gnu-4.0.543.tgz", + "integrity": "sha512-v3tnneapzP2bcammFlcRNPejELM+p/qZXMrxgIoAsVo/zgRpLjkD7uZmidapX2fDr4X022VNwnKA5PG0zmXnog==", "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "optional": true, "os": [ "linux" ] }, "node_modules/@remotion/compositor-linux-arm64-musl": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/compositor-linux-arm64-musl/-/compositor-linux-arm64-musl-4.0.535.tgz", - "integrity": "sha512-XMCJZZEZeK7eoqPSTFJzV00LovVLG+zsC1LHIQB0rQ846aHSawPZ/LmCcCMUJYq/e1ZPXOLWamAofOEMt7klyw==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/compositor-linux-arm64-musl/-/compositor-linux-arm64-musl-4.0.543.tgz", + "integrity": "sha512-U6PPG7sVcpQEHqTkyNQFHFPiYRQ+I2d+HTlQ3egB2+hr3jSlLRN6+9hJCjiu3gbwwt7A9wKqM6s7uW8mUlXDDg==", "cpu": [ "arm64" ], - "libc": [ - "musl" - ], "optional": true, "os": [ "linux" ] }, "node_modules/@remotion/compositor-linux-x64-gnu": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/compositor-linux-x64-gnu/-/compositor-linux-x64-gnu-4.0.535.tgz", - "integrity": "sha512-gzmNFl4lw99eZjooTw0z7YMcM+Wyvi5alBaD90qZxN8EgyZWBhW2Bv7zGVURmiBC4zfHLEBAAzo/zb9EcNytIg==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/compositor-linux-x64-gnu/-/compositor-linux-x64-gnu-4.0.543.tgz", + "integrity": "sha512-NJu4x01+iXH4ojnr3X3eV8z3nUTQLJdHSAZG4tcrRqvudghc3T4/jxi2yJZDEit5z2mGIpv+ArzjSi9HtA/YqQ==", "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "optional": true, "os": [ "linux" ] }, "node_modules/@remotion/compositor-linux-x64-musl": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/compositor-linux-x64-musl/-/compositor-linux-x64-musl-4.0.535.tgz", - "integrity": "sha512-KS+fDLeV8xG+AFgTvFUky5jGh52EGTRr8UNWqmjlg3/x8eqrIIT6EvPm8Li3hvpiUzkmkQE5fotCm8cUaYi6EA==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/compositor-linux-x64-musl/-/compositor-linux-x64-musl-4.0.543.tgz", + "integrity": "sha512-uWqy9MsKZo+CGiZLlEULjKaIYhReYzKDoSt0kRLBoO5CmpqCK9W5pstM9R43+5Eg9T3Om6Ib0Rnv8c8S0z21ZQ==", "cpu": [ "x64" ], - "libc": [ - "musl" - ], "optional": true, "os": [ "linux" ] }, "node_modules/@remotion/compositor-win32-x64-msvc": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/compositor-win32-x64-msvc/-/compositor-win32-x64-msvc-4.0.535.tgz", - "integrity": "sha512-xqajZBFO8LRWQTK4QFZapebRRD7Rtqn7SPt5kyXJin9c1EaLzzxVyp5QU3zDdWGQBzKM9r0UEAP0huG9zwbAMA==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/compositor-win32-x64-msvc/-/compositor-win32-x64-msvc-4.0.543.tgz", + "integrity": "sha512-sdObydvUpSAjOlc9Mz/oJUNFwR9gCL+Gub4Wq0tu5Y1qEv/P4YslO0kuYhknCGIzq2yTKhK5s4MpVD3FVvr35w==", "cpu": [ "x64" ], @@ -1176,30 +1119,39 @@ "win32" ] }, + "node_modules/@remotion/effects": { + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/effects/-/effects-4.0.543.tgz", + "integrity": "sha512-dX8adEAJbrBUwyDBu76XUe6yQtMbOJiavi002SggeeBksqCvEY6QJiI10fo3E2WdwGP1/U34DMx22orQMnxPYQ==", + "license": "UNLICENSED", + "dependencies": { + "remotion": "4.0.543" + } + }, "node_modules/@remotion/elevenlabs": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/elevenlabs/-/elevenlabs-4.0.535.tgz", - "integrity": "sha512-zlahnfRRtwUKFWzjC3pjgqIFawlYLnoRqJGK58MU/nldz15x3ByIykM9w4AcR4pL/4cBC1J7pnwUFOwPxhl1Jg==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/elevenlabs/-/elevenlabs-4.0.543.tgz", + "integrity": "sha512-ZN+V7k/AcS76AVLqT1O9fW+PyZt8Oa5wQ6Xzsf3wpuLK1ojrheg9HP0s7aHMfuo5os6v125QTATZj+I3U3CRCw==", "license": "MIT", "dependencies": { - "@remotion/captions": "4.0.535", - "zod": "4.5.4" + "@remotion/captions": "4.0.543", + "zod": "4.6.7" } }, "node_modules/@remotion/licensing": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/licensing/-/licensing-4.0.535.tgz", - "integrity": "sha512-rLh99jYpCHrJVk0LHA5fvHX0YBGI4TPQnwEVmHAQyxCOGG7jw0cbKC9nYRKyOAbObfHwzwl7Dk1Xg0k0t2yqig==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/licensing/-/licensing-4.0.543.tgz", + "integrity": "sha512-igTuOmTo6JYdn1JYwxN27ipkzXr65vlhcm6K4eyrELg+S/Cn9wpP7+V5FpJR30Kh2RTTcADtAua68ZNWXS/stw==", "license": "MIT" }, "node_modules/@remotion/media": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/media/-/media-4.0.535.tgz", - "integrity": "sha512-v2A3K05IgDQVKB/icwAhriJZ6Kdv12l91q34KGwWS+x4x64fPtizVpPuE1gBaCTcE3ZRl51U2AMXQxz8JwdBBA==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/media/-/media-4.0.543.tgz", + "integrity": "sha512-IV+jpXFDKksm/JZQJTssk9XMx28DaDI+By3v7uyGZEFv5DWj+aVjHKTKo0gNdTWVuGcQ5j6NKXjYczvLhcdgyA==", "dependencies": { - "mediabunny": "1.61.3", - "remotion": "4.0.535", - "zod": "4.5.4" + "mediabunny": "1.64.0", + "remotion": "4.0.543", + "zod": "4.6.7" }, "peerDependencies": { "react": ">=16.8.0", @@ -1207,13 +1159,13 @@ } }, "node_modules/@remotion/media-utils": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/media-utils/-/media-utils-4.0.535.tgz", - "integrity": "sha512-c9RW9O4QMknsNOQvjetMMPUNWfDhEfmYvRl83DtaXl7QBaGMsZDN/Xo9whm6lUluD5HL7TjoQEEgc8/sgnAfTQ==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/media-utils/-/media-utils-4.0.543.tgz", + "integrity": "sha512-qH5J3FHhxw+9tr315L0+8J23I4ebtaQyPLBBki0tUay1dpoRpU3qWLu/LTxaIBK3KHHmYguomMT2967IFxiHYA==", "license": "MIT", "dependencies": { - "mediabunny": "1.61.3", - "remotion": "4.0.535" + "mediabunny": "1.64.0", + "remotion": "4.0.543" }, "peerDependencies": { "react": ">=16.8.0", @@ -1221,31 +1173,31 @@ } }, "node_modules/@remotion/openai-whisper": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/openai-whisper/-/openai-whisper-4.0.535.tgz", - "integrity": "sha512-PjofMagv+rvrURK+AUiRGa7GSN/ZXBuRwnPFipKI2Z2mZORhYcpm3iag1hkwp0XAJhgG6peUMQ5wjJ3r6O2mPg==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/openai-whisper/-/openai-whisper-4.0.543.tgz", + "integrity": "sha512-xutdQsAl4NJw9+8QnsyhmncPauJNHWGMzGu4TNJp9OGPh+eVKJgtPDuVNSfTJgKLcKzCDDOShzpE8LatS8vsug==", "license": "MIT", "dependencies": { - "@remotion/captions": "4.0.535", - "zod": "4.5.4" + "@remotion/captions": "4.0.543", + "zod": "4.6.7" } }, "node_modules/@remotion/paths": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/paths/-/paths-4.0.535.tgz", - "integrity": "sha512-y00F4FRRkrLPORV6yavhGcWZg5ONoHWvLLSp/Pf9B+Y6dFgNiGY7F2CBhNEQM+0blOlFunZYwNLWjq+1syLmWQ==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/paths/-/paths-4.0.543.tgz", + "integrity": "sha512-+++2ZHZBv56e5bsDxoOGQgqky+l29pTEbHVfXt/N41M2wZ8Z8LX1DIJIeZiwyQODHEMJl3hh+weXZmAbH2uF4w==", "license": "MIT", "dependencies": { - "remotion": "4.0.535" + "remotion": "4.0.543" } }, "node_modules/@remotion/player": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/player/-/player-4.0.535.tgz", - "integrity": "sha512-FYbw2frv8M49LB9NrAmc6A9LCRqZhI6QxeJ9tJKGB9JZg+DLaz8x3zrhuqC3tHfkbsqZOauRZSK6FbT7f8uXgg==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/player/-/player-4.0.543.tgz", + "integrity": "sha512-XokTrZDF/8L8nSLB7rWDmIXX/LFcnJcpP/7aSdl5mD6Epr1HuWsYlQlxbqZQC2ZkuZZA0b/mCUJGbam5npIhgA==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "remotion": "4.0.535" + "remotion": "4.0.543" }, "peerDependencies": { "react": ">=16.8.0", @@ -1253,26 +1205,26 @@ } }, "node_modules/@remotion/renderer": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/renderer/-/renderer-4.0.535.tgz", - "integrity": "sha512-Jk4gCfF705KcJPmIJ0A0SkQnbi3Syj1hf7igBxghGmpqgjosEs3oErdmeRknPoRu2Y7VMbJDfGSww2UOZvZmwA==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/renderer/-/renderer-4.0.543.tgz", + "integrity": "sha512-/Q0O0X5Tu9Vycka1iK0YeG7WwszHtErCcMdEp2LYKCn7JONoXmh5MG+WD91RI3NIwkM+OdXsqPY04e27bAYhLw==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@remotion/licensing": "4.0.535", - "@remotion/streaming": "4.0.535", + "@remotion/licensing": "4.0.543", + "@remotion/streaming": "4.0.543", "execa": "5.1.1", - "remotion": "4.0.535", + "remotion": "4.0.543", "source-map": "0.8.0", "ws": "8.21.0" }, "optionalDependencies": { - "@remotion/compositor-darwin-arm64": "4.0.535", - "@remotion/compositor-darwin-x64": "4.0.535", - "@remotion/compositor-linux-arm64-gnu": "4.0.535", - "@remotion/compositor-linux-arm64-musl": "4.0.535", - "@remotion/compositor-linux-x64-gnu": "4.0.535", - "@remotion/compositor-linux-x64-musl": "4.0.535", - "@remotion/compositor-win32-x64-msvc": "4.0.535" + "@remotion/compositor-darwin-arm64": "4.0.543", + "@remotion/compositor-darwin-x64": "4.0.543", + "@remotion/compositor-linux-arm64-gnu": "4.0.543", + "@remotion/compositor-linux-arm64-musl": "4.0.543", + "@remotion/compositor-linux-x64-gnu": "4.0.543", + "@remotion/compositor-linux-x64-musl": "4.0.543", + "@remotion/compositor-win32-x64-msvc": "4.0.543" }, "peerDependencies": { "react": ">=16.8.0", @@ -1280,14 +1232,14 @@ } }, "node_modules/@remotion/sdk": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/sdk/-/sdk-4.0.535.tgz", - "integrity": "sha512-FvkRBbVaNVL1eMojF+vlJSG3cR+ycpNOvNsAn+lwRjdl+C5K3PgO+HjWfRNSZPDzIDA+eIRyHdjiIgtIWYRwkQ==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/sdk/-/sdk-4.0.543.tgz", + "integrity": "sha512-vCqqUC81rs825RN05hjw9Bcax5HfeCRiydLIxGd9Cc3gWjiike7qM5oYv3HUaCX9yByMy2HIm1nIUWCl3aUcbg==", "license": "Remotion License", "dependencies": { - "@remotion/player": "4.0.535", - "@remotion/studio-shared": "4.0.535", - "remotion": "4.0.535" + "@remotion/player": "4.0.543", + "@remotion/studio-shared": "4.0.543", + "remotion": "4.0.543" }, "peerDependencies": { "react": ">=16.8.0", @@ -1295,45 +1247,47 @@ } }, "node_modules/@remotion/streaming": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/streaming/-/streaming-4.0.535.tgz", - "integrity": "sha512-RBjhEOsG2QiTR1SE2FCGWrJdxyOflDawhPODYaNNmwzjneoyXvk4+PwswJs9Pfn4lRIieD7xo4wxxa8AT47Uaw==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/streaming/-/streaming-4.0.543.tgz", + "integrity": "sha512-inKIcnywMc7+cCIRnmymFBPE5FccvLqis+Ja0zWRmHQfMdoj8RjCmPk1WGxkLb7aVEe+nA9L8lYAlYXMbv7Frg==", "license": "MIT" }, "node_modules/@remotion/studio": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/studio/-/studio-4.0.535.tgz", - "integrity": "sha512-ZANw6ikS3v6qU5ijLd2YNVJR5ckkdGamh24L5tX9wgwJEhO+PPe3qZHD8MYJWRlAvHWapZd3v/dCIEH3P9l6ag==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/studio/-/studio-4.0.543.tgz", + "integrity": "sha512-hqEqgvihvo75avceijaD18H53srlq7m0Ge0LEA+4u/N71syubC+tOb3N3BWX2oocg/BRJq7IH0VTHWpmYuZwJQ==", "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.31", - "@remotion/captions": "4.0.535", - "@remotion/codemods": "4.0.535", - "@remotion/elevenlabs": "4.0.535", - "@remotion/media": "4.0.535", - "@remotion/media-utils": "4.0.535", - "@remotion/openai-whisper": "4.0.535", - "@remotion/paths": "4.0.535", - "@remotion/player": "4.0.535", - "@remotion/renderer": "4.0.535", - "@remotion/sdk": "4.0.535", - "@remotion/studio-protocol": "4.0.535", - "@remotion/studio-shared": "4.0.535", - "@remotion/timeline-utils": "4.0.535", - "@remotion/web-renderer": "4.0.535", - "@remotion/zod-types": "4.0.535", + "@remotion/captions": "4.0.543", + "@remotion/codemods": "4.0.543", + "@remotion/effects": "4.0.543", + "@remotion/elevenlabs": "4.0.543", + "@remotion/media": "4.0.543", + "@remotion/media-utils": "4.0.543", + "@remotion/openai-whisper": "4.0.543", + "@remotion/paths": "4.0.543", + "@remotion/player": "4.0.543", + "@remotion/renderer": "4.0.543", + "@remotion/sdk": "4.0.543", + "@remotion/studio-protocol": "4.0.543", + "@remotion/studio-shared": "4.0.543", + "@remotion/timeline-utils": "4.0.543", + "@remotion/web-renderer": "4.0.543", + "@remotion/zod-types": "4.0.543", "@tanstack/react-virtual": "3.14.9", - "mediabunny": "1.61.3", + "client-zip": "2.5.1", + "mediabunny": "1.64.0", "memfs": "3.4.3", "open": "8.4.2", "prismjs": "1.30.0", - "remotion": "4.0.535", + "remotion": "4.0.543", "semver": "7.5.3", - "zod": "4.5.4" + "zod": "4.6.7" }, "peerDependencies": { - "@remotion/video-matting": "4.0.535", - "@remotion/whisper-webgpu": "4.0.535", + "@remotion/video-matting": "4.0.543", + "@remotion/whisper-webgpu": "4.0.543", "react": ">=16.8.0", "react-dom": ">=16.8.0" }, @@ -1347,69 +1301,69 @@ } }, "node_modules/@remotion/studio-protocol": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/studio-protocol/-/studio-protocol-4.0.535.tgz", - "integrity": "sha512-yPMMlrAcz8K79HyILMGtIvH+6x00c8KuBHpLCD3BSCDEXNqp20IOgoBVI8AZZD82vO1f90Jv3ePenRI2kVhL5Q==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/studio-protocol/-/studio-protocol-4.0.543.tgz", + "integrity": "sha512-MIV4wNox+tUKKCp89f8qLq4k9nB0SgFK9Bn+9LRSZ/Wb18WZT9gvXxHn/Y/6sY2whjgr24okzgQA8wz17++ApA==", "license": "Remotion License", "dependencies": { - "zod": "4.5.4" + "zod": "4.6.7" } }, "node_modules/@remotion/studio-server": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/studio-server/-/studio-server-4.0.535.tgz", - "integrity": "sha512-JTFuXiUqY7z8poReLeUPqk0e368OSKVUhOAFZ4fSDfu02c3/Wqj8s3xZjgSSRso0t6zIU7kKwELQOjkF8gVvXA==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/studio-server/-/studio-server-4.0.543.tgz", + "integrity": "sha512-dAWnTniiRPMlJOqvrvWWf90RmY9adivcHsC38wZNcn2StcWHslGgEh6eVqZgK31ZrJu/k6yNUJ8AzsfSjRPrPA==", "license": "MIT", "dependencies": { "@babel/parser": "7.24.1", "@babel/types": "7.24.0", - "@remotion/bundler": "4.0.535", - "@remotion/codemods": "4.0.535", - "@remotion/renderer": "4.0.535", - "@remotion/studio-protocol": "4.0.535", - "@remotion/studio-shared": "4.0.535", + "@remotion/bundler": "4.0.543", + "@remotion/codemods": "4.0.543", + "@remotion/renderer": "4.0.543", + "@remotion/studio-protocol": "4.0.543", + "@remotion/studio-shared": "4.0.543", "@svgr/core": "8.1.0", "@svgr/plugin-jsx": "8.1.0", "kiwi-schema": "0.5.0", "memfs": "3.4.3", "open": "8.4.2", "recast": "0.23.21", - "remotion": "4.0.535", + "remotion": "4.0.543", "semver": "7.5.3", - "zod": "4.5.4" + "zod": "4.6.7" } }, "node_modules/@remotion/studio-shared": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/studio-shared/-/studio-shared-4.0.535.tgz", - "integrity": "sha512-+gJKMERFMuKQBg6QmsArj/i7K0dECCBenmnXKlbT8FiwCiDnZG/x0mswlFsSbhjWrCtv5+uJ+YO5exDCmSj4BA==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/studio-shared/-/studio-shared-4.0.543.tgz", + "integrity": "sha512-SktHr/GQSs5K03R5QFuJRUsIZMNL0cox/6oVczSdm2frkQd/o1R4Pwe4Ikix1/pxuXG23s1OLaXJ5+gI+NxiUg==", "license": "MIT", "dependencies": { - "remotion": "4.0.535" + "remotion": "4.0.543" } }, "node_modules/@remotion/timeline-utils": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/timeline-utils/-/timeline-utils-4.0.535.tgz", - "integrity": "sha512-98m/UtDdJI2Zfp2X380H/3MRc1kB2LHUmx0kQb7AmL3+Uipv+YUt2MClV9L51zx0n0InX47PgV28IrbtfYI25Q==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/timeline-utils/-/timeline-utils-4.0.543.tgz", + "integrity": "sha512-M0d72K18chlRRpftmke8Ll/xsFS69dOEOvRPfshYWvJ7Nk8IGmXiCHp+9ZYddkuolseOP5rwy11CxiZsabEZkQ==", "license": "MIT", "dependencies": { - "mediabunny": "1.61.3", - "remotion": "4.0.535" + "mediabunny": "1.64.0", + "remotion": "4.0.543" } }, "node_modules/@remotion/web-renderer": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/web-renderer/-/web-renderer-4.0.535.tgz", - "integrity": "sha512-wDd0NufeX71xNjqqbZduVP6AFXQEPHnn5gu+eI4I2W3SL7a0F3tOYsRtlP7vbZXINy/X1F7AqrKBEpne4xa8pA==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/web-renderer/-/web-renderer-4.0.543.tgz", + "integrity": "sha512-UqJXVw170/Kn2Fcw2WZ0cwuae5M+dgx/NqkCgvV9wP8+VUaaM0UHXIAVa5BH0wC9ybTR3ZkVjIB8T6it4ZokHA==", "license": "SEE LICENSE IN LICENSE.md", "dependencies": { - "@mediabunny/aac-encoder": "1.61.3", - "@mediabunny/flac-encoder": "1.61.3", - "@mediabunny/mp3-encoder": "1.61.3", - "@remotion/licensing": "4.0.535", - "mediabunny": "1.61.3", - "remotion": "4.0.535" + "@mediabunny/aac-encoder": "1.64.0", + "@mediabunny/flac-encoder": "1.64.0", + "@mediabunny/mp3-encoder": "1.64.0", + "@remotion/licensing": "4.0.543", + "mediabunny": "1.64.0", + "remotion": "4.0.543" }, "peerDependencies": { "react": ">=18.0.0", @@ -1417,36 +1371,40 @@ } }, "node_modules/@remotion/zod-types": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/@remotion/zod-types/-/zod-types-4.0.535.tgz", - "integrity": "sha512-qszmVpUw47OpW77cCnkO7hGXEsn70oLXMOZi5JRJgDK3IsRlL3ttMu0k0ntACJEx1Ja0uuEfYEJVlOGxZ1JRRA==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/@remotion/zod-types/-/zod-types-4.0.543.tgz", + "integrity": "sha512-i1WhDdXdH7W8EqeG6lL4Ra/TlHQL9uVF+6wG6k0O4EZ8ZnTzXp+mNuVf2j9nXMVEGaJ+JVc7ya4EeqRPJ03/cw==", "license": "MIT", "dependencies": { - "remotion": "4.0.535" + "remotion": "4.0.543" } }, "node_modules/@rspack/binding": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.11.tgz", - "integrity": "sha512-2MGdy2s2HimsDT444Bp5XnALzNRxuBNc7y0JzyuqKbHBywd4x2NeXyhWXXoxufaCFu5PBc9Qq9jyfjW2Aeh06Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-2.3.0.tgz", + "integrity": "sha512-rh9S5xvGVs73gdqMDMYXi3SHUfCWIChlL7a8zaYF8+1HLtIgdMyxa100f1ifAKlr8VoyFUv3xrfGLBaoxwjU5g==", "license": "MIT", "optionalDependencies": { - "@rspack/binding-darwin-arm64": "1.7.11", - "@rspack/binding-darwin-x64": "1.7.11", - "@rspack/binding-linux-arm64-gnu": "1.7.11", - "@rspack/binding-linux-arm64-musl": "1.7.11", - "@rspack/binding-linux-x64-gnu": "1.7.11", - "@rspack/binding-linux-x64-musl": "1.7.11", - "@rspack/binding-wasm32-wasi": "1.7.11", - "@rspack/binding-win32-arm64-msvc": "1.7.11", - "@rspack/binding-win32-ia32-msvc": "1.7.11", - "@rspack/binding-win32-x64-msvc": "1.7.11" + "@rspack/binding-darwin-arm64": "2.3.0", + "@rspack/binding-darwin-x64": "2.3.0", + "@rspack/binding-linux-arm64-gnu": "2.3.0", + "@rspack/binding-linux-arm64-musl": "2.3.0", + "@rspack/binding-linux-ppc64-gnu": "2.3.0", + "@rspack/binding-linux-riscv64-gnu": "2.3.0", + "@rspack/binding-linux-riscv64-musl": "2.3.0", + "@rspack/binding-linux-s390x-gnu": "2.3.0", + "@rspack/binding-linux-x64-gnu": "2.3.0", + "@rspack/binding-linux-x64-musl": "2.3.0", + "@rspack/binding-wasm32-wasi": "2.3.0", + "@rspack/binding-win32-arm64-msvc": "2.3.0", + "@rspack/binding-win32-ia32-msvc": "2.3.0", + "@rspack/binding-win32-x64-msvc": "2.3.0" } }, "node_modules/@rspack/binding-darwin-arm64": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.11.tgz", - "integrity": "sha512-oduECiZVqbO5zlVw+q7Vy65sJFth99fWPTyucwvLJJtJkPL5n17Uiql2cYP6Ijn0pkqtf1SXgK8WjiKLG5bIig==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-2.3.0.tgz", + "integrity": "sha512-raUm1V29xRm1fPaS2R2qK4Yw5PGo3xooK6Fz2rt74pjJ+UhEUT4ED/8A9Qyf/YW16aMUl58eS5prtth8+UaJSQ==", "cpu": [ "arm64" ], @@ -1457,9 +1415,9 @@ ] }, "node_modules/@rspack/binding-darwin-x64": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.11.tgz", - "integrity": "sha512-a1+TtTE9ap6RalgFi7FGIgkJP6O4Vy6ctv+9WGJy53E4kuqHR0RygzaiVxCI/GMc/vBT9vY23hyrpWb3d1vtXA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-2.3.0.tgz", + "integrity": "sha512-Mi7WUDMvYL14607lzOMkFYiu/NmXIeazVKJd/HmCsPu9H8aUpyf71RcbIY0otCfmpvjX2ZFJ5GrXM1VbYCAxKg==", "cpu": [ "x64" ], @@ -1470,15 +1428,12 @@ ] }, "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.11.tgz", - "integrity": "sha512-P0QrGRPbTWu6RKWfN0bDtbnEps3rXH0MWIMreZABoUrVmNQKtXR6e73J3ub6a+di5s2+K0M2LJ9Bh2/H4UsDUA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-2.3.0.tgz", + "integrity": "sha512-4qHSxhLkjz6Y2r8nW72IyW0sVC1TglNz5198YFEvokQ/O356mwVk3bCS/yz3IdwPu6v4sXylLDB8cEudRoeKwg==", "cpu": [ "arm64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1486,14 +1441,63 @@ ] }, "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.11.tgz", - "integrity": "sha512-6ky7R43VMjWwmx3Yx7Jl7faLBBMAgMDt+/bN35RgwjiPgsIByz65EwytUVuW9rikB43BGHvA/eqlnjLrUzNBqw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-2.3.0.tgz", + "integrity": "sha512-YKbmMCK7RS9YOUKYx2j6hretwv0mPHOQnD2UStDITMAnhsidn63teEyUt5404U53u+tEvyK8toQqqHFbtA/aZQ==", "cpu": [ "arm64" ], - "libc": [ - "musl" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-ppc64-gnu": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-2.3.0.tgz", + "integrity": "sha512-8hI1CiQTQiBxfFevf1jsFoP2PL4jv9Vc4oUG9Q4ryF+xBwqmKSOLgb0MTgiHz0lQ0jg4hbVcb5fR3ZgK0f3lDg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-riscv64-gnu": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-2.3.0.tgz", + "integrity": "sha512-kzXFRjvfQkFd14/zyVG+xNnEurVZPQA1aKL/OcKeIW4niqU13RdIGMbGQ2M8SBfPBbL92ze//CZIiBlz8kZIbg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-riscv64-musl": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-2.3.0.tgz", + "integrity": "sha512-ATJC0MwQmkC+wFyoUtpklemROUaW1IRpf7M6depLaiZXuVN8bx0IMFr/iCL1YBLf5+38NBAXsGwO3/bqYxmdQQ==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-s390x-gnu": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-2.3.0.tgz", + "integrity": "sha512-MWGDa/JKwXNwJiZM/A7Iy4Js7IrEmWExjPefGDFhWmozGJ5BsKdnvD4q3Kb/YfQ+X++LJR5q1o9MkACpdOu/Bw==", + "cpu": [ + "s390x" ], "license": "MIT", "optional": true, @@ -1502,15 +1506,12 @@ ] }, "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.11.tgz", - "integrity": "sha512-cuOJMfCOvb2Wgsry5enXJ3iT1FGUjdPqtGUBVupQlEG4ntSYsQ2PtF4wIDVasR3wdxC5nQbipOrDiN/u6fYsdQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-2.3.0.tgz", + "integrity": "sha512-XxyrjQXvIjxWIct9ceKUBZdeBbNfZ6OkyAKU62xKuyLCyKiwg7M9LhXvKKfvVyFkK7n10a6t/KeIV8+k+kREoQ==", "cpu": [ "x64" ], - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1518,15 +1519,12 @@ ] }, "node_modules/@rspack/binding-linux-x64-musl": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.11.tgz", - "integrity": "sha512-CoK37hva4AmHGh3VCsQXmGr40L36m1/AdnN5LEjUX6kx5rEH7/1nEBN6Ii72pejqDVvk9anEROmPDiPw10tpFg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-2.3.0.tgz", + "integrity": "sha512-XFY3Ayqpb/j9J9npTtOOa8woswCBDZxWfVUkirxxkvHTEk9eAP3/ABd4wxwRuGQuBFf91Emew/g0K/KpFbyH3Q==", "cpu": [ "x64" ], - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1534,22 +1532,24 @@ ] }, "node_modules/@rspack/binding-wasm32-wasi": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.11.tgz", - "integrity": "sha512-OtrmnPUVJMxjNa3eDMfHyPdtlLRmmp/aIm0fQHlAOATbZvlGm12q7rhPW5BXTu1yh+1rQ1/uqvz+SzKEZXuJaQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-2.3.0.tgz", + "integrity": "sha512-d24u2ShgaRE2DipdiuVvZMZKjSse1LpLeHqs5wqm1q8S9MW6sjE2GwlIErXSKuNymSqf0YlaN/11jjxLb2x2qA==", "cpu": [ "wasm32" ], "license": "MIT", "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "1.0.7" + "@emnapi/core": "1.11.3", + "@emnapi/runtime": "1.11.3", + "@napi-rs/wasm-runtime": "1.1.6" } }, "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.11.tgz", - "integrity": "sha512-lObFW6e5lCWNgTBNwT//yiEDbsxm9QG4BYUojqeXxothuzJ/L6ibXz6+gLMvbOvLGV3nKgkXmx8GvT9WDKR0mA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-2.3.0.tgz", + "integrity": "sha512-foalqSBgpsAPCOLd4zxALB7s06uu1YEa7p74rknv2OciF/kd9bGN4tPIpkTTgYPd2Q6KFpae/Vq8zxPSQFDHRA==", "cpu": [ "arm64" ], @@ -1560,9 +1560,9 @@ ] }, "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.11.tgz", - "integrity": "sha512-0pYGnZd8PPqNR68zQ8skamqNAXEA1sUfXuAdYcknIIRq2wsbiwFzIc0Pov1cIfHYab37G7sSIPBiOUdOWF5Ivw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-2.3.0.tgz", + "integrity": "sha512-RVoGgdW0GsWa0fsrqRYQ4JkCLViS/RGqd8gzqgMDmtdyrhHV/bvGiTPYIRYMJPWk9zBhaxA6RAAip3fjKdga8g==", "cpu": [ "ia32" ], @@ -1573,9 +1573,9 @@ ] }, "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.11.tgz", - "integrity": "sha512-EeQXayoQk/uBkI3pdoXfQBXNIUrADq56L3s/DFyM2pJeUDrWmhfIw2UFIGkYPTMSCo8F2JcdcGM32FGJrSnU0Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-2.3.0.tgz", + "integrity": "sha512-gZyb4zPz8WfGbPLMscY7TX8Y1SDBvQdhHF/Gq1nzt3JEHqYFeZJrQHl0C8atH+PrDK5l7d+lY/qRwfuE+qeJ5A==", "cpu": [ "x64" ], @@ -1586,48 +1586,40 @@ ] }, "node_modules/@rspack/core": { - "version": "1.7.11", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.11.tgz", - "integrity": "sha512-rsD9b+Khmot5DwCMiB3cqTQo53ioPG3M/A7BySu8+0+RS7GCxKm+Z+mtsjtG/vsu4Tn2tcqCdZtA3pgLoJB+ew==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-2.3.0.tgz", + "integrity": "sha512-1zylQSMl3xo1f57ZqJMHAoVddRv1BSvpQQVIgWjP51AGhLyeHTAfEf0mphb0wb0bOUf5EujpvvO592X9GMf2qQ==", "license": "MIT", "dependencies": { - "@module-federation/runtime-tools": "0.22.0", - "@rspack/binding": "1.7.11", - "@rspack/lite-tapable": "1.1.0" + "@rspack/binding": "2.3.0" }, "engines": { - "node": ">=18.12.0" + "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { - "@swc/helpers": ">=0.5.1" + "@module-federation/runtime-tools": "^0.24.1 || ^2.0.0", + "@swc/helpers": "^0.5.23" }, "peerDependenciesMeta": { + "@module-federation/runtime-tools": { + "optional": true + }, "@swc/helpers": { "optional": true } } }, - "node_modules/@rspack/lite-tapable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.1.0.tgz", - "integrity": "sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==", - "license": "MIT" - }, "node_modules/@rspack/plugin-react-refresh": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.6.1.tgz", - "integrity": "sha512-eqqW5645VG3CzGzFgNg5HqNdHVXY+567PGjtDhhrM8t67caxmsSzRmT5qfoEIfBcGgFkH9vEg7kzXwmCYQdQDw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-2.0.2.tgz", + "integrity": "sha512-dGNZiCxQxgAUI9sah7gd8u+O7OJZRCmqtEJNDOd8xW5RqcieC86F7p5qcShyw6onH5pKf57evpr2VjGbaFGkZg==", "license": "MIT", - "dependencies": { - "error-stack-parser": "^2.1.4", - "html-entities": "^2.6.0" - }, "peerDependencies": { - "react-refresh": ">=0.10.0 <1.0.0", - "webpack-hot-middleware": "2.x" + "@rspack/core": "^2.0.0", + "react-refresh": ">=0.10.0 <1.0.0" }, "peerDependenciesMeta": { - "webpack-hot-middleware": { + "@rspack/core": { "optional": true } } @@ -1918,9 +1910,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.10.tgz", + "integrity": "sha512-lTyOMnOcmRBzdCv6/4zUZCrEhV0xrqQiUZBZtVcbmLHBXKLnN8q89v/wKRF/Q0HbwVsqbIG3o5HDoFl9sduM+g==", "license": "MIT" }, "node_modules/@types/json-schema": { @@ -1930,9 +1922,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "26.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz", - "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==", + "version": "26.6.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.6.tgz", + "integrity": "sha512-MzQj+8Kx3XI40OmUAE6Qoh58ZMNstNNMwn2nfd3qWsfe7nDNSqJNzes4njhz6AHwrSHOffSLwXU6yb474Q4aog==", "license": "MIT", "dependencies": { "undici-types": "~8.9.0" @@ -2130,6 +2122,22 @@ "acorn": "^8.14.0" } }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/ajv-formats": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", @@ -2147,28 +2155,18 @@ } } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", - "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "fast-deep-equal": "^3.1.3" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2188,9 +2186,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.11.28", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.28.tgz", - "integrity": "sha512-br0LOmjJqr6Rt4AEkadbcNf67Zpo7EPwKsWbjnRrJIa1QYFHQBqM4C7F2WTbV8ahTEcg1Eo+Y0aWjjORInYFyA==", + "version": "2.11.37", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.37.tgz", + "integrity": "sha512-QYph+vfurmaxhNwi9FprfmtkT5cx2Keg8FzZ0vnjO8ukscIybVyZGMFwdllKGlTI6qyU8ck43OM9UXh+IFJihQ==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -2200,9 +2198,9 @@ } }, "node_modules/browserslist": { - "version": "4.29.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.3.tgz", - "integrity": "sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA==", + "version": "4.29.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.5.tgz", + "integrity": "sha512-khTmKu5NGYTotqcYo8Bew2k4RAE9PuXRSFRXG2lQBrCEQHyeQ/vX6gKMxfokwywBsLiXZMnHsmWMG1pnO8J7uQ==", "funding": [ { "type": "opencollective", @@ -2219,11 +2217,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.11.26", - "caniuse-lite": "^1.0.30001813", - "electron-to-chromium": "^1.5.439", - "node-releases": "^2.0.57", - "update-browserslist-db": "^1.3.3" + "baseline-browser-mapping": "^2.11.33", + "caniuse-lite": "^1.0.30001819", + "electron-to-chromium": "^1.5.464", + "node-releases": "^2.0.60", + "update-browserslist-db": "^1.3.4" }, "bin": { "browserslist": "cli.js" @@ -2260,9 +2258,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001816", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001816.tgz", - "integrity": "sha512-+8Yx7BXCoqk6IF8yTicjfUR6D/ldJzdlsodlEOiOSPmhK844WIgk67/zIQaGAOxNkZyyvBlrRFnLvqKIoqbAFw==", + "version": "1.0.30001826", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001826.tgz", + "integrity": "sha512-wTB+9tIbLro/BCXwLuNV1meHE4L9dS6dArMDwgYfNBPMYScqClHyGunhkCSDtHhe/69Xl0sHlKgBVZ+fNsYtWA==", "funding": [ { "type": "opencollective", @@ -2288,6 +2286,12 @@ "node": ">=6.0" } }, + "node_modules/client-zip": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/client-zip/-/client-zip-2.5.1.tgz", + "integrity": "sha512-yOvNSBsQX1B7wtdvIVXJEIIShrlPiX+adhli7sWvQhsx3nX1DjvpSt+AwOxaX+3DCsT/Yx0nRy5hIjRLIYfebw==", + "license": "MIT" + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -2376,9 +2380,9 @@ } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.6.tgz", + "integrity": "sha512-9lpSSU4Mly3mrtruwLs1eLK6+gzbzqeBFwRNjIjE+9LuDpWdYctrQlQ3ej1Ilgi7gknpsTRnPoLP8DpCHqHIJw==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -2387,18 +2391,6 @@ "node": ">=10" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -2455,15 +2447,15 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.456", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.456.tgz", - "integrity": "sha512-8hboqI6xesozteFb8aa7OGknvxUtTeRJLz0FoePysUEh/oWbddykIGdgpEJRbPRg/nIMfBf2DFos+H2MtvJl2A==", + "version": "1.5.485", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.485.tgz", + "integrity": "sha512-m3uadzR0Z+sR19HGWgfxoZcKv9hE/edVM9OZ+FJ4wNRyfuFtkwZJIDoehEty5sisYVwmge8lKV1tenWOyClVgw==", "license": "ISC" }, "node_modules/enhanced-resolve": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.26.0.tgz", - "integrity": "sha512-9vhedylFonb2YGogzUKX6+Ja72gOJbN1QHAqdrvqLwhdl/QWbKopzoUC9EbQNVsAns/bx/4uyqalrQAoy1IByw==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.27.0.tgz", + "integrity": "sha512-Do6BB2xzlcc/odFg+XEYyneAx4T/WfywO71yw9ePS2tVfRsf7JVR4mUeELadIeHzixkzbG5DpluiEFPi2WGfYQ==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -2494,15 +2486,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "license": "MIT", - "dependencies": { - "stackframe": "^1.3.4" - } - }, "node_modules/es-module-lexer": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", @@ -2559,6 +2542,19 @@ "node": ">=6" } }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -2584,7 +2580,7 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { + "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -2593,6 +2589,15 @@ "node": ">=4.0" } }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -2632,9 +2637,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz", - "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.9.tgz", + "integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==", "funding": [ { "type": "github", @@ -2681,10 +2686,10 @@ "license": "BSD-2-Clause" }, "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.12.tgz", + "integrity": "sha512-iuyGF2E4oafQfPsRrG2wtY2ILupMhvtdrhzrxB+0VcjsPpSPttpfYdjnGFGsTi5MaJFjI1jOKHPQ6UTbTj9TAw==", + "license": "BlueOak-1.0.0" }, "node_modules/has-flag": { "version": "4.0.0", @@ -2695,22 +2700,6 @@ "node": ">=8" } }, - "node_modules/html-entities": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", - "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -2813,21 +2802,6 @@ "node": ">= 10.13.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2874,6 +2848,12 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "license": "MIT" }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -2942,9 +2922,9 @@ } }, "node_modules/mediabunny": { - "version": "1.61.3", - "resolved": "https://registry.npmjs.org/mediabunny/-/mediabunny-1.61.3.tgz", - "integrity": "sha512-kUqLKVXQVwHR62GkOJxYosAmXERJbqnXBgJDTtRlxHEYviVkMg/Evhl9XN6kedqS5LP1tV4kFKyzY/V4a4ofow==", + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/mediabunny/-/mediabunny-1.64.0.tgz", + "integrity": "sha512-ILat5qSwfmZjnYhk7Dc8uEvEQNtzXNxUVyfxR9Fp6JRa8Axsg5xE1EXwCTOzXJHhH/a2eyk6sZ1ffivCk4rIXg==", "license": "MPL-2.0", "workspaces": [ ".", @@ -3054,9 +3034,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.59", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.59.tgz", - "integrity": "sha512-5qr2okC4ItAI0hG5SaV0HoYMpnM/Y6+Oqr7AmPYy/2uEoGvS+GbSKLeRxSS1uAdu59yz0ouzcuXievSgg///WA==", + "version": "2.0.64", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.64.tgz", + "integrity": "sha512-zAPCKqMcnqs2nGy6nlkm7JduFseiBJy3EXHGLh+8pFR+TxGCBxxiEN21+UROU5CKwX/f4TlUcYjiM+vs/tsyxw==", "license": "MIT", "engines": { "node": ">=18" @@ -3161,9 +3141,9 @@ "license": "ISC" }, "node_modules/postcss": { - "version": "8.5.30", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz", - "integrity": "sha512-zkd+e9S1AQHhmaBKye9zlFHWjOwVgqXl1q3ECYy8561K7qxR2cREf/STLskulBFd78k6AOFeA+ff1TtEzk9bAA==", + "version": "8.5.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.32.tgz", + "integrity": "sha512-LJlKCCAUFKOuZxipUdYw1NzIITEsPcgyOG9LkvRJvuKj/bRzbuRY0ARXvL0pWGpsZvn8jku+LMep2eU0seHp8g==", "funding": [ { "type": "opencollective", @@ -3248,12 +3228,11 @@ } }, "node_modules/postcss-selector-parser": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.6.tgz", - "integrity": "sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.2.1.tgz", + "integrity": "sha512-GwxlMgTTXwIom+ebC7an3k6RaJDwklRQQnfiXsLPGicu8FYV/k/+1/9YY2OU2+r938H2t4X0TDxoif+HP2rjzQ==", "license": "MIT", "dependencies": { - "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" }, "engines": { @@ -3344,9 +3323,9 @@ } }, "node_modules/remotion": { - "version": "4.0.535", - "resolved": "https://registry.npmjs.org/remotion/-/remotion-4.0.535.tgz", - "integrity": "sha512-BfrVKlgo2+g3VcjFoHMhkLrJgwyX+IgEbljwKiZ6M+UCJlvpHhXkfT968iYfr+1VDvH5JWQUIUmHQhoU9PLCEw==", + "version": "4.0.543", + "resolved": "https://registry.npmjs.org/remotion/-/remotion-4.0.543.tgz", + "integrity": "sha512-p3PS2+ZsaFBp1KiyiTsMDyLM9x7csvkCaFQN3DLSwuye+BFht+eLT7hvp2R3rvhQ7pa0SHPZwcYdOEKS1XbqIA==", "license": "SEE LICENSE IN LICENSE.md", "peerDependencies": { "react": ">=16.8.0", @@ -3378,9 +3357,9 @@ "license": "MIT" }, "node_modules/schema-utils": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.5.0.tgz", - "integrity": "sha512-zJlMCZ0cAR5p/Y4oVpRoqioDMJcGxaXRrQ/4rP4WyR84vc5z/DolXdbvXeDpTwbtocDFr2rhPqHPErDCUtz2kA==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.8.3.tgz", + "integrity": "sha512-qIfo3f+lRNqnMPgpXSKvUhsT3pY5U+ppmgGr4j8LanFP3W/Ze+xj8DY/dPb5qVu3m6qFIMyMWKVRLNKxrNhxWg==", "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.15", @@ -3388,48 +3367,25 @@ "ajv-formats": "^3.0.1", "ajv-keywords": "^5.1.0" }, + "bin": { + "schema-utils": "bin/schema-utils.js" + }, "engines": { "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", - "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" }, "peerDependencies": { - "ajv": "^8.8.2" + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } } }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, "node_modules/semver": { "version": "7.5.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", @@ -3543,12 +3499,6 @@ "node": ">=0.10.0" } }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "license": "MIT" - }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -3574,6 +3524,21 @@ "webpack": "^5.27.0" } }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/svg-parser": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.1.0.tgz", @@ -3584,9 +3549,9 @@ } }, "node_modules/tapable": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", - "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.4.tgz", + "integrity": "sha512-NHFiWnAbMJxNNpBwiO7jJVGDuqMxT9/oV8v57RR+fgBQShkJil5inGD8/xWy0hjLyHQyX1tu27QANhlz3KBqCg==", "license": "MIT", "engines": { "node": ">=6" @@ -3690,9 +3655,9 @@ } }, "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.9.1.tgz", + "integrity": "sha512-a4Ux9VKuIMHsOS7ENbEq6hK2ZGYIT27Rtl0E4eD9KqwxhKiQeMZE/9xb3IdYwWaSOyIBQLExhQgXDTYoiCxnWA==", "license": "0BSD" }, "node_modules/typescript": { @@ -3752,9 +3717,9 @@ "license": "MIT" }, "node_modules/watchpack": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.6.1.tgz", - "integrity": "sha512-8mk/LnXpQAiM2xKZhTkxikwly5GhL2Z+DWiLTkMa/E1Nfv9zURhHgiFyWvM4BWqW+LjIgL2AIS7JntEUx6v3vQ==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.6.4.tgz", + "integrity": "sha512-5H3Tce2GfzWbcr9VnSqyak2whFaONw4BdmI5BDnMXold4qSlCFd64XaMQESRh2vkDKmdUkv6rUo17UvZ9f9nXw==", "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2" @@ -3812,36 +3777,14 @@ } }, "node_modules/webpack-sources": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.6.0.tgz", - "integrity": "sha512-EIMmPVvNI0CYXyRPp34F2Qk7W37/BZVZIofS6LAUnrNjCVahS+hO4mxwFJDjQjODTGZDtVzLYoN2+1dYkhk9qA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.7.0.tgz", + "integrity": "sha512-PdUhbCycwEgiS1hB/FBDksWKg/ashAIuJKqwdbPn8/dFVgU5LxQiBvG0js6VRRIzPujMrStYCczywp82P0KWng==", "license": "MIT", "engines": { "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3885,9 +3828,9 @@ "license": "ISC" }, "node_modules/zod": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.5.4.tgz", - "integrity": "sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==", + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/demo/package.json b/demo/package.json index bdc394d..d817a34 100644 --- a/demo/package.json +++ b/demo/package.json @@ -6,11 +6,11 @@ "license": "MIT", "private": true, "dependencies": { - "@remotion/cli": "4.0.535", - "@remotion/media": "4.0.535", + "@remotion/cli": "4.0.543", + "@remotion/media": "4.0.543", "react": "19.2.3", "react-dom": "19.2.3", - "remotion": "4.0.535" + "remotion": "4.0.543" }, "devDependencies": { "@types/react": "19.2.7", diff --git a/requirements-build.txt b/requirements-build.txt index 0e94cf4..3d0d0d1 100644 --- a/requirements-build.txt +++ b/requirements-build.txt @@ -3,5 +3,5 @@ build==1.6.1 --hash=sha256:ecd351a4be9d35a9eaaba244a7687143c9c7d4aea6ac964e7e7dd colorama==0.4.6 --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 packaging==26.3 --hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c pyproject_hooks==1.3.3 --hash=sha256:5fc53fdac9f7bd63fbcdc868fb5f90b4784d78a53a3d3388cd738b807441a20b -setuptools==84.0.0 --hash=sha256:51a52592b3b99e102b609654876bd65f19f999935166d1352678931132b0c670 +setuptools==84.1.0 --hash=sha256:5231689c6ac8156cd155cfb98c3fd6fb252c3e7e9bd3d78b64d3c55f132624c9 tomli==2.5.0 --hash=sha256:32a7b79ac57a2e83670ce329ccf675798bc5a2094783a63676866b70503f2e2b