Compare commits

...

21 Commits

Author SHA1 Message Date
Alex Rickabaugh bd58e129cf docs: add changelog for 4.2.2 2017-06-12 15:36:19 -07:00
Alex Rickabaugh e55bb7ba13 release: cut the 4.2.2 release 2017-06-12 15:36:05 -07:00
Tobias Bosch ed73d4f3ac refactor(compiler): don’t always compile .ngfactory.ts files by default
This puts the behavior introduced in https://github.com/angular/angular/commit/573b8611bc4ab85a7436ee110526678a0ecf6c76 behind the new flag
`alwaysCompileGeneratedCode` to not break users that might have relied
on this behavior.
2017-06-12 15:27:02 -07:00
Matias Niemelä 6ca46929fa fix(animations): properly collect :enter nodes in a partially updated collection
This PR fixes an issue where `query(':enter')` will only collect elements up until it an element that is found that isn't apart of the `:enter` query.

Closes #17440
2017-06-12 15:26:46 -07:00
Matias Niemelä 185075d870 fix(animations): compute removal node height correctly 2017-06-12 12:18:26 -07:00
Matias Niemelä 451257a2fd fix(animations): do not treat a 0 animation state as void 2017-06-12 12:18:15 -07:00
Georgios Kalpakas 3d5f520ff0 test(aio): fix Chrome getting disconnected during unit tests
Chrome (v58+) often gets disconnected during unit tests (causing them to fail).
This has been happening locally (on Windows) and on Travis. The exact reasons
are not known, but it seems that some of the `AppComponent` tests are to blame.

Based on the discussion in https://github.com/jasmine/jasmine/issues/1327 (and
plenty of trial-and-error), using Jasmine's `done()` callback before each of
test (even calling it synchronously) fixes the issue.
2017-06-12 13:59:44 +01:00
Georgios Kalpakas a1065bfaf0 build(aio): upgrade Jasmine-related dependencies
According to https://github.com/jasmine/jasmine/issues/1327#issuecomment-306924549,
this might help with help with frequent DISCONNECTED errors (especially on Travis).
2017-06-12 13:59:44 +01:00
Georgios Kalpakas d6f345cc3c build(aio): upgrade Karma-related dependencies 2017-06-12 13:59:44 +01:00
Georgios Kalpakas d961911a98 docs(aio): fix broken example in upgrade guide
Fixes #17109
2017-06-11 18:37:27 +01:00
Peter Bacon Darwin e543272eb3 fix(aio): remove gap between sidenav menus
Fixes #17394
2017-06-11 15:05:04 +01:00
Igor Minar c8c0ceeee9 build(bazel): fix the typescript path in the BUILD file (#17316) 2017-06-09 18:32:36 -07:00
Igor Minar afbc2b0082 build(aio): upgrade purify to deal with messed up comment in animations code 2017-06-09 18:31:50 -07:00
Igor Minar 69ec1e2e31 build(aio): upgrade to @angular/*@4.2.1 2017-06-09 18:31:50 -07:00
Igor Minar ff15509bc7 build(aio): turn on webpack 3.0 scope-hoisting 2017-06-09 18:31:50 -07:00
Igor Minar 7e22a2fc0b build(aio): remove duplicate webpack version 2017-06-09 18:31:50 -07:00
Igor Minar 0a48c92d2c build(aio): upgrade to purify 0.0.24 that supports webpack 3.0 2017-06-09 18:31:50 -07:00
Igor Minar 991ca92a9d build(aio): turn off vendor chunking
This was done to prevent webpack from generating cross chunk registry calls which prevent DCE.
2017-06-09 18:31:50 -07:00
Igor Minar c550f885a4 build(aio): upgrade to an unreleased version of cli with webpack 3.0-rc.0 2017-06-09 18:31:50 -07:00
Igor Minar 851038c3a8 build(aio): upgrade @angular/service-worker to beta.15 2017-06-09 18:31:50 -07:00
Jesús Rodríguez df7774c018 docs(aio): restore animation original value (#17385) 2017-06-09 18:27:11 -07:00
24 changed files with 587 additions and 278 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ filegroup(
# Performance workaround: list individual files
# This won't scale in the general case.
# TODO(alexeagle): figure out what to do
"node_modules/typescript/lib/**",
"node_modules/typescript/**",
"node_modules/zone.js/**/*.d.ts",
"node_modules/rxjs/**/*.d.ts",
"node_modules/@types/**/*.d.ts",
+13
View File
@@ -1,3 +1,16 @@
<a name="4.2.2"></a>
## [4.2.2](https://github.com/angular/angular/compare/4.2.1...4.2.2) (2017-06-12)
### Bug Fixes
* **animations:** compute removal node height correctly ([185075d](https://github.com/angular/angular/commit/185075d))
* **animations:** do not treat a `0` animation state as `void` ([451257a](https://github.com/angular/angular/commit/451257a))
* **animations:** properly collect :enter nodes in a partially updated collection ([6ca4692](https://github.com/angular/angular/commit/6ca4692)), closes [#17440](https://github.com/angular/angular/issues/17440)
* **compiler:** don’t always compile `.ngfactory.ts` files by default ([ed73d4f](https://github.com/angular/angular/commit/ed73d4f3ac6b542bf5ea3eb73fbe91e2ceabcdb4))
<a name="4.2.1"></a>
## [4.2.1](https://github.com/angular/angular/compare/4.2.0-rc.2...4.2.1) (2017-06-09)
@@ -44,7 +44,7 @@ import { Heroes } from './hero.service';
animate('0.2s ease-in')
]),
transition('* => void', [
animate('0.2s 10s ease-out', style({
animate('0.2s 0.1s ease-out', style({
opacity: 0,
transform: 'translateX(100%)'
}))
@@ -1,11 +1,6 @@
// #docregion bootstrap
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { UpgradeModule } from '@angular/upgrade/static';
import { AppModule } from './app.module';
platformBrowserDynamic().bootstrapModule(AppModule).then(platformRef => {
const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule;
upgrade.bootstrap(document.documentElement, ['phonecatApp']);
});
platformBrowserDynamic().bootstrapModule(AppModule);
// #enddocregion bootstrap
@@ -7,12 +7,6 @@ import { browser, element, by } from 'protractor';
describe('PhoneCat Application', function() {
beforeAll(function () {
// Set protractor to hybrid mode.
browser.rootEl = 'body';
browser.ng12Hybrid = true;
});
it('should redirect `index.html` to `index.html#!/phones', function() {
browser.get('index.html');
expect(browser.getLocationAbsUrl()).toBe('/phones');
@@ -70,7 +64,7 @@ describe('PhoneCat Application', function() {
query.sendKeys('nexus');
element.all(by.css('.phones li a')).first().click();
browser.sleep(200); // Not sure why this is needed but it is. The route change works fine.
browser.sleep(1000); // Not sure why this is needed but it is. The route change works fine.
expect(browser.getLocationAbsUrl()).toBe('/phones/nexus-s');
});
+22 -23
View File
@@ -8,7 +8,7 @@
"scripts": {
"ng": "yarn check-env && ng",
"start": "yarn check-env && ng serve",
"build": "yarn check-env && yarn setup && ng build -prod -sm && yarn sw-manifest && yarn sw-copy",
"build": "yarn check-env && yarn setup && ng build -prod -sm -vc=false && yarn sw-manifest && yarn sw-copy",
"lint": "yarn check-env && yarn docs-lint && ng lint && yarn example-lint",
"test": "yarn check-env && ng test",
"pree2e": "yarn ~~update-webdriver",
@@ -35,22 +35,22 @@
"sw-manifest": "ngu-sw-manifest --dist dist --in ngsw-manifest.json --out dist/ngsw-manifest.json",
"sw-copy": "cp node_modules/@angular/service-worker/bundles/worker-basic.min.js dist/",
"postinstall": "node tools/cli-patches/patch.js",
"build-ie-polyfills": "webpack -p src/ie-polyfills.js src/generated/ie-polyfills.min.js"
"build-ie-polyfills": "node node_modules/webpack/bin/webpack.js -p src/ie-polyfills.js src/generated/ie-polyfills.min.js"
},
"private": true,
"dependencies": {
"@angular/animations": "4.2.0",
"@angular/common": "4.2.0",
"@angular/compiler": "4.2.0",
"@angular/core": "4.2.0",
"@angular/forms": "4.2.0",
"@angular/http": "4.2.0",
"@angular/animations": "4.2.1",
"@angular/common": "4.2.1",
"@angular/compiler": "4.2.1",
"@angular/core": "4.2.1",
"@angular/forms": "4.2.1",
"@angular/http": "4.2.1",
"@angular/material": "^2.0.0-beta.3",
"@angular/platform-browser": "4.2.0",
"@angular/platform-browser-dynamic": "4.2.0",
"@angular/platform-server": "4.2.0",
"@angular/router": "4.2.0",
"@angular/service-worker": "^1.0.0-beta.12",
"@angular/platform-browser": "4.2.1",
"@angular/platform-browser-dynamic": "4.2.1",
"@angular/platform-server": "4.2.1",
"@angular/router": "4.2.1",
"@angular/service-worker": "^1.0.0-beta.15",
"classlist.js": "^1.1.20150312",
"core-js": "^2.4.1",
"ng-pwa-tools": "^0.0.10",
@@ -62,8 +62,8 @@
"zone.js": "^0.8.4"
},
"devDependencies": {
"@angular/cli": "^1.1.0-rc.0",
"@angular/compiler-cli": "4.2.0",
"@angular/cli": "angular/cli-builds#webpack-next",
"@angular/compiler-cli": "4.2.1",
"@types/jasmine": "^2.5.47",
"@types/node": "~6.0.60",
"archiver": "^1.3.0",
@@ -85,14 +85,14 @@
"http-server": "^0.9.0",
"ignore": "^3.3.3",
"image-size": "^0.5.1",
"jasmine-core": "~2.5.2",
"jasmine-spec-reporter": "~3.2.0",
"jasmine-core": "^2.6.3",
"jasmine-spec-reporter": "^4.1.0",
"jsdom": "^9.12.0",
"karma": "~1.4.1",
"karma-chrome-launcher": "~2.0.0",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^0.2.0",
"karma-jasmine": "~1.1.0",
"karma": "^1.7.0",
"karma-chrome-launcher": "^2.1.1",
"karma-cli": "^1.0.1",
"karma-coverage-istanbul-reporter": "^1.3.0",
"karma-jasmine": "^1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"lighthouse": "^1.6.3",
"lodash": "^4.17.4",
@@ -113,7 +113,6 @@
"unist-util-visit": "^1.1.1",
"vrsource-tslint-rules": "^4.0.1",
"watchr": "^3.0.1",
"webpack": "^2.5.1",
"yargs": "^7.0.2"
}
}
+4 -1
View File
@@ -59,9 +59,12 @@ describe('AppComponent', () => {
describe('with proper DocViewer', () => {
beforeEach(() => {
// For reasons unknown, not using `done` (even calling it synchronously),
// causes Chrome (v58+) to often get disconnected (at least on Windows and Travis).
beforeEach(done => {
createTestingModule('a/b');
initializeTest();
done();
});
it('should create', () => {
+4 -1
View File
@@ -10,7 +10,6 @@
aio-nav-menu {
display: block;
padding: 16px 0 0;
margin: 0 auto;
font-size: 13px;
ul, a {
@@ -18,6 +17,10 @@ aio-nav-menu {
margin: 0;
}
&:first-child {
margin-top: 16px;
}
aio-nav-item div a {
padding-left: 16px;
}
+1
View File
@@ -7,5 +7,6 @@ if (!fs.existsSync(PATCH_LOCK)) {
sh.touch(PATCH_LOCK);
sh.exec(`patch -p0 -i tools/cli-patches/ngo-loader.patch &&
patch -p0 -i node_modules/purify/angular-cli.patch &&
patch -p0 -i tools/cli-patches/scope-hoisting.patch &&
patch -p0 -i tools/cli-patches/uglify-config.patch`);
}
@@ -0,0 +1,10 @@
--- node_modules/@angular/cli/models/webpack-configs/production.js 2017-05-24 15:36:43.000000000 -0700
+++ node_modules/@angular/cli/models/webpack-configs/production.js 2017-05-24 15:37:04.000000000 -0700
@@ -85,6 +85,7 @@
'NODE_ENV': 'production'
}),
new webpack.HashedModuleIdsPlugin(),
+ new webpack.optimize.ModuleConcatenationPlugin(),
new (require("purify/purify-webpack-plugin"))(),
new webpack.optimize.UglifyJsPlugin({
mangle: true,
+3 -3
View File
@@ -1,11 +1,11 @@
--- node_modules/@angular/cli/models/webpack-configs/production.js 2017-05-24 15:36:43.000000000 -0700
+++ node_modules/@angular/cli/models/webpack-configs/production.js 2017-05-24 15:37:04.000000000 -0700
@@ -81,7 +81,7 @@
@@ -82,7 +82,7 @@
new (require("purify/purify-webpack-plugin"))(),
new webpack.optimize.UglifyJsPlugin({
mangle: { screw_ie8: true },
- compress: { screw_ie8: true, warnings: buildOptions.verbose },
+ compress: { screw_ie8: true, warnings: buildOptions.verbose, pure_getters: true },
sourceMap: buildOptions.sourcemaps
sourceMap: buildOptions.sourcemaps,
comments: false
})
].concat(extraPlugins)
+207 -193
View File
@@ -2,18 +2,18 @@
# yarn lockfile v1
"@angular/animations@4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-4.2.0.tgz#e964fc56c9621f28679f24d5e69026e2d1571425"
"@angular/animations@4.2.1":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-4.2.1.tgz#4c8788192f14c74eb02a0fc8dc387177abb1ff24"
dependencies:
tslib "^1.7.1"
"@angular/cli@^1.1.0-rc.0":
version "1.1.0-rc.0"
resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-1.1.0-rc.0.tgz#126232fc9f5b3e1b170c0c04e27d2171a0497853"
"@angular/cli@angular/cli-builds#webpack-next":
version "1.2.0-beta.0-7c33dd4"
resolved "https://codeload.github.com/angular/cli-builds/tar.gz/b4bb5968c04c92fd816c434044e28bbfc60b296c"
dependencies:
"@ngtools/json-schema" "1.1.0-beta.0"
"@ngtools/webpack" "1.3.1"
"@ngtools/json-schema" "1.1.0"
"@ngtools/webpack" "https://github.com/angular/ngtools-webpack-builds.git#7c33dd4"
autoprefixer "^6.5.3"
chalk "^1.1.3"
common-tags "^1.3.1"
@@ -38,7 +38,9 @@
json-loader "^0.5.4"
less "^2.7.2"
less-loader "^4.0.2"
license-webpack-plugin "^0.4.2"
lodash "^4.11.1"
memory-fs "^0.4.1"
minimatch "^3.0.3"
node-modules-path "^1.0.0"
nopt "^4.0.1"
@@ -63,7 +65,7 @@
typescript ">=2.0.0 <2.4.0"
url-loader "^0.5.7"
walk-sync "^0.3.1"
webpack "~2.4.0"
webpack "3.0.0-rc.1"
webpack-dev-middleware "^1.10.2"
webpack-dev-server "~2.4.5"
webpack-merge "^2.4.0"
@@ -71,41 +73,41 @@
optionalDependencies:
node-sass "^4.3.0"
"@angular/common@4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@angular/common/-/common-4.2.0.tgz#5df34718bcefc49918bfcb2683f6c19720b66a61"
"@angular/common@4.2.1":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@angular/common/-/common-4.2.1.tgz#cb334e3b71f4d3e9f34b7ad942c548d3f936dfc8"
dependencies:
tslib "^1.7.1"
"@angular/compiler-cli@4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-4.2.0.tgz#bd6f6b71f003df48a8f86184a8c16533afdf23ec"
"@angular/compiler-cli@4.2.1":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-4.2.1.tgz#961d9a89ad3c9a8c42172a9c38114d34f90e507d"
dependencies:
"@angular/tsc-wrapped" "4.2.0"
"@angular/tsc-wrapped" "4.2.1"
minimist "^1.2.0"
reflect-metadata "^0.1.2"
"@angular/compiler@4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-4.2.0.tgz#a21df81995b210f822ffd70b57247d474876fbed"
"@angular/compiler@4.2.1":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-4.2.1.tgz#8d77b458e04b887947d85adccd7546e4a987d4b0"
dependencies:
tslib "^1.7.1"
"@angular/core@4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@angular/core/-/core-4.2.0.tgz#8bf57d01379c2a9e29476ad569dec9e20d5b17dc"
"@angular/core@4.2.1":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@angular/core/-/core-4.2.1.tgz#0865304b3df43046919b646f02fdeda85a0c4685"
dependencies:
tslib "^1.7.1"
"@angular/forms@4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-4.2.0.tgz#cb3ae69172e254452fa77578605ebc1bb72138c9"
"@angular/forms@4.2.1":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-4.2.1.tgz#ad172cfd3070743b2a7a8161d2c75ac7f5b61f62"
dependencies:
tslib "^1.7.1"
"@angular/http@4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@angular/http/-/http-4.2.0.tgz#484af53639e04a68834c5167a1955d2d0cde8e1c"
"@angular/http@4.2.1":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@angular/http/-/http-4.2.1.tgz#d9e6e348c8753d318c761d7f4b4d9f05fec40ef9"
dependencies:
tslib "^1.7.1"
@@ -113,52 +115,52 @@
version "2.0.0-beta.4"
resolved "https://registry.yarnpkg.com/@angular/material/-/material-2.0.0-beta.4.tgz#137ef759867213308613172c54dfe69061a10829"
"@angular/platform-browser-dynamic@4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.2.0.tgz#b84c05616bd824e15b52b2b85c47b58b25d0158a"
"@angular/platform-browser-dynamic@4.2.1":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.2.1.tgz#0832d21ba3481d91f4056c6a95429f9fcf76524c"
dependencies:
tslib "^1.7.1"
"@angular/platform-browser@4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-4.2.0.tgz#dfd782e7ebacba1bbe2ae0556d5d7fb012f2a6cd"
"@angular/platform-browser@4.2.1":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-4.2.1.tgz#1f01d4d31fa390211826266cf6e3a3f629860f1d"
dependencies:
tslib "^1.7.1"
"@angular/platform-server@4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-4.2.0.tgz#90add7fcd9c4f568a31058c9d93a9aca09eb4c58"
"@angular/platform-server@4.2.1":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-4.2.1.tgz#5452dc71b98ce8a63d85bb89b47b4dc65e173e84"
dependencies:
parse5 "^3.0.1"
tslib "^1.7.1"
xhr2 "^0.1.4"
"@angular/router@4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@angular/router/-/router-4.2.0.tgz#7cda9a23621ee41b466eced8bb4cbb62237ba6b9"
"@angular/router@4.2.1":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@angular/router/-/router-4.2.1.tgz#b64a0d87e5cd022f3d3c52ec8b7bab90b2e3f198"
dependencies:
tslib "^1.7.1"
"@angular/service-worker@^1.0.0-beta.12":
version "1.0.0-beta.13"
resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-1.0.0-beta.13.tgz#fa9383d3cc06d32eabd0fcd2c78a9ea1fe8824da"
"@angular/service-worker@^1.0.0-beta.15":
version "1.0.0-beta.15"
resolved "https://registry.yarnpkg.com/@angular/service-worker/-/service-worker-1.0.0-beta.15.tgz#222fab4570ba1e77c56b54181aa55d26d4f60cc9"
dependencies:
base64-js "^1.1.2"
jshashes "^1.0.5"
"@angular/tsc-wrapped@4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@angular/tsc-wrapped/-/tsc-wrapped-4.2.0.tgz#e62ce9953c27ba96e4c6daf117f10e31169ccea2"
"@angular/tsc-wrapped@4.2.1":
version "4.2.1"
resolved "https://registry.yarnpkg.com/@angular/tsc-wrapped/-/tsc-wrapped-4.2.1.tgz#a28a369b434c3819d55d1ca27d2353057a79c979"
dependencies:
tsickle "^0.21.0"
"@ngtools/json-schema@1.1.0-beta.0":
version "1.1.0-beta.0"
resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0-beta.0.tgz#6e1e91f26fc46bd5afc8671501560c94e5fc7c4d"
"@ngtools/json-schema@1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0.tgz#c3a0c544d62392acc2813a42c8a0dc6f58f86922"
"@ngtools/webpack@1.3.1":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-1.3.1.tgz#12149b6b9cb3bf858f4b2ae9650456e17674d2eb"
"@ngtools/webpack@https://github.com/angular/ngtools-webpack-builds.git#7c33dd4":
version "1.4.0-7c33dd4"
resolved "https://github.com/angular/ngtools-webpack-builds.git#7c33dd4"
dependencies:
enhanced-resolve "^3.1.0"
loader-utils "^1.0.2"
@@ -258,10 +260,14 @@ agent-base@2:
extend "~3.0.0"
semver "~5.0.1"
ajv-keywords@^1.0.0, ajv-keywords@^1.1.1:
ajv-keywords@^1.0.0:
version "1.5.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
ajv-keywords@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0"
ajv@^4.11.2, ajv@^4.7.0, ajv@^4.9.1:
version "4.11.8"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
@@ -269,6 +275,13 @@ ajv@^4.11.2, ajv@^4.7.0, ajv@^4.9.1:
co "^4.6.0"
json-stable-stringify "^1.0.1"
ajv@^5.1.5:
version "5.1.5"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.1.5.tgz#8734931b601f00d4feef7c65738d77d1b65d1f68"
dependencies:
co "^4.6.0"
json-stable-stringify "^1.0.1"
align-text@^0.1.1, align-text@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
@@ -732,20 +745,20 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
version "4.11.6"
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
body-parser@^1.12.4:
version "1.17.1"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.1.tgz#75b3bc98ddd6e7e0d8ffe750dfaca5c66993fa47"
body-parser@^1.16.1:
version "1.17.2"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.17.2.tgz#f8892abc8f9e627d42aedafbca66bf5ab99104ee"
dependencies:
bytes "2.4.0"
content-type "~1.0.2"
debug "2.6.1"
debug "2.6.7"
depd "~1.1.0"
http-errors "~1.6.1"
iconv-lite "0.4.15"
on-finished "~2.3.0"
qs "6.4.0"
raw-body "~2.2.0"
type-is "~1.6.14"
type-is "~1.6.15"
boolbase@~1.0.0:
version "1.0.0"
@@ -1419,7 +1432,7 @@ connect-query@^0.2.0:
dependencies:
qs "~1.1.0"
connect@^3.3.3, connect@^3.3.5:
connect@^3.3.3, connect@^3.6.0:
version "3.6.1"
resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.1.tgz#b7760693a74f0454face1d9378edb3f885b43227"
dependencies:
@@ -1771,12 +1784,18 @@ date-now@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
debug@*, debug@2, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.6.3:
debug@*, debug@^2.1.1, debug@^2.1.3, debug@^2.2.0:
version "2.6.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.6.tgz#a9fa6fbe9ca43cf1e79f73b75c0189cbb7d6db5a"
dependencies:
ms "0.7.3"
debug@2, debug@2.6.7, debug@^2.6.3:
version "2.6.7"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e"
dependencies:
ms "2.0.0"
debug@2.2.0, debug@~2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
@@ -2142,9 +2161,9 @@ end-of-stream@^1.0.0:
dependencies:
once "^1.4.0"
engine.io-client@1.8.2:
version "1.8.2"
resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766"
engine.io-client@1.8.3:
version "1.8.3"
resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.3.tgz#1798ed93451246453d4c6f635d7a201fe940d5ab"
dependencies:
component-emitter "1.2.1"
component-inherit "0.0.3"
@@ -2155,7 +2174,7 @@ engine.io-client@1.8.2:
parsejson "0.0.3"
parseqs "0.0.5"
parseuri "0.0.5"
ws "1.1.1"
ws "1.1.2"
xmlhttprequest-ssl "1.5.3"
yeast "0.1.2"
@@ -2170,16 +2189,16 @@ engine.io-parser@1.3.2:
has-binary "0.1.7"
wtf-8 "1.0.0"
engine.io@1.8.2:
version "1.8.2"
resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e"
engine.io@1.8.3:
version "1.8.3"
resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.3.tgz#8de7f97895d20d39b85f88eeee777b2bd42b13d4"
dependencies:
accepts "1.3.3"
base64id "1.0.0"
cookie "0.3.1"
debug "2.3.3"
engine.io-parser "1.3.2"
ws "1.1.1"
ws "1.1.2"
enhanced-resolve@^3.0.0, enhanced-resolve@^3.1.0:
version "3.1.0"
@@ -3769,18 +3788,18 @@ isstream@0.1.x, isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
istanbul-api@^1.1.1:
version "1.1.8"
resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.8.tgz#a844e55c6f9aeee292e7f42942196f60b23dc93e"
istanbul-api@^1.1.8:
version "1.1.9"
resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.9.tgz#2827920d380d4286d857d57a2968a841db8a7ec8"
dependencies:
async "^2.1.4"
fileset "^2.0.2"
istanbul-lib-coverage "^1.1.0"
istanbul-lib-hook "^1.0.6"
istanbul-lib-instrument "^1.7.1"
istanbul-lib-report "^1.1.0"
istanbul-lib-source-maps "^1.2.0"
istanbul-reports "^1.1.0"
istanbul-lib-coverage "^1.1.1"
istanbul-lib-hook "^1.0.7"
istanbul-lib-instrument "^1.7.2"
istanbul-lib-report "^1.1.1"
istanbul-lib-source-maps "^1.2.1"
istanbul-reports "^1.1.1"
js-yaml "^3.7.0"
mkdirp "^0.5.1"
once "^1.4.0"
@@ -3794,17 +3813,17 @@ istanbul-instrumenter-loader@^2.0.0:
loader-utils "^0.2.16"
object-assign "^4.1.0"
istanbul-lib-coverage@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz#caca19decaef3525b5d6331d701f3f3b7ad48528"
istanbul-lib-coverage@^1.1.0, istanbul-lib-coverage@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da"
istanbul-lib-hook@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.6.tgz#c0866d1e81cf2d5319249510131fc16dee49231f"
istanbul-lib-hook@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc"
dependencies:
append-transform "^0.4.0"
istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.7.1:
istanbul-lib-instrument@^1.1.3:
version "1.7.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.1.tgz#169e31bc62c778851a99439dd99c3cc12184d360"
dependencies:
@@ -3816,42 +3835,54 @@ istanbul-lib-instrument@^1.1.3, istanbul-lib-instrument@^1.7.1:
istanbul-lib-coverage "^1.1.0"
semver "^5.3.0"
istanbul-lib-report@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.0.tgz#444c4ecca9afa93cf584f56b10f195bf768c0770"
istanbul-lib-instrument@^1.7.2:
version "1.7.2"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.2.tgz#6014b03d3470fb77638d5802508c255c06312e56"
dependencies:
istanbul-lib-coverage "^1.1.0"
babel-generator "^6.18.0"
babel-template "^6.16.0"
babel-traverse "^6.18.0"
babel-types "^6.18.0"
babylon "^6.13.0"
istanbul-lib-coverage "^1.1.1"
semver "^5.3.0"
istanbul-lib-report@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9"
dependencies:
istanbul-lib-coverage "^1.1.1"
mkdirp "^0.5.1"
path-parse "^1.0.5"
supports-color "^3.1.2"
istanbul-lib-source-maps@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.0.tgz#8c7706d497e26feeb6af3e0c28fd5b0669598d0e"
istanbul-lib-source-maps@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c"
dependencies:
debug "^2.6.3"
istanbul-lib-coverage "^1.1.0"
istanbul-lib-coverage "^1.1.1"
mkdirp "^0.5.1"
rimraf "^2.6.1"
source-map "^0.5.3"
istanbul-reports@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.0.tgz#1ef3b795889219cfb5fad16365f6ce108d5f8c66"
istanbul-reports@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.1.tgz#042be5c89e175bc3f86523caab29c014e77fee4e"
dependencies:
handlebars "^4.0.3"
jasmine-core@~2.5.2:
version "2.5.2"
resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297"
jasmine-core@^2.6.3:
version "2.6.3"
resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.6.3.tgz#45072950e4a42b1e322fe55c001100a465d77815"
jasmine-core@~2.6.0:
version "2.6.1"
resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.6.1.tgz#66a61cddb699958e3613edef346c996f6311fc3b"
jasmine-spec-reporter@~3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-3.2.0.tgz#fdbe85a80ccdd3b276746bc77fde83c1ce773eff"
jasmine-spec-reporter@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-4.1.0.tgz#b8aa7584df58e4dab61acdbefb76d096aa38663f"
dependencies:
colors "1.1.2"
@@ -4039,24 +4070,25 @@ jws@^3.0.0:
jwa "^1.1.4"
safe-buffer "^5.0.1"
karma-chrome-launcher@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25"
karma-chrome-launcher@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.1.1.tgz#216879c68ac04d8d5140e99619ba04b59afd46cf"
dependencies:
fs-access "^1.0.0"
which "^1.2.1"
karma-cli@~1.0.1:
karma-cli@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-1.0.1.tgz#ae6c3c58a313a1d00b45164c455b9b86ce17f960"
dependencies:
resolve "^1.1.6"
karma-coverage-istanbul-reporter@^0.2.0:
version "0.2.3"
resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-0.2.3.tgz#11f1be9cfa93755a77bac39ab16e315a7100b5c5"
karma-coverage-istanbul-reporter@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.3.0.tgz#d142cd9c55731c9e363ef7374e8ef1a31bebfadb"
dependencies:
istanbul-api "^1.1.1"
istanbul-api "^1.1.8"
minimatch "^3.0.4"
karma-jasmine-html-reporter@^0.2.2:
version "0.2.2"
@@ -4064,20 +4096,20 @@ karma-jasmine-html-reporter@^0.2.2:
dependencies:
karma-jasmine "^1.0.2"
karma-jasmine@^1.0.2, karma-jasmine@~1.1.0:
karma-jasmine@^1.0.2, karma-jasmine@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf"
karma@~1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/karma/-/karma-1.4.1.tgz#41981a71d54237606b0a3ea8c58c90773f41650e"
karma@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/karma/-/karma-1.7.0.tgz#6f7a1a406446fa2e187ec95398698f4cee476269"
dependencies:
bluebird "^3.3.0"
body-parser "^1.12.4"
body-parser "^1.16.1"
chokidar "^1.4.1"
colors "^1.1.0"
combine-lists "^1.0.0"
connect "^3.3.5"
connect "^3.6.0"
core-js "^2.2.0"
di "^0.0.1"
dom-serialize "^2.2.0"
@@ -4089,16 +4121,16 @@ karma@~1.4.1:
lodash "^3.8.0"
log4js "^0.6.31"
mime "^1.3.4"
minimatch "^3.0.0"
minimatch "^3.0.2"
optimist "^0.6.1"
qjobs "^1.1.4"
range-parser "^1.2.0"
rimraf "^2.3.3"
rimraf "^2.6.0"
safe-buffer "^5.0.1"
socket.io "1.7.2"
socket.io "1.7.3"
source-map "^0.5.3"
tmp "0.0.28"
useragent "^2.1.10"
tmp "0.0.31"
useragent "^2.1.12"
kebab-case@^1.0.0:
version "1.0.0"
@@ -4202,6 +4234,12 @@ levn@^0.3.0, levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
license-webpack-plugin@^0.4.2:
version "0.4.3"
resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-0.4.3.tgz#f9d88d4ebc04407a0061e8ccac26571f88e51a16"
dependencies:
object-assign "^4.1.0"
lighthouse@^1.6.3:
version "1.6.5"
resolved "https://registry.yarnpkg.com/lighthouse/-/lighthouse-1.6.5.tgz#7e06a7025c8be298b6f912dbc2f15def1d4b6531"
@@ -4480,7 +4518,7 @@ media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
memory-fs@^0.4.0, memory-fs@~0.4.1:
memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
dependencies:
@@ -4569,7 +4607,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2:
"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
dependencies:
@@ -4628,6 +4666,10 @@ ms@0.7.3, ms@^0.7.1:
version "0.7.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff"
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
mute-stream@0.0.5:
version "0.0.5"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
@@ -5626,8 +5668,8 @@ punycode@^1.2.4, punycode@^1.3.2, punycode@^1.4.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
purify@igorminar/purify:
version "0.0.23"
resolved "https://codeload.github.com/igorminar/purify/tar.gz/98a5c8f39e3dc2954bf87062b5d91c5e4576a26e"
version "0.0.25"
resolved "https://codeload.github.com/igorminar/purify/tar.gz/1b4f00d9c29efad03acc10a69ce280bdf59fc9cb"
dependencies:
tslib "^1.7.1"
@@ -6087,7 +6129,7 @@ right-align@^0.1.1:
dependencies:
align-text "^0.1.1"
rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.1:
rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1:
version "2.6.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
dependencies:
@@ -6415,15 +6457,15 @@ socket.io-adapter@0.5.0:
debug "2.3.3"
socket.io-parser "2.3.1"
socket.io-client@1.7.2:
version "1.7.2"
resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644"
socket.io-client@1.7.3:
version "1.7.3"
resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.3.tgz#b30e86aa10d5ef3546601c09cde4765e381da377"
dependencies:
backo2 "1.0.2"
component-bind "1.0.0"
component-emitter "1.2.1"
debug "2.3.3"
engine.io-client "1.8.2"
engine.io-client "1.8.3"
has-binary "0.1.7"
indexof "0.0.1"
object-component "0.0.3"
@@ -6440,16 +6482,16 @@ socket.io-parser@2.3.1:
isarray "0.0.1"
json3 "3.3.2"
socket.io@1.7.2:
version "1.7.2"
resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71"
socket.io@1.7.3:
version "1.7.3"
resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.3.tgz#b8af9caba00949e568e369f1327ea9be9ea2461b"
dependencies:
debug "2.3.3"
engine.io "1.8.2"
engine.io "1.8.3"
has-binary "0.1.7"
object-assign "4.1.0"
socket.io-adapter "0.5.0"
socket.io-client "1.7.2"
socket.io-client "1.7.3"
socket.io-parser "2.3.1"
sockjs-client@1.1.2:
@@ -6480,9 +6522,9 @@ source-list-map@^0.1.7, source-list-map@~0.1.7:
version "0.1.8"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106"
source-list-map@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-1.1.2.tgz#9889019d1024cce55cdc069498337ef6186a11a1"
source-list-map@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
source-map-loader@^0.2.0:
version "0.2.1"
@@ -6963,19 +7005,13 @@ tmp@0.0.27:
dependencies:
os-tmpdir "~1.0.0"
tmp@0.0.28, tmp@0.0.x:
version "0.0.28"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120"
dependencies:
os-tmpdir "~1.0.1"
tmp@0.0.30:
version "0.0.30"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed"
dependencies:
os-tmpdir "~1.0.1"
tmp@^0.0.31:
tmp@0.0.31, tmp@0.0.x, tmp@^0.0.31:
version "0.0.31"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
dependencies:
@@ -7148,7 +7184,7 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
type-is@~1.6.14:
type-is@~1.6.14, type-is@~1.6.15:
version "1.6.15"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
dependencies:
@@ -7169,17 +7205,13 @@ typescript@2.1:
version "2.1.6"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.1.6.tgz#40c7e6e9e5da7961b7718b55505f9cac9487a607"
typescript@2.3.2, typescript@^2.2.1:
typescript@2.3.2, "typescript@>=2.0.0 <2.4.0", typescript@^2.2.1:
version "2.3.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.2.tgz#f0f045e196f69a72f06b25fd3bd39d01c3ce9984"
"typescript@>=2.0.0 <2.4.0":
version "2.2.0"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.0.tgz#626f2fc70087d2480f21ebb12c1888288c8614e3"
uglify-js@^2.6, uglify-js@^2.8.5, uglify-js@~2.8.22:
version "2.8.23"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.23.tgz#8230dd9783371232d62a7821e2cf9a817270a8a0"
uglify-js@^2.6, uglify-js@^2.8.27, uglify-js@~2.8.22:
version "2.8.28"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.28.tgz#e335032df9bb20dcb918f164589d5af47f38834a"
dependencies:
source-map "~0.5.1"
yargs "~3.10.0"
@@ -7444,7 +7476,7 @@ user-home@^2.0.0:
dependencies:
os-homedir "^1.0.0"
useragent@^2.1.10:
useragent@^2.1.12:
version "2.1.13"
resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.13.tgz#bba43e8aa24d5ceb83c2937473e102e21df74c10"
dependencies:
@@ -7666,63 +7698,38 @@ webpack-sources@^0.1.0:
source-list-map "~0.1.7"
source-map "~0.5.3"
webpack-sources@^0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.2.3.tgz#17c62bfaf13c707f9d02c479e0dcdde8380697fb"
webpack-sources@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.1.tgz#c7356436a4d13123be2e2426a05d1dad9cbe65cf"
dependencies:
source-list-map "^1.1.1"
source-list-map "^2.0.0"
source-map "~0.5.3"
webpack@^2.5.1:
version "2.5.1"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.5.1.tgz#61742f0cf8af555b87460a9cd8bba2f1e3ee2fce"
webpack@3.0.0-rc.1:
version "3.0.0-rc.1"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.0.0-rc.1.tgz#41319cda8040f53177ce999a5d8a333e4f264d75"
dependencies:
acorn "^5.0.0"
acorn-dynamic-import "^2.0.0"
ajv "^4.7.0"
ajv-keywords "^1.1.1"
ajv "^5.1.5"
ajv-keywords "^2.0.0"
async "^2.1.2"
enhanced-resolve "^3.0.0"
escope "^3.6.0"
interpret "^1.0.0"
json-loader "^0.5.4"
json5 "^0.5.1"
loader-runner "^2.3.0"
loader-utils "^0.2.16"
loader-utils "^1.1.0"
memory-fs "~0.4.1"
mkdirp "~0.5.0"
node-libs-browser "^2.0.0"
source-map "^0.5.3"
supports-color "^3.1.0"
tapable "~0.2.5"
uglify-js "^2.8.5"
uglify-js "^2.8.27"
watchpack "^1.3.1"
webpack-sources "^0.2.3"
yargs "^6.0.0"
webpack@~2.4.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.4.1.tgz#15a91dbe34966d8a4b99c7d656efd92a2e5a6f6a"
dependencies:
acorn "^5.0.0"
acorn-dynamic-import "^2.0.0"
ajv "^4.7.0"
ajv-keywords "^1.1.1"
async "^2.1.2"
enhanced-resolve "^3.0.0"
interpret "^1.0.0"
json-loader "^0.5.4"
json5 "^0.5.1"
loader-runner "^2.3.0"
loader-utils "^0.2.16"
memory-fs "~0.4.1"
mkdirp "~0.5.0"
node-libs-browser "^2.0.0"
source-map "^0.5.3"
supports-color "^3.1.0"
tapable "~0.2.5"
uglify-js "^2.8.5"
watchpack "^1.3.1"
webpack-sources "^0.2.3"
webpack-sources "^1.0.1"
yargs "^6.0.0"
websocket-driver@>=0.5.1:
@@ -7861,13 +7868,20 @@ write@^0.2.1:
dependencies:
mkdirp "^0.5.1"
ws@1.1.1, ws@^1.0.1:
ws@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018"
dependencies:
options ">=0.0.5"
ultron "1.0.x"
ws@1.1.2, ws@^1.0.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.2.tgz#8a244fa052401e08c9886cf44a85189e1fd4067f"
dependencies:
options ">=0.0.5"
ultron "1.0.x"
wtf-8@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a"
@@ -1,7 +1,8 @@
{
"angularCompilerOptions": {
"annotationsAs": "static fields",
"annotateForClosureCompiler": true
"annotateForClosureCompiler": true,
"alwaysCompileGeneratedCode": true
},
"compilerOptions": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "angular-srcs",
"version": "4.2.1",
"version": "4.2.2",
"private": true,
"branchPattern": "2.0.*",
"description": "Angular - a web framework for modern web apps",
@@ -740,18 +740,20 @@ export class TransitionAnimationEngine {
// the :enter queries match the elements (since the timeline queries
// are fired during instruction building).
const bodyNode = getBodyNode();
const allEnterNodes: any[] = this.collectedEnterElements;
const enterNodes: any[] =
allEnterNodes.length ? collectEnterElements(this.driver, allEnterNodes) : [];
const allEnterNodes: any[] = this.collectedEnterElements.length ?
collectEnterElements(this.driver, this.collectedEnterElements) :
[];
const leaveNodes: any[] = [];
const allLeaveNodes: any[] = [];
const leaveNodesWithoutAnimations: any[] = [];
for (let i = 0; i < this.collectedLeaveElements.length; i++) {
const element = this.collectedLeaveElements[i];
if (isElementNode(element)) {
const details = element[REMOVAL_FLAG] as ElementAnimationState;
if (details && details.setForRemoval) {
addClass(element, LEAVE_CLASSNAME);
leaveNodes.push(element);
const details = element[REMOVAL_FLAG] as ElementAnimationState;
if (details && details.setForRemoval) {
addClass(element, LEAVE_CLASSNAME);
allLeaveNodes.push(element);
if (!details.hasAnimation) {
leaveNodesWithoutAnimations.push(element);
}
}
}
@@ -817,6 +819,16 @@ export class TransitionAnimationEngine {
});
}
// these can only be detected here since we have a map of all the elements
// that have animations attached to them...
const enterNodesWithoutAnimations: any[] = [];
for (let i = 0; i < allEnterNodes.length; i++) {
const element = allEnterNodes[i];
if (!subTimelines.has(element)) {
enterNodesWithoutAnimations.push(element);
}
}
const allPreviousPlayersMap = new Map<any, TransitionAnimationPlayer[]>();
let sortedParentElements: any[] = [];
queuedInstructions.forEach(entry => {
@@ -840,12 +852,13 @@ export class TransitionAnimationEngine {
// PRE STAGE: fill the ! styles
const preStylesMap = allPreStyleElements.size ?
cloakAndComputeStyles(this.driver, enterNodes, allPreStyleElements, PRE_STYLE) :
cloakAndComputeStyles(
this.driver, enterNodesWithoutAnimations, allPreStyleElements, PRE_STYLE) :
new Map<any, ɵStyleData>();
// POST STAGE: fill the * styles
const postStylesMap =
cloakAndComputeStyles(this.driver, leaveNodes, allPostStyleElements, AUTO_STYLE);
const postStylesMap = cloakAndComputeStyles(
this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);
const rootPlayers: TransitionAnimationPlayer[] = [];
const subPlayers: TransitionAnimationPlayer[] = [];
@@ -907,8 +920,8 @@ export class TransitionAnimationEngine {
// run through all of the queued removals and see if they
// were picked up by a query. If not then perform the removal
// operation right away unless a parent animation is ongoing.
for (let i = 0; i < leaveNodes.length; i++) {
const element = leaveNodes[i];
for (let i = 0; i < allLeaveNodes.length; i++) {
const element = allLeaveNodes[i];
const players = queriedElements.get(element);
if (players) {
removeNodesAfterAnimationDone(this, element, players);
@@ -931,7 +944,7 @@ export class TransitionAnimationEngine {
player.play();
});
enterNodes.forEach(element => removeClass(element, ENTER_CLASSNAME));
allEnterNodes.forEach(element => removeClass(element, ENTER_CLASSNAME));
return rootPlayers;
}
@@ -1218,7 +1231,7 @@ function normalizeTriggerValue(value: any): string {
case 'boolean':
return value ? '1' : '0';
default:
return value ? value.toString() : null;
return value != null ? value.toString() : null;
}
}
@@ -1236,6 +1249,17 @@ function cloakElement(element: any, value?: string) {
return oldValue;
}
/*
1. start from the root, find the first matching child
a) if not found then check to see if a previously stopped node was set in the stack
-> if so then use that as the nextCursor
b) if no queried item and no parent then stop completely
c) if no queried item and yes parent then jump to the parent and restart loop
2. visit the next node, check if matches
a) if doesn't exist then set that as the cursor and repeat
-> add to the previous cursor stack when the inner queries return nothing
b) if matches then add it and continue
*/
function filterNodeClasses(
driver: AnimationDriver, rootElement: any | null, selector: string): any[] {
const rootElements: any[] = [];
@@ -1243,23 +1267,53 @@ function filterNodeClasses(
let cursor: any = rootElement;
let nextCursor: any = {};
let potentialCursorStack: any[] = [];
do {
nextCursor = driver.query(cursor, selector, false)[0];
// 1. query from root
nextCursor = cursor ? driver.query(cursor, selector, false)[0] : null;
// this is used to avoid the extra matchesElement call when we
// know that the element does match based it on being queried
let justQueried = !!nextCursor;
if (!nextCursor) {
cursor = cursor.parentElement;
if (!cursor) break;
nextCursor = cursor = cursor.nextElementSibling;
} else {
while (nextCursor && driver.matchesElement(nextCursor, selector)) {
rootElements.push(nextCursor);
nextCursor = nextCursor.nextElementSibling;
if (nextCursor) {
cursor = nextCursor;
} else {
cursor = cursor.parentElement;
if (!cursor) break;
nextCursor = cursor = cursor.nextElementSibling;
}
const nextPotentialCursor = potentialCursorStack.pop();
if (nextPotentialCursor) {
// 1a)
nextCursor = nextPotentialCursor;
} else {
cursor = cursor.parentElement;
// 1b)
if (!cursor) break;
// 1c)
nextCursor = cursor = cursor.nextElementSibling;
continue;
}
}
// 2. visit the next node
while (nextCursor) {
const matches = justQueried || driver.matchesElement(nextCursor, selector);
justQueried = false;
const nextPotentialCursor = nextCursor.nextElementSibling;
// 2a)
if (!matches) {
potentialCursorStack.push(nextPotentialCursor);
cursor = nextCursor;
break;
}
// 2b)
rootElements.push(nextCursor);
nextCursor = nextPotentialCursor;
if (nextCursor) {
cursor = nextCursor;
} else {
cursor = cursor.parentElement;
if (!cursor) break;
nextCursor = cursor = cursor.nextElementSibling;
}
}
} while (nextCursor && nextCursor !== rootElement);
@@ -4,7 +4,8 @@
// in the same source directory with your code.
"genDir": ".",
"debug": true,
"enableSummariesForJit": true
"enableSummariesForJit": true,
"alwaysCompileGeneratedCode": true
},
"compilerOptions": {
+1 -1
View File
@@ -9,7 +9,7 @@
"ng-xi18n": "./src/extract_i18n.js"
},
"dependencies": {
"@angular/tsc-wrapped": "4.2.1",
"@angular/tsc-wrapped": "4.2.2",
"reflect-metadata": "^0.1.2",
"minimist": "^1.2.0"
},
+37 -3
View File
@@ -199,10 +199,40 @@ describe('compiler-cli', () => {
});
describe('compile ngfactory files', () => {
it('should only compile ngfactory files that are referenced by root files by default',
(done) => {
writeConfig(`{
"extends": "./tsconfig-base.json",
"files": ["mymodule.ts"]
}`);
write('mymodule.ts', `
import {CommonModule} from '@angular/common';
import {NgModule} from '@angular/core';
@NgModule({
imports: [CommonModule]
})
export class MyModule {}
`);
main({p: basePath})
.then((exitCode) => {
expect(exitCode).toEqual(0);
expect(fs.existsSync(path.resolve(outDir, 'mymodule.ngfactory.js'))).toBe(false);
done();
})
.catch(e => done.fail(e));
});
it('should report errors for ngfactory files that are not referenced by root files', (done) => {
writeConfig(`{
"extends": "./tsconfig-base.json",
"files": ["mymodule.ts"]
"files": ["mymodule.ts"],
"angularCompilerOptions": {
"alwaysCompileGeneratedCode": true
}
}`);
write('mymodule.ts', `
import {NgModule, Component} from '@angular/core';
@@ -235,7 +265,10 @@ describe('compiler-cli', () => {
it('should compile ngfactory files that are not referenced by root files', (done) => {
writeConfig(`{
"extends": "./tsconfig-base.json",
"files": ["mymodule.ts"]
"files": ["mymodule.ts"],
"angularCompilerOptions": {
"alwaysCompileGeneratedCode": true
}
}`);
write('mymodule.ts', `
import {CommonModule} from '@angular/common';
@@ -289,7 +322,8 @@ describe('compiler-cli', () => {
"extends": "./tsconfig-base.json",
"files": ["mymodule.ts"],
"angularCompilerOptions": {
"enableSummariesForJit": true
"enableSummariesForJit": true,
"alwaysCompileGeneratedCode": true
}
}`);
write('mymodule.ts', `
@@ -223,6 +223,44 @@ export function main() {
]);
});
it('should allow a state value to be `0`', () => {
@Component({
selector: 'if-cmp',
template: `
<div [@myAnimation]="exp"></div>
`,
animations: [trigger(
'myAnimation',
[
transition(
'0 => 1', [style({height: '0px'}), animate(1234, style({height: '100px'}))]),
transition(
'* => 1', [style({width: '0px'}), animate(4567, style({width: '100px'}))])
])]
})
class Cmp {
exp: any = false;
}
TestBed.configureTestingModule({declarations: [Cmp]});
const engine = TestBed.get(ɵAnimationEngine);
const fixture = TestBed.createComponent(Cmp);
const cmp = fixture.componentInstance;
cmp.exp = 0;
fixture.detectChanges();
engine.flush();
resetLog();
cmp.exp = 1;
fixture.detectChanges();
engine.flush();
expect(getLog().length).toEqual(1);
const player = getLog().pop() !;
expect(player.duration).toEqual(1234);
});
it('should always cancel the previous transition if a follow-up transition is not matched',
fakeAsync(() => {
@Component({
@@ -735,6 +735,56 @@ export function main() {
});
});
it('should find :enter nodes that have been inserted around non enter nodes', () => {
@Component({
selector: 'ani-cmp',
template: `
<div [@myAnimation]="exp" class="parent">
<div *ngFor="let item of items" class="child">
{{ item }}
</div>
</div>
`,
animations: [trigger(
'myAnimation',
[
transition(
'* => go',
[query(':enter', [style({opacity: 0}), animate(1000, style({opacity: 1}))])]),
])]
})
class Cmp {
public exp: any;
public items: any[] = [];
}
TestBed.configureTestingModule({declarations: [Cmp]});
const engine = TestBed.get(ɵAnimationEngine);
const fixture = TestBed.createComponent(Cmp);
const cmp = fixture.componentInstance;
cmp.exp = 'no';
cmp.items = [2];
fixture.detectChanges();
engine.flush();
resetLog();
cmp.exp = 'go';
cmp.items = [0, 1, 2, 3, 4];
fixture.detectChanges();
engine.flush();
const players = getLog();
expect(players.length).toEqual(4);
const [p1, p2, p3, p4] = players;
expect(p1.element.innerText.trim()).toEqual('0');
expect(p2.element.innerText.trim()).toEqual('1');
expect(p3.element.innerText.trim()).toEqual('3');
expect(p4.element.innerText.trim()).toEqual('4');
});
it('should properly cancel items that were queried into a former animation', () => {
@Component({
selector: 'ani-cmp',
@@ -5,7 +5,7 @@
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import {animate, style, transition, trigger} from '@angular/animations';
import {animate, state, style, transition, trigger} from '@angular/animations';
import {AnimationDriver, ɵAnimationEngine} from '@angular/animations/browser';
import {ɵWebAnimationsDriver, ɵWebAnimationsPlayer, ɵsupportsWebAnimations} from '@angular/animations/browser'
import {Component, ViewChild} from '@angular/core';
@@ -26,6 +26,97 @@ export function main() {
});
});
it('should compute (*) animation styles for a container that is being removed', () => {
@Component({
selector: 'ani-cmp',
template: `
<div @auto *ngIf="exp">
<div style="line-height:20px;">1</div>
<div style="line-height:20px;">2</div>
<div style="line-height:20px;">3</div>
<div style="line-height:20px;">4</div>
<div style="line-height:20px;">5</div>
</div>
`,
animations: [trigger(
'auto',
[
state('void', style({height: '0px'})), state('*', style({height: '*'})),
transition('* => *', animate(1000))
])]
})
class Cmp {
public exp: boolean = false;
}
TestBed.configureTestingModule({declarations: [Cmp]});
const engine = TestBed.get(ɵAnimationEngine);
const fixture = TestBed.createComponent(Cmp);
const cmp = fixture.componentInstance;
cmp.exp = true;
fixture.detectChanges();
engine.flush();
expect(engine.players.length).toEqual(1);
let webPlayer = engine.players[0].getRealPlayer() as ɵWebAnimationsPlayer;
expect(webPlayer.keyframes).toEqual([
{height: '0px', offset: 0}, {height: '100px', offset: 1}
]);
cmp.exp = false;
fixture.detectChanges();
engine.flush();
expect(engine.players.length).toEqual(1);
webPlayer = engine.players[0].getRealPlayer() as ɵWebAnimationsPlayer;
expect(webPlayer.keyframes).toEqual([
{height: '100px', offset: 0}, {height: '0px', offset: 1}
]);
});
it('should compute (!) animation styles for a container that is being inserted', () => {
@Component({
selector: 'ani-cmp',
template: `
<div @auto *ngIf="exp">
<div style="line-height:20px;">1</div>
<div style="line-height:20px;">2</div>
<div style="line-height:20px;">3</div>
<div style="line-height:20px;">4</div>
<div style="line-height:20px;">5</div>
</div>
`,
animations: [trigger(
'auto',
[transition(
':enter', [style({height: '!'}), animate(1000, style({height: '120px'}))])])]
})
class Cmp {
public exp: boolean = false;
}
TestBed.configureTestingModule({declarations: [Cmp]});
const engine = TestBed.get(ɵAnimationEngine);
const fixture = TestBed.createComponent(Cmp);
const cmp = fixture.componentInstance;
cmp.exp = true;
fixture.detectChanges();
engine.flush();
expect(engine.players.length).toEqual(1);
let webPlayer = engine.players[0].getRealPlayer() as ɵWebAnimationsPlayer;
expect(webPlayer.keyframes).toEqual([
{height: '100px', offset: 0}, {height: '120px', offset: 1}
]);
});
it('should compute pre (!) and post (*) animation styles with different dom states', () => {
@Component({
selector: 'ani-cmp',
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@angular/tsc-wrapped",
"version": "4.2.1",
"version": "4.2.2",
"description": "Wraps the tsc CLI, allowing extensions.",
"homepage": "https://github.com/angular/angular/blob/master/tools/@angular/tsc-wrapped",
"bugs": "https://github.com/angular/angular/issues",
+4 -1
View File
@@ -124,8 +124,11 @@ export function main(
if (diagnostics) console.time('NG codegen');
return codegen(ngOptions, cliOptions, program, host).then((genFiles) => {
if (diagnostics) console.timeEnd('NG codegen');
// Add the generated files to the configuration so they will become part of the program.
genFiles.forEach(genFileName => addGeneratedFileName(genFileName));
if (ngOptions.alwaysCompileGeneratedCode) {
genFiles.forEach(genFileName => addGeneratedFileName(genFileName));
}
let definitionsHost: ts.CompilerHost = tsickleCompilerHost;
if (!ngOptions.skipMetadataEmit) {
// if tsickle is not not used for emitting, but we do use the MetadataWriterHost,
+6 -1
View File
@@ -83,8 +83,13 @@ interface Options extends ts.CompilerOptions {
enableLegacyTemplate?: boolean;
// Whether to generate .ngsummary.ts files that allow to use AOTed artifacts
// in JIT mode.
// in JIT mode. This is off by default.
enableSummariesForJit?: boolean;
// Whether to compile generated .ngfacgtory.ts files, even when they are no
// matched by the `files` / `includes` in the `tsconfig.json`.
// This is off by default.
alwaysCompileGeneratedCode?: boolean;
}
export default Options;