From b8b8535f4010503d6bdc165191a3fd10ba80a149 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Thu, 4 Feb 2021 14:09:42 -0800 Subject: [PATCH] build: update tools directory for latest changes in rules_nodejs (#40710) Update the scripts/tooling in the tools directory to handle the changes in the latest version of rules_nodejs. PR Close #40710 --- .../compliance/partial/partial_compliance_goldens.bzl | 6 ++++++ tools/defaults.bzl | 11 +++++++---- tools/postinstall-patches.js | 7 ------- tools/size-tracking/index.ts | 2 +- tools/size-tracking/size_tracker.ts | 5 +++-- tools/symbol-extractor/index.bzl | 8 ++++++-- tools/symbol-extractor/symbol_extractor.ts | 4 ++-- tools/ts-api-guardian/index.bzl | 7 +++++-- tools/ts-api-guardian/lib/main.ts | 2 +- 9 files changed, 31 insertions(+), 21 deletions(-) diff --git a/packages/compiler-cli/test/compliance/partial/partial_compliance_goldens.bzl b/packages/compiler-cli/test/compliance/partial/partial_compliance_goldens.bzl index ea296400cd..78ba8b0d71 100644 --- a/packages/compiler-cli/test/compliance/partial/partial_compliance_goldens.bzl +++ b/packages/compiler-cli/test/compliance/partial/partial_compliance_goldens.bzl @@ -21,6 +21,9 @@ def partial_compliance_golden(filePath): entry_point = "//packages/compiler-cli/test/compliance/partial:cli.ts", templated_args = [ filePath, + # TODO(josephperrott): update dependency usages to no longer need bazel patch module resolver + # See: https://github.com/bazelbuild/rules_nodejs/wiki#--bazel_patch_module_resolver-now-defaults-to-false-2324 + "--bazel_patch_module_resolver", ], ) @@ -31,6 +34,9 @@ def partial_compliance_golden(filePath): visibility = [":__pkg__"], entry_point = "//packages/compiler-cli/test/compliance/partial:cli.ts", templated_args = [ + # TODO(josephperrott): update dependency usages to no longer need bazel patch module resolver + # See: https://github.com/bazelbuild/rules_nodejs/wiki#--bazel_patch_module_resolver-now-defaults-to-false-2324 + "--bazel_patch_module_resolver", "--node_options=--inspect-brk", filePath, ], diff --git a/tools/defaults.bzl b/tools/defaults.bzl index b6c48bf316..154e48a9b2 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -3,10 +3,10 @@ load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") load("@build_bazel_rules_nodejs//:index.bzl", _nodejs_binary = "nodejs_binary", _pkg_npm = "pkg_npm") load("@npm//@bazel/jasmine:index.bzl", _jasmine_node_test = "jasmine_node_test") -load("@npm//@bazel/karma:index.bzl", _karma_web_test = "karma_web_test", _karma_web_test_suite = "karma_web_test_suite") +load("@npm//@bazel/concatjs:index.bzl", _concatjs_devserver = "concatjs_devserver", _karma_web_test = "karma_web_test", _karma_web_test_suite = "karma_web_test_suite") load("@npm//@bazel/rollup:index.bzl", _rollup_bundle = "rollup_bundle") load("@npm//@bazel/terser:index.bzl", "terser_minified") -load("@npm//@bazel/typescript:index.bzl", _ts_config = "ts_config", _ts_devserver = "ts_devserver", _ts_library = "ts_library") +load("@npm//@bazel/typescript:index.bzl", _ts_config = "ts_config", _ts_library = "ts_library") load("@npm//@bazel/protractor:index.bzl", _protractor_web_test_suite = "protractor_web_test_suite") load("@npm//typescript:index.bzl", "tsc") load("//packages/bazel:index.bzl", _ng_module = "ng_module", _ng_package = "ng_package") @@ -88,7 +88,7 @@ def _default_module_name(testonly): def ts_devserver(**kwargs): """Default values for ts_devserver""" serving_path = kwargs.pop("serving_path", "/app_bundle.js") - _ts_devserver( + _concatjs_devserver( serving_path = serving_path, **kwargs ) @@ -362,7 +362,10 @@ def jasmine_node_test(bootstrap = [], **kwargs): configuration_env_vars = kwargs.pop("configuration_env_vars", []) + [ "angular_ivy_enabled", ] - templated_args = kwargs.pop("templated_args", []) + + # TODO(josephperrott): update dependency usages to no longer need bazel patch module resolver + # See: https://github.com/bazelbuild/rules_nodejs/wiki#--bazel_patch_module_resolver-now-defaults-to-false-2324 + templated_args = ["--bazel_patch_module_resolver"] + kwargs.pop("templated_args", []) for label in bootstrap: deps += [label] templated_args += ["--node_options=--require=$$(rlocation $(rootpath %s))" % label] diff --git a/tools/postinstall-patches.js b/tools/postinstall-patches.js index 1d1129a1d3..45e9bdd03e 100644 --- a/tools/postinstall-patches.js +++ b/tools/postinstall-patches.js @@ -45,13 +45,6 @@ sed('-i', '(\'response\' in xhr)', '(\'response\' in (xhr as any))', 'node_modules/rxjs/src/observable/dom/AjaxObservable.ts'); */ -// make chrome 74 work on OSX with karma under bazel -// remove when we update to the next @bazel/karma release -log('\n# patch: @bazel/karma 0.29.0 to disable chrome sandbox for OSX'); -sed('-i', 'process.platform !== \'linux\'', - 'process.platform !== \'linux\' && process.platform !== \'darwin\'', - 'node_modules/@bazel/karma/karma.conf.js'); - // Workaround https://github.com/bazelbuild/rules_nodejs/issues/1033 // TypeScript doesn't understand typings without "declare module" unless // they are actually resolved by the @types default mechanism diff --git a/tools/size-tracking/index.ts b/tools/size-tracking/index.ts index b8e2f82dd6..cd8c61b21a 100644 --- a/tools/size-tracking/index.ts +++ b/tools/size-tracking/index.ts @@ -43,7 +43,7 @@ export function main( return true; } - const expectedSizeData = JSON.parse(readFileSync(goldenSizeMapPath, 'utf8')); + const expectedSizeData = JSON.parse(readFileSync(goldenSizeMapPath, 'utf8')) as FileSizeData; const differences = compareFileSizeData(sizeResult, expectedSizeData, {maxByteDiff, maxPercentageDiff}); diff --git a/tools/size-tracking/size_tracker.ts b/tools/size-tracking/size_tracker.ts index 583b347257..fc2e2c2535 100644 --- a/tools/size-tracking/size_tracker.ts +++ b/tools/size-tracking/size_tracker.ts @@ -7,7 +7,7 @@ */ import {readFileSync} from 'fs'; -import {SourceMapConsumer} from 'source-map'; +import {RawSourceMap, SourceMapConsumer} from 'source-map'; import {DirectorySizeEntry, FileSizeData, omitCommonPathPrefix, sortFileSizeData} from './file_size_data'; @@ -23,7 +23,8 @@ export class SizeTracker { constructor(private filePath: string, private sourceMapPath: string) { this.fileContent = readFileSync(filePath, 'utf8'); - this.consumer = new SourceMapConsumer(JSON.parse(readFileSync(sourceMapPath, 'utf8'))); + this.consumer = + new SourceMapConsumer(JSON.parse(readFileSync(sourceMapPath, 'utf8')) as RawSourceMap); this.sizeResult = this._computeSizeResult(); } diff --git a/tools/symbol-extractor/index.bzl b/tools/symbol-extractor/index.bzl index d6e9104fda..2af74b76c0 100644 --- a/tools/symbol-extractor/index.bzl +++ b/tools/symbol-extractor/index.bzl @@ -25,7 +25,9 @@ def js_expected_symbol_test(name, src, golden, data = [], **kwargs): data = all_data, entry_point = entry_point, tags = kwargs.pop("tags", []) + ["symbol_extractor"], - templated_args = ["$(rootpath %s)" % src, "$(rootpath %s)" % golden], + # TODO(josephperrott): update dependency usages to no longer need bazel patch module resolver + # See: https://github.com/bazelbuild/rules_nodejs/wiki#--bazel_patch_module_resolver-now-defaults-to-false-2324 + templated_args = ["--bazel_patch_module_resolver", "$(rootpath %s)" % src, "$(rootpath %s)" % golden], configuration_env_vars = ["angular_ivy_enabled"], **kwargs ) @@ -36,6 +38,8 @@ def js_expected_symbol_test(name, src, golden, data = [], **kwargs): data = all_data, entry_point = entry_point, configuration_env_vars = ["angular_ivy_enabled"], - templated_args = ["$(rootpath %s)" % src, "$(rootpath %s)" % golden, "--accept"], + # TODO(josephperrott): update dependency usages to no longer need bazel patch module resolver + # See: https://github.com/bazelbuild/rules_nodejs/wiki#--bazel_patch_module_resolver-now-defaults-to-false-2324 + templated_args = ["--bazel_patch_module_resolver", "$(rootpath %s)" % src, "$(rootpath %s)" % golden, "--accept"], **kwargs ) diff --git a/tools/symbol-extractor/symbol_extractor.ts b/tools/symbol-extractor/symbol_extractor.ts index 0c781bbde8..af5dd85414 100644 --- a/tools/symbol-extractor/symbol_extractor.ts +++ b/tools/symbol-extractor/symbol_extractor.ts @@ -74,14 +74,14 @@ export class SymbolExtractor { static diff(actual: Symbol[], expected: string|((Symbol | string)[])): {[name: string]: number} { if (typeof expected == 'string') { - expected = JSON.parse(expected); + expected = JSON.parse(expected) as string[]; } const diff: {[name: string]: number} = {}; // All symbols in the golden file start out with a count corresponding to the number of symbols // with that name. Once they are matched with symbols in the actual output, the count should // even out to 0. - (expected as (Symbol | string)[]).forEach((nameOrSymbol) => { + expected.forEach(nameOrSymbol => { const symbolName = typeof nameOrSymbol == 'string' ? nameOrSymbol : nameOrSymbol.name; diff[symbolName] = (diff[symbolName] || 0) + 1; }); diff --git a/tools/ts-api-guardian/index.bzl b/tools/ts-api-guardian/index.bzl index 383197e41e..f6ed5b311d 100644 --- a/tools/ts-api-guardian/index.bzl +++ b/tools/ts-api-guardian/index.bzl @@ -48,8 +48,8 @@ def ts_api_guardian_test( # Needed so that node doesn't walk back to the source directory. # From there, the relative imports would point to .ts files. "--node_options=--preserve-symlinks", - # Since version 3, monkey-patch the implementation of require() in NodeJS is opt-in - # https://github.com/bazelbuild/rules_nodejs/wiki#--bazel_patch_module_resolver-now-defaults-to-false-2324 + # TODO(josephperrott): update dependency usages to no longer need bazel patch module resolver + # See: https://github.com/bazelbuild/rules_nodejs/wiki#--bazel_patch_module_resolver-now-defaults-to-false-2324 "--bazel_patch_module_resolver", ] @@ -112,6 +112,9 @@ def ts_api_guardian_test_npm_package( "--node_options=--preserve-symlinks", # We automatically discover the enpoints for our NPM package. "--autoDiscoverEntrypoints", + # TODO(josephperrott): update dependency usages to no longer need bazel patch module resolver + # See: https://github.com/bazelbuild/rules_nodejs/wiki#--bazel_patch_module_resolver-now-defaults-to-false-2324 + "--bazel_patch_module_resolver", ] for i in strip_export_pattern: diff --git a/tools/ts-api-guardian/lib/main.ts b/tools/ts-api-guardian/lib/main.ts index c203c17de9..d7428ef87c 100644 --- a/tools/ts-api-guardian/lib/main.ts +++ b/tools/ts-api-guardian/lib/main.ts @@ -86,7 +86,7 @@ export function discoverAllEntrypoints(dirPath: string) { // Get all typings file locations from package.json files for (const packageJson of packageJsons) { - const packageJsonObj = JSON.parse(fs.readFileSync(packageJson, {encoding: 'utf8'})); + const packageJsonObj = JSON.parse(fs.readFileSync(packageJson, {encoding: 'utf8'})) as any; const typings = packageJsonObj.typings; if (typings) { entryPoints.push(path.join(path.dirname(packageJson), typings));