Skip to content

Commit 496867d

Browse files
Update rules nodejs (#21928)
* build: update to [email protected] Update to use [email protected] and update correseponding build rule usages and references * build: update load statements to load dev-infra via @npm// workspace Loading the dev-infra rules via the @npm// workspace as the private @npm_dev_infra_private repo is no longer published. * fix(cdk/schematics): update JSON.parse usages to cast the result as a type Update JSON.parse usages to be better typed rather than resulting in an any type. * fix(material/schematics): update JSON.parse usages to cast the result as a type Update JSON.parse usages to be better typed rather than resulting in an any type.
1 parent 53e98b1 commit 496867d

File tree

47 files changed

+236
-166
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+236
-166
lines changed

.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
12.14.1

WORKSPACE

Lines changed: 11 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,18 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
88
# Add NodeJS rules
99
http_archive(
1010
name = "build_bazel_rules_nodejs",
11-
sha256 = "b3521b29c7cb0c47a1a735cce7e7e811a4f80d8e3720cf3a1b624533e4bb7cb6",
12-
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/2.3.2/rules_nodejs-2.3.2.tar.gz"],
11+
sha256 = "dd4dc46066e2ce034cba0c81aa3e862b27e8e8d95871f567359f7a534cccb666",
12+
urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/3.1.0/rules_nodejs-3.1.0.tar.gz"],
1313
)
1414

1515
# Add sass rules
1616
http_archive(
1717
name = "io_bazel_rules_sass",
18-
# Patch `rules_sass` to work around a bug that causes error messages to be not
19-
# printed in worker mode: https://github.com/bazelbuild/rules_sass/issues/96.
20-
# TODO(devversion): remove this patch once the Sass Node entry-point returns a `Promise`.
21-
patches = ["//tools/postinstall:sass_worker_async.patch"],
22-
sha256 = "cf28ff1bcfafb3c97f138bbc8ca9fe386e968ed3faaa9f8e6214abb5e88a2ecd",
23-
strip_prefix = "rules_sass-1.29.0",
18+
sha256 = "596ab3616d370135e0ecc710e103422e0aa3719f1c970303a0886b70c81ee819",
19+
strip_prefix = "rules_sass-1.32.2",
2420
urls = [
25-
"https://github.com/bazelbuild/rules_sass/archive/1.29.0.zip",
21+
"https://github.com/bazelbuild/rules_sass/archive/1.32.2.zip",
22+
"https://mirror.bazel.build/github.com/bazelbuild/rules_sass/archive/1.32.2.zip",
2623
],
2724
)
2825

@@ -32,27 +29,12 @@ load("@build_bazel_rules_nodejs//:index.bzl", "check_bazel_version", "node_repos
3229
check_bazel_version("4.0.0")
3330

3431
node_repositories(
35-
node_repositories = {
36-
"12.9.1-darwin_amd64": ("node-v12.9.1-darwin-x64.tar.gz", "node-v12.9.1-darwin-x64", "9aaf29d30056e2233fd15dfac56eec12e8342d91bb6c13d54fb5e599383dddb9"),
37-
"12.9.1-linux_amd64": ("node-v12.9.1-linux-x64.tar.xz", "node-v12.9.1-linux-x64", "680a1263c9f5f91adadcada549f0a9c29f1b26d09658d2b501c334c3f63719e5"),
38-
"12.9.1-windows_amd64": ("node-v12.9.1-win-x64.zip", "node-v12.9.1-win-x64", "6a4e54bda091bd02dbd8ff1b9f6671e036297da012a53891e3834d4bf4bed297"),
39-
},
40-
node_urls = ["https://nodejs.org/dist/v{version}/{filename}"],
41-
node_version = "12.9.1",
42-
# We do not need to define a specific yarn version as bazel will respect the .yarnrc file
43-
# and run the version of yarn defined at the set-path value.
44-
# Since bazel runs yarn from the working directory of the package.json, and our .yarnrc
45-
# file is in the same directory, it correctly discovers and respects it. Additionally,
46-
# it ensures that the yarn environment variable to detect if yarn has already followed
47-
# the set-path value is reset.
32+
node_version = "12.14.1",
33+
package_json = ["//:package.json"],
4834
)
4935

5036
yarn_install(
5137
name = "npm",
52-
# Redirects Yarn `stdout` output to `stderr`. This ensures that stdout is not accidentally
53-
# polluted when Bazel runs Yarn. Workaround until the upstream fix is available:
54-
# https://github.com/bazelbuild/bazel/pull/10611.
55-
args = ["1>&2"],
5638
# We add the postinstall patches file, and ngcc main fields update script here so
5739
# that Yarn will rerun whenever one of these files has been modified.
5840
data = [
@@ -64,19 +46,9 @@ yarn_install(
6446
yarn_lock = "//:yarn.lock",
6547
)
6648

67-
# Install all bazel dependencies of the @ngdeps npm packages
68-
load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies")
49+
load("@npm//@bazel/protractor:package.bzl", "npm_bazel_protractor_dependencies")
6950

70-
install_bazel_dependencies(
71-
# TODO(crisbeto): supress warnings for now so everything works like it has until now.
72-
# Eventually we should remove it and re-test everything.
73-
suppress_warning = True,
74-
)
75-
76-
# Fetch transitive dependencies which are needed to use the karma rules.
77-
load("@npm//@bazel/karma:package.bzl", "npm_bazel_karma_dependencies")
78-
79-
npm_bazel_karma_dependencies()
51+
npm_bazel_protractor_dependencies()
8052

8153
# Setup web testing. We need to setup a browser because the web testing rules for TypeScript need
8254
# a reference to a registered browser (ideally that's a hermetic version of a browser)
@@ -130,6 +102,6 @@ rbe_autoconfig(
130102
# TODO(wagnermaciel): deduplicate browsers - this will load another version of chromium in the
131103
# repository. We probably want to use the chromium version loaded here (from dev-infra) as that
132104
# one has RBE improvements.
133-
load("@npm_angular_dev_infra_private//browsers:browser_repositories.bzl", _dev_infra_browser_repositories = "browser_repositories")
105+
load("@npm//@angular/dev-infra-private/browsers:browser_repositories.bzl", _dev_infra_browser_repositories = "browser_repositories")
134106

135107
_dev_infra_browser_repositories()

integration/size-test/index.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ def size_test(name, file, deps):
7777
nodejs_binary(
7878
name = "%s.approve" % name,
7979
testonly = True,
80+
templated_args = ["--bazel_patch_module_resolver"],
8081
data = [
8182
"//goldens:size-test.yaml",
8283
"//integration/size-test:check-size",

package.json

Lines changed: 57 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,34 +63,83 @@
6363
"@types/youtube": "^0.0.40",
6464
"@webcomponents/custom-elements": "^1.1.0",
6565
"core-js-bundle": "^3.8.2",
66-
"material-components-web": "^11.0.0-canary.3201cae47.0",
66+
"material-components-web": "11.0.0-canary.3201cae47.0",
6767
"rxjs": "^6.5.3",
6868
"rxjs-tslint-rules": "^4.33.1",
6969
"systemjs": "0.19.43",
7070
"tslib": "^2.0.0",
7171
"zone.js": "~0.11.3"
7272
},
7373
"devDependencies": {
74+
"diff": "^3.5.0",
75+
"reflect-metadata": "^0.1.3",
76+
"@material/animation": "11.0.0-canary.3201cae47.0",
77+
"@material/auto-init": "11.0.0-canary.3201cae47.0",
78+
"@material/banner": "11.0.0-canary.3201cae47.0",
79+
"@material/base": "11.0.0-canary.3201cae47.0",
80+
"@material/button": "11.0.0-canary.3201cae47.0",
81+
"@material/card": "11.0.0-canary.3201cae47.0",
82+
"@material/checkbox": "11.0.0-canary.3201cae47.0",
83+
"@material/chips": "11.0.0-canary.3201cae47.0",
84+
"@material/circular-progress": "11.0.0-canary.3201cae47.0",
85+
"@material/data-table": "11.0.0-canary.3201cae47.0",
86+
"@material/density": "11.0.0-canary.3201cae47.0",
87+
"@material/dialog": "11.0.0-canary.3201cae47.0",
88+
"@material/dom": "11.0.0-canary.3201cae47.0",
89+
"@material/drawer": "11.0.0-canary.3201cae47.0",
90+
"@material/elevation": "11.0.0-canary.3201cae47.0",
91+
"@material/fab": "11.0.0-canary.3201cae47.0",
92+
"@material/feature-targeting": "11.0.0-canary.3201cae47.0",
93+
"@material/floating-label": "11.0.0-canary.3201cae47.0",
94+
"@material/form-field": "11.0.0-canary.3201cae47.0",
95+
"@material/icon-button": "11.0.0-canary.3201cae47.0",
96+
"@material/image-list": "11.0.0-canary.3201cae47.0",
97+
"@material/layout-grid": "11.0.0-canary.3201cae47.0",
98+
"@material/line-ripple": "11.0.0-canary.3201cae47.0",
99+
"@material/linear-progress": "11.0.0-canary.3201cae47.0",
100+
"@material/list": "11.0.0-canary.3201cae47.0",
101+
"@material/menu": "11.0.0-canary.3201cae47.0",
102+
"@material/menu-surface": "11.0.0-canary.3201cae47.0",
103+
"@material/notched-outline": "11.0.0-canary.3201cae47.0",
104+
"@material/radio": "11.0.0-canary.3201cae47.0",
105+
"@material/ripple": "11.0.0-canary.3201cae47.0",
106+
"@material/rtl": "11.0.0-canary.3201cae47.0",
107+
"@material/segmented-button": "11.0.0-canary.3201cae47.0",
108+
"@material/select": "11.0.0-canary.3201cae47.0",
109+
"@material/shape": "11.0.0-canary.3201cae47.0",
110+
"@material/slider": "11.0.0-canary.3201cae47.0",
111+
"@material/snackbar": "11.0.0-canary.3201cae47.0",
112+
"@material/switch": "11.0.0-canary.3201cae47.0",
113+
"@material/tab": "11.0.0-canary.3201cae47.0",
114+
"@material/tab-bar": "11.0.0-canary.3201cae47.0",
115+
"@material/tab-indicator": "11.0.0-canary.3201cae47.0",
116+
"@material/tab-scroller": "11.0.0-canary.3201cae47.0",
117+
"@material/textfield": "11.0.0-canary.3201cae47.0",
118+
"@material/theme": "11.0.0-canary.3201cae47.0",
119+
"@material/tooltip": "11.0.0-canary.3201cae47.0",
120+
"@material/top-app-bar": "11.0.0-canary.3201cae47.0",
121+
"@material/touch-target": "11.0.0-canary.3201cae47.0",
122+
"@material/typography": "11.0.0-canary.3201cae47.0",
74123
"@angular-devkit/build-optimizer": "^0.1200.0-next.0",
75124
"@angular-devkit/core": "^12.0.0-next.0",
76125
"@angular-devkit/schematics": "^12.0.0-next.0",
77126
"@angular/bazel": "^12.0.0-next.0",
78127
"@angular/benchpress": "^0.2.1",
79128
"@angular/compiler-cli": "^12.0.0-next.0",
80-
"@angular/dev-infra-private": "https://github.com/angular/dev-infra-private-builds.git#71d57c29a10c03d07f889581608e3a2315a1dc7e",
129+
"@angular/dev-infra-private": "https://github.com/angular/dev-infra-private-builds.git#a8dbb0d8cd8de1e86a4ec4ea66b5bd89a47d4876",
81130
"@angular/platform-browser-dynamic": "^12.0.0-next.0",
82131
"@angular/platform-server": "^12.0.0-next.0",
83132
"@angular/router": "^12.0.0-next.0",
84133
"@axe-core/webdriverjs": "^4.1.0",
85134
"@bazel/bazelisk": "^1.4.0",
86135
"@bazel/buildifier": "^4.0.0",
87136
"@bazel/ibazel": "^0.14.0",
88-
"@bazel/jasmine": "^2.3.2",
89-
"@bazel/karma": "^2.3.2",
90-
"@bazel/protractor": "^2.3.2",
91-
"@bazel/rollup": "^2.3.2",
92-
"@bazel/terser": "^2.3.2",
93-
"@bazel/typescript": "^2.3.2",
137+
"@bazel/jasmine": "3.1.0",
138+
"@bazel/concatjs": "3.1.0",
139+
"@bazel/protractor": "3.1.0",
140+
"@bazel/rollup": "3.1.0",
141+
"@bazel/terser": "3.1.0",
142+
"@bazel/typescript": "3.1.0",
94143
"@firebase/app-types": "^0.6.1",
95144
"@octokit/rest": "18.1.0",
96145
"@schematics/angular": "^12.0.0-next.0",

packages.bzl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,18 @@ ANGULAR_PACKAGE_VERSION = "^11.0.0 || ^12.0.0-0"
55
MDC_PACKAGE_VERSION = "^9.0.0-canary.419e03572.0"
66
TSLIB_PACKAGE_VERSION = "^2.0.0"
77

8+
# Each placer holder is used to stamp versions during the build process, replacing the key with it's
9+
# value pair. These replacements occur during building of `npm_package` and `ng_package` stamping in
10+
# the peer dependencies and versions, primarily in `package.json`s.
811
VERSION_PLACEHOLDER_REPLACEMENTS = {
12+
# Version of `material-components-web`
913
"0.0.0-MDC": MDC_PACKAGE_VERSION,
14+
# Version of `@angular/core`
1015
"0.0.0-NG": ANGULAR_PACKAGE_VERSION,
16+
# Version of `tslib`
1117
"0.0.0-TSLIB": TSLIB_PACKAGE_VERSION,
18+
# Version of the local package being built, generated via the `--workspace_status_command` flag.
19+
"0.0.0-PLACEHOLDER": "{BUILD_SCM_VERSION}",
1220
}
1321

1422
# List of default Angular library UMD bundles which are not processed by ngcc.

src/cdk/schematics/ng-add/index.spec.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ import {COLLECTION_PATH} from '../index.spec';
44
import {createTestApp, getFileContent} from '../testing';
55
import {addPackageToPackageJson} from './package-config';
66

7+
interface PackageJson {
8+
dependencies: Record<string, string>;
9+
}
10+
711
describe('CDK ng-add', () => {
812
let runner: SchematicTestRunner;
913
let appTree: Tree;
@@ -15,7 +19,7 @@ describe('CDK ng-add', () => {
1519

1620
it('should update the package.json', async () => {
1721
const tree = await runner.runSchematicAsync('ng-add', {}, appTree).toPromise();
18-
const packageJson = JSON.parse(getFileContent(tree, '/package.json'));
22+
const packageJson = JSON.parse(getFileContent(tree, '/package.json')) as PackageJson;
1923
const dependencies = packageJson.dependencies;
2024

2125
expect(dependencies['@angular/cdk']).toBe('~0.0.0-PLACEHOLDER');
@@ -33,7 +37,7 @@ describe('CDK ng-add', () => {
3337
addPackageToPackageJson(appTree, '@angular/cdk', '^9.0.0');
3438

3539
const tree = await runner.runSchematicAsync('ng-add', {}, appTree).toPromise();
36-
const packageJson = JSON.parse(getFileContent(tree, '/package.json'));
40+
const packageJson = JSON.parse(getFileContent(tree, '/package.json')) as PackageJson;
3741
const dependencies = packageJson.dependencies;
3842

3943
expect(dependencies['@angular/cdk']).toBe('^9.0.0');

src/cdk/schematics/ng-add/package-config.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88

99
import {Tree} from '@angular-devkit/schematics';
1010

11+
interface PackageJson {
12+
dependencies: Record<string, string>;
13+
}
14+
1115
/**
1216
* Sorts the keys of the given object.
1317
* @returns A new object instance with sorted keys
@@ -21,7 +25,7 @@ export function addPackageToPackageJson(host: Tree, pkg: string, version: string
2125

2226
if (host.exists('package.json')) {
2327
const sourceText = host.read('package.json')!.toString('utf-8');
24-
const json = JSON.parse(sourceText);
28+
const json = JSON.parse(sourceText) as PackageJson;
2529

2630
if (!json.dependencies) {
2731
json.dependencies = {};
@@ -44,7 +48,7 @@ export function getPackageVersionFromPackageJson(tree: Tree, name: string): stri
4448
return null;
4549
}
4650

47-
const packageJson = JSON.parse(tree.read('package.json')!.toString('utf8'));
51+
const packageJson = JSON.parse(tree.read('package.json')!.toString('utf8')) as PackageJson;
4852

4953
if (packageJson.dependencies && packageJson.dependencies[name]) {
5054
return packageJson.dependencies[name];

src/e2e-app/BUILD.bazel

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
load("@npm//@bazel/typescript:index.bzl", "ts_devserver")
1+
load("@npm//@bazel/concatjs:index.bzl", "concatjs_devserver")
22
load("//:packages.bzl", "getAngularUmdTargets")
33
load("//tools:defaults.bzl", "ng_module", "sass_binary")
44

@@ -85,7 +85,7 @@ sass_binary(
8585
],
8686
)
8787

88-
ts_devserver(
88+
concatjs_devserver(
8989
name = "devserver",
9090
testonly = True,
9191
additional_root_paths = [

src/material-experimental/mdc-helpers/BUILD.bazel

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,28 @@ filegroup(
1010

1111
npm_sass_library(
1212
name = "mdc_scss_deps_lib",
13-
deps = ["@npm//material-components-web"],
13+
deps = [
14+
"@npm//@material/card",
15+
"@npm//@material/checkbox",
16+
"@npm//@material/chips",
17+
"@npm//@material/circular-progress",
18+
"@npm//@material/data-table",
19+
"@npm//@material/dialog",
20+
"@npm//@material/fab",
21+
"@npm//@material/form-field",
22+
"@npm//@material/linear-progress",
23+
"@npm//@material/list",
24+
"@npm//@material/menu-surface",
25+
"@npm//@material/radio",
26+
"@npm//@material/snackbar",
27+
"@npm//@material/switch",
28+
"@npm//@material/tab",
29+
"@npm//@material/tab-bar",
30+
"@npm//@material/tab-indicator",
31+
"@npm//@material/textfield",
32+
"@npm//@material/tooltip",
33+
"@npm//material-components-web",
34+
],
1435
)
1536

1637
sass_library(

src/material/schematics/ng-add/index.spec.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ import {getWorkspace} from '@schematics/angular/utility/workspace';
1313
import {COLLECTION_PATH} from '../index.spec';
1414
import {addPackageToPackageJson} from './package-config';
1515

16+
interface PackageJson {
17+
dependencies: Record<string, string>;
18+
}
19+
1620
describe('ng-add schematic', () => {
1721
let runner: SchematicTestRunner;
1822
let appTree: Tree;
@@ -43,7 +47,7 @@ describe('ng-add schematic', () => {
4347

4448
/** Removes the specified dependency from the /package.json in the given tree. */
4549
function removePackageJsonDependency(tree: Tree, dependencyName: string) {
46-
const packageContent = JSON.parse(getFileContent(tree, '/package.json'));
50+
const packageContent = JSON.parse(getFileContent(tree, '/package.json')) as PackageJson;
4751
delete packageContent.dependencies[dependencyName];
4852
tree.overwrite('/package.json', JSON.stringify(packageContent, null, 2));
4953
}
@@ -55,7 +59,7 @@ describe('ng-add schematic', () => {
5559
removePackageJsonDependency(appTree, '@angular/animations');
5660

5761
const tree = await runner.runSchematicAsync('ng-add', {}, appTree).toPromise();
58-
const packageJson = JSON.parse(getFileContent(tree, '/package.json'));
62+
const packageJson = JSON.parse(getFileContent(tree, '/package.json')) as PackageJson;
5963
const dependencies = packageJson.dependencies;
6064
const angularCoreVersion = dependencies['@angular/core'];
6165

@@ -87,7 +91,7 @@ describe('ng-add schematic', () => {
8791
addPackageToPackageJson(appTree, '@angular/material', '^9.0.0');
8892

8993
const tree = await runner.runSchematicAsync('ng-add', {}, appTree).toPromise();
90-
const packageJson = JSON.parse(getFileContent(tree, '/package.json'));
94+
const packageJson = JSON.parse(getFileContent(tree, '/package.json')) as PackageJson;
9195
const dependencies = packageJson.dependencies;
9296

9397
expect(dependencies['@angular/material']).toBe('^9.0.0');

src/material/schematics/ng-add/package-config.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88

99
import {Tree} from '@angular-devkit/schematics';
1010

11+
interface PackageJson {
12+
dependencies: Record<string, string>;
13+
}
14+
1115
/**
1216
* Sorts the keys of the given object.
1317
* @returns A new object instance with sorted keys
@@ -21,7 +25,7 @@ export function addPackageToPackageJson(host: Tree, pkg: string, version: string
2125

2226
if (host.exists('package.json')) {
2327
const sourceText = host.read('package.json')!.toString('utf-8');
24-
const json = JSON.parse(sourceText);
28+
const json = JSON.parse(sourceText) as PackageJson;
2529

2630
if (!json.dependencies) {
2731
json.dependencies = {};
@@ -44,7 +48,7 @@ export function getPackageVersionFromPackageJson(tree: Tree, name: string): stri
4448
return null;
4549
}
4650

47-
const packageJson = JSON.parse(tree.read('package.json')!.toString('utf8'));
51+
const packageJson = JSON.parse(tree.read('package.json')!.toString('utf8')) as PackageJson;
4852

4953
if (packageJson.dependencies && packageJson.dependencies[name]) {
5054
return packageJson.dependencies[name];

src/material/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ interface IdentifierReference {
5959
isImport: boolean;
6060
}
6161

62+
interface PackageJson {
63+
dependencies: Record<string, string>;
64+
}
65+
6266
export class HammerGesturesMigration extends DevkitMigration<null> {
6367
// Only enable this rule if the migration targets v9 or v10 and is running for a non-test
6468
// target. We cannot migrate test targets since they have a limited scope
@@ -853,7 +857,7 @@ export class HammerGesturesMigration extends DevkitMigration<null> {
853857
return false;
854858
}
855859

856-
const packageJson = JSON.parse(tree.read('/package.json')!.toString('utf8'));
860+
const packageJson = JSON.parse(tree.read('/package.json')!.toString('utf8')) as PackageJson;
857861

858862
// We do not handle the case where someone manually added "hammerjs" to the dev dependencies.
859863
if (packageJson.dependencies && packageJson.dependencies[HAMMER_MODULE_SPECIFIER]) {

0 commit comments

Comments
 (0)