diff --git a/.bazelignore b/.bazelignore new file mode 100644 index 000000000000..e22ffa1c776c --- /dev/null +++ b/.bazelignore @@ -0,0 +1,36 @@ +# all node modules +node_modules +app/gui/node_modules +app/common/node_modules +app/ide-desktop/client/node_modules +app/ide-desktop/icons/node_modules +app/ide-desktop/lib/assets/node_modules +app/ide-desktop/lib/client/node_modules +app/ide-desktop/lib/common/node_modules +app/ide-desktop/lib/content-config/node_modules +app/ide-desktop/lib/dashboard/node_modules +app/ide-desktop/lib/esbuild-plugin-copy-directories/node_modules +app/ide-desktop/lib/icons/node_modules +app/ide-desktop/lib/ts-plugin-namespace-auto-import/node_modules +app/ide-desktop/node_modules +app/rust-ffi/node_modules +app/ydoc-server/node_modules +app/ydoc-server-nodejs/node_modules +app/ydoc-server-polyglot/node_modules +app/ydoc-shared/node_modules +app/ydoc-shared/parser-codegen/generated +app/ydoc-shared/parser-codegen/node_modules +lib/js/runner/node_modules + +# +.bloop +bazel-enso +bazel-out +bazel-testlogs +build-cache +.idea +.vscode +.dist +target +build +.git \ No newline at end of file diff --git a/.bazelrc b/.bazelrc new file mode 100644 index 000000000000..004bf062a0a9 --- /dev/null +++ b/.bazelrc @@ -0,0 +1,48 @@ +# FIXME: consider using RC files from guide: https://docs.aspect.build/guides/bazelrc/ + +## General rules +common --enable_platform_specific_config +common --incompatible_allow_tags_propagation +common --incompatible_use_plus_in_repo_names +test --test_output=errors +build --show_result=20 +build --reuse_sandbox_directories +build --nolegacy_external_runfiles +build --noexperimental_check_output_files --experimental_allow_tags_propagation +fetch --noexperimental_check_output_files --experimental_allow_tags_propagation +query --noexperimental_check_output_files --experimental_allow_tags_propagation +build --nobuild_runfile_links +coverage --build_runfile_links + +## JS + +# passes an argument `--skipLibCheck` to *every* spawn of tsc +common --@aspect_rules_ts//ts:skipLibCheck=always +common --@aspect_rules_ts//ts:default_to_tsc_transpiler + +# Allow the Bazel server to check directory sources for changes. Ensures that the Bazel server +# notices when a directory changes, if you have a directory listed in the srcs of some target. +# Recommended when using +# [copy_directory](https://github.com/aspect-build/bazel-lib/blob/main/docs/copy_directory.md) and +# [rules_js](https://github.com/aspect-build/rules_js) since npm package are source directories +# inputs to copy_directory actions. +# Docs: https://bazel.build/reference/command-line-reference#flag--host_jvm_args +startup --host_jvm_args=-DBAZEL_TRACK_SOURCE_DIRECTORIES=1 + +## GraalVM toolchain +build --extra_toolchains=@graalvm//:bootstrap_runtime_toolchain + +## GraalVM versions +common --tool_java_runtime_version=graalvm_21 +common --tool_java_language_version=21 + +common --java_runtime_version=graalvm_21 +common --java_language_version=21 + +## Rust +startup --windows_enable_symlinks +build --enable_runfiles +build --@rules_rust//rust/toolchain/channel=nightly + +## Allow local overrides of bazel configuration +try-import %workspace%/.bazelrc.local diff --git a/.bazelversion b/.bazelversion new file mode 100644 index 000000000000..815da58b7a9e --- /dev/null +++ b/.bazelversion @@ -0,0 +1 @@ +7.4.1 diff --git a/.cargo/config.toml b/.cargo/config.toml index c96245bd0198..f5865a1917d0 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -2,18 +2,11 @@ target-dir = "target/rust/" rustflags = ["--cfg", "tokio_unstable"] -[target.wasm32-unknown-unknown] -rustflags = [ - # Increas the stack size from 1MB to 2MB. This is required to avoid running out of stack space - # in debug builds. The error is reported as `RuntimeError: memory access out of bounds`. - "-C", - "link-args=-z stack-size=2097152", -] - [target.x86_64-pc-windows-msvc] +linker = "rust-lld" # Static linking is required to avoid the need for the Visual C++ Redistributable. We care about this primarily for our # installer binary package. -rustflags = ["-C", "link-arg=/STACK:2097152", "-C", "target-feature=+crt-static"] +rustflags = ["-C", "target-feature=+crt-static"] -[target.x86_64-pc-windows-gnu] -rustflags = ["-C", "link-arg=-Wl,--stack,2097152"] +[target.x86_64-unknown-linux-gnu] +rustflags = ["-Clink-arg=-fuse-ld=lld"] diff --git a/.github/workflows/bazel-build.yml b/.github/workflows/bazel-build.yml new file mode 100644 index 000000000000..02216143cdf2 --- /dev/null +++ b/.github/workflows/bazel-build.yml @@ -0,0 +1,50 @@ +name: Bazel build +on: + push: + branches: + - develop + pull_request: {} +jobs: + build-gui: + name: Run bazel GUI build + # if: github.ref != 'refs/heads/develop' + runs-on: + - ubuntu-latest + steps: + - uses: bazel-contrib/setup-bazel@0.9.0 + with: + bazelisk-cache: true + disk-cache: true + repository-cache: true + - uses: actions/checkout@v4 + - name: Expose env variables + run: | + cat << END > app/gui/.env.production + ENSO_IDE_ENVIRONMENT="${{ vars.ENSO_CLOUD_ENVIRONMENT }}" + ENSO_IDE_API_URL="${{ vars.ENSO_CLOUD_API_URL }}" + ENSO_IDE_CHAT_URL="${{ vars.ENSO_CLOUD_CHAT_URL }}" + ENSO_IDE_COGNITO_DOMAIN="${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }}" + ENSO_IDE_COGNITO_REGION="${{ vars.ENSO_CLOUD_COGNITO_REGION }}" + ENSO_IDE_COGNITO_USER_POOL_ID="${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }}" + ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID="${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }}" + ENSO_IDE_GOOGLE_ANALYTICS_TAG="${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }}" + ENSO_IDE_SENTRY_DSN="${{ vars.ENSO_CLOUD_SENTRY_DSN }}" + ENSO_IDE_STRIPE_KEY="${{ vars.ENSO_CLOUD_STRIPE_KEY }}" + ENSO_IDE_AG_GRID_LICENSE_KEY="${{ vars.ENSO_AG_GRID_LICENSE_KEY }}" + ENSO_IDE_MAPBOX_API_TOKEN="${{ vars.ENSO_MAPBOX_API_TOKEN }}" + ENSO_IDE_COMMIT_HASH="${{ github.sha }}" + ENSO_IDE_VERSION="SNAPSHOT-${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" + ENSO_IDE_CLOUD_BUILD="false" + END + - run: bazel build //app/gui:dist + - name: Get build output location + id: get_bazel_output + run: | + OUTPUT_SYMLINK=$(bazel cquery --output=files //app/gui:dist) + BAZEL_OUTPUT=$(readlink -f "$OUTPUT_SYMLINK") + echo "location=$BAZEL_OUTPUT" >> $GITHUB_OUTPUT + - uses: actions/upload-artifact@v4 + with: + name: gui-static + path: ${{ steps.get_bazel_output.outputs.location }} + if-no-files-found: error diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index a5cd19cdc646..e1a43105d9aa 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -16,6 +16,17 @@ jobs: runs-on: - X64 steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 diff --git a/.github/workflows/engine-benchmark.yml b/.github/workflows/engine-benchmark.yml index 66d65fb7a37a..677d3867ffac 100644 --- a/.github/workflows/engine-benchmark.yml +++ b/.github/workflows/engine-benchmark.yml @@ -18,6 +18,17 @@ jobs: runs-on: - benchmark steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 diff --git a/.github/workflows/engine-checks-nightly.yml b/.github/workflows/engine-checks-nightly.yml index df5559d601bd..2506579193f3 100644 --- a/.github/workflows/engine-checks-nightly.yml +++ b/.github/workflows/engine-checks-nightly.yml @@ -19,6 +19,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -65,6 +76,17 @@ jobs: - macOS - ARM64 steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -109,6 +131,17 @@ jobs: runs-on: - macos-13 steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -154,6 +187,17 @@ jobs: - self-hosted - Windows steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -199,6 +243,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -244,6 +299,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -301,6 +367,17 @@ jobs: - macOS - ARM64 steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -356,6 +433,17 @@ jobs: runs-on: - macos-13 steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -412,6 +500,17 @@ jobs: - self-hosted - Windows steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -468,6 +567,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -524,6 +634,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -584,6 +705,17 @@ jobs: - macOS - ARM64 steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -642,6 +774,17 @@ jobs: runs-on: - macos-13 steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -701,6 +844,17 @@ jobs: - self-hosted - Windows steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -760,6 +914,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 diff --git a/.github/workflows/engine-checks-optional.yml b/.github/workflows/engine-checks-optional.yml index ad1d1eb8ea7a..bc6edec299de 100644 --- a/.github/workflows/engine-checks-optional.yml +++ b/.github/workflows/engine-checks-optional.yml @@ -21,6 +21,17 @@ jobs: - macos-13 continue-on-error: true steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -66,6 +77,17 @@ jobs: - macos-13 continue-on-error: true steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -122,6 +144,17 @@ jobs: - macos-13 continue-on-error: true steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 diff --git a/.github/workflows/engine-checks.yml b/.github/workflows/engine-checks.yml index 80b81ed41535..ae5ef5cda8e8 100644 --- a/.github/workflows/engine-checks.yml +++ b/.github/workflows/engine-checks.yml @@ -21,6 +21,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -66,6 +77,17 @@ jobs: - self-hosted - Windows steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -111,6 +133,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -167,6 +200,17 @@ jobs: - self-hosted - Windows steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -223,6 +267,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -282,6 +337,17 @@ jobs: - self-hosted - Windows steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -341,6 +407,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 diff --git a/.github/workflows/extra-nightly-tests.yml b/.github/workflows/extra-nightly-tests.yml index 4b30be6edf3a..027250eea16a 100644 --- a/.github/workflows/extra-nightly-tests.yml +++ b/.github/workflows/extra-nightly-tests.yml @@ -18,6 +18,17 @@ jobs: runs-on: - ubuntu-latest steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -85,6 +96,17 @@ jobs: runs-on: - ubuntu-latest steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 diff --git a/.github/workflows/gui-checks.yml b/.github/workflows/gui-checks.yml index 5ac10409c741..1214e95b6c75 100644 --- a/.github/workflows/gui-checks.yml +++ b/.github/workflows/gui-checks.yml @@ -53,6 +53,11 @@ jobs: ${{ runner.os }}-gui # Next Tasks are depend on Typecheck, because we build libraries at this stage + - name: ⚙️ Compile + id: compile + continue-on-error: true + run: pnpm run compile + - name: 🧠 Typecheck id: typecheck continue-on-error: true @@ -82,9 +87,10 @@ jobs: fail-on-warning: false - name: ❌ Fail if any check failed - if: always() && (steps.prettier.outcome == 'failure' || steps.lint.outcome == 'failure' || steps.typecheck.outcome == 'failure' || steps.unit-tests.outcome == 'failure') + if: always() && (steps.lint.outcome == 'failure' || steps.compile.outcome == 'failure' || steps.typecheck.outcome == 'failure' || steps.unit-tests.outcome == 'failure') run: | echo "Lint outcome: ${{ steps.lint.outcome }}" + echo "Compile outcome: ${{ steps.compile.outcome }}" echo "Typecheck outcome: ${{ steps.typecheck.outcome }}" echo "Unit tests outcome: ${{ steps.unit-tests.outcome }}" exit 1 @@ -110,8 +116,8 @@ jobs: fail-fast: false max-parallel: 24 matrix: - shardIndex: [1, 2, 3, 4, 5, 6] - shardTotal: [6] + shardIndex: [1, 2, 3, 4] + shardTotal: [4] steps: - uses: actions/checkout@v4 @@ -138,6 +144,10 @@ jobs: working-directory: app/gui run: pnpm run playwright:install + - name: ⚙️ Compile + id: compile + run: pnpm run compile + - name: 🎭 Playwright Tests working-directory: app/gui run: pnpm run test:integration --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} diff --git a/.github/workflows/ide-packaging-optional.yml b/.github/workflows/ide-packaging-optional.yml index 300955745908..6e66a3bc0f58 100644 --- a/.github/workflows/ide-packaging-optional.yml +++ b/.github/workflows/ide-packaging-optional.yml @@ -21,6 +21,17 @@ jobs: - macos-13 continue-on-error: true steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -64,6 +75,17 @@ jobs: - macos-13 continue-on-error: true steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -89,18 +111,19 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ./run gui build env: - ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} - ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} - ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} - ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} - ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} - ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} - ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} - ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} - ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} - ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} + ENSO_IDE_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} + ENSO_IDE_AUTH_ENDPOINT: ${{ vars.ENSO_CLOUD_AUTH_ENDPOINT }} + ENSO_IDE_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} + ENSO_IDE_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} + ENSO_IDE_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} + ENSO_IDE_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} + ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} + ENSO_IDE_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} + ENSO_IDE_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} + ENSO_IDE_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} + ENSO_IDE_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: failure() && runner.os == 'Windows' name: List files if failed (Windows) @@ -121,6 +144,17 @@ jobs: - macos-13 continue-on-error: true steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -153,18 +187,19 @@ jobs: CSC_IDENTITY_AUTO_DISCOVERY: "true" CSC_KEY_PASSWORD: ${{ secrets.APPLE_CODE_SIGNING_CERT_PASSWORD }} CSC_LINK: ${{ secrets.APPLE_CODE_SIGNING_CERT }} - ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} - ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} - ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} - ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} - ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} - ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} - ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} - ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} - ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} - ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} + ENSO_IDE_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} + ENSO_IDE_AUTH_ENDPOINT: ${{ vars.ENSO_CLOUD_AUTH_ENDPOINT }} + ENSO_IDE_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} + ENSO_IDE_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} + ENSO_IDE_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} + ENSO_IDE_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} + ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} + ENSO_IDE_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} + ENSO_IDE_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} + ENSO_IDE_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} + ENSO_IDE_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: corepack pnpm -r --filter enso exec playwright test --timeout 300000 env: diff --git a/.github/workflows/ide-packaging.yml b/.github/workflows/ide-packaging.yml index b6a94a5150d8..d12691f8ba9f 100644 --- a/.github/workflows/ide-packaging.yml +++ b/.github/workflows/ide-packaging.yml @@ -21,6 +21,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -64,6 +75,17 @@ jobs: - self-hosted - Windows steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -107,6 +129,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -132,18 +165,19 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ./run gui build env: - ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} - ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} - ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} - ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} - ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} - ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} - ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} - ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} - ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} - ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} + ENSO_IDE_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} + ENSO_IDE_AUTH_ENDPOINT: ${{ vars.ENSO_CLOUD_AUTH_ENDPOINT }} + ENSO_IDE_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} + ENSO_IDE_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} + ENSO_IDE_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} + ENSO_IDE_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} + ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} + ENSO_IDE_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} + ENSO_IDE_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} + ENSO_IDE_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} + ENSO_IDE_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: failure() && runner.os == 'Windows' name: List files if failed (Windows) @@ -162,6 +196,17 @@ jobs: - self-hosted - Windows steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -187,18 +232,19 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ./run gui build env: - ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} - ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} - ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} - ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} - ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} - ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} - ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} - ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} - ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} - ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} + ENSO_IDE_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} + ENSO_IDE_AUTH_ENDPOINT: ${{ vars.ENSO_CLOUD_AUTH_ENDPOINT }} + ENSO_IDE_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} + ENSO_IDE_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} + ENSO_IDE_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} + ENSO_IDE_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} + ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} + ENSO_IDE_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} + ENSO_IDE_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} + ENSO_IDE_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} + ENSO_IDE_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: failure() && runner.os == 'Windows' name: List files if failed (Windows) @@ -219,6 +265,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -244,18 +301,19 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ./run ide build --backend-source current-ci-run --gui-upload-artifact false env: - ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} - ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} - ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} - ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} - ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} - ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} - ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} - ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} - ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} - ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} + ENSO_IDE_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} + ENSO_IDE_AUTH_ENDPOINT: ${{ vars.ENSO_CLOUD_AUTH_ENDPOINT }} + ENSO_IDE_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} + ENSO_IDE_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} + ENSO_IDE_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} + ENSO_IDE_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} + ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} + ENSO_IDE_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} + ENSO_IDE_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} + ENSO_IDE_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} + ENSO_IDE_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: xvfb-run corepack pnpm -r --filter enso exec playwright test env: @@ -293,6 +351,17 @@ jobs: - self-hosted - Windows steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -318,18 +387,19 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ./run ide build --backend-source current-ci-run --gui-upload-artifact false env: - ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} - ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} - ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} - ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} - ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} - ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} - ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} - ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} - ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} - ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} + ENSO_IDE_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} + ENSO_IDE_AUTH_ENDPOINT: ${{ vars.ENSO_CLOUD_AUTH_ENDPOINT }} + ENSO_IDE_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} + ENSO_IDE_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} + ENSO_IDE_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} + ENSO_IDE_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} + ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} + ENSO_IDE_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} + ENSO_IDE_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} + ENSO_IDE_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} + ENSO_IDE_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} WIN_CSC_KEY_PASSWORD: ${{ secrets.MICROSOFT_CODE_SIGNING_CERT_PASSWORD }} WIN_CSC_LINK: ${{ secrets.MICROSOFT_CODE_SIGNING_CERT }} diff --git a/.github/workflows/promote.yml b/.github/workflows/promote.yml index 99e57e5870c7..002dc09cefc2 100644 --- a/.github/workflows/promote.yml +++ b/.github/workflows/promote.yml @@ -40,6 +40,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b7bde0b39e3f..242f22944911 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -36,6 +36,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -70,6 +81,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -123,6 +145,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -176,6 +209,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -221,6 +265,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -270,6 +325,17 @@ jobs: - macOS - ARM64 steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -317,6 +383,17 @@ jobs: runs-on: - macos-13 steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -365,6 +442,17 @@ jobs: - self-hosted - Windows steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -418,6 +506,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -470,6 +569,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -495,18 +605,19 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ./run ide upload --backend-source release --backend-release ${{env.ENSO_RELEASE_ID}} --sign-artifacts env: - ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} - ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} - ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} - ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} - ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} - ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} - ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} - ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} - ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} - ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} + ENSO_IDE_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} + ENSO_IDE_AUTH_ENDPOINT: ${{ vars.ENSO_CLOUD_AUTH_ENDPOINT }} + ENSO_IDE_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} + ENSO_IDE_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} + ENSO_IDE_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} + ENSO_IDE_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} + ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} + ENSO_IDE_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} + ENSO_IDE_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} + ENSO_IDE_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} + ENSO_IDE_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: failure() && runner.os == 'Windows' name: List files if failed (Windows) @@ -532,6 +643,17 @@ jobs: - macOS - ARM64 steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -564,18 +686,19 @@ jobs: CSC_IDENTITY_AUTO_DISCOVERY: "true" CSC_KEY_PASSWORD: ${{ secrets.APPLE_CODE_SIGNING_CERT_PASSWORD }} CSC_LINK: ${{ secrets.APPLE_CODE_SIGNING_CERT }} - ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} - ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} - ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} - ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} - ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} - ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} - ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} - ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} - ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} - ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} + ENSO_IDE_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} + ENSO_IDE_AUTH_ENDPOINT: ${{ vars.ENSO_CLOUD_AUTH_ENDPOINT }} + ENSO_IDE_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} + ENSO_IDE_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} + ENSO_IDE_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} + ENSO_IDE_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} + ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} + ENSO_IDE_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} + ENSO_IDE_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} + ENSO_IDE_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} + ENSO_IDE_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: failure() && runner.os == 'Windows' name: List files if failed (Windows) @@ -599,6 +722,17 @@ jobs: runs-on: - macos-13 steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -631,18 +765,19 @@ jobs: CSC_IDENTITY_AUTO_DISCOVERY: "true" CSC_KEY_PASSWORD: ${{ secrets.APPLE_CODE_SIGNING_CERT_PASSWORD }} CSC_LINK: ${{ secrets.APPLE_CODE_SIGNING_CERT }} - ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} - ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} - ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} - ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} - ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} - ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} - ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} - ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} - ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} - ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} + ENSO_IDE_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} + ENSO_IDE_AUTH_ENDPOINT: ${{ vars.ENSO_CLOUD_AUTH_ENDPOINT }} + ENSO_IDE_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} + ENSO_IDE_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} + ENSO_IDE_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} + ENSO_IDE_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} + ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} + ENSO_IDE_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} + ENSO_IDE_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} + ENSO_IDE_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} + ENSO_IDE_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - if: failure() && runner.os == 'Windows' name: List files if failed (Windows) @@ -667,6 +802,17 @@ jobs: - self-hosted - Windows steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -692,20 +838,21 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ./run ide upload --backend-source release --backend-release ${{env.ENSO_RELEASE_ID}} --sign-artifacts env: - ENSO_CLOUD_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} - ENSO_CLOUD_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} - ENSO_CLOUD_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} - ENSO_CLOUD_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} - ENSO_CLOUD_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} - ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} - ENSO_CLOUD_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} - ENSO_CLOUD_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} - ENSO_CLOUD_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} - ENSO_CLOUD_SENTRY_ORGANIZATION: ${{ vars.ENSO_CLOUD_SENTRY_ORGANIZATION }} - ENSO_CLOUD_SENTRY_PROJECT: ${{ vars.ENSO_CLOUD_SENTRY_PROJECT }} - ENSO_CLOUD_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} ENSO_IDE_AG_GRID_LICENSE_KEY: ${{ vars.ENSO_AG_GRID_LICENSE_KEY }} + ENSO_IDE_API_URL: ${{ vars.ENSO_CLOUD_API_URL }} + ENSO_IDE_AUTH_ENDPOINT: ${{ vars.ENSO_CLOUD_AUTH_ENDPOINT }} + ENSO_IDE_CHAT_URL: ${{ vars.ENSO_CLOUD_CHAT_URL }} + ENSO_IDE_COGNITO_DOMAIN: ${{ vars.ENSO_CLOUD_COGNITO_DOMAIN }} + ENSO_IDE_COGNITO_REGION: ${{ vars.ENSO_CLOUD_COGNITO_REGION }} + ENSO_IDE_COGNITO_USER_POOL_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_ID }} + ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID: ${{ vars.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID }} + ENSO_IDE_ENVIRONMENT: ${{ vars.ENSO_CLOUD_ENVIRONMENT }} + ENSO_IDE_GOOGLE_ANALYTICS_TAG: ${{ vars.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG }} ENSO_IDE_MAPBOX_API_TOKEN: ${{ vars.ENSO_MAPBOX_API_TOKEN }} + ENSO_IDE_SENTRY_DSN: ${{ vars.ENSO_CLOUD_SENTRY_DSN }} + ENSO_IDE_SENTRY_ORGANIZATION: ${{ vars.ENSO_CLOUD_SENTRY_ORGANIZATION }} + ENSO_IDE_SENTRY_PROJECT: ${{ vars.ENSO_CLOUD_SENTRY_PROJECT }} + ENSO_IDE_STRIPE_KEY: ${{ vars.ENSO_CLOUD_STRIPE_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} WIN_CSC_KEY_PASSWORD: ${{ secrets.MICROSOFT_CODE_SIGNING_CERT_PASSWORD }} diff --git a/.github/workflows/std-libs-benchmark.yml b/.github/workflows/std-libs-benchmark.yml index 1c94146c09db..580b05913d07 100644 --- a/.github/workflows/std-libs-benchmark.yml +++ b/.github/workflows/std-libs-benchmark.yml @@ -18,6 +18,17 @@ jobs: runs-on: - benchmark steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml index f2abd5d3563b..79b385c73ce4 100644 --- a/.github/workflows/storybook.yml +++ b/.github/workflows/storybook.yml @@ -57,6 +57,9 @@ jobs: - name: 📦 Install dependencies run: pnpm install --frozen-lockfile + - name: ⚙️ Compile dependencies + run: corepack pnpm run -r --filter enso-common compile + - name: 📥 Download storybook cache uses: actions/cache@v4 with: diff --git a/.github/workflows/wasm-checks.yml b/.github/workflows/wasm-checks.yml index 246f8bb97305..4ffe6b6fac78 100644 --- a/.github/workflows/wasm-checks.yml +++ b/.github/workflows/wasm-checks.yml @@ -21,6 +21,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -64,6 +75,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 @@ -107,6 +129,17 @@ jobs: - self-hosted - Linux steps: + - if: runner.os == 'Windows' + name: Setup required bazel environment + run: "\necho BAZEL_SH=C:\\Program Files\\Git\\bin\\bash.exe >> %GITHUB_ENV%\necho BAZEL_VC=C:\\BuildTools\\VC >> %GITHUB_ENV%\n " + shell: cmd + - name: Setup bazel environment + uses: bazel-contrib/setup-bazel@09f3a72d13a081857b0ee94e986ffa84caef7c85 + with: + bazelisk-cache: true + disk-cache: true + output-base: ${{ runner.os == 'Windows' && 'c:/_bazel' || '' }} + repository-cache: true - if: startsWith(runner.name, 'GitHub Actions') || startsWith(runner.name, 'Hosted Agent') name: Installing wasm-pack uses: jetli/wasm-pack-action@v0.4.0 diff --git a/.gitignore b/.gitignore index 9d63591daa09..f550280970b0 100644 --- a/.gitignore +++ b/.gitignore @@ -23,7 +23,7 @@ target/ wasm-pack.log generated/ /target -/build/rust/target/ +/build_tools/rust/target/ /rust-analyzer-target ########### @@ -36,7 +36,7 @@ generated/ ## NodeJS ## ############ -node_modules/ +node_modules eslint_report.json .eslintcache @@ -126,6 +126,7 @@ bench-report*.xml project/metals.sbt /build.json /app/ide-desktop/lib/client/electron-builder-config.json +*.config.ts.timestamp-* # Resources fire generated build-time for Win installer/uninstaller. /build/install/installer/archive.rc @@ -136,7 +137,12 @@ project/metals.sbt ## Build Cache ## ################# -build-cache/ +bazel-bin +bazel-bazel +bazel-enso +bazel-out +bazel-testlogs +build-cache ################## ## Native Image ## diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000000..84ff0791f0d9 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +hoist=false diff --git a/.prettierignore b/.prettierignore index 41d9adc6f8bc..718fb277b466 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,7 +4,7 @@ mockDist target # Release body template should not be auto-formatted, as the word wrap does not really looks good in the GitHub UI. -build/build/release-body.md +build_tools/build/release-body.md .github/PULL_REQUEST_TEMPLATE.md .github/ISSUE_TEMPLATE @@ -45,6 +45,7 @@ app/gui/src/project-view/assets/font-*.css Cargo.lock build.json app/gui/playwright-report/ +maven_install.json # Engine Builds can leave these nested working copies. # TODO [mwu]: Adjust Engine build to not leave them. diff --git a/.vscode/settings.json b/.vscode/settings.json index 87e9aba73bbc..3d97f8e4fc0f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -24,6 +24,7 @@ "files.watcherExclude": { "**/target": true }, + "vitest.workspaceConfig": "vitest.workspace.ts", "metals.inlayHints.implicitArguments.enable": true, - "metals.inlayHints.implicitConversions.enable": true + "metals.inlayHints.implicitConversions.enable": true, } diff --git a/BUILD.bazel b/BUILD.bazel new file mode 100644 index 000000000000..0be4ab345e4b --- /dev/null +++ b/BUILD.bazel @@ -0,0 +1,20 @@ +load("@aspect_bazel_lib//lib:write_source_files.bzl", "write_source_files") +load("@aspect_rules_ts//ts:defs.bzl", "ts_config") +load("@npm//:defs.bzl", "npm_link_all_packages") + +npm_link_all_packages() + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + visibility = [":__subpackages__"], +) + +write_source_files( + name = "write_all", + additional_update_targets = [ + "//app/rust-ffi:write_wasm_dist", + "//app/ydoc-shared:write_ast_codegen", + "//app/gui:write_icon_metadata", + ], +) diff --git a/Cargo.lock b/Cargo.lock index 2a7fb9eb728c..2c8145d19324 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -17,6 +17,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "afl" version = "0.15.10" @@ -134,9 +140,9 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "assert-json-diff" @@ -174,13 +180,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -559,7 +565,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.7.4", "object", "rustc-demangle", ] @@ -654,9 +660,12 @@ checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" [[package]] name = "cc" -version = "1.1.10" +version = "1.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9e8aabfac534be767c909e0690571677d49f41bd8465ae876fe043d52ba5292" +checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" +dependencies = [ + "shlex", +] [[package]] name = "cesu8" @@ -703,9 +712,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.15" +version = "4.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d8838454fda655dafd3accb2b6e2bea645b9e4078abe84a22ceb947235c5cc" +checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" dependencies = [ "clap_builder", "clap_derive", @@ -733,7 +742,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -826,9 +835,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" dependencies = [ "libc", ] @@ -1003,7 +1012,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a183e141d0e543fe8abc96e0f06da25e3294284239260e50f63847f549d807a" dependencies = [ "anyhow", - "clap 4.5.15", + "clap 4.5.16", "crossbeam", "crossbeam-channel", "dataview", @@ -1039,7 +1048,7 @@ checksum = "62d671cc41a825ebabc75757b62d3d168c577f9149b2d49ece1dad1f72119d25" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1090,7 +1099,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", "unicode-xid", ] @@ -1204,7 +1213,7 @@ dependencies = [ "base64 0.13.1", "bytes", "chrono", - "clap 4.5.15", + "clap 4.5.16", "convert_case", "derive-where", "derive_more", @@ -1270,7 +1279,7 @@ name = "enso-build-cli" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.5.15", + "clap 4.5.16", "derive-where", "enso-build", "enso-build-base", @@ -1295,7 +1304,7 @@ dependencies = [ "quote", "regex", "serde_yaml", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1379,7 +1388,7 @@ version = "0.2.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1390,7 +1399,7 @@ dependencies = [ "enso-macro-utils", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1440,7 +1449,7 @@ dependencies = [ name = "enso-parser-debug" version = "0.1.0" dependencies = [ - "clap 4.5.15", + "clap 4.5.16", "enso-metamodel", "enso-metamodel-lexpr", "enso-parser", @@ -1496,7 +1505,7 @@ dependencies = [ "enso-macro-utils", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1526,7 +1535,7 @@ version = "0.1.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1596,15 +1605,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "filetime" -version = "0.2.24" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf401df4a4e3872c4fe8151134cf483738e74b67fc934d6532c882b3d24a4550" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", @@ -1614,12 +1623,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.31" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -1643,7 +1652,7 @@ checksum = "2cd66269887534af4b0c3e3337404591daa8dc8b9b2b3db71f9523beb4bafb41" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1763,7 +1772,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -1889,7 +1898,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.3.0", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -2166,7 +2175,7 @@ dependencies = [ "bincode", "bytes", "chrono", - "clap 4.5.15", + "clap 4.5.16", "convert_case", "data-encoding", "dependency_runner", @@ -2249,9 +2258,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -2337,10 +2346,11 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -2397,9 +2407,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.155" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libm" @@ -2450,7 +2460,7 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" name = "logstat" version = "0.1.0" dependencies = [ - "clap 4.5.15", + "clap 4.5.16", "enso-prelude", "lazy_static", "regex", @@ -2505,6 +2515,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minicov" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c71e683cd655513b99affab7d317deb690528255a0d5f717f1024093c12b169" +dependencies = [ + "cc", + "walkdir", +] + [[package]] name = "miniz_oxide" version = "0.7.4" @@ -2514,6 +2534,15 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "mio" version = "1.0.2" @@ -2741,9 +2770,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.36.3" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] @@ -2800,7 +2829,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -2969,7 +2998,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -3000,7 +3029,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -3104,9 +3133,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -3223,9 +3252,9 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom 0.2.15", "libredox", @@ -3383,18 +3412,18 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" dependencies = [ "bitflags 2.6.0", "errno", @@ -3517,7 +3546,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -3564,13 +3593,13 @@ dependencies = [ [[package]] name = "self-replace" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7828a58998685d8bf5a3c5e7a3379a5867289c20828c3ee436280b44b598515" +checksum = "03ec815b5eab420ab893f63393878d89c90fdd94c0bcc44c07abb8ad95552fb7" dependencies = [ - "fastrand 1.9.0", + "fastrand 2.1.1", "tempfile", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3584,29 +3613,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.206" +version = "1.0.209" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b3e4cd94123dd520a128bcd11e34d9e9e423e7e3e50425cb1b4b1e3549d0284" +checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.206" +version = "1.0.209" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabfb6138d2383ea8208cf98ccf69cdfb1aff4088460681d84189aa259762f97" +checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] name = "serde_json" -version = "1.0.124" +version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66ad62847a56b3dba58cc891acd13884b9c61138d330c0d7b6181713d4fce38d" +checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" dependencies = [ "itoa", "memchr", @@ -3662,7 +3691,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.3.0", + "indexmap 2.5.0", "itoa", "ryu", "serde", @@ -3875,7 +3904,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -3897,9 +3926,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.74" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -3966,7 +3995,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", - "fastrand 2.1.0", + "fastrand 2.1.1", "once_cell", "rustix", "windows-sys 0.59.0", @@ -4025,7 +4054,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -4095,9 +4124,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.2" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", @@ -4120,7 +4149,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -4218,7 +4247,7 @@ version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.3.0", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", @@ -4243,15 +4272,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -4273,7 +4302,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -4391,9 +4420,9 @@ checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" [[package]] name = "unsafe-libyaml" @@ -4545,46 +4574,47 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4592,31 +4622,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-bindgen-test" -version = "0.3.42" +version = "0.3.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bf62a58e0780af3e852044583deee40983e5886da43a271dd772379987667b" +checksum = "c61d44563646eb934577f2772656c7ad5e9c90fac78aa8013d776fcdaf24625d" dependencies = [ - "console_error_panic_hook", "js-sys", + "minicov", "scoped-tls", "wasm-bindgen", "wasm-bindgen-futures", @@ -4625,13 +4655,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.42" +version = "0.3.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" +checksum = "54171416ce73aa0b9c377b51cc3cb542becee1cd678204812e8392e5b0e4a031" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] @@ -4649,9 +4679,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" dependencies = [ "js-sys", "wasm-bindgen", @@ -5074,7 +5104,7 @@ name = "wstest" version = "0.1.0" dependencies = [ "base64 0.13.1", - "clap 4.5.15", + "clap 4.5.16", "either", "enso-prelude", "futures", @@ -5127,7 +5157,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.77", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index df6c9a3c9de5..72bf98321c7e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,27 +1,28 @@ [workspace] resolver = "2" -# Listing only the "root" crates of each app/library. All path dependencies are included in the workspace automatically. -# If you want to add sub crate (like `app/gui/config` or `lib/rust/ensogl/examples`), just add it as a path dependency -# where plausible. -# Any GUI functionality that is not used by the main entry point should be defined somewhere with `examples` in the -# path, e.g. `lib/rust/ensogl/examples`, or `app/gui/view/examples`; this is used to optimize the application for -# loading the IDE. members = [ "app/rust-ffi", - "build/cli", - "build/ci-gen", - "build/cli", - "build/install", - "build/install/config", - "build/install/installer", - "build/install/uninstaller", - "lib/rust/*", + "build_tools/cli", + "build_tools/macros/lib", + "build_tools/ci-gen", + "build_tools/cli", + "build_tools/install", + "build_tools/install/config", + "build_tools/install/installer", + "build_tools/install/uninstaller", + "lib/rust/launcher-shims", + "lib/rust/macro-utils", + "lib/rust/metamodel", "lib/rust/parser/doc-parser", "lib/rust/parser/src/syntax/tree/visitor", "lib/rust/parser/jni", "lib/rust/parser/generate-java", "lib/rust/parser/schema", "lib/rust/parser/debug", + "lib/rust/prelude", + "lib/rust/prelude/macros", + "lib/rust/reflect", + "lib/rust/zst", "lib/rust/parser/debug/fuzz", "tools/language-server/logstat", "tools/language-server/wstest", @@ -120,8 +121,8 @@ tokio-util = { version = "0.7.10", features = ["full"] } tracing = { version = "0.1.40" } tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } walkdir = { version = "2.5.0" } -wasm-bindgen = { version = "0.2.92", default-features = false } -wasm-bindgen-test = { version = "0.3.34" } +wasm-bindgen = { version = "0.2.99", default-features = false } +wasm-bindgen-test = { version = "0.3.49" } windows = { version = "0.52.0", features = ["Win32_UI", "Win32_UI_Shell", "Win32_System_LibraryLoader", "Win32_System_Com"] } winreg = { version = "0.52.0" } anyhow = { version = "1.0.66" } diff --git a/MODULE.bazel b/MODULE.bazel new file mode 100644 index 000000000000..efef922dd800 --- /dev/null +++ b/MODULE.bazel @@ -0,0 +1,231 @@ +"enso-org/enso" + +############################ +### JavaScript ecosystem ### +############################ + +bazel_dep(name = "aspect_rules_js", version = "2.1.1") +bazel_dep(name = "aspect_rules_ts", version = "3.3.2") +bazel_dep(name = "rules_nodejs", version = "6.3.2") +bazel_dep(name = "aspect_bazel_lib", version = "2.10.0") + +## Node.js +node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") +node.toolchain(node_version = "20.11.1") + +tar_toolchain = use_extension("//toolchains:tar/extensions.bzl", "tar_toolchain") +use_repo(tar_toolchain, "tar_toolchain") +register_toolchains("//toolchains:windows_builtin_tar_toolchain") + +## Npm +npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm", dev_dependency = True) +npm.npm_translate_lock( + name = "npm", + npmrc = "//:.npmrc", + pnpm_lock = "//:pnpm-lock.yaml", + verify_node_modules_ignored = "//:.bazelignore", +) +use_repo(npm, "npm") + +## TypeScript +rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext", dev_dependency = True) +rules_ts_ext.deps() +use_repo(rules_ts_ext, "npm_typescript") + +############ +### RUST ### +############ +bazel_dep(name = "rules_rust", version = "0.56.0") +# TODO: use next released version +git_override( + module_name="rules_rust", + remote="https://github.com/bazelbuild/rules_rust.git", + commit="37acfa101245e45952eb7b0fcfa8b6f229055f2c" +) + +rust = use_extension("@rules_rust//rust:extensions.bzl", "rust") +rust.toolchain( + edition = "2021", + extra_target_triples = ["wasm32-unknown-unknown"], + versions = ["nightly/2024-08-08"], +) +use_repo(rust, "rust_toolchains") +register_toolchains("@rust_toolchains//:all") + +crate = use_extension("@rules_rust//crate_universe:extension.bzl", "crate") +crate.from_cargo( + name = "crates", + cargo_config = "//:.cargo/config.toml", + cargo_lockfile = "//:Cargo.lock", + manifests = [ + "//:build_tools/ci-gen/Cargo.toml", + "//:build_tools/cli/Cargo.toml", + "//:build_tools/install/Cargo.toml", + "//:build_tools/install/config/Cargo.toml", + "//:build_tools/install/installer/Cargo.toml", + "//:build_tools/install/uninstaller/Cargo.toml", + "//:build_tools/macros/lib/Cargo.toml", + "//:Cargo.toml", + "//:lib/rust/launcher-shims/Cargo.toml", + "//:lib/rust/macro-utils/Cargo.toml", + "//:lib/rust/metamodel/Cargo.toml", + "//:lib/rust/parser/debug/Cargo.toml", + "//:lib/rust/parser/doc-parser/Cargo.toml", + "//:lib/rust/parser/generate-java/Cargo.toml", + "//:lib/rust/parser/jni/Cargo.toml", + "//:lib/rust/parser/schema/Cargo.toml", + "//:lib/rust/parser/src/syntax/tree/visitor/Cargo.toml", + "//:lib/rust/prelude/Cargo.toml", + "//:lib/rust/prelude/macros/Cargo.toml", + "//:lib/rust/reflect/Cargo.toml", + "//:lib/rust/zst/Cargo.toml", + "//:lib/rust/parser/debug/fuzz/Cargo.toml", + "//:tools/language-server/logstat/Cargo.toml", + "//:tools/language-server/wstest/Cargo.toml", + "//app/rust-ffi:Cargo.toml", + ], +) +use_repo(crate, "crates") + +#################### +### WASM BINDGEN ### +#################### +bazel_dep(name = "rules_rust_wasm_bindgen", version = "0.56.0") +git_override( + module_name="rules_rust_wasm_bindgen", + remote="https://github.com/bazelbuild/rules_rust.git", + commit="37acfa101245e45952eb7b0fcfa8b6f229055f2c", + strip_prefix="extensions/wasm_bindgen" +) + +WASM_BINDGEN_VERSION = "0.2.99" + +wb_crates = use_extension("@rules_rust//crate_universe:extension.bzl", "crate") +wb_crates.from_cargo( + name = "wb_crates", + cargo_config = "//:.cargo/config.toml", + cargo_lockfile = "@wasm_bindgen_cli_crate//:Cargo.lock", + manifests = ["@wasm_bindgen_cli_crate//:Cargo.toml"], +) +use_repo(wb_crates, "wb_crates") + +http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") +http_archive( + name = "wasm_bindgen_cli_crate", + build_file = "//toolchains/wasm_bindgen:BUILD.wasm-bindgen-cli.bazel", + integrity = "sha256-+X6aHOxWGsoyOWdwK4xQaAoNF6GXuT/aQzunp2z1egw=", + strip_prefix = "wasm-bindgen-cli-{}".format(WASM_BINDGEN_VERSION), + type = "tar.gz", + urls = ["https://static.crates.io/crates/wasm-bindgen-cli/wasm-bindgen-cli-{}.crate".format(WASM_BINDGEN_VERSION)], +) + +register_toolchains("//toolchains/wasm_bindgen:cli") + +########### +### JVM ### +########### +bazel_dep(name = "rules_java", version = "7.6.5") +bazel_dep(name = "rules_graalvm", version = "0.11.1") ## upgrade to 0.11.2 once available in bazel central + +gvm = use_extension("@rules_graalvm//:extensions.bzl", "graalvm") +gvm.graalvm( + name = "graalvm", + distribution = "ce", # `oracle`, `ce`, or `community` + java_version = "21", # `17`, `20`, `21`, or `22` as supported by the version provided + version = "23.1.0", # gvm sdk version format like `24.x.x` also supported +) +use_repo(gvm, "graalvm") + +register_toolchains("@graalvm//:jvm") + +register_toolchains("@graalvm//:sdk") ## Native-image + +register_toolchains("@graalvm//:toolchain") + +bazel_dep(name = "rules_jvm_external", version = "6.0") + +scala_logging_version = "3.9.4" + +scalatest_version = "3.3.0-SNAP4" + +cats_version = "2.9.0" + +circe_version = "0.14.5" + +circe_libs = [ + "circe-core", + "circe-generic", + "circe-parser", +] + +circe = ["io.circe:%s_2.13:%s" % (x, circe_version) for x in circe_libs] + +commons_text_version = "1.10.0" + +http_components_version = "4.4.1" + +jackson_version = "2.15.2" + +commons_io_version = "2.12.0" + +commons_compress_version = "1.23.0" + +commons_lang_version = "3.12.0" + +junit_version = "4.13.2" + +hamcrest_version = "1.3" + +picocli_version = "4.6.1" + +minimal_json_version = "0.9.5" + +## TODO: Consider replacing maven extension with +## https://github.com/bazeltools/bazel-deps +## The downside of the approach is that a number of other rules rely on it. +maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven") + +## After updating a list of artifacts run +## > bazel run @unpinned_maven//:pin +maven.install( + artifacts = [ + "com.typesafe.scala-logging:scala-logging_2.13:%s" % scala_logging_version, + "org.scalatest:scalatest_2.13:%s" % scalatest_version, + "org.typelevel:cats-core_2.13:%s" % cats_version, + "org.apache.commons:commons-text:%s" % commons_text_version, + "org.apache.httpcomponents:httpclient:%s" % http_components_version, + "com.fasterxml.jackson.core:jackson-databind:%s" % jackson_version, + "commons-io:commons-io:%s" % commons_io_version, + "org.apache.commons:commons-compress:%s" % commons_compress_version, + "org.apache.commons:commons-lang3:%s" % commons_lang_version, + "junit:junit:%s" % junit_version, + "org.hamcrest:hamcrest-all:%s" % hamcrest_version, + + ## bazel-distribution dependencies + "info.picocli:picocli:%s" % picocli_version, + "com.eclipsesource.minimal-json:minimal-json:%s" % minimal_json_version, + ] + circe, + fail_if_repin_required = True, + lock_file = "//:maven_install.json", + repositories = [ + "https://repo.maven.apache.org/maven2", + "https://repo1.maven.org/maven2", + ], +) +use_repo( + maven, + "maven", + "unpinned_maven", +) + +################### +### ENVIRONMENT ### +################### +secrets = use_extension("//:bazel_scripts/secrets.bzl", "secrets") +secrets.environment_repo( + name = "env", + entries = { + "NODE_ENV": "production", + }, +) +use_repo(secrets, "env") diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock new file mode 100644 index 000000000000..30997901fc89 --- /dev/null +++ b/MODULE.bazel.lock @@ -0,0 +1,4994 @@ +{ + "lockFileVersion": 12, + "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.bcr.1/source.json": "14892cc698e02ffedf4967546e6bedb7245015906888d3465fcf27c90a26da10", + "https://bcr.bazel.build/modules/apple_support/1.17.1/MODULE.bazel": "655c922ab1209978a94ef6ca7d9d43e940cd97d9c172fb55f94d91ac53f8610b", + "https://bcr.bazel.build/modules/apple_support/1.17.1/source.json": "6b2b8c74d14e8d485528a938e44bdb72a5ba17632b9e14ef6e68a5ee96c8347f", + "https://bcr.bazel.build/modules/apple_support/1.5.0/MODULE.bazel": "50341a62efbc483e8a2a6aec30994a58749bd7b885e18dd96aa8c33031e558ef", + "https://bcr.bazel.build/modules/apple_support/1.8.1/MODULE.bazel": "500f7aa32c008222e360dc9a158c248c2dbaeb3b6246c19e7269981dbd61e29b", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.10.0/MODULE.bazel": "ae12288421b12faeb09bc4cfb3c05945ce66df5c55fca8a2f2f66ae9f21c7acb", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.10.0/source.json": "979ab73af044e9a107a598fe1492da0f3b9f885e953bd9d8bfd82c8da71879d5", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.7.7/MODULE.bazel": "491f8681205e31bb57892d67442ce448cda4f472a8e6b3dc062865e29a64f89c", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.8.1/MODULE.bazel": "812d2dd42f65dca362152101fbec418029cc8fd34cbad1a2fde905383d705838", + "https://bcr.bazel.build/modules/aspect_bazel_lib/2.9.3/MODULE.bazel": "66baf724dbae7aff4787bf2245cc188d50cb08e07789769730151c0943587c14", + "https://bcr.bazel.build/modules/aspect_rules_js/2.0.0/MODULE.bazel": "b45b507574aa60a92796e3e13c195cd5744b3b8aff516a9c0cb5ae6a048161c5", + "https://bcr.bazel.build/modules/aspect_rules_js/2.1.1/MODULE.bazel": "8d4134d63d6dcaa32929d3f30d558b8f5e06985b167e46cdb5a669137cb5a8c3", + "https://bcr.bazel.build/modules/aspect_rules_js/2.1.1/source.json": "626b9deabfd011d205f24967dd6e9bbb1aadaafed877af67e7ba69446e170535", + "https://bcr.bazel.build/modules/aspect_rules_ts/3.3.2/MODULE.bazel": "8f1fead2790489dc989ae67d64def91c0ffe9c95e166b3742e0337555e5fd0f6", + "https://bcr.bazel.build/modules/aspect_rules_ts/3.3.2/source.json": "5c40b1b359c71989d2315333c698b40980f77bc0da3807c32071a2899d3829ed", + "https://bcr.bazel.build/modules/bazel_features/1.0.0/MODULE.bazel": "d7f022dc887efb96e1ee51cec7b2e48d41e36ff59a6e4f216c40e4029e1585bf", + "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.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.21.0/source.json": "3e8379efaaef53ce35b7b8ba419df829315a880cb0a030e5bb45c96d6d5ecb5f", + "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_skylib/1.0.3/MODULE.bazel": "bcb0fd896384802d1ad283b4e4eb4d718eebd8cb820b0a2c3a347fb971afd9d8", + "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.1/MODULE.bazel": "3120d80c5861aa616222ec015332e5f8d3171e062e3e804a2a0253e1be26e59b", + "https://bcr.bazel.build/modules/bazel_skylib/1.7.1/source.json": "f121b43eeefc7c29efbd51b83d08631e2347297c95aac9764a701f2a6a2bb953", + "https://bcr.bazel.build/modules/buildozer/7.1.2/MODULE.bazel": "2e8dd40ede9c454042645fd8d8d0cd1527966aa5c919de86661e62953cd73d84", + "https://bcr.bazel.build/modules/buildozer/7.1.2/source.json": "c9028a501d2db85793a6996205c8de120944f50a0d570438fcae0457a5f9d1f8", + "https://bcr.bazel.build/modules/googletest/1.11.0/MODULE.bazel": "3a83f095183f66345ca86aa13c58b59f9f94a2f81999c093d4eeaa2d262d12f4", + "https://bcr.bazel.build/modules/googletest/1.14.0/MODULE.bazel": "cfbcbf3e6eac06ef9d85900f64424708cc08687d1b527f0ef65aa7517af8118f", + "https://bcr.bazel.build/modules/googletest/1.14.0/source.json": "2478949479000fdd7de9a3d0107ba2c85bb5f961c3ecb1aa448f52549ce310b5", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/MODULE.bazel": "31271aedc59e815656f5736f282bb7509a97c7ecb43e927ac1a37966e0578075", + "https://bcr.bazel.build/modules/jsoncpp/1.9.5/source.json": "4108ee5085dd2885a341c7fab149429db457b3169b86eb081fa245eadf69169d", + "https://bcr.bazel.build/modules/platforms/0.0.10/MODULE.bazel": "8cb8efaf200bdeb2150d93e162c40f388529a25852b332cec879373771e48ed5", + "https://bcr.bazel.build/modules/platforms/0.0.10/source.json": "f22828ff4cf021a6b577f1bf6341cb9dcd7965092a439f64fc1bb3b7a5ae4bd5", + "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/protobuf/21.7/MODULE.bazel": "a5a29bb89544f9b97edce05642fac225a808b5b7be74038ea3640fae2f8e66a7", + "https://bcr.bazel.build/modules/protobuf/27.0/MODULE.bazel": "7873b60be88844a0a1d8f80b9d5d20cfbd8495a689b8763e76c6372998d3f64c", + "https://bcr.bazel.build/modules/protobuf/27.0/source.json": "1acf3d080c728d42f423fde5422fd0a1a24f44c15908124ce12363a253384193", + "https://bcr.bazel.build/modules/protobuf/3.19.0/MODULE.bazel": "6b5fbb433f760a99a22b18b6850ed5784ef0e9928a72668b66e4d7ccd47db9b0", + "https://bcr.bazel.build/modules/protobuf/3.19.6/MODULE.bazel": "9233edc5e1f2ee276a60de3eaa47ac4132302ef9643238f23128fea53ea12858", + "https://bcr.bazel.build/modules/rules_cc/0.0.1/MODULE.bazel": "cb2aa0747f84c6c3a78dad4e2049c154f08ab9d166b1273835a8174940365647", + "https://bcr.bazel.build/modules/rules_cc/0.0.17/MODULE.bazel": "2ae1d8f4238ec67d7185d8861cb0a2cdf4bc608697c331b95bf990e69b62e64a", + "https://bcr.bazel.build/modules/rules_cc/0.0.17/source.json": "4db99b3f55c90ab28d14552aa0632533e3e8e5e9aea0f5c24ac0014282c2a7c5", + "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_graalvm/0.11.1/MODULE.bazel": "0caaea2dff60b70b8f9b9ceb6e5ae815b85ae610a0392433a22c755b2f2c2456", + "https://bcr.bazel.build/modules/rules_graalvm/0.11.1/source.json": "23d59a63e1dce95df987d19284bad81a4bf7e4df788d47b0ad99c217447bceca", + "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/7.3.2/MODULE.bazel": "50dece891cfdf1741ea230d001aa9c14398062f2b7c066470accace78e412bc2", + "https://bcr.bazel.build/modules/rules_java/7.6.5/MODULE.bazel": "481164be5e02e4cab6e77a36927683263be56b7e36fef918b458d7a8a1ebadb1", + "https://bcr.bazel.build/modules/rules_java/7.6.5/source.json": "a805b889531d1690e3c72a7a7e47a870d00323186a9904b36af83aa3d053ee8d", + "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.0/MODULE.bazel": "37c93a5a78d32e895d52f86a8d0416176e915daabd029ccb5594db422e87c495", + "https://bcr.bazel.build/modules/rules_jvm_external/6.0/source.json": "73cc8818203a182e7374adf137f428d276190b2e2bef3022c231990cf0e594aa", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/MODULE.bazel": "ef85697305025e5a61f395d4eaede272a5393cee479ace6686dba707de804d59", + "https://bcr.bazel.build/modules/rules_kotlin/1.9.0/source.json": "e4e8566acbfc02cc701c169d756ee99bca1c395a0d1dc69293a21a5ef14cac43", + "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_nodejs/6.2.0/MODULE.bazel": "ec27907f55eb34705adb4e8257952162a2d4c3ed0f0b3b4c3c1aad1fac7be35e", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.0/MODULE.bazel": "45345e4aba35dd6e4701c1eebf5a4e67af4ed708def9ebcdc6027585b34ee52d", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/MODULE.bazel": "42e8d5254b6135f890fecca7c8d7f95a7d27a45f8275b276f66ec337767530ef", + "https://bcr.bazel.build/modules/rules_nodejs/6.3.2/source.json": "80e0a68eb81772f1631f8b69014884eebc2474b3b3025fd19a5240ae4f76f9c9", + "https://bcr.bazel.build/modules/rules_pkg/0.7.0/MODULE.bazel": "df99f03fc7934a4737122518bb87e667e62d780b610910f0447665a7e2be62dc", + "https://bcr.bazel.build/modules/rules_pkg/0.7.0/source.json": "c2557066e0c0342223ba592510ad3d812d4963b9024831f7f66fd0584dd8c66c", + "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/MODULE.bazel": "b531d7f09f58dce456cd61b4579ce8c86b38544da75184eadaf0a7cb7966453f", + "https://bcr.bazel.build/modules/rules_proto/6.0.0/source.json": "de77e10ff0ab16acbf54e6b46eecd37a99c5b290468ea1aee6e95eb1affdaed7", + "https://bcr.bazel.build/modules/rules_python/0.10.2/MODULE.bazel": "cc82bc96f2997baa545ab3ce73f196d040ffb8756fd2d66125a530031cd90e5f", + "https://bcr.bazel.build/modules/rules_python/0.22.1/MODULE.bazel": "26114f0c0b5e93018c0c066d6673f1a2c3737c7e90af95eff30cfee38d0bbac7", + "https://bcr.bazel.build/modules/rules_python/0.23.1/MODULE.bazel": "49ffccf0511cb8414de28321f5fcf2a31312b47c40cc21577144b7447f2bf300", + "https://bcr.bazel.build/modules/rules_python/0.23.1/source.json": "a6d9965700e3bd75df4e19140c0e651851bb720d8b9eb280ecd1ee44b92d7646", + "https://bcr.bazel.build/modules/rules_python/0.4.0/MODULE.bazel": "9208ee05fd48bf09ac60ed269791cf17fb343db56c8226a720fbb1cdf467166c", + "https://bcr.bazel.build/modules/rules_shell/0.3.0/MODULE.bazel": "de4402cd12f4cc8fda2354fce179fdb068c0b9ca1ec2d2b17b3e21b24c1a937b", + "https://bcr.bazel.build/modules/rules_shell/0.3.0/source.json": "c55ed591aa5009401ddf80ded9762ac32c358d2517ee7820be981e2de9756cf3", + "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.4/MODULE.bazel": "6569966df04610b8520957cb8e97cf2e9faac2c0309657c537ab51c16c18a2a4", + "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.6.2/source.json": "d2ff8063b63b4a85e65fe595c4290f99717434fa9f95b4748a79a7d04dfed349", + "https://bcr.bazel.build/modules/upb/0.0.0-20220923-a547704/MODULE.bazel": "7298990c00040a0e2f121f6c32544bab27d4452f80d9ce51349b1a28f3005c43", + "https://bcr.bazel.build/modules/zlib/1.2.11/MODULE.bazel": "07b389abc85fdbca459b69e2ec656ae5622873af3f845e1c9d80fe179f3effa0", + "https://bcr.bazel.build/modules/zlib/1.2.12/MODULE.bazel": "3b1a8834ada2a883674be8cbd36ede1b6ec481477ada359cd2d3ddc562340b27", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/MODULE.bazel": "af322bc08976524477c79d1e45e241b6efbeb918c497e8840b8ab116802dda79", + "https://bcr.bazel.build/modules/zlib/1.3.1.bcr.3/source.json": "2be409ac3c7601245958cd4fcdff4288be79ed23bd690b4b951f500d54ee6e7d" + }, + "selectedYankedVersions": {}, + "moduleExtensions": { + "//:bazel_scripts/secrets.bzl%secrets": { + "general": { + "bzlTransitiveDigest": "gAEoCrisX9JFPj8WI9Db0nShQ/mwAWt8x3lA90BT6NU=", + "usagesDigest": "XpF4JwX4Xgyq2sWdhsHsvJsiZPDee6VKhCcujEOouaE=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "env": { + "bzlFile": "@@//:bazel_scripts/secrets.bzl", + "ruleClassName": "environment_secrets_rule", + "attributes": { + "entries": { + "NODE_ENV": "production" + } + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "//toolchains:tar/extensions.bzl%tar_toolchain": { + "general": { + "bzlTransitiveDigest": "zaB1i+QbFHKAtb8fdIPYDrVMuvv47NruofNSwyBYoGQ=", + "usagesDigest": "as88kBc5XKKjvtBjgA9K4U2bY8597uhSgRX22NpzMGY=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "tar_toolchain": { + "bzlFile": "@@//toolchains:tar/extensions.bzl", + "ruleClassName": "tar_toolchain_repo_rule", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@apple_support+//crosstool:setup.bzl%apple_cc_configure_extension": { + "general": { + "bzlTransitiveDigest": "7ii+gFxWSxHhQPrBxfMEHhtrGvHmBTvsh+KOyGunP/s=", + "usagesDigest": "3L+PK6aRnliv0iIS8m3kdo+LjmvjJWoFCm3qZcPSg+8=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "local_config_apple_cc_toolchains": { + "bzlFile": "@@apple_support+//crosstool:setup.bzl", + "ruleClassName": "_apple_cc_autoconf_toolchains", + "attributes": {} + }, + "local_config_apple_cc": { + "bzlFile": "@@apple_support+//crosstool:setup.bzl", + "ruleClassName": "_apple_cc_autoconf", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [ + [ + "apple_support+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@aspect_rules_ts+//ts:extensions.bzl%ext": { + "general": { + "bzlTransitiveDigest": "RqHZocRc7jsds9NAPS8k3oUCS3SqqA3cFqpd0Lt7mkU=", + "usagesDigest": "4RQ6nsMx1+qHuaNHtPlx+cWpb1runcFHT0Vxt2Hxo7Y=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "npm_typescript": { + "bzlFile": "@@aspect_rules_ts+//ts/private:npm_repositories.bzl", + "ruleClassName": "http_archive_version", + "attributes": { + "bzlmod": true, + "version": "5.6.3", + "integrity": "", + "build_file": "@@aspect_rules_ts+//ts:BUILD.typescript", + "build_file_substitutions": { + "bazel_worker_version": "5.4.2", + "google_protobuf_version": "3.20.1" + }, + "urls": [ + "https://registry.npmjs.org/typescript/-/typescript-{}.tgz" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "aspect_rules_ts+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@platforms//host:extension.bzl%host_platform": { + "general": { + "bzlTransitiveDigest": "xelQcPZH8+tmuOHVjL9vDxMnnQNMlwj0SlvgoqBkm4U=", + "usagesDigest": "XppQ1xb/RE1nux13EKRkuq+C3xt9OcfW+Ez9RtOSOu0=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "host_platform": { + "bzlFile": "@@platforms//host:extension.bzl", + "ruleClassName": "host_platform_repo", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@rules_graalvm+//:extensions.bzl%graalvm": { + "general": { + "bzlTransitiveDigest": "h5NoLe6qf+ziboLGAdcXrD+fgwCizx5PmMd0VH19SXY=", + "usagesDigest": "D/MavCEoXwKsSJGYbxICXD04ealGjuWjJG9AYKhKdJ4=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "graalvm_toolchains": { + "bzlFile": "@@rules_graalvm+//internal:graalvm_bindist.bzl", + "ruleClassName": "_toolchain_config", + "attributes": { + "build_file": "\nalias(\n name = \"toolchain_gvm\",\n actual = \"gvm\",\n visibility = [\"//visibility:public\"],\n)\ntoolchain(\n name = \"gvm\",\n exec_compatible_with = [\n \n ],\n target_compatible_with = [\n \n ],\n toolchain = \"@graalvm//:gvm\",\n toolchain_type = \"@rules_graalvm//graalvm/toolchain\",\n visibility = [\"//visibility:public\"],\n)\n\nconfig_setting(\n name = \"prefix_version_setting\",\n values = {\"java_runtime_version\": \"graalvm_21\"},\n visibility = [\"//visibility:private\"],\n)\ntoolchain(\n name = \"toolchain\",\n target_compatible_with = [],\n target_settings = [\":prefix_version_setting\"],\n toolchain_type = \"@bazel_tools//tools/jdk:runtime_toolchain_type\",\n toolchain = \"@graalvm//:jdk\",\n visibility = [\"//visibility:public\"],\n)\n\ntoolchain(\n name = \"bootstrap_runtime_toolchain\",\n # These constraints are not required for correctness, but prevent fetches of remote JDK for\n # different architectures. As every Java compilation toolchain depends on a bootstrap runtime in\n # the same configuration, this constraint will not result in toolchain resolution failures.\n exec_compatible_with = [],\n target_settings = [\":prefix_version_setting\"],\n toolchain_type = \"@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type\",\n toolchain = \"@graalvm//:jdk\",\n visibility = [\"//visibility:public\"],\n)\n\n" + } + }, + "graalvm": { + "bzlFile": "@@rules_graalvm+//internal:graalvm_bindist.bzl", + "ruleClassName": "_graalvm_bindist_repository", + "attributes": { + "version": "23.1.0", + "java_version": "21", + "distribution": "ce", + "components": [], + "setup_actions": [], + "enable_toolchain": true, + "toolchain_config": "graalvm_toolchains" + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_graalvm+", + "bazel_skylib", + "bazel_skylib+" + ] + ] + } + }, + "@@rules_kotlin+//src/main/starlark/core/repositories:bzlmod_setup.bzl%rules_kotlin_extensions": { + "general": { + "bzlTransitiveDigest": "6/ftZj7oq4BTOll6YT4cDgIdEVMheBJQNspfK2KyhDo=", + "usagesDigest": "ESPKwtPw75ryrTOBAbHsLvIanFa1TfahpacgjRnCVec=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "com_github_jetbrains_kotlin": { + "bzlFile": "@@rules_kotlin+//src/main/starlark/core/repositories:compiler.bzl", + "ruleClassName": "kotlin_compiler_repository", + "attributes": { + "urls": [ + "https://github.com/JetBrains/kotlin/releases/download/v1.9.10/kotlin-compiler-1.9.10.zip" + ], + "sha256": "7d74863deecf8e0f28ea54c3735feab003d0eac67e8d3a791254b16889c20342", + "compiler_version": "1.9.10" + } + }, + "com_github_google_ksp": { + "bzlFile": "@@rules_kotlin+//src/main/starlark/core/repositories:ksp.bzl", + "ruleClassName": "ksp_compiler_plugin_repository", + "attributes": { + "urls": [ + "https://github.com/google/ksp/releases/download/1.9.10-1.0.13/artifacts.zip" + ], + "sha256": "5b0b1179e8af40877d9d5929ec0260afb104956eabf2f23bb5568cfd6c20b37b", + "strip_version": "1.9.10-1.0.13" + } + }, + "kt_java_stub_template": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": { + "urls": [ + "https://raw.githubusercontent.com/bazelbuild/bazel/6.2.1/src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt" + ], + "sha256": "78e29525872594ffc783c825f428b3e61d4f3e632f46eaa64f004b2814c4a612" + } + }, + "com_github_pinterest_ktlint": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": { + "sha256": "2b3f6f674a944d25bb8d283c3539947bbe86074793012909a55de4b771f74bcc", + "urls": [ + "https://github.com/pinterest/ktlint/releases/download/0.49.1/ktlint" + ], + "executable": true + } + }, + "rules_android": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806", + "strip_prefix": "rules_android-0.1.1", + "urls": [ + "https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip" + ] + } + }, + "buildkite_config": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "urls": [ + "https://storage.googleapis.com/rbe-toolchain/bazel-configs/rbe-ubuntu1604/latest/rbe_default.tar" + ] + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_kotlin+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_nodejs+//nodejs:extensions.bzl%node": { + "general": { + "bzlTransitiveDigest": "rphcryfYrOY/P3emfTskC/GY5YuHcwMl2B2ncjaM8lY=", + "usagesDigest": "btwAfGIbU0lGpYjZ3/Xl5oMnyR2AhPBYQYYvn9Y06uQ=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "nodejs_linux_amd64": { + "bzlFile": "@@rules_nodejs+//nodejs:repositories.bzl", + "ruleClassName": "_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.11.1", + "include_headers": false, + "platform": "linux_amd64" + } + }, + "nodejs_linux_arm64": { + "bzlFile": "@@rules_nodejs+//nodejs:repositories.bzl", + "ruleClassName": "_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.11.1", + "include_headers": false, + "platform": "linux_arm64" + } + }, + "nodejs_linux_s390x": { + "bzlFile": "@@rules_nodejs+//nodejs:repositories.bzl", + "ruleClassName": "_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.11.1", + "include_headers": false, + "platform": "linux_s390x" + } + }, + "nodejs_linux_ppc64le": { + "bzlFile": "@@rules_nodejs+//nodejs:repositories.bzl", + "ruleClassName": "_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.11.1", + "include_headers": false, + "platform": "linux_ppc64le" + } + }, + "nodejs_darwin_amd64": { + "bzlFile": "@@rules_nodejs+//nodejs:repositories.bzl", + "ruleClassName": "_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.11.1", + "include_headers": false, + "platform": "darwin_amd64" + } + }, + "nodejs_darwin_arm64": { + "bzlFile": "@@rules_nodejs+//nodejs:repositories.bzl", + "ruleClassName": "_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.11.1", + "include_headers": false, + "platform": "darwin_arm64" + } + }, + "nodejs_windows_amd64": { + "bzlFile": "@@rules_nodejs+//nodejs:repositories.bzl", + "ruleClassName": "_nodejs_repositories", + "attributes": { + "node_download_auth": {}, + "node_repositories": {}, + "node_urls": [ + "https://nodejs.org/dist/v{version}/{filename}" + ], + "node_version": "20.11.1", + "include_headers": false, + "platform": "windows_amd64" + } + }, + "nodejs": { + "bzlFile": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl", + "ruleClassName": "nodejs_repo_host_os_alias", + "attributes": { + "user_node_repository_name": "nodejs" + } + }, + "nodejs_host": { + "bzlFile": "@@rules_nodejs+//nodejs/private:nodejs_repo_host_os_alias.bzl", + "ruleClassName": "nodejs_repo_host_os_alias", + "attributes": { + "user_node_repository_name": "nodejs" + } + }, + "nodejs_toolchains": { + "bzlFile": "@@rules_nodejs+//nodejs/private:nodejs_toolchains_repo.bzl", + "ruleClassName": "nodejs_toolchains_repo", + "attributes": { + "user_node_repository_name": "nodejs" + } + } + }, + "recordedRepoMappingEntries": [] + } + }, + "@@rules_python+//python/extensions:python.bzl%python": { + "general": { + "bzlTransitiveDigest": "l7SEKGzdShn1GH45yoD3IEBi5SxT+5WsAq/OlHiiuiw=", + "usagesDigest": "G0049yN2bVaFeZ1CsXFocvBCzBAfwKall5SFePig1+A=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "python_3_11_aarch64-apple-darwin": { + "bzlFile": "@@rules_python+//python:repositories.bzl", + "ruleClassName": "python_repository", + "attributes": { + "sha256": "4918cdf1cab742a90f85318f88b8122aeaa2d04705803c7b6e78e81a3dd40f80", + "patches": [], + "platform": "aarch64-apple-darwin", + "python_version": "3.11.1", + "release_filename": "20230116/cpython-3.11.1+20230116-aarch64-apple-darwin-install_only.tar.gz", + "urls": [ + "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-aarch64-apple-darwin-install_only.tar.gz" + ], + "distutils_content": "", + "strip_prefix": "python", + "ignore_root_user_error": false + } + }, + "python_3_11_aarch64-unknown-linux-gnu": { + "bzlFile": "@@rules_python+//python:repositories.bzl", + "ruleClassName": "python_repository", + "attributes": { + "sha256": "debf15783bdcb5530504f533d33fda75a7b905cec5361ae8f33da5ba6599f8b4", + "patches": [], + "platform": "aarch64-unknown-linux-gnu", + "python_version": "3.11.1", + "release_filename": "20230116/cpython-3.11.1+20230116-aarch64-unknown-linux-gnu-install_only.tar.gz", + "urls": [ + "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-aarch64-unknown-linux-gnu-install_only.tar.gz" + ], + "distutils_content": "", + "strip_prefix": "python", + "ignore_root_user_error": false + } + }, + "python_3_11_x86_64-apple-darwin": { + "bzlFile": "@@rules_python+//python:repositories.bzl", + "ruleClassName": "python_repository", + "attributes": { + "sha256": "20a4203d069dc9b710f70b09e7da2ce6f473d6b1110f9535fb6f4c469ed54733", + "patches": [], + "platform": "x86_64-apple-darwin", + "python_version": "3.11.1", + "release_filename": "20230116/cpython-3.11.1+20230116-x86_64-apple-darwin-install_only.tar.gz", + "urls": [ + "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-x86_64-apple-darwin-install_only.tar.gz" + ], + "distutils_content": "", + "strip_prefix": "python", + "ignore_root_user_error": false + } + }, + "python_3_11_x86_64-pc-windows-msvc": { + "bzlFile": "@@rules_python+//python:repositories.bzl", + "ruleClassName": "python_repository", + "attributes": { + "sha256": "edc08979cb0666a597466176511529c049a6f0bba8adf70df441708f766de5bf", + "patches": [], + "platform": "x86_64-pc-windows-msvc", + "python_version": "3.11.1", + "release_filename": "20230116/cpython-3.11.1+20230116-x86_64-pc-windows-msvc-shared-install_only.tar.gz", + "urls": [ + "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-x86_64-pc-windows-msvc-shared-install_only.tar.gz" + ], + "distutils_content": "", + "strip_prefix": "python", + "ignore_root_user_error": false + } + }, + "python_3_11_x86_64-unknown-linux-gnu": { + "bzlFile": "@@rules_python+//python:repositories.bzl", + "ruleClassName": "python_repository", + "attributes": { + "sha256": "02a551fefab3750effd0e156c25446547c238688a32fabde2995c941c03a6423", + "patches": [], + "platform": "x86_64-unknown-linux-gnu", + "python_version": "3.11.1", + "release_filename": "20230116/cpython-3.11.1+20230116-x86_64-unknown-linux-gnu-install_only.tar.gz", + "urls": [ + "https://github.com/indygreg/python-build-standalone/releases/download/20230116/cpython-3.11.1+20230116-x86_64-unknown-linux-gnu-install_only.tar.gz" + ], + "distutils_content": "", + "strip_prefix": "python", + "ignore_root_user_error": false + } + }, + "python_3_11": { + "bzlFile": "@@rules_python+//python/private:toolchains_repo.bzl", + "ruleClassName": "toolchain_aliases", + "attributes": { + "python_version": "3.11.1", + "user_repository_name": "python_3_11" + } + }, + "pythons_hub": { + "bzlFile": "@@rules_python+//python/extensions/private:pythons_hub.bzl", + "ruleClassName": "hub_repo", + "attributes": { + "toolchain_prefixes": [ + "_0000_python_3_11_" + ], + "toolchain_python_versions": [ + "3.11" + ], + "toolchain_set_python_version_constraints": [ + "False" + ], + "toolchain_user_repository_names": [ + "python_3_11" + ] + } + }, + "python_aliases": { + "bzlFile": "@@rules_python+//python/private:toolchains_repo.bzl", + "ruleClassName": "multi_toolchain_aliases", + "attributes": { + "python_versions": { + "3.11": "python_3_11" + } + } + } + }, + "recordedRepoMappingEntries": [ + [ + "rules_python+", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, + "@@rules_rust+//crate_universe/private:internal_extensions.bzl%cu": { + "general": { + "bzlTransitiveDigest": "t5TdUmUdJOBN6Z/ZUWQJqdTFGoUkSzcvjK5OgCvlzlA=", + "usagesDigest": "cZ+ECJwGd7BJK/WUN0WIFhTQlfl/eawnUc90nVO6Ghc=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "cui": { + "bzlFile": "@@rules_rust+//crate_universe/private:crates_vendor.bzl", + "ruleClassName": "crates_vendor_remote_repository", + "attributes": { + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.bazel", + "defs_module": "@@rules_rust+//crate_universe/3rdparty/crates:defs.bzl" + } + }, + "cui__adler2-2.0.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/adler2/2.0.0/download" + ], + "strip_prefix": "adler2-2.0.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.adler2-2.0.0.bazel" + } + }, + "cui__ahash-0.8.11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ahash/0.8.11/download" + ], + "strip_prefix": "ahash-0.8.11", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.ahash-0.8.11.bazel" + } + }, + "cui__aho-corasick-1.0.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/aho-corasick/1.0.2/download" + ], + "strip_prefix": "aho-corasick-1.0.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.aho-corasick-1.0.2.bazel" + } + }, + "cui__allocator-api2-0.2.18": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/allocator-api2/0.2.18/download" + ], + "strip_prefix": "allocator-api2-0.2.18", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.allocator-api2-0.2.18.bazel" + } + }, + "cui__anstream-0.3.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstream/0.3.2/download" + ], + "strip_prefix": "anstream-0.3.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.anstream-0.3.2.bazel" + } + }, + "cui__anstyle-1.0.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle/1.0.1/download" + ], + "strip_prefix": "anstyle-1.0.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.anstyle-1.0.1.bazel" + } + }, + "cui__anstyle-parse-0.2.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle-parse/0.2.1/download" + ], + "strip_prefix": "anstyle-parse-0.2.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.anstyle-parse-0.2.1.bazel" + } + }, + "cui__anstyle-query-1.0.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle-query/1.0.0/download" + ], + "strip_prefix": "anstyle-query-1.0.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.anstyle-query-1.0.0.bazel" + } + }, + "cui__anstyle-wincon-1.0.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle-wincon/1.0.1/download" + ], + "strip_prefix": "anstyle-wincon-1.0.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.anstyle-wincon-1.0.1.bazel" + } + }, + "cui__anyhow-1.0.89": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anyhow/1.0.89/download" + ], + "strip_prefix": "anyhow-1.0.89", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.anyhow-1.0.89.bazel" + } + }, + "cui__arc-swap-1.6.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/arc-swap/1.6.0/download" + ], + "strip_prefix": "arc-swap-1.6.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.arc-swap-1.6.0.bazel" + } + }, + "cui__arrayvec-0.7.4": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/arrayvec/0.7.4/download" + ], + "strip_prefix": "arrayvec-0.7.4", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.arrayvec-0.7.4.bazel" + } + }, + "cui__autocfg-1.1.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/autocfg/1.1.0/download" + ], + "strip_prefix": "autocfg-1.1.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.autocfg-1.1.0.bazel" + } + }, + "cui__bitflags-1.3.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/bitflags/1.3.2/download" + ], + "strip_prefix": "bitflags-1.3.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.bitflags-1.3.2.bazel" + } + }, + "cui__bitflags-2.4.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/bitflags/2.4.1/download" + ], + "strip_prefix": "bitflags-2.4.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.bitflags-2.4.1.bazel" + } + }, + "cui__block-buffer-0.10.4": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/block-buffer/0.10.4/download" + ], + "strip_prefix": "block-buffer-0.10.4", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.block-buffer-0.10.4.bazel" + } + }, + "cui__borsh-1.5.3": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/borsh/1.5.3/download" + ], + "strip_prefix": "borsh-1.5.3", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.borsh-1.5.3.bazel" + } + }, + "cui__bstr-1.6.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/bstr/1.6.0/download" + ], + "strip_prefix": "bstr-1.6.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.bstr-1.6.0.bazel" + } + }, + "cui__camino-1.1.9": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/camino/1.1.9/download" + ], + "strip_prefix": "camino-1.1.9", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.camino-1.1.9.bazel" + } + }, + "cui__cargo-lock-10.0.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "6469776d007022d505bbcc2be726f5f096174ae76d710ebc609eb3029a45b551", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cargo-lock/10.0.1/download" + ], + "strip_prefix": "cargo-lock-10.0.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.cargo-lock-10.0.1.bazel" + } + }, + "cui__cargo-platform-0.1.9": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cargo-platform/0.1.9/download" + ], + "strip_prefix": "cargo-platform-0.1.9", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.cargo-platform-0.1.9.bazel" + } + }, + "cui__cargo_metadata-0.19.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "8769706aad5d996120af43197bf46ef6ad0fda35216b4505f926a365a232d924", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cargo_metadata/0.19.1/download" + ], + "strip_prefix": "cargo_metadata-0.19.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.cargo_metadata-0.19.1.bazel" + } + }, + "cui__cargo_toml-0.20.5": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "88da5a13c620b4ca0078845707ea9c3faf11edbc3ffd8497d11d686211cd1ac0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cargo_toml/0.20.5/download" + ], + "strip_prefix": "cargo_toml-0.20.5", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.cargo_toml-0.20.5.bazel" + } + }, + "cui__cfg-expr-0.17.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "8d4ba6e40bd1184518716a6e1a781bf9160e286d219ccdb8ab2612e74cfe4789", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cfg-expr/0.17.2/download" + ], + "strip_prefix": "cfg-expr-0.17.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.cfg-expr-0.17.2.bazel" + } + }, + "cui__cfg-if-1.0.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cfg-if/1.0.0/download" + ], + "strip_prefix": "cfg-if-1.0.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.cfg-if-1.0.0.bazel" + } + }, + "cui__cfg_aliases-0.2.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cfg_aliases/0.2.1/download" + ], + "strip_prefix": "cfg_aliases-0.2.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.cfg_aliases-0.2.1.bazel" + } + }, + "cui__clap-4.3.11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "1640e5cc7fb47dbb8338fd471b105e7ed6c3cb2aeb00c2e067127ffd3764a05d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap/4.3.11/download" + ], + "strip_prefix": "clap-4.3.11", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.clap-4.3.11.bazel" + } + }, + "cui__clap_builder-4.3.11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "98c59138d527eeaf9b53f35a77fcc1fad9d883116070c63d5de1c7dc7b00c72b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap_builder/4.3.11/download" + ], + "strip_prefix": "clap_builder-4.3.11", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.clap_builder-4.3.11.bazel" + } + }, + "cui__clap_derive-4.3.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap_derive/4.3.2/download" + ], + "strip_prefix": "clap_derive-4.3.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.clap_derive-4.3.2.bazel" + } + }, + "cui__clap_lex-0.5.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap_lex/0.5.0/download" + ], + "strip_prefix": "clap_lex-0.5.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.clap_lex-0.5.0.bazel" + } + }, + "cui__clru-0.6.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b8191fa7302e03607ff0e237d4246cc043ff5b3cb9409d995172ba3bea16b807", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clru/0.6.1/download" + ], + "strip_prefix": "clru-0.6.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.clru-0.6.1.bazel" + } + }, + "cui__colorchoice-1.0.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/colorchoice/1.0.0/download" + ], + "strip_prefix": "colorchoice-1.0.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.colorchoice-1.0.0.bazel" + } + }, + "cui__cpufeatures-0.2.9": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cpufeatures/0.2.9/download" + ], + "strip_prefix": "cpufeatures-0.2.9", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.cpufeatures-0.2.9.bazel" + } + }, + "cui__crates-index-3.3.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "f956af2c4f7c08bb6817de2351e773027f91f9f8963c28e75666b214995b6987", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/crates-index/3.3.0/download" + ], + "strip_prefix": "crates-index-3.3.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.crates-index-3.3.0.bazel" + } + }, + "cui__crc32fast-1.3.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/crc32fast/1.3.2/download" + ], + "strip_prefix": "crc32fast-1.3.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.crc32fast-1.3.2.bazel" + } + }, + "cui__crossbeam-channel-0.5.8": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/crossbeam-channel/0.5.8/download" + ], + "strip_prefix": "crossbeam-channel-0.5.8", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.crossbeam-channel-0.5.8.bazel" + } + }, + "cui__crossbeam-utils-0.8.16": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/crossbeam-utils/0.8.16/download" + ], + "strip_prefix": "crossbeam-utils-0.8.16", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.crossbeam-utils-0.8.16.bazel" + } + }, + "cui__crypto-common-0.1.6": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/crypto-common/0.1.6/download" + ], + "strip_prefix": "crypto-common-0.1.6", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.crypto-common-0.1.6.bazel" + } + }, + "cui__digest-0.10.7": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/digest/0.10.7/download" + ], + "strip_prefix": "digest-0.10.7", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.digest-0.10.7.bazel" + } + }, + "cui__dunce-1.0.4": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/dunce/1.0.4/download" + ], + "strip_prefix": "dunce-1.0.4", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.dunce-1.0.4.bazel" + } + }, + "cui__either-1.9.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/either/1.9.0/download" + ], + "strip_prefix": "either-1.9.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.either-1.9.0.bazel" + } + }, + "cui__encoding_rs-0.8.33": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/encoding_rs/0.8.33/download" + ], + "strip_prefix": "encoding_rs-0.8.33", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.encoding_rs-0.8.33.bazel" + } + }, + "cui__equivalent-1.0.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/equivalent/1.0.1/download" + ], + "strip_prefix": "equivalent-1.0.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.equivalent-1.0.1.bazel" + } + }, + "cui__errno-0.3.9": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/errno/0.3.9/download" + ], + "strip_prefix": "errno-0.3.9", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.errno-0.3.9.bazel" + } + }, + "cui__faster-hex-0.9.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/faster-hex/0.9.0/download" + ], + "strip_prefix": "faster-hex-0.9.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.faster-hex-0.9.0.bazel" + } + }, + "cui__fastrand-2.1.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/fastrand/2.1.1/download" + ], + "strip_prefix": "fastrand-2.1.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.fastrand-2.1.1.bazel" + } + }, + "cui__filetime-0.2.22": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/filetime/0.2.22/download" + ], + "strip_prefix": "filetime-0.2.22", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.filetime-0.2.22.bazel" + } + }, + "cui__flate2-1.0.35": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/flate2/1.0.35/download" + ], + "strip_prefix": "flate2-1.0.35", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.flate2-1.0.35.bazel" + } + }, + "cui__fnv-1.0.7": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/fnv/1.0.7/download" + ], + "strip_prefix": "fnv-1.0.7", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.fnv-1.0.7.bazel" + } + }, + "cui__form_urlencoded-1.2.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/form_urlencoded/1.2.1/download" + ], + "strip_prefix": "form_urlencoded-1.2.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.form_urlencoded-1.2.1.bazel" + } + }, + "cui__generic-array-0.14.7": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/generic-array/0.14.7/download" + ], + "strip_prefix": "generic-array-0.14.7", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.generic-array-0.14.7.bazel" + } + }, + "cui__gix-0.67.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "c7d3e78ddac368d3e3bfbc2862bc2aafa3d89f1b15fed898d9761e1ec6f3f17f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix/0.67.0/download" + ], + "strip_prefix": "gix-0.67.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-0.67.0.bazel" + } + }, + "cui__gix-actor-0.33.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "32b24171f514cef7bb4dfb72a0b06dacf609b33ba8ad2489d4c4559a03b7afb3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-actor/0.33.1/download" + ], + "strip_prefix": "gix-actor-0.33.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-actor-0.33.1.bazel" + } + }, + "cui__gix-attributes-0.23.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ddf9bf852194c0edfe699a2d36422d2c1f28f73b7c6d446c3f0ccd3ba232cadc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-attributes/0.23.1/download" + ], + "strip_prefix": "gix-attributes-0.23.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-attributes-0.23.1.bazel" + } + }, + "cui__gix-bitmap-0.2.13": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "d48b897b4bbc881aea994b4a5bbb340a04979d7be9089791304e04a9fbc66b53", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-bitmap/0.2.13/download" + ], + "strip_prefix": "gix-bitmap-0.2.13", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-bitmap-0.2.13.bazel" + } + }, + "cui__gix-chunk-0.4.10": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "c6ffbeb3a5c0b8b84c3fe4133a6f8c82fa962f4caefe8d0762eced025d3eb4f7", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-chunk/0.4.10/download" + ], + "strip_prefix": "gix-chunk-0.4.10", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-chunk-0.4.10.bazel" + } + }, + "cui__gix-command-0.3.11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "6d7d6b8f3a64453fd7e8191eb80b351eb7ac0839b40a1237cd2c137d5079fe53", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-command/0.3.11/download" + ], + "strip_prefix": "gix-command-0.3.11", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-command-0.3.11.bazel" + } + }, + "cui__gix-commitgraph-0.25.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "a8da6591a7868fb2b6dabddea6b09988b0b05e0213f938dbaa11a03dd7a48d85", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-commitgraph/0.25.1/download" + ], + "strip_prefix": "gix-commitgraph-0.25.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-commitgraph-0.25.1.bazel" + } + }, + "cui__gix-config-0.41.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "0bedd1bf1c7b994be9d57207e8e0de79016c05e2e8701d3015da906e65ac445e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-config/0.41.0/download" + ], + "strip_prefix": "gix-config-0.41.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-config-0.41.0.bazel" + } + }, + "cui__gix-config-value-0.14.10": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "49aaeef5d98390a3bcf9dbc6440b520b793d1bf3ed99317dc407b02be995b28e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-config-value/0.14.10/download" + ], + "strip_prefix": "gix-config-value-0.14.10", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-config-value-0.14.10.bazel" + } + }, + "cui__gix-credentials-0.25.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "2be87bb8685fc7e6e7032ef71c45068ffff609724a0c897b8047fde10db6ae71", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-credentials/0.25.1/download" + ], + "strip_prefix": "gix-credentials-0.25.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-credentials-0.25.1.bazel" + } + }, + "cui__gix-date-0.9.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "691142b1a34d18e8ed6e6114bc1a2736516c5ad60ef3aa9bd1b694886e3ca92d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-date/0.9.2/download" + ], + "strip_prefix": "gix-date-0.9.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-date-0.9.2.bazel" + } + }, + "cui__gix-diff-0.47.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "c9850fd0c15af113db6f9e130d13091ba0d3754e570a2afdff9e2f3043da260e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-diff/0.47.0/download" + ], + "strip_prefix": "gix-diff-0.47.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-diff-0.47.0.bazel" + } + }, + "cui__gix-discover-0.36.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "c522e31f458f50af09dfb014e10873c5378f702f8049c96f508989aad59671f6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-discover/0.36.0/download" + ], + "strip_prefix": "gix-discover-0.36.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-discover-0.36.0.bazel" + } + }, + "cui__gix-features-0.39.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "7d85d673f2e022a340dba4713bed77ef2cf4cd737d2f3e0f159d45e0935fd81f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-features/0.39.1/download" + ], + "strip_prefix": "gix-features-0.39.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-features-0.39.1.bazel" + } + }, + "cui__gix-filter-0.14.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "6b37f82359a4485770ed8993ae715ced1bf674f2a63e45f5a0786d38310665ea", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-filter/0.14.0/download" + ], + "strip_prefix": "gix-filter-0.14.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-filter-0.14.0.bazel" + } + }, + "cui__gix-fs-0.12.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "34740384d8d763975858fa2c176b68652a6fcc09f616e24e3ce967b0d370e4d8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-fs/0.12.0/download" + ], + "strip_prefix": "gix-fs-0.12.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-fs-0.12.0.bazel" + } + }, + "cui__gix-glob-0.17.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "aaf69a6bec0a3581567484bf99a4003afcaf6c469fd4214352517ea355cf3435", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-glob/0.17.1/download" + ], + "strip_prefix": "gix-glob-0.17.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-glob-0.17.1.bazel" + } + }, + "cui__gix-hash-0.15.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "0b5eccc17194ed0e67d49285e4853307e4147e95407f91c1c3e4a13ba9f4e4ce", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-hash/0.15.1/download" + ], + "strip_prefix": "gix-hash-0.15.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-hash-0.15.1.bazel" + } + }, + "cui__gix-hashtable-0.6.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "0ef65b256631078ef733bc5530c4e6b1c2e7d5c2830b75d4e9034ab3997d18fe", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-hashtable/0.6.0/download" + ], + "strip_prefix": "gix-hashtable-0.6.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-hashtable-0.6.0.bazel" + } + }, + "cui__gix-ignore-0.12.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b6b1fb24d2a4af0aa7438e2771d60c14a80cf2c9bd55c29cf1712b841f05bb8a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-ignore/0.12.1/download" + ], + "strip_prefix": "gix-ignore-0.12.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-ignore-0.12.1.bazel" + } + }, + "cui__gix-index-0.36.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "27619009ca1ea33fd885041273f5fa5a09163a5c1d22a913b28d7b985e66fe29", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-index/0.36.0/download" + ], + "strip_prefix": "gix-index-0.36.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-index-0.36.0.bazel" + } + }, + "cui__gix-lock-15.0.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "1cd3ab68a452db63d9f3ebdacb10f30dba1fa0d31ac64f4203d395ed1102d940", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-lock/15.0.1/download" + ], + "strip_prefix": "gix-lock-15.0.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-lock-15.0.1.bazel" + } + }, + "cui__gix-negotiate-0.16.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "414806291838c3349ea939c6d840ff854f84cd29bd3dde8f904f60b0e5b7d0bd", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-negotiate/0.16.0/download" + ], + "strip_prefix": "gix-negotiate-0.16.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-negotiate-0.16.0.bazel" + } + }, + "cui__gix-object-0.45.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "2a77b6e7753d298553d9ae8b1744924481e7a49170983938bb578dccfbc6fc1a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-object/0.45.0/download" + ], + "strip_prefix": "gix-object-0.45.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-object-0.45.0.bazel" + } + }, + "cui__gix-odb-0.64.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "0bb86aadf7f1b2f980601b4fc94309706f9700f8008f935dc512d556c9e60f61", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-odb/0.64.0/download" + ], + "strip_prefix": "gix-odb-0.64.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-odb-0.64.0.bazel" + } + }, + "cui__gix-pack-0.54.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "363e6e59a855ba243672408139db68e2478126cdcfeabb420777df4a1f20026b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-pack/0.54.0/download" + ], + "strip_prefix": "gix-pack-0.54.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-pack-0.54.0.bazel" + } + }, + "cui__gix-packetline-0.18.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "8a720e5bebf494c3ceffa85aa89f57a5859450a0da0a29ebe89171e23543fa78", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-packetline/0.18.1/download" + ], + "strip_prefix": "gix-packetline-0.18.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-packetline-0.18.1.bazel" + } + }, + "cui__gix-packetline-blocking-0.18.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ce9004ce1bc00fd538b11c1ec8141a1558fb3af3d2b7ac1ac5c41881f9e42d2a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-packetline-blocking/0.18.1/download" + ], + "strip_prefix": "gix-packetline-blocking-0.18.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-packetline-blocking-0.18.1.bazel" + } + }, + "cui__gix-path-0.10.13": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "afc292ef1a51e340aeb0e720800338c805975724c1dfbd243185452efd8645b7", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-path/0.10.13/download" + ], + "strip_prefix": "gix-path-0.10.13", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-path-0.10.13.bazel" + } + }, + "cui__gix-pathspec-0.8.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "4c472dfbe4a4e96fcf7efddcd4771c9037bb4fdea2faaabf2f4888210c75b81e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-pathspec/0.8.1/download" + ], + "strip_prefix": "gix-pathspec-0.8.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-pathspec-0.8.1.bazel" + } + }, + "cui__gix-prompt-0.8.9": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "7a7822afc4bc9c5fbbc6ce80b00f41c129306b7685cac3248dbfa14784960594", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-prompt/0.8.9/download" + ], + "strip_prefix": "gix-prompt-0.8.9", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-prompt-0.8.9.bazel" + } + }, + "cui__gix-protocol-0.46.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "7a7e7e51a0dea531d3448c297e2fa919b2de187111a210c324b7e9f81508b8ca", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-protocol/0.46.1/download" + ], + "strip_prefix": "gix-protocol-0.46.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-protocol-0.46.1.bazel" + } + }, + "cui__gix-quote-0.4.14": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "64a1e282216ec2ab2816cd57e6ed88f8009e634aec47562883c05ac8a7009a63", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-quote/0.4.14/download" + ], + "strip_prefix": "gix-quote-0.4.14", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-quote-0.4.14.bazel" + } + }, + "cui__gix-ref-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "a47385e71fa2d9da8c35e642ef4648808ddf0a52bc93425879088c706dfeaea2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-ref/0.48.0/download" + ], + "strip_prefix": "gix-ref-0.48.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-ref-0.48.0.bazel" + } + }, + "cui__gix-refspec-0.26.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "0022038a09d80d9abf773be8efcbb502868d97f6972b8633bfb52ab6edaac442", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-refspec/0.26.0/download" + ], + "strip_prefix": "gix-refspec-0.26.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-refspec-0.26.0.bazel" + } + }, + "cui__gix-revision-0.30.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "4ee8eb4088fece3562af4a5d751e069f90e93345524ad730512185234c4b55f1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-revision/0.30.0/download" + ], + "strip_prefix": "gix-revision-0.30.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-revision-0.30.0.bazel" + } + }, + "cui__gix-revwalk-0.16.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "e6c9a9496da98d36ff19063a8576bf09a87425583b709a56dc5594fffa9d39b2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-revwalk/0.16.0/download" + ], + "strip_prefix": "gix-revwalk-0.16.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-revwalk-0.16.0.bazel" + } + }, + "cui__gix-sec-0.10.10": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "a8b876ef997a955397809a2ec398d6a45b7a55b4918f2446344330f778d14fd6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-sec/0.10.10/download" + ], + "strip_prefix": "gix-sec-0.10.10", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-sec-0.10.10.bazel" + } + }, + "cui__gix-submodule-0.15.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "3ed099621873cd36c580fc822176a32a7e50fef15a5c2ed81aaa087296f0497a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-submodule/0.15.0/download" + ], + "strip_prefix": "gix-submodule-0.15.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-submodule-0.15.0.bazel" + } + }, + "cui__gix-tempfile-15.0.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "2feb86ef094cc77a4a9a5afbfe5de626897351bbbd0de3cb9314baf3049adb82", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-tempfile/15.0.0/download" + ], + "strip_prefix": "gix-tempfile-15.0.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-tempfile-15.0.0.bazel" + } + }, + "cui__gix-trace-0.1.11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "04bdde120c29f1fc23a24d3e115aeeea3d60d8e65bab92cc5f9d90d9302eb952", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-trace/0.1.11/download" + ], + "strip_prefix": "gix-trace-0.1.11", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-trace-0.1.11.bazel" + } + }, + "cui__gix-transport-0.43.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "39a1a41357b7236c03e0c984147f823d87c3e445a8581bac7006df141577200b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-transport/0.43.1/download" + ], + "strip_prefix": "gix-transport-0.43.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-transport-0.43.1.bazel" + } + }, + "cui__gix-traverse-0.42.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "f20f1b13cc4fa6ba92b24e6aa0c2fb6a34beb4458ef88c6300212db504e818df", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-traverse/0.42.0/download" + ], + "strip_prefix": "gix-traverse-0.42.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-traverse-0.42.0.bazel" + } + }, + "cui__gix-url-0.28.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "e09f97db3618fb8e473d7d97e77296b50aaee0ddcd6a867f07443e3e87391099", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-url/0.28.1/download" + ], + "strip_prefix": "gix-url-0.28.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-url-0.28.1.bazel" + } + }, + "cui__gix-utils-0.1.13": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ba427e3e9599508ed98a6ddf8ed05493db114564e338e41f6a996d2e4790335f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-utils/0.1.13/download" + ], + "strip_prefix": "gix-utils-0.1.13", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-utils-0.1.13.bazel" + } + }, + "cui__gix-validate-0.9.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "cd520d09f9f585b34b32aba1d0b36ada89ab7fefb54a8ca3fe37fc482a750937", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-validate/0.9.2/download" + ], + "strip_prefix": "gix-validate-0.9.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-validate-0.9.2.bazel" + } + }, + "cui__gix-worktree-0.37.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "0d345e5b523550fe4fa0e912bf957de752011ccfc87451968fda1b624318f29c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/gix-worktree/0.37.0/download" + ], + "strip_prefix": "gix-worktree-0.37.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.gix-worktree-0.37.0.bazel" + } + }, + "cui__glob-0.3.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/glob/0.3.1/download" + ], + "strip_prefix": "glob-0.3.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.glob-0.3.1.bazel" + } + }, + "cui__globset-0.4.11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "1391ab1f92ffcc08911957149833e682aa3fe252b9f45f966d2ef972274c97df", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/globset/0.4.11/download" + ], + "strip_prefix": "globset-0.4.11", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.globset-0.4.11.bazel" + } + }, + "cui__globwalk-0.8.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/globwalk/0.8.1/download" + ], + "strip_prefix": "globwalk-0.8.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.globwalk-0.8.1.bazel" + } + }, + "cui__hashbrown-0.14.3": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hashbrown/0.14.3/download" + ], + "strip_prefix": "hashbrown-0.14.3", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.hashbrown-0.14.3.bazel" + } + }, + "cui__hashbrown-0.15.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hashbrown/0.15.0/download" + ], + "strip_prefix": "hashbrown-0.15.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.hashbrown-0.15.0.bazel" + } + }, + "cui__heck-0.4.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/heck/0.4.1/download" + ], + "strip_prefix": "heck-0.4.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.heck-0.4.1.bazel" + } + }, + "cui__hermit-abi-0.3.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hermit-abi/0.3.2/download" + ], + "strip_prefix": "hermit-abi-0.3.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.hermit-abi-0.3.2.bazel" + } + }, + "cui__hex-0.4.3": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hex/0.4.3/download" + ], + "strip_prefix": "hex-0.4.3", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.hex-0.4.3.bazel" + } + }, + "cui__home-0.5.5": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/home/0.5.5/download" + ], + "strip_prefix": "home-0.5.5", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.home-0.5.5.bazel" + } + }, + "cui__idna-0.5.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/idna/0.5.0/download" + ], + "strip_prefix": "idna-0.5.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.idna-0.5.0.bazel" + } + }, + "cui__ignore-0.4.18": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ignore/0.4.18/download" + ], + "strip_prefix": "ignore-0.4.18", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.ignore-0.4.18.bazel" + } + }, + "cui__indexmap-2.6.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/indexmap/2.6.0/download" + ], + "strip_prefix": "indexmap-2.6.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.indexmap-2.6.0.bazel" + } + }, + "cui__indoc-2.0.5": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/indoc/2.0.5/download" + ], + "strip_prefix": "indoc-2.0.5", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.indoc-2.0.5.bazel" + } + }, + "cui__io-lifetimes-1.0.11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/io-lifetimes/1.0.11/download" + ], + "strip_prefix": "io-lifetimes-1.0.11", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.io-lifetimes-1.0.11.bazel" + } + }, + "cui__is-terminal-0.4.7": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/is-terminal/0.4.7/download" + ], + "strip_prefix": "is-terminal-0.4.7", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.is-terminal-0.4.7.bazel" + } + }, + "cui__itertools-0.13.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/itertools/0.13.0/download" + ], + "strip_prefix": "itertools-0.13.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.itertools-0.13.0.bazel" + } + }, + "cui__itoa-1.0.8": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/itoa/1.0.8/download" + ], + "strip_prefix": "itoa-1.0.8", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.itoa-1.0.8.bazel" + } + }, + "cui__jiff-0.1.13": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "8a45489186a6123c128fdf6016183fcfab7113e1820eb813127e036e287233fb", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/jiff/0.1.13/download" + ], + "strip_prefix": "jiff-0.1.13", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.jiff-0.1.13.bazel" + } + }, + "cui__jiff-tzdb-0.1.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "91335e575850c5c4c673b9bd467b0e025f164ca59d0564f69d0c2ee0ffad4653", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/jiff-tzdb/0.1.1/download" + ], + "strip_prefix": "jiff-tzdb-0.1.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.jiff-tzdb-0.1.1.bazel" + } + }, + "cui__jiff-tzdb-platform-0.1.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "9835f0060a626fe59f160437bc725491a6af23133ea906500027d1bd2f8f4329", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/jiff-tzdb-platform/0.1.1/download" + ], + "strip_prefix": "jiff-tzdb-platform-0.1.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.jiff-tzdb-platform-0.1.1.bazel" + } + }, + "cui__kstring-2.0.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "558bf9508a558512042d3095138b1f7b8fe90c5467d94f9f1da28b3731c5dbd1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/kstring/2.0.2/download" + ], + "strip_prefix": "kstring-2.0.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.kstring-2.0.2.bazel" + } + }, + "cui__lazy_static-1.4.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/lazy_static/1.4.0/download" + ], + "strip_prefix": "lazy_static-1.4.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.lazy_static-1.4.0.bazel" + } + }, + "cui__libc-0.2.161": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/libc/0.2.161/download" + ], + "strip_prefix": "libc-0.2.161", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.libc-0.2.161.bazel" + } + }, + "cui__linux-raw-sys-0.3.8": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/linux-raw-sys/0.3.8/download" + ], + "strip_prefix": "linux-raw-sys-0.3.8", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.linux-raw-sys-0.3.8.bazel" + } + }, + "cui__linux-raw-sys-0.4.14": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/linux-raw-sys/0.4.14/download" + ], + "strip_prefix": "linux-raw-sys-0.4.14", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.linux-raw-sys-0.4.14.bazel" + } + }, + "cui__lock_api-0.4.11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/lock_api/0.4.11/download" + ], + "strip_prefix": "lock_api-0.4.11", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.lock_api-0.4.11.bazel" + } + }, + "cui__log-0.4.19": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/log/0.4.19/download" + ], + "strip_prefix": "log-0.4.19", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.log-0.4.19.bazel" + } + }, + "cui__maplit-1.0.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/maplit/1.0.2/download" + ], + "strip_prefix": "maplit-1.0.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.maplit-1.0.2.bazel" + } + }, + "cui__maybe-async-0.2.7": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "0f1b8c13cb1f814b634a96b2c725449fe7ed464a7b8781de8688be5ffbd3f305", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/maybe-async/0.2.7/download" + ], + "strip_prefix": "maybe-async-0.2.7", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.maybe-async-0.2.7.bazel" + } + }, + "cui__memchr-2.6.4": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/memchr/2.6.4/download" + ], + "strip_prefix": "memchr-2.6.4", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.memchr-2.6.4.bazel" + } + }, + "cui__memmap2-0.9.5": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/memmap2/0.9.5/download" + ], + "strip_prefix": "memmap2-0.9.5", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.memmap2-0.9.5.bazel" + } + }, + "cui__miniz_oxide-0.8.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/miniz_oxide/0.8.0/download" + ], + "strip_prefix": "miniz_oxide-0.8.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.miniz_oxide-0.8.0.bazel" + } + }, + "cui__normpath-1.3.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "c8911957c4b1549ac0dc74e30db9c8b0e66ddcd6d7acc33098f4c63a64a6d7ed", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/normpath/1.3.0/download" + ], + "strip_prefix": "normpath-1.3.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.normpath-1.3.0.bazel" + } + }, + "cui__nu-ansi-term-0.46.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/nu-ansi-term/0.46.0/download" + ], + "strip_prefix": "nu-ansi-term-0.46.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.nu-ansi-term-0.46.0.bazel" + } + }, + "cui__once_cell-1.20.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/once_cell/1.20.2/download" + ], + "strip_prefix": "once_cell-1.20.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.once_cell-1.20.2.bazel" + } + }, + "cui__overload-0.1.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/overload/0.1.1/download" + ], + "strip_prefix": "overload-0.1.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.overload-0.1.1.bazel" + } + }, + "cui__parking_lot-0.12.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/parking_lot/0.12.1/download" + ], + "strip_prefix": "parking_lot-0.12.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.parking_lot-0.12.1.bazel" + } + }, + "cui__parking_lot_core-0.9.9": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/parking_lot_core/0.9.9/download" + ], + "strip_prefix": "parking_lot_core-0.9.9", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.parking_lot_core-0.9.9.bazel" + } + }, + "cui__pathdiff-0.2.3": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pathdiff/0.2.3/download" + ], + "strip_prefix": "pathdiff-0.2.3", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.pathdiff-0.2.3.bazel" + } + }, + "cui__percent-encoding-2.3.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/percent-encoding/2.3.1/download" + ], + "strip_prefix": "percent-encoding-2.3.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.percent-encoding-2.3.1.bazel" + } + }, + "cui__pest-2.7.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "f73935e4d55e2abf7f130186537b19e7a4abc886a0252380b59248af473a3fc9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pest/2.7.0/download" + ], + "strip_prefix": "pest-2.7.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.pest-2.7.0.bazel" + } + }, + "cui__pest_derive-2.7.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "aef623c9bbfa0eedf5a0efba11a5ee83209c326653ca31ff019bec3a95bfff2b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pest_derive/2.7.0/download" + ], + "strip_prefix": "pest_derive-2.7.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.pest_derive-2.7.0.bazel" + } + }, + "cui__pest_generator-2.7.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b3e8cba4ec22bada7fc55ffe51e2deb6a0e0db2d0b7ab0b103acc80d2510c190", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pest_generator/2.7.0/download" + ], + "strip_prefix": "pest_generator-2.7.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.pest_generator-2.7.0.bazel" + } + }, + "cui__pest_meta-2.7.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "a01f71cb40bd8bb94232df14b946909e14660e33fc05db3e50ae2a82d7ea0ca0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pest_meta/2.7.0/download" + ], + "strip_prefix": "pest_meta-2.7.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.pest_meta-2.7.0.bazel" + } + }, + "cui__pin-project-lite-0.2.13": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/pin-project-lite/0.2.13/download" + ], + "strip_prefix": "pin-project-lite-0.2.13", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.pin-project-lite-0.2.13.bazel" + } + }, + "cui__proc-macro2-1.0.92": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/proc-macro2/1.0.92/download" + ], + "strip_prefix": "proc-macro2-1.0.92", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.proc-macro2-1.0.92.bazel" + } + }, + "cui__prodash-29.0.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "a266d8d6020c61a437be704c5e618037588e1985c7dbb7bf8d265db84cffe325", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/prodash/29.0.0/download" + ], + "strip_prefix": "prodash-29.0.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.prodash-29.0.0.bazel" + } + }, + "cui__quote-1.0.37": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/quote/1.0.37/download" + ], + "strip_prefix": "quote-1.0.37", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.quote-1.0.37.bazel" + } + }, + "cui__redox_syscall-0.3.5": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/redox_syscall/0.3.5/download" + ], + "strip_prefix": "redox_syscall-0.3.5", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.redox_syscall-0.3.5.bazel" + } + }, + "cui__redox_syscall-0.4.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/redox_syscall/0.4.1/download" + ], + "strip_prefix": "redox_syscall-0.4.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.redox_syscall-0.4.1.bazel" + } + }, + "cui__regex-1.11.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex/1.11.0/download" + ], + "strip_prefix": "regex-1.11.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.regex-1.11.0.bazel" + } + }, + "cui__regex-automata-0.3.3": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex-automata/0.3.3/download" + ], + "strip_prefix": "regex-automata-0.3.3", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.regex-automata-0.3.3.bazel" + } + }, + "cui__regex-automata-0.4.8": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex-automata/0.4.8/download" + ], + "strip_prefix": "regex-automata-0.4.8", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.regex-automata-0.4.8.bazel" + } + }, + "cui__regex-syntax-0.8.5": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex-syntax/0.8.5/download" + ], + "strip_prefix": "regex-syntax-0.8.5", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.regex-syntax-0.8.5.bazel" + } + }, + "cui__rustc-hash-2.0.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rustc-hash/2.0.0/download" + ], + "strip_prefix": "rustc-hash-2.0.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.rustc-hash-2.0.0.bazel" + } + }, + "cui__rustix-0.37.23": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rustix/0.37.23/download" + ], + "strip_prefix": "rustix-0.37.23", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.rustix-0.37.23.bazel" + } + }, + "cui__rustix-0.38.41": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rustix/0.38.41/download" + ], + "strip_prefix": "rustix-0.38.41", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.rustix-0.38.41.bazel" + } + }, + "cui__ryu-1.0.14": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ryu/1.0.14/download" + ], + "strip_prefix": "ryu-1.0.14", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.ryu-1.0.14.bazel" + } + }, + "cui__same-file-1.0.6": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/same-file/1.0.6/download" + ], + "strip_prefix": "same-file-1.0.6", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.same-file-1.0.6.bazel" + } + }, + "cui__scopeguard-1.2.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/scopeguard/1.2.0/download" + ], + "strip_prefix": "scopeguard-1.2.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.scopeguard-1.2.0.bazel" + } + }, + "cui__semver-1.0.23": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/semver/1.0.23/download" + ], + "strip_prefix": "semver-1.0.23", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.semver-1.0.23.bazel" + } + }, + "cui__serde-1.0.210": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde/1.0.210/download" + ], + "strip_prefix": "serde-1.0.210", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.serde-1.0.210.bazel" + } + }, + "cui__serde_derive-1.0.210": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_derive/1.0.210/download" + ], + "strip_prefix": "serde_derive-1.0.210", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.serde_derive-1.0.210.bazel" + } + }, + "cui__serde_json-1.0.129": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "6dbcf9b78a125ee667ae19388837dd12294b858d101fdd393cb9d5501ef09eb2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_json/1.0.129/download" + ], + "strip_prefix": "serde_json-1.0.129", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.serde_json-1.0.129.bazel" + } + }, + "cui__serde_spanned-0.6.8": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_spanned/0.6.8/download" + ], + "strip_prefix": "serde_spanned-0.6.8", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.serde_spanned-0.6.8.bazel" + } + }, + "cui__serde_starlark-0.1.16": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "43f25f26c1c853647016b862c1734e0ad68c4f9f752b5f792220d38b1369ed4a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_starlark/0.1.16/download" + ], + "strip_prefix": "serde_starlark-0.1.16", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.serde_starlark-0.1.16.bazel" + } + }, + "cui__sha1_smol-1.0.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/sha1_smol/1.0.0/download" + ], + "strip_prefix": "sha1_smol-1.0.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.sha1_smol-1.0.0.bazel" + } + }, + "cui__sha2-0.10.8": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/sha2/0.10.8/download" + ], + "strip_prefix": "sha2-0.10.8", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.sha2-0.10.8.bazel" + } + }, + "cui__sharded-slab-0.1.7": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/sharded-slab/0.1.7/download" + ], + "strip_prefix": "sharded-slab-0.1.7", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.sharded-slab-0.1.7.bazel" + } + }, + "cui__shell-words-1.1.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/shell-words/1.1.0/download" + ], + "strip_prefix": "shell-words-1.1.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.shell-words-1.1.0.bazel" + } + }, + "cui__smallvec-1.11.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/smallvec/1.11.0/download" + ], + "strip_prefix": "smallvec-1.11.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.smallvec-1.11.0.bazel" + } + }, + "cui__smawk-0.3.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/smawk/0.3.1/download" + ], + "strip_prefix": "smawk-0.3.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.smawk-0.3.1.bazel" + } + }, + "cui__smol_str-0.3.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "9676b89cd56310a87b93dec47b11af744f34d5fc9f367b829474eec0a891350d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/smol_str/0.3.2/download" + ], + "strip_prefix": "smol_str-0.3.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.smol_str-0.3.2.bazel" + } + }, + "cui__spdx-0.10.7": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "bae30cc7bfe3656d60ee99bf6836f472b0c53dddcbf335e253329abb16e535a2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/spdx/0.10.7/download" + ], + "strip_prefix": "spdx-0.10.7", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.spdx-0.10.7.bazel" + } + }, + "cui__static_assertions-1.1.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/static_assertions/1.1.0/download" + ], + "strip_prefix": "static_assertions-1.1.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.static_assertions-1.1.0.bazel" + } + }, + "cui__strsim-0.10.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/strsim/0.10.0/download" + ], + "strip_prefix": "strsim-0.10.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.strsim-0.10.0.bazel" + } + }, + "cui__syn-1.0.109": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/syn/1.0.109/download" + ], + "strip_prefix": "syn-1.0.109", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.syn-1.0.109.bazel" + } + }, + "cui__syn-2.0.90": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/syn/2.0.90/download" + ], + "strip_prefix": "syn-2.0.90", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.syn-2.0.90.bazel" + } + }, + "cui__tempfile-3.14.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tempfile/3.14.0/download" + ], + "strip_prefix": "tempfile-3.14.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.tempfile-3.14.0.bazel" + } + }, + "cui__tera-1.19.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "970dff17c11e884a4a09bc76e3a17ef71e01bb13447a11e85226e254fe6d10b8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tera/1.19.1/download" + ], + "strip_prefix": "tera-1.19.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.tera-1.19.1.bazel" + } + }, + "cui__textwrap-0.16.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/textwrap/0.16.1/download" + ], + "strip_prefix": "textwrap-0.16.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.textwrap-0.16.1.bazel" + } + }, + "cui__thiserror-1.0.50": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/thiserror/1.0.50/download" + ], + "strip_prefix": "thiserror-1.0.50", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.thiserror-1.0.50.bazel" + } + }, + "cui__thiserror-2.0.4": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "2f49a1853cf82743e3b7950f77e0f4d622ca36cf4317cba00c767838bac8d490", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/thiserror/2.0.4/download" + ], + "strip_prefix": "thiserror-2.0.4", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.thiserror-2.0.4.bazel" + } + }, + "cui__thiserror-impl-1.0.50": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/thiserror-impl/1.0.50/download" + ], + "strip_prefix": "thiserror-impl-1.0.50", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.thiserror-impl-1.0.50.bazel" + } + }, + "cui__thiserror-impl-2.0.4": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "8381894bb3efe0c4acac3ded651301ceee58a15d47c2e34885ed1908ad667061", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/thiserror-impl/2.0.4/download" + ], + "strip_prefix": "thiserror-impl-2.0.4", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.thiserror-impl-2.0.4.bazel" + } + }, + "cui__thread_local-1.1.4": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/thread_local/1.1.4/download" + ], + "strip_prefix": "thread_local-1.1.4", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.thread_local-1.1.4.bazel" + } + }, + "cui__tinyvec-1.6.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tinyvec/1.6.0/download" + ], + "strip_prefix": "tinyvec-1.6.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.tinyvec-1.6.0.bazel" + } + }, + "cui__tinyvec_macros-0.1.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tinyvec_macros/0.1.1/download" + ], + "strip_prefix": "tinyvec_macros-0.1.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.tinyvec_macros-0.1.1.bazel" + } + }, + "cui__toml-0.8.19": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/toml/0.8.19/download" + ], + "strip_prefix": "toml-0.8.19", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.toml-0.8.19.bazel" + } + }, + "cui__toml_datetime-0.6.8": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/toml_datetime/0.6.8/download" + ], + "strip_prefix": "toml_datetime-0.6.8", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.toml_datetime-0.6.8.bazel" + } + }, + "cui__toml_edit-0.22.22": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/toml_edit/0.22.22/download" + ], + "strip_prefix": "toml_edit-0.22.22", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.toml_edit-0.22.22.bazel" + } + }, + "cui__tracing-0.1.40": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tracing/0.1.40/download" + ], + "strip_prefix": "tracing-0.1.40", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.tracing-0.1.40.bazel" + } + }, + "cui__tracing-attributes-0.1.27": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tracing-attributes/0.1.27/download" + ], + "strip_prefix": "tracing-attributes-0.1.27", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.tracing-attributes-0.1.27.bazel" + } + }, + "cui__tracing-core-0.1.32": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tracing-core/0.1.32/download" + ], + "strip_prefix": "tracing-core-0.1.32", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.tracing-core-0.1.32.bazel" + } + }, + "cui__tracing-log-0.2.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tracing-log/0.2.0/download" + ], + "strip_prefix": "tracing-log-0.2.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.tracing-log-0.2.0.bazel" + } + }, + "cui__tracing-subscriber-0.3.18": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/tracing-subscriber/0.3.18/download" + ], + "strip_prefix": "tracing-subscriber-0.3.18", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.tracing-subscriber-0.3.18.bazel" + } + }, + "cui__typenum-1.16.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/typenum/1.16.0/download" + ], + "strip_prefix": "typenum-1.16.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.typenum-1.16.0.bazel" + } + }, + "cui__ucd-trie-0.1.6": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ucd-trie/0.1.6/download" + ], + "strip_prefix": "ucd-trie-0.1.6", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.ucd-trie-0.1.6.bazel" + } + }, + "cui__uluru-3.0.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "794a32261a1f5eb6a4462c81b59cec87b5c27d5deea7dd1ac8fc781c41d226db", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/uluru/3.0.0/download" + ], + "strip_prefix": "uluru-3.0.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.uluru-3.0.0.bazel" + } + }, + "cui__unic-char-property-0.9.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unic-char-property/0.9.0/download" + ], + "strip_prefix": "unic-char-property-0.9.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.unic-char-property-0.9.0.bazel" + } + }, + "cui__unic-char-range-0.9.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unic-char-range/0.9.0/download" + ], + "strip_prefix": "unic-char-range-0.9.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.unic-char-range-0.9.0.bazel" + } + }, + "cui__unic-common-0.9.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unic-common/0.9.0/download" + ], + "strip_prefix": "unic-common-0.9.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.unic-common-0.9.0.bazel" + } + }, + "cui__unic-segment-0.9.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "e4ed5d26be57f84f176157270c112ef57b86debac9cd21daaabbe56db0f88f23", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unic-segment/0.9.0/download" + ], + "strip_prefix": "unic-segment-0.9.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.unic-segment-0.9.0.bazel" + } + }, + "cui__unic-ucd-segment-0.9.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "2079c122a62205b421f499da10f3ee0f7697f012f55b675e002483c73ea34700", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unic-ucd-segment/0.9.0/download" + ], + "strip_prefix": "unic-ucd-segment-0.9.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.unic-ucd-segment-0.9.0.bazel" + } + }, + "cui__unic-ucd-version-0.9.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unic-ucd-version/0.9.0/download" + ], + "strip_prefix": "unic-ucd-version-0.9.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.unic-ucd-version-0.9.0.bazel" + } + }, + "cui__unicode-bidi-0.3.13": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-bidi/0.3.13/download" + ], + "strip_prefix": "unicode-bidi-0.3.13", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.unicode-bidi-0.3.13.bazel" + } + }, + "cui__unicode-bom-2.0.3": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-bom/2.0.3/download" + ], + "strip_prefix": "unicode-bom-2.0.3", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.unicode-bom-2.0.3.bazel" + } + }, + "cui__unicode-ident-1.0.10": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-ident/1.0.10/download" + ], + "strip_prefix": "unicode-ident-1.0.10", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.unicode-ident-1.0.10.bazel" + } + }, + "cui__unicode-linebreak-0.1.5": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-linebreak/0.1.5/download" + ], + "strip_prefix": "unicode-linebreak-0.1.5", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.unicode-linebreak-0.1.5.bazel" + } + }, + "cui__unicode-normalization-0.1.22": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-normalization/0.1.22/download" + ], + "strip_prefix": "unicode-normalization-0.1.22", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.unicode-normalization-0.1.22.bazel" + } + }, + "cui__unicode-width-0.1.10": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-width/0.1.10/download" + ], + "strip_prefix": "unicode-width-0.1.10", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.unicode-width-0.1.10.bazel" + } + }, + "cui__url-2.5.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/url/2.5.2/download" + ], + "strip_prefix": "url-2.5.2", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.url-2.5.2.bazel" + } + }, + "cui__utf8parse-0.2.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/utf8parse/0.2.1/download" + ], + "strip_prefix": "utf8parse-0.2.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.utf8parse-0.2.1.bazel" + } + }, + "cui__valuable-0.1.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/valuable/0.1.0/download" + ], + "strip_prefix": "valuable-0.1.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.valuable-0.1.0.bazel" + } + }, + "cui__version_check-0.9.4": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/version_check/0.9.4/download" + ], + "strip_prefix": "version_check-0.9.4", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.version_check-0.9.4.bazel" + } + }, + "cui__walkdir-2.5.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/walkdir/2.5.0/download" + ], + "strip_prefix": "walkdir-2.5.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.walkdir-2.5.0.bazel" + } + }, + "cui__winapi-0.3.9": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winapi/0.3.9/download" + ], + "strip_prefix": "winapi-0.3.9", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.winapi-0.3.9.bazel" + } + }, + "cui__winapi-i686-pc-windows-gnu-0.4.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winapi-i686-pc-windows-gnu/0.4.0/download" + ], + "strip_prefix": "winapi-i686-pc-windows-gnu-0.4.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel" + } + }, + "cui__winapi-util-0.1.5": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winapi-util/0.1.5/download" + ], + "strip_prefix": "winapi-util-0.1.5", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.winapi-util-0.1.5.bazel" + } + }, + "cui__winapi-x86_64-pc-windows-gnu-0.4.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download" + ], + "strip_prefix": "winapi-x86_64-pc-windows-gnu-0.4.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel" + } + }, + "cui__windows-sys-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-sys/0.48.0/download" + ], + "strip_prefix": "windows-sys-0.48.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows-sys-0.48.0.bazel" + } + }, + "cui__windows-sys-0.52.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-sys/0.52.0/download" + ], + "strip_prefix": "windows-sys-0.52.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows-sys-0.52.0.bazel" + } + }, + "cui__windows-sys-0.59.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-sys/0.59.0/download" + ], + "strip_prefix": "windows-sys-0.59.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows-sys-0.59.0.bazel" + } + }, + "cui__windows-targets-0.48.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-targets/0.48.1/download" + ], + "strip_prefix": "windows-targets-0.48.1", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows-targets-0.48.1.bazel" + } + }, + "cui__windows-targets-0.52.6": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-targets/0.52.6/download" + ], + "strip_prefix": "windows-targets-0.52.6", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows-targets-0.52.6.bazel" + } + }, + "cui__windows_aarch64_gnullvm-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_gnullvm/0.48.0/download" + ], + "strip_prefix": "windows_aarch64_gnullvm-0.48.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_aarch64_gnullvm-0.48.0.bazel" + } + }, + "cui__windows_aarch64_gnullvm-0.52.6": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download" + ], + "strip_prefix": "windows_aarch64_gnullvm-0.52.6", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_aarch64_gnullvm-0.52.6.bazel" + } + }, + "cui__windows_aarch64_msvc-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_msvc/0.48.0/download" + ], + "strip_prefix": "windows_aarch64_msvc-0.48.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_aarch64_msvc-0.48.0.bazel" + } + }, + "cui__windows_aarch64_msvc-0.52.6": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download" + ], + "strip_prefix": "windows_aarch64_msvc-0.52.6", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_aarch64_msvc-0.52.6.bazel" + } + }, + "cui__windows_i686_gnu-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_gnu/0.48.0/download" + ], + "strip_prefix": "windows_i686_gnu-0.48.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_i686_gnu-0.48.0.bazel" + } + }, + "cui__windows_i686_gnu-0.52.6": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_gnu/0.52.6/download" + ], + "strip_prefix": "windows_i686_gnu-0.52.6", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_i686_gnu-0.52.6.bazel" + } + }, + "cui__windows_i686_gnullvm-0.52.6": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download" + ], + "strip_prefix": "windows_i686_gnullvm-0.52.6", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_i686_gnullvm-0.52.6.bazel" + } + }, + "cui__windows_i686_msvc-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_msvc/0.48.0/download" + ], + "strip_prefix": "windows_i686_msvc-0.48.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_i686_msvc-0.48.0.bazel" + } + }, + "cui__windows_i686_msvc-0.52.6": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_msvc/0.52.6/download" + ], + "strip_prefix": "windows_i686_msvc-0.52.6", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_i686_msvc-0.52.6.bazel" + } + }, + "cui__windows_x86_64_gnu-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnu/0.48.0/download" + ], + "strip_prefix": "windows_x86_64_gnu-0.48.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_x86_64_gnu-0.48.0.bazel" + } + }, + "cui__windows_x86_64_gnu-0.52.6": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download" + ], + "strip_prefix": "windows_x86_64_gnu-0.52.6", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_x86_64_gnu-0.52.6.bazel" + } + }, + "cui__windows_x86_64_gnullvm-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnullvm/0.48.0/download" + ], + "strip_prefix": "windows_x86_64_gnullvm-0.48.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_x86_64_gnullvm-0.48.0.bazel" + } + }, + "cui__windows_x86_64_gnullvm-0.52.6": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download" + ], + "strip_prefix": "windows_x86_64_gnullvm-0.52.6", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_x86_64_gnullvm-0.52.6.bazel" + } + }, + "cui__windows_x86_64_msvc-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_msvc/0.48.0/download" + ], + "strip_prefix": "windows_x86_64_msvc-0.48.0", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_x86_64_msvc-0.48.0.bazel" + } + }, + "cui__windows_x86_64_msvc-0.52.6": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download" + ], + "strip_prefix": "windows_x86_64_msvc-0.52.6", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.windows_x86_64_msvc-0.52.6.bazel" + } + }, + "cui__winnow-0.6.20": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winnow/0.6.20/download" + ], + "strip_prefix": "winnow-0.6.20", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.winnow-0.6.20.bazel" + } + }, + "cui__zerocopy-0.7.35": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/zerocopy/0.7.35/download" + ], + "strip_prefix": "zerocopy-0.7.35", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.zerocopy-0.7.35.bazel" + } + }, + "cui__zerocopy-derive-0.7.35": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/zerocopy-derive/0.7.35/download" + ], + "strip_prefix": "zerocopy-derive-0.7.35", + "build_file": "@@rules_rust+//crate_universe/3rdparty/crates:BUILD.zerocopy-derive-0.7.35.bazel" + } + }, + "cargo_bazel.buildifier-darwin-amd64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildifier-darwin-amd64" + ], + "integrity": "sha256-N1+CMQPQFiCq7CCgwpxsvKmfT9ByWuMLk2VcZwT0TXE=", + "downloaded_file_path": "buildifier", + "executable": true + } + }, + "cargo_bazel.buildifier-darwin-arm64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildifier-darwin-arm64" + ], + "integrity": "sha256-Wmr8asegn1RVuguJvZnVriO0F03F3J1sDtXOjKrD+BM=", + "downloaded_file_path": "buildifier", + "executable": true + } + }, + "cargo_bazel.buildifier-linux-amd64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildifier-linux-amd64" + ], + "integrity": "sha256-VHTMUSinToBng9VAgfWBZixL6K5lAi9VfpKB7V3IgAk=", + "downloaded_file_path": "buildifier", + "executable": true + } + }, + "cargo_bazel.buildifier-linux-arm64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildifier-linux-arm64" + ], + "integrity": "sha256-C/hsS//69PCO7Xe95bIILkrlA5oR4uiwOYTBc8NKVhw=", + "downloaded_file_path": "buildifier", + "executable": true + } + }, + "cargo_bazel.buildifier-linux-s390x": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildifier-linux-s390x" + ], + "integrity": "sha256-4tef9YhdRSdPdlMfGtvHtzoSn1nnZ/d36PveYz2dTi4=", + "downloaded_file_path": "buildifier", + "executable": true + } + }, + "cargo_bazel.buildifier-windows-amd64.exe": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_file", + "attributes": { + "urls": [ + "https://github.com/bazelbuild/buildtools/releases/download/v7.3.1/buildifier-windows-amd64.exe" + ], + "integrity": "sha256-NwzVdgda0pkwqC9d4TLxod5AhMeEqCUUvU2oDIWs9Kg=", + "downloaded_file_path": "buildifier.exe", + "executable": true + } + }, + "cargo_bazel_bootstrap": { + "bzlFile": "@@rules_rust+//cargo/private:cargo_bootstrap.bzl", + "ruleClassName": "cargo_bootstrap_repository", + "attributes": { + "srcs": [ + "@@rules_rust+//crate_universe:src/api.rs", + "@@rules_rust+//crate_universe:src/api/lockfile.rs", + "@@rules_rust+//crate_universe:src/cli.rs", + "@@rules_rust+//crate_universe:src/cli/generate.rs", + "@@rules_rust+//crate_universe:src/cli/query.rs", + "@@rules_rust+//crate_universe:src/cli/render.rs", + "@@rules_rust+//crate_universe:src/cli/splice.rs", + "@@rules_rust+//crate_universe:src/cli/vendor.rs", + "@@rules_rust+//crate_universe:src/config.rs", + "@@rules_rust+//crate_universe:src/context.rs", + "@@rules_rust+//crate_universe:src/context/crate_context.rs", + "@@rules_rust+//crate_universe:src/context/platforms.rs", + "@@rules_rust+//crate_universe:src/lib.rs", + "@@rules_rust+//crate_universe:src/lockfile.rs", + "@@rules_rust+//crate_universe:src/main.rs", + "@@rules_rust+//crate_universe:src/metadata.rs", + "@@rules_rust+//crate_universe:src/metadata/cargo_bin.rs", + "@@rules_rust+//crate_universe:src/metadata/cargo_tree_resolver.rs", + "@@rules_rust+//crate_universe:src/metadata/cargo_tree_rustc_wrapper.bat", + "@@rules_rust+//crate_universe:src/metadata/cargo_tree_rustc_wrapper.sh", + "@@rules_rust+//crate_universe:src/metadata/dependency.rs", + "@@rules_rust+//crate_universe:src/metadata/metadata_annotation.rs", + "@@rules_rust+//crate_universe:src/metadata/workspace_discoverer.rs", + "@@rules_rust+//crate_universe:src/rendering.rs", + "@@rules_rust+//crate_universe:src/rendering/template_engine.rs", + "@@rules_rust+//crate_universe:src/rendering/templates/module_bzl.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/header.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/module/aliases_map.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/module/deps_map.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/module/repo_git.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/partials/module/repo_http.j2", + "@@rules_rust+//crate_universe:src/rendering/templates/vendor_module.j2", + "@@rules_rust+//crate_universe:src/rendering/verbatim/alias_rules.bzl", + "@@rules_rust+//crate_universe:src/select.rs", + "@@rules_rust+//crate_universe:src/splicing.rs", + "@@rules_rust+//crate_universe:src/splicing/cargo_config.rs", + "@@rules_rust+//crate_universe:src/splicing/crate_index_lookup.rs", + "@@rules_rust+//crate_universe:src/splicing/splicer.rs", + "@@rules_rust+//crate_universe:src/test.rs", + "@@rules_rust+//crate_universe:src/utils.rs", + "@@rules_rust+//crate_universe:src/utils/starlark.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/glob.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/label.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select_dict.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select_list.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select_scalar.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/select_set.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/serialize.rs", + "@@rules_rust+//crate_universe:src/utils/starlark/target_compatible_with.rs", + "@@rules_rust+//crate_universe:src/utils/symlink.rs", + "@@rules_rust+//crate_universe:src/utils/target_triple.rs" + ], + "binary": "cargo-bazel", + "cargo_lockfile": "@@rules_rust+//crate_universe:Cargo.lock", + "cargo_toml": "@@rules_rust+//crate_universe:Cargo.toml", + "version": "1.83.0", + "timeout": 900, + "rust_toolchain_cargo_template": "@rust_host_tools//:bin/{tool}", + "rust_toolchain_rustc_template": "@rust_host_tools//:bin/{tool}", + "compressed_windows_toolchain_names": false + } + } + }, + "moduleExtensionMetadata": { + "explicitRootModuleDirectDeps": [ + "cui", + "cui__anyhow-1.0.89", + "cui__camino-1.1.9", + "cui__cargo-lock-10.0.1", + "cui__cargo-platform-0.1.9", + "cui__cargo_metadata-0.19.1", + "cui__cargo_toml-0.20.5", + "cui__cfg-expr-0.17.2", + "cui__clap-4.3.11", + "cui__crates-index-3.3.0", + "cui__glob-0.3.1", + "cui__hex-0.4.3", + "cui__indoc-2.0.5", + "cui__itertools-0.13.0", + "cui__normpath-1.3.0", + "cui__once_cell-1.20.2", + "cui__pathdiff-0.2.3", + "cui__regex-1.11.0", + "cui__semver-1.0.23", + "cui__serde-1.0.210", + "cui__serde_json-1.0.129", + "cui__serde_starlark-0.1.16", + "cui__sha2-0.10.8", + "cui__spdx-0.10.7", + "cui__tempfile-3.14.0", + "cui__tera-1.19.1", + "cui__textwrap-0.16.1", + "cui__toml-0.8.19", + "cui__tracing-0.1.40", + "cui__tracing-subscriber-0.3.18", + "cui__url-2.5.2", + "cui__walkdir-2.5.0", + "cui__maplit-1.0.2", + "cargo_bazel.buildifier-darwin-amd64", + "cargo_bazel.buildifier-darwin-arm64", + "cargo_bazel.buildifier-linux-amd64", + "cargo_bazel.buildifier-linux-arm64", + "cargo_bazel.buildifier-linux-s390x", + "cargo_bazel.buildifier-windows-amd64.exe", + "cargo_bazel_bootstrap" + ], + "explicitRootModuleDirectDevDeps": [], + "useAllRepos": "NO", + "reproducible": false + }, + "recordedRepoMappingEntries": [ + [ + "rules_rust+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_rust+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_rust+", + "cargo_bazel_bootstrap", + "rules_rust++cu+cargo_bazel_bootstrap" + ], + [ + "rules_rust+", + "cui__anyhow-1.0.89", + "rules_rust++cu+cui__anyhow-1.0.89" + ], + [ + "rules_rust+", + "cui__camino-1.1.9", + "rules_rust++cu+cui__camino-1.1.9" + ], + [ + "rules_rust+", + "cui__cargo-lock-10.0.1", + "rules_rust++cu+cui__cargo-lock-10.0.1" + ], + [ + "rules_rust+", + "cui__cargo-platform-0.1.9", + "rules_rust++cu+cui__cargo-platform-0.1.9" + ], + [ + "rules_rust+", + "cui__cargo_metadata-0.19.1", + "rules_rust++cu+cui__cargo_metadata-0.19.1" + ], + [ + "rules_rust+", + "cui__cargo_toml-0.20.5", + "rules_rust++cu+cui__cargo_toml-0.20.5" + ], + [ + "rules_rust+", + "cui__cfg-expr-0.17.2", + "rules_rust++cu+cui__cfg-expr-0.17.2" + ], + [ + "rules_rust+", + "cui__clap-4.3.11", + "rules_rust++cu+cui__clap-4.3.11" + ], + [ + "rules_rust+", + "cui__crates-index-3.3.0", + "rules_rust++cu+cui__crates-index-3.3.0" + ], + [ + "rules_rust+", + "cui__glob-0.3.1", + "rules_rust++cu+cui__glob-0.3.1" + ], + [ + "rules_rust+", + "cui__hex-0.4.3", + "rules_rust++cu+cui__hex-0.4.3" + ], + [ + "rules_rust+", + "cui__indoc-2.0.5", + "rules_rust++cu+cui__indoc-2.0.5" + ], + [ + "rules_rust+", + "cui__itertools-0.13.0", + "rules_rust++cu+cui__itertools-0.13.0" + ], + [ + "rules_rust+", + "cui__maplit-1.0.2", + "rules_rust++cu+cui__maplit-1.0.2" + ], + [ + "rules_rust+", + "cui__normpath-1.3.0", + "rules_rust++cu+cui__normpath-1.3.0" + ], + [ + "rules_rust+", + "cui__once_cell-1.20.2", + "rules_rust++cu+cui__once_cell-1.20.2" + ], + [ + "rules_rust+", + "cui__pathdiff-0.2.3", + "rules_rust++cu+cui__pathdiff-0.2.3" + ], + [ + "rules_rust+", + "cui__regex-1.11.0", + "rules_rust++cu+cui__regex-1.11.0" + ], + [ + "rules_rust+", + "cui__semver-1.0.23", + "rules_rust++cu+cui__semver-1.0.23" + ], + [ + "rules_rust+", + "cui__serde-1.0.210", + "rules_rust++cu+cui__serde-1.0.210" + ], + [ + "rules_rust+", + "cui__serde_json-1.0.129", + "rules_rust++cu+cui__serde_json-1.0.129" + ], + [ + "rules_rust+", + "cui__serde_starlark-0.1.16", + "rules_rust++cu+cui__serde_starlark-0.1.16" + ], + [ + "rules_rust+", + "cui__sha2-0.10.8", + "rules_rust++cu+cui__sha2-0.10.8" + ], + [ + "rules_rust+", + "cui__spdx-0.10.7", + "rules_rust++cu+cui__spdx-0.10.7" + ], + [ + "rules_rust+", + "cui__tempfile-3.14.0", + "rules_rust++cu+cui__tempfile-3.14.0" + ], + [ + "rules_rust+", + "cui__tera-1.19.1", + "rules_rust++cu+cui__tera-1.19.1" + ], + [ + "rules_rust+", + "cui__textwrap-0.16.1", + "rules_rust++cu+cui__textwrap-0.16.1" + ], + [ + "rules_rust+", + "cui__toml-0.8.19", + "rules_rust++cu+cui__toml-0.8.19" + ], + [ + "rules_rust+", + "cui__tracing-0.1.40", + "rules_rust++cu+cui__tracing-0.1.40" + ], + [ + "rules_rust+", + "cui__tracing-subscriber-0.3.18", + "rules_rust++cu+cui__tracing-subscriber-0.3.18" + ], + [ + "rules_rust+", + "cui__url-2.5.2", + "rules_rust++cu+cui__url-2.5.2" + ], + [ + "rules_rust+", + "cui__walkdir-2.5.0", + "rules_rust++cu+cui__walkdir-2.5.0" + ], + [ + "rules_rust+", + "rules_cc", + "rules_cc+" + ], + [ + "rules_rust+", + "rules_rust", + "rules_rust+" + ] + ] + } + }, + "@@rules_rust+//rust/private:internal_extensions.bzl%i": { + "general": { + "bzlTransitiveDigest": "h+lY7uToxRsenGQs5ht7fCiBQttyT7B1AZCbVjXShig=", + "usagesDigest": "kJVy8EznFW/5SwQOfq//BRUjQR1mZoBubYLHuDNIXZM=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "rules_rust_tinyjson": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "9ab95735ea2c8fd51154d01e39cf13912a78071c2d89abc49a7ef102a7dd725a", + "url": "https://static.crates.io/crates/tinyjson/tinyjson-2.5.1.crate", + "strip_prefix": "tinyjson-2.5.1", + "type": "tar.gz", + "build_file": "@@rules_rust+//util/process_wrapper:BUILD.tinyjson.bazel" + } + }, + "rrra__aho-corasick-1.0.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/aho-corasick/1.0.2/download" + ], + "strip_prefix": "aho-corasick-1.0.2", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.aho-corasick-1.0.2.bazel" + } + }, + "rrra__anstream-0.3.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstream/0.3.2/download" + ], + "strip_prefix": "anstream-0.3.2", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.anstream-0.3.2.bazel" + } + }, + "rrra__anstyle-1.0.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle/1.0.1/download" + ], + "strip_prefix": "anstyle-1.0.1", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.anstyle-1.0.1.bazel" + } + }, + "rrra__anstyle-parse-0.2.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle-parse/0.2.1/download" + ], + "strip_prefix": "anstyle-parse-0.2.1", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.anstyle-parse-0.2.1.bazel" + } + }, + "rrra__anstyle-query-1.0.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle-query/1.0.0/download" + ], + "strip_prefix": "anstyle-query-1.0.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.anstyle-query-1.0.0.bazel" + } + }, + "rrra__anstyle-wincon-1.0.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anstyle-wincon/1.0.1/download" + ], + "strip_prefix": "anstyle-wincon-1.0.1", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.anstyle-wincon-1.0.1.bazel" + } + }, + "rrra__anyhow-1.0.71": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/anyhow/1.0.71/download" + ], + "strip_prefix": "anyhow-1.0.71", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.anyhow-1.0.71.bazel" + } + }, + "rrra__bitflags-1.3.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/bitflags/1.3.2/download" + ], + "strip_prefix": "bitflags-1.3.2", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.bitflags-1.3.2.bazel" + } + }, + "rrra__cc-1.0.79": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/cc/1.0.79/download" + ], + "strip_prefix": "cc-1.0.79", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.cc-1.0.79.bazel" + } + }, + "rrra__clap-4.3.11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "1640e5cc7fb47dbb8338fd471b105e7ed6c3cb2aeb00c2e067127ffd3764a05d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap/4.3.11/download" + ], + "strip_prefix": "clap-4.3.11", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.clap-4.3.11.bazel" + } + }, + "rrra__clap_builder-4.3.11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "98c59138d527eeaf9b53f35a77fcc1fad9d883116070c63d5de1c7dc7b00c72b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap_builder/4.3.11/download" + ], + "strip_prefix": "clap_builder-4.3.11", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.clap_builder-4.3.11.bazel" + } + }, + "rrra__clap_derive-4.3.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap_derive/4.3.2/download" + ], + "strip_prefix": "clap_derive-4.3.2", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.clap_derive-4.3.2.bazel" + } + }, + "rrra__clap_lex-0.5.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/clap_lex/0.5.0/download" + ], + "strip_prefix": "clap_lex-0.5.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.clap_lex-0.5.0.bazel" + } + }, + "rrra__colorchoice-1.0.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/colorchoice/1.0.0/download" + ], + "strip_prefix": "colorchoice-1.0.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.colorchoice-1.0.0.bazel" + } + }, + "rrra__either-1.8.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/either/1.8.1/download" + ], + "strip_prefix": "either-1.8.1", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.either-1.8.1.bazel" + } + }, + "rrra__env_logger-0.10.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/env_logger/0.10.0/download" + ], + "strip_prefix": "env_logger-0.10.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.env_logger-0.10.0.bazel" + } + }, + "rrra__errno-0.3.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/errno/0.3.1/download" + ], + "strip_prefix": "errno-0.3.1", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.errno-0.3.1.bazel" + } + }, + "rrra__errno-dragonfly-0.1.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/errno-dragonfly/0.1.2/download" + ], + "strip_prefix": "errno-dragonfly-0.1.2", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.errno-dragonfly-0.1.2.bazel" + } + }, + "rrra__heck-0.4.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/heck/0.4.1/download" + ], + "strip_prefix": "heck-0.4.1", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.heck-0.4.1.bazel" + } + }, + "rrra__hermit-abi-0.3.2": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/hermit-abi/0.3.2/download" + ], + "strip_prefix": "hermit-abi-0.3.2", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.hermit-abi-0.3.2.bazel" + } + }, + "rrra__humantime-2.1.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/humantime/2.1.0/download" + ], + "strip_prefix": "humantime-2.1.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.humantime-2.1.0.bazel" + } + }, + "rrra__io-lifetimes-1.0.11": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/io-lifetimes/1.0.11/download" + ], + "strip_prefix": "io-lifetimes-1.0.11", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.io-lifetimes-1.0.11.bazel" + } + }, + "rrra__is-terminal-0.4.7": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/is-terminal/0.4.7/download" + ], + "strip_prefix": "is-terminal-0.4.7", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.is-terminal-0.4.7.bazel" + } + }, + "rrra__itertools-0.11.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/itertools/0.11.0/download" + ], + "strip_prefix": "itertools-0.11.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.itertools-0.11.0.bazel" + } + }, + "rrra__itoa-1.0.8": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/itoa/1.0.8/download" + ], + "strip_prefix": "itoa-1.0.8", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.itoa-1.0.8.bazel" + } + }, + "rrra__libc-0.2.147": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/libc/0.2.147/download" + ], + "strip_prefix": "libc-0.2.147", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.libc-0.2.147.bazel" + } + }, + "rrra__linux-raw-sys-0.3.8": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/linux-raw-sys/0.3.8/download" + ], + "strip_prefix": "linux-raw-sys-0.3.8", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.linux-raw-sys-0.3.8.bazel" + } + }, + "rrra__log-0.4.19": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/log/0.4.19/download" + ], + "strip_prefix": "log-0.4.19", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.log-0.4.19.bazel" + } + }, + "rrra__memchr-2.5.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/memchr/2.5.0/download" + ], + "strip_prefix": "memchr-2.5.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.memchr-2.5.0.bazel" + } + }, + "rrra__once_cell-1.18.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/once_cell/1.18.0/download" + ], + "strip_prefix": "once_cell-1.18.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.once_cell-1.18.0.bazel" + } + }, + "rrra__proc-macro2-1.0.64": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/proc-macro2/1.0.64/download" + ], + "strip_prefix": "proc-macro2-1.0.64", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.proc-macro2-1.0.64.bazel" + } + }, + "rrra__quote-1.0.29": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/quote/1.0.29/download" + ], + "strip_prefix": "quote-1.0.29", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.quote-1.0.29.bazel" + } + }, + "rrra__regex-1.9.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex/1.9.1/download" + ], + "strip_prefix": "regex-1.9.1", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.regex-1.9.1.bazel" + } + }, + "rrra__regex-automata-0.3.3": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex-automata/0.3.3/download" + ], + "strip_prefix": "regex-automata-0.3.3", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.regex-automata-0.3.3.bazel" + } + }, + "rrra__regex-syntax-0.7.4": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/regex-syntax/0.7.4/download" + ], + "strip_prefix": "regex-syntax-0.7.4", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.regex-syntax-0.7.4.bazel" + } + }, + "rrra__rustix-0.37.23": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/rustix/0.37.23/download" + ], + "strip_prefix": "rustix-0.37.23", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.rustix-0.37.23.bazel" + } + }, + "rrra__ryu-1.0.14": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/ryu/1.0.14/download" + ], + "strip_prefix": "ryu-1.0.14", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.ryu-1.0.14.bazel" + } + }, + "rrra__serde-1.0.171": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde/1.0.171/download" + ], + "strip_prefix": "serde-1.0.171", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.serde-1.0.171.bazel" + } + }, + "rrra__serde_derive-1.0.171": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_derive/1.0.171/download" + ], + "strip_prefix": "serde_derive-1.0.171", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.serde_derive-1.0.171.bazel" + } + }, + "rrra__serde_json-1.0.102": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b5062a995d481b2308b6064e9af76011f2921c35f97b0468811ed9f6cd91dfed", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/serde_json/1.0.102/download" + ], + "strip_prefix": "serde_json-1.0.102", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.serde_json-1.0.102.bazel" + } + }, + "rrra__strsim-0.10.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/strsim/0.10.0/download" + ], + "strip_prefix": "strsim-0.10.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.strsim-0.10.0.bazel" + } + }, + "rrra__syn-2.0.25": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/syn/2.0.25/download" + ], + "strip_prefix": "syn-2.0.25", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.syn-2.0.25.bazel" + } + }, + "rrra__termcolor-1.2.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/termcolor/1.2.0/download" + ], + "strip_prefix": "termcolor-1.2.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.termcolor-1.2.0.bazel" + } + }, + "rrra__unicode-ident-1.0.10": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/unicode-ident/1.0.10/download" + ], + "strip_prefix": "unicode-ident-1.0.10", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.unicode-ident-1.0.10.bazel" + } + }, + "rrra__utf8parse-0.2.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/utf8parse/0.2.1/download" + ], + "strip_prefix": "utf8parse-0.2.1", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.utf8parse-0.2.1.bazel" + } + }, + "rrra__winapi-0.3.9": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winapi/0.3.9/download" + ], + "strip_prefix": "winapi-0.3.9", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.winapi-0.3.9.bazel" + } + }, + "rrra__winapi-i686-pc-windows-gnu-0.4.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winapi-i686-pc-windows-gnu/0.4.0/download" + ], + "strip_prefix": "winapi-i686-pc-windows-gnu-0.4.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.winapi-i686-pc-windows-gnu-0.4.0.bazel" + } + }, + "rrra__winapi-util-0.1.5": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winapi-util/0.1.5/download" + ], + "strip_prefix": "winapi-util-0.1.5", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.winapi-util-0.1.5.bazel" + } + }, + "rrra__winapi-x86_64-pc-windows-gnu-0.4.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download" + ], + "strip_prefix": "winapi-x86_64-pc-windows-gnu-0.4.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.winapi-x86_64-pc-windows-gnu-0.4.0.bazel" + } + }, + "rrra__windows-sys-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-sys/0.48.0/download" + ], + "strip_prefix": "windows-sys-0.48.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.windows-sys-0.48.0.bazel" + } + }, + "rrra__windows-targets-0.48.1": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows-targets/0.48.1/download" + ], + "strip_prefix": "windows-targets-0.48.1", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.windows-targets-0.48.1.bazel" + } + }, + "rrra__windows_aarch64_gnullvm-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_gnullvm/0.48.0/download" + ], + "strip_prefix": "windows_aarch64_gnullvm-0.48.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.windows_aarch64_gnullvm-0.48.0.bazel" + } + }, + "rrra__windows_aarch64_msvc-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_aarch64_msvc/0.48.0/download" + ], + "strip_prefix": "windows_aarch64_msvc-0.48.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.windows_aarch64_msvc-0.48.0.bazel" + } + }, + "rrra__windows_i686_gnu-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_gnu/0.48.0/download" + ], + "strip_prefix": "windows_i686_gnu-0.48.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.windows_i686_gnu-0.48.0.bazel" + } + }, + "rrra__windows_i686_msvc-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_i686_msvc/0.48.0/download" + ], + "strip_prefix": "windows_i686_msvc-0.48.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.windows_i686_msvc-0.48.0.bazel" + } + }, + "rrra__windows_x86_64_gnu-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnu/0.48.0/download" + ], + "strip_prefix": "windows_x86_64_gnu-0.48.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.windows_x86_64_gnu-0.48.0.bazel" + } + }, + "rrra__windows_x86_64_gnullvm-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_gnullvm/0.48.0/download" + ], + "strip_prefix": "windows_x86_64_gnullvm-0.48.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.windows_x86_64_gnullvm-0.48.0.bazel" + } + }, + "rrra__windows_x86_64_msvc-0.48.0": { + "bzlFile": "@@bazel_tools//tools/build_defs/repo:http.bzl", + "ruleClassName": "http_archive", + "attributes": { + "sha256": "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a", + "type": "tar.gz", + "urls": [ + "https://static.crates.io/crates/windows_x86_64_msvc/0.48.0/download" + ], + "strip_prefix": "windows_x86_64_msvc-0.48.0", + "build_file": "@@rules_rust+//tools/rust_analyzer/3rdparty/crates:BUILD.windows_x86_64_msvc-0.48.0.bazel" + } + } + }, + "moduleExtensionMetadata": { + "explicitRootModuleDirectDeps": [ + "rules_rust_tinyjson", + "rrra__anyhow-1.0.71", + "rrra__clap-4.3.11", + "rrra__env_logger-0.10.0", + "rrra__itertools-0.11.0", + "rrra__log-0.4.19", + "rrra__serde-1.0.171", + "rrra__serde_json-1.0.102" + ], + "explicitRootModuleDirectDevDeps": [], + "useAllRepos": "NO", + "reproducible": false + }, + "recordedRepoMappingEntries": [ + [ + "rules_rust+", + "bazel_skylib", + "bazel_skylib+" + ], + [ + "rules_rust+", + "bazel_tools", + "bazel_tools" + ], + [ + "rules_rust+", + "rrra__anyhow-1.0.71", + "rules_rust++i+rrra__anyhow-1.0.71" + ], + [ + "rules_rust+", + "rrra__clap-4.3.11", + "rules_rust++i+rrra__clap-4.3.11" + ], + [ + "rules_rust+", + "rrra__env_logger-0.10.0", + "rules_rust++i+rrra__env_logger-0.10.0" + ], + [ + "rules_rust+", + "rrra__itertools-0.11.0", + "rules_rust++i+rrra__itertools-0.11.0" + ], + [ + "rules_rust+", + "rrra__log-0.4.19", + "rules_rust++i+rrra__log-0.4.19" + ], + [ + "rules_rust+", + "rrra__serde-1.0.171", + "rules_rust++i+rrra__serde-1.0.171" + ], + [ + "rules_rust+", + "rrra__serde_json-1.0.102", + "rules_rust++i+rrra__serde_json-1.0.102" + ] + ] + } + } + } +} diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel new file mode 100644 index 000000000000..3555e2585377 --- /dev/null +++ b/WORKSPACE.bazel @@ -0,0 +1,100 @@ +## Until bzlmod support is added to rules_scala +## https://github.com/bazelbuild/rules_scala/pull/1541 + +load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +http_archive( + name = "bazel_skylib", + sha256 = "b8a1527901774180afc798aeb28c4634bdccf19c4d98e7bdd1ce79d1fe9aaad7", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.4.1/bazel-skylib-1.4.1.tar.gz", + "https://github.com/bazelbuild/bazel-skylib/releases/download/1.4.1/bazel-skylib-1.4.1.tar.gz", + ], +) + +load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") + +RULES_SCALA_VERSION = "6.4.0" + +RULES_SCALA_SHA = "9a23058a36183a556a9ba7229b4f204d3e68c8c6eb7b28260521016b38ef4e00" + +http_archive( + name = "io_bazel_rules_scala", + sha256 = RULES_SCALA_SHA, + strip_prefix = "rules_scala-%s" % RULES_SCALA_VERSION, + url = "https://github.com/bazelbuild/rules_scala/releases/download/v%s/rules_scala-v%s.tar.gz" % (RULES_SCALA_VERSION, RULES_SCALA_VERSION), +) + +load("@io_bazel_rules_scala//:scala_config.bzl", "scala_config") + +scala_config(scala_version = "2.13.12") ## Version has to match the version available in `rules_scala` + +load("@io_bazel_rules_scala//scala:scala.bzl", "rules_scala_setup", "rules_scala_toolchain_deps_repositories") + +# loads other rules Rules Scala depends on +rules_scala_setup() + +# Loads Maven deps like Scala compiler and standard libs. On production projects you should consider +# defining a custom deps toolchains to use your project libs instead +rules_scala_toolchain_deps_repositories(fetch_sources = True) + +load("@io_bazel_rules_scala//scala:toolchains.bzl", "scala_register_toolchains") +load("@io_bazel_rules_scala//testing:scalatest.bzl", "scalatest_repositories", "scalatest_toolchain") + +scalatest_repositories() + +scalatest_toolchain() + +## Note that the default toolchain, enabled via +## > scala_register_toolchains() +## will not work due to a bug with SecurityManager +## https://github.com/bazelbuild/rules_scala/issues/1521 +## Workaround is to use our own scala toolchain with custom options. +register_toolchains("//toolchains:enso_toolchain") + +## Setup `bazel-distribution` for generating pom.xml +RULES_BAZEL_DISTRIBUTION_SHA = "3f88eb2ff11654039fa64cbc67a8411df1b85fba" + +git_repository( + name = "vaticle_bazel_distribution", + commit = RULES_BAZEL_DISTRIBUTION_SHA, + remote = "https://github.com/vaticle/bazel-distribution", +) + +### Dependencies of `bazel-distribution` +http_archive( + name = "rules_pkg", + sha256 = "8f9ee2dc10c1ae514ee599a8b42ed99fa262b757058f65ad3c384289ff70c4b8", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz", + "https://github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz", + ], +) + +## Uses more up-to-date version of rules_kotlin than what +## @vaticle_bazel_distribution seems to rely on +## as encountered various issues, including a blocker of +## https://github.com/bazelbuild/rules_kotlin/issues/1072. +rules_kotlin_version = "1.9.0" + +rules_kotlin_sha = "5766f1e599acf551aa56f49dab9ab9108269b03c557496c54acaf41f98e2b8d6" + +http_archive( + name = "io_bazel_rules_kotlin", + sha256 = rules_kotlin_sha, + urls = ["https://github.com/bazelbuild/rules_kotlin/releases/download/v%s/rules_kotlin-v%s.tar.gz" % (rules_kotlin_version, rules_kotlin_version)], +) + +### Default setup for `baze-distribution` +load("@io_bazel_rules_kotlin//kotlin:repositories.bzl", "kotlin_repositories") + +kotlin_repositories() # if you want the default. Otherwise see custom kotlinc distribution below + +load("@io_bazel_rules_kotlin//kotlin:core.bzl", "kt_register_toolchains") + +kt_register_toolchains() + +load("@vaticle_bazel_distribution//common:rules.bzl", "workspace_refs") + +workspace_refs(name = "enso_org_enso_workspace_refs") diff --git a/app/.example.env b/app/.example.env deleted file mode 100644 index 1b77ee980675..000000000000 --- a/app/.example.env +++ /dev/null @@ -1,13 +0,0 @@ -ENSO_CLOUD_ENSO_HOST=https://ensoanalytics.com -ENSO_CLOUD_ENVIRONMENT=production -ENSO_CLOUD_API_URL=https://aaaaaaaaaa.execute-api.mars.amazonaws.com -ENSO_CLOUD_CHAT_URL=wss://chat.example.com -ENSO_CLOUD_SENTRY_DSN=https://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@o0000000000000000.ingest.sentry.io/0000000000000000 -ENSO_CLOUD_STRIPE_KEY=pk_test_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -ENSO_CLOUD_AUTH_ENDPOINT=https://aaaaaaaaaa.execute-api.mars.amazonaws.com/path/to/auth/endpoint -ENSO_CLOUD_AMPLIFY_USER_POOL_ID=mars_AAAAAAAAA -ENSO_CLOUD_AMPLIFY_USER_POOL_WEB_CLIENT_ID=zzzzzzzzzzzzzzzzzzzzzzzzzz -ENSO_CLOUD_AMPLIFY_DOMAIN=somewhere.auth.mars.amazoncognito.com -ENSO_CLOUD_AMPLIFY_REGION=mars -ENSO_POLYGLOT_YDOC_SERVER=false -ENSO_YDOC_LS_DEBUG=false diff --git a/app/.gitignore b/app/.gitignore index a21a5703fab6..0d3640207acb 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1,4 +1,5 @@ -node_modules dist lib/content/assets/ -*.env + +# Fail-safe to not commit locally defined env file that used to be here. +.env diff --git a/app/common/BUILD.bazel b/app/common/BUILD.bazel new file mode 100644 index 000000000000..479795c26c9a --- /dev/null +++ b/app/common/BUILD.bazel @@ -0,0 +1,40 @@ +load("@aspect_rules_js//npm:defs.bzl", "npm_package") +load("@aspect_rules_ts//ts:defs.bzl", "ts_config", "ts_project") +load("@npm//:defs.bzl", "npm_link_all_packages", "npm_link_targets") + +npm_link_all_packages(name = "node_modules") + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = ["//:tsconfig"], +) + +ts_project( + name = "tsc", + srcs = glob([ + "src/**/*.ts", + "src/**/*.js", + ]) + ["src/text/english.json"], + allow_js = True, + composite = True, + out_dir = "dist", + resolve_json_module = True, + root_dir = "src", + tsconfig = ":tsconfig", + validate = select({ + "@platforms//os:windows": False, + "//conditions:default": True, + }), + deps = npm_link_targets(), +) + +npm_package( + name = "pkg", + srcs = [ + "package.json", + "src/config.json", + ":tsc", + ], + visibility = ["//visibility:public"], +) diff --git a/app/common/package.json b/app/common/package.json index 1d90e3d03a1a..559e63b54765 100644 --- a/app/common/package.json +++ b/app/common/package.json @@ -2,34 +2,23 @@ "name": "enso-common", "version": "1.0.0", "type": "module", - "main": "./src/index.js", "exports": { - ".": "./src/index.js", + ".": { + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + }, "./src/config.json": "./src/config.json", - "./src/accessToken": "./src/accessToken.ts", - "./src/appConfig": "./src/appConfig.js", - "./src/buildUtils": "./src/buildUtils.js", - "./src/detect": "./src/detect.ts", - "./src/gtag": "./src/gtag.ts", - "./src/load": "./src/load.ts", - "./src/backendQuery": "./src/backendQuery.ts", - "./src/queryClient": "./src/queryClient.ts", - "./src/utilities/data/array": "./src/utilities/data/array.ts", - "./src/utilities/errors": "./src/utilities/errors.ts", - "./src/utilities/data/dateTime": "./src/utilities/data/dateTime.ts", - "./src/utilities/data/newtype": "./src/utilities/data/newtype.ts", - "./src/utilities/data/object": "./src/utilities/data/object.ts", - "./src/utilities/data/string": "./src/utilities/data/string.ts", - "./src/utilities/data/iter": "./src/utilities/data/iter.ts", - "./src/utilities/style/tabBar": "./src/utilities/style/tabBar.ts", - "./src/utilities/uniqueString": "./src/utilities/uniqueString.ts", - "./src/text": "./src/text/index.ts", - "./src/utilities/permissions": "./src/utilities/permissions.ts", - "./src/services/Backend": "./src/services/Backend.ts", - "./src/types": "./src/types.d.ts" + "./src/*": { + "source": "./src/*.ts", + "types": "./dist/*.d.ts", + "import": "./dist/*.js" + } }, + "main": "src/index.ts", "scripts": { "test": "vitest run", + "compile": "tsc", "lint": "eslint ./src --cache --max-warnings=0" }, "peerDependencies": { @@ -42,6 +31,6 @@ "lib0": "^0.2.85", "react": "^18.3.1", "vitest": "^1.3.1", - "vue": "^3.5.2" + "@types/node": "^20.11.21" } } diff --git a/app/common/src/appConfig.d.ts b/app/common/src/appConfig.d.ts deleted file mode 100644 index 3411f03f67fc..000000000000 --- a/app/common/src/appConfig.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -/** @file Functions for managing app configuration. */ - -/** - * Read environment variables from a file based on the `ENSO_CLOUD_ENV_FILE_NAME` - * environment variable. Reads from `.env` if the variable is blank or absent. - * DOES NOT override existing environment variables if the variable is absent. - */ -export function readEnvironmentFromFile(): Promise - -/** - * An object containing app configuration to inject. - * - * This includes: - * - the base URL for backend endpoints - * - the WebSocket URL for the chatbot - * - the unique identifier for the cloud environment, for use in Sentry logs - * - Stripe, Sentry and Amplify public keys - */ -export function getDefines(serverPort?: number): Record - -/** Load test environment variables, useful for when the Cloud backend is mocked or unnecessary. */ -export function loadTestEnvironmentVariables(): void diff --git a/app/common/src/appConfig.js b/app/common/src/appConfig.js deleted file mode 100644 index 1e414030d78b..000000000000 --- a/app/common/src/appConfig.js +++ /dev/null @@ -1,147 +0,0 @@ -/** @file Functions for managing app configuration. */ -import * as fs from 'node:fs/promises' -import * as path from 'node:path' -import * as process from 'node:process' -import * as url from 'node:url' - -// =============================== -// === readEnvironmentFromFile === -// =============================== - -/** Read environment variables from a file based on the `ENSO_CLOUD_ENV_FILE_NAME` - * environment variable. Reads from `.env` if the variable is `production`, blank or absent. - * DOES NOT override existing environment variables if the variable is absent. */ -export async function readEnvironmentFromFile() { - const environment = process.env.ENSO_CLOUD_ENVIRONMENT ?? null - const isProduction = environment == null || environment === '' || environment === 'production' - const fileName = isProduction ? '.env' : `.${environment}.env` - const filePath = path.join(url.fileURLToPath(new URL('../..', import.meta.url)), fileName) - const buildInfo = await (async () => { - try { - const build = await import('../../../build.json', { with: { type: 'json' } }) - // Handle importing json file regardless of CommonJS/ESM integation settings. - return 'default' in build ? build.default : build - } catch { - return { commit: '', version: '', engineVersion: '', name: '' } - } - })() - console.info('Build info: ' + JSON.stringify(buildInfo)) - discardUndefinedEnv('ENSO_IDE_VERSION') - discardUndefinedEnv('ENSO_CLOUD_DASHBOARD_VERSION') - discardUndefinedEnv('ENSO_CLOUD_DASHBOARD_COMMIT_HASH') - - try { - const file = await fs.readFile(filePath, { encoding: 'utf-8' }) - console.info(`Reading environment from file: ${filePath}`) - /** @type {readonly (readonly [string, string])[]} */ - let entries = file.split('\n').flatMap(line => { - if (/^\s*$|^.s*#/.test(line)) { - return [] - } else { - const [key = '', value = ''] = line.split('=', 2) - return [[key, value]] - } - }) - if (isProduction) { - entries = entries.filter(kv => { - const [k, v] = kv - return v !== 'undefined' && process.env[k] == null - }) - } - - const foundVars = entries.map(([k, _]) => k).join(', ') - console.info(`Found variables: ${foundVars}`) - - const variables = Object.fromEntries(entries) - if (!isProduction || entries.length > 0) { - Object.assign(process.env, variables) - } - process.env.ENSO_CLOUD_DASHBOARD_VERSION ??= buildInfo.version ?? '0.0.0-dev' - process.env.ENSO_CLOUD_DASHBOARD_COMMIT_HASH ??= buildInfo.commit - } catch { - process.env.ENSO_CLOUD_DASHBOARD_VERSION ??= buildInfo.version - process.env.ENSO_CLOUD_DASHBOARD_COMMIT_HASH ??= buildInfo.commit - } -} - -/** - * Discard environment variable value when is an "undefined" string. - * @param {string} name Name of an env variable. - */ -function discardUndefinedEnv(name) { - if (process.env[name] === 'undefined') { - delete process.env[name] - } -} - -// =============== -// === globals === -// =============== - -/** The value as JSON if it is not nullish, else `'undefined'`. - * @param {unknown} value - the value to `JSON.stringify()`. */ -function stringify(value) { - return value == null ? 'undefined' : JSON.stringify(value) -} - -/** Return an object containing app configuration to inject. - * - * This includes: - * - the base URL for backend endpoints - * - the WebSocket URL for the chatbot - * - the unique identifier for the cloud environment, for use in Sentry logs - * - Stripe, Sentry and Amplify public keys */ -export function getDefines() { - return { - 'process.env.ENSO_CLOUD_ENVIRONMENT': stringify( - // The actual environment variable does not necessarily exist. - process.env.ENSO_CLOUD_ENVIRONMENT ?? 'production', - ), - 'process.env.ENSO_CLOUD_API_URL': stringify(process.env.ENSO_CLOUD_API_URL), - 'process.env.ENSO_CLOUD_SENTRY_DSN': stringify(process.env.ENSO_CLOUD_SENTRY_DSN), - 'process.env.ENSO_CLOUD_STRIPE_KEY': stringify(process.env.ENSO_CLOUD_STRIPE_KEY), - 'process.env.ENSO_CLOUD_CHAT_URL': stringify(process.env.ENSO_CLOUD_CHAT_URL), - 'process.env.ENSO_CLOUD_AUTH_ENDPOINT': stringify(process.env.ENSO_CLOUD_AUTH_ENDPOINT), - 'process.env.ENSO_CLOUD_COGNITO_USER_POOL_ID': stringify( - process.env.ENSO_CLOUD_COGNITO_USER_POOL_ID, - ), - 'process.env.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID': stringify( - process.env.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID, - ), - 'process.env.ENSO_CLOUD_COGNITO_DOMAIN': stringify(process.env.ENSO_CLOUD_COGNITO_DOMAIN), - 'process.env.ENSO_CLOUD_COGNITO_REGION': stringify(process.env.ENSO_CLOUD_COGNITO_REGION), - 'process.env.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG': stringify( - process.env.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG, - ), - 'process.env.ENSO_CLOUD_DASHBOARD_VERSION': stringify(process.env.ENSO_CLOUD_DASHBOARD_VERSION), - 'process.env.ENSO_CLOUD_DASHBOARD_COMMIT_HASH': stringify( - process.env.ENSO_CLOUD_DASHBOARD_COMMIT_HASH, - ), - 'process.env.ENSO_CLOUD_ENSO_HOST': stringify( - process.env.ENSO_CLOUD_ENSO_HOST ?? 'https://ensoanalytics.com', - ), - } -} - -const DUMMY_DEFINES = { - 'process.env.NODE_ENV': 'production', - 'process.env.ENSO_CLOUD_ENVIRONMENT': 'production', - 'process.env.ENSO_CLOUD_API_URL': 'https://mock', - 'process.env.ENSO_CLOUD_SENTRY_DSN': - 'https://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@o0000000000000000.ingest.sentry.io/0000000000000000', - 'process.env.ENSO_CLOUD_STRIPE_KEY': '', - 'process.env.ENSO_CLOUD_CHAT_URL': '', - 'process.env.ENSO_CLOUD_COGNITO_USER_POOL_ID': '', - 'process.env.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID': '', - 'process.env.ENSO_CLOUD_COGNITO_DOMAIN': '', - 'process.env.ENSO_CLOUD_COGNITO_REGION': '', - 'process.env.ENSO_CLOUD_DASHBOARD_VERSION': '0.0.1-testing', - 'process.env.ENSO_CLOUD_DASHBOARD_COMMIT_HASH': 'abcdef0', -} - -/** Load test environment variables, useful for when the Cloud backend is mocked or unnecessary. */ -export function loadTestEnvironmentVariables() { - for (const [k, v] of Object.entries(DUMMY_DEFINES)) { - process.env[k.replace(/^process[.]env[.]/, '')] = v - } -} diff --git a/app/common/src/gtag.ts b/app/common/src/gtag.ts deleted file mode 100644 index 5bf6f4d24609..000000000000 --- a/app/common/src/gtag.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** @file Google Analytics tag. */ -import * as load from './load' - -const GOOGLE_ANALYTICS_TAG = process.env.ENSO_CLOUD_GOOGLE_ANALYTICS_TAG - -if (GOOGLE_ANALYTICS_TAG != null) { - void load.loadScript(`https://www.googletagmanager.com/gtag/js?id=${GOOGLE_ANALYTICS_TAG}`) -} - -// @ts-expect-error This is explicitly not given types as it is a mistake to acess this -// anywhere else. -window.dataLayer = window.dataLayer || [] - -/** Google Analytics tag function. */ -export function gtag(_action: 'config' | 'event' | 'js' | 'set', ..._args: unknown[]) { - // @ts-expect-error This is explicitly not given types as it is a mistake to acess this - // anywhere else. - // eslint-disable-next-line prefer-rest-params - window.dataLayer.push(arguments) -} - -/** Send event to Google Analytics. */ -export function event(name: string, params?: object) { - gtag('event', name, params) -} - -gtag('js', new Date()) -// eslint-disable-next-line camelcase -gtag('set', 'linker', { accept_incoming: true }) -gtag('config', GOOGLE_ANALYTICS_TAG) -if (GOOGLE_ANALYTICS_TAG === 'G-CLTBJ37MDM') { - gtag('config', 'G-DH47F649JC') -} diff --git a/app/common/src/index.js b/app/common/src/index.js deleted file mode 100644 index 56afe00ca5f1..000000000000 --- a/app/common/src/index.js +++ /dev/null @@ -1,36 +0,0 @@ -/** @file This module contains metadata about the product and distribution, - * and various other constants that are needed in multiple sibling packages. - * - * Code in this package is used by two or more sibling packages of this package. The code is defined - * here when it is not possible for a sibling package to own that code without introducing a - * circular dependency in our packages. */ - -// ======================== -// === Product metadata === -// ======================== - -/** URL protocol scheme for deep links to authentication flow pages, without the `:` suffix. - * - * For example: the deep link URL - * `enso://authentication/register?code=...&state=...` uses this scheme. */ -export const DEEP_LINK_SCHEME = 'enso' - -/** Name of the product. */ -export const PRODUCT_NAME = 'Enso' - -/** Company name, used as the copyright holder. */ -export const COMPANY_NAME = 'New Byte Order sp. z o.o.' - -/** The domain on which the Cloud Dashboard web app is hosted. - * Excludes the protocol (`https://`). */ -export const CLOUD_DASHBOARD_DOMAIN = 'cloud.enso.org' - -/** @type {[header: string, value: string][]} - * COOP, COEP, and CORP headers: https://web.dev/coop-coep/ - * - * These are required to increase the resolution of `performance.now()` timers, - * making profiling a lot more accurate and consistent. */ -export const COOP_COEP_CORP_HEADERS = [ - ['Cross-Origin-Opener-Policy', 'same-origin'], - ['Cross-Origin-Resource-Policy', 'same-origin'], -] diff --git a/app/common/src/index.d.ts b/app/common/src/index.ts similarity index 77% rename from app/common/src/index.d.ts rename to app/common/src/index.ts index d6604aa3e4e8..c269518eecf1 100644 --- a/app/common/src/index.d.ts +++ b/app/common/src/index.ts @@ -15,21 +15,21 @@ * URL protocol scheme for deep links to authentication flow pages, without the `:` suffix. * * For example: the deep link URL - * `enso://authentication/register?code=...&state=...` uses this scheme. + * `enso://authentication/register?code=...&state=...` uses this scheme */ -export const DEEP_LINK_SCHEME: string +export const DEEP_LINK_SCHEME: string = 'enso' /** Name of the product. */ -export const PRODUCT_NAME: string +export const PRODUCT_NAME: string = 'Enso' /** Company name, used as the copyright holder. */ -export const COMPANY_NAME: string +export const COMPANY_NAME: string = 'New Byte Order sp. z o.o.' /** * The domain on which the Cloud Dashboard web app is hosted. * Excludes the protocol (`https://`). */ -export const CLOUD_DASHBOARD_DOMAIN: string +export const CLOUD_DASHBOARD_DOMAIN: string = 'cloud.enso.org' /** * COOP, COEP, and CORP headers: https://web.dev/coop-coep/ @@ -37,4 +37,7 @@ export const CLOUD_DASHBOARD_DOMAIN: string * These are required to increase the resolution of `performance.now()` timers, * making profiling a lot more accurate and consistent. */ -export const COOP_COEP_CORP_HEADERS: [header: string, value: string][] +export const COOP_COEP_CORP_HEADERS: [header: string, value: string][] = [ + ['Cross-Origin-Opener-Policy', 'same-origin'], + ['Cross-Origin-Resource-Policy', 'same-origin'], +] diff --git a/app/common/src/text/index.ts b/app/common/src/text.ts similarity index 98% rename from app/common/src/text/index.ts rename to app/common/src/text.ts index 55ebb239a7e3..2446d8405d78 100644 --- a/app/common/src/text/index.ts +++ b/app/common/src/text.ts @@ -1,7 +1,7 @@ /** @file Functions related to displaying text. */ -import { unsafeKeys } from '../utilities/data/object' -import ENGLISH from './english.json' with { type: 'json' } +import ENGLISH from './text/english.json' with { type: 'json' } +import { unsafeKeys } from './utilities/data/object' /** Possible languages in which to display text. */ export enum Language { diff --git a/app/common/src/utilities/data/iter.ts b/app/common/src/utilities/data/iter.ts index 7329fe8b2e1d..1624dd0de69a 100644 --- a/app/common/src/utilities/data/iter.ts +++ b/app/common/src/utilities/data/iter.ts @@ -1,7 +1,5 @@ /** @file Utilities for manipulating {@link Iterator}s and {@link Iterable}s. */ -import { iteratorFilter, mapIterator } from 'lib0/iterator' - /** Similar to {@link Array.prototype.reduce|}, but consumes elements from any iterable. */ export function reduce( iterable: Iterable, @@ -53,8 +51,8 @@ export function* range(start: number, stop: number, step = start <= stop ? 1 : - } /** @returns An iterator that yields the results of applying the given function to each value of the given iterable. */ -export function map(it: Iterable, f: (value: T) => U): IterableIterator { - return mapIterator(it[Symbol.iterator](), f) +export function* map(it: Iterable, f: (value: T) => U): IterableIterator { + for (const value of it) yield f(value) } export function filter( @@ -66,8 +64,8 @@ export function filter(iter: Iterable, include: (value: T) => boolean): It * Return an {@link Iterable} that `yield`s only the values from the given source iterable * that pass the given predicate. */ -export function filter(iter: Iterable, include: (value: T) => boolean): IterableIterator { - return iteratorFilter(iter[Symbol.iterator](), include) +export function* filter(iter: Iterable, include: (value: T) => boolean): IterableIterator { + for (const value of iter) if (include(value)) yield value } /** diff --git a/app/common/src/utilities/permissions.ts b/app/common/src/utilities/permissions.ts index bbdb0b5309a1..45dd33389fe7 100644 --- a/app/common/src/utilities/permissions.ts +++ b/app/common/src/utilities/permissions.ts @@ -1,5 +1,5 @@ /** @file Utilities for working with permissions. */ -import type * as text from 'enso-common/src/text' +import type * as text from '../text' // ======================== // === PermissionAction === diff --git a/app/common/tsconfig.json b/app/common/tsconfig.json index 4837545253f3..1d3dc85c9e00 100644 --- a/app/common/tsconfig.json +++ b/app/common/tsconfig.json @@ -4,7 +4,12 @@ "lib": ["DOM", "es2023"], "allowJs": true, "checkJs": true, - "skipLibCheck": false + "skipLibCheck": false, + "noEmit": false, + "resolveJsonModule": true, + "outDir": "dist", + "rootDir": "src" }, - "include": ["./src/", "./src/text/english.json", "../types/"] + "include": ["src", "./src/text/english.json"], + "exclude": [] } diff --git a/app/gui/.env b/app/gui/.env new file mode 100644 index 000000000000..6d0e1a84a252 --- /dev/null +++ b/app/gui/.env @@ -0,0 +1,23 @@ +# CAUTION: this file is intentionally NOT ignored. If you want to override those variables, create an `.env.local` file. +ENSO_IDE_AG_GRID_LICENSE_KEY= +ENSO_IDE_API_URL=https://aaaaaaaaaa.execute-api.mars.amazonaws.com +ENSO_IDE_CHAT_URL=wss://chat.example.com +ENSO_IDE_CLOUD_BUILD=false +ENSO_IDE_COGNITO_DOMAIN=somewhere.auth.mars.amazoncognito.com +ENSO_IDE_COGNITO_REGION=mars +ENSO_IDE_COGNITO_USER_POOL_ID=mars_AAAAAAAAA +ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID=zzzzzzzzzzzzzzzzzzzzzzzzzz +ENSO_IDE_COMMIT_HASH=abcdef123 +ENSO_IDE_ENVIRONMENT=development +ENSO_IDE_GOOGLE_ANALYTICS_TAG= +ENSO_IDE_HOST=https://ensoanalytics.com +ENSO_IDE_MAPBOX_API_TOKEN= +ENSO_IDE_SENTRY_DSN=https://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@o0000000000000000.ingest.sentry.io/0000000000000000 +ENSO_IDE_STRIPE_KEY=pk_test_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +ENSO_IDE_AUTH_ENDPOINT=https://aaaaaaaaaa.execute-api.mars.amazonaws.com/path/to/auth/endpoint +ENSO_IDE_VERSION=0.0.0-dev + +# Potential override variables useful only for local development: +# ENSO_IDE_YDOC_SERVER_URL= +# ENSO_IDE_YDOC_LS_DEBUG=false +# ENSO_IDE_PROJECT_MANAGER_URL= diff --git a/app/gui/.env.bazel b/app/gui/.env.bazel new file mode 100644 index 000000000000..525de5fbf0c3 --- /dev/null +++ b/app/gui/.env.bazel @@ -0,0 +1,18 @@ +# Bazel build step defaults to having all envs left as placeholders, so that they can be replaced late after the vite build step. +ENSO_IDE_AG_GRID_LICENSE_KEY = "((%__ENSO_IDE_AG_GRID_LICENSE_KEY__%))" +ENSO_IDE_API_URL = "((%__ENSO_IDE_API_URL__%))" +ENSO_IDE_CHAT_URL = "((%__ENSO_IDE_CHAT_URL__%))" +ENSO_IDE_CLOUD_BUILD = "((%__ENSO_IDE_CLOUD_BUILD__%))" +ENSO_IDE_COGNITO_DOMAIN = "((%__ENSO_IDE_COGNITO_DOMAIN__%))" +ENSO_IDE_COGNITO_REGION = "((%__ENSO_IDE_COGNITO_REGION__%))" +ENSO_IDE_COGNITO_USER_POOL_ID = "((%__ENSO_IDE_COGNITO_USER_POOL_ID__%))" +ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID = "((%__ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID__%))" +ENSO_IDE_COMMIT_HASH = "((%__ENSO_IDE_COMMIT_HASH__%))" +ENSO_IDE_ENVIRONMENT = "((%__ENSO_IDE_ENVIRONMENT__%))" +ENSO_IDE_GOOGLE_ANALYTICS_TAG = "((%__ENSO_IDE_GOOGLE_ANALYTICS_TAG__%))" +ENSO_IDE_HOST = "((%__ENSO_IDE_HOST__%))" +ENSO_IDE_MAPBOX_API_TOKEN = "((%__ENSO_IDE_MAPBOX_API_TOKEN__%))" +ENSO_IDE_SENTRY_DSN = "((%__ENSO_IDE_SENTRY_DSN__%))" +ENSO_IDE_STRIPE_KEY = "((%__ENSO_IDE_STRIPE_KEY__%))" +ENSO_IDE_AUTH_ENDPOINT = "((%__ENSO_IDE_AUTH_ENDPOINT__%))" +ENSO_IDE_VERSION = "((%__ENSO_IDE_VERSION__%))" diff --git a/app/gui/.env.testing b/app/gui/.env.testing new file mode 100644 index 000000000000..8ff2ce185c06 --- /dev/null +++ b/app/gui/.env.testing @@ -0,0 +1,12 @@ +ENSO_IDE_API_URL=https://mock +ENSO_IDE_SENTRY_DSN=https://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@o0000000000000000.ingest.sentry.io/0000000000000000 +ENSO_IDE_STRIPE_KEY= +ENSO_IDE_AUTH_ENDPOINT= +ENSO_IDE_CHAT_URL= +ENSO_IDE_COGNITO_USER_POOL_ID= +ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID= +ENSO_IDE_COGNITO_DOMAIN= +ENSO_IDE_COGNITO_REGION= +ENSO_IDE_VERSION=0.0.1-testing +ENSO_IDE_COMMIT_HASH=abcdef0 +ENSO_IDE_CLOUD_BUILD=true diff --git a/app/gui/.gitignore b/app/gui/.gitignore index a05ebb778efa..765af303a0ba 100644 --- a/app/gui/.gitignore +++ b/app/gui/.gitignore @@ -28,6 +28,10 @@ playwright-report/ blob-report/ playwright/ +src/project-view/util/iconMetadata +src/project-view/stores/visualization/metadata.json + +# Files that used to be generated recently, but no longer are src/project-view/util/iconList.json src/project-view/util/iconName.ts diff --git a/app/gui/BUILD.bazel b/app/gui/BUILD.bazel new file mode 100644 index 000000000000..1ad94b8b6cb1 --- /dev/null +++ b/app/gui/BUILD.bazel @@ -0,0 +1,146 @@ +load("@aspect_bazel_lib//lib:write_source_files.bzl", "write_source_files") +load("@aspect_rules_js//js:defs.bzl", "js_binary", "js_run_binary") +load("@aspect_rules_ts//ts:defs.bzl", "ts_config") +load("@env//:defs.bzl", "getenv") +load("@npm//:defs.bzl", "npm_link_all_packages", "npm_link_targets") +load("@npm//app/gui:vite/package_json.bzl", vite_bin = "bin") + +npm_link_all_packages(name = "node_modules") + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = ["//:tsconfig"], +) + +ts_config( + name = "tsconfig_node", + src = "tsconfig.node.json", + deps = [":tsconfig"], +) + +ts_config( + name = "tsconfig_app", + src = "tsconfig.app.json", + deps = [":tsconfig"], +) + +ts_config( + name = "tsconfig_scripts", + src = "tsconfig.scripts.json", +) + +ts_config( + name = "tsconfig_app_vitest", + src = "tsconfig.app.vitest.json", + deps = [":tsconfig_app"], +) + +ICON_GENERATED_DIR = "src/project-view/util/iconMetadata" + +SRCS = [ + "//:tsconfig", + ":tsconfig", + ":tsconfig_app", + ":tsconfig_node", + ":tsconfig_app_vitest", + ":tsconfig_scripts", + ":icon_metadata", + "vite.config.ts", + "tailwind.config.ts", + "package.json", + "index.html", +] + glob( + [ + "src/**", + "public/**", + "project-manager-shim-middleware/**", + ], + [ICON_GENERATED_DIR + "/**"], +) + npm_link_targets() + +ENV_FILES = glob([".env*"]) + +vite_bin.vite( + name = "dist", + srcs = SRCS + ENV_FILES, + args = [ + "build", + "--mode=production", + ], + chdir = package_name(), + env = { + "NODE_ENV": getenv("NODE_ENV"), + }, + out_dirs = ["dist"], +) + +vite_bin.vite_binary( + name = "vite_preview", + args = ["preview", "--outDir", "../../$(rootpath :dist)"], + chdir = package_name(), + data = [ + "vite.config.ts", + ":dist", + ], +) + +vite_bin.vite_binary( + name = "dev_server", + chdir = package_name(), + data = SRCS, + # Under ibazel, let vite hot-reload changed files rather than restart it + tags = ["ibazel_notify_changes"], +) + +js_binary( + name = "script_generate_icon_metadata", + entry_point = "scripts/generateIconMetadata.mjs", +) + +js_run_binary( + name = "icon_metadata", + srcs = ["src/project-view/assets/icons.svg"], + chdir = package_name(), + out_dirs = [ICON_GENERATED_DIR], + tool = ":script_generate_icon_metadata", + visibility = ["//visibility:public"], +) + +# TODO: Maybe make env replacement a separate post-build step, TBD. +# js_binary( +# name = "script_env_replacer", +# entry_point = "scripts/envReplacer.mjs", +# ) + +# js_run_binary( +# name = "dist", +# srcs = [ +# "node_modules/dotenv", +# ":build", +# ] + glob([".env*"]), +# args = [ +# "$(rootpath :build)", +# package_name() + "/env_replaced", +# package_name(), +# ], +# env = { +# "NODE_ENV": getenv("NODE_ENV"), +# }, +# out_dirs = ["env_replaced"], +# tool = ":script_env_replacer", +# visibility = ["//visibility:public"], +# ) + +# Convenience rule to output built artifacts to the filesystem, so JS tooling can see them. +# Important! Make sure the output of this rule is NOT used during the build process, which +# is currently ensured by ICON_GENERATED_DIR definition being used as an glob exclusion +# in `SRC` definition. +write_source_files( + name = "write_icon_metadata", + files = { + ICON_GENERATED_DIR: ":icon_metadata", + }, + suggested_update_target = "//:write_all", + visibility = ["//visibility:public"], +) diff --git a/app/gui/env.d.ts b/app/gui/env.d.ts index 01bee4b4999f..9dfeb5ffa61f 100644 --- a/app/gui/env.d.ts +++ b/app/gui/env.d.ts @@ -5,9 +5,7 @@ */ /// import type * as saveAccessToken from 'enso-common/src/accessToken' - -// prettier-ignore -import * as buildJson from '../../build.json' with { type: 'json' }; +import type { $Config } from './src/config' // ============= // === Types === @@ -164,8 +162,8 @@ interface VersionInfo { // JSDocs here are intentionally empty as these interfaces originate from elsewhere. declare global { - // Documentation is already inherited. - /** */ + const $config: $Config + interface Window { readonly backendApi?: BackendApi readonly authenticationApi: AuthenticationApi @@ -193,77 +191,6 @@ declare global { readonly overrideFeatureFlags: Partial } - namespace NodeJS { - /** Environment variables. */ - - interface ProcessEnv { - readonly [key: string]: never - - // This is declared in `@types/node`. It MUST be re-declared here to suppress the error - // about this property conflicting with the index signature above. - // MUST NOT be `readonly`, or else `@types/node` will error. - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - TZ?: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly CI?: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly PROD?: string - - // === Cloud environment variables === - - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_REDIRECT?: string - // When unset, the `.env` loader tries to load `.env` rather than `..env`. - // Set to the empty string to load `.env`. - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_ENVIRONMENT: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_API_URL?: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_CHAT_URL?: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_SENTRY_DSN?: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_STRIPE_KEY?: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_AUTH_ENDPOINT: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_COGNITO_USER_POOL_ID: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_COGNITO_DOMAIN: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_COGNITO_REGION: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_GOOGLE_ANALYTICS_TAG?: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_DASHBOARD_COMMIT_HASH?: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ENSO_CLOUD_ENSO_HOST?: string - - // === Integration test variables === - readonly PWDEBUG?: '1' - readonly IS_IN_PLAYWRIGHT_TEST?: `${boolean}` - - // === Electron watch script variables === - - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly ELECTRON_DEV_MODE?: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly GUI_CONFIG_PATH?: string - // @ts-expect-error The index signature is intentional to disallow unknown env vars. - readonly NODE_MODULES_PATH?: string - } - } - - // These are used in other files (because they're globals) - const BUILD_INFO: buildJson.BuildInfo - const PROJECT_MANAGER_IN_BUNDLE_PATH: StringConstructor - const PROJECT_MANAGER_URL: string | undefined - const YDOC_SERVER_URL: string | undefined - const IS_CLOUD_BUILD: boolean - interface Document { caretPositionFromPoint(x: number, y: number): { offsetNode: Node; offset: number } | null } diff --git a/app/gui/index.html b/app/gui/index.html index 2fd49ff74630..d9db8d476dbc 100644 --- a/app/gui/index.html +++ b/app/gui/index.html @@ -38,22 +38,17 @@ user-scalable = no" /> Enso %ENSO_IDE_VERSION% - - +
+ + + diff --git a/app/gui/integration-test/dashboard/actions/index.ts b/app/gui/integration-test/dashboard/actions/index.ts index a83e3e37fad2..cbcd73b865f6 100644 --- a/app/gui/integration-test/dashboard/actions/index.ts +++ b/app/gui/integration-test/dashboard/actions/index.ts @@ -3,6 +3,7 @@ import { TEXTS, getText as baseGetText, type Replacements, type TextId } from 'enso-common/src/text' import path from 'node:path' +import url from 'node:url' import { expect, test, type Page } from '@playwright/test' @@ -32,7 +33,7 @@ export const getText = (key: TextId, ...replacements: Replacements[TextId]) => { /** Get the path to the auth file. */ export function getAuthFilePath() { - const __dirname = path.dirname(new URL(import.meta.url).pathname) + const __dirname = path.dirname(url.fileURLToPath(import.meta.url)) return path.join(__dirname, '../../../playwright/.auth/user.json') } diff --git a/app/gui/package.json b/app/gui/package.json index d66afd5df297..390bf9df0915 100644 --- a/app/gui/package.json +++ b/app/gui/package.json @@ -35,8 +35,6 @@ "test-dev:unit": "vitest", "test-dev:integration": "cross-env NODE_ENV=production playwright test --ui", "test-dev-dashboard:integration": "cross-env NODE_ENV=production playwright test ./integration-test/dashboard/ --ui", - "preinstall": "corepack pnpm run generate-metadata", - "generate-metadata": "node scripts/generateIconMetadata.js", "storybook:react": "cross-env FRAMEWORK=react storybook dev", "storybook:vue": "cross-env FRAMEWORK=vue storybook dev", "build-storybook:react": "cross-env FRAMEWORK=react storybook build", @@ -53,6 +51,16 @@ "@ag-grid-enterprise/range-selection": "^32.3.3", "@aws-amplify/auth": "5.6.5", "@aws-amplify/core": "5.8.5", + "@babel/parser": "^7.24.7", + "@codemirror/commands": "^6.7.1", + "@codemirror/language": "^6.10.6", + "@codemirror/lang-markdown": "^v6.3.0", + "@codemirror/lint": "^6.8.4", + "@codemirror/search": "^6.5.8", + "@codemirror/state": "^6.5.0", + "@codemirror/view": "^6.35.3", + "@fast-check/vitest": "^0.0.8", + "@floating-ui/vue": "^1.0.6", "@hookform/resolvers": "^3.4.0", "@internationalized/date": "^3.5.5", "@lexical/html": "^0.21.0", @@ -80,6 +88,7 @@ "clsx": "^2.1.1", "codemirror": "^6.0.1", "culori": "^3.2.0", + "dotenv": "^16.4.7", "enso-common": "workspace:*", "events": "^3.3.0", "framer-motion": "11.3.0", @@ -110,22 +119,12 @@ "react-router-dom": "^6.23.1", "react-stately": "^3.32.2", "react-toastify": "^9.1.3", + "sucrase": "^3.34.0", "tailwind-merge": "^2.3.0", "tailwind-variants": "0.2.1", "tiny-invariant": "^1.3.3", "ts-results": "^3.3.0", "validator": "^13.12.0", - "@babel/parser": "^7.24.7", - "@codemirror/commands": "^6.7.1", - "@codemirror/language": "^6.10.6", - "@codemirror/lang-markdown": "^v6.3.0", - "@codemirror/lint": "^6.8.4", - "@codemirror/search": "^6.5.8", - "@codemirror/state": "^6.5.0", - "@codemirror/view": "^6.35.3", - "@fast-check/vitest": "^0.0.8", - "@floating-ui/vue": "^1.0.6", - "sucrase": "^3.34.0", "veaury": "^2.3.18", "vue": "^3.5.2", "vue-component-type-helpers": "^2.0.29", @@ -135,7 +134,7 @@ "ydoc-shared": "workspace:*", "yjs": "^13.6.7", "zod": "^3.23.8", - "zustand": "^4.5.4" + "zustand": "^5.0.0" }, "devDependencies": { "@babel/plugin-syntax-import-attributes": "^7.24.7", @@ -188,7 +187,6 @@ "cross-env": "^7.0.3", "css.escape": "^1.5.1", "d3": "^7.4.0", - "enso-common": "workspace:*", "fast-check": "^3.15.0", "floating-vue": "^2.0.0-beta.24", "hash-wasm": "^4.11.0", diff --git a/app/gui/playwright.config.ts b/app/gui/playwright.config.ts index 9bf71c4c9949..ed3f7593831e 100644 --- a/app/gui/playwright.config.ts +++ b/app/gui/playwright.config.ts @@ -7,23 +7,20 @@ * default fonts. */ import { defineConfig } from '@playwright/test' -import net from 'net' -import path from 'path' +import net from 'node:net' +import path from 'node:path' +import url from 'node:url' const DEBUG = process.env.DEBUG_TEST === 'true' const isCI = process.env.CI === 'true' -const isProd = process.env.PROD === 'true' -const TIMEOUT_MS = - DEBUG ? 100_000_000 - : isCI ? 25_000 - : 15_000 +const TIMEOUT_MS = DEBUG ? 100_000_000 : 25_000 // We tend to use less CPU on CI to reduce the number of failures due to timeouts. // Instead of using workers on CI, we use shards to run tests in parallel. const WORKERS = isCI ? 2 : '35%' -const dirName = path.dirname(new URL(import.meta.url).pathname) +const dirName = path.dirname(url.fileURLToPath(import.meta.url)) async function findFreePortInRange(min: number, max: number) { for (let i = 0; i < 50; i++) { @@ -153,11 +150,11 @@ export default defineConfig({ ], webServer: [ { - env: { INTEGRATION_TEST: 'true' }, - command: - isCI || isProd ? - `corepack pnpm build && corepack pnpm exec vite preview --port ${ports.projectView} --strictPort` - : `corepack pnpm exec vite dev --port ${ports.projectView}`, + env: { + INTEGRATION_TEST: 'true', + ENSO_IDE_PROJECT_MANAGER_URL: 'ws://__HOSTNAME__:30536', + }, + command: `corepack pnpm build && corepack pnpm exec vite preview --port ${ports.projectView} --strictPort`, // Build from scratch apparently can take a while on CI machines. timeout: 240 * 1000, port: ports.projectView, @@ -165,10 +162,7 @@ export default defineConfig({ reuseExistingServer: false, }, { - command: - isCI || isProd ? - `corepack pnpm exec vite -c vite.test.config.ts build && vite -c vite.test.config.ts preview --port ${ports.dashboard} --strictPort` - : `corepack pnpm exec vite -c vite.test.config.ts --port ${ports.dashboard}`, + command: `corepack pnpm exec vite -c vite.test.config.ts build && vite -c vite.test.config.ts preview --port ${ports.dashboard} --strictPort`, timeout: 240 * 1000, port: ports.dashboard, reuseExistingServer: false, diff --git a/app/gui/project-manager-shim-middleware/index.ts b/app/gui/project-manager-shim-middleware/index.ts index 5d1c874fc5fd..75a1eeb79791 100644 --- a/app/gui/project-manager-shim-middleware/index.ts +++ b/app/gui/project-manager-shim-middleware/index.ts @@ -10,7 +10,7 @@ import * as path from 'node:path' import * as tar from 'tar' import * as yaml from 'yaml' -import * as common from 'enso-common' +import { COOP_COEP_CORP_HEADERS } from 'enso-common' import GLOBAL_CONFIG from 'enso-common/src/config.json' with { type: 'json' } import * as projectManagement from './projectManagement' @@ -139,7 +139,7 @@ export default function projectManagerShimMiddleware( const directory = url.searchParams.get('directory') ?? PROJECTS_ROOT_DIRECTORY if (fileName == null) { response - .writeHead(HTTP_STATUS_BAD_REQUEST, common.COOP_COEP_CORP_HEADERS) + .writeHead(HTTP_STATUS_BAD_REQUEST, COOP_COEP_CORP_HEADERS) .end('Request is missing search parameter `file_name`.') } else { const filePath = path.join(directory, fileName) @@ -150,13 +150,13 @@ export default function projectManagerShimMiddleware( .writeHead(HTTP_STATUS_OK, [ ['Content-Length', String(filePath.length)], ['Content-Type', 'text/plain'], - ...common.COOP_COEP_CORP_HEADERS, + ...COOP_COEP_CORP_HEADERS, ]) .end(filePath) }) .catch((e) => { console.error(e) - response.writeHead(HTTP_STATUS_BAD_REQUEST, common.COOP_COEP_CORP_HEADERS).end() + response.writeHead(HTTP_STATUS_BAD_REQUEST, COOP_COEP_CORP_HEADERS).end() }) } break @@ -175,12 +175,12 @@ export default function projectManagerShimMiddleware( .writeHead(HTTP_STATUS_OK, [ ['Content-Length', String(id.length)], ['Content-Type', 'text/plain'], - ...common.COOP_COEP_CORP_HEADERS, + ...COOP_COEP_CORP_HEADERS, ]) .end(id) }) .catch(() => { - response.writeHead(HTTP_STATUS_BAD_REQUEST, common.COOP_COEP_CORP_HEADERS).end() + response.writeHead(HTTP_STATUS_BAD_REQUEST, COOP_COEP_CORP_HEADERS).end() }) break } @@ -193,7 +193,7 @@ export default function projectManagerShimMiddleware( !cliArguments.every((item): item is string => typeof item === 'string') ) { response - .writeHead(HTTP_STATUS_BAD_REQUEST, common.COOP_COEP_CORP_HEADERS) + .writeHead(HTTP_STATUS_BAD_REQUEST, COOP_COEP_CORP_HEADERS) .end('Command arguments must be an array of strings.') } else { void (async () => { @@ -338,7 +338,7 @@ export default function projectManagerShimMiddleware( .writeHead(HTTP_STATUS_OK, [ ['Content-Length', String(buffer.byteLength)], ['Content-Type', 'application/json'], - ...common.COOP_COEP_CORP_HEADERS, + ...COOP_COEP_CORP_HEADERS, ]) .end(buffer) })() @@ -372,7 +372,7 @@ export default function projectManagerShimMiddleware( ) { response.writeHead(HTTP_STATUS_OK, [ ['Content-Type', 'application/gzip+x-enso-project'], - ...common.COOP_COEP_CORP_HEADERS, + ...COOP_COEP_CORP_HEADERS, ]) tar .create({ gzip: true, cwd: projectRoot }, [projectRoot]) @@ -386,12 +386,12 @@ export default function projectManagerShimMiddleware( } } if (!success) { - response.writeHead(HTTP_STATUS_NOT_FOUND, common.COOP_COEP_CORP_HEADERS).end() + response.writeHead(HTTP_STATUS_NOT_FOUND, COOP_COEP_CORP_HEADERS).end() } }) break } - response.writeHead(HTTP_STATUS_NOT_FOUND, common.COOP_COEP_CORP_HEADERS).end() + response.writeHead(HTTP_STATUS_NOT_FOUND, COOP_COEP_CORP_HEADERS).end() break } } @@ -400,7 +400,7 @@ export default function projectManagerShimMiddleware( .writeHead(HTTP_STATUS_OK, [ ['Content-Length', String(PROJECTS_ROOT_DIRECTORY.length)], ['Content-Type', 'text/plain'], - ...common.COOP_COEP_CORP_HEADERS, + ...COOP_COEP_CORP_HEADERS, ]) .end(PROJECTS_ROOT_DIRECTORY) } else { diff --git a/app/gui/scripts/envReplacer.mjs b/app/gui/scripts/envReplacer.mjs new file mode 100644 index 000000000000..840867112863 --- /dev/null +++ b/app/gui/scripts/envReplacer.mjs @@ -0,0 +1,248 @@ +/** + * @file A bundle post-processing script used by bazel's `dist` target. + * + * In order to aid cache usage and ensure that the testing and production bundles are as + * similar as possible, we use a stand-in placeholder environment variables during `vite` + * evaluation. Afterwards, this script is used to replace those placeholders in compiled + * assets, so that the appropriate environment configuration can be applied without any + * source code changes. + * + * This script explicitly only replaces the placeholders inside the built "config" file. + * Any placeholders present in other artifacts will intentionally cause a build error. + */ + +/* eslint-disable jsdoc/check-tag-names */ + +import * as dotenv from 'dotenv' +import Buffer from 'node:buffer' +import { createHash } from 'node:crypto' +import * as fs from 'node:fs/promises' +import * as path from 'node:path/posix' +import * as process from 'node:process' + +/** + * + * @param {string} mode current environment mode + * @param {string} envDir directory with dotenv file + * @returns {string[]} list of dotenv file names + */ +function getEnvFilesForMode(mode, envDir) { + return [ + /** default file */ `.env`, + /** local file */ `.env.local`, + /** mode file */ `.env.${mode}`, + /** mode local file */ `.env.${mode}.local`, + ].map((file) => path.normalize(path.join(envDir, file))) +} + +if ( + process.argv.length !== 5 || + process.argv[2] == null || + process.argv[3] == null || + process.argv[4] == null +) + throw new Error( + `Invalid arguments.\nusage:\n ${process.argv[0]} ${process.argv[1]} `, + ) +const inputDirectory = process.argv[2] +const outputDirectory = process.argv[3] +const dotenvDirectory = process.argv[4] + +dotenv.config() + +const envFiles = getEnvFilesForMode(process.env.NODE_ENV ?? 'development', dotenvDirectory) +const envs = await Promise.all( + envFiles.map(async (filename) => { + try { + const envContents = await fs.readFile(filename, 'utf-8') + /** + * @type {Record} + */ + const parsed = dotenv.parse(envContents) + return parsed + } catch { + return {} + } + }), +) + +const combinedEnvs = Object.assign({}, ...envs) + +/** + * Map of calls mkdir performed so far, to avoid calling it twice on the same path. + * @type {Map>} + */ +const mkdirPromises = new Map() + +/** + * All path renames performed so far, mapping old to new relative project paths. + * @type {Map} + */ +const fileRenames = new Map() + +/** + * Errors found during processing. This process exists with error status when this array is non-empty. + * @type {Error[]} + */ +const errors = [] + +async function processAllFiles() { + const allFiles = await fs.readdir(inputDirectory, { recursive: true, withFileTypes: true }) + + /** + * Thunks of tasks deferred to be completed after visiting all files. + * @type {Array<() => Promise>} + */ + const deferredThunks = [] + await Promise.all( + allFiles.map(async (file) => { + if (!file.isFile() && !file.isSymbolicLink()) return + // On windows we get '\\' separated paths from `fs` APIs, but the `path/posix` module is + // always assuming '/' separator, therefore we have to normalize that. + const inputPath = path.join(file.path.replace(/\\/g, '/'), file.name) + const projectPath = path.relative(inputDirectory, inputPath) + if (/config-[0-9a-zA-Z]+\.js$/.test(projectPath)) await processReplacements(projectPath) + else if (projectPath === 'index.html') deferredThunks.push(() => processIndex(projectPath)) + else { + var contents = await readOriginalFile(projectPath) + reportUnexpectedPatterns(contents, projectPath) + await writeProjectFile(projectPath, contents) + } + }), + ) + + await Promise.all(deferredThunks.map((thunk) => thunk())) +} + +const patternRegex = /\(\(%__(.*?)__%\)\)/g + +/** + * @param {string} projectPath File path relative to input directory + */ +async function processReplacements(projectPath) { + const originalContent = (await readOriginalFile(projectPath)).toString() + const newContent = applyReplacements(originalContent, projectPath) + await writeProjectFile(await updateHashInFilename(projectPath, newContent), newContent) +} + +/** + * @param {string} content File content to apply replacements to. + * @param {string} projectPath File path relative to input directory, used for error reporting only. + */ +function applyReplacements(content, projectPath) { + return content.replace(patternRegex, (pattern, envName) => { + const envValue = process.env[pattern] + if ( + Object.prototype.hasOwnProperty.call(process.env, envName) && + typeof envValue === 'string' + ) { + return envValue + } + const envFileValue = combinedEnvs[envName] + if ( + Object.prototype.hasOwnProperty.call(combinedEnvs, envName) && + typeof envFileValue === 'string' + ) { + return envFileValue + } else { + errors.push( + new Error( + `Missing environment variable for replacemnet pattern ${pattern} in file ${projectPath}`, + ), + ) + return pattern + } + }) +} + +/** + * @param {Buffer} fileContents Contents to inspect for patterns. + * @param {string} projectPath File path relative to input directory, used for error reporting. + */ +async function reportUnexpectedPatterns(fileContents, projectPath) { + console.log(projectPath, Buffer.isUtf8(fileContents)) + if (Buffer.isUtf8(fileContents)) { + for (const match of fileContents.toString().matchAll(patternRegex)) { + errors.push(new Error(`Found unexpected pattern ${match} in file "${projectPath}"`)) + } + } +} + +/** + * Process index file and update the file paths for modified chunks. + * @param {string} projectPath File path relative to input directory + */ +async function processIndex(projectPath) { + const originalContent = (await readOriginalFile(projectPath)).toString() + // Produced index file can reference ENV variables, therefore we need to + // apply replacements on it as well. + const afterReplaces = applyReplacements(originalContent, projectPath) + // Only attempt to replace simple project-relative paths. + const newContent = afterReplaces.replace( + /((?:src|href)="\/)([0-9a-zA-Z/.-]+)(")/g, + (_, prefix, path, postfix) => { + const newPath = fileRenames.get(path) ?? path + if (path != newPath) console.error('Rename in index:', '/' + path, '->', '/' + newPath) + return prefix + newPath + postfix + }, + ) + await writeProjectFile(projectPath, newContent) +} + +/** + * @param {string} projectPath File path relative to input directory + */ +function readOriginalFile(projectPath) { + return fs.readFile(path.join(inputDirectory, projectPath), { encoding: null }) +} + +/** + * Writes given project file to the output directory. + * @param {string} projectPath File path relative to input directory + * @param {string | Buffer} fileContents What to write to the new file. + */ +async function writeProjectFile(projectPath, fileContents) { + const outputPath = path.join(outputDirectory, projectPath) + const outputDir = path.dirname(outputPath) + let mkdirPromise = mkdirPromises.get(outputDir) + if (mkdirPromise == null) { + mkdirPromise = fs.mkdir(outputDir, { recursive: true }) + mkdirPromises.set(outputDir, mkdirPromise) + } + await mkdirPromise + await fs.writeFile(outputPath, fileContents) +} +/** + * Recompute file's content hash in case it is present in original filename. + * Note that this always uses sha256, which may disagree with hasher used during bundle building, + * therefore calling this function is likely to update the filename even for unchagned files. + * @param {string} projectPath File path relative to input directory + * @param {string | Buffer} fileContents Content from which the file hash is computed. + */ +async function updateHashInFilename(projectPath, fileContents) { + const fixedPath = projectPath.replace(/-([0-9a-zA-Z]+).([a-z]+)$/, (_, oldHash, ext) => { + const contentHash = createHash('sha256') + .update(fileContents) + .digest() + .toString('base64url') + .substring(0, oldHash.length) + return `-${contentHash}.${ext}` + }) + if (projectPath != fixedPath) fileRenames.set(projectPath, fixedPath) + return fixedPath +} + +await processAllFiles() + +if (errors.length > 0) { + console.error('==========================') + console.error( + `Found ${errors.length} error${errors.length > 1 ? 's' : ''} during bundle postprocessing:`, + ) + console.error('') + for (const error of errors) { + console.error(error) + console.error('') + } + process.exit(1) +} diff --git a/app/gui/scripts/generateIconMetadata.js b/app/gui/scripts/generateIconMetadata.js deleted file mode 100644 index 377f1e6743c8..000000000000 --- a/app/gui/scripts/generateIconMetadata.js +++ /dev/null @@ -1,35 +0,0 @@ -import * as fs from 'node:fs/promises' - -console.info('Reading icons from "./src/project-view/assets/icons.svg"...') -const icons = await fs.readFile('./src/project-view/assets/icons.svg', { encoding: 'utf-8' }) -const iconNames = icons.match(/(?<= ` | '${name}'`).join('\n')} - -export { iconNames } - -const iconNamesSet = new Set(iconNames) - -/** Check if string is one of the valid icon names for SvgIcon. */ -export function isIconName(value: string): value is Icon { - return iconNamesSet.has(value) -} -`, -) -console.info('Done.') diff --git a/app/gui/scripts/generateIconMetadata.mjs b/app/gui/scripts/generateIconMetadata.mjs new file mode 100644 index 000000000000..242b2c76f8fd --- /dev/null +++ b/app/gui/scripts/generateIconMetadata.mjs @@ -0,0 +1,32 @@ +import * as fs from 'node:fs/promises' + +console.info('Reading icons from "./src/project-view/assets/icons.svg"...') +const icons = await fs.readFile('./src/project-view/assets/icons.svg', { encoding: 'utf-8' }) +const iconNames = icons.match(/(?<= ` '${name}',`).join('\n')} +] as const + +export type Icon = (typeof iconNames)[number] + +const iconNamesSet = new Set(iconNames) + +/** Check if string is one of the valid icon names for SvgIcon. */ +export function isIconName(value: string): value is Icon { + return iconNamesSet.has(value) +} +`, +) +console.info('Done.') diff --git a/app/gui/src/config.ts b/app/gui/src/config.ts new file mode 100644 index 000000000000..b63bcc632667 --- /dev/null +++ b/app/gui/src/config.ts @@ -0,0 +1,43 @@ +/** + * @file This file defines a global environemnt config that can be used throughout the app. + * It is included directly into index.html and kept as a separate built artifact, so that + * we can easily replace its contents in a separate build postprocessing step in `BUILD.bazel`. + */ + +/** + * When running dev server, the config variables are grabbed from appropriate .env file. + */ +const $config = { + ENVIRONMENT: import.meta.env.ENSO_IDE_ENVIRONMENT, + ENSO_HOST: import.meta.env.ENSO_IDE_HOST, + API_URL: import.meta.env.ENSO_IDE_API_URL, + SENTRY_DSN: import.meta.env.ENSO_IDE_SENTRY_DSN, + STRIPE_KEY: import.meta.env.ENSO_IDE_STRIPE_KEY, + AUTH_ENDPOINT: import.meta.env.ENSO_IDE_AUTH_ENDPOINT, + CHAT_URL: import.meta.env.ENSO_IDE_CHAT_URL, + COGNITO_USER_POOL_ID: import.meta.env.ENSO_IDE_COGNITO_USER_POOL_ID, + COGNITO_USER_POOL_WEB_CLIENT_ID: import.meta.env.ENSO_IDE_COGNITO_USER_POOL_WEB_CLIENT_ID, + GOOGLE_ANALYTICS_TAG: import.meta.env.ENSO_IDE_GOOGLE_ANALYTICS_TAG, + COGNITO_DOMAIN: import.meta.env.ENSO_IDE_COGNITO_DOMAIN, + COGNITO_REGION: import.meta.env.ENSO_IDE_COGNITO_REGION, + VERSION: import.meta.env.ENSO_IDE_VERSION, + COMMIT_HASH: import.meta.env.ENSO_IDE_COMMIT_HASH, + PROJECT_MANAGER_URL: import.meta.env.ENSO_IDE_PROJECT_MANAGER_URL, + YDOC_SERVER_URL: import.meta.env.ENSO_IDE_YDOC_SERVER_URL, + CLOUD_BUILD: import.meta.env.ENSO_IDE_CLOUD_BUILD, + AG_GRID_LICENSE_KEY: import.meta.env.ENSO_IDE_AG_GRID_LICENSE_KEY, + MAPBOX_API_TOKEN: import.meta.env.ENSO_IDE_MAPBOX_API_TOKEN || window.mapBoxApiToken?.(), +} as const + +// Undefined env variables are typed as `any`, but we want them to be `string | undefined`. +export type $Config = { + [K in keyof typeof $config]: unknown extends (typeof $config)[K] ? string | undefined + : (typeof $config)[K] +} + +Object.defineProperty(window, '$config', { + writable: false, + configurable: false, + enumerable: false, + value: $config, +}) diff --git a/app/gui/src/dashboard/authentication/service.ts b/app/gui/src/dashboard/authentication/service.ts index 806328a2395a..0394eb6bc8a7 100644 --- a/app/gui/src/dashboard/authentication/service.ts +++ b/app/gui/src/dashboard/authentication/service.ts @@ -33,7 +33,7 @@ import * as listen from '#/authentication/listen' */ export interface AmplifyConfig { readonly region: string - readonly endpoint: string + readonly endpoint: string | undefined readonly userPoolId: string readonly userPoolWebClientId: string readonly urlOpener: ((url: string, redirectUrl: string) => void) | null @@ -67,7 +67,7 @@ interface OauthAmplifyConfig { /** Same as {@link AmplifyConfig}, but in a format recognized by the AWS Amplify library. */ export interface NestedAmplifyConfig { readonly region: string - readonly endpoint: string + readonly endpoint: string | undefined readonly userPoolId: string readonly userPoolWebClientId: string readonly oauth: OauthAmplifyConfig @@ -82,7 +82,9 @@ export interface NestedAmplifyConfig { export function toNestedAmplifyConfig(config: AmplifyConfig): NestedAmplifyConfig { return { region: config.region, - endpoint: config.endpoint, + // endpoint: config.endpoint, + // TODO: Use the endpoint when it is working. + endpoint: undefined, userPoolId: config.userPoolId, userPoolWebClientId: config.userPoolWebClientId, oauth: { @@ -181,16 +183,15 @@ function loadAmplifyConfig( setDeepLinkHandler(logger, navigate) } - const redirectUrl = process.env.ENSO_CLOUD_REDIRECT ?? window.location.origin - /** Load the platform-specific Amplify configuration. */ - const signInOutRedirect = supportsDeepLinks ? `${common.DEEP_LINK_SCHEME}://auth` : redirectUrl + const signInOutRedirect = + supportsDeepLinks ? `${common.DEEP_LINK_SCHEME}://auth` : window.location.origin return { - endpoint: process.env.ENSO_CLOUD_AUTH_ENDPOINT, - userPoolId: process.env.ENSO_CLOUD_COGNITO_USER_POOL_ID, - userPoolWebClientId: process.env.ENSO_CLOUD_COGNITO_USER_POOL_WEB_CLIENT_ID, - domain: process.env.ENSO_CLOUD_COGNITO_DOMAIN, - region: process.env.ENSO_CLOUD_COGNITO_REGION, + endpoint: $config.AUTH_ENDPOINT, + userPoolId: $config.COGNITO_USER_POOL_ID ?? '', + userPoolWebClientId: $config.COGNITO_USER_POOL_WEB_CLIENT_ID ?? '', + domain: $config.COGNITO_DOMAIN ?? '', + region: $config.COGNITO_REGION ?? '', redirectSignIn: signInOutRedirect, redirectSignOut: signInOutRedirect, scope: ['email', 'openid', 'aws.cognito.signin.user.admin'], diff --git a/app/gui/src/dashboard/components/AriaComponents/Checkbox/Checkbox.tsx b/app/gui/src/dashboard/components/AriaComponents/Checkbox/Checkbox.tsx index 0ca7c11234c6..900ab242e199 100644 --- a/app/gui/src/dashboard/components/AriaComponents/Checkbox/Checkbox.tsx +++ b/app/gui/src/dashboard/components/AriaComponents/Checkbox/Checkbox.tsx @@ -9,6 +9,7 @@ import { mergeRefs, useMergedRef } from '#/utilities/mergeRefs' import { forwardRef } from '#/utilities/react' import type { VariantProps } from '#/utilities/tailwindVariants' import { tv } from '#/utilities/tailwindVariants' +import { useStore } from '#/utilities/zustand' import type { Variants } from 'framer-motion' import { motion } from 'framer-motion' import type { @@ -19,7 +20,6 @@ import type { RefAttributes, } from 'react' import invariant from 'tiny-invariant' -import { useStore } from 'zustand' import type { FieldPath, FieldStateProps, TSchema, UseFormRegisterReturn } from '../Form' import { Form } from '../Form' import { Text } from '../Text' diff --git a/app/gui/src/dashboard/components/AriaComponents/Checkbox/CheckboxContext.tsx b/app/gui/src/dashboard/components/AriaComponents/Checkbox/CheckboxContext.tsx index 13370f584106..6d319c59abc1 100644 --- a/app/gui/src/dashboard/components/AriaComponents/Checkbox/CheckboxContext.tsx +++ b/app/gui/src/dashboard/components/AriaComponents/Checkbox/CheckboxContext.tsx @@ -1,9 +1,8 @@ /** @file */ import { useEventCallback } from '#/hooks/eventCallbackHooks' +import { type StoreApi, createStore } from '#/utilities/zustand' import type { PropsWithChildren } from 'react' import { createContext, useContext, useMemo, useState } from 'react' -import type { StoreApi } from 'zustand' -import { createStore } from 'zustand' import type { TSchema, UseFormRegisterReturn } from '../Form' /** Context for the checkbox. */ diff --git a/app/gui/src/dashboard/components/AriaComponents/Radio/Radio.tsx b/app/gui/src/dashboard/components/AriaComponents/Radio/Radio.tsx index 17d5fd28876b..3c0010f64200 100644 --- a/app/gui/src/dashboard/components/AriaComponents/Radio/Radio.tsx +++ b/app/gui/src/dashboard/components/AriaComponents/Radio/Radio.tsx @@ -66,6 +66,7 @@ export const Radio = forwardRef(function Radio( value: props.value, }) + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const { isSelected, isDisabled, isPressed, inputProps, labelProps } = aria.useRadio( aria.mergeProps()(ariaProps, { id, @@ -125,6 +126,7 @@ export const Radio = forwardRef(function Radio( return (