Remove types[node] from compilation of tsc_wrapped This is needed for compatibility with new ts_library rule impl which includes typings found in deps[] as files in the program Closes #456 PiperOrigin-RevId: 253243590
diff --git a/internal/tsc_wrapped/tsconfig.json b/internal/tsc_wrapped/tsconfig.json index d3f2772..830ed18 100644 --- a/internal/tsc_wrapped/tsconfig.json +++ b/internal/tsc_wrapped/tsconfig.json
@@ -2,7 +2,13 @@ "compilerOptions": { "strict": true, "types": [ - "node", + // Normally "node" should be listed here since we depend on it. + // However this library is built with vanilla tsc. + // Since the deps[] are passed into the ts.Program as files + // (starting with https://github.com/bazelbuild/rules_nodejs/pull/756) + // we cannot also list node as a types[] since vanilla tsc will load + // both into the program and get a conflict. + // Under tsc_wrapped this isn't a problem since we control the resolution. ], "lib": [ "dom",
diff --git a/package.bzl b/package.bzl index f31ab0c..e75064b 100644 --- a/package.bzl +++ b/package.bzl
@@ -30,6 +30,10 @@ _maybe( http_archive, name = "build_bazel_rules_nodejs", + # This file just copy-pasted from output of `git diff` + patches = ["//:rules_nodejs_pr756.patch"], + # According to docs, this is needed for patches generated by git + patch_args = ["-p1"], sha256 = "e04a82a72146bfbca2d0575947daa60fda1878c8d3a3afe868a8ec39a6b968bb", urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/0.31.1/rules_nodejs-0.31.1.tar.gz"], )
diff --git a/rules_nodejs_pr756.patch b/rules_nodejs_pr756.patch new file mode 100644 index 0000000..9db35b3 --- /dev/null +++ b/rules_nodejs_pr756.patch
@@ -0,0 +1,30 @@ +--- a/internal/npm_install/node_module_library.bzl ++++ b/internal/npm_install/node_module_library.bzl +@@ -29,14 +29,20 @@ def _node_module_library_impl(ctx): + # use in rules such as ts_devserver + scripts = depset(ctx.files.scripts) + +- # declarations are a subset of sources that are decleration files +- declarations = depset([f for f in ctx.files.srcs if f.path.endswith(".d.ts")]) ++ # declarations are a subset of sources that are declaration files ++ ++ declarations = depset([ ++ f ++ for f in ctx.files.srcs ++ if f.path.endswith(".d.ts") and ++ # exclude eg. external/npm/node_modules/protobufjs/node_modules/@types/node/index.d.ts ++ # these would be duplicates of the typings provided directly in another dependency ++ len(f.path.split("/node_modules/")) < 3 ++ ]) ++ ++ # transitive_declarations are all .d.ts files in srcs plus those in direct & transitive dependencies ++ transitive_declarations = depset(transitive = [declarations]) + +- # transitive_declarations are all direct & transitive decleration files +- transitive_declarations = depset() +- for src in ctx.attr.srcs: +- if hasattr(src, "typescript"): +- transitive_declarations = depset(transitive = [transitive_declarations, src.typescript.transitive_declarations]) + for dep in ctx.attr.deps: + if hasattr(dep, "typescript"): + transitive_declarations = depset(transitive = [transitive_declarations, dep.typescript.transitive_declarations])