flatcc 24.3.25

Build-time convenience utilities for flatbuffers
Documentation
load("@aspect_rules_js//npm:defs.bzl", "npm_package")
load("@aspect_rules_ts//ts:defs.bzl", "ts_project")

filegroup(
    name = "distribution",
    srcs = [
        "BUILD.bazel",
        "compile_flat_file.sh",
    ] + glob([
        "*.ts",
    ]),
    visibility = ["//visibility:public"],
)

# Add an index to emulate the top-level package.json's "main" entry.
genrule(
    name = "generate_index.ts",
    outs = ["index.ts"],
    cmd = """echo "export * from './flatbuffers.js'" > $(OUTS)""",
)

ts_project(
    name = "flatbuffers_ts",
    srcs = [
        "builder.ts",
        "byte-buffer.ts",
        "constants.ts",
        "encoding.ts",
        "flatbuffers.ts",
        "types.ts",
        "utils.ts",
        ":index.ts",
    ],
    declaration = True,
    tsconfig = {
        "compilerOptions": {
            "module": "commonjs",
            "declaration": True,
            "moduleResolution": "node",
            "lib": [
                "ES2015",
                "ES2020.BigInt",
                "DOM",
            ],
            "types": ["node"],
            "strict": True,
        },
    },
    visibility = ["//visibility:public"],
    deps = [
        # Because the main repository instantiates the @npm repository, we need
        # to depend on the main repository's node import.
        "@//:node_modules/@types/node",
    ],
)

npm_package(
    name = "flatbuffers",
    srcs = [":flatbuffers_ts"],
    include_external_repositories = ["*"],
    package = "flatbuffers",
    visibility = ["//visibility:public"],
)

sh_binary(
    name = "compile_flat_file",
    srcs = ["compile_flat_file.sh"],
    data = [
        "@com_github_google_flatbuffers//:flatc",
        "@nodejs_linux_amd64//:node_bin",
    ],
    # 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"],
)