load("@npm//@bazel/typescript:index.bzl", "ts_project")
load("@build_bazel_rules_nodejs//:index.bzl", "js_library")

ts_project(
    name = "flatbuffers_ts",
    srcs = [
        "builder.ts",
        "byte-buffer.ts",
        "constants.ts",
        "encoding.ts",
        "flatbuffers.ts",
        "types.ts",
        "utils.ts",
    ],
    declaration = True,
    tsconfig = {
        "compilerOptions": {
            "module": "commonjs",
            "declaration": True,
            "moduleResolution": "node",
            "lib": [
                "ES2015",
                "ES2020.BigInt",
                "DOM",
            ],
            "types": ["node"],
            "strict": True,
        },
    },
    visibility = ["//visibility:public"],
    deps = ["@npm//@types/node"],
)

js_library(
    name = "flatbuffers",
    package_name = "flatbuffers",
    visibility = ["//visibility:public"],
    deps = [":flatbuffers_ts"],
)

sh_binary(
    name = "compile_flat_file",
    srcs = ["compile_flat_file.sh"],
    data = [
        "@com_github_google_flatbuffers//:flatc",
        "@nodejs_linux_amd64//:node_bin",
        "@npm//esbuild/bin:esbuild",
    ],
    # We just depend directly on the linux amd64 nodejs binary, so only support
    # running this script on amd64 for now.
    target_compatible_with = [
        "@platforms//cpu:x86_64",
        "@platforms//os:linux",
    ],
    visibility = ["//visibility:public"],
    deps = ["@bazel_tools//tools/bash/runfiles"],
)
