From 31361fb62657dc56388b76fc01a7dab8fed26a6a Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 23 Feb 2026 07:03:26 -0800 Subject: [PATCH] Add more complexity/tests to examples --- .pre-commit-config.yaml | 8 + README.md | 17 + examples/BUILD.bazel | 46 +- examples/MODULE.bazel | 2 + examples/MODULE.bazel.lock | 533 +++++++++++++++++++++ examples/assets/source/smile.svg | 21 + examples/example.typ | 33 +- examples/generated/source_sync/example.pdf | Bin 0 -> 27377 bytes examples/tools/generate_svgs.py | 49 ++ typst/private/tests/BUILD.bazel | 6 + typst/private/tests/simple/BUILD.bazel | 1 + 11 files changed, 697 insertions(+), 19 deletions(-) create mode 100644 .pre-commit-config.yaml create mode 100644 examples/MODULE.bazel.lock create mode 100644 examples/assets/source/smile.svg create mode 100644 examples/generated/source_sync/example.pdf create mode 100644 examples/tools/generate_svgs.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..48810b8 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,8 @@ +repos: + - repo: https://github.com/keith/pre-commit-buildifier + rev: 8.2.0 + hooks: + - id: buildifier + - id: buildifier-lint + args: + - --warnings=all diff --git a/README.md b/README.md index faf71cc..5ef453f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,20 @@ # rules_typst Bazel rules for [Typst](https://typst.app/). + +## Development + +### Pre-commit hooks + +This repo uses [pre-commit](https://pre-commit.com/) to run [buildifier](https://github.com/bazelbuild/buildtools/tree/master/buildifier) for formatting and linting Bazel files. + +```sh +pip install pre-commit +pre-commit install +``` + +To manually run against all files: + +```sh +pre-commit run --all-files +``` diff --git a/examples/BUILD.bazel b/examples/BUILD.bazel index 1229074..5bd5435 100644 --- a/examples/BUILD.bazel +++ b/examples/BUILD.bazel @@ -1,15 +1,38 @@ +load("@bazel_lib//lib:write_source_files.bzl", "write_source_file") +load("@bazel_skylib//rules:build_test.bzl", "build_test") load("@bazel_skylib//rules:copy_file.bzl", "copy_file") +load("@bazel_skylib//rules:run_binary.bzl", "run_binary") +load("@rules_python//python:defs.bzl", "py_binary") load("@rules_typst//typst:typst.bzl", "typst") filegroup( - name = "smile", - srcs = ["smile.svg"], + name = "smile_source", + srcs = ["assets/source/smile.svg"], ) copy_file( name = "frown", - src = ":smile", - out = "frown.svg", + src = ":smile_source", + out = "assets/derived/frown.svg", +) + +py_binary( + name = "generate_svgs", + srcs = ["tools/generate_svgs.py"], + main = "tools/generate_svgs.py", +) + +run_binary( + name = "generated_svg_set", + outs = [ + "generated/python/diamond.svg", + "generated/python/stripes.svg", + ], + args = [ + "$(location generated/python/diamond.svg)", + "$(location generated/python/stripes.svg)", + ], + tool = ":generate_svgs", ) typst( @@ -17,6 +40,19 @@ typst( src = "example.typ", data = [ ":frown", - ":smile", + ":generated_svg_set", + ":smile_source", ], ) + +write_source_file( + name = "write_example_pdf", + diff_test = True, + in_file = ":example", + out_file = "generated/source_sync/example.pdf", +) + +build_test( + name = "example_build_test", + targets = [":example"], +) diff --git a/examples/MODULE.bazel b/examples/MODULE.bazel index c0505d6..073eac6 100644 --- a/examples/MODULE.bazel +++ b/examples/MODULE.bazel @@ -7,6 +7,8 @@ module( bazel_dep(name = "rules_typst", version = "0.0.0") bazel_dep(name = "bazel_skylib", version = "1.8.2") +bazel_dep(name = "rules_python", version = "1.7.0") +bazel_dep(name = "aspect_bazel_lib", version = "2.22.5", repo_name = "bazel_lib") local_path_override( module_name = "rules_typst", diff --git a/examples/MODULE.bazel.lock b/examples/MODULE.bazel.lock new file mode 100644 index 0000000..e4e2604 --- /dev/null +++ b/examples/MODULE.bazel.lock @@ -0,0 +1,533 @@ +{ + "lockFileVersion": 26, + "registryFileHashes": { + "https://bcr.bazel.build/bazel_registry.json": "8a28e4aff06ee60aed2a8c281907fb8bcbf3b753c91fb5a5c57da3215d5b3497", + "https://bcr.bazel.build/modules/abseil-cpp/20210324.2/MODULE.bazel": "7cd0312e064fde87c8d1cd79ba06c876bd23630c83466e9500321be55c96ace2", + "https://bcr.bazel.build/modules/abseil-cpp/20211102.0/MODULE.bazel": "70390338f7a5106231d20620712f7cccb659cd0e9d073d1991c038eb9fc57589", + "https://bcr.bazel.build/modules/abseil-cpp/20230125.1/MODULE.bazel": "89047429cb0207707b2dface14ba7f8df85273d484c2572755be4bab7ce9c3a0", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0.bcr.1/MODULE.bazel": "1c8cec495288dccd14fdae6e3f95f772c1c91857047a098fad772034264cc8cb", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.0/MODULE.bazel": "d253ae36a8bd9ee3c5955384096ccb6baf16a1b1e93e858370da0a3b94f77c16", + "https://bcr.bazel.build/modules/abseil-cpp/20230802.1/MODULE.bazel": "fa92e2eb41a04df73cdabeec37107316f7e5272650f81d6cc096418fe647b915", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.1/MODULE.bazel": "37bcdb4440fbb61df6a1c296ae01b327f19e9bb521f9b8e26ec854b6f97309ed", + "https://bcr.bazel.build/modules/abseil-cpp/20240116.2/MODULE.bazel": "73939767a4686cd9a520d16af5ab440071ed75cec1a876bf2fcfaf1f71987a16", + "https://bcr.bazel.build/modules/abseil-cpp/20250127.1/MODULE.bazel": "c4a89e7ceb9bf1e25cf84a9f830ff6b817b72874088bf5141b314726e46a57c1", + "https://bcr.bazel.build/modules/abseil-cpp/20250512.1/MODULE.bazel": "d209fdb6f36ffaf61c509fcc81b19e81b411a999a934a032e10cd009a0226215", + "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/MODULE.bazel": "51f2312901470cdab0dbdf3b88c40cd21c62a7ed58a3de45b365ddc5b11bcab2", + "https://bcr.bazel.build/modules/abseil-cpp/20250814.1/source.json": "cea3901d7e299da7320700abbaafe57a65d039f10d0d7ea601c4a66938ea4b0c", + "https://bcr.bazel.build/modules/apple_support/1.11.1/MODULE.bazel": "1843d7cd8a58369a444fc6000e7304425fba600ff641592161d9f15b179fb896", + "https://bcr.bazel.build/modules/apple_support/1.15.1/MODULE.bazel": "a0556fefca0b1bb2de8567b8827518f94db6a6e7e7d632b4c48dc5f865bc7c85", + "https://bcr.bazel.build/modules/apple_support/1.21.0/MODULE.bazel": "ac1824ed5edf17dee2fdd4927ada30c9f8c3b520be1b5fd02a5da15bc10bff3e", + "https://bcr.bazel.build/modules/apple_support/1.21.1/MODULE.bazel": "5809fa3efab15d1f3c3c635af6974044bac8a4919c62238cce06acee8a8c11f1", + "https://bcr.bazel.build/modules/apple_support/1.24.1/MODULE.bazel": "f46e8ddad60aef170ee92b2f3d00ef66c147ceafea68b6877cb45bd91737f5f8", + "https://bcr.bazel.build/modules/apple_support/1.24.2/MODULE.bazel": "0e62471818affb9f0b26f128831d5c40b074d32e6dda5a0d3852847215a41ca4", + "https://bcr.bazel.build/modules/apple_support/1.24.2/source.json": "2c22c9827093250406c5568da6c54e6fdf0ef06238def3d99c71b12feb057a8d", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.14.0/MODULE.bazel": "2b31ffcc9bdc8295b2167e07a757dbbc9ac8906e7028e5170a3708cecaac119f", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.19.3/MODULE.bazel": "253d739ba126f62a5767d832765b12b59e9f8d2bc88cc1572f4a73e46eb298ca", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.5/MODULE.bazel": "004ba890363d05372a97248c37205ae64b6fa31047629cd2c0895a9d0c7779e8", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.22.5/source.json": "ac2c3213df8f985785f1d0aeb7f0f73d5324e6e67d593d9b9470fb74a25d4a9b", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", + "https://bcr.bazel.build/modules/bazel_features/1.1.1/MODULE.bazel": "27b8c79ef57efe08efccbd9dd6ef70d61b4798320b8d3c134fd571f78963dbcd", + "https://bcr.bazel.build/modules/bazel_features/1.10.0/MODULE.bazel": "f75e8807570484a99be90abcd52b5e1f390362c258bcb73106f4544957a48101", + "https://bcr.bazel.build/modules/bazel_features/1.11.0/MODULE.bazel": "f9382337dd5a474c3b7d334c2f83e50b6eaedc284253334cf823044a26de03e8", + "https://bcr.bazel.build/modules/bazel_features/1.15.0/MODULE.bazel": "d38ff6e517149dc509406aca0db3ad1efdd890a85e049585b7234d04238e2a4d", + "https://bcr.bazel.build/modules/bazel_features/1.17.0/MODULE.bazel": "039de32d21b816b47bd42c778e0454217e9c9caac4a3cf8e15c7231ee3ddee4d", + "https://bcr.bazel.build/modules/bazel_features/1.18.0/MODULE.bazel": "1be0ae2557ab3a72a57aeb31b29be347bcdc5d2b1eb1e70f39e3851a7e97041a", + "https://bcr.bazel.build/modules/bazel_features/1.19.0/MODULE.bazel": "59adcdf28230d220f0067b1f435b8537dd033bfff8db21335ef9217919c7fb58", + "https://bcr.bazel.build/modules/bazel_features/1.21.0/MODULE.bazel": "675642261665d8eea09989aa3b8afb5c37627f1be178382c320d1b46afba5e3b", + "https://bcr.bazel.build/modules/bazel_features/1.23.0/MODULE.bazel": "fd1ac84bc4e97a5a0816b7fd7d4d4f6d837b0047cf4cbd81652d616af3a6591a", + "https://bcr.bazel.build/modules/bazel_features/1.27.0/MODULE.bazel": "621eeee06c4458a9121d1f104efb80f39d34deff4984e778359c60eaf1a8cb65", + "https://bcr.bazel.build/modules/bazel_features/1.28.0/MODULE.bazel": "4b4200e6cbf8fa335b2c3f43e1d6ef3e240319c33d43d60cc0fbd4b87ece299d", + "https://bcr.bazel.build/modules/bazel_features/1.3.0/MODULE.bazel": "cdcafe83ec318cda34e02948e81d790aab8df7a929cec6f6969f13a489ccecd9", + "https://bcr.bazel.build/modules/bazel_features/1.30.0/MODULE.bazel": "a14b62d05969a293b80257e72e597c2da7f717e1e69fa8b339703ed6731bec87", + "https://bcr.bazel.build/modules/bazel_features/1.32.0/MODULE.bazel": "095d67022a58cb20f7e20e1aefecfa65257a222c18a938e2914fd257b5f1ccdc", + "https://bcr.bazel.build/modules/bazel_features/1.33.0/MODULE.bazel": "8b8dc9d2a4c88609409c3191165bccec0e4cb044cd7a72ccbe826583303459f6", + "https://bcr.bazel.build/modules/bazel_features/1.33.0/source.json": "13617db3930328c2cd2807a0f13d52ca870ac05f96db9668655113265147b2a6", + "https://bcr.bazel.build/modules/bazel_features/1.4.1/MODULE.bazel": "e45b6bb2350aff3e442ae1111c555e27eac1d915e77775f6fdc4b351b758b5d7", + "https://bcr.bazel.build/modules/bazel_features/1.9.0/MODULE.bazel": "885151d58d90d8d9c811eb75e3288c11f850e1d6b481a8c9f766adee4712358b", + "https://bcr.bazel.build/modules/bazel_features/1.9.1/MODULE.bazel": "8f679097876a9b609ad1f60249c49d68bfab783dd9be012faf9d82547b14815a", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0/MODULE.bazel": "22b70b80ac89ad3f3772526cd9feee2fa412c2b01933fea7ed13238a448d370d", + "https://bcr.bazel.build/modules/bazel_lib/3.0.0/source.json": "895f21909c6fba01d7c17914bb6c8e135982275a1b18cdaa4e62272217ef1751", + "https://bcr.bazel.build/modules/bazel_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", + "https://bcr.bazel.build/modules/bazel_skylib/1.1.1/MODULE.bazel": "1add3e7d93ff2e6998f9e118022c84d163917d912f5afafb3058e3d2f1545b5e", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.0/MODULE.bazel": "44fe84260e454ed94ad326352a698422dbe372b21a1ac9f3eab76eb531223686", + "https://bcr.bazel.build/modules/bazel_skylib/1.2.1/MODULE.bazel": "f35baf9da0efe45fa3da1696ae906eea3d615ad41e2e3def4aeb4e8bc0ef9a7a", + "https://bcr.bazel.build/modules/bazel_skylib/1.3.0/MODULE.bazel": "20228b92868bf5cfc41bda7afc8a8ba2a543201851de39d990ec957b513579c5", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.1/MODULE.bazel": "a0dcb779424be33100dcae821e9e27e4f2901d9dfd5333efe5ac6a8d7ab75e1d", + "https://bcr.bazel.build/modules/bazel_skylib/1.4.2/MODULE.bazel": "3bd40978e7a1fac911d5989e6b09d8f64921865a45822d8b09e815eaa726a651", + "https://bcr.bazel.build/modules/bazel_skylib/1.5.0/MODULE.bazel": "32880f5e2945ce6a03d1fbd588e9198c0a959bb42297b2cfaf1685b7bc32e138", + "https://bcr.bazel.build/modules/bazel_skylib/1.6.1/MODULE.bazel": "8fdee2dbaace6c252131c00e1de4b165dc65af02ea278476187765e1a617b917", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.0/MODULE.bazel": "0db596f4563de7938de764cc8deeabec291f55e8ec15299718b93c4423e9796d", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.1/MODULE.bazel": "88ade7293becda963e0e3ea33e7d54d3425127e0a326e0d17da085a5f1f03ff6", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/MODULE.bazel": "69ad6927098316848b34a9142bcc975e018ba27f08c4ff403f50c1b6e646ca67", + "https://bcr.bazel.build/modules/bazel_skylib/1.8.2/source.json": "34a3c8bcf233b835eb74be9d628899bb32999d3e0eadef1947a0a562a2b16ffb", + "https://bcr.bazel.build/modules/buildozer/8.2.1/MODULE.bazel": "61e9433c574c2bd9519cad7fa66b9c1d2b8e8d5f3ae5d6528a2c2d26e68d874d", + "https://bcr.bazel.build/modules/buildozer/8.2.1/source.json": "7c33f6a26ee0216f85544b4bca5e9044579e0219b6898dd653f5fb449cf2e484", + "https://bcr.bazel.build/modules/gawk/5.3.2.bcr.1/MODULE.bazel": "cdf8cbe5ee750db04b78878c9633cc76e80dcf4416cbe982ac3a9222f80713c8", + "https://bcr.bazel.build/modules/gawk/5.3.2.bcr.1/source.json": "fa7b512dfcb5eafd90ce3959cf42a2a6fe96144ebbb4b3b3928054895f2afac2", + "https://bcr.bazel.build/modules/google_benchmark/1.8.2/MODULE.bazel": "a70cf1bba851000ba93b58ae2f6d76490a9feb74192e57ab8e8ff13c34ec50cb", + "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", + "https://bcr.bazel.build/modules/googletest/1.14.0.bcr.1/MODULE.bazel": "22c31a561553727960057361aa33bf20fb2e98584bc4fec007906e27053f80c6", + "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/googletest/1.15.2/MODULE.bazel": "6de1edc1d26cafb0ea1a6ab3f4d4192d91a312fd2d360b63adaa213cd00b2108", + "https://bcr.bazel.build/modules/googletest/1.17.0/MODULE.bazel": "dbec758171594a705933a29fcf69293d2468c49ec1f2ebca65c36f504d72df46", + "https://bcr.bazel.build/modules/googletest/1.17.0/source.json": "38e4454b25fc30f15439c0378e57909ab1fd0a443158aa35aec685da727cd713", + "https://bcr.bazel.build/modules/jq.bzl/0.1.0/MODULE.bazel": "2ce69b1af49952cd4121a9c3055faa679e748ce774c7f1fda9657f936cae902f", + "https://bcr.bazel.build/modules/jq.bzl/0.1.0/source.json": "746bf13cac0860f091df5e4911d0c593971cd8796b5ad4e809b2f8e133eee3d5", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", + "https://bcr.bazel.build/modules/jsoncpp/1.9.6/MODULE.bazel": "2f8d20d3b7d54143213c4dfc3d98225c42de7d666011528dc8fe91591e2e17b0", + "https://bcr.bazel.build/modules/jsoncpp/1.9.6/source.json": "a04756d367a2126c3541682864ecec52f92cdee80a35735a3cb249ce015ca000", + "https://bcr.bazel.build/modules/libpfm/4.11.0/MODULE.bazel": "45061ff025b301940f1e30d2c16bea596c25b176c8b6b3087e92615adbd52902", + "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/MODULE.bazel": "6f7b417dcc794d9add9e556673ad25cb3ba835224290f4f848f8e2db1e1fca74", + "https://bcr.bazel.build/modules/nlohmann_json/3.6.1/source.json": "f448c6e8963fdfa7eb831457df83ad63d3d6355018f6574fb017e8169deb43a9", + "https://bcr.bazel.build/modules/package_metadata/0.0.2/MODULE.bazel": "fb8d25550742674d63d7b250063d4580ca530499f045d70748b1b142081ebb92", + "https://bcr.bazel.build/modules/package_metadata/0.0.2/source.json": "e53a759a72488d2c0576f57491ef2da0cf4aab05ac0997314012495935531b73", + "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", + "https://bcr.bazel.build/modules/platforms/0.0.11/MODULE.bazel": "0daefc49732e227caa8bfa834d65dc52e8cc18a2faf80df25e8caea151a9413f", + "https://bcr.bazel.build/modules/platforms/0.0.4/MODULE.bazel": "9b328e31ee156f53f3c416a64f8491f7eb731742655a47c9eec4703a71644aee", + "https://bcr.bazel.build/modules/platforms/0.0.5/MODULE.bazel": "5733b54ea419d5eaf7997054bb55f6a1d0b5ff8aedf0176fef9eea44f3acda37", + "https://bcr.bazel.build/modules/platforms/0.0.6/MODULE.bazel": "ad6eeef431dc52aefd2d77ed20a4b353f8ebf0f4ecdd26a807d2da5aa8cd0615", + "https://bcr.bazel.build/modules/platforms/0.0.7/MODULE.bazel": "72fd4a0ede9ee5c021f6a8dd92b503e089f46c227ba2813ff183b71616034814", + "https://bcr.bazel.build/modules/platforms/0.0.8/MODULE.bazel": "9f142c03e348f6d263719f5074b21ef3adf0b139ee4c5133e2aa35664da9eb2d", + "https://bcr.bazel.build/modules/platforms/0.0.9/MODULE.bazel": "4a87a60c927b56ddd67db50c89acaa62f4ce2a1d2149ccb63ffd871d5ce29ebc", + "https://bcr.bazel.build/modules/platforms/1.0.0/MODULE.bazel": "f05feb42b48f1b3c225e4ccf351f367be0371411a803198ec34a389fb22aa580", + "https://bcr.bazel.build/modules/platforms/1.0.0/source.json": "f4ff1fd412e0246fd38c82328eb209130ead81d62dcd5a9e40910f867f733d96", + "https://bcr.bazel.build/modules/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", + "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/29.0-rc2/MODULE.bazel": "6241d35983510143049943fc0d57937937122baf1b287862f9dc8590fc4c37df", + "https://bcr.bazel.build/modules/protobuf/29.0-rc3/MODULE.bazel": "33c2dfa286578573afc55a7acaea3cada4122b9631007c594bf0729f41c8de92", + "https://bcr.bazel.build/modules/protobuf/29.1/MODULE.bazel": "557c3457560ff49e122ed76c0bc3397a64af9574691cb8201b4e46d4ab2ecb95", + "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", + "https://bcr.bazel.build/modules/protobuf/32.1/MODULE.bazel": "89cd2866a9cb07fee9ff74c41ceace11554f32e0d849de4e23ac55515cfada4d", + "https://bcr.bazel.build/modules/protobuf/33.4/MODULE.bazel": "114775b816b38b6d0ca620450d6b02550c60ceedfdc8d9a229833b34a223dc42", + "https://bcr.bazel.build/modules/protobuf/33.4/source.json": "555f8686b4c7d6b5ba731fbea13bf656b4bfd9a7ff629c1d9d3f6e1d6155de79", + "https://bcr.bazel.build/modules/pybind11_bazel/2.11.1/MODULE.bazel": "88af1c246226d87e65be78ed49ecd1e6f5e98648558c14ce99176da041dc378e", + "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/MODULE.bazel": "e6f4c20442eaa7c90d7190d8dc539d0ab422f95c65a57cc59562170c58ae3d34", + "https://bcr.bazel.build/modules/pybind11_bazel/2.12.0/source.json": "6900fdc8a9e95866b8c0d4ad4aba4d4236317b5c1cd04c502df3f0d33afed680", + "https://bcr.bazel.build/modules/re2/2023-09-01/MODULE.bazel": "cb3d511531b16cfc78a225a9e2136007a48cf8a677e4264baeab57fe78a80206", + "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/MODULE.bazel": "b4963dda9b31080be1905ef085ecd7dd6cd47c05c79b9cdf83ade83ab2ab271a", + "https://bcr.bazel.build/modules/re2/2024-07-02.bcr.1/source.json": "2ff292be6ef3340325ce8a045ecc326e92cbfab47c7cbab4bd85d28971b97ac4", + "https://bcr.bazel.build/modules/re2/2024-07-02/MODULE.bazel": "0eadc4395959969297cbcf31a249ff457f2f1d456228c67719480205aa306daa", + "https://bcr.bazel.build/modules/rules_android/0.1.1/MODULE.bazel": "48809ab0091b07ad0182defb787c4c5328bd3a278938415c00a7b69b50c4d3a8", + "https://bcr.bazel.build/modules/rules_android/0.1.1/source.json": "e6986b41626ee10bdc864937ffb6d6bf275bb5b9c65120e6137d56e6331f089e", + "https://bcr.bazel.build/modules/rules_apple/3.16.0/MODULE.bazel": "0d1caf0b8375942ce98ea944be754a18874041e4e0459401d925577624d3a54a", + "https://bcr.bazel.build/modules/rules_apple/4.1.0/MODULE.bazel": "76e10fd4a48038d3fc7c5dc6e63b7063bbf5304a2e3bd42edda6ec660eebea68", + "https://bcr.bazel.build/modules/rules_apple/4.1.0/source.json": "8ee81e1708756f81b343a5eb2b2f0b953f1d25c4ab3d4a68dc02754872e80715", + "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", + "https://bcr.bazel.build/modules/rules_cc/0.0.10/MODULE.bazel": "ec1705118f7eaedd6e118508d3d26deba2a4e76476ada7e0e3965211be012002", + "https://bcr.bazel.build/modules/rules_cc/0.0.13/MODULE.bazel": "0e8529ed7b323dad0775ff924d2ae5af7640b23553dfcd4d34344c7e7a867191", + "https://bcr.bazel.build/modules/rules_cc/0.0.15/MODULE.bazel": "6704c35f7b4a72502ee81f61bf88706b54f06b3cbe5558ac17e2e14666cd5dcc", + "https://bcr.bazel.build/modules/rules_cc/0.0.16/MODULE.bazel": "7661303b8fc1b4d7f532e54e9d6565771fea666fbdf839e0a86affcd02defe87", + "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", + "https://bcr.bazel.build/modules/rules_cc/0.0.2/MODULE.bazel": "6915987c90970493ab97393024c156ea8fb9f3bea953b2f3ec05c34f19b5695c", + "https://bcr.bazel.build/modules/rules_cc/0.0.6/MODULE.bazel": "abf360251023dfe3efcef65ab9d56beefa8394d4176dd29529750e1c57eaa33f", + "https://bcr.bazel.build/modules/rules_cc/0.0.8/MODULE.bazel": "964c85c82cfeb6f3855e6a07054fdb159aced38e99a5eecf7bce9d53990afa3e", + "https://bcr.bazel.build/modules/rules_cc/0.0.9/MODULE.bazel": "836e76439f354b89afe6a911a7adf59a6b2518fafb174483ad78a2a2fde7b1c5", + "https://bcr.bazel.build/modules/rules_cc/0.1.1/MODULE.bazel": "2f0222a6f229f0bf44cd711dc13c858dad98c62d52bd51d8fc3a764a83125513", + "https://bcr.bazel.build/modules/rules_cc/0.1.2/MODULE.bazel": "557ddc3a96858ec0d465a87c0a931054d7dcfd6583af2c7ed3baf494407fd8d0", + "https://bcr.bazel.build/modules/rules_cc/0.1.5/MODULE.bazel": "88dfc9361e8b5ae1008ac38f7cdfd45ad738e4fa676a3ad67d19204f045a1fd8", + "https://bcr.bazel.build/modules/rules_cc/0.2.0/MODULE.bazel": "b5c17f90458caae90d2ccd114c81970062946f49f355610ed89bebf954f5783c", + "https://bcr.bazel.build/modules/rules_cc/0.2.13/MODULE.bazel": "eecdd666eda6be16a8d9dc15e44b5c75133405e820f620a234acc4b1fdc5aa37", + "https://bcr.bazel.build/modules/rules_cc/0.2.14/MODULE.bazel": "353c99ed148887ee89c54a17d4100ae7e7e436593d104b668476019023b58df8", + "https://bcr.bazel.build/modules/rules_cc/0.2.14/source.json": "55d0a4587c5592fad350f6e698530f4faf0e7dd15e69d43f8d87e220c78bea54", + "https://bcr.bazel.build/modules/rules_cc/0.2.4/MODULE.bazel": "1ff1223dfd24f3ecf8f028446d4a27608aa43c3f41e346d22838a4223980b8cc", + "https://bcr.bazel.build/modules/rules_cc/0.2.8/MODULE.bazel": "f1df20f0bf22c28192a794f29b501ee2018fa37a3862a1a2132ae2940a23a642", + "https://bcr.bazel.build/modules/rules_foreign_cc/0.9.0/MODULE.bazel": "c9e8c682bf75b0e7c704166d79b599f93b72cfca5ad7477df596947891feeef6", + "https://bcr.bazel.build/modules/rules_fuzzing/0.5.2/MODULE.bazel": "40c97d1144356f52905566c55811f13b299453a14ac7769dfba2ac38192337a8", + "https://bcr.bazel.build/modules/rules_java/4.0.0/MODULE.bazel": "5a78a7ae82cd1a33cef56dc578c7d2a46ed0dca12643ee45edbb8417899e6f74", + "https://bcr.bazel.build/modules/rules_java/5.3.5/MODULE.bazel": "a4ec4f2db570171e3e5eb753276ee4b389bae16b96207e9d3230895c99644b86", + "https://bcr.bazel.build/modules/rules_java/6.0.0/MODULE.bazel": "8a43b7df601a7ec1af61d79345c17b31ea1fedc6711fd4abfd013ea612978e39", + "https://bcr.bazel.build/modules/rules_java/6.3.0/MODULE.bazel": "a97c7678c19f236a956ad260d59c86e10a463badb7eb2eda787490f4c969b963", + "https://bcr.bazel.build/modules/rules_java/6.4.0/MODULE.bazel": "e986a9fe25aeaa84ac17ca093ef13a4637f6107375f64667a15999f77db6c8f6", + "https://bcr.bazel.build/modules/rules_java/6.5.2/MODULE.bazel": "1d440d262d0e08453fa0c4d8f699ba81609ed0e9a9a0f02cd10b3e7942e61e31", + "https://bcr.bazel.build/modules/rules_java/7.10.0/MODULE.bazel": "530c3beb3067e870561739f1144329a21c851ff771cd752a49e06e3dc9c2e71a", + "https://bcr.bazel.build/modules/rules_java/7.12.2/MODULE.bazel": "579c505165ee757a4280ef83cda0150eea193eed3bef50b1004ba88b99da6de6", + "https://bcr.bazel.build/modules/rules_java/7.2.0/MODULE.bazel": "06c0334c9be61e6cef2c8c84a7800cef502063269a5af25ceb100b192453d4ab", + "https://bcr.bazel.build/modules/rules_java/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", + "https://bcr.bazel.build/modules/rules_java/7.6.1/MODULE.bazel": "2f14b7e8a1aa2f67ae92bc69d1ec0fa8d9f827c4e17ff5e5f02e91caa3b2d0fe", + "https://bcr.bazel.build/modules/rules_java/8.3.2/MODULE.bazel": "7336d5511ad5af0b8615fdc7477535a2e4e723a357b6713af439fe8cf0195017", + "https://bcr.bazel.build/modules/rules_java/8.5.1/MODULE.bazel": "d8a9e38cc5228881f7055a6079f6f7821a073df3744d441978e7a43e20226939", + "https://bcr.bazel.build/modules/rules_java/8.6.1/MODULE.bazel": "f4808e2ab5b0197f094cabce9f4b006a27766beb6a9975931da07099560ca9c2", + "https://bcr.bazel.build/modules/rules_java/9.0.3/MODULE.bazel": "1f98ed015f7e744a745e0df6e898a7c5e83562d6b759dfd475c76456dda5ccea", + "https://bcr.bazel.build/modules/rules_java/9.0.3/source.json": "b038c0c07e12e658135bbc32cc1a2ded6e33785105c9d41958014c592de4593e", + "https://bcr.bazel.build/modules/rules_jvm_external/4.4.2/MODULE.bazel": "a56b85e418c83eb1839819f0b515c431010160383306d13ec21959ac412d2fe7", + "https://bcr.bazel.build/modules/rules_jvm_external/5.1/MODULE.bazel": "33f6f999e03183f7d088c9be518a63467dfd0be94a11d0055fe2d210f89aa909", + "https://bcr.bazel.build/modules/rules_jvm_external/5.2/MODULE.bazel": "d9351ba35217ad0de03816ef3ed63f89d411349353077348a45348b096615036", + "https://bcr.bazel.build/modules/rules_jvm_external/5.3/MODULE.bazel": "bf93870767689637164657731849fb887ad086739bd5d360d90007a581d5527d", + "https://bcr.bazel.build/modules/rules_jvm_external/6.1/MODULE.bazel": "75b5fec090dbd46cf9b7d8ea08cf84a0472d92ba3585b476f44c326eda8059c4", + "https://bcr.bazel.build/modules/rules_jvm_external/6.3/MODULE.bazel": "c998e060b85f71e00de5ec552019347c8bca255062c990ac02d051bb80a38df0", + "https://bcr.bazel.build/modules/rules_jvm_external/6.7/MODULE.bazel": "e717beabc4d091ecb2c803c2d341b88590e9116b8bf7947915eeb33aab4f96dd", + "https://bcr.bazel.build/modules/rules_jvm_external/6.7/source.json": "5426f412d0a7fc6b611643376c7e4a82dec991491b9ce5cb1cfdd25fe2e92be4", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/MODULE.bazel": "d269a01a18ee74d0335450b10f62c9ed81f2321d7958a2934e44272fe82dcef3", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.6/source.json": "2faa4794364282db7c06600b7e5e34867a564ae91bda7cae7c29c64e9466b7d5", + "https://bcr.bazel.build/modules/rules_license/0.0.3/MODULE.bazel": "627e9ab0247f7d1e05736b59dbb1b6871373de5ad31c3011880b4133cafd4bd0", + "https://bcr.bazel.build/modules/rules_license/0.0.7/MODULE.bazel": "088fbeb0b6a419005b89cf93fe62d9517c0a2b8bb56af3244af65ecfe37e7d5d", + "https://bcr.bazel.build/modules/rules_license/1.0.0/MODULE.bazel": "a7fda60eefdf3d8c827262ba499957e4df06f659330bbe6cdbdb975b768bb65c", + "https://bcr.bazel.build/modules/rules_license/1.0.0/source.json": "a52c89e54cc311196e478f8382df91c15f7a2bfdf4c6cd0e2675cc2ff0b56efb", + "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/MODULE.bazel": "5b1df97dbc29623bccdf2b0dcd0f5cb08e2f2c9050aab1092fd39a41e82686ff", + "https://bcr.bazel.build/modules/rules_pkg/1.0.1/source.json": "bd82e5d7b9ce2d31e380dd9f50c111d678c3bdaca190cb76b0e1c71b05e1ba8a", + "https://bcr.bazel.build/modules/rules_proto/4.0.0/MODULE.bazel": "a7a7b6ce9bee418c1a760b3d84f83a299ad6952f9903c67f19e4edd964894e06", + "https://bcr.bazel.build/modules/rules_proto/5.3.0-21.7/MODULE.bazel": "e8dff86b0971688790ae75528fe1813f71809b5afd57facb44dad9e8eca631b7", + "https://bcr.bazel.build/modules/rules_proto/6.0.0-rc1/MODULE.bazel": "1e5b502e2e1a9e825eef74476a5a1ee524a92297085015a052510b09a1a09483", + "https://bcr.bazel.build/modules/rules_proto/6.0.2/MODULE.bazel": "ce916b775a62b90b61888052a416ccdda405212b6aaeb39522f7dc53431a5e73", + "https://bcr.bazel.build/modules/rules_proto/7.1.0/MODULE.bazel": "002d62d9108f75bb807cd56245d45648f38275cb3a99dcd45dfb864c5d74cb96", + "https://bcr.bazel.build/modules/rules_proto/7.1.0/source.json": "39f89066c12c24097854e8f57ab8558929f9c8d474d34b2c00ac04630ad8940e", + "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", + "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", + "https://bcr.bazel.build/modules/rules_python/0.25.0/MODULE.bazel": "72f1506841c920a1afec76975b35312410eea3aa7b63267436bfb1dd91d2d382", + "https://bcr.bazel.build/modules/rules_python/0.28.0/MODULE.bazel": "cba2573d870babc976664a912539b320cbaa7114cd3e8f053c720171cde331ed", + "https://bcr.bazel.build/modules/rules_python/0.31.0/MODULE.bazel": "93a43dc47ee570e6ec9f5779b2e64c1476a6ce921c48cc9a1678a91dd5f8fd58", + "https://bcr.bazel.build/modules/rules_python/0.33.2/MODULE.bazel": "3e036c4ad8d804a4dad897d333d8dce200d943df4827cb849840055be8d2e937", + "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_python/1.3.0/MODULE.bazel": "8361d57eafb67c09b75bf4bbe6be360e1b8f4f18118ab48037f2bd50aa2ccb13", + "https://bcr.bazel.build/modules/rules_python/1.4.1/MODULE.bazel": "8991ad45bdc25018301d6b7e1d3626afc3c8af8aaf4bc04f23d0b99c938b73a6", + "https://bcr.bazel.build/modules/rules_python/1.6.0/MODULE.bazel": "7e04ad8f8d5bea40451cf80b1bd8262552aa73f841415d20db96b7241bd027d8", + "https://bcr.bazel.build/modules/rules_python/1.7.0/MODULE.bazel": "d01f995ecd137abf30238ad9ce97f8fc3ac57289c8b24bd0bf53324d937a14f8", + "https://bcr.bazel.build/modules/rules_python/1.7.0/source.json": "028a084b65dcf8f4dc4f82f8778dbe65df133f234b316828a82e060d81bdce32", + "https://bcr.bazel.build/modules/rules_rust/0.68.1/MODULE.bazel": "8d3332ef4079673385eb81f8bd68b012decc04ac00c9d5a01a40eff90301732c", + "https://bcr.bazel.build/modules/rules_rust/0.68.1/source.json": "3378e746f81b62457fdfd37391244fa8ff075ba85c05931ee4f3a20ac1efe963", + "https://bcr.bazel.build/modules/rules_shell/0.2.0/MODULE.bazel": "fda8a652ab3c7d8fee214de05e7a9916d8b28082234e8d2c0094505c5268ed3c", + "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b", + "https://bcr.bazel.build/modules/rules_shell/0.4.1/MODULE.bazel": "00e501db01bbf4e3e1dd1595959092c2fadf2087b2852d3f553b5370f5633592", + "https://bcr.bazel.build/modules/rules_shell/0.6.1/MODULE.bazel": "72e76b0eea4e81611ef5452aa82b3da34caca0c8b7b5c0c9584338aa93bae26b", + "https://bcr.bazel.build/modules/rules_shell/0.6.1/source.json": "20ec05cd5e592055e214b2da8ccb283c7f2a421ea0dc2acbf1aa792e11c03d0c", + "https://bcr.bazel.build/modules/rules_swift/1.16.0/MODULE.bazel": "4a09f199545a60d09895e8281362b1ff3bb08bbde69c6fc87aff5b92fcc916ca", + "https://bcr.bazel.build/modules/rules_swift/2.1.1/MODULE.bazel": "494900a80f944fc7aa61500c2073d9729dff0b764f0e89b824eb746959bc1046", + "https://bcr.bazel.build/modules/rules_swift/2.4.0/MODULE.bazel": "1639617eb1ede28d774d967a738b4a68b0accb40650beadb57c21846beab5efd", + "https://bcr.bazel.build/modules/rules_swift/3.1.2/MODULE.bazel": "72c8f5cf9d26427cee6c76c8e3853eb46ce6b0412a081b2b6db6e8ad56267400", + "https://bcr.bazel.build/modules/rules_swift/3.1.2/source.json": "e85761f3098a6faf40b8187695e3de6d97944e98abd0d8ce579cb2daf6319a66", + "https://bcr.bazel.build/modules/stardoc/0.5.1/MODULE.bazel": "1a05d92974d0c122f5ccf09291442580317cdd859f07a8655f1db9a60374f9f8", + "https://bcr.bazel.build/modules/stardoc/0.5.3/MODULE.bazel": "c7f6948dae6999bf0db32c1858ae345f112cacf98f174c7a8bb707e41b974f1c", + "https://bcr.bazel.build/modules/stardoc/0.5.6/MODULE.bazel": "c43dabc564990eeab55e25ed61c07a1aadafe9ece96a4efabb3f8bf9063b71ef", + "https://bcr.bazel.build/modules/stardoc/0.6.2/MODULE.bazel": "7060193196395f5dd668eda046ccbeacebfd98efc77fed418dbe2b82ffaa39fd", + "https://bcr.bazel.build/modules/stardoc/0.7.0/MODULE.bazel": "05e3d6d30c099b6770e97da986c53bd31844d7f13d41412480ea265ac9e8079c", + "https://bcr.bazel.build/modules/stardoc/0.7.1/MODULE.bazel": "3548faea4ee5dda5580f9af150e79d0f6aea934fc60c1cc50f4efdd9420759e7", + "https://bcr.bazel.build/modules/stardoc/0.7.2/MODULE.bazel": "fc152419aa2ea0f51c29583fab1e8c99ddefd5b3778421845606ee628629e0e5", + "https://bcr.bazel.build/modules/stardoc/0.7.2/source.json": "58b029e5e901d6802967754adf0a9056747e8176f017cfe3607c0851f4d42216", + "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.1/MODULE.bazel": "5e463fbfba7b1701d957555ed45097d7f984211330106ccd1352c6e0af0dcf91", + "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.2/MODULE.bazel": "75aab2373a4bbe2a1260b9bf2a1ebbdbf872d3bd36f80bff058dccd82e89422f", + "https://bcr.bazel.build/modules/swift_argument_parser/1.3.1.2/source.json": "5fba48bbe0ba48761f9e9f75f92876cafb5d07c0ce059cc7a8027416de94a05b", + "https://bcr.bazel.build/modules/tar.bzl/0.2.1/MODULE.bazel": "52d1c00a80a8cc67acbd01649e83d8dd6a9dc426a6c0b754a04fe8c219c76468", + "https://bcr.bazel.build/modules/tar.bzl/0.5.1/MODULE.bazel": "7c2eb3dcfc53b0f3d6f9acdfd911ca803eaf92aadf54f8ca6e4c1f3aee288351", + "https://bcr.bazel.build/modules/tar.bzl/0.5.1/source.json": "deed3094f7cc779ed1d37a68403847b0e38d9dd9d931e03cb90825f3368b515f", + "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", + "https://bcr.bazel.build/modules/yq.bzl/0.1.1/MODULE.bazel": "9039681f9bcb8958ee2c87ffc74bdafba9f4369096a2b5634b88abc0eaefa072", + "https://bcr.bazel.build/modules/yq.bzl/0.1.1/source.json": "2d2bad780a9f2b9195a4a370314d2c17ae95eaa745cefc2e12fbc49759b15aa3", + "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/MODULE.bazel": "eec517b5bbe5492629466e11dae908d043364302283de25581e3eb944326c4ca", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.5/source.json": "22bc55c47af97246cfc093d0acf683a7869377de362b5d1c552c2c2e16b7a806", + "https://bcr.bazel.build/modules/zlib/1.3.1/MODULE.bazel": "751c9940dcfe869f5f7274e1295422a34623555916eb98c174c1e945594bf198" + }, + "selectedYankedVersions": {}, + "moduleExtensions": { + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { + "general": { + "bzlTransitiveDigest": "ABI1D/sbS1ovwaW/kHDoj8nnXjQ0oKU9fzmzEG4iT8o=", + "usagesDigest": "QI2z8ZUR+mqtbwsf2fLqYdJAkPOHdOV+tF2yVAUgRzw=", + "recordedInputs": [ + "REPO_MAPPING:rules_kotlin+,bazel_tools bazel_tools" + ], + "generatedRepoSpecs": { + "com_github_jetbrains_kotlin_git": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_compiler_git_repository", + "attributes": { + "urls": [ + "https://github.com/JetBrains/kotlin/releases/download/v1.9.23/kotlin-compiler-1.9.23.zip" + ], + "sha256": "93137d3aab9afa9b27cb06a824c2324195c6b6f6179d8a8653f440f5bd58be88" + } + }, + "com_github_jetbrains_kotlin": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl%kotlin_capabilities_repository", + "attributes": { + "git_repository_name": "com_github_jetbrains_kotlin_git", + "compiler_version": "1.9.23" + } + }, + "com_github_google_ksp": { + "repoRuleId": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl%ksp_compiler_plugin_repository", + "attributes": { + "urls": [ + "https://github.com/google/ksp/releases/download/1.9.23-1.0.20/artifacts.zip" + ], + "sha256": "ee0618755913ef7fd6511288a232e8fad24838b9af6ea73972a76e81053c8c2d", + "strip_version": "1.9.23-1.0.20" + } + }, + "com_github_pinterest_ktlint": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_file", + "attributes": { + "sha256": "01b2e0ef893383a50dbeb13970fe7fa3be36ca3e83259e01649945b09d736985", + "urls": [ + "https://github.com/pinterest/ktlint/releases/download/1.3.0/ktlint" + ], + "executable": true + } + }, + "rules_android": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", + "strip_prefix": "rules_android-0.1.1", + "urls": [ + "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" + ] + } + } + } + } + }, + "@@rules_python+//python/extensions:config.bzl%config": { + "general": { + "bzlTransitiveDigest": "2hLgIvNVTLgxus0ZuXtleBe70intCfo0cHs8qvt6cdM=", + "usagesDigest": "ZVSXMAGpD+xzVNPuvF1IoLBkty7TROO0+akMapt1pAg=", + "recordedInputs": [ + "REPO_MAPPING:rules_python+,bazel_tools bazel_tools", + "REPO_MAPPING:rules_python+,pypi__build rules_python++config+pypi__build", + "REPO_MAPPING:rules_python+,pypi__click rules_python++config+pypi__click", + "REPO_MAPPING:rules_python+,pypi__colorama rules_python++config+pypi__colorama", + "REPO_MAPPING:rules_python+,pypi__importlib_metadata rules_python++config+pypi__importlib_metadata", + "REPO_MAPPING:rules_python+,pypi__installer rules_python++config+pypi__installer", + "REPO_MAPPING:rules_python+,pypi__more_itertools rules_python++config+pypi__more_itertools", + "REPO_MAPPING:rules_python+,pypi__packaging rules_python++config+pypi__packaging", + "REPO_MAPPING:rules_python+,pypi__pep517 rules_python++config+pypi__pep517", + "REPO_MAPPING:rules_python+,pypi__pip rules_python++config+pypi__pip", + "REPO_MAPPING:rules_python+,pypi__pip_tools rules_python++config+pypi__pip_tools", + "REPO_MAPPING:rules_python+,pypi__pyproject_hooks rules_python++config+pypi__pyproject_hooks", + "REPO_MAPPING:rules_python+,pypi__setuptools rules_python++config+pypi__setuptools", + "REPO_MAPPING:rules_python+,pypi__tomli rules_python++config+pypi__tomli", + "REPO_MAPPING:rules_python+,pypi__wheel rules_python++config+pypi__wheel", + "REPO_MAPPING:rules_python+,pypi__zipp rules_python++config+pypi__zipp" + ], + "generatedRepoSpecs": { + "rules_python_internal": { + "repoRuleId": "@@rules_python+//python/private:internal_config_repo.bzl%internal_config_repo", + "attributes": { + "transition_setting_generators": {}, + "transition_settings": [] + } + }, + "pypi__build": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/e2/03/f3c8ba0a6b6e30d7d18c40faab90807c9bb5e9a1e3b2fe2008af624a9c97/build-1.2.1-py3-none-any.whl", + "sha256": "75e10f767a433d9a86e50d83f418e83efc18ede923ee5ff7df93b6cb0306c5d4", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__click": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", + "sha256": "ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__colorama": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", + "sha256": "4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__importlib_metadata": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/2d/0a/679461c511447ffaf176567d5c496d1de27cbe34a87df6677d7171b2fbd4/importlib_metadata-7.1.0-py3-none-any.whl", + "sha256": "30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__installer": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/e5/ca/1172b6638d52f2d6caa2dd262ec4c811ba59eee96d54a7701930726bce18/installer-0.7.0-py3-none-any.whl", + "sha256": "05d1933f0a5ba7d8d6296bb6d5018e7c94fa473ceb10cf198a92ccea19c27b53", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__more_itertools": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/50/e2/8e10e465ee3987bb7c9ab69efb91d867d93959095f4807db102d07995d94/more_itertools-10.2.0-py3-none-any.whl", + "sha256": "686b06abe565edfab151cb8fd385a05651e1fdf8f0a14191e4439283421f8684", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__packaging": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/49/df/1fceb2f8900f8639e278b056416d49134fb8d84c5942ffaa01ad34782422/packaging-24.0-py3-none-any.whl", + "sha256": "2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pep517": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/25/6e/ca4a5434eb0e502210f591b97537d322546e4833dcb4d470a48c375c5540/pep517-0.13.1-py3-none-any.whl", + "sha256": "31b206f67165b3536dd577c5c3f1518e8fbaf38cbc57efff8369a392feff1721", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pip": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/8a/6a/19e9fe04fca059ccf770861c7d5721ab4c2aebc539889e97c7977528a53b/pip-24.0-py3-none-any.whl", + "sha256": "ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pip_tools": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/0d/dc/38f4ce065e92c66f058ea7a368a9c5de4e702272b479c0992059f7693941/pip_tools-7.4.1-py3-none-any.whl", + "sha256": "4c690e5fbae2f21e87843e89c26191f0d9454f362d8acdbd695716493ec8b3a9", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__pyproject_hooks": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/ae/f3/431b9d5fe7d14af7a32340792ef43b8a714e7726f1d7b69cc4e8e7a3f1d7/pyproject_hooks-1.1.0-py3-none-any.whl", + "sha256": "7ceeefe9aec63a1064c18d939bdc3adf2d8aa1988a510afec15151578b232aa2", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__setuptools": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/90/99/158ad0609729111163fc1f674a5a42f2605371a4cf036d0441070e2f7455/setuptools-78.1.1-py3-none-any.whl", + "sha256": "c3a9c4211ff4c309edb8b8c4f1cbfa7ae324c4ba9f91ff254e3d305b9fd54561", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__tomli": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", + "sha256": "939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__wheel": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/7d/cd/d7460c9a869b16c3dd4e1e403cce337df165368c71d6af229a74699622ce/wheel-0.43.0-py3-none-any.whl", + "sha256": "55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + }, + "pypi__zipp": { + "repoRuleId": "@@bazel_tools//tools/build_defs/repo:http.bzl%http_archive", + "attributes": { + "url": "https://files.pythonhosted.org/packages/da/55/a03fd7240714916507e1fcf7ae355bd9d9ed2e6db492595f1a67f61681be/zipp-3.18.2-py3-none-any.whl", + "sha256": "dce197b859eb796242b0622af1b8beb0a722d52aa2f57133ead08edd5bf5374e", + "type": "zip", + "build_file_content": "package(default_visibility = [\"//visibility:public\"])\n\nload(\"@rules_python//python:py_library.bzl\", \"py_library\")\n\npy_library(\n name = \"lib\",\n srcs = glob([\"**/*.py\"]),\n data = glob([\"**/*\"], exclude=[\n # These entries include those put into user-installed dependencies by\n # data_exclude to avoid non-determinism.\n \"**/*.py\",\n \"**/*.pyc\",\n \"**/*.pyc.*\", # During pyc creation, temp files named *.pyc.NNN are created\n \"**/*.dist-info/RECORD\",\n \"BUILD\",\n \"WORKSPACE\",\n ]),\n # This makes this directory a top-level in the python import\n # search path for anything that depends on this.\n imports = [\".\"],\n)\n" + } + } + } + } + }, + "@@rules_python+//python/uv:uv.bzl%uv": { + "general": { + "bzlTransitiveDigest": "ijW9KS7qsIY+yBVvJ+Nr1mzwQox09j13DnE3iIwaeTM=", + "usagesDigest": "H8dQoNZcoqP+Mu0tHZTi4KHATzvNkM5ePuEqoQdklIU=", + "recordedInputs": [ + "REPO_MAPPING:rules_python+,bazel_tools bazel_tools", + "REPO_MAPPING:rules_python+,platforms platforms" + ], + "generatedRepoSpecs": { + "uv": { + "repoRuleId": "@@rules_python+//python/uv/private:uv_toolchains_repo.bzl%uv_toolchains_repo", + "attributes": { + "toolchain_type": "'@@rules_python+//python/uv:uv_toolchain_type'", + "toolchain_names": [ + "none" + ], + "toolchain_implementations": { + "none": "'@@rules_python+//python:none'" + }, + "toolchain_compatible_with": { + "none": [ + "@platforms//:incompatible" + ] + }, + "toolchain_target_settings": {} + } + } + } + } + }, + "@@tar.bzl+//tar:extensions.bzl%toolchains": { + "general": { + "bzlTransitiveDigest": "/2afh6fPjq/rcyE/jztQDK3ierehmFFngfvmqyRv72M=", + "usagesDigest": "maF8qsAIqeH1ey8pxP0gNZbvJt34kLZvTFeQ0ntrJVA=", + "recordedInputs": [], + "generatedRepoSpecs": { + "bsd_tar_toolchains": { + "repoRuleId": "@@tar.bzl+//tar/toolchain:toolchain.bzl%tar_toolchains_repo", + "attributes": { + "user_repository_name": "bsd_tar_toolchains" + } + }, + "bsd_tar_toolchains_darwin_amd64": { + "repoRuleId": "@@tar.bzl+//tar/toolchain:platforms.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "darwin_amd64" + } + }, + "bsd_tar_toolchains_darwin_arm64": { + "repoRuleId": "@@tar.bzl+//tar/toolchain:platforms.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "darwin_arm64" + } + }, + "bsd_tar_toolchains_linux_amd64": { + "repoRuleId": "@@tar.bzl+//tar/toolchain:platforms.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "linux_amd64" + } + }, + "bsd_tar_toolchains_linux_arm64": { + "repoRuleId": "@@tar.bzl+//tar/toolchain:platforms.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "linux_arm64" + } + }, + "bsd_tar_toolchains_windows_amd64": { + "repoRuleId": "@@tar.bzl+//tar/toolchain:platforms.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "windows_amd64" + } + }, + "bsd_tar_toolchains_windows_arm64": { + "repoRuleId": "@@tar.bzl+//tar/toolchain:platforms.bzl%bsdtar_binary_repo", + "attributes": { + "platform": "windows_arm64" + } + } + } + } + } + }, + "facts": {} +} diff --git a/examples/assets/source/smile.svg b/examples/assets/source/smile.svg new file mode 100644 index 0000000..94c36e1 --- /dev/null +++ b/examples/assets/source/smile.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + diff --git a/examples/example.typ b/examples/example.typ index e73c3c3..7fef612 100644 --- a/examples/example.typ +++ b/examples/example.typ @@ -1,20 +1,25 @@ -$ A = pi r^2 $ -$ "area" = pi dot "radius"^2 $ -$ cal(A) := - { x in RR | x "is natural" } $ -#let x = 5 -$ #x < 17 $ +#set page(width: 14cm, height: auto) + += Multi-directory asset demo + +This document loads images from multiple directories via Bazel targets. + +#figure( + image("assets/source/smile.svg", width: 50%), + caption: [Static source image from `assets/source/`], +) + +#figure( + image("assets/derived/frown.svg", width: 50%), + caption: [Copied image from `assets/derived/`], +) #figure( - image("./smile.svg", width: 80%), - caption: [ - Smile you have an image! - ], + image("./generated/python/diamond.svg", width: 50%), + caption: [SVG generated with Python into `generated/python/`], ) #figure( - image("./frown.svg", width: 80%), - caption: [ - Smile you have an image! - ], + image("generated/python/stripes.svg", width: 50%), + caption: [Second Python-generated SVG from another output], ) diff --git a/examples/generated/source_sync/example.pdf b/examples/generated/source_sync/example.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e4389656d7cc74eb6d0145b01ff6a836b9c20339 GIT binary patch literal 27377 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 JncuMU{txY3<2?WX literal 0 HcmV?d00001 diff --git a/examples/tools/generate_svgs.py b/examples/tools/generate_svgs.py new file mode 100644 index 0000000..38a8120 --- /dev/null +++ b/examples/tools/generate_svgs.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +"""Generate simple SVG assets for the Typst example.""" + +from __future__ import annotations + +import os +import sys + + +def _write(path: str, body: str) -> None: + os.makedirs(os.path.dirname(path), exist_ok=True) + with open(path, "w", encoding="utf-8") as f: + f.write(body) + + +def _diamond_svg() -> str: + return """ + + + + +""" + + +def _stripes_svg() -> str: + return """ + + + + + + + +""" + + +def main(argv: list[str]) -> int: + if len(argv) != 2: + print("expected two output paths", file=sys.stderr) + return 1 + + diamond_out, stripes_out = argv + _write(diamond_out, _diamond_svg()) + _write(stripes_out, _stripes_svg()) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main(sys.argv[1:])) diff --git a/typst/private/tests/BUILD.bazel b/typst/private/tests/BUILD.bazel index e69de29..84eb304 100644 --- a/typst/private/tests/BUILD.bazel +++ b/typst/private/tests/BUILD.bazel @@ -0,0 +1,6 @@ +load("@bazel_skylib//rules:build_test.bzl", "build_test") + +build_test( + name = "simple_build_test", + targets = ["//typst/private/tests/simple:simple"], +) diff --git a/typst/private/tests/simple/BUILD.bazel b/typst/private/tests/simple/BUILD.bazel index c07c368..46c1483 100644 --- a/typst/private/tests/simple/BUILD.bazel +++ b/typst/private/tests/simple/BUILD.bazel @@ -20,6 +20,7 @@ typst( ":frown", ":smile", ], + visibility = ["//typst/private/tests:__pkg__"], ) build_test(