feat: angular 5 support (#6018)

This commit is contained in:
Kristiyan Kostadinov
2017-11-01 19:03:57 +01:00
committed by Andrew Seguin
parent a2129fc7e7
commit dfe8091d95
39 changed files with 267 additions and 250 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ sudo: false
dist: trusty
node_js:
- '8'
- '7'
addons:
jwt:
+113 -136
View File
@@ -5,125 +5,103 @@
"requires": true,
"dependencies": {
"@angular/animations": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-4.4.6.tgz",
"integrity": "sha1-+mYYmaik44y3xYPHpcl85l1ZKjU=",
"version": "5.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-5.0.0-rc.9.tgz",
"integrity": "sha1-ajq5oxdVZa9JQqELHvEriIcNxsA=",
"requires": {
"tslib": "1.8.0"
}
},
"@angular/common": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-4.4.6.tgz",
"integrity": "sha1-S4FCByTggooOg5uVpV6xp+g5GPI=",
"version": "5.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-5.0.0-rc.9.tgz",
"integrity": "sha1-CG0gKXNozXkgGeEJARRaPbaCiNI=",
"requires": {
"tslib": "1.8.0"
}
},
"@angular/compiler": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.4.6.tgz",
"integrity": "sha1-LuH68lt1fh0SiXkHS+f65SmzvCA=",
"version": "5.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.0.0-rc.9.tgz",
"integrity": "sha1-JcFyoz/H7/GAJnNUhKKCNjePAz4=",
"requires": {
"tslib": "1.8.0"
}
},
"@angular/compiler-cli": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.4.6.tgz",
"integrity": "sha1-uv09HiYOmQh+uajPdTLb1gOrubE=",
"version": "5.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-5.0.0-rc.9.tgz",
"integrity": "sha1-iUXkUcJjRHAGeotAqL1baMEX4UU=",
"dev": true,
"requires": {
"@angular/tsc-wrapped": "4.4.6",
"chokidar": "1.7.0",
"minimist": "1.2.0",
"reflect-metadata": "0.1.10"
"reflect-metadata": "0.1.10",
"tsickle": "0.24.1"
}
},
"@angular/core": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-4.4.6.tgz",
"integrity": "sha1-EwMf0Q3P5DiHVBmzjyESCVi8I1Q=",
"version": "5.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-5.0.0-rc.9.tgz",
"integrity": "sha1-CqtdLZsx6lMKQbseMAlQTRvWRnM=",
"requires": {
"tslib": "1.8.0"
}
},
"@angular/forms": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.4.6.tgz",
"integrity": "sha1-/mSs5CQ1wbgPSQNLfEHOjK8UpEo=",
"version": "5.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-5.0.0-rc.9.tgz",
"integrity": "sha1-p14YlbchMRmQ4lMTFDybNn5L41o=",
"requires": {
"tslib": "1.8.0"
}
},
"@angular/http": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@angular/http/-/http-4.4.6.tgz",
"integrity": "sha1-CvaAxnEL3AJtlA4iXP0PalwAXQw=",
"version": "5.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@angular/http/-/http-5.0.0-rc.9.tgz",
"integrity": "sha1-myZFw4T9bYIsL7G0x9JkxhsbK9E=",
"dev": true,
"requires": {
"tslib": "1.8.0"
}
},
"@angular/platform-browser": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.4.6.tgz",
"integrity": "sha1-qYOcVH4bZU+h0kqJeAyLpquNzOA=",
"version": "5.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-5.0.0-rc.9.tgz",
"integrity": "sha1-raeVDmEEsBWavC2E0T7fG4JIPyA=",
"requires": {
"tslib": "1.8.0"
}
},
"@angular/platform-browser-dynamic": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.4.6.tgz",
"integrity": "sha1-TT2aanvyzz3kBYphWuBZ7/ZB+jY=",
"version": "5.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.0.0-rc.9.tgz",
"integrity": "sha1-krwRUe9IXNzML09qa3Obnka27LI=",
"dev": true,
"requires": {
"tslib": "1.8.0"
}
},
"@angular/platform-server": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-4.4.6.tgz",
"integrity": "sha1-QxJI9IkaY1x2rRWhfQPpyH4aODc=",
"version": "5.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-5.0.0-rc.9.tgz",
"integrity": "sha1-TucPcj002WAI9p0c2a37D5NMxNQ=",
"dev": true,
"requires": {
"parse5": "3.0.2",
"domino": "1.0.30",
"tslib": "1.8.0",
"xhr2": "0.1.4"
}
},
"@angular/router": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-4.4.6.tgz",
"integrity": "sha1-D2rSmuD/jSyeo3m9MgRHIXt+yGY=",
"version": "5.0.0-rc.9",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-5.0.0-rc.9.tgz",
"integrity": "sha1-LSrEKt/R8UfoGc8oc31Hxsm+8s0=",
"dev": true,
"requires": {
"tslib": "1.8.0"
}
},
"@angular/tsc-wrapped": {
"version": "4.4.6",
"resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.4.6.tgz",
"integrity": "sha1-Fnh8u/UL3H5zgSOxnDJSfyROF40=",
"dev": true,
"requires": {
"tsickle": "0.21.6"
},
"dependencies": {
"tsickle": {
"version": "0.21.6",
"resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz",
"integrity": "sha1-U7Abl5xcE/2xOvs/uVgXflmRWI0=",
"dev": true,
"requires": {
"minimist": "1.2.0",
"mkdirp": "0.5.1",
"source-map": "0.5.7",
"source-map-support": "0.4.18"
}
}
}
},
"@firebase/app": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.1.1.tgz",
@@ -1039,6 +1017,15 @@
}
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
@@ -1050,15 +1037,6 @@
"strip-ansi": "3.0.1"
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
@@ -1998,6 +1976,15 @@
}
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
@@ -2009,15 +1996,6 @@
"strip-ansi": "3.0.1"
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
@@ -2563,16 +2541,6 @@
"@types/node": "7.0.46"
}
},
"JSONStream": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz",
"integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
"dev": true,
"requires": {
"jsonparse": "1.3.1",
"through": "2.3.8"
}
},
"a-sync-waterfall": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.0.tgz",
@@ -4484,8 +4452,8 @@
"integrity": "sha512-8od6g684Fhi5Vpp4ABRv/RBsW1AY6wSHbJHEK6FGTv+8jvAAnlABniZu/FVmX9TcirkHepaEsa1QGkRvbg0CKw==",
"dev": true,
"requires": {
"JSONStream": "1.3.1",
"is-text-path": "1.0.1",
"JSONStream": "1.3.1",
"lodash": "4.17.4",
"meow": "3.7.0",
"split2": "2.2.0",
@@ -5412,6 +5380,12 @@
"domelementtype": "1.3.0"
}
},
"domino": {
"version": "1.0.30",
"resolved": "https://registry.npmjs.org/domino/-/domino-1.0.30.tgz",
"integrity": "sha512-ikq8WiDSkICdkElud317F2Sigc6A3EDpWsxWBwIZqOl95km4p/Vc9Rj98id7qKgsjDmExj0AVM7JOd4bb647Xg==",
"dev": true
},
"domutils": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz",
@@ -6773,7 +6747,18 @@
"integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
"dev": true,
"requires": {
"boom": "4.3.1"
"boom": "5.2.0"
},
"dependencies": {
"boom": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
"integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
"dev": true,
"requires": {
"hoek": "4.2.0"
}
}
}
},
"crypto-random-string": {
@@ -6809,7 +6794,6 @@
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-2.4.0.tgz",
"integrity": "sha1-hI4o9/HVB0DGdHqzywdnBGK2+Jw=",
"dev": true,
"requires": {
"is-obj": "1.0.1"
}
@@ -7483,12 +7467,6 @@
"integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
"dev": true
},
"string-format-obj": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.0.tgz",
"integrity": "sha1-djVhCx7zlwE+hHi+mKFw4EmD0Gg=",
"dev": true
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
@@ -7498,6 +7476,12 @@
"safe-buffer": "5.1.1"
}
},
"string-format-obj": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.0.tgz",
"integrity": "sha1-djVhCx7zlwE+hHi+mKFw4EmD0Gg=",
"dev": true
},
"stringstream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
@@ -7662,7 +7646,6 @@
"dev": true,
"requires": {
"@google-cloud/functions-emulator": "1.0.0-alpha.25",
"JSONStream": "1.3.1",
"archiver": "0.16.0",
"chalk": "1.1.3",
"cjson": "0.3.3",
@@ -7682,6 +7665,7 @@
"google-auto-auth": "0.7.2",
"inquirer": "0.12.0",
"jsonschema": "1.2.0",
"JSONStream": "1.3.1",
"jsonwebtoken": "7.4.3",
"lodash": "4.17.4",
"open": "0.0.5",
@@ -12042,16 +12026,6 @@
"through2": "0.6.5"
},
"dependencies": {
"JSONStream": {
"version": "0.8.4",
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz",
"integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=",
"dev": true,
"requires": {
"jsonparse": "0.0.5",
"through": "2.3.8"
}
},
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
@@ -12064,6 +12038,16 @@
"integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=",
"dev": true
},
"JSONStream": {
"version": "0.8.4",
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz",
"integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=",
"dev": true,
"requires": {
"jsonparse": "0.0.5",
"through": "2.3.8"
}
},
"readable-stream": {
"version": "1.0.34",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
@@ -12128,6 +12112,16 @@
"integrity": "sha512-XDJApzBauMg0TinJNP4iVcJl99PQ4JbWKK7nwzpOIkAOVveDKgh/2xm41T3x7Spu4PWMhnnQpNJmUSIUgl6sKg==",
"dev": true
},
"JSONStream": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz",
"integrity": "sha1-cH92HgHa6eFvG8+TcDt4xwlmV5o=",
"dev": true,
"requires": {
"jsonparse": "1.3.1",
"through": "2.3.8"
}
},
"jsonwebtoken": {
"version": "7.4.3",
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.3.tgz",
@@ -14545,23 +14539,6 @@
"integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
"dev": true
},
"parse5": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz",
"integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA=",
"dev": true,
"requires": {
"@types/node": "6.0.90"
},
"dependencies": {
"@types/node": {
"version": "6.0.90",
"resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.90.tgz",
"integrity": "sha512-tXoGRVdi7wZX7P1VWoV9Wfk0uYDOAHdEYXAttuWgSrN76Q32wQlSrMX0Rgyv3RTEaQY2ZLQrzYHVM2e8rfo8sA==",
"dev": true
}
}
},
"parsejson": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz",
@@ -16918,6 +16895,15 @@
"integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
"dev": true
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"string-format-obj": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/string-format-obj/-/string-format-obj-1.1.0.tgz",
@@ -16951,15 +16937,6 @@
"strip-ansi": "3.0.1"
}
},
"string_decoder": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
}
},
"stringify-object": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-0.1.8.tgz",
@@ -18029,9 +18006,9 @@
}
},
"tsickle": {
"version": "0.23.6",
"resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.23.6.tgz",
"integrity": "sha1-/O5Xpct/kqjDqeV47gooZCfc+s0=",
"version": "0.24.1",
"resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.24.1.tgz",
"integrity": "sha512-XloFQZhVhgjpQsi3u2ORNRJvuID5sflOg6HfP093IqAbhE1+fIUXznULpdDwHgG4p+v8w78KdHruQtkWUKx5AQ==",
"requires": {
"minimist": "1.2.0",
"mkdirp": "0.5.1",
+13 -13
View File
@@ -25,26 +25,25 @@
"node": ">= 5.4.1"
},
"dependencies": {
"@angular/animations": "~4.4.4",
"@angular/common": "~4.4.4",
"@angular/compiler": "~4.4.4",
"@angular/core": "~4.4.4",
"@angular/forms": "~4.4.4",
"@angular/platform-browser": "~4.4.4",
"@angular/animations": "~5.0.0-rc.9",
"@angular/common": "~5.0.0-rc.9",
"@angular/compiler": "~5.0.0-rc.9",
"@angular/core": "~5.0.0-rc.9",
"@angular/forms": "~5.0.0-rc.9",
"@angular/platform-browser": "~5.0.0-rc.9",
"core-js": "^2.4.1",
"rxjs": "^5.5.0",
"systemjs": "0.19.43",
"tsickle": "^0.23.5",
"tsickle": "^0.24.x",
"tslib": "^1.7.1",
"zone.js": "^0.8.12"
},
"devDependencies": {
"@angular/compiler-cli": "~4.4.4",
"@angular/http": "~4.4.4",
"@angular/platform-browser-dynamic": "~4.4.4",
"@angular/platform-server": "~4.4.4",
"@angular/router": "~4.4.4",
"@angular/tsc-wrapped": "~4.4.4",
"@angular/compiler-cli": "~5.0.0-rc.9",
"@angular/http": "~5.0.0-rc.9",
"@angular/platform-browser-dynamic": "~5.0.0-rc.9",
"@angular/platform-server": "~5.0.0-rc.9",
"@angular/router": "~5.0.0-rc.9",
"@google-cloud/storage": "^1.1.1",
"@types/chalk": "^0.4.31",
"@types/fs-extra": "^4.0.3",
@@ -83,6 +82,7 @@
"gulp-rename": "^1.2.2",
"gulp-sass": "^3.1.0",
"gulp-transform": "^2.0.0",
"gulp-util": "^3.0.8",
"hammerjs": "^2.0.8",
"highlight.js": "^9.11.0",
"http-rewrite-middleware": "^0.1.6",
+12 -11
View File
@@ -63,17 +63,18 @@ OPTS=(
dist/releases/material-moment-adapter/esm2015/material-moment-adapter.js
# Include all Angular FESM bundles.
node_modules/@angular/core/@angular/core.js
node_modules/@angular/common/@angular/common.js
node_modules/@angular/common/@angular/common/http.js
node_modules/@angular/compiler/@angular/compiler.js
node_modules/@angular/forms/@angular/forms.js
node_modules/@angular/router/@angular/router.js
node_modules/@angular/platform-browser/@angular/platform-browser.js
node_modules/@angular/platform-browser/@angular/platform-browser/animations.js
node_modules/@angular/platform-browser-dynamic/@angular/platform-browser-dynamic.js
node_modules/@angular/animations/@angular/animations.js
node_modules/@angular/animations/@angular/animations/browser.js
node_modules/@angular/core/esm5/index.js
node_modules/@angular/common/esm5/index.js
node_modules/@angular/common/esm5/http.js
node_modules/@angular/compiler/esm5/index.js
node_modules/@angular/forms/esm5/index.js
node_modules/@angular/http/esm5/index.js
node_modules/@angular/router/esm5/index.js
node_modules/@angular/platform-browser/esm5/index.js
node_modules/@angular/platform-browser/esm5/animations/index.js
node_modules/@angular/platform-browser-dynamic/esm5/index.js
node_modules/@angular/animations/esm5/index.js
node_modules/@angular/animations/esm5/browser/index.js
# Include other dependencies like Zone.js, Moment.js, and RxJS
node_modules/zone.js/dist/zone.js
+3 -12
View File
@@ -67,24 +67,15 @@ describe('Scroll Dispatcher', () => {
}));
it('should not execute the global events in the Angular zone', () => {
const spy = jasmine.createSpy('zone unstable callback');
const subscription = fixture.ngZone!.onUnstable.subscribe(spy);
scroll.scrolled(0).subscribe(() => {});
dispatchFakeEvent(document, 'scroll', false);
expect(spy).not.toHaveBeenCalled();
subscription.unsubscribe();
expect(fixture.ngZone!.isStable).toBe(true);
});
it('should not execute the scrollable events in the Angular zone', () => {
const spy = jasmine.createSpy('zone unstable callback');
const subscription = fixture.ngZone!.onUnstable.subscribe(spy);
dispatchFakeEvent(fixture.componentInstance.scrollingElement.nativeElement, 'scroll', false);
expect(spy).not.toHaveBeenCalled();
subscription.unsubscribe();
dispatchFakeEvent(fixture.componentInstance.scrollingElement.nativeElement, 'scroll');
expect(fixture.ngZone!.isStable).toBe(true);
});
it('should be able to unsubscribe from the global scrollable', () => {
+1 -1
View File
@@ -141,7 +141,7 @@ export class CdkCellOutlet {
* a handle to provide that component's cells and context. After init, the CdkCellOutlet will
* construct the cells with the provided context.
*/
static mostRecentCellOutlet: CdkCellOutlet;
static mostRecentCellOutlet: CdkCellOutlet | null = null;
constructor(public _viewContainer: ViewContainerRef) {
CdkCellOutlet.mostRecentCellOutlet = this;
+7 -2
View File
@@ -293,7 +293,9 @@ export class CdkTable<T> implements CollectionViewer {
.createEmbeddedView(this._headerDef.template, {cells});
cells.forEach(cell => {
CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cell.template, {});
if (CdkCellOutlet.mostRecentCellOutlet) {
CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cell.template, {});
}
});
this._changeDetectorRef.markForCheck();
@@ -361,7 +363,10 @@ export class CdkTable<T> implements CollectionViewer {
this._rowPlaceholder.viewContainer.createEmbeddedView(row.template, context, index);
this._getCellTemplatesForRow(row).forEach(cell => {
CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cell.template, context);
if (CdkCellOutlet.mostRecentCellOutlet) {
CdkCellOutlet.mostRecentCellOutlet._viewContainer
.createEmbeddedView(cell.template, context);
}
});
this._changeDetectorRef.markForCheck();
+1 -1
View File
@@ -20,7 +20,7 @@
"skipLibCheck": true,
"types": [],
"paths": {
"@angular/cdk/*": ["../../dist/packages/cdk/*/public-api"]
"@angular/cdk/*": ["../../dist/packages/cdk/*"]
}
},
"files": [
+1 -1
View File
@@ -21,7 +21,7 @@
"skipLibCheck": true,
"types": [],
"paths": {
"@angular/cdk/*": ["../../dist/packages/cdk/*/public-api"]
"@angular/cdk/*": ["../../dist/packages/cdk/*"]
}
},
"files": [
+5
View File
@@ -17,6 +17,11 @@
"./testing/index.ts",
"typings.d.ts"
],
"angularCompilerOptions": {
"strictMetadataEmit": true,
"skipTemplateCodegen": true,
"emitDecoratorMetadata": true
},
"include": [
// Include the index.ts for each secondary entry-point
"./*/index.ts",
+1 -1
View File
@@ -13,7 +13,7 @@ import {DialogE2E, TestDialog} from './dialog/dialog-e2e';
import {GridListE2E} from './grid-list/grid-list-e2e';
import {ProgressBarE2E} from './progress-bar/progress-bar-e2e';
import {ProgressSpinnerE2E} from './progress-spinner/progress-spinner-e2e';
import {FullscreenE2E, TestDialog as TestDialogFullScreen} from './fullscreen/fullscreen-e2e';
import {FullscreenE2E, TestDialogFullScreen} from './fullscreen/fullscreen-e2e';
import {E2E_APP_ROUTES} from './e2e-app/routes';
import {SlideToggleE2E} from './slide-toggle/slide-toggle-e2e';
import {InputE2E} from './input/input-e2e';
+4 -4
View File
@@ -8,12 +8,12 @@ import {MatDialog, MatDialogRef} from '@angular/material';
})
export class FullscreenE2E {
dialogRef: MatDialogRef<TestDialog> | null;
dialogRef: MatDialogRef<TestDialogFullScreen> | null;
constructor (private _element: ElementRef, private _dialog: MatDialog) { }
openDialog() {
this.dialogRef = this._dialog.open(TestDialog);
this.dialogRef = this._dialog.open(TestDialogFullScreen);
this.dialogRef.componentInstance.openFullscreen.subscribe(() => this.openFullscreen());
this.dialogRef.componentInstance.exitFullscreen.subscribe(() => this.exitFullscreen());
@@ -54,9 +54,9 @@ export class FullscreenE2E {
<button (click)="dialogRef.close()" id="close">Close Dialog</button>
`
})
export class TestDialog {
export class TestDialogFullScreen {
@Output() openFullscreen = new EventEmitter<void>();
@Output() exitFullscreen = new EventEmitter<void>();
constructor(public dialogRef: MatDialogRef<TestDialog>) {}
constructor(public dialogRef: MatDialogRef<TestDialogFullScreen>) {}
}
-1
View File
@@ -24,7 +24,6 @@
<svg version="1.1"
focusable="false"
class="mat-checkbox-checkmark"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
xml:space="preserve">
<path class="mat-checkbox-checkmark-path"
+2 -2
View File
@@ -302,8 +302,8 @@ export class MatChip extends _MatChipMixinBase implements FocusableOption, OnDes
selector: '[matChipRemove]',
host: {
'class': 'mat-chip-remove',
'(click)': '_handleClick($event)',
},
'(click)': '_handleClick()',
}
})
export class MatChipRemove {
constructor(protected _parentChip: MatChip) {
+1 -1
View File
@@ -237,7 +237,7 @@ export abstract class DateAdapter<D> {
* Checks if two dates are equal.
* @param first The first date to check.
* @param second The second date to check.
* @returns {boolean} Whether the two dates are equal.
* @returns Whether the two dates are equal.
* Null dates are considered equal to other null dates.
*/
sameDate(first: D | null, second: D | null): boolean {
+1 -1
View File
@@ -61,6 +61,6 @@ describe('MatOption component', () => {
@Component({
template: `<mat-option [disabled]="disabled"></mat-option>`
})
export class OptionWithDisable {
class OptionWithDisable {
disabled: boolean;
}
+2 -2
View File
@@ -1,8 +1,8 @@
<button mat-icon-button type="button" [attr.aria-label]="_intl.openCalendarLabel"
[disabled]="disabled" (click)="_open($event)">
<mat-icon>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="100%" height="100%"
fill="currentColor" style="vertical-align: top" focusable="false">
<svg viewBox="0 0 24 24" width="100%" height="100%" fill="currentColor"
style="vertical-align: top" focusable="false">
<path d="M0 0h24v24H0z" fill="none"/>
<path d="M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z"/>
</svg>
+3 -3
View File
@@ -30,6 +30,9 @@ import {MatAccordion} from './accordion';
/** Workaround for https://github.com/angular/angular/issues/17849 */
export const _CdkAccordionItem = CdkAccordionItem;
/** Time and timing curve for expansion panel animations. */
export const EXPANSION_PANEL_ANIMATION_TIMING = '225ms cubic-bezier(0.4,0.0,0.2,1)';
// Boilerplate for applying mixins to MatExpansionPanel.
/** @docs-private */
@Component({
@@ -51,9 +54,6 @@ export const _MatExpansionPanelMixinBase = mixinDisabled(MatExpansionPanelBase);
/** MatExpansionPanel's states. */
export type MatExpansionPanelState = 'expanded' | 'collapsed';
/** Time and timing curve for expansion panel animations. */
export const EXPANSION_PANEL_ANIMATION_TIMING = '225ms cubic-bezier(0.4,0.0,0.2,1)';
/**
* <mat-expansion-panel> component.
*
+1 -1
View File
@@ -8,5 +8,5 @@
export * from './grid-list-module';
export * from './grid-list';
export {MatGridTile} from './grid-tile';
export * from './grid-tile';
+6 -3
View File
@@ -94,8 +94,11 @@ export class MatProgressSpinner extends _MatProgressSpinnerMixinBase implements
/** Tracks diameters of existing instances to de-dupe generated styles (default d = 100) */
private static diameters = new Set<number>([100]);
/** Used for storing all of the generated keyframe animations. */
private static styleTag: HTMLStyleElement;
/**
* Used for storing all of the generated keyframe animations.
* @dynamic
*/
private static styleTag: HTMLStyleElement|null = null;
/** The diameter of the progress spinner (will set width and height of svg). */
@Input()
@@ -199,7 +202,7 @@ export class MatProgressSpinner extends _MatProgressSpinnerMixinBase implements
MatProgressSpinner.styleTag = styleTag;
}
if (styleTag.sheet) {
if (styleTag && styleTag.sheet) {
(styleTag.sheet as CSSStyleSheet).insertRule(this._getAnimationText());
}
+1 -1
View File
@@ -3487,7 +3487,7 @@ class SelectWithErrorSibling {
selector: 'throws-error-on-init',
template: ''
})
export class ThrowsErrorOnInit implements OnInit {
class ThrowsErrorOnInit implements OnInit {
ngOnInit() {
throw Error('Oh no!');
}
+6 -2
View File
@@ -12,6 +12,10 @@
"moduleResolution": "node",
"outDir": "../../dist/packages/material",
"rootDir": ".",
"rootDirs": [
".",
"../../dist/packages/material"
],
"sourceMap": true,
"inlineSources": true,
"target": "es2015",
@@ -20,8 +24,8 @@
"types": [],
"baseUrl": ".",
"paths": {
"@angular/cdk/*": ["../../dist/packages/cdk/*/public-api"],
"@angular/material/*": ["../../dist/packages/material/*/public-api"]
"@angular/cdk/*": ["../../dist/packages/cdk/*"],
"@angular/material/*": ["../../dist/packages/material/*"]
}
},
"files": [
+6 -2
View File
@@ -13,6 +13,10 @@
"moduleResolution": "node",
"outDir": "../../dist/packages/material/esm5",
"rootDir": ".",
"rootDirs": [
".",
"../../dist/packages/material"
],
"sourceMap": true,
"inlineSources": true,
"target": "es5",
@@ -21,8 +25,8 @@
"types": [],
"baseUrl": ".",
"paths": {
"@angular/cdk/*": ["../../dist/packages/cdk/*/public-api"],
"@angular/material/*": ["../../dist/packages/material/*/public-api"]
"@angular/cdk/*": ["../../dist/packages/cdk/*"],
"@angular/material/*": ["../../dist/packages/material/*"]
}
},
"files": [
+5
View File
@@ -13,6 +13,11 @@
"@angular/cdk/*": ["../../dist/packages/cdk/*/public-api"]
}
},
"angularCompilerOptions": {
"strictMetadataEmit": true,
"skipTemplateCodegen": true,
"emitDecoratorMetadata": true
},
"include": [
"**/*.spec.ts",
"index.ts"
@@ -9,6 +9,6 @@
<mat-form-field [color]="options.value.color">
<input matInput type="number" placeholder="Font size (px)" formControlName="fontSize" min="10">
<mat-error *ngIf="options.get('fontSize').invalid">Min size: 10px</mat-error>
<mat-error *ngIf="options.get('fontSize')?.invalid">Min size: 10px</mat-error>
</mat-form-field>
</form>
+3 -3
View File
@@ -22,10 +22,10 @@
"types": [],
"baseUrl": ".",
"paths": {
"@angular/material/*": ["../../dist/packages/material/*/public-api"],
"@angular/material/*": ["../../dist/packages/material/*"],
"@angular/material": ["../../dist/packages/material/public-api"],
"@angular/material-moment-adapter": ["../../dist/packages/material-moment-adapter/public-api"],
"@angular/cdk/*": ["../../dist/packages/cdk/*/public-api"]
"@angular/material-moment-adapter": ["../../dist/packages/material-moment-adapter"],
"@angular/cdk/*": ["../../dist/packages/cdk/*"]
}
},
"files": [
+3 -3
View File
@@ -22,10 +22,10 @@
"types": [],
"baseUrl": ".",
"paths": {
"@angular/material/*": ["../../dist/packages/material/*/public-api"],
"@angular/material/*": ["../../dist/packages/material/*"],
"@angular/material": ["../../dist/packages/material/public-api"],
"@angular/material-moment-adapter": ["../../dist/packages/material-moment-adapter/public-api"],
"@angular/cdk/*": ["../../dist/packages/cdk/*/public-api"]
"@angular/material-moment-adapter": ["../../dist/packages/material-moment-adapter"],
"@angular/cdk/*": ["../../dist/packages/cdk/*"]
}
},
"files": [
@@ -22,9 +22,9 @@
"skipLibCheck": true,
"types": [],
"paths": {
"@angular/material/*": ["../../dist/packages/material/*/public-api"],
"@angular/material/*": ["../../dist/packages/material/*"],
"@angular/material": ["../../dist/packages/material/public-api"],
"@angular/cdk/*": ["../../dist/packages/cdk/*/public-api"]
"@angular/cdk/*": ["../../dist/packages/cdk/*"]
}
},
"files": [
@@ -23,9 +23,9 @@
"skipLibCheck": true,
"types": [],
"paths": {
"@angular/material/*": ["../../dist/packages/material/*/public-api"],
"@angular/material": ["../../dist/packages/material/public-api"],
"@angular/cdk/*": ["../../dist/packages/cdk/*/public-api"]
"@angular/material/*": ["../../dist/packages/material/*"],
"@angular/material": ["../../dist/packages/material"],
"@angular/cdk/*": ["../../dist/packages/cdk/*"]
}
},
"files": [
@@ -9,6 +9,11 @@
"target": "es5",
"types": ["jasmine"]
},
"angularCompilerOptions": {
"strictMetadataEmit": true,
"skipTemplateCodegen": true,
"emitDecoratorMetadata": true
},
"include": [
"**/*.spec.ts",
"index.ts"
+2 -1
View File
@@ -5,7 +5,8 @@
"declaration": true,
"stripInternal": false,
"experimentalDecorators": true,
"noUnusedParameters": true,
// TODO(crisbeto): disabled due to https://github.com/angular/angular/issues/17131
"noUnusedParameters": false,
"strictNullChecks": true,
"module": "commonjs",
"moduleResolution": "node",
+10 -10
View File
@@ -10,16 +10,16 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^4.4.4",
"@angular/animations": "~5.0.0-rc.9",
"@angular/cdk": "github:angular/cdk-builds",
"@angular/common": "^4.4.4",
"@angular/compiler": "^4.4.4",
"@angular/core": "^4.4.4",
"@angular/forms": "^4.4.4",
"@angular/common": "~5.0.0-rc.9",
"@angular/compiler": "~5.0.0-rc.9",
"@angular/core": "~5.0.0-rc.9",
"@angular/forms": "~5.0.0-rc.9",
"@angular/material": "github:angular/material2-builds",
"@angular/platform-browser": "^4.4.4",
"@angular/platform-browser-dynamic": "^4.4.4",
"@angular/router": "^4.4.4",
"@angular/platform-browser": "~5.0.0-rc.9",
"@angular/platform-browser-dynamic": "~5.0.0-rc.9",
"@angular/router": "~5.0.0-rc.9",
"@swimlane/ngx-charts": "^6.0.0",
"angularfire2": "^5.0.0-rc.2",
"core-js": "^2.4.1",
@@ -30,8 +30,8 @@
},
"devDependencies": {
"@angular/cli": "^1.2.0",
"@angular/compiler-cli": "^4.4.4",
"@angular/language-service": "^4.4.4",
"@angular/compiler-cli": "~5.0.0-rc.9",
"@angular/language-service": "~5.0.0-rc.9",
"@types/jasmine": "2.5.45",
"@types/node": "~6.0.60",
"ts-node": "~3.0.4",
+4 -4
View File
@@ -41,7 +41,7 @@ task('payload', ['material:clean-build'], async () => {
openFirebaseDashboardApp() :
openFirebaseDashboardAppAsGuest();
const database = firebaseApp.database();
const currentSha = process.env['TRAVIS_PULL_REQUEST_SHA'] || process.env['TRAVIS_COMMIT'];
const currentSha = process.env['TRAVIS_PULL_REQUEST_SHA']! || process.env['TRAVIS_COMMIT']!;
// Upload the payload results and calculate the payload diff in parallel. Otherwise the
// payload task will take much more time inside of Travis builds.
@@ -72,7 +72,7 @@ function getFilesize(filePath: string) {
*/
async function calculatePayloadDiff(database: firebaseAdmin.database.Database, currentSha: string,
currentPayload: any) {
const authToken = process.env['FIREBASE_ACCESS_TOKEN'];
const authToken = process.env['FIREBASE_ACCESS_TOKEN']!;
if (!authToken) {
console.error('Cannot calculate Payload diff because there is no "FIREBASE_ACCESS_TOKEN" ' +
@@ -157,7 +157,7 @@ async function getPayloadResults(database: firebaseAdmin.database.Database, comm
/** Gets the SHA of the commit where the payload was uploaded before this Travis Job started. */
function getCommitFromPreviousPayloadUpload(): string {
if (isTravisMasterBuild()) {
const commitRange = process.env['TRAVIS_COMMIT_RANGE'];
const commitRange = process.env['TRAVIS_COMMIT_RANGE']!;
// In some situations, Travis will include multiple commits in a single Travis Job. This means
// that we can't just resolve the previous commit by using the parent commit of HEAD.
// By resolving the amount of commits inside of the current Travis Job, we can figure out
@@ -171,7 +171,7 @@ function getCommitFromPreviousPayloadUpload(): string {
// Travis applies the changes of Pull Requests in new branches. This means that resolving
// the commit that previously ran on the target branch (mostly "master") can be done
// by just loading the SHA of the most recent commit in the target branch.
return spawnSync('git', ['rev-parse', process.env['TRAVIS_BRANCH']]).stdout.toString().trim();
return spawnSync('git', ['rev-parse', process.env['TRAVIS_BRANCH']!]).stdout.toString().trim();
}
}
+1 -1
View File
@@ -36,7 +36,7 @@ const FIREBASE_STORAGE_GOLDENS = 'goldens';
/** Task which upload screenshots generated from e2e test. */
task('screenshots', () => {
const prNumber = process.env['TRAVIS_PULL_REQUEST'];
const prNumber = process.env['TRAVIS_PULL_REQUEST']!;
if (isTravisMasterBuild()) {
// Only update goldens for master build
+2 -2
View File
@@ -19,7 +19,7 @@ export function openFirebaseDashboardApp() {
client_email: 'material2-board@appspot.gserviceaccount.com',
// In Travis CI the private key will be incorrect because the line-breaks are escaped.
// The line-breaks need to persist in the service account private key.
private_key: decode(process.env['MATERIAL2_BOARD_FIREBASE_SERVICE_KEY'])
private_key: decode(process.env['MATERIAL2_BOARD_FIREBASE_SERVICE_KEY']!)
}),
});
}
@@ -38,7 +38,7 @@ export function openScreenshotsBucket() {
projectId: 'material2-screenshots',
credentials: {
client_email: 'firebase-adminsdk-t4209@material2-screenshots.iam.gserviceaccount.com',
private_key: decode(process.env['MATERIAL2_SCREENSHOT_FIREBASE_KEY'])
private_key: decode(process.env['MATERIAL2_SCREENSHOT_FIREBASE_KEY']!)
},
});
+18 -5
View File
@@ -1,5 +1,6 @@
import {join} from 'path';
import {main as ngc} from '@angular/tsc-wrapped';
import {join, resolve as resolvePath} from 'path';
import {spawn} from 'child_process';
import {red} from 'chalk';
import {PackageBundler} from './build-bundles';
import {buildConfig} from './build-config';
import {getSecondaryEntryPointsForPackage} from './secondary-entry-points';
@@ -102,12 +103,24 @@ export class BuildPackage {
}
/** Compiles the TypeScript sources of a primary or secondary entry point. */
private async _compileTestEntryPoint(tsconfigName: string, secondaryEntryPoint = '') {
private _compileTestEntryPoint(tsconfigName: string, secondaryEntryPoint = ''): Promise<any> {
const entryPointPath = join(this.sourceDir, secondaryEntryPoint);
const entryPointTsconfigPath = join(entryPointPath, tsconfigName);
await ngc(entryPointTsconfigPath, {basePath: entryPointPath});
renamePrivateReExportsToBeUnique(this, secondaryEntryPoint);
return new Promise((resolve, reject) => {
const ngcPath = resolvePath('./node_modules/.bin/ngc');
const childProcess = spawn(ngcPath, ['-p', entryPointTsconfigPath], {shell: true});
// Pipe stdout and stderr from the child process.
childProcess.stdout.on('data', (data: any) => console.log(`${data}`));
childProcess.stderr.on('data', (data: any) => console.error(red(`${data}`)));
childProcess.on('exit', (exitCode: number) => exitCode === 0 ? resolve() : reject());
})
.catch(() => {
const error = red(`Failed to compile ${secondaryEntryPoint} using ${entryPointTsconfigPath}`);
console.error(error);
});
}
/** Stores the secondary entry-points for this package if they haven't been computed already. */
+4 -1
View File
@@ -24,7 +24,10 @@ export async function compileEntryPoint(buildPackage: BuildPackage, tsconfigName
childProcess.on('exit', (exitCode: number) => exitCode === 0 ? resolve() : reject());
})
.catch(() => console.error(red(`Failed to compile ${secondaryEntryPoint}`)));
.catch(() => {
const error = red(`Failed to compile ${secondaryEntryPoint} using ${entryPointTsconfigPath}`);
console.error(error);
});
}
/** Renames `ɵa`-style re-exports generated by Angular to be unique across compilation units. */
+2 -1
View File
@@ -45,7 +45,8 @@ export function createPackageBuildTasks(buildPackage: BuildPackage) {
// Build all required packages before building.
...dependencyNames.map(pkgName => `${pkgName}:build`),
// Build ESM and assets output.
[`${taskName}:build:esm`, `${taskName}:assets`],
`${taskName}:assets`,
`${taskName}:build:esm`,
// Inline assets into ESM output.
`${taskName}:assets:inline`,
// Build bundles on top of inlined ESM output.
+11 -11
View File
@@ -9,26 +9,26 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^4.4.4",
"@angular/animations": "~5.0.0-rc.9",
"@angular/cdk": "angular/cdk-builds",
"@angular/common": "^4.4.4",
"@angular/compiler": "^4.4.4",
"@angular/compiler-cli": "^4.4.4",
"@angular/core": "^4.4.4",
"@angular/forms": "^4.4.4",
"@angular/common": "~5.0.0-rc.9",
"@angular/compiler": "~5.0.0-rc.9",
"@angular/compiler-cli": "~5.0.0-rc.9",
"@angular/core": "~5.0.0-rc.9",
"@angular/forms": "~5.0.0-rc.9",
"@angular/material": "angular/material2-builds",
"@angular/platform-browser": "^4.4.4",
"@angular/platform-browser-dynamic": "^4.4.4",
"@angular/router": "^4.4.4",
"@angular/platform-browser": "~5.0.0-rc.9",
"@angular/platform-browser-dynamic": "~5.0.0-rc.9",
"@angular/router": "~5.0.0-rc.9",
"core-js": "^2.4.1",
"firebase": "^3.7.6",
"rxjs": "^5.0.1",
"ts-helpers": "^1.1.1",
"zone.js": "^0.8.4"
"zone.js": "^0.8.12"
},
"devDependencies": {
"@angular/cli": "^1.0.0",
"@angular/compiler-cli": "^4.4.4",
"@angular/compiler-cli": "~5.0.0-rc.9",
"@types/node": "^6.0.42",
"ts-node": "1.2.1",
"typescript": "~2.2.1"