Files
rules_bun/internal/js_library.bzl
2026-03-04 14:38:30 +01:00

49 lines
1.4 KiB
Python

"""Lightweight JS/TS source grouping rules."""
BunSourcesInfo = provider(fields = ["transitive_sources"])
def _bun_library_impl(ctx):
transitive_sources = [
dep[BunSourcesInfo].transitive_sources
for dep in ctx.attr.deps
if BunSourcesInfo in dep
]
all_sources = depset(
direct = ctx.files.srcs,
transitive = transitive_sources,
)
return [
BunSourcesInfo(transitive_sources = all_sources),
DefaultInfo(files = all_sources),
]
js_library = rule(
implementation = _bun_library_impl,
doc = "Aggregates JavaScript sources and transitive Bun source dependencies.",
attrs = {
"srcs": attr.label_list(
allow_files = [".js", ".jsx", ".mjs", ".cjs"],
doc = "JavaScript source files in this library.",
),
"deps": attr.label_list(
doc = "Other Bun source libraries to include transitively.",
),
},
)
ts_library = rule(
implementation = _bun_library_impl,
doc = "Aggregates TypeScript sources and transitive Bun source dependencies.",
attrs = {
"srcs": attr.label_list(
allow_files = [".ts", ".tsx"],
doc = "TypeScript source files in this library.",
),
"deps": attr.label_list(
doc = "Other Bun source libraries to include transitively.",
),
},
)