###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
#     bazel run //wasm_bindgen/3rdparty:crates_vendor
###############################################################################

load(
    "@bazel_skylib//lib:selects.bzl",
    "selects",
)

# buildifier: disable=bzl-visibility
load("@rules_rust//crate_universe/private:selects.bzl", "select_with_or")
load(
    "@rules_rust//rust:defs.bzl",
    "rust_library",
)

package(default_visibility = ["//visibility:public"])

# licenses([
#     "TODO",  # MIT/Apache-2.0
# ])

rust_library(
    name = "wasm_bindgen_cli_support",
    srcs = glob(
        include = [
            "**/*.rs",
        ],
        exclude = [
        ],
    ),
    aliases = selects.with_or({
        "//conditions:default": {
        },
    }),
    compile_data = glob(
        include = ["**"],
        exclude = [
            "BUILD",
            "BUILD.bazel",
            "WORKSPACE",
            "WORKSPACE.bazel",
        ],
    ) + select_with_or({
        "//conditions:default": [
        ],
    }),
    crate_features = [
    ],
    crate_root = "src/lib.rs",
    data = select_with_or({
        "//conditions:default": [
        ],
    }),
    edition = "2018",
    proc_macro_deps = [
    ] + select_with_or({
        "//conditions:default": [
        ],
    }),
    rustc_env = {
    },
    rustc_env_files = select_with_or({
        "//conditions:default": [
        ],
    }),
    rustc_flags = [
        # In most cases, warnings in 3rd party crates are not interesting as
        # they're out of the control of consumers. The flag here silences
        # warnings. For more details see:
        # https://doc.rust-lang.org/rustc/lints/levels.html
        "--cap-lints=allow",
    ],
    tags = [
        "cargo-bazel",
        "manual",
        "noclippy",
        "norustfmt",
    ],
    version = "0.2.78",
    deps = [
    ] + select_with_or({
        "//conditions:default": [
            "@rules_rust_wasm_bindgen__anyhow-1.0.58//:anyhow",
            "@rules_rust_wasm_bindgen__base64-0.9.3//:base64",
            "@rules_rust_wasm_bindgen__log-0.4.17//:log",
            "@rules_rust_wasm_bindgen__rustc-demangle-0.1.21//:rustc_demangle",
            "@rules_rust_wasm_bindgen__serde_json-1.0.82//:serde_json",
            "@rules_rust_wasm_bindgen__tempfile-3.3.0//:tempfile",
            "@rules_rust_wasm_bindgen__walrus-0.19.0//:walrus",
            "@rules_rust_wasm_bindgen__wasm-bindgen-externref-xform-0.2.78//:wasm_bindgen_externref_xform",
            "@rules_rust_wasm_bindgen__wasm-bindgen-multi-value-xform-0.2.78//:wasm_bindgen_multi_value_xform",
            "@rules_rust_wasm_bindgen__wasm-bindgen-shared-0.2.78//:wasm_bindgen_shared",
            "@rules_rust_wasm_bindgen__wasm-bindgen-threads-xform-0.2.78//:wasm_bindgen_threads_xform",
            "@rules_rust_wasm_bindgen__wasm-bindgen-wasm-conventions-0.2.78//:wasm_bindgen_wasm_conventions",
            "@rules_rust_wasm_bindgen__wasm-bindgen-wasm-interpreter-0.2.78//:wasm_bindgen_wasm_interpreter",
            "@rules_rust_wasm_bindgen__wit-text-0.8.0//:wit_text",
            "@rules_rust_wasm_bindgen__wit-validator-0.2.1//:wit_validator",
            "@rules_rust_wasm_bindgen__wit-walrus-0.6.0//:wit_walrus",
        ],
    }),
)
