From 816a833f4e186f326d34ac0b1ec73c16fda16d4b Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Tue, 14 May 2019 11:56:45 +0200 Subject: [PATCH] build: add job to run tests with ivy Introduces two new CI jobs that run tests with Ivy. Pull requests will now run tests against a pinned Angular/Ivy version. Additionally there is a cronjob that runs the component tests with Ivy every hour against Ivy from `angular/angular#master`. This allows us to detect regressions very quickly. --- .circleci/config.yml | 70 ++++- package.json | 32 +-- scripts/circleci/setup-angular-snapshots.js | 7 +- tools/defaults.bzl | 6 + yarn.lock | 296 ++++++++++++-------- 5 files changed, 268 insertions(+), 143 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4df0e34e705..bf384f094b5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -346,6 +346,63 @@ jobs: - run: node ./scripts/circleci/setup-angular-snapshots.js - run: ./scripts/circleci/run-local-browser-tests.sh + + # ---------------------------------------------------------------------------- + # Job that runs all Bazel tests against Ivy with the current Angular version + # specified in the project dev dependencies. + # ---------------------------------------------------------------------------- + ivy_test: + <<: *job_defaults + resource_class: xlarge + environment: + GCP_DECRYPT_TOKEN: *gcp_decrypt_token + steps: + - *checkout_code + - *restore_cache + - *copy_bazel_config + - *setup_bazel_remote_execution + - *yarn_install + + # Setup Angular ivy snapshots built with ngtsc but locked to a specific tag. We + # cannot determine the tag automatically based on the Angular version specified in + # the "package.json" because the SHA is not known for the given release. Nor can + # we use ngcc to apply the ivy switches because ngcc currently does not handle the + # UMD format which is used by Bazel when running tests. UMD processing is in + # progress and tracked with FW-85. + - run: node ./scripts/circleci/setup-angular-snapshots.js --tag 8.0.0-rc.0-ivy-aot+bd37622 + # Disable type checking when building with Ivy. This is necessary because + # type checking is not complete yet and can incorrectly break compilation. + # Issue is tracked with FW-1004. + - run: sed -i "s/\(_ENABLE_NG_TYPE_CHECKING = \)True/\1False/g" tools/defaults.bzl + # Run project tests with ngtsc and the Ivy Angular packages. + - run: bazel build src/... --build_tag_filters=-docs-package --define=compile=aot + - run: bazel test src/... --build_tag_filters=-docs-package --define=compile=aot + + # ---------------------------------------------------------------------------- + # Job that runs all Bazel tests against Ivy from angular/angular#master. + # ---------------------------------------------------------------------------- + ivy_snapshot_test_cronjob: + <<: *job_defaults + resource_class: xlarge + environment: + GCP_DECRYPT_TOKEN: *gcp_decrypt_token + steps: + - *checkout_code + - *restore_cache + - *copy_bazel_config + - *setup_bazel_remote_execution + - *yarn_install + + # Setup Angular ivy snapshots built with ngtsc. + - run: node ./scripts/circleci/setup-angular-snapshots.js --tag master-ivy-aot + # Disable type checking when building with Ivy. This is necessary because + # type checking is not complete yet and can incorrectly break compilation. + # Issue is tracked with FW-1004. + - run: sed -i "s/\(_ENABLE_NG_TYPE_CHECKING = \)True/\1False/g" tools/defaults.bzl + # Run project tests with ngtsc and the Ivy Angular packages. + - run: bazel build src/... --build_tag_filters=-docs-package --define=compile=aot + - run: bazel test src/... --build_tag_filters=-docs-package --define=compile=aot + # ---------------------------------------------------------------------------------------- # Workflow definitions. A workflow usually groups multiple jobs together. This is useful if # one job depends on another. @@ -360,6 +417,8 @@ workflows: jobs: - bazel_build_test: filters: *ignore_presubmit_branch_filter + - ivy_test: + filters: *ignore_presubmit_branch_filter - api_golden_checks: filters: *ignore_presubmit_branch_filter @@ -398,17 +457,18 @@ workflows: - lint: filters: *ignore_presubmit_branch_filter - # Snapshot tests workflow that is scheduled to run all specified jobs at midnight everyday. + # Snapshot tests workflow that is scheduled to run all specified jobs every hour. # This workflow runs various jobs against the Angular snapshot builds from Github. snapshot_tests: jobs: - # Note that we need additional jobs for the nightly snapshot tests because there is no - # easy way to detect whether a job runs inside of a cronjob or specific workflow. - # See: https://circleci.com/ideas/?idea=CCI-I-295 + # Note that we need additional jobs for the cronjob snapshot tests because there + # is no easy way to detect whether a job runs inside of a cronjob or specific + # workflow. See: https://circleci.com/ideas/?idea=CCI-I-295 - snapshot_tests_local_browsers + - ivy_snapshot_test_cronjob triggers: - schedule: - cron: "0 0 * * *" + cron: "0 * * * *" filters: branches: only: diff --git a/package.json b/package.json index 92850330874..6513bad789d 100644 --- a/package.json +++ b/package.json @@ -32,13 +32,13 @@ "requiredAngularVersion": ">=8.0.0-rc.1", "requiredMDCVersion": "^1.1.0", "dependencies": { - "@angular/animations": "^8.0.0-rc.1", - "@angular/common": "^8.0.0-rc.1", - "@angular/compiler": "^8.0.0-rc.1", - "@angular/core": "^8.0.0-rc.1", - "@angular/elements": "^8.0.0-rc.1", - "@angular/forms": "^8.0.0-rc.1", - "@angular/platform-browser": "^8.0.0-rc.1", + "@angular/animations": "^8.0.0-rc.3", + "@angular/common": "^8.0.0-rc.3", + "@angular/compiler": "^8.0.0-rc.3", + "@angular/core": "^8.0.0-rc.3", + "@angular/elements": "^8.0.0-rc.3", + "@angular/forms": "^8.0.0-rc.3", + "@angular/platform-browser": "^8.0.0-rc.3", "@webcomponents/custom-elements": "^1.1.0", "core-js": "^2.6.1", "material-components-web": "^1.1.0", @@ -46,17 +46,17 @@ "systemjs": "0.19.43", "tsickle": "^0.35.0", "tslib": "^1.9.3", - "zone.js": "^0.9.0" + "zone.js": "~0.9.1" }, "devDependencies": { - "@angular-devkit/core": "^8.0.0-rc.1", - "@angular-devkit/schematics": "^8.0.0-rc.1", - "@angular/bazel": "^8.0.0-rc.1", - "@angular/compiler-cli": "^8.0.0-rc.1", - "@angular/platform-browser-dynamic": "^8.0.0-rc.1", - "@angular/platform-server": "^8.0.0-rc.1", - "@angular/router": "^8.0.0-rc.1", - "@angular/upgrade": "^8.0.0-rc.1", + "@angular-devkit/core": "^8.0.0-rc.2", + "@angular-devkit/schematics": "^8.0.0-rc.2", + "@angular/bazel": "^8.0.0-rc.3", + "@angular/compiler-cli": "^8.0.0-rc.3", + "@angular/platform-browser-dynamic": "^8.0.0-rc.3", + "@angular/platform-server": "^8.0.0-rc.3", + "@angular/router": "^8.0.0-rc.3", + "@angular/upgrade": "^8.0.0-rc.3", "@bazel/bazel": "^0.24.1", "@bazel/ibazel": "^0.9.0", "@bazel/jasmine": "0.27.8", diff --git a/scripts/circleci/setup-angular-snapshots.js b/scripts/circleci/setup-angular-snapshots.js index a3df24bde24..261226dfaa2 100644 --- a/scripts/circleci/setup-angular-snapshots.js +++ b/scripts/circleci/setup-angular-snapshots.js @@ -19,6 +19,7 @@ const {writeFileSync} = require('fs'); const {join} = require('path'); const {execSync} = require('child_process'); +const {tag} = require('minimist')(process.argv.slice(2), {string: ['tag']}); const projectDir = join(__dirname, '../../'); const packageJsonPath = join(projectDir, 'package.json'); const packageJson = require(packageJsonPath); @@ -30,13 +31,15 @@ packageJson['resolutions'] = packageJson['resolutions'] || {}; // List that contains the names of all installed Angular packages (e.g. "@angular/core") const angularPackages = Object.keys({...packageJson.dependencies, ...packageJson.devDependencies}) .filter(packageName => packageName.startsWith('@angular/')); +const packageSuffix = tag ? ` (${tag})` : ''; console.log(green('Setting up snapshot builds for:\n')); -console.log(yellow(` ${angularPackages.join('\n ')}\n`)); +console.log(yellow(` ${angularPackages.map(n => `${n}${packageSuffix}`).join('\n ')}\n`)); // Setup the snapshot version for each Angular package specified in the "package.json" file. angularPackages.forEach(packageName => { - const buildsUrl = `github:angular/${packageName.split('/')[1]}-builds`; + let buildsUrl = `github:angular/${packageName.split('/')[1]}-builds${tag ? `#${tag}` : ''}`; + // Add resolutions for each package in the format "**/{PACKAGE}" so that all // nested versions of that specific Angular package will have the same version. packageJson.resolutions[`**/${packageName}`] = buildsUrl; diff --git a/tools/defaults.bzl b/tools/defaults.bzl index 73b64fb9742..523e5c1d10d 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -11,6 +11,11 @@ _DEFAULT_TSCONFIG_BUILD = "//src:bazel-tsconfig-build.json" _DEFAULT_TSCONFIG_TEST = "//src:bazel-tsconfig-test.json" _DEFAULT_TS_TYPINGS = "@npm//typescript:typescript__typings" +# Whether Angular type checking should be enabled or not. Enabled by +# default but will be overwritten when running snapshots tests with Ivy +# since type-checking is not complete yet. See FW-1004. +_ENABLE_NG_TYPE_CHECKING = True + # Re-exports to simplify build file load statements markdown_to_html = _markdown_to_html @@ -55,6 +60,7 @@ def ng_module(deps = [], tsconfig = None, testonly = False, **kwargs): local_deps = local_deps + [d] _ng_module( + type_check = _ENABLE_NG_TYPE_CHECKING, deps = local_deps, tsconfig = tsconfig, testonly = testonly, diff --git a/yarn.lock b/yarn.lock index af01c406fda..c0e7bb3f109 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21,7 +21,7 @@ rxjs "6.4.0" source-map "0.7.3" -"@angular-devkit/core@8.0.0-rc.1", "@angular-devkit/core@^8.0.0-rc.1": +"@angular-devkit/core@8.0.0-rc.1": version "8.0.0-rc.1" resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-8.0.0-rc.1.tgz#25d744ea40eb292bb5fa23ee8246a5ad161c8533" integrity sha512-kbB03aHCZMgzxditHynGTM7qa0+jPOXPhDn7Lntmaz4p5fkJyY+Y97fKAoTGmNZlpIqziHpAZFlVq2Qjgsktsw== @@ -32,6 +32,17 @@ rxjs "6.4.0" source-map "0.7.3" +"@angular-devkit/core@8.0.0-rc.3", "@angular-devkit/core@^8.0.0-rc.2": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-8.0.0-rc.3.tgz#a5e10e941d8a046abda9046e816d45694703c695" + integrity sha512-5PmX42/XOzPSqhIZBtXyozBN01Qpagj3YO0+ToKPDY+veGEUonPhz1jBiJ639NBldlGW1BBdQczpGZNg3uJj9A== + dependencies: + ajv "6.10.0" + fast-json-stable-stringify "2.0.0" + magic-string "0.25.2" + rxjs "6.4.0" + source-map "0.7.3" + "@angular-devkit/schematics@8.0.0-rc.0", "@angular-devkit/schematics@^8.0.0-beta.15": version "8.0.0-rc.0" resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-8.0.0-rc.0.tgz#c3cfdaf81bd1cf32f85527f9d831e3e8f3226d62" @@ -40,7 +51,7 @@ "@angular-devkit/core" "8.0.0-rc.0" rxjs "6.4.0" -"@angular-devkit/schematics@8.0.0-rc.1", "@angular-devkit/schematics@^8.0.0-rc.1": +"@angular-devkit/schematics@8.0.0-rc.1": version "8.0.0-rc.1" resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-8.0.0-rc.1.tgz#c9bd70416ed9074f1566358db14cc311aba83ef8" integrity sha512-tlAk4w9803+WDP4So6CvDyFvWkHbMxqdo80gvWL57z/XXcvGEgvI+NYliW2hOyqI5xNQ4P25Js5+Zgz9TATMoQ== @@ -48,17 +59,25 @@ "@angular-devkit/core" "8.0.0-rc.1" rxjs "6.4.0" -"@angular/animations@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-8.0.0-rc.1.tgz#b613da3b474daa3d982dd08cbe744cbbce763e3f" - integrity sha512-Ue16jCa27+TyebCaPFPcTiI7pVe+qreLXCyxxRjumVCb64v2FOAxU3YYqs8AFhSBObYvMXasXwf/VjARyel8nw== +"@angular-devkit/schematics@^8.0.0-rc.2": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-8.0.0-rc.3.tgz#754db2735863393066a7dd88915b5b594ccde4b8" + integrity sha512-u08GNDCRbm4fYYilmnT27Pp6QW/FxD7W9bpUH8Kp4i6r0f4uBuYQiQT1x6celTwj8Bh1fQqCq/kM/lAG0dd5Zg== + dependencies: + "@angular-devkit/core" "8.0.0-rc.3" + rxjs "6.4.0" + +"@angular/animations@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-8.0.0-rc.3.tgz#8c27c54fb965be921f1277cf20778b3fd42743f9" + integrity sha512-5OmvWRUljV2BrHZvYxhtXhbjGCKWAqjkbwiEUOdaW9XP6y9BKkAInn763pLo6p+FcpueDgFc8IE3vvO8xl2JmQ== dependencies: tslib "^1.9.0" -"@angular/bazel@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/bazel/-/bazel-8.0.0-rc.1.tgz#740e1595da6fcaebc06dc93a94e750a069e071c6" - integrity sha512-66PUDFpYbcQYBoTM07v3tVXW4D9Gq8ZazLtTKme4Tx2flpUDQAOv3UwXUbankvKRmZIebZlg0M/3hlMggNtL1w== +"@angular/bazel@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/bazel/-/bazel-8.0.0-rc.3.tgz#dab138e08995363619439930c846afa913843922" + integrity sha512-+/uvwijzFYnrLVXqx4bhZCZb6dezTbqjtH2RoaWbYgfeV5Ll3G414VwaFNbo+FPuk8HJWEIqD9fBWWwEB6usxg== dependencies: "@angular-devkit/architect" "^0.800.0-beta.15" "@angular-devkit/core" "^8.0.0-beta.15" @@ -70,17 +89,17 @@ shelljs "0.8.2" tsickle "^0.35.0" -"@angular/common@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-8.0.0-rc.1.tgz#530223cacccd9c266f922b8525f06617c78242d1" - integrity sha512-/eVx+8mAKibfhPPRm9vhM85YVx8ZSQ01FbwHW9nqKZYUNuJtdZcg6QL/eyraVCi29/GebLKO1LmlNYZWNxOrjA== +"@angular/common@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-8.0.0-rc.3.tgz#d467781018ed2b91cf25e88a54d54c1504ef5c23" + integrity sha512-k9QPInh39o4MR/xCwrpdYDH42gmLG9RG2lhNX3BPaxD00d5my08rhR0Iqelk7XEEPoofELBd7lloXiKSyqFu5g== dependencies: tslib "^1.9.0" -"@angular/compiler-cli@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-8.0.0-rc.1.tgz#0f38ded2ee5523ea68d193a780800c89b70b88b3" - integrity sha512-1VdS3tbGLG76ZqGiTBdFpoGY8CvMbEhrNBtzHzRGVgaUh3nBbup37pg4tsuJyXP3jWHD8TSvveP4f7yWDPyo4w== +"@angular/compiler-cli@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-8.0.0-rc.3.tgz#dae6d0dd1da30f02527ff3d06a426480305beb45" + integrity sha512-+LqU3X1tQwyQtVg5VdzanyaKwIl1r/3gAcpWG3AunhWjjbf5JN1QGWj14eRnJoSxNAknjRl6tVaOOnoK1L5P6A== dependencies: canonical-path "1.0.0" chokidar "^2.1.1" @@ -92,70 +111,70 @@ shelljs "^0.8.1" source-map "^0.6.1" tslib "^1.9.0" - yargs "9.0.1" + yargs "13.1.0" -"@angular/compiler@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-8.0.0-rc.1.tgz#8059beebc3c649f5338c567e109bcae4f1ef100e" - integrity sha512-XqbR8KBIK6BBKiTI/lvgvEOIxpRiSIbDlXNixZF9dKqZLEw2u66ONC1avnXi6wUaN1laLavRA0dsQ0Vh34vitA== +"@angular/compiler@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-8.0.0-rc.3.tgz#487795bab3c02a15afc36396de28892e915db87d" + integrity sha512-nbOqxM+4gYHiVovnt2ZtL2O4NQzyXhOdjcQoxyZJHOSj1ZMPDBPPhXWZuz/Oavdulk4BLmJmgA+xyEFNPH/kAQ== dependencies: tslib "^1.9.0" -"@angular/core@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-8.0.0-rc.1.tgz#1e04709846dc8c13008adec8909c5f01ce044cea" - integrity sha512-sx5IMqfzE5OUqWNo1zbp/WzNogDOfBcLPPHCoCIjRArn8yYIql57ItbDkx0pTIQIpYDBP2GMhCnw3jkaqfZmhw== +"@angular/core@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-8.0.0-rc.3.tgz#3ac4d6d46bfba6fb7020f631ef61a5903c8bb58e" + integrity sha512-yaYyC812II/D1Hj6dd+1/P6SLgwq8u1oBdGaN+sbeoU4OP8jk9wQRCssQwNZqXztjnTLvFj102GKum3QqV6kDg== dependencies: tslib "^1.9.0" -"@angular/elements@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/elements/-/elements-8.0.0-rc.1.tgz#404f59d03c03e7e21eedd4ae9975d4a9c7fb1fb9" - integrity sha512-LjHJJ5VX6aM3GDLnuuFx7IQfhBEQUPEd/BI3Wlnc+H8d+TnNsffatangIWNkkQoURPdU+j510WebDTUOqXS6DA== +"@angular/elements@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/elements/-/elements-8.0.0-rc.3.tgz#756c56aa6582371ec5b81ee53264b026feb4489d" + integrity sha512-n0OoteoloaJ22le9K2WhYm1DsJjW2QVxgnmsyMbFTVbEIQGNmb7sdmGS0FL1JRRpQzaPdw58rBu2bwiqdl+mkQ== dependencies: tslib "^1.9.0" -"@angular/forms@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-8.0.0-rc.1.tgz#1367d396803fc349d0ad3b9c531db718b15ac1a7" - integrity sha512-kwr/HAInBGC0bsK89Q1TgQrOkU82ZQWIXH7+xK/mzBAFABC4h+T6y4a35IXcuY8nD/YWjOqOreeJkPz5OD0A7g== +"@angular/forms@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-8.0.0-rc.3.tgz#7a3a48266149f1e37912423e596daf953c884fb5" + integrity sha512-cQnEdbFd0SGAjEb9uUaSB7s4Ko0SEVFA2J2fBJLQfLco9XvxjCZ9vSg0iphchhwbvn19do/sMk4WcqR9MpQzuQ== dependencies: tslib "^1.9.0" -"@angular/platform-browser-dynamic@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.0.0-rc.1.tgz#0d0b8a469283be13a54a4f0973c3f8ea6644eb34" - integrity sha512-eplgio+52sEX2+UWsaodGTdT6R71NclMOpNW4Cxua8ZkQ05fQWkInx1peMdNbCeYvISOMxMIHlJ9PNxQtOJF0A== +"@angular/platform-browser-dynamic@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.0.0-rc.3.tgz#2ca02785f0d0058dcbe78dae4d6c796da60f4dc9" + integrity sha512-ziIjtu/o/Ocz18Hq83UwujDnitzCxuSA8eY2Z4wf6hSHHSEeSo8GWRhIE1KlPJNEOQvYGe2pv0pE9vja77DUzw== dependencies: tslib "^1.9.0" -"@angular/platform-browser@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-8.0.0-rc.1.tgz#2711d83357f13f4d95831b3e0cca60720c00fabb" - integrity sha512-PIL3e6grfJspFpzMibEETfNEeeJS0aHTBjbrgQRjCVlHXw+VZ3nDM4Kw9PKZ9KMDNmKR13x32Jhwij9nl+xdQQ== +"@angular/platform-browser@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-8.0.0-rc.3.tgz#88120e49469c089b7988a8d38183e7f3b7f83937" + integrity sha512-/RRbgDyFk6RkAXNIkQebWkjHrV4i7IjSG3Sci+v19ORO/m3jBzRpMqp49e7d3LX6qItfeeaIWPqnec9W0jnFRQ== dependencies: tslib "^1.9.0" -"@angular/platform-server@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-8.0.0-rc.1.tgz#4bd3d4fa21aff4eb0b3d837e2dece0f5489276cd" - integrity sha512-sz20inbCe9SFXoRiKjt8hrf910SnTlF9kf5iDkvBg8ovY0883Kz2BppjQoldMH4q4SKlL6DSutxTiU0FqgTCIQ== +"@angular/platform-server@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-8.0.0-rc.3.tgz#47cdd9437b06d3235426da8e416c3a56b839a71d" + integrity sha512-sIcVqKaXsqqUd0rX2tiGpb9O0SrEcf1TQAvsWHCTpT3TnHmDJm5fdYEmXdQwvHtQMbroyLRM8H/6vFJ+Ys//cA== dependencies: domino "^2.1.2" tslib "^1.9.0" xhr2 "^0.1.4" -"@angular/router@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-8.0.0-rc.1.tgz#9dd8b6d47a7ef1766faea6e7df747a8304b1a88d" - integrity sha512-UR6cI3eEh0XBkuAPdp9S+LHa+JN6hqokU5dCptiBhdAh+POpjqGzBiq85XyXc9q8P5BOku6kdcEYcIlodgzzCA== +"@angular/router@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-8.0.0-rc.3.tgz#b36e43ee1e1d96c189a2587c4c25cd2d417195ec" + integrity sha512-tWk41qjzqSEnq7zjc6qJlFaj3bXvijJEvvMTzssrxN+MM4bj0IDGXzmiyU+vukMHkCzblkpLzfv53OeSLi7xEw== dependencies: tslib "^1.9.0" -"@angular/upgrade@^8.0.0-rc.1": - version "8.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@angular/upgrade/-/upgrade-8.0.0-rc.1.tgz#0c9480a36d4578a9d91a5b7b2313daab55d295d1" - integrity sha512-LCQRF7Rn5tUP+5DEu9+vkg8PzGDahA1zu7nZgPwKGsnw9rQ0PgEzpm9MjwfFs8fBbwDl5V1/ZYkY3RALhEiDjA== +"@angular/upgrade@^8.0.0-rc.3": + version "8.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@angular/upgrade/-/upgrade-8.0.0-rc.3.tgz#3e7140c9a1e32bc8afec2cd4d22f10b27156b2a8" + integrity sha512-ljyPJaTF3Scg6ygaeQ+ZjggU7+VC40VtFe+QlHwg8tipqmtpSyTVsVtse8FjgY15OshtG0N9z7WV2ZlVxr8dxw== dependencies: tslib "^1.9.0" @@ -2570,6 +2589,11 @@ camelcase@^4.0.0, camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: version "1.0.30000914" resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000914.tgz#5df1edfb2407dd857bf33e7f346514316c7b9fa3" @@ -3574,7 +3598,7 @@ decamelize-keys@^1.0.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2: +decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -4899,6 +4923,11 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-pkg-repo@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" @@ -6026,6 +6055,11 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + ipaddr.js@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e" @@ -6936,6 +6970,13 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" @@ -6991,16 +7032,6 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -7495,6 +7526,13 @@ make-iterator@^1.0.0: dependencies: kind-of "^6.0.2" +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + map-cache@^0.2.0, map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -7624,6 +7662,15 @@ mem@^1.1.0: dependencies: mimic-fn "^1.0.0" +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + memoizee@^0.4.14: version "0.4.14" resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" @@ -7781,6 +7828,11 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + mimic-response@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -8466,6 +8518,15 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" +os-locale@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + os-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.0.0.tgz#e1434dbfddb8e74b44c98b56797d951b7648a5d9" @@ -8492,6 +8553,11 @@ p-cancelable@^0.4.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -8502,6 +8568,11 @@ p-is-promise@^1.1.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -8752,13 +8823,6 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -9234,14 +9298,6 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -9259,15 +9315,6 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -9602,6 +9649,11 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + requirejs@2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.5.tgz#617b9acbbcb336540ef4914d790323a8d4b861b0" @@ -12048,6 +12100,11 @@ y18n@^3.2.0, y18n@^3.2.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -12065,6 +12122,14 @@ yargs-parser@^10.0.0: dependencies: camelcase "^4.1.0" +yargs-parser@^13.0.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.0.tgz#7016b6dd03e28e1418a510e258be4bff5a31138f" + integrity sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^4.1.0, yargs-parser@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" @@ -12079,13 +12144,6 @@ yargs-parser@^5.0.0: dependencies: camelcase "^3.0.0" -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= - dependencies: - camelcase "^4.1.0" - yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" @@ -12111,6 +12169,23 @@ yargs@11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" +yargs@13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.1.0.tgz#b2729ce4bfc0c584939719514099d8a916ad2301" + integrity sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg== + dependencies: + cliui "^4.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.0.0" + yargs@6.4.0: version "6.4.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4" @@ -12150,25 +12225,6 @@ yargs@6.6.0: y18n "^3.2.1" yargs-parser "^4.2.0" -yargs@9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c" - integrity sha1-UqzCP+7Kw0BCB47njAwAf1CF20w= - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - yargs@^11.0.0: version "11.1.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" @@ -12260,7 +12316,7 @@ zip-stream@^1.2.0: lodash "^4.8.0" readable-stream "^2.0.0" -zone.js@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.9.0.tgz#f42319d657f7616724ed40c5907d4614b4c683fa" - integrity sha512-EfygvVnLxPSCMSgJ4h7SoY+XNr7ybdwvvwEQ70lvMFl9coNnciXSyWi8Kg6znK1ubyUSffkCKvleSQpLuUKw0Q== +zone.js@~0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.9.1.tgz#e37c6e5c54c13fae4de26b5ffe8d8e9212da6d9b" + integrity sha512-GkPiJL8jifSrKReKaTZ5jkhrMEgXbXYC+IPo1iquBjayRa0q86w3Dipjn8b415jpitMExe9lV8iTsv8tk3DGag==