@@ -29,14 +29,19 @@ def _node_module_library_impl(ctx):
2929 # use in rules such as ts_devserver
3030 scripts = depset (ctx .files .scripts )
3131
32- # declarations are a subset of sources that are decleration files
33- declarations = depset ([f for f in ctx .files .srcs if f .path .endswith (".d.ts" )])
32+ # declarations are a subset of sources that are declaration files
33+ declarations = depset ([
34+ f
35+ for f in ctx .files .srcs
36+ if f .path .endswith (".d.ts" ) and
37+ # exclude eg. external/npm/node_modules/protobufjs/node_modules/@types/node/index.d.ts
38+ # these would be duplicates of the typings provided directly in another dependency
39+ len (f .path .split ("/node_modules/" )) < 3
40+ ])
41+
42+ # transitive_declarations are all .d.ts files in srcs plus those in direct & transitive dependencies
43+ transitive_declarations = depset (transitive = [declarations ])
3444
35- # transitive_declarations are all direct & transitive decleration files
36- transitive_declarations = depset ()
37- for src in ctx .attr .srcs :
38- if hasattr (src , "typescript" ):
39- transitive_declarations = depset (transitive = [transitive_declarations , src .typescript .transitive_declarations ])
4045 for dep in ctx .attr .deps :
4146 if hasattr (dep , "typescript" ):
4247 transitive_declarations = depset (transitive = [transitive_declarations , dep .typescript .transitive_declarations ])
0 commit comments