diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index 316bf13255bb..8ebbd72bd6ee 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -47,6 +47,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: 'Upload to code-scanning'
- uses: github/codeql-action/upload-sarif@29b1f65c5e92e24fe6b6647da1eaabe529cec70f # v2.3.3
+ uses: github/codeql-action/upload-sarif@0225834cc549ee0ca93cb085b92954821a145866 # v2.3.5
with:
sarif_file: results.sarif
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 32d72ad6ffe8..ef3b4e939ce8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,20 @@
+
+# 16.0.4 (2023-06-01)
+### animations
+| Commit | Type | Description |
+| -- | -- | -- |
+| [df65c4fc8f](https://github.com/angular/angular/commit/df65c4fc8f71ab9bf59ec4e5e820d136b12fb570) | fix | Trigger leave animation when ViewContainerRef is injected ([#48705](https://github.com/angular/angular/pull/48705)) |
+### common
+| Commit | Type | Description |
+| -- | -- | -- |
+| [7e1bc513de](https://github.com/angular/angular/commit/7e1bc513dead7d809f5ba2e6edc45b85af12f828) | fix | untrack subscription and unsubscription in async pipe ([#50522](https://github.com/angular/angular/pull/50522)) |
+### core
+| Commit | Type | Description |
+| -- | -- | -- |
+| [9970b29ace](https://github.com/angular/angular/commit/9970b29acef11f1dfedd2640520b4bca4b996f81) | fix | update `ApplicationRef.isStable` to account for rendering pending tasks ([#50425](https://github.com/angular/angular/pull/50425)) |
+
+
+
# 16.0.3 (2023-05-24)
### core
diff --git a/aio/.eslintrc.json b/aio/.eslintrc.json
index 19dd7ae31680..7b4c0ac53df1 100644
--- a/aio/.eslintrc.json
+++ b/aio/.eslintrc.json
@@ -143,7 +143,6 @@
"import/no-deprecated": "warn",
"indent": "off",
"jsdoc/check-alignment": "error",
- "jsdoc/newline-after-description": "error",
"jsdoc/no-types": "error",
"max-classes-per-file": "off",
"max-len": [
@@ -231,11 +230,11 @@
"plugin:@angular-eslint/template/recommended"
],
"rules": {
- "@angular-eslint/template/accessibility-alt-text": "error",
- "@angular-eslint/template/accessibility-elements-content": "error",
- "@angular-eslint/template/accessibility-label-has-associated-control": "error",
- "@angular-eslint/template/accessibility-table-scope": "error",
- "@angular-eslint/template/accessibility-valid-aria": "error",
+ "@angular-eslint/template/alt-text": "error",
+ "@angular-eslint/template/elements-content": "error",
+ "@angular-eslint/template/label-has-associated-control": "error",
+ "@angular-eslint/template/table-scope": "error",
+ "@angular-eslint/template/valid-aria": "error",
"@angular-eslint/template/click-events-have-key-events": "error",
"@angular-eslint/template/eqeqeq": "off",
"@angular-eslint/template/mouse-events-have-key-events": "error",
diff --git a/aio/content/examples/.eslintrc.json b/aio/content/examples/.eslintrc.json
index bba01e83fbbe..3a94305ee735 100644
--- a/aio/content/examples/.eslintrc.json
+++ b/aio/content/examples/.eslintrc.json
@@ -1,23 +1,16 @@
{
"root": true,
- "ignorePatterns": [
- "*.js",
- "styleguide/**/*.avoid.ts"
- ],
+ "ignorePatterns": ["*.js", "styleguide/**/*.avoid.ts"],
"overrides": [
{
- "files": [
- "*.html"
- ],
- "extends": [
- "plugin:@angular-eslint/template/recommended"
- ],
+ "files": ["*.html"],
+ "extends": ["plugin:@angular-eslint/template/recommended"],
"rules": {
- "@angular-eslint/template/accessibility-alt-text": "error",
- "@angular-eslint/template/accessibility-elements-content": "error",
- "@angular-eslint/template/accessibility-label-has-associated-control": "error",
- "@angular-eslint/template/accessibility-table-scope": "error",
- "@angular-eslint/template/accessibility-valid-aria": "error",
+ "@angular-eslint/template/alt-text": "error",
+ "@angular-eslint/template/elements-content": "error",
+ "@angular-eslint/template/label-has-associated-control": "error",
+ "@angular-eslint/template/table-scope": "error",
+ "@angular-eslint/template/valid-aria": "error",
"@angular-eslint/template/click-events-have-key-events": "error",
"@angular-eslint/template/eqeqeq": "off",
"@angular-eslint/template/mouse-events-have-key-events": "error",
@@ -27,19 +20,135 @@
}
},
{
- "files": [
- "*.ts"
- ],
+ "files": ["*.ts"],
"extends": [
- "plugin:@angular-eslint/ng-cli-compat",
- "plugin:@angular-eslint/ng-cli-compat--formatting-add-on",
"plugin:@angular-eslint/template/process-inline-templates"
],
"parserOptions": {
"createDefaultProgram": false,
"project": "content/examples/tsconfig.eslint.json"
},
+ "plugins": [
+ "@typescript-eslint",
+ "@angular-eslint", "eslint-plugin-import", "eslint-plugin-jsdoc", "eslint-plugin-prefer-arrow"],
"rules": {
+ "@typescript-eslint/interface-name-prefix": "off",
+ "@typescript-eslint/explicit-member-accessibility": "off",
+ "sort-keys": "off",
+ "@angular-eslint/component-class-suffix": "error",
+
+ "@angular-eslint/contextual-lifecycle": "error",
+ "@angular-eslint/directive-class-suffix": "error",
+
+ "@angular-eslint/no-conflicting-lifecycle": "error",
+ "@angular-eslint/no-host-metadata-property": "error",
+ "@angular-eslint/no-input-rename": "error",
+ "@angular-eslint/no-inputs-metadata-property": "error",
+ "@angular-eslint/no-output-native": "error",
+ "@angular-eslint/no-output-on-prefix": "error",
+ "@angular-eslint/no-output-rename": "error",
+ "@angular-eslint/no-outputs-metadata-property": "error",
+ "@angular-eslint/use-lifecycle-interface": "error",
+ "@angular-eslint/use-pipe-transform-interface": "error",
+ "@typescript-eslint/adjacent-overload-signatures": "error",
+ "@typescript-eslint/array-type": "off",
+
+ "@typescript-eslint/consistent-type-assertions": "error",
+ "@typescript-eslint/no-empty-function": "off",
+ "@typescript-eslint/no-empty-interface": "error",
+ "@typescript-eslint/no-explicit-any": "off",
+ "@typescript-eslint/no-inferrable-types": [
+ "error",
+ {
+ "ignoreParameters": true
+ }
+ ],
+ "@typescript-eslint/no-misused-new": "error",
+ "@typescript-eslint/no-namespace": "error",
+ "@typescript-eslint/no-parameter-properties": "off",
+ "@typescript-eslint/no-use-before-define": "off",
+ "@typescript-eslint/no-var-requires": "off",
+ "@typescript-eslint/prefer-for-of": "error",
+ "@typescript-eslint/prefer-function-type": "error",
+ "@typescript-eslint/prefer-namespace-keyword": "error",
+ "@typescript-eslint/triple-slash-reference": [
+ "error",
+ {
+ "path": "always",
+ "types": "prefer-import",
+ "lib": "always"
+ }
+ ],
+ "@typescript-eslint/unified-signatures": "error",
+ "complexity": "off",
+ "constructor-super": "error",
+ "eqeqeq": ["error", "smart"],
+ "guard-for-in": "error",
+ "id-blacklist": [
+ "error",
+ "any",
+ "Number",
+ "number",
+ "String",
+ "string",
+ "Boolean",
+ "boolean",
+ "Undefined",
+ "undefined"
+ ],
+ "id-match": "error",
+ "import/no-deprecated": "warn",
+ "jsdoc/no-types": "error",
+ "max-classes-per-file": "off",
+ "no-bitwise": "error",
+ "no-caller": "error",
+ "no-cond-assign": "error",
+
+ "no-debugger": "error",
+ "no-empty": "off",
+ "no-eval": "error",
+ "no-fallthrough": "error",
+ "no-invalid-this": "off",
+ "no-new-wrappers": "error",
+ "no-restricted-imports": [
+ "error",
+ {
+ "name": "rxjs/Rx",
+ "message": "Please import directly from 'rxjs' instead"
+ }
+ ],
+ "no-throw-literal": "error",
+ "no-undef-init": "error",
+ "no-unsafe-finally": "error",
+ "no-unused-labels": "error",
+ "no-var": "error",
+ "object-shorthand": "error",
+ "one-var": ["error", "never"],
+ "prefer-const": "error",
+ "radix": "error",
+ "use-isnan": "error",
+ "valid-typeof": "off",
+ "arrow-body-style": "error",
+ "arrow-parens": "off",
+ "comma-dangle": "off",
+ "curly": "error",
+ "eol-last": "error",
+ "jsdoc/check-alignment": "error",
+ "new-parens": "error",
+ "no-multiple-empty-lines": "off",
+ "no-trailing-spaces": "error",
+ "quote-props": ["error", "as-needed"],
+ "space-before-function-paren": [
+ "error",
+ {
+ "anonymous": "never",
+ "asyncArrow": "always",
+ "named": "never"
+ }
+ ],
+ "@typescript-eslint/semi": ["error", "always"],
+ "@typescript-eslint/type-annotation-spacing": "error",
+
"@typescript-eslint/ban-types": "error",
"@angular-eslint/component-selector": [
"error",
@@ -61,12 +170,15 @@
"@typescript-eslint/dot-notation": ["error", {"allowIndexSignaturePropertyAccess": true}],
"indent": "off",
"max-len": ["error", {"code": 120, "ignoreUrls": true}],
- "@typescript-eslint/member-delimiter-style": ["error", {
- "singleline": {
- "delimiter": "comma",
- "requireLast": false
+ "@typescript-eslint/member-delimiter-style": [
+ "error",
+ {
+ "singleline": {
+ "delimiter": "comma",
+ "requireLast": false
+ }
}
- }],
+ ],
"@typescript-eslint/member-ordering": "off",
"@typescript-eslint/naming-convention": "off",
"no-console": ["error", {"allow": ["log", "warn", "error"]}],
@@ -88,7 +200,11 @@
"no-use-before-define": "off",
"prefer-arrow/prefer-arrow-functions": "off",
"quotes": "off",
- "@typescript-eslint/quotes": ["error", "single", {"avoidEscape": true, "allowTemplateLiterals": true }],
+ "@typescript-eslint/quotes": [
+ "error",
+ "single",
+ {"avoidEscape": true, "allowTemplateLiterals": true}
+ ],
"semi": "error"
}
}
diff --git a/aio/content/examples/http/src/app/package-search/package-search.component.html b/aio/content/examples/http/src/app/package-search/package-search.component.html
index 85c3402fcf99..6ad932342075 100644
--- a/aio/content/examples/http/src/app/package-search/package-search.component.html
+++ b/aio/content/examples/http/src/app/package-search/package-search.component.html
@@ -1,6 +1,6 @@
Search Npm Packages
-Searches when typing stops. Caches for 30 seconds.
+Searches when typing stops. Caches for 30 seconds.
@@ -10,8 +10,8 @@ Search Npm Packages
- {{package.name}} v.{{package.version}} -
- {{package.description}}
+ {{package.name}} v.{{package.version}} -
+ {{package.description}}
diff --git a/aio/content/examples/ngcontainer/src/app/app.component.html b/aio/content/examples/ngcontainer/src/app/app.component.html
index 3104603ec03b..523a55df5ffd 100644
--- a/aio/content/examples/ngcontainer/src/app/app.component.html
+++ b/aio/content/examples/ngcontainer/src/app/app.component.html
@@ -110,7 +110,7 @@ <ng-container> and layout-sensitive elements
#1 <ng-container> and <options>
-<select> with <span>
+<select> with <span>
Pick your favorite hero
(
show sad)
@@ -123,7 +123,7 @@
#1 <ng-container> and <options>
-
<select> with <ng-container>
+
<select> with <ng-container>
Pick your favorite hero
(
show sad)
@@ -186,8 +186,8 @@
<ng-container> and <table>
- Directive
- Type
+ Directive
+ Type
Description
diff --git a/aio/content/examples/property-binding/src/app/app.component.html b/aio/content/examples/property-binding/src/app/app.component.html
index 0c50825400ef..69af966d7467 100644
--- a/aio/content/examples/property-binding/src/app/app.component.html
+++ b/aio/content/examples/property-binding/src/app/app.component.html
@@ -46,21 +46,21 @@ Pass objects:
Property binding and interpolation
- is the interpolated image.
- is the property bound image.
+ is the interpolated image.
+ is the property bound image.
- "{{interpolationTitle}}" is the interpolated title.
- " " is the property bound title.
+ "{{interpolationTitle}}" is the interpolated title.
+ " " is the property bound title.
Malicious content
- "{{evilTitle}}" is the interpolated evil title.
+ "{{evilTitle}}" is the interpolated evil title.
- " " is the property bound evil title.
+ " " is the property bound evil title.
diff --git a/aio/content/examples/template-syntax/src/app/app.component.html b/aio/content/examples/template-syntax/src/app/app.component.html
index 13348d1e1705..e9e8a6dec48a 100644
--- a/aio/content/examples/template-syntax/src/app/app.component.html
+++ b/aio/content/examples/template-syntax/src/app/app.component.html
@@ -180,7 +180,7 @@
top
-
+
Property vs. Attribute (img examples)
@@ -191,7 +191,7 @@
-
+
top
diff --git a/aio/content/guide/router.md b/aio/content/guide/router.md
index 26e4e89b7686..92d97bf95288 100644
--- a/aio/content/guide/router.md
+++ b/aio/content/guide/router.md
@@ -349,7 +349,7 @@ The following route guards are available in Angular:
To use route guards, consider using [component-less routes](api/router/Route#componentless-routes) as this facilitates guarding child routes.
-Create a service for your guard:
+Create a file for your guard:
@@ -357,28 +357,24 @@ ng generate guard your-guard
-In your guard function, implement the guard you want to use.
-The following example uses `canActivate` to guard the route.
+In your guard file, add the guard functions you want to use.
+The following example uses `canActivateFn` to guard the route.
-export const yourGuard: CanActivateFn = (
+export const yourGuardFunction: CanActivateFn = (
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot) => {
// your logic goes here
}
-
-
In your routing module, use the appropriate property in your `routes` configuration.
Here, `canActivate` tells the router to mediate navigation to this particular route.
-
-
{
path: '/your-path',
component: YourComponent,
- canActivate: [yourGuard],
+ canActivate: [yourGuardFunction],
}
diff --git a/aio/content/guide/signals.md b/aio/content/guide/signals.md
index 7d4aa7a5a48a..afac47ca4bc7 100644
--- a/aio/content/guide/signals.md
+++ b/aio/content/guide/signals.md
@@ -223,7 +223,7 @@ effect(() => {
});
```
-This example logs a message when _either_ `currentUser` or `counter` changes. However, if the effect should only run only when `currentUser` changes, then the read of `counter` is only incidental and changes to `counter` shouldn't log a new message.
+This example logs a message when _either_ `currentUser` or `counter` changes. However, if the effect should only run when `currentUser` changes, then the read of `counter` is only incidental and changes to `counter` shouldn't log a new message.
You can prevent a signal read from being tracked by calling its getter with `untracked`:
diff --git a/aio/content/images/bios/angom.jpg b/aio/content/images/bios/angom.jpg
new file mode 100644
index 000000000000..b852daf732fa
Binary files /dev/null and b/aio/content/images/bios/angom.jpg differ
diff --git a/aio/content/images/bios/jeanmeche.jpg b/aio/content/images/bios/jeanmeche.jpg
new file mode 100644
index 000000000000..2fdd03a5bd0a
Binary files /dev/null and b/aio/content/images/bios/jeanmeche.jpg differ
diff --git a/aio/content/marketing/contributors.json b/aio/content/marketing/contributors.json
index 739757de1530..18c3f996dc5e 100644
--- a/aio/content/marketing/contributors.json
+++ b/aio/content/marketing/contributors.json
@@ -7,6 +7,14 @@
"bio": "Alain Chautard is a Google Developer Expert in Web Technologies / Angular. He started working with Angular JS in 2011. Since then he has worked with all Angular versions on a daily basis, both as a developer and as a technical trainer. He is the organizer of the Sacramento Angular Meetup group, co-organizer of the Google Developer Group chapter in Sacramento, California, and published author of the Packt video course 'Getting Started with Angular'",
"groups": ["GDE"]
},
+ "adyngom": {
+ "name": "Ady Ngom",
+ "picture": "angom.jpg",
+ "twitter": "adyngom",
+ "website": "https://adyngom.com",
+ "bio": "Ady is a Google Developer Expert in Angular. His first interaction with a computer was playing PacMan but he was more interested in knowing how it was built than how much fun it was to play it. For the past 20 years, Ady has strived in building simple, engaging and very intuitive consumer facing products. As a JavaScript Teach Lead and UI Architect, he spends a bulk of his time producing intuitive systems that are easy to scale and maintain. When away from the keyboard, he enjoys the Georgia outdoors with his wife and three children. To him, the unpredictable weather is a known issue that simply adds to the overall charm and he would not have it otherwise.",
+ "groups": ["GDE"]
+ },
"ahasall": {
"name": "Amadou Sall",
"picture": "ahasall.jpg",
@@ -411,6 +419,13 @@
"mentor": "dgp1130",
"picture": "jbedard.jpg"
},
+ "jeanmeche": {
+ "name": "Matthieu Riegler",
+ "picture":"jeanmeche.jpg",
+ "twitter": "jean__meche",
+ "bio": "Software engineer from the french Alps. Matthieu was born and raised with the web and now he love's building it! He currently works for Viseo.",
+ "groups": ["Collaborators"]
+ },
"jecelynyeen": {
"name": "Jecelyn Yeen",
"picture": "jecelynyeen.jpg",
diff --git a/aio/content/tutorial/tour-of-heroes/toh-pt6.md b/aio/content/tutorial/tour-of-heroes/toh-pt6.md
index c7285bb8ee82..24d22697ed5a 100644
--- a/aio/content/tutorial/tour-of-heroes/toh-pt6.md
+++ b/aio/content/tutorial/tour-of-heroes/toh-pt6.md
@@ -179,7 +179,7 @@ Because each service method returns a different kind of `Observable` result, `ha
### Tap into the Observable
-The `getHero()` method taps into the flow of observable values and sends a message, using the `log()` method, to the message area at the bottom of the page.
+The `getHeros()` method taps into the flow of observable values and sends a message, using the `log()` method, to the message area at the bottom of the page.
The RxJS `tap()` operator enables this ability by looking at the observable values, doing something with those values, and passing them along.
The `tap()` callback doesn't access the values themselves.
diff --git a/aio/package.json b/aio/package.json
index d7759523a023..5ce92a0358f2 100644
--- a/aio/package.json
+++ b/aio/package.json
@@ -81,10 +81,10 @@
"devDependencies": {
"@angular-devkit/architect-cli": "0.1600.0",
"@angular-devkit/build-angular": "16.0.0",
- "@angular-eslint/builder": "^15.0.0",
- "@angular-eslint/eslint-plugin": "^15.0.0",
- "@angular-eslint/eslint-plugin-template": "^15.0.0",
- "@angular-eslint/template-parser": "^15.0.0",
+ "@angular-eslint/builder": "16.0.3",
+ "@angular-eslint/eslint-plugin": "16.0.3",
+ "@angular-eslint/eslint-plugin-template": "16.0.3",
+ "@angular-eslint/template-parser": "^16.0.3",
"@angular/build-tooling": "https://github.com/angular/dev-infra-private-build-tooling-builds.git#7dad055464ea9847e4870b9e3baad1f0c417bdf7",
"@angular/cli": "16.0.0",
"@angular/compiler-cli": "16.0.0",
@@ -98,8 +98,8 @@
"@types/lunr": "^2.3.3",
"@types/node": "^12.7.9",
"@types/trusted-types": "^2.0.2",
- "@typescript-eslint/eslint-plugin": "5.59.2",
- "@typescript-eslint/parser": "5.59.2",
+ "@typescript-eslint/eslint-plugin": "5.59.8",
+ "@typescript-eslint/parser": "5.59.8",
"archiver": "^5.3.0",
"assert": "^2.0.0",
"canonical-path": "1.0.0",
@@ -110,11 +110,11 @@
"dgeni": "^0.4.14",
"dgeni-packages": "^0.30.0",
"entities": "^4.0.0",
- "eslint": "^8.0.0",
- "eslint-plugin-import": "^2.23.4",
- "eslint-plugin-jasmine": "^4.1.2",
- "eslint-plugin-jsdoc": "^41.0.0",
- "eslint-plugin-prefer-arrow": "^1.2.3",
+ "eslint": "8.41.0",
+ "eslint-plugin-import": "2.27.5",
+ "eslint-plugin-jasmine": "4.1.3",
+ "eslint-plugin-jsdoc": "45.0.0",
+ "eslint-plugin-prefer-arrow": "1.2.3",
"find-free-port": "^2.0.0",
"firebase-tools": "^12.0.0",
"fs-extra": "^11.0.0",
@@ -144,7 +144,7 @@
"lunr": "^2.3.9",
"npm-run-all": "^4.1.5",
"protractor": "~7.0.0",
- "puppeteer-core": "20.2.1",
+ "puppeteer-core": "20.4.0",
"rehype-slug": "^4.0.1",
"remark": "^12.0.0",
"remark-html": "^13.0.0",
@@ -156,7 +156,7 @@
"tree-kill": "^1.1.0",
"ts-node": "^10.8.1",
"tsec": "^0.2.2",
- "tslint": "~6.1.3",
+ "tslint": "6.1.3",
"typescript": "~5.0.2",
"uglify-js": "^3.13.3",
"unist-util-filter": "^2.0.3",
diff --git a/aio/src/app/custom-elements/live-example/live-example.component.ts b/aio/src/app/custom-elements/live-example/live-example.component.ts
index d8390c560d20..2c775b078059 100644
--- a/aio/src/app/custom-elements/live-example/live-example.component.ts
+++ b/aio/src/app/custom-elements/live-example/live-example.component.ts
@@ -136,7 +136,7 @@ export class LiveExampleComponent implements AfterContentInit {
*/
@Component({
selector: 'aio-embedded-stackblitz',
- template: '',
+ template: '',
styles: [ 'iframe { min-height: 400px; }' ]
})
export class EmbeddedStackblitzComponent implements AfterViewInit {
diff --git a/aio/tools/transforms/angular.io-package/processors/cleanGeneratedFiles.js b/aio/tools/transforms/angular.io-package/processors/cleanGeneratedFiles.js
index e3992f974f12..79daeb898590 100644
--- a/aio/tools/transforms/angular.io-package/processors/cleanGeneratedFiles.js
+++ b/aio/tools/transforms/angular.io-package/processors/cleanGeneratedFiles.js
@@ -1,10 +1,10 @@
-const rimraf = require('rimraf');
+const {rimrafSync} = require('rimraf');
module.exports = function cleanGeneratedFiles() {
return {
$runAfter: ['writing-files'],
$runBefore: ['writeFilesProcessor'],
$process: function() {
- rimraf.sync('src/generated/{docs,*.json}');
+ rimrafSync('src/generated/{docs,*.json}', {glob: true});
}
};
};
diff --git a/aio/tools/transforms/templates/cli/lib/cli.html b/aio/tools/transforms/templates/cli/lib/cli.html
index 90594ef1e68a..a05c09b4b39b 100644
--- a/aio/tools/transforms/templates/cli/lib/cli.html
+++ b/aio/tools/transforms/templates/cli/lib/cli.html
@@ -12,8 +12,8 @@
- Argument
- Description
+ Argument
+ Description
Value Type
@@ -38,8 +38,8 @@
- Option
- Description
+ Option
+ Description
Value Type
Default Value
diff --git a/aio/tools/transforms/templates/error/error.template.html b/aio/tools/transforms/templates/error/error.template.html
index 29fc85edd2c5..6aae48b0ff0e 100644
--- a/aio/tools/transforms/templates/error/error.template.html
+++ b/aio/tools/transforms/templates/error/error.template.html
@@ -12,7 +12,7 @@ {$ doc.code $}: {$ doc.shortDescription $}
diff --git a/aio/yarn.lock b/aio/yarn.lock
index 0eff2ab71760..f4a5e49e8c82 100644
--- a/aio/yarn.lock
+++ b/aio/yarn.lock
@@ -229,51 +229,54 @@
ora "5.4.1"
rxjs "7.8.1"
-"@angular-eslint/builder@^15.0.0":
- version "15.2.1"
- resolved "https://registry.yarnpkg.com/@angular-eslint/builder/-/builder-15.2.1.tgz#ce8c65e3b671897db75ad90b41ef4cd6efe626f0"
- integrity sha512-7x2DANebLRl997Mj4DhZrnz5+vnSjavGGveJ0mBuU7CEsL0ZYLftdRqL0e0HtU3ksseS7xpchD6OM08nkNgySw==
-
-"@angular-eslint/bundled-angular-compiler@15.2.1":
- version "15.2.1"
- resolved "https://registry.yarnpkg.com/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-15.2.1.tgz#7c77a4a19942868d844372b5b3b562c0d630de1e"
- integrity sha512-LO7Am8eVCr7oh6a0VmKSL7K03CnQEQhFO7Wt/YtbfYOxVjrbwmYLwJn+wZPOT7A02t/BttOD/WXuDrOWtSMQ/Q==
-
-"@angular-eslint/eslint-plugin-template@^15.0.0":
- version "15.2.1"
- resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-15.2.1.tgz#af39f66e9d971d7f7635add9cf1a396f1766fd64"
- integrity sha512-IeiSLk6YxapFdH2z5o/O3R7VwtBd2T6fWmhLFPwDYMDknrwegnOjwswCdBplOccpUp0wqlCeGUx7LTsuzwaz7w==
- dependencies:
- "@angular-eslint/bundled-angular-compiler" "15.2.1"
- "@angular-eslint/utils" "15.2.1"
- "@typescript-eslint/type-utils" "5.48.2"
- "@typescript-eslint/utils" "5.48.2"
+"@angular-eslint/builder@16.0.3":
+ version "16.0.3"
+ resolved "https://registry.yarnpkg.com/@angular-eslint/builder/-/builder-16.0.3.tgz#61846d7975b8248c7b7a1d7b251eed006c8666a3"
+ integrity sha512-pv/CrnOHHOnBqhyBmqUPsIHKXOHYMJztxYJ83tjxeXL5Moyu5e6CBMIQ58UtqmgWfEIA3n7owYy9KvHTJcemyQ==
+ dependencies:
+ "@nx/devkit" "16.2.2"
+ nx "16.2.2"
+
+"@angular-eslint/bundled-angular-compiler@16.0.3":
+ version "16.0.3"
+ resolved "https://registry.yarnpkg.com/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.0.3.tgz#52db355eb2794e5407bfd045c64e102a0c078fbe"
+ integrity sha512-8zwY6ustiPXBEF3+jELKVwGk6j2HJn7GHbqAhDFR02YiE27iRMSGTHIAWGs6ZI7F1JgfrIsOHrUgzC1x95K6rg==
+
+"@angular-eslint/eslint-plugin-template@16.0.3":
+ version "16.0.3"
+ resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.0.3.tgz#513c6b675f0feb5c77d3de1f7daa5484ca1b62a3"
+ integrity sha512-OKTMWOjC7F5tdv7gm2tlmgyr/uVyS1RWJZn4X/6D6p0kOpiDXmajtbYHD5tzbshX2Ep62Nt+rg8+1XGHrU0ScA==
+ dependencies:
+ "@angular-eslint/bundled-angular-compiler" "16.0.3"
+ "@angular-eslint/utils" "16.0.3"
+ "@typescript-eslint/type-utils" "5.59.7"
+ "@typescript-eslint/utils" "5.59.7"
aria-query "5.1.3"
axobject-query "3.1.1"
-"@angular-eslint/eslint-plugin@^15.0.0":
- version "15.2.1"
- resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin/-/eslint-plugin-15.2.1.tgz#616e7aa1f3aea6203e887c20749b87d08bb95d3e"
- integrity sha512-OM7b1kS4E4CkXjkaWN+lEzawh4VxY6l7FO1Cuk4s7iv3/YpZG3rJxIZBqnFLTixwrBuqw8y4FNBzF3eDgmFAUw==
+"@angular-eslint/eslint-plugin@16.0.3":
+ version "16.0.3"
+ resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin/-/eslint-plugin-16.0.3.tgz#ecd95c7efccf164c23b5fb3a5c49b8d3b708a1d6"
+ integrity sha512-1c+dFytcQDOA2wJ8/rtydMV6UYq1BgVfOcBXOr0WJxC9g8Cad9czcUOkW41WGrTp5kICMliV0ypH5eEaCM2WDQ==
dependencies:
- "@angular-eslint/utils" "15.2.1"
- "@typescript-eslint/utils" "5.48.2"
+ "@angular-eslint/utils" "16.0.3"
+ "@typescript-eslint/utils" "5.59.7"
-"@angular-eslint/template-parser@^15.0.0":
- version "15.2.1"
- resolved "https://registry.yarnpkg.com/@angular-eslint/template-parser/-/template-parser-15.2.1.tgz#dbe4978afdcea81b9d5cac3d672c20de5821dc54"
- integrity sha512-ViCi79gC2aKJecmYLkOT+QlT5WMRNXeYz0Dr9Pr8qXzIbY0oAWE7nOT5jkXwQ9oUk+ybtGCWHma5JVJWVJsIog==
+"@angular-eslint/template-parser@^16.0.3":
+ version "16.0.3"
+ resolved "https://registry.yarnpkg.com/@angular-eslint/template-parser/-/template-parser-16.0.3.tgz#20bd165964545c5fa01b7b756d272f77cef828fc"
+ integrity sha512-IAWdwp/S9QC3EMiVxSS0E3ABy9PSidN3PW0Ll2EtM3mzXMYlpZXmxqd+B1xV/xKWzhk1Mp04QX8hHfG6Vq+qaQ==
dependencies:
- "@angular-eslint/bundled-angular-compiler" "15.2.1"
+ "@angular-eslint/bundled-angular-compiler" "16.0.3"
eslint-scope "^7.0.0"
-"@angular-eslint/utils@15.2.1":
- version "15.2.1"
- resolved "https://registry.yarnpkg.com/@angular-eslint/utils/-/utils-15.2.1.tgz#b286fddb1b8b43d96b91009237da7f74d9e64dda"
- integrity sha512-++FneAJHxJqcSu0igVN6uOkSoHxlzgLoMBswuovYJy3UKwm33/T6WFku8++753Ca/JucIoR1gdUfO7SoSspMDg==
+"@angular-eslint/utils@16.0.3":
+ version "16.0.3"
+ resolved "https://registry.yarnpkg.com/@angular-eslint/utils/-/utils-16.0.3.tgz#a464f32a3df15d5e9f72cd47ffd123480c58c76e"
+ integrity sha512-QsbUVHJLk+fE08/D4y3wOyGk1iX2LVSygw+uzilbaAXfjD5/c0Ei5FbVx2mMYPk+aOl4yrvGQW3dmetMiAR0MQ==
dependencies:
- "@angular-eslint/bundled-angular-compiler" "15.2.1"
- "@typescript-eslint/utils" "5.48.2"
+ "@angular-eslint/bundled-angular-compiler" "16.0.3"
+ "@typescript-eslint/utils" "5.59.7"
"@angular/animations@16.0.0":
version "16.0.0"
@@ -292,7 +295,6 @@
"@angular/build-tooling@https://github.com/angular/dev-infra-private-build-tooling-builds.git#7dad055464ea9847e4870b9e3baad1f0c417bdf7":
version "0.0.0-5f06c4774df908ed69e1441f4ec63b898acf0c68"
- uid "7dad055464ea9847e4870b9e3baad1f0c417bdf7"
resolved "https://github.com/angular/dev-infra-private-build-tooling-builds.git#7dad055464ea9847e4870b9e3baad1f0c417bdf7"
dependencies:
"@angular-devkit/build-angular" "16.0.0-rc.0"
@@ -1594,10 +1596,10 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
-"@es-joy/jsdoccomment@~0.37.0":
- version "0.37.1"
- resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz#fa32a41ba12097452693343e09ad4d26d157aedd"
- integrity sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==
+"@es-joy/jsdoccomment@~0.39.4":
+ version "0.39.4"
+ resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.39.4.tgz#6b8a62e9b3077027837728818d3c4389a898b392"
+ integrity sha512-Jvw915fjqQct445+yron7Dufix9A+m9j1fCJYlCo1FWlRvTxa3pjJelxdSTdaLWcTwRU6vbL+NYjO4YuNIS5Qg==
dependencies:
comment-parser "1.3.1"
esquery "^1.5.0"
@@ -1850,10 +1852,10 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@8.40.0":
- version "8.40.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.40.0.tgz#3ba73359e11f5a7bd3e407f70b3528abfae69cec"
- integrity sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==
+"@eslint/js@8.41.0":
+ version "8.41.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3"
+ integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==
"@gar/promisify@^1.1.3":
version "1.1.3"
@@ -2889,6 +2891,77 @@
read-package-json-fast "^3.0.0"
which "^3.0.0"
+"@nrwl/devkit@16.2.2":
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.2.2.tgz#fd7d0a19b4be3ba35cc0d3dd9e4154f9812f432f"
+ integrity sha512-R8OSh33HtGycSuu0KshpH/tsTdi6j4w7DuIb+Sa59UDIkchpvMeNAz8tj/05Z2tTntDZnYqPkmCs6rkZ4PvY4Q==
+ dependencies:
+ "@nx/devkit" "16.2.2"
+
+"@nrwl/tao@16.2.2":
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.2.2.tgz#ace8d96c0ffa9ff45accf077d3c8d94a6cfe03a4"
+ integrity sha512-cPj6b+wSWs2WNFQ0p1fMyrvSLjkKJo7vXQTtd7MXNJT2NWEZdCtRy+nidZzjs7gKvVXGdZ8zDBXmCHWorOieXw==
+ dependencies:
+ nx "16.2.2"
+
+"@nx/devkit@16.2.2":
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.2.2.tgz#5035d7e3dc5e113ce29f243a912955fa7d93e95c"
+ integrity sha512-MTYzetk4AQ9u2syEb9z+drDsu6U6NRAXVuUDMNg0tpZcbtE9bCSLH2ngfvTCqmLrAMBsJZRdv0twS1iepMhlAg==
+ dependencies:
+ "@nrwl/devkit" "16.2.2"
+ ejs "^3.1.7"
+ ignore "^5.0.4"
+ semver "7.3.4"
+ tmp "~0.2.1"
+ tslib "^2.3.0"
+
+"@nx/nx-darwin-arm64@16.2.2":
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.2.2.tgz#7fb43fe8976a12b58f008d336d4898164254b740"
+ integrity sha512-CKfyLl92mhWqpv1hRTj3WgjVBY6yj3Et5T31m1N0assNWdTfuSB4ycdWzdlxXHx3yptnTOD/FCymTpUQI0GZRQ==
+
+"@nx/nx-darwin-x64@16.2.2":
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.2.2.tgz#74b20875e1bcd450291a58026df9728f0b70f681"
+ integrity sha512-++uDfp/Oo8DDVU53DiJVkRNjNbOLzahDH6dINeA/3yTCU/IS0wXoaoclNZBReMWlDKTVvWgLF/eSbGINMqUHRg==
+
+"@nx/nx-linux-arm-gnueabihf@16.2.2":
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.2.2.tgz#5afa251361b609ed966d31cac6a789174bd6b3a5"
+ integrity sha512-A4XFk63Q7fxgZaHnigIeofp/xOT2ZGDoNUyzld+UTlyJyNcClcOcqrro74aKOCG7PH0D56oE06JW3g7GKszgsA==
+
+"@nx/nx-linux-arm64-gnu@16.2.2":
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.2.2.tgz#5d2c4f75ba582844d139729f4b194d39b8fc81d1"
+ integrity sha512-aQpTLVSawFVr33pBWjj8elqvjA5uWvzDW7hGaFQPgWgmjxrtJikIAkcLjfNOz8XYjRAP4OZkTVh4/E3GUch0kQ==
+
+"@nx/nx-linux-arm64-musl@16.2.2":
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.2.2.tgz#5346829cddd27223c1c1b79c93eb195442b86907"
+ integrity sha512-20vyNYQ2SYSaWdxORj9HdOyGxiqE8SauaFiBjjid6/e5mSyaSKu+HHGsvhDUqzlWn3OaABKBqx0iYa9Kmf3BOQ==
+
+"@nx/nx-linux-x64-gnu@16.2.2":
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.2.2.tgz#702922f71076a041325add15b145f0e33726ec4a"
+ integrity sha512-0G8kYpEmGHD+tT7RvUEvVXvPbvQD9GfEjeWEzZAdNAAMJu7JFjIo/oZDJYV7cMvXnC+tbpI9Gba5xfv8Al95eA==
+
+"@nx/nx-linux-x64-musl@16.2.2":
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.2.2.tgz#ca2b0b1c98f16dfe66b7cffbec1e7b4c877058b4"
+ integrity sha512-Incv7DbKLfh6kakzMBuy6GYRgI+jEdZBRiFw0GoN9EsknmrPT/URn+w6uuicGGEXOLYpO3HUO3E374+b5Wz2zg==
+
+"@nx/nx-win32-arm64-msvc@16.2.2":
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.2.2.tgz#4ad8f7bf300dac63227e51c393345cc2306368d3"
+ integrity sha512-8m+Usj9faCl0pdQLFeBGhbYUObT3/tno5oGMPtJLyRjITNvTZAaIS4FFctp/rwJPehDBRQsUxwMJ2JRaU4jQdA==
+
+"@nx/nx-win32-x64-msvc@16.2.2":
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.2.2.tgz#0afbeb2133613a5a3b0083e18a250472ccf45932"
+ integrity sha512-liHtyVVOttcqHIV3Xrg/1AJzEgfiOCeqJsleHXHGgPr1fxPx7SIZaa3/QnDY1lNMN+t6Gvj0/r2Ba3iuptYD3Q==
+
"@opentelemetry/api@^1.0.0":
version "1.4.1"
resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.1.tgz#ff22eb2e5d476fbc2450a196e40dd243cc20c28f"
@@ -2899,6 +2972,14 @@
resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.3.1.tgz#ba07b864a3c955f061aa30ea3ef7f4ae4449794a"
integrity sha512-wU5J8rUoo32oSef/rFpOT1HIjLjAv3qIDHkw1QIhODV3OpAVHi5oVzlouozg9obUmZKtbZ0qUe/m7FP0y0yBzA==
+"@parcel/watcher@2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b"
+ integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==
+ dependencies:
+ node-addon-api "^3.2.1"
+ node-gyp-build "^4.3.0"
+
"@pkgjs/parseargs@^0.11.0":
version "0.11.0"
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
@@ -2978,17 +3059,15 @@
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
-"@puppeteer/browsers@1.3.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-1.3.0.tgz#5ad26540ff54e8b8fca8ab50d2da9c60360a21b9"
- integrity sha512-an3QdbNPkuU6qpxpbssxAbjRLJcF+eP4L8UqIY3+6n0sbaVxw5pz7PiCLy9g32XEZuoamUlV5ZQPnA6FxvkIHA==
+"@puppeteer/browsers@1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-1.4.0.tgz#da760aeb13f09441ed9c7c386e01b1061537c6c2"
+ integrity sha512-HiRpoc15NhFwoR1IjN3MkMsqeAfRQKNzbhWVV+0BfvybEhjWSyRNQMC0ohMhkFhzoGnFoS59WlrJCGLPky/89g==
dependencies:
debug "4.3.4"
extract-zip "2.0.1"
- http-proxy-agent "5.0.0"
- https-proxy-agent "5.0.1"
progress "2.0.3"
- proxy-from-env "1.1.0"
+ proxy-agent "6.2.0"
tar-fs "2.1.1"
unbzip2-stream "1.4.3"
yargs "17.7.1"
@@ -3511,15 +3590,15 @@
dependencies:
"@types/node" "*"
-"@typescript-eslint/eslint-plugin@5.59.2":
- version "5.59.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz#684a2ce7182f3b4dac342eef7caa1c2bae476abd"
- integrity sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==
+"@typescript-eslint/eslint-plugin@5.59.8":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.8.tgz#1e7a3e5318ece22251dfbc5c9c6feeb4793cc509"
+ integrity sha512-JDMOmhXteJ4WVKOiHXGCoB96ADWg9q7efPWHRViT/f09bA8XOMLAVHHju3l0MkZnG1izaWXYmgvQcUjTRcpShQ==
dependencies:
"@eslint-community/regexpp" "^4.4.0"
- "@typescript-eslint/scope-manager" "5.59.2"
- "@typescript-eslint/type-utils" "5.59.2"
- "@typescript-eslint/utils" "5.59.2"
+ "@typescript-eslint/scope-manager" "5.59.8"
+ "@typescript-eslint/type-utils" "5.59.8"
+ "@typescript-eslint/utils" "5.59.8"
debug "^4.3.4"
grapheme-splitter "^1.0.4"
ignore "^5.2.0"
@@ -3527,130 +3606,130 @@
semver "^7.3.7"
tsutils "^3.21.0"
-"@typescript-eslint/parser@5.59.2":
- version "5.59.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.2.tgz#c2c443247901d95865b9f77332d9eee7c55655e8"
- integrity sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==
+"@typescript-eslint/parser@5.59.8":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.8.tgz#60cbb00671d86cf746044ab797900b1448188567"
+ integrity sha512-AnR19RjJcpjoeGojmwZtCwBX/RidqDZtzcbG3xHrmz0aHHoOcbWnpDllenRDmDvsV0RQ6+tbb09/kyc+UT9Orw==
dependencies:
- "@typescript-eslint/scope-manager" "5.59.2"
- "@typescript-eslint/types" "5.59.2"
- "@typescript-eslint/typescript-estree" "5.59.2"
+ "@typescript-eslint/scope-manager" "5.59.8"
+ "@typescript-eslint/types" "5.59.8"
+ "@typescript-eslint/typescript-estree" "5.59.8"
debug "^4.3.4"
-"@typescript-eslint/scope-manager@5.48.2":
- version "5.48.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.48.2.tgz#bb7676cb78f1e94921eaab637a4b5d596f838abc"
- integrity sha512-zEUFfonQid5KRDKoI3O+uP1GnrFd4tIHlvs+sTJXiWuypUWMuDaottkJuR612wQfOkjYbsaskSIURV9xo4f+Fw==
+"@typescript-eslint/scope-manager@5.59.7":
+ version "5.59.7"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz#0243f41f9066f3339d2f06d7f72d6c16a16769e2"
+ integrity sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==
dependencies:
- "@typescript-eslint/types" "5.48.2"
- "@typescript-eslint/visitor-keys" "5.48.2"
+ "@typescript-eslint/types" "5.59.7"
+ "@typescript-eslint/visitor-keys" "5.59.7"
-"@typescript-eslint/scope-manager@5.59.2":
- version "5.59.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz#f699fe936ee4e2c996d14f0fdd3a7da5ba7b9a4c"
- integrity sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==
+"@typescript-eslint/scope-manager@5.59.8":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.8.tgz#ff4ad4fec6433647b817c4a7d4b4165d18ea2fa8"
+ integrity sha512-/w08ndCYI8gxGf+9zKf1vtx/16y8MHrZs5/tnjHhMLNSixuNcJavSX4wAiPf4aS5x41Es9YPCn44MIe4cxIlig==
dependencies:
- "@typescript-eslint/types" "5.59.2"
- "@typescript-eslint/visitor-keys" "5.59.2"
+ "@typescript-eslint/types" "5.59.8"
+ "@typescript-eslint/visitor-keys" "5.59.8"
-"@typescript-eslint/type-utils@5.48.2":
- version "5.48.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.48.2.tgz#7d3aeca9fa37a7ab7e3d9056a99b42f342c48ad7"
- integrity sha512-QVWx7J5sPMRiOMJp5dYshPxABRoZV1xbRirqSk8yuIIsu0nvMTZesKErEA3Oix1k+uvsk8Cs8TGJ6kQ0ndAcew==
+"@typescript-eslint/type-utils@5.59.7":
+ version "5.59.7"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz#89c97291371b59eb18a68039857c829776f1426d"
+ integrity sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==
dependencies:
- "@typescript-eslint/typescript-estree" "5.48.2"
- "@typescript-eslint/utils" "5.48.2"
+ "@typescript-eslint/typescript-estree" "5.59.7"
+ "@typescript-eslint/utils" "5.59.7"
debug "^4.3.4"
tsutils "^3.21.0"
-"@typescript-eslint/type-utils@5.59.2":
- version "5.59.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz#0729c237503604cd9a7084b5af04c496c9a4cdcf"
- integrity sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==
+"@typescript-eslint/type-utils@5.59.8":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.8.tgz#aa6c029a9d7706d26bbd25eb4666398781df6ea2"
+ integrity sha512-+5M518uEIHFBy3FnyqZUF3BMP+AXnYn4oyH8RF012+e7/msMY98FhGL5SrN29NQ9xDgvqCgYnsOiKp1VjZ/fpA==
dependencies:
- "@typescript-eslint/typescript-estree" "5.59.2"
- "@typescript-eslint/utils" "5.59.2"
+ "@typescript-eslint/typescript-estree" "5.59.8"
+ "@typescript-eslint/utils" "5.59.8"
debug "^4.3.4"
tsutils "^3.21.0"
-"@typescript-eslint/types@5.48.2":
- version "5.48.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.48.2.tgz#635706abb1ec164137f92148f06f794438c97b8e"
- integrity sha512-hE7dA77xxu7ByBc6KCzikgfRyBCTst6dZQpwaTy25iMYOnbNljDT4hjhrGEJJ0QoMjrfqrx+j1l1B9/LtKeuqA==
+"@typescript-eslint/types@5.59.7":
+ version "5.59.7"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.7.tgz#6f4857203fceee91d0034ccc30512d2939000742"
+ integrity sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==
-"@typescript-eslint/types@5.59.2":
- version "5.59.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.2.tgz#b511d2b9847fe277c5cb002a2318bd329ef4f655"
- integrity sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==
+"@typescript-eslint/types@5.59.8":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.8.tgz#212e54414733618f5d0fd50b2da2717f630aebf8"
+ integrity sha512-+uWuOhBTj/L6awoWIg0BlWy0u9TyFpCHrAuQ5bNfxDaZ1Ppb3mx6tUigc74LHcbHpOHuOTOJrBoAnhdHdaea1w==
-"@typescript-eslint/typescript-estree@5.48.2":
- version "5.48.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.2.tgz#6e206b462942b32383582a6c9251c05021cc21b0"
- integrity sha512-bibvD3z6ilnoVxUBFEgkO0k0aFvUc4Cttt0dAreEr+nrAHhWzkO83PEVVuieK3DqcgL6VAK5dkzK8XUVja5Zcg==
+"@typescript-eslint/typescript-estree@5.59.7":
+ version "5.59.7"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz#b887acbd4b58e654829c94860dbff4ac55c5cff8"
+ integrity sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==
dependencies:
- "@typescript-eslint/types" "5.48.2"
- "@typescript-eslint/visitor-keys" "5.48.2"
+ "@typescript-eslint/types" "5.59.7"
+ "@typescript-eslint/visitor-keys" "5.59.7"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
semver "^7.3.7"
tsutils "^3.21.0"
-"@typescript-eslint/typescript-estree@5.59.2":
- version "5.59.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz#6e2fabd3ba01db5d69df44e0b654c0b051fe9936"
- integrity sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==
+"@typescript-eslint/typescript-estree@5.59.8":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.8.tgz#801a7b1766481629481b3b0878148bd7a1f345d7"
+ integrity sha512-Jy/lPSDJGNow14vYu6IrW790p7HIf/SOV1Bb6lZ7NUkLc2iB2Z9elESmsaUtLw8kVqogSbtLH9tut5GCX1RLDg==
dependencies:
- "@typescript-eslint/types" "5.59.2"
- "@typescript-eslint/visitor-keys" "5.59.2"
+ "@typescript-eslint/types" "5.59.8"
+ "@typescript-eslint/visitor-keys" "5.59.8"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
semver "^7.3.7"
tsutils "^3.21.0"
-"@typescript-eslint/utils@5.48.2":
- version "5.48.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.48.2.tgz#3777a91dcb22b8499a25519e06eef2e9569295a3"
- integrity sha512-2h18c0d7jgkw6tdKTlNaM7wyopbLRBiit8oAxoP89YnuBOzCZ8g8aBCaCqq7h208qUTroL7Whgzam7UY3HVLow==
+"@typescript-eslint/utils@5.59.7":
+ version "5.59.7"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.7.tgz#7adf068b136deae54abd9a66ba5a8780d2d0f898"
+ integrity sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==
dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
"@types/json-schema" "^7.0.9"
"@types/semver" "^7.3.12"
- "@typescript-eslint/scope-manager" "5.48.2"
- "@typescript-eslint/types" "5.48.2"
- "@typescript-eslint/typescript-estree" "5.48.2"
+ "@typescript-eslint/scope-manager" "5.59.7"
+ "@typescript-eslint/types" "5.59.7"
+ "@typescript-eslint/typescript-estree" "5.59.7"
eslint-scope "^5.1.1"
- eslint-utils "^3.0.0"
semver "^7.3.7"
-"@typescript-eslint/utils@5.59.2":
- version "5.59.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.2.tgz#0c45178124d10cc986115885688db6abc37939f4"
- integrity sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==
+"@typescript-eslint/utils@5.59.8":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.8.tgz#34d129f35a2134c67fdaf024941e8f96050dca2b"
+ integrity sha512-Tr65630KysnNn9f9G7ROF3w1b5/7f6QVCJ+WK9nhIocWmx9F+TmCAcglF26Vm7z8KCTwoKcNEBZrhlklla3CKg==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@types/json-schema" "^7.0.9"
"@types/semver" "^7.3.12"
- "@typescript-eslint/scope-manager" "5.59.2"
- "@typescript-eslint/types" "5.59.2"
- "@typescript-eslint/typescript-estree" "5.59.2"
+ "@typescript-eslint/scope-manager" "5.59.8"
+ "@typescript-eslint/types" "5.59.8"
+ "@typescript-eslint/typescript-estree" "5.59.8"
eslint-scope "^5.1.1"
semver "^7.3.7"
-"@typescript-eslint/visitor-keys@5.48.2":
- version "5.48.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.2.tgz#c247582a0bcce467461d7b696513bf9455000060"
- integrity sha512-z9njZLSkwmjFWUelGEwEbdf4NwKvfHxvGC0OcGN1Hp/XNDIcJ7D5DpPNPv6x6/mFvc1tQHsaWmpD/a4gOvvCJQ==
+"@typescript-eslint/visitor-keys@5.59.7":
+ version "5.59.7"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz#09c36eaf268086b4fbb5eb9dc5199391b6485fc5"
+ integrity sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==
dependencies:
- "@typescript-eslint/types" "5.48.2"
+ "@typescript-eslint/types" "5.59.7"
eslint-visitor-keys "^3.3.0"
-"@typescript-eslint/visitor-keys@5.59.2":
- version "5.59.2"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz#37a419dc2723a3eacbf722512b86d6caf7d3b750"
- integrity sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==
+"@typescript-eslint/visitor-keys@5.59.8":
+ version "5.59.8"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.8.tgz#aa6a7ef862add919401470c09e1609392ef3cc40"
+ integrity sha512-pJhi2ms0x0xgloT7xYabil3SGGlojNNKjK/q6dB3Ey0uJLMjK2UDGJvHieiyJVW/7C3KI+Z4Q3pEHkm4ejA+xQ==
dependencies:
- "@typescript-eslint/types" "5.59.2"
+ "@typescript-eslint/types" "5.59.8"
eslint-visitor-keys "^3.3.0"
"@vitejs/plugin-basic-ssl@1.0.1":
@@ -3915,11 +3994,26 @@
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
-"@yarnpkg/lockfile@1.1.0":
+"@yarnpkg/lockfile@1.1.0", "@yarnpkg/lockfile@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
+"@yarnpkg/parsers@^3.0.0-rc.18":
+ version "3.0.0-rc.44"
+ resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.44.tgz#43bf7943c039681da8f343cc6d73c2ab3184978b"
+ integrity sha512-UVAt9Icc8zfGXioeYJ8XMoSTxOYVmlal2TRNxy9Uh91taS72kQFalK7LpIslcvEBKy4XtarmfIwcFIU3ZY64lw==
+ dependencies:
+ js-yaml "^3.10.0"
+ tslib "^2.4.0"
+
+"@zkochan/js-yaml@0.0.6":
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826"
+ integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==
+ dependencies:
+ argparse "^2.0.1"
+
a-sync-waterfall@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz#75b6b6aa72598b497a125e7a2770f14f4c8a1fa7"
@@ -4002,6 +4096,13 @@ agent-base@^4.3.0:
dependencies:
es6-promisify "^5.0.0"
+agent-base@^7.0.1, agent-base@^7.0.2, agent-base@^7.1.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434"
+ integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==
+ dependencies:
+ debug "^4.3.4"
+
agentkeepalive@^4.2.1:
version "4.3.0"
resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255"
@@ -4414,6 +4515,15 @@ axios@0.21.4:
dependencies:
follow-redirects "^1.14.0"
+axios@^1.0.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f"
+ integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==
+ dependencies:
+ follow-redirects "^1.15.0"
+ form-data "^4.0.0"
+ proxy-from-env "^1.1.0"
+
axobject-query@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1"
@@ -4496,6 +4606,11 @@ basic-auth@~2.0.1:
dependencies:
safe-buffer "5.1.2"
+basic-ftp@^5.0.2:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.3.tgz#b14c0fe8111ce001ec913686434fe0c2fb461228"
+ integrity sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==
+
batch@0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
@@ -4944,7 +5059,7 @@ ccount@^1.0.0, ccount@^1.0.3:
resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043"
integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==
-chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1:
+chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -5066,10 +5181,10 @@ chrome-trace-event@^1.0.2:
resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
-chromium-bidi@0.4.9:
- version "0.4.9"
- resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.4.9.tgz#a1c6d7497e2b8ae3d639fd69dacb25025fa0a696"
- integrity sha512-u3DC6XwgLCA9QJ5ak1voPslCmacQdulZNCPsI3qNXxSnEcZS7DFIbww+5RM2bznMEje7cc0oydavRLRvOIZtHw==
+chromium-bidi@0.4.10:
+ version "0.4.10"
+ resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.4.10.tgz#e5e13c22dab30969fe56c95d505956bc3a805df6"
+ integrity sha512-ngdRIq/f5G3nIOz1M0MtCABCTezr79MBCrJ09K2xRk+hTZQGTH8JIeFbgQmVvNPBMQblh7ROfJnSzsE07YpFfg==
dependencies:
mitt "3.0.0"
@@ -5111,13 +5226,18 @@ cli-boxes@^2.2.1:
resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==
-cli-cursor@^3.1.0:
+cli-cursor@3.1.0, cli-cursor@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
dependencies:
restore-cursor "^3.1.0"
+cli-spinners@2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d"
+ integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==
+
cli-spinners@^2.5.0:
version "2.9.0"
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db"
@@ -5573,6 +5693,13 @@ cross-fetch@3.1.5:
dependencies:
node-fetch "2.6.7"
+cross-fetch@3.1.6:
+ version "3.1.6"
+ resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.6.tgz#bae05aa31a4da760969756318feeee6e70f15d6c"
+ integrity sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==
+ dependencies:
+ node-fetch "^2.6.11"
+
cross-spawn@^6.0.5:
version "6.0.5"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
@@ -5694,6 +5821,11 @@ data-uri-to-buffer@3:
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636"
integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==
+data-uri-to-buffer@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz#db89a9e279c2ffe74f50637a59a32fb23b3e4d7c"
+ integrity sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==
+
data-urls@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-4.0.0.tgz#333a454eca6f9a5b7b0f1013ff89074c3f522dd4"
@@ -5829,6 +5961,16 @@ degenerator@^3.0.2:
esprima "^4.0.0"
vm2 "^3.9.17"
+degenerator@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-4.0.2.tgz#55b7fb41239ee0ea7644fa3f2aba84e0adfaa40c"
+ integrity sha512-HKwIFvZROUMfH3qI3gBpD61BYh7q3c3GXD5UGZzoVNJwVSYgZKvYl1fRMXc9ozoTxl/VZxKJ5v/bA+19tywFiw==
+ dependencies:
+ ast-types "^0.13.2"
+ escodegen "^1.8.1"
+ esprima "^4.0.0"
+ vm2 "^3.9.17"
+
del@^2.2.0:
version "2.2.2"
resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
@@ -6069,6 +6211,16 @@ dot-prop@^5.2.0:
dependencies:
is-obj "^2.0.0"
+dotenv@~10.0.0:
+ version "10.0.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81"
+ integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==
+
+duplexer@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
duplexify@^4.0.0:
version "4.1.2"
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0"
@@ -6110,9 +6262,6 @@ ecc-jsbn@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==
- dependencies:
- jsbn "~0.1.0"
- safer-buffer "^2.1.0"
ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11:
version "1.0.11"
@@ -6139,6 +6288,13 @@ ee-first@1.1.1:
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
+ejs@^3.1.7:
+ version "3.1.9"
+ resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361"
+ integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==
+ dependencies:
+ jake "^10.8.5"
+
electron-to-chromium@^1.4.284:
version "1.4.391"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.391.tgz#197994210792e29e39baf3ce807df42f66e9b5f8"
@@ -6223,7 +6379,7 @@ enhanced-resolve@^5.10.0, enhanced-resolve@^5.13.0:
graceful-fs "^4.2.4"
tapable "^2.2.0"
-enquirer@^2.3.6:
+enquirer@^2.3.6, enquirer@~2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
@@ -6510,7 +6666,7 @@ eslint-module-utils@^2.7.4:
dependencies:
debug "^3.2.7"
-eslint-plugin-import@^2.23.4:
+eslint-plugin-import@2.27.5:
version "2.27.5"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65"
integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==
@@ -6531,26 +6687,26 @@ eslint-plugin-import@^2.23.4:
semver "^6.3.0"
tsconfig-paths "^3.14.1"
-eslint-plugin-jasmine@^4.1.2:
+eslint-plugin-jasmine@4.1.3:
version "4.1.3"
resolved "https://registry.yarnpkg.com/eslint-plugin-jasmine/-/eslint-plugin-jasmine-4.1.3.tgz#c4ced986a61dd5b180982bafe6da1cbac0941c52"
integrity sha512-q8j8KnLH/4uwmPELFZvEyfEcuCuGxXScJaRdqHjOjz064GcfX6aoFbzy5VohZ5QYk2+WvoqMoqDSb9nRLf89GQ==
-eslint-plugin-jsdoc@^41.0.0:
- version "41.1.2"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-41.1.2.tgz#41d758a603aa59ae7bc34da88da2ca526466890e"
- integrity sha512-MePJXdGiPW7AG06CU5GbKzYtKpoHwTq1lKijjq+RwL/cQkZtBZ59Zbv5Ep0RVxSMnq6242249/n+w4XrTZ1Afg==
+eslint-plugin-jsdoc@45.0.0:
+ version "45.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-45.0.0.tgz#6be84e4842a7138cc571a907ea9c31c42eaac5c0"
+ integrity sha512-l2+Jcs/Ps7oFA+SWY+0sweU/e5LgricnEl6EsDlyRTF5y0+NWL1y9Qwz9PHwHAxtdJq6lxPjEQWmYLMkvhzD4g==
dependencies:
- "@es-joy/jsdoccomment" "~0.37.0"
+ "@es-joy/jsdoccomment" "~0.39.4"
are-docs-informative "^0.0.2"
comment-parser "1.3.1"
debug "^4.3.4"
escape-string-regexp "^4.0.0"
esquery "^1.5.0"
- semver "^7.3.8"
+ semver "^7.5.1"
spdx-expression-parse "^3.0.1"
-eslint-plugin-prefer-arrow@^1.2.3:
+eslint-plugin-prefer-arrow@1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz#e7fbb3fa4cd84ff1015b9c51ad86550e55041041"
integrity sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==
@@ -6571,37 +6727,25 @@ eslint-scope@^7.0.0, eslint-scope@^7.2.0:
esrecurse "^4.3.0"
estraverse "^5.2.0"
-eslint-utils@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
- integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
- dependencies:
- eslint-visitor-keys "^2.0.0"
-
eslint-visitor-keys@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
-eslint-visitor-keys@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
- integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
-
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1:
version "3.4.1"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994"
integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==
-eslint@^8.0.0:
- version "8.40.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.40.0.tgz#a564cd0099f38542c4e9a2f630fa45bf33bc42a4"
- integrity sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==
+eslint@8.41.0:
+ version "8.41.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.41.0.tgz#3062ca73363b4714b16dbc1e60f035e6134b6f1c"
+ integrity sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.4.0"
"@eslint/eslintrc" "^2.0.3"
- "@eslint/js" "8.40.0"
+ "@eslint/js" "8.41.0"
"@humanwhocodes/config-array" "^0.11.8"
"@humanwhocodes/module-importer" "^1.0.1"
"@nodelib/fs.walk" "^1.2.8"
@@ -6621,13 +6765,12 @@ eslint@^8.0.0:
find-up "^5.0.0"
glob-parent "^6.0.2"
globals "^13.19.0"
- grapheme-splitter "^1.0.4"
+ graphemer "^1.4.0"
ignore "^5.2.0"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
is-path-inside "^3.0.3"
- js-sdsl "^4.1.4"
js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
@@ -6870,6 +7013,17 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+fast-glob@3.2.7:
+ version "3.2.7"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1"
+ integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
fast-glob@^3.2.11, fast-glob@^3.2.9:
version "3.2.12"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
@@ -6929,7 +7083,7 @@ fecha@^4.2.0:
resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd"
integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==
-figures@^3.0.0:
+figures@3.2.0, figures@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
@@ -6948,6 +7102,13 @@ file-uri-to-path@2:
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba"
integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==
+filelist@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
+ integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
+ dependencies:
+ minimatch "^5.0.1"
+
filesize@^6.1.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd"
@@ -7103,6 +7264,11 @@ flat-cache@^3.0.4:
flatted "^3.1.0"
rimraf "^3.0.2"
+flat@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
+ integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
+
flatted@^3.1.0, flatted@^3.2.7:
version "3.2.7"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
@@ -7113,7 +7279,7 @@ fn.name@1.x.x:
resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
-follow-redirects@^1.0.0, follow-redirects@^1.14.0:
+follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.15.0:
version "1.15.2"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
@@ -7202,7 +7368,7 @@ fs-extra@^10.1.0:
jsonfile "^6.0.1"
universalify "^2.0.0"
-fs-extra@^11.0.0:
+fs-extra@^11.0.0, fs-extra@^11.1.0:
version "11.1.1"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d"
integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==
@@ -7413,6 +7579,16 @@ get-uri@3:
fs-extra "^8.1.0"
ftp "^0.3.10"
+get-uri@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.1.tgz#cff2ba8d456c3513a04b70c45de4dbcca5b1527c"
+ integrity sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==
+ dependencies:
+ basic-ftp "^5.0.2"
+ data-uri-to-buffer "^5.0.1"
+ debug "^4.3.4"
+ fs-extra "^8.1.0"
+
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
@@ -7458,6 +7634,18 @@ glob-to-regexp@^0.4.1:
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
+glob@7.1.4:
+ version "7.1.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+ integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
glob@8.1.0, glob@^8.0.0, glob@^8.0.1:
version "8.1.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
@@ -7676,6 +7864,11 @@ grapheme-splitter@^1.0.4:
resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+graphemer@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
+ integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+
gtoken@^5.0.4:
version "5.3.2"
resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f"
@@ -8012,7 +8205,16 @@ http-parser-js@>=0.5.1:
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3"
integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
-http-proxy-agent@5.0.0, http-proxy-agent@^5.0.0:
+http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
+ integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
+ dependencies:
+ "@tootallnate/once" "1"
+ agent-base "6"
+ debug "4"
+
+http-proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
@@ -8021,14 +8223,21 @@ http-proxy-agent@5.0.0, http-proxy-agent@^5.0.0:
agent-base "6"
debug "4"
-http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
- integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
+http-proxy-agent@^6.0.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-6.1.1.tgz#dc04f1a84e09511740cfbd984a56f86cc42e4277"
+ integrity sha512-JRCz+4Whs6yrrIoIlrH+ZTmhrRwtMnmOHsHn8GFEn9O2sVfSE+DAZ3oyyGIKF8tjJEeSJmP89j7aTjVsSqsU0g==
dependencies:
- "@tootallnate/once" "1"
- agent-base "6"
- debug "4"
+ agent-base "^7.1.0"
+ debug "^4.3.4"
+
+http-proxy-agent@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673"
+ integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==
+ dependencies:
+ agent-base "^7.1.0"
+ debug "^4.3.4"
http-proxy-middleware@^2.0.3:
version "2.0.6"
@@ -8075,6 +8284,22 @@ https-proxy-agent@^2.2.1:
agent-base "^4.3.0"
debug "^3.1.0"
+https-proxy-agent@^6.1.0:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-6.2.1.tgz#0965ab47371b3e531cf6794d1eb148710a992ba7"
+ integrity sha512-ONsE3+yfZF2caH5+bJlcddtWqNI3Gvs5A38+ngvljxaBiRXRswym2c7yf8UAeFpRFKjFNHIFEHqR/OLAWJzyiA==
+ dependencies:
+ agent-base "^7.0.2"
+ debug "4"
+
+https-proxy-agent@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz#75cb70d04811685667183b31ab158d006750418a"
+ integrity sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==
+ dependencies:
+ agent-base "^7.0.2"
+ debug "4"
+
human-signals@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
@@ -8118,7 +8343,7 @@ ignore-walk@^6.0.0:
dependencies:
minimatch "^9.0.0"
-ignore@^5.1.8, ignore@^5.2.0:
+ignore@^5.0.4, ignore@^5.1.8, ignore@^5.2.0:
version "5.2.4"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
@@ -8831,6 +9056,16 @@ jackspeak@^2.0.3:
optionalDependencies:
"@pkgjs/parseargs" "^0.11.0"
+jake@^10.8.5:
+ version "10.8.7"
+ resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f"
+ integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==
+ dependencies:
+ async "^3.2.3"
+ chalk "^4.0.2"
+ filelist "^1.0.4"
+ minimatch "^3.1.2"
+
jasmine-core@^4.1.0, jasmine-core@^4.6.0, jasmine-core@~4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-4.6.0.tgz#6884fc3d5b66bf293e422751eed6d6da217c38f5"
@@ -8911,17 +9146,19 @@ js-library-detector@^6.5.0:
resolved "https://registry.yarnpkg.com/js-library-detector/-/js-library-detector-6.6.0.tgz#b531a4784f8242d87f68f6f3eafc771a0650fb9d"
integrity sha512-z8OkDmXALZ22bIzBtIW8cpJ39MV93/Zu1rWrFdhsNw+sity2rOLaGT2kfWWQ6mnRTWs4ddONY5kiroA8e98Gvg==
-js-sdsl@^4.1.4:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430"
- integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==
-
js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-js-yaml@^3.13.1:
+js-yaml@4.1.0, js-yaml@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+js-yaml@^3.10.0, js-yaml@^3.13.1:
version "3.14.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
@@ -8929,13 +9166,6 @@ js-yaml@^3.13.1:
argparse "^1.0.7"
esprima "^4.0.0"
-js-yaml@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
- integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
- dependencies:
- argparse "^2.0.1"
-
js2xmlparser@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a"
@@ -9433,6 +9663,11 @@ lines-and-columns@^1.1.6:
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+lines-and-columns@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.3.tgz#b2f0badedb556b747020ab8ea7f0373e22efac1b"
+ integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==
+
linkify-it@^3.0.1:
version "3.0.3"
resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e"
@@ -9667,7 +9902,7 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
-lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1:
+lru-cache@^7.14.1, lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1:
version "7.18.3"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
@@ -9939,6 +10174,13 @@ minimalistic-assert@^1.0.0:
resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+minimatch@3.0.5:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3"
+ integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
@@ -10204,7 +10446,7 @@ no-case@^2.2.0:
dependencies:
lower-case "^1.1.1"
-node-addon-api@^3.0.0:
+node-addon-api@^3.0.0, node-addon-api@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
@@ -10223,7 +10465,7 @@ node-fetch@2.6.7:
dependencies:
whatwg-url "^5.0.0"
-node-fetch@^2.6.1, node-fetch@^2.6.7:
+node-fetch@^2.6.1, node-fetch@^2.6.11, node-fetch@^2.6.7:
version "2.6.11"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25"
integrity sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==
@@ -10235,7 +10477,7 @@ node-forge@^1, node-forge@^1.3.1:
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
-node-gyp-build@^4.2.2:
+node-gyp-build@^4.2.2, node-gyp-build@^4.3.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055"
integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==
@@ -10410,6 +10652,56 @@ nwsapi@^2.2.4:
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.4.tgz#fd59d5e904e8e1f03c25a7d5a15cfa16c714a1e5"
integrity sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==
+nx@16.2.2:
+ version "16.2.2"
+ resolved "https://registry.yarnpkg.com/nx/-/nx-16.2.2.tgz#8792e4dcc6522daf7bccc52e6ffd65d7162264a6"
+ integrity sha512-gOcpqs6wf8YdFIq6P0IlMxBGr2c27pM55zpqO7epSlN6NqW6SOFKnZa+6z4NV9qmifMqzWPx2VF0BY54ARuqYg==
+ dependencies:
+ "@nrwl/tao" "16.2.2"
+ "@parcel/watcher" "2.0.4"
+ "@yarnpkg/lockfile" "^1.1.0"
+ "@yarnpkg/parsers" "^3.0.0-rc.18"
+ "@zkochan/js-yaml" "0.0.6"
+ axios "^1.0.0"
+ chalk "^4.1.0"
+ cli-cursor "3.1.0"
+ cli-spinners "2.6.1"
+ cliui "^7.0.2"
+ dotenv "~10.0.0"
+ enquirer "~2.3.6"
+ fast-glob "3.2.7"
+ figures "3.2.0"
+ flat "^5.0.2"
+ fs-extra "^11.1.0"
+ glob "7.1.4"
+ ignore "^5.0.4"
+ js-yaml "4.1.0"
+ jsonc-parser "3.2.0"
+ lines-and-columns "~2.0.3"
+ minimatch "3.0.5"
+ npm-run-path "^4.0.1"
+ open "^8.4.0"
+ semver "7.3.4"
+ string-width "^4.2.3"
+ strong-log-transformer "^2.1.0"
+ tar-stream "~2.2.0"
+ tmp "~0.2.1"
+ tsconfig-paths "^4.1.2"
+ tslib "^2.3.0"
+ v8-compile-cache "2.3.0"
+ yargs "^17.6.2"
+ yargs-parser "21.1.1"
+ optionalDependencies:
+ "@nx/nx-darwin-arm64" "16.2.2"
+ "@nx/nx-darwin-x64" "16.2.2"
+ "@nx/nx-linux-arm-gnueabihf" "16.2.2"
+ "@nx/nx-linux-arm64-gnu" "16.2.2"
+ "@nx/nx-linux-arm64-musl" "16.2.2"
+ "@nx/nx-linux-x64-gnu" "16.2.2"
+ "@nx/nx-linux-x64-musl" "16.2.2"
+ "@nx/nx-win32-arm64-msvc" "16.2.2"
+ "@nx/nx-win32-x64-msvc" "16.2.2"
+
oauth-sign@~0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
@@ -10664,6 +10956,19 @@ pac-proxy-agent@^5.0.0:
raw-body "^2.2.0"
socks-proxy-agent "5"
+pac-proxy-agent@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-6.0.3.tgz#61042187093b67aa7dd05b41e4ec7c241a27c428"
+ integrity sha512-5Hr1KgPDoc21Vn3rsXBirwwDnF/iac1jN/zkpsOYruyT+ZgsUhUOgVwq3v9+ukjZd/yGm/0nzO1fDfl7rkGoHQ==
+ dependencies:
+ agent-base "^7.0.2"
+ debug "^4.3.4"
+ get-uri "^6.0.1"
+ http-proxy-agent "^7.0.0"
+ https-proxy-agent "^7.0.0"
+ pac-resolver "^6.0.1"
+ socks-proxy-agent "^8.0.1"
+
pac-resolver@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-5.0.1.tgz#c91efa3a9af9f669104fa2f51102839d01cde8e7"
@@ -10673,6 +10978,15 @@ pac-resolver@^5.0.0:
ip "^1.1.5"
netmask "^2.0.2"
+pac-resolver@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-6.0.1.tgz#319c182d3db4e6782e79519cb4dd1dda46579292"
+ integrity sha512-dg497MhVT7jZegPRuOScQ/z0aV/5WR0gTdRu1md+Irs9J9o+ls5jIuxjo1WfaTG+eQQkxyn5HMGvWK+w7EIBkQ==
+ dependencies:
+ degenerator "^4.0.1"
+ ip "^1.1.5"
+ netmask "^2.0.2"
+
pacote@15.1.3:
version "15.1.3"
resolved "https://registry.yarnpkg.com/pacote/-/pacote-15.1.3.tgz#4c0e7fb5e7ab3b27fb3f86514b451ad4c4f64e9d"
@@ -11188,6 +11502,20 @@ proxy-addr@~2.0.7:
forwarded "0.2.0"
ipaddr.js "1.9.1"
+proxy-agent@6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.2.0.tgz#03c9d5fb85c6c80f1b27d101f11f4f364b7838ed"
+ integrity sha512-g3rBHXPhEa0Z1nxZkirj0+US1SCcA67SnjpxbdZf7BloLdULEUCzbQozsq+wFwhmMeZegeZISDZjPFN/Ct9DaQ==
+ dependencies:
+ agent-base "^7.0.1"
+ debug "^4.3.4"
+ http-proxy-agent "^6.0.1"
+ https-proxy-agent "^6.1.0"
+ lru-cache "^7.14.1"
+ pac-proxy-agent "^6.0.2"
+ proxy-from-env "^1.1.0"
+ socks-proxy-agent "^8.0.1"
+
proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b"
@@ -11202,7 +11530,7 @@ proxy-agent@^5.0.0:
proxy-from-env "^1.0.0"
socks-proxy-agent "^5.0.0"
-proxy-from-env@1.1.0, proxy-from-env@^1.0.0:
+proxy-from-env@1.1.0, proxy-from-env@^1.0.0, proxy-from-env@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
@@ -11247,14 +11575,14 @@ pupa@^2.1.1:
dependencies:
escape-goat "^2.0.0"
-puppeteer-core@20.2.1:
- version "20.2.1"
- resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-20.2.1.tgz#e920e06e76ef2d1a1d98ea847611a8d662d3cd97"
- integrity sha512-HmNMcL+g9ght0nCzS5BmEvom2IVhp1/xhlQ9O+fmihQx0EYwYUqgCQhs8Hbv7IapiqKhahKCC8PKfCNTXXsKbQ==
+puppeteer-core@20.4.0:
+ version "20.4.0"
+ resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-20.4.0.tgz#39a411db6860ad5a9b93cb94e5e16f1c13babbd8"
+ integrity sha512-fcL2fYQLFZEuIIDbMhvf6WF5rAcKXetsrjOxu6Br6FEAet7kEtJlCcrKmnz3pfqkwAIlihjuzwT5ys7jMWEx8A==
dependencies:
- "@puppeteer/browsers" "1.3.0"
- chromium-bidi "0.4.9"
- cross-fetch "3.1.5"
+ "@puppeteer/browsers" "1.4.0"
+ chromium-bidi "0.4.10"
+ cross-fetch "3.1.6"
debug "4.3.4"
devtools-protocol "0.0.1120988"
ws "8.13.0"
@@ -11916,7 +12244,7 @@ safeps@7.0.1:
taskgroup "^5.0.0"
typechecker "^4.3.0"
-"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@~2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
@@ -12052,6 +12380,13 @@ semver@5.6.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
+semver@7.3.4:
+ version "7.3.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
+ integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
+ dependencies:
+ lru-cache "^6.0.0"
+
semver@7.4.0:
version "7.4.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.4.0.tgz#8481c92feffc531ab1e012a8ffc15bdd3a0f4318"
@@ -12071,6 +12406,13 @@ semver@^7.0.0, semver@^7.1.1, semver@^7.1.2, semver@^7.3.5, semver@^7.3.7, semve
dependencies:
lru-cache "^6.0.0"
+semver@^7.5.1:
+ version "7.5.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec"
+ integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==
+ dependencies:
+ lru-cache "^6.0.0"
+
semver@~7.3.0:
version "7.3.8"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
@@ -12384,7 +12726,16 @@ socks-proxy-agent@^7.0.0:
debug "^4.3.3"
socks "^2.6.2"
-socks@^2.3.3, socks@^2.6.2:
+socks-proxy-agent@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz#ffc5859a66dac89b0c4dab90253b96705f3e7120"
+ integrity sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==
+ dependencies:
+ agent-base "^7.0.1"
+ debug "^4.3.4"
+ socks "^2.7.1"
+
+socks@^2.3.3, socks@^2.6.2, socks@^2.7.1:
version "2.7.1"
resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55"
integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==
@@ -12766,6 +13117,15 @@ strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
+strong-log-transformer@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10"
+ integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==
+ dependencies:
+ duplexer "^0.1.1"
+ minimist "^1.2.0"
+ through "^2.3.4"
+
superstatic@^9.0.3:
version "9.0.3"
resolved "https://registry.yarnpkg.com/superstatic/-/superstatic-9.0.3.tgz#eb271841e971d9c3760f6d4b3adca5db00f29f18"
@@ -12864,7 +13224,7 @@ tar-fs@2.1.1:
pump "^3.0.0"
tar-stream "^2.1.4"
-tar-stream@^2.1.4, tar-stream@^2.2.0:
+tar-stream@^2.1.4, tar-stream@^2.2.0, tar-stream@~2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
@@ -12980,7 +13340,7 @@ third-party-web@^0.17.1:
resolved "https://registry.yarnpkg.com/third-party-web/-/third-party-web-0.17.1.tgz#22e03f1ff519a6380bae4594b704b9bb28e15158"
integrity sha512-X9Mha8cVeBwakunlZXkXL6xRzw8VCcDGWqT59EzeTYAJIi8ien3CuufnEGEx4ZUFahumNQdoOwf4H2T9Ca6lBg==
-through@^2.3.6, through@^2.3.8:
+through@^2.3.4, through@^2.3.6, through@^2.3.8:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
@@ -13012,7 +13372,7 @@ tmp@^0.0.33:
dependencies:
os-tmpdir "~1.0.2"
-tmp@^0.2.1:
+tmp@^0.2.1, tmp@~0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
@@ -13132,6 +13492,15 @@ tsconfig-paths@^3.14.1:
minimist "^1.2.6"
strip-bom "^3.0.0"
+tsconfig-paths@^4.1.2:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c"
+ integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==
+ dependencies:
+ json5 "^2.2.2"
+ minimist "^1.2.6"
+ strip-bom "^3.0.0"
+
tsec@^0.2.2:
version "0.2.7"
resolved "https://registry.yarnpkg.com/tsec/-/tsec-0.2.7.tgz#be530025907037ed57f37fc7625b6a7e3658fe43"
@@ -13150,7 +13519,12 @@ tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.3:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslint@~6.1.3:
+tslib@^2.4.0:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338"
+ integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==
+
+tslint@6.1.3:
version "6.1.3"
resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904"
integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==
@@ -13661,6 +14035,11 @@ v8-compile-cache-lib@^3.0.1:
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
+v8-compile-cache@2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
+ integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
+
v8-to-istanbul@^7.1.0:
version "7.1.2"
resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1"
@@ -14377,7 +14756,7 @@ yargs@17.7.1:
y18n "^5.0.5"
yargs-parser "^21.1.1"
-yargs@17.7.2, yargs@^17.0.0, yargs@^17.2.1, yargs@^17.3.1, yargs@^17.7.2:
+yargs@17.7.2, yargs@^17.0.0, yargs@^17.2.1, yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2:
version "17.7.2"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
diff --git a/devtools/projects/ng-devtools-backend/src/lib/directive-forest/render-tree.ts b/devtools/projects/ng-devtools-backend/src/lib/directive-forest/render-tree.ts
index 174a182a9feb..a2d3801e9a96 100644
--- a/devtools/projects/ng-devtools-backend/src/lib/directive-forest/render-tree.ts
+++ b/devtools/projects/ng-devtools-backend/src/lib/directive-forest/render-tree.ts
@@ -68,7 +68,6 @@ export class RTreeStrategy {
}
const getComponent = (window as any).ng.getComponent as (element: Element) => {};
const getDirectives = (window as any).ng.getDirectives as (node: Node) => {}[];
- const result = extractViewTree(element, [], getComponent, getDirectives);
- return result;
+ return extractViewTree(element, [], getComponent, getDirectives);
}
}
diff --git a/devtools/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-header.component.ts b/devtools/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-header.component.ts
index abc5e7cf5cd5..4d8228cefddb 100644
--- a/devtools/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-header.component.ts
+++ b/devtools/projects/ng-devtools/src/lib/devtools-tabs/directive-explorer/property-tab/property-tab-header.component.ts
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.io/license
*/
-import {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';
+import {ChangeDetectionStrategy, Component, Input} from '@angular/core';
import {IndexedNode} from '../directive-forest/index-forest';
diff --git a/docs/DEVELOPER.md b/docs/DEVELOPER.md
index a7cc7dd1bc8f..773009b66ccf 100644
--- a/docs/DEVELOPER.md
+++ b/docs/DEVELOPER.md
@@ -110,13 +110,9 @@ When making changes to Angular packages and testing in a local library/project y
The Angular CLI needs to be invoked using Node.js [`--preserve-symlinks`](https://nodejs.org/api/cli.html#--preserve-symlinks) flag. Otherwise the symbolic links will be resolved using their real path which causes node module resolution to fail.
-##### Windows
-
-`set BAZEL_TARGET="1" && node --preserve-symlinks node_modules/@angular/cli/lib/init.js serve`
-
-##### Unix Systems
-
-`BAZEL_TARGET="1" node --preserve-symlinks node_modules/.bin/ng serve`
+```sh
+node --preserve-symlinks --preserve-symlinks-main node_modules/@angular/cli/lib/init.js serve
+```
## Formatting your source code
diff --git a/goldens/size-tracking/integration-payloads.json b/goldens/size-tracking/integration-payloads.json
index 51b6a6e1cda1..6f517e3ba56d 100644
--- a/goldens/size-tracking/integration-payloads.json
+++ b/goldens/size-tracking/integration-payloads.json
@@ -9,7 +9,7 @@
"cli-hello-world-ivy-i18n": {
"uncompressed": {
"runtime": 926,
- "main": 126740,
+ "main": 131777,
"polyfills": 34676
}
},
@@ -52,8 +52,8 @@
"standalone-bootstrap": {
"uncompressed": {
"runtime": 918,
- "main": 87081,
+ "main": 91485,
"polyfills": 33802
}
}
-}
+}
\ No newline at end of file
diff --git a/integration/cli-elements-universal/src/app/app.module.ts b/integration/cli-elements-universal/src/app/app.module.ts
index 5edaa8fe9b55..6cda804e30c0 100644
--- a/integration/cli-elements-universal/src/app/app.module.ts
+++ b/integration/cli-elements-universal/src/app/app.module.ts
@@ -1,5 +1,5 @@
import { isPlatformBrowser } from '@angular/common';
-import { APP_ID, CUSTOM_ELEMENTS_SCHEMA, Inject, Injector, NgModule, PLATFORM_ID } from '@angular/core';
+import { CUSTOM_ELEMENTS_SCHEMA, Inject, Injector, NgModule, PLATFORM_ID } from '@angular/core';
import { createCustomElement } from '@angular/elements';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule } from '@angular/router';
diff --git a/integration/dynamic-compiler/src/lazy.module.ts b/integration/dynamic-compiler/src/lazy.module.ts
index 27a0aa025ac9..2d6c04aa3bc8 100644
--- a/integration/dynamic-compiler/src/lazy.module.ts
+++ b/integration/dynamic-compiler/src/lazy.module.ts
@@ -1,5 +1,4 @@
-import {NgModule} from "@angular/core";
-import {Component} from '@angular/core';
+import {NgModule, Component} from '@angular/core';
@Component({
selector: 'lazy-component',
diff --git a/package.json b/package.json
index e370f07dfa5e..62879035af16 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "angular-srcs",
- "version": "16.0.3",
+ "version": "16.0.4",
"private": true,
"description": "Angular - a web framework for modern web apps",
"homepage": "https://github.com/angular/angular",
@@ -79,7 +79,7 @@
"@types/babel__template": "7.4.1",
"@types/babel__traverse": "7.18.5",
"@types/bluebird": "^3.5.27",
- "@types/chrome": "^0.0.236",
+ "@types/chrome": "^0.0.237",
"@types/convert-source-map": "^1.5.1",
"@types/diff": "^5.0.0",
"@types/hammerjs": "2.0.41",
@@ -88,7 +88,7 @@
"@types/jasminewd2": "^2.0.8",
"@types/node": "^16.11.7",
"@types/selenium-webdriver": "3.0.7",
- "@types/selenium-webdriver4": "npm:@types/selenium-webdriver@4.1.14",
+ "@types/selenium-webdriver4": "npm:@types/selenium-webdriver@4.1.15",
"@types/semver": "^7.3.4",
"@types/shelljs": "^0.8.6",
"@types/systemjs": "0.19.32",
@@ -194,7 +194,7 @@
"// 6": "Ensure that a single instance of the `saucelabs` package is used. Protractor and the Karma sauce launcher pull this package as dependency. A single instance allows for e.g. easier patching in the Karma config.",
"resolutions": {
"**/graceful-fs": "4.2.11",
- "**/https-proxy-agent": "6.1.0",
+ "**/https-proxy-agent": "7.0.0",
"**/saucelabs": "7.2.1"
}
}
diff --git a/packages/animations/browser/src/render/animation_engine_next.ts b/packages/animations/browser/src/render/animation_engine_next.ts
index f34f17273d4a..080c7c04a1f7 100644
--- a/packages/animations/browser/src/render/animation_engine_next.ts
+++ b/packages/animations/browser/src/render/animation_engine_next.ts
@@ -72,8 +72,8 @@ export class AnimationEngine {
this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);
}
- onRemove(namespaceId: string, element: any, context: any, isHostElement?: boolean): void {
- this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, context);
+ onRemove(namespaceId: string, element: any, context: any): void {
+ this._transitionEngine.removeNode(namespaceId, element, context);
}
disableAnimations(element: any, disable: boolean) {
diff --git a/packages/animations/browser/src/render/transition_animation_engine.ts b/packages/animations/browser/src/render/transition_animation_engine.ts
index 6b861945f2d4..e30b43277f6c 100644
--- a/packages/animations/browser/src/render/transition_animation_engine.ts
+++ b/packages/animations/browser/src/render/transition_animation_engine.ts
@@ -744,7 +744,7 @@ export class TransitionAnimationEngine {
}
}
- removeNode(namespaceId: string, element: any, isHostElement: boolean, context: any): void {
+ removeNode(namespaceId: string, element: any, context: any): void {
if (isElementNode(element)) {
const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;
if (ns) {
@@ -753,11 +753,9 @@ export class TransitionAnimationEngine {
this.markElementAsRemoved(namespaceId, element, false, context);
}
- if (isHostElement) {
- const hostNS = this.namespacesByHostElement.get(element);
- if (hostNS && hostNS.id !== namespaceId) {
- hostNS.removeNode(element, context);
- }
+ const hostNS = this.namespacesByHostElement.get(element);
+ if (hostNS && hostNS.id !== namespaceId) {
+ hostNS.removeNode(element, context);
}
} else {
this._onRemovalComplete(element, context);
diff --git a/packages/animations/browser/test/render/transition_animation_engine_spec.ts b/packages/animations/browser/test/render/transition_animation_engine_spec.ts
index 3e92b0ae34a8..cbe5817c18d8 100644
--- a/packages/animations/browser/test/render/transition_animation_engine_spec.ts
+++ b/packages/animations/browser/test/render/transition_animation_engine_spec.ts
@@ -116,7 +116,7 @@ describe('TransitionAnimationEngine', () => {
expect(engine.elementContainsData(DEFAULT_NAMESPACE_ID, element)).toBeTruthy();
- engine.removeNode(DEFAULT_NAMESPACE_ID, element, true, true);
+ engine.removeNode(DEFAULT_NAMESPACE_ID, element, true);
engine.flush();
expect(engine.elementContainsData(DEFAULT_NAMESPACE_ID, element)).toBeTruthy();
@@ -171,7 +171,7 @@ describe('TransitionAnimationEngine', () => {
expect(engine.statesByElement.has(element)).toBe(true, 'Expected parent data to be defined.');
expect(engine.statesByElement.has(child)).toBe(true, 'Expected child data to be defined.');
- engine.removeNode(DEFAULT_NAMESPACE_ID, element, true, true);
+ engine.removeNode(DEFAULT_NAMESPACE_ID, element, true);
engine.flush();
engine.players[0].finish();
diff --git a/packages/animations/browser/test/render/web_animations/web_animations_driver_spec.ts b/packages/animations/browser/test/render/web_animations/web_animations_driver_spec.ts
index 86426507adc3..aeef781a4c68 100644
--- a/packages/animations/browser/test/render/web_animations/web_animations_driver_spec.ts
+++ b/packages/animations/browser/test/render/web_animations/web_animations_driver_spec.ts
@@ -5,8 +5,6 @@
* 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 {browserDetection} from '@angular/platform-browser/testing/src/browser_util';
-
import {WebAnimationsDriver} from '../../../src/render/web_animations/web_animations_driver';
import {WebAnimationsPlayer} from '../../../src/render/web_animations/web_animations_player';
diff --git a/packages/benchpress/src/sample_description.ts b/packages/benchpress/src/sample_description.ts
index d1537e8e0347..de7dea35084f 100644
--- a/packages/benchpress/src/sample_description.ts
+++ b/packages/benchpress/src/sample_description.ts
@@ -6,7 +6,6 @@
* found in the LICENSE file at https://angular.io/license
*/
-import {InjectionToken} from '@angular/core';
import {Options} from './common_options';
import {Metric} from './metric';
diff --git a/packages/common/http/src/interceptor.ts b/packages/common/http/src/interceptor.ts
index 753530a768ac..6b0f03e88aa8 100644
--- a/packages/common/http/src/interceptor.ts
+++ b/packages/common/http/src/interceptor.ts
@@ -6,8 +6,9 @@
* found in the LICENSE file at https://angular.io/license
*/
-import {EnvironmentInjector, inject, Injectable, InjectionToken} from '@angular/core';
+import {EnvironmentInjector, inject, Injectable, InjectionToken, ɵInitialRenderPendingTasks as InitialRenderPendingTasks} from '@angular/core';
import {Observable} from 'rxjs';
+import {finalize} from 'rxjs/operators';
import {HttpBackend, HttpHandler} from './backend';
import {HttpRequest} from './request';
@@ -178,13 +179,16 @@ export function legacyInterceptorFnFactory(): HttpInterceptorFn {
adaptLegacyInterceptorToChain, interceptorChainEndFn as ChainedInterceptorFn);
}
- return chain(req, handler);
+ const pendingTasks = inject(InitialRenderPendingTasks);
+ const taskId = pendingTasks.add();
+ return chain(req, handler).pipe(finalize(() => pendingTasks.remove(taskId)));
};
}
@Injectable()
export class HttpInterceptorHandler extends HttpHandler {
private chain: ChainedInterceptorFn|null = null;
+ private readonly pendingTasks = inject(InitialRenderPendingTasks);
constructor(private backend: HttpBackend, private injector: EnvironmentInjector) {
super();
@@ -206,6 +210,9 @@ export class HttpInterceptorHandler extends HttpHandler {
chainedInterceptorFn(nextSequencedFn, interceptorFn, this.injector),
interceptorChainEndFn as ChainedInterceptorFn);
}
- return this.chain(initialRequest, downstreamRequest => this.backend.handle(downstreamRequest));
+
+ const taskId = this.pendingTasks.add();
+ return this.chain(initialRequest, downstreamRequest => this.backend.handle(downstreamRequest))
+ .pipe(finalize(() => this.pendingTasks.remove(taskId)));
}
}
diff --git a/packages/common/http/src/transfer_cache.ts b/packages/common/http/src/transfer_cache.ts
index 8d1e9130b7fd..a488ca5f7675 100644
--- a/packages/common/http/src/transfer_cache.ts
+++ b/packages/common/http/src/transfer_cache.ts
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.io/license
*/
-import {APP_BOOTSTRAP_LISTENER, ApplicationRef, inject, InjectionToken, makeStateKey, Provider, StateKey, TransferState, ɵENABLED_SSR_FEATURES as ENABLED_SSR_FEATURES, ɵInitialRenderPendingTasks as InitialRenderPendingTasks} from '@angular/core';
+import {APP_BOOTSTRAP_LISTENER, ApplicationRef, inject, InjectionToken, makeStateKey, Provider, StateKey, TransferState, ɵENABLED_SSR_FEATURES as ENABLED_SSR_FEATURES} from '@angular/core';
import {Observable, of} from 'rxjs';
import {first, tap} from 'rxjs/operators';
@@ -165,16 +165,13 @@ export function withHttpTransferCache(): Provider[] {
useFactory: () => {
const appRef = inject(ApplicationRef);
const cacheState = inject(CACHE_STATE);
- const pendingTasks = inject(InitialRenderPendingTasks);
return () => {
- const isStablePromise = appRef.isStable.pipe(first((isStable) => isStable)).toPromise();
- isStablePromise.then(() => pendingTasks.whenAllTasksComplete).then(() => {
+ appRef.isStable.pipe(first((isStable) => isStable)).toPromise().then(() => {
cacheState.isCacheActive = false;
});
};
- },
- deps: [ApplicationRef, CACHE_STATE, InitialRenderPendingTasks]
+ }
}
];
}
diff --git a/packages/common/http/src/xhr.ts b/packages/common/http/src/xhr.ts
index ce24a2201313..583a74a0a703 100644
--- a/packages/common/http/src/xhr.ts
+++ b/packages/common/http/src/xhr.ts
@@ -60,10 +60,6 @@ export class HttpXhrBackend implements HttpBackend {
`Cannot make a JSONP request without JSONP support. To fix the problem, either add the \`withJsonpSupport()\` call (if \`provideHttpClient()\` is used) or import the \`HttpClientJsonpModule\` in the root NgModule.`);
}
- // Schedule a macrotask. This will cause NgZone.isStable to be set to false,
- // Which delays server rendering until the request is completed.
- const macroTaskCanceller = createBackgroundMacroTask();
-
// Check whether this factory has a special function to load an XHR implementation
// for various non-browser environments. We currently limit it to only `ServerXhr`
// class, which needs to load an XHR implementation.
@@ -235,11 +231,7 @@ export class HttpXhrBackend implements HttpBackend {
statusText: xhr.statusText || 'Unknown Error',
url: url || undefined,
});
-
observer.error(res);
-
- // Cancel the background macrotask.
- macroTaskCanceller();
};
// The sentHeaders flag tracks whether the HttpResponseHeaders event
@@ -317,32 +309,18 @@ export class HttpXhrBackend implements HttpBackend {
}
}
- /** Tear down logic to cancel the backround macrotask. */
- const onLoadEnd = () => macroTaskCanceller();
-
- xhr.addEventListener('loadend', onLoadEnd);
-
// Fire the request, and notify the event stream that it was fired.
- try {
- xhr.send(reqBody!);
- } catch (e: any) {
- onError(e);
- }
-
+ xhr.send(reqBody!);
observer.next({type: HttpEventType.Sent});
// This is the return from the Observable function, which is the
// request cancellation handler.
return () => {
// On a cancellation, remove all registered event listeners.
- xhr.removeEventListener('loadend', onLoadEnd);
xhr.removeEventListener('error', onError);
xhr.removeEventListener('abort', onError);
xhr.removeEventListener('load', onLoad);
xhr.removeEventListener('timeout', onError);
- // Cancel the background macrotask.
- macroTaskCanceller();
-
if (req.reportProgress) {
xhr.removeEventListener('progress', onDownProgress);
if (reqBody !== null && xhr.upload) {
@@ -360,26 +338,3 @@ export class HttpXhrBackend implements HttpBackend {
);
}
}
-
-/**
- * A method that creates a background macrotask using Zone.js.
- *
- * This is so that Zone.js can intercept HTTP calls, this is important for server rendering,
- * as the application is only rendered once the application is stabilized, meaning there are pending
- * macro and micro tasks.
- *
- * @returns a callback method to cancel the macrotask.
- */
-function createBackgroundMacroTask(): VoidFunction {
- // We use Zone.js when it's defined as otherwise a `setTimeout` will leave open timers which
- // causes `fakeAsync` tests to fail.
- const noop = () => {};
- if (typeof Zone !== 'undefined') {
- const zoneCurrent = Zone.current;
- const task = zoneCurrent.scheduleMacroTask('httpMacroTask', noop, undefined, noop, noop);
-
- return () => zoneCurrent.cancelTask(task);
- }
-
- return noop;
-}
diff --git a/packages/common/locales/generate-locales-tool/bin/write-locale-files-to-dist.ts b/packages/common/locales/generate-locales-tool/bin/write-locale-files-to-dist.ts
index 40c014bb8914..ccfd3a5031aa 100644
--- a/packages/common/locales/generate-locales-tool/bin/write-locale-files-to-dist.ts
+++ b/packages/common/locales/generate-locales-tool/bin/write-locale-files-to-dist.ts
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.io/license
*/
-import {writeFileSync} from 'fs';
+import fs from 'fs';
import {join} from 'path';
import {CldrData} from '../cldr-data';
@@ -21,7 +21,7 @@ import {BASE_LOCALE} from './base-locale';
* Generates locale files for each available CLDR locale and writes it to the
* specified directory.
*/
-function main(outputDir: string|undefined) {
+async function main(outputDir: string|undefined) {
if (outputDir === undefined) {
throw Error('No output directory specified.');
}
@@ -32,19 +32,22 @@ function main(outputDir: string|undefined) {
const extraLocaleDir = join(outputDir, 'extra');
const globalLocaleDir = join(outputDir, 'global');
- console.info(`Writing locales to: ${outputDir}`);
-
// Generate locale files for all locales we have data for.
- cldrData.availableLocales.forEach((localeData) => {
+ await Promise.all(cldrData.availableLocales.flatMap(async (localeData) => {
const locale = localeData.locale;
const localeFile = generateLocale(locale, localeData, baseCurrencies);
const localeExtraFile = generateLocaleExtra(locale, localeData);
const localeGlobalFile = generateLocaleGlobalFile(locale, localeData, baseCurrencies);
- writeFileSync(join(outputDir, `${locale}.ts`), localeFile);
- writeFileSync(join(extraLocaleDir, `${locale}.ts`), localeExtraFile);
- writeFileSync(join(globalLocaleDir, `${locale}.js`), localeGlobalFile);
- });
+ return [
+ fs.promises.writeFile(join(outputDir, `${locale}.ts`), localeFile),
+ fs.promises.writeFile(join(extraLocaleDir, `${locale}.ts`), localeExtraFile),
+ fs.promises.writeFile(join(globalLocaleDir, `${locale}.js`), localeGlobalFile),
+ ];
+ }));
}
-main(process.argv[2]);
+main(process.argv[2]).catch(err => {
+ console.error(err);
+ process.exitCode = 1;
+});
diff --git a/packages/common/locales/generate-locales-tool/plural-function.ts b/packages/common/locales/generate-locales-tool/plural-function.ts
index 46f99ed63b74..ed75feccebb5 100644
--- a/packages/common/locales/generate-locales-tool/plural-function.ts
+++ b/packages/common/locales/generate-locales-tool/plural-function.ts
@@ -12,6 +12,9 @@ import {CldrLocaleData} from './cldr-data';
// There are no types available for `cldr`.
const {load: createCldr} = await import('cldr' as any);
+// Load once to avoid re-parsing CLDR XML data on every invocation.
+const cldr = createCldr(runfiles.resolve('cldr_xml_data'));
+
/**
* Returns the plural function for a locale.
*/
@@ -21,7 +24,6 @@ export function getPluralFunction(localeData: CldrLocaleData, withTypes = true)
// we follow the CLDR-specified bundle lookup algorithm. A language does not necessarily
// resolve directly to a bundle CLDR provides data for.
const bundleName = localeData.attributes.bundle;
- const cldr = createCldr(runfiles.resolve('cldr_xml_data'));
let fn = cldr.extractPluralRuleFunction(bundleName).toString();
const numberType = withTypes ? ': number' : '';
diff --git a/packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts b/packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts
index 6bace8857807..03c226fad0bd 100644
--- a/packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts
+++ b/packages/common/src/directives/ng_optimized_image/ng_optimized_image.ts
@@ -229,7 +229,7 @@ export class NgOptimizedImage implements OnInit, OnChanges, OnDestroy {
private imgElement: HTMLImageElement = inject(ElementRef).nativeElement;
private injector = inject(Injector);
private readonly isServer = isPlatformServer(inject(PLATFORM_ID));
- private readonly preloadLinkChecker = inject(PreloadLinkCreator);
+ private readonly preloadLinkCreator = inject(PreloadLinkCreator);
// a LCP image observer - should be injected only in the dev mode
private lcpObserver = ngDevMode ? this.injector.get(LCPImageObserver) : null;
@@ -451,7 +451,7 @@ export class NgOptimizedImage implements OnInit, OnChanges, OnDestroy {
}
if (this.isServer && this.priority) {
- this.preloadLinkChecker.createPreloadLinkTag(
+ this.preloadLinkCreator.createPreloadLinkTag(
this.renderer, rewrittenSrc, rewrittenSrcset, this.sizes);
}
}
diff --git a/packages/common/src/pipes/async_pipe.ts b/packages/common/src/pipes/async_pipe.ts
index 31c21eb41677..6778b3ec5b94 100644
--- a/packages/common/src/pipes/async_pipe.ts
+++ b/packages/common/src/pipes/async_pipe.ts
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.io/license
*/
-import {ChangeDetectorRef, EventEmitter, OnDestroy, Pipe, PipeTransform, ɵisPromise, ɵisSubscribable} from '@angular/core';
+import {ChangeDetectorRef, EventEmitter, OnDestroy, Pipe, PipeTransform, untracked, ɵisPromise, ɵisSubscribable} from '@angular/core';
import {Observable, Subscribable, Unsubscribable} from 'rxjs';
import {invalidPipeArgumentError} from './invalid_pipe_argument_error';
@@ -19,16 +19,24 @@ interface SubscriptionStrategy {
class SubscribableStrategy implements SubscriptionStrategy {
createSubscription(async: Subscribable, updateLatestValue: any): Unsubscribable {
- return async.subscribe({
+ // Subscription can be side-effectful, and we don't want any signal reads which happen in the
+ // side effect of the subscription to be tracked by a component's template when that
+ // subscription is triggered via the async pipe. So we wrap the subscription in `untracked` to
+ // decouple from the current reactive context.
+ //
+ // `untracked` also prevents signal _writes_ which happen in the subscription side effect from
+ // being treated as signal writes during the template evaluation (which throws errors).
+ return untracked(() => async.subscribe({
next: updateLatestValue,
error: (e: any) => {
throw e;
}
- });
+ }));
}
dispose(subscription: Unsubscribable): void {
- subscription.unsubscribe();
+ // See the comment in `createSubscription` above on the use of `untracked`.
+ untracked(() => subscription.unsubscribe());
}
}
diff --git a/packages/common/test/pipes/async_pipe_spec.ts b/packages/common/test/pipes/async_pipe_spec.ts
index 1266e9b5fdf5..f8e7415a03c0 100644
--- a/packages/common/test/pipes/async_pipe_spec.ts
+++ b/packages/common/test/pipes/async_pipe_spec.ts
@@ -7,9 +7,9 @@
*/
import {AsyncPipe} from '@angular/common';
-import {ChangeDetectorRef, Component, EventEmitter} from '@angular/core';
+import {ChangeDetectorRef, Component, computed, EventEmitter, signal} from '@angular/core';
import {TestBed} from '@angular/core/testing';
-import {of, Subscribable, Unsubscribable} from 'rxjs';
+import {Observable, of, Subscribable, Unsubscribable} from 'rxjs';
{
describe('AsyncPipe', () => {
@@ -114,6 +114,29 @@ import {of, Subscribable, Unsubscribable} from 'rxjs';
expect(firstResult).toBeNaN();
expect(secondResult).toBeNaN();
});
+
+ it('should not track signal reads in subscriptions', () => {
+ const trigger = signal(false);
+
+ const obs = new Observable(() => {
+ // Whenever `obs` is subscribed, synchronously read `trigger`.
+ trigger();
+ });
+
+ let trackCount = 0;
+ const tracker = computed(() => {
+ // Subscribe to `obs` within this `computed`. If the subscription side effect runs
+ // within the computed, then changes to `trigger` will invalidate this computed.
+ pipe.transform(obs);
+
+ // The computed returns how many times it's run.
+ return ++trackCount;
+ });
+
+ expect(tracker()).toBe(1);
+ trigger.set(true);
+ expect(tracker()).toBe(1);
+ });
});
describe('ngOnDestroy', () => {
diff --git a/packages/compiler/test/integration_spec.ts b/packages/compiler/test/integration_spec.ts
index 12252796b3c8..9e773f3c8d51 100644
--- a/packages/compiler/test/integration_spec.ts
+++ b/packages/compiler/test/integration_spec.ts
@@ -9,7 +9,6 @@
import {Component, Directive, Input} from '@angular/core';
import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
import {By} from '@angular/platform-browser/src/dom/debug/by';
-import {browserDetection} from '@angular/platform-browser/testing/src/browser_util';
import {expect} from '@angular/platform-browser/testing/src/matchers';
{
@@ -39,26 +38,20 @@ import {expect} from '@angular/platform-browser/testing/src/matchers';
});
describe('ng-container', () => {
- if (browserDetection.isChromeDesktop) {
- it('should work regardless the namespace', waitForAsync(() => {
- @Component({
- selector: 'comp',
- template:
- ' ',
- })
- class MyCmp {
- }
+ it('should work regardless the namespace', waitForAsync(() => {
+ @Component({
+ selector: 'comp',
+ template:
+ ' ',
+ })
+ class MyCmp {
+ }
- const f =
- TestBed.configureTestingModule({declarations: [MyCmp]}).createComponent(MyCmp);
- f.detectChanges();
+ const f = TestBed.configureTestingModule({declarations: [MyCmp]}).createComponent(MyCmp);
+ f.detectChanges();
- expect(f.nativeElement.children[0].children[0].tagName).toEqual('rect');
- }));
- } else {
- // Jasmine will throw if there are no tests.
- it('should pass', () => {});
- }
+ expect(f.nativeElement.children[0].children[0].tagName).toEqual('rect');
+ }));
});
});
}
diff --git a/packages/compiler/test/schema/dom_element_schema_registry_spec.ts b/packages/compiler/test/schema/dom_element_schema_registry_spec.ts
index c4812c7b2474..1f24406d033b 100644
--- a/packages/compiler/test/schema/dom_element_schema_registry_spec.ts
+++ b/packages/compiler/test/schema/dom_element_schema_registry_spec.ts
@@ -8,7 +8,6 @@
import {DomElementSchemaRegistry} from '@angular/compiler/src/schema/dom_element_schema_registry';
import {CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, SecurityContext} from '@angular/core';
-import {browserDetection} from '@angular/platform-browser/testing/src/browser_util';
import {Element} from '../../src/ml_parser/ast';
import {HtmlParser} from '../../src/ml_parser/html_parser';
@@ -185,7 +184,7 @@ If 'onAnything' is a directive input, make sure the directive is imported by the
});
});
- if (browserDetection.isChromeDesktop) {
+ if (!isNode) {
it('generate a new schema', () => {
let schema = '\n';
extractSchema()!.forEach((props, name) => {
diff --git a/packages/core/src/application_ref.ts b/packages/core/src/application_ref.ts
index 7c916deca9de..ec9b181f648c 100644
--- a/packages/core/src/application_ref.ts
+++ b/packages/core/src/application_ref.ts
@@ -8,7 +8,8 @@
import './util/ng_jit_mode';
-import {Subscription} from 'rxjs';
+import {Observable, of, Subscription} from 'rxjs';
+import {distinctUntilChanged, mergeMap, share} from 'rxjs/operators';
import {ApplicationInitStatus} from './application_init';
import {PLATFORM_INITIALIZER} from './application_tokens';
@@ -25,6 +26,7 @@ import {ErrorHandler} from './error_handler';
import {formatRuntimeError, RuntimeError, RuntimeErrorCode} from './errors';
import {DEFAULT_LOCALE_ID} from './i18n/localization';
import {LOCALE_ID} from './i18n/tokens';
+import {InitialRenderPendingTasks} from './initial_render_pending_tasks';
import {Type} from './interface/type';
import {COMPILER_OPTIONS, CompilerOptions} from './linker/compiler';
import {ComponentFactory, ComponentRef} from './linker/component_factory';
@@ -38,7 +40,7 @@ import {isStandalone} from './render3/definition';
import {assertStandaloneComponentType} from './render3/errors';
import {setLocaleId} from './render3/i18n/i18n_locale_id';
import {setJitOptions} from './render3/jit/jit_options';
-import {createEnvironmentInjector, createNgModuleRefWithProviders, EnvironmentNgModuleRefAdapter, NgModuleFactory as R3NgModuleFactory} from './render3/ng_module_ref';
+import {createNgModuleRefWithProviders, EnvironmentNgModuleRefAdapter, NgModuleFactory as R3NgModuleFactory} from './render3/ng_module_ref';
import {publishDefaultGlobalUtils as _publishDefaultGlobalUtils} from './render3/util/global_utils';
import {setThrowInvalidWriteToSignalError} from './signals';
import {TESTABILITY} from './testability/testability';
@@ -819,6 +821,7 @@ export class ApplicationRef {
/** @internal */
_views: InternalViewRef[] = [];
private readonly internalErrorHandler = inject(INTERNAL_APPLICATION_ERROR_HANDLER);
+ private readonly zoneIsStable = inject(ZONE_IS_STABLE_OBSERVABLE);
/**
* Indicates whether this instance was destroyed.
@@ -841,7 +844,13 @@ export class ApplicationRef {
/**
* Returns an Observable that indicates when the application is stable or unstable.
*/
- public readonly isStable = inject(ZONE_IS_STABLE_OBSERVABLE);
+ public readonly isStable: Observable =
+ inject(InitialRenderPendingTasks)
+ .hasPendingTasks.pipe(
+ mergeMap(hasPendingTasks => hasPendingTasks ? of(false) : this.zoneIsStable),
+ distinctUntilChanged(),
+ share(),
+ );
private readonly _injector = inject(EnvironmentInjector);
/**
diff --git a/packages/core/src/hydration/api.ts b/packages/core/src/hydration/api.ts
index 20f463fc7750..1ea53959fc69 100644
--- a/packages/core/src/hydration/api.ts
+++ b/packages/core/src/hydration/api.ts
@@ -14,7 +14,6 @@ import {Console} from '../console';
import {ENVIRONMENT_INITIALIZER, EnvironmentProviders, Injector, makeEnvironmentProviders} from '../di';
import {inject} from '../di/injector_compatibility';
import {formatRuntimeError, RuntimeErrorCode} from '../errors';
-import {InitialRenderPendingTasks} from '../initial_render_pending_tasks';
import {enableLocateOrCreateContainerRefImpl} from '../linker/view_container_ref';
import {enableLocateOrCreateElementNodeImpl} from '../render3/instructions/element';
import {enableLocateOrCreateElementContainerNodeImpl} from '../render3/instructions/element_container';
@@ -94,9 +93,7 @@ function printHydrationStats(injector: Injector) {
/**
* Returns a Promise that is resolved when an application becomes stable.
*/
-function whenStable(
- appRef: ApplicationRef, pendingTasks: InitialRenderPendingTasks,
- injector: Injector): Promise {
+function whenStable(appRef: ApplicationRef, injector: Injector): Promise {
const isStablePromise = appRef.isStable.pipe(first((isStable: boolean) => isStable)).toPromise();
if (typeof ngDevMode !== 'undefined' && ngDevMode) {
const timeoutTime = APPLICATION_IS_STABLE_TIMEOUT;
@@ -113,8 +110,7 @@ function whenStable(
isStablePromise.finally(() => clearTimeout(timeoutId));
}
- const pendingTasksPromise = pendingTasks.whenAllTasksComplete;
- return Promise.allSettled([isStablePromise, pendingTasksPromise]);
+ return isStablePromise.then(() => {});
}
/**
@@ -186,10 +182,9 @@ export function withDomHydration(): EnvironmentProviders {
useFactory: () => {
if (isBrowser() && inject(IS_HYDRATION_DOM_REUSE_ENABLED)) {
const appRef = inject(ApplicationRef);
- const pendingTasks = inject(InitialRenderPendingTasks);
const injector = inject(Injector);
return () => {
- whenStable(appRef, pendingTasks, injector).then(() => {
+ whenStable(appRef, injector).then(() => {
// Wait until an app becomes stable and cleanup all views that
// were not claimed during the application bootstrap process.
// The timing is similar to when we start the serialization process
diff --git a/packages/core/src/initial_render_pending_tasks.ts b/packages/core/src/initial_render_pending_tasks.ts
index 6a79aa19ac2a..65223aeca772 100644
--- a/packages/core/src/initial_render_pending_tasks.ts
+++ b/packages/core/src/initial_render_pending_tasks.ts
@@ -6,10 +6,10 @@
* found in the LICENSE file at https://angular.io/license
*/
+import {BehaviorSubject} from 'rxjs';
+
import {Injectable} from './di';
-import {inject} from './di/injector_compatibility';
import {OnDestroy} from './interface/lifecycle_hooks';
-import {NgZone} from './zone/ng_zone';
/**
* *Internal* service that keeps track of pending tasks happening in the system
@@ -23,59 +23,25 @@ import {NgZone} from './zone/ng_zone';
@Injectable({providedIn: 'root'})
export class InitialRenderPendingTasks implements OnDestroy {
private taskId = 0;
- private collection = new Set();
- private ngZone = inject(NgZone);
-
- private resolve!: VoidFunction;
- private promise!: Promise;
-
- get whenAllTasksComplete(): Promise {
- if (this.collection.size === 0) {
- this.complete();
- }
-
- return this.promise;
- }
-
- completed = false;
-
- constructor() {
- // Run outside of the Angular zone to avoid triggering
- // extra change detection cycles.
- this.ngZone.runOutsideAngular(() => {
- this.promise = new Promise((resolve) => {
- this.resolve = resolve;
- });
- });
- }
+ private pendingTasks = new Set();
+ hasPendingTasks = new BehaviorSubject(false);
add(): number {
- if (this.completed) {
- // Indicates that the task was added after
- // the task queue completion, so it's a noop.
- return -1;
- }
+ this.hasPendingTasks.next(true);
const taskId = this.taskId++;
- this.collection.add(taskId);
+ this.pendingTasks.add(taskId);
return taskId;
}
- remove(taskId: number) {
- if (this.completed) return;
-
- this.collection.delete(taskId);
- if (this.collection.size === 0) {
- this.complete();
+ remove(taskId: number): void {
+ this.pendingTasks.delete(taskId);
+ if (this.pendingTasks.size === 0) {
+ this.hasPendingTasks.next(false);
}
}
- ngOnDestroy() {
- this.complete();
- this.collection.clear();
- }
-
- private complete(): void {
- this.completed = true;
- this.resolve();
+ ngOnDestroy(): void {
+ this.pendingTasks.clear();
+ this.hasPendingTasks.next(false);
}
}
diff --git a/packages/core/src/signals/src/graph.ts b/packages/core/src/signals/src/graph.ts
index a822877e3fb9..1666fef6d8d2 100644
--- a/packages/core/src/signals/src/graph.ts
+++ b/packages/core/src/signals/src/graph.ts
@@ -10,7 +10,6 @@
// global `ngDevMode` type is defined.
import '../../util/ng_dev_mode';
-import {throwInvalidWriteToSignalError} from './errors';
import {newWeakRef, WeakRef} from './weak_ref';
/**
diff --git a/packages/core/test/acceptance/initial_render_pending_tasks_spec.ts b/packages/core/test/acceptance/initial_render_pending_tasks_spec.ts
index 5089b6a04a9c..32e8b2da71b6 100644
--- a/packages/core/test/acceptance/initial_render_pending_tasks_spec.ts
+++ b/packages/core/test/acceptance/initial_render_pending_tasks_spec.ts
@@ -7,58 +7,55 @@
*/
import {TestBed} from '@angular/core/testing';
+import {EMPTY, of} from 'rxjs';
+import {map, withLatestFrom} from 'rxjs/operators';
import {InitialRenderPendingTasks} from '../../src/initial_render_pending_tasks';
describe('InitialRenderPendingTasks', () => {
- it('should resolve a promise even if there are no tasks', async () => {
- const pendingTasks = TestBed.inject(InitialRenderPendingTasks);
- expect(pendingTasks.completed).toBe(false);
- await pendingTasks.whenAllTasksComplete;
- expect(pendingTasks.completed).toBe(true);
- });
-
it('should wait until all tasks are completed', async () => {
const pendingTasks = TestBed.inject(InitialRenderPendingTasks);
- expect(pendingTasks.completed).toBe(false);
-
const taskA = pendingTasks.add();
const taskB = pendingTasks.add();
const taskC = pendingTasks.add();
- expect(pendingTasks.completed).toBe(false);
pendingTasks.remove(taskA);
pendingTasks.remove(taskB);
pendingTasks.remove(taskC);
- await pendingTasks.whenAllTasksComplete;
- expect(pendingTasks.completed).toBe(true);
+ expect(await hasPendingTasks(pendingTasks)).toBeFalse();
});
it('should allow calls to remove the same task multiple times', async () => {
const pendingTasks = TestBed.inject(InitialRenderPendingTasks);
- expect(pendingTasks.completed).toBe(false);
+ expect(await hasPendingTasks(pendingTasks)).toBeFalse();
const taskA = pendingTasks.add();
-
- expect(pendingTasks.completed).toBe(false);
+ expect(await hasPendingTasks(pendingTasks)).toBeTrue();
pendingTasks.remove(taskA);
pendingTasks.remove(taskA);
pendingTasks.remove(taskA);
- await pendingTasks.whenAllTasksComplete;
- expect(pendingTasks.completed).toBe(true);
+ expect(await hasPendingTasks(pendingTasks)).toBeFalse();
});
it('should be tolerant to removal of non-existent ids', async () => {
const pendingTasks = TestBed.inject(InitialRenderPendingTasks);
- expect(pendingTasks.completed).toBe(false);
+ expect(await hasPendingTasks(pendingTasks)).toBeFalse();
pendingTasks.remove(Math.random());
pendingTasks.remove(Math.random());
pendingTasks.remove(Math.random());
- await pendingTasks.whenAllTasksComplete;
- expect(pendingTasks.completed).toBe(true);
+ expect(await hasPendingTasks(pendingTasks)).toBeFalse();
});
});
+
+function hasPendingTasks(pendingTasks: InitialRenderPendingTasks): Promise {
+ return of(EMPTY)
+ .pipe(
+ withLatestFrom(pendingTasks.hasPendingTasks),
+ map(([_, hasPendingTasks]) => hasPendingTasks),
+ )
+ .toPromise();
+}
diff --git a/packages/core/test/animation/animation_integration_spec.ts b/packages/core/test/animation/animation_integration_spec.ts
index 4f31a10c04f3..a55712c207a9 100644
--- a/packages/core/test/animation/animation_integration_spec.ts
+++ b/packages/core/test/animation/animation_integration_spec.ts
@@ -8,7 +8,7 @@
import {animate, animateChild, animation, AnimationEvent, AnimationMetadata, AnimationOptions, AUTO_STYLE, group, keyframes, query, sequence, state, style, transition, trigger, useAnimation, ɵPRE_STYLE as PRE_STYLE} from '@angular/animations';
import {AnimationDriver, ɵAnimationEngine, ɵNoopAnimationDriver as NoopAnimationDriver} from '@angular/animations/browser';
import {MockAnimationDriver, MockAnimationPlayer} from '@angular/animations/browser/testing';
-import {ChangeDetectorRef, Component, HostBinding, HostListener, Inject, RendererFactory2, ViewChild} from '@angular/core';
+import {ChangeDetectorRef, Component, HostBinding, HostListener, Inject, RendererFactory2, ViewChild, ViewContainerRef} from '@angular/core';
import {fakeAsync, flushMicrotasks, TestBed} from '@angular/core/testing';
import {ɵDomRendererFactory2} from '@angular/platform-browser';
import {ANIMATION_MODULE_TYPE, BrowserAnimationsModule, NoopAnimationsModule} from '@angular/platform-browser/animations';
@@ -909,6 +909,56 @@ describe('animation tests', function() {
]);
}));
+ it('should trigger a leave animation when the inner has ViewContainerRef injected',
+ fakeAsync(() => {
+ @Component({
+ selector: 'parent-cmp',
+ template: `
+
+ `
+ })
+ class ParentCmp {
+ public exp = true;
+ }
+
+ @Component({
+ selector: 'child-cmp',
+ template: '...',
+ animations: [trigger(
+ 'host',
+ [transition(':leave', [style({opacity: 1}), animate(1000, style({opacity: 0}))])])]
+ })
+ class ChildCmp {
+ @HostBinding('@host') public hostAnimation = true;
+ constructor(private vcr: ViewContainerRef) {}
+ }
+
+ TestBed.configureTestingModule({declarations: [ParentCmp, ChildCmp]});
+
+ const engine = TestBed.inject(ɵAnimationEngine);
+ const fixture = TestBed.createComponent(ParentCmp);
+ const cmp = fixture.componentInstance;
+ fixture.detectChanges();
+ engine.flush();
+ expect(getLog().length).toEqual(0);
+
+ cmp.exp = false;
+ fixture.detectChanges();
+ expect(fixture.debugElement.nativeElement.children.length).toBe(1);
+
+ engine.flush();
+ expect(getLog().length).toEqual(1);
+
+ const [player] = getLog();
+ expect(player.keyframes).toEqual([
+ new Map([['opacity', '1'], ['offset', 0]]),
+ new Map([['opacity', '0'], ['offset', 1]]),
+ ]);
+
+ player.finish();
+ expect(fixture.debugElement.nativeElement.children.length).toBe(0);
+ }));
+
it('should trigger a leave animation when the inner components host binding updates',
fakeAsync(() => {
@Component({
diff --git a/packages/core/test/animation/animations_with_web_animations_integration_spec.ts b/packages/core/test/animation/animations_with_web_animations_integration_spec.ts
index d39dc7beb473..f5265d959476 100644
--- a/packages/core/test/animation/animations_with_web_animations_integration_spec.ts
+++ b/packages/core/test/animation/animations_with_web_animations_integration_spec.ts
@@ -12,7 +12,6 @@ import {AnimationGroupPlayer} from '@angular/animations/src/players/animation_gr
import {Component, ViewChild} from '@angular/core';
import {TestBed} from '@angular/core/testing';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
-import {browserDetection} from '@angular/platform-browser/testing/src/browser_util';
(function() {
// these tests are only meant to be run within the DOM (for now)
@@ -70,20 +69,18 @@ describe('animation integration tests using web animations', function() {
webPlayer.finish();
- if (!browserDetection.isOldChrome) {
- cmp.exp = false;
- fixture.detectChanges();
- engine.flush();
+ cmp.exp = false;
+ fixture.detectChanges();
+ engine.flush();
- expect(engine.players.length).toEqual(1);
- webPlayer =
- (engine.players[0] as TransitionAnimationPlayer).getRealPlayer() as ɵWebAnimationsPlayer;
+ expect(engine.players.length).toEqual(1);
+ webPlayer =
+ (engine.players[0] as TransitionAnimationPlayer).getRealPlayer() as ɵWebAnimationsPlayer;
- expect(webPlayer.keyframes).toEqual([
- new Map([['height', '100px'], ['offset', 0]]),
- new Map([['height', '0px'], ['offset', 1]])
- ]);
- }
+ expect(webPlayer.keyframes).toEqual([
+ new Map([['height', '100px'], ['offset', 0]]),
+ new Map([['height', '0px'], ['offset', 1]])
+ ]);
});
it('should compute (!) animation styles for a container that is being inserted', () => {
diff --git a/packages/core/test/bundling/animations-standalone/bundle.golden_symbols.json b/packages/core/test/bundling/animations-standalone/bundle.golden_symbols.json
index d24ebe70485e..806146da2920 100644
--- a/packages/core/test/bundling/animations-standalone/bundle.golden_symbols.json
+++ b/packages/core/test/bundling/animations-standalone/bundle.golden_symbols.json
@@ -80,6 +80,9 @@
{
"name": "BaseAnimationRenderer"
},
+ {
+ "name": "BehaviorSubject"
+ },
{
"name": "BrowserAnimationBuilder"
},
@@ -155,6 +158,9 @@
{
"name": "DefaultDomRenderer2"
},
+ {
+ "name": "DistinctUntilChangedSubscriber"
+ },
{
"name": "DomAdapter"
},
@@ -242,6 +248,9 @@
{
"name": "INTERNAL_BROWSER_PLATFORM_PROVIDERS"
},
+ {
+ "name": "InitialRenderPendingTasks"
+ },
{
"name": "InjectFlags"
},
@@ -842,6 +851,9 @@
{
"name": "forwardRef"
},
+ {
+ "name": "fromArray"
+ },
{
"name": "generateInitialInputs"
},
@@ -1109,6 +1121,9 @@
{
"name": "isPromise2"
},
+ {
+ "name": "isScheduler"
+ },
{
"name": "isStableFactory"
},
@@ -1373,6 +1388,9 @@
{
"name": "setupStaticAttributes"
},
+ {
+ "name": "share"
+ },
{
"name": "shareSubjectFactory"
},
diff --git a/packages/core/test/bundling/animations/bundle.golden_symbols.json b/packages/core/test/bundling/animations/bundle.golden_symbols.json
index e65b27883323..11f9c76ae7d5 100644
--- a/packages/core/test/bundling/animations/bundle.golden_symbols.json
+++ b/packages/core/test/bundling/animations/bundle.golden_symbols.json
@@ -95,6 +95,9 @@
{
"name": "BaseAnimationRenderer"
},
+ {
+ "name": "BehaviorSubject"
+ },
{
"name": "BrowserAnimationBuilder"
},
@@ -179,6 +182,9 @@
{
"name": "DefaultDomRenderer2"
},
+ {
+ "name": "DistinctUntilChangedSubscriber"
+ },
{
"name": "DomAdapter"
},
@@ -263,6 +269,9 @@
{
"name": "INTERNAL_APPLICATION_ERROR_HANDLER"
},
+ {
+ "name": "InitialRenderPendingTasks"
+ },
{
"name": "InjectFlags"
},
@@ -905,6 +914,9 @@
{
"name": "forwardRef"
},
+ {
+ "name": "fromArray"
+ },
{
"name": "generateInitialInputs"
},
@@ -1175,6 +1187,9 @@
{
"name": "isPromise2"
},
+ {
+ "name": "isScheduler"
+ },
{
"name": "isStableFactory"
},
@@ -1448,6 +1463,9 @@
{
"name": "setupStaticAttributes"
},
+ {
+ "name": "share"
+ },
{
"name": "shareSubjectFactory"
},
diff --git a/packages/core/test/bundling/cyclic_import/bundle.golden_symbols.json b/packages/core/test/bundling/cyclic_import/bundle.golden_symbols.json
index 02c11b47a4cf..3fe3ae56328e 100644
--- a/packages/core/test/bundling/cyclic_import/bundle.golden_symbols.json
+++ b/packages/core/test/bundling/cyclic_import/bundle.golden_symbols.json
@@ -35,6 +35,9 @@
{
"name": "BROWSER_MODULE_PROVIDERS_MARKER"
},
+ {
+ "name": "BehaviorSubject"
+ },
{
"name": "BrowserDomAdapter"
},
@@ -101,6 +104,9 @@
{
"name": "DepComponent"
},
+ {
+ "name": "DistinctUntilChangedSubscriber"
+ },
{
"name": "DomAdapter"
},
@@ -167,6 +173,9 @@
{
"name": "INTERNAL_APPLICATION_ERROR_HANDLER"
},
+ {
+ "name": "InitialRenderPendingTasks"
+ },
{
"name": "InjectFlags"
},
@@ -680,6 +689,9 @@
{
"name": "forwardRef"
},
+ {
+ "name": "fromArray"
+ },
{
"name": "generateInitialInputs"
},
@@ -929,6 +941,9 @@
{
"name": "isPromise2"
},
+ {
+ "name": "isScheduler"
+ },
{
"name": "isStableFactory"
},
@@ -1142,6 +1157,9 @@
{
"name": "setupStaticAttributes"
},
+ {
+ "name": "share"
+ },
{
"name": "shareSubjectFactory"
},
diff --git a/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json b/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json
index f15c622b3873..2230f1ecee78 100644
--- a/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json
+++ b/packages/core/test/bundling/forms_reactive/bundle.golden_symbols.json
@@ -50,6 +50,9 @@
{
"name": "BaseControlValueAccessor"
},
+ {
+ "name": "BehaviorSubject"
+ },
{
"name": "BrowserDomAdapter"
},
@@ -146,6 +149,9 @@
{
"name": "DefaultValueAccessor"
},
+ {
+ "name": "DistinctUntilChangedSubscriber"
+ },
{
"name": "DomAdapter"
},
@@ -245,6 +251,9 @@
{
"name": "INTERNAL_APPLICATION_ERROR_HANDLER"
},
+ {
+ "name": "InitialRenderPendingTasks"
+ },
{
"name": "InjectFlags"
},
@@ -941,6 +950,9 @@
{
"name": "from"
},
+ {
+ "name": "fromArray"
+ },
{
"name": "generateInitialInputs"
},
@@ -1286,6 +1298,9 @@
{
"name": "isPromise2"
},
+ {
+ "name": "isScheduler"
+ },
{
"name": "isStableFactory"
},
@@ -1364,9 +1379,6 @@
{
"name": "maybeWrapInNotSelector"
},
- {
- "name": "mergeAll"
- },
{
"name": "mergeErrors"
},
@@ -1610,6 +1622,9 @@
{
"name": "setupStaticAttributes"
},
+ {
+ "name": "share"
+ },
{
"name": "shareSubjectFactory"
},
diff --git a/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json b/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json
index 76bb3130a0f1..749d251eb7f8 100644
--- a/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json
+++ b/packages/core/test/bundling/forms_template_driven/bundle.golden_symbols.json
@@ -53,6 +53,9 @@
{
"name": "BaseControlValueAccessor"
},
+ {
+ "name": "BehaviorSubject"
+ },
{
"name": "BrowserDomAdapter"
},
@@ -152,6 +155,9 @@
{
"name": "DefaultValueAccessor"
},
+ {
+ "name": "DistinctUntilChangedSubscriber"
+ },
{
"name": "DomAdapter"
},
@@ -230,6 +236,9 @@
{
"name": "INTERNAL_APPLICATION_ERROR_HANDLER"
},
+ {
+ "name": "InitialRenderPendingTasks"
+ },
{
"name": "InjectFlags"
},
@@ -908,6 +917,9 @@
{
"name": "from"
},
+ {
+ "name": "fromArray"
+ },
{
"name": "generateInitialInputs"
},
@@ -1244,6 +1256,9 @@
{
"name": "isPromise2"
},
+ {
+ "name": "isScheduler"
+ },
{
"name": "isStableFactory"
},
@@ -1322,9 +1337,6 @@
{
"name": "maybeWrapInNotSelector"
},
- {
- "name": "mergeAll"
- },
{
"name": "mergeErrors"
},
@@ -1586,6 +1598,9 @@
{
"name": "setupStaticAttributes"
},
+ {
+ "name": "share"
+ },
{
"name": "shareSubjectFactory"
},
diff --git a/packages/core/test/bundling/hello_world/bundle.golden_symbols.json b/packages/core/test/bundling/hello_world/bundle.golden_symbols.json
index 7a2dd76be615..ed1d8f45fb93 100644
--- a/packages/core/test/bundling/hello_world/bundle.golden_symbols.json
+++ b/packages/core/test/bundling/hello_world/bundle.golden_symbols.json
@@ -23,6 +23,9 @@
{
"name": "BLOOM_MASK"
},
+ {
+ "name": "BehaviorSubject"
+ },
{
"name": "BrowserDomAdapter"
},
@@ -59,6 +62,9 @@
{
"name": "DOCUMENT2"
},
+ {
+ "name": "DistinctUntilChangedSubscriber"
+ },
{
"name": "DomAdapter"
},
@@ -110,6 +116,9 @@
{
"name": "INTERNAL_APPLICATION_ERROR_HANDLER"
},
+ {
+ "name": "InitialRenderPendingTasks"
+ },
{
"name": "InjectFlags"
},
@@ -527,6 +536,9 @@
{
"name": "forwardRef"
},
+ {
+ "name": "fromArray"
+ },
{
"name": "generateInitialInputs"
},
@@ -722,6 +734,9 @@
{
"name": "isPromise2"
},
+ {
+ "name": "isScheduler"
+ },
{
"name": "isStableFactory"
},
@@ -893,6 +908,9 @@
{
"name": "setUpAttributes"
},
+ {
+ "name": "share"
+ },
{
"name": "shareSubjectFactory"
},
diff --git a/packages/core/test/bundling/hydration/bundle.golden_symbols.json b/packages/core/test/bundling/hydration/bundle.golden_symbols.json
index 34613494ed8d..6cede02c989b 100644
--- a/packages/core/test/bundling/hydration/bundle.golden_symbols.json
+++ b/packages/core/test/bundling/hydration/bundle.golden_symbols.json
@@ -32,6 +32,9 @@
{
"name": "BROWSER_MODULE_PROVIDERS"
},
+ {
+ "name": "BehaviorSubject"
+ },
{
"name": "BrowserDomAdapter"
},
@@ -107,6 +110,9 @@
{
"name": "DefaultIfEmptySubscriber"
},
+ {
+ "name": "DistinctUntilChangedSubscriber"
+ },
{
"name": "DomAdapter"
},
@@ -1097,6 +1103,9 @@
{
"name": "observable"
},
+ {
+ "name": "of"
+ },
{
"name": "onEnter"
},
@@ -1205,6 +1214,9 @@
{
"name": "setUpAttributes"
},
+ {
+ "name": "share"
+ },
{
"name": "shareSubjectFactory"
},
diff --git a/packages/core/test/bundling/router/bundle.golden_symbols.json b/packages/core/test/bundling/router/bundle.golden_symbols.json
index ef56eddaaa85..a86fefdb2c64 100644
--- a/packages/core/test/bundling/router/bundle.golden_symbols.json
+++ b/packages/core/test/bundling/router/bundle.golden_symbols.json
@@ -161,6 +161,9 @@
{
"name": "DefaultUrlSerializer"
},
+ {
+ "name": "DistinctUntilChangedSubscriber"
+ },
{
"name": "DoOperator"
},
@@ -1892,6 +1895,9 @@
{
"name": "shallowEqual"
},
+ {
+ "name": "share"
+ },
{
"name": "shareSubjectFactory"
},
diff --git a/packages/core/test/bundling/standalone_bootstrap/bundle.golden_symbols.json b/packages/core/test/bundling/standalone_bootstrap/bundle.golden_symbols.json
index c974b4699161..03dd4c908697 100644
--- a/packages/core/test/bundling/standalone_bootstrap/bundle.golden_symbols.json
+++ b/packages/core/test/bundling/standalone_bootstrap/bundle.golden_symbols.json
@@ -26,6 +26,9 @@
{
"name": "BROWSER_MODULE_PROVIDERS"
},
+ {
+ "name": "BehaviorSubject"
+ },
{
"name": "BrowserDomAdapter"
},
@@ -83,6 +86,9 @@
{
"name": "DefaultDomRenderer2"
},
+ {
+ "name": "DistinctUntilChangedSubscriber"
+ },
{
"name": "DomAdapter"
},
@@ -152,6 +158,9 @@
{
"name": "INTERNAL_BROWSER_PLATFORM_PROVIDERS"
},
+ {
+ "name": "InitialRenderPendingTasks"
+ },
{
"name": "InjectFlags"
},
@@ -605,6 +614,9 @@
{
"name": "forwardRef"
},
+ {
+ "name": "fromArray"
+ },
{
"name": "generateInitialInputs"
},
@@ -812,6 +824,9 @@
{
"name": "isPromise2"
},
+ {
+ "name": "isScheduler"
+ },
{
"name": "isStableFactory"
},
@@ -992,6 +1007,9 @@
{
"name": "setUpAttributes"
},
+ {
+ "name": "share"
+ },
{
"name": "shareSubjectFactory"
},
diff --git a/packages/core/test/bundling/todo/bundle.golden_symbols.json b/packages/core/test/bundling/todo/bundle.golden_symbols.json
index 98fb23127f37..e290dc334587 100644
--- a/packages/core/test/bundling/todo/bundle.golden_symbols.json
+++ b/packages/core/test/bundling/todo/bundle.golden_symbols.json
@@ -35,6 +35,9 @@
{
"name": "BROWSER_MODULE_PROVIDERS_MARKER"
},
+ {
+ "name": "BehaviorSubject"
+ },
{
"name": "BrowserDomAdapter"
},
@@ -104,6 +107,9 @@
{
"name": "DefaultIterableDifferFactory"
},
+ {
+ "name": "DistinctUntilChangedSubscriber"
+ },
{
"name": "DomAdapter"
},
@@ -170,6 +176,9 @@
{
"name": "INTERNAL_APPLICATION_ERROR_HANDLER"
},
+ {
+ "name": "InitialRenderPendingTasks"
+ },
{
"name": "InjectFlags"
},
@@ -803,6 +812,9 @@
{
"name": "forwardRef"
},
+ {
+ "name": "fromArray"
+ },
{
"name": "generateInitialInputs"
},
@@ -1106,6 +1118,9 @@
{
"name": "isPromise2"
},
+ {
+ "name": "isScheduler"
+ },
{
"name": "isStableFactory"
},
@@ -1367,6 +1382,9 @@
{
"name": "setupStaticAttributes"
},
+ {
+ "name": "share"
+ },
{
"name": "shareSubjectFactory"
},
diff --git a/packages/core/test/linker/projection_integration_spec.ts b/packages/core/test/linker/projection_integration_spec.ts
index c6b2d5d7d170..fcb64b1d21d2 100644
--- a/packages/core/test/linker/projection_integration_spec.ts
+++ b/packages/core/test/linker/projection_integration_spec.ts
@@ -10,7 +10,6 @@ import {ɵgetDOM as getDOM} from '@angular/common';
import {Component, ComponentRef, createComponent, Directive, ElementRef, EnvironmentInjector, Injector, Input, NgModule, NO_ERRORS_SCHEMA, OnInit, reflectComponentType, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation} from '@angular/core';
import {ComponentFixture, TestBed} from '@angular/core/testing';
import {By} from '@angular/platform-browser/src/dom/debug/by';
-import {browserDetection} from '@angular/platform-browser/testing/src/browser_util';
import {expect} from '@angular/platform-browser/testing/src/matchers';
describe('projection', () => {
@@ -442,7 +441,7 @@ describe('projection', () => {
expect(main.nativeElement).toHaveText('TREE(0:TREE2(1:TREE(2:)))');
});
- if (browserDetection.supportsShadowDom) {
+ if (!isNode) {
it('should support shadow dom content projection and isolate styles per component', () => {
TestBed.configureTestingModule({declarations: [SimpleShadowDom1, SimpleShadowDom2]});
TestBed.overrideComponent(MainComp, {
diff --git a/packages/core/test/sanitization/html_sanitizer_spec.ts b/packages/core/test/sanitization/html_sanitizer_spec.ts
index d66953f9a3be..0e900ea20af7 100644
--- a/packages/core/test/sanitization/html_sanitizer_spec.ts
+++ b/packages/core/test/sanitization/html_sanitizer_spec.ts
@@ -6,8 +6,6 @@
* found in the LICENSE file at https://angular.io/license
*/
-import {browserDetection} from '@angular/platform-browser/testing/src/browser_util';
-
import {_sanitizeHtml} from '../../src/sanitization/html_sanitizer';
import {isDOMParserAvailable} from '../../src/sanitization/inert_body';
@@ -251,13 +249,11 @@ function sanitizeHtml(defaultDoc: any, unsafeHtmlInput: string): string {
'
');
});
- if (browserDetection.isWebkit) {
- it('should prevent mXSS attacks', function() {
- // In Chrome Canary 62, the ideographic space character is kept as a stringified HTML entity
- expect(sanitizeHtml(defaultDoc, 'CLICKME '))
- .toMatch(/CLICKME<\/a>/);
- });
- }
+ it('should prevent mXSS attacks', function() {
+ // In Chrome Canary 62, the ideographic space character is kept as a stringified HTML entity
+ expect(sanitizeHtml(defaultDoc, ' CLICKME '))
+ .toMatch(/CLICKME<\/a>/);
+ });
if (isDOMParserAvailable()) {
it('should work even if DOMParser returns a null body', () => {
diff --git a/packages/core/test/zone/ng_zone_spec.ts b/packages/core/test/zone/ng_zone_spec.ts
index da018bbe86e2..6105190ae286 100644
--- a/packages/core/test/zone/ng_zone_spec.ts
+++ b/packages/core/test/zone/ng_zone_spec.ts
@@ -9,19 +9,17 @@
import {EventEmitter, NgZone} from '@angular/core';
import {fakeAsync, flushMicrotasks, inject, waitForAsync} from '@angular/core/testing';
import {Log} from '@angular/core/testing/src/testing_internal';
-import {browserDetection} from '@angular/platform-browser/testing/src/browser_util';
import {global} from '../../src/util/global';
import {scheduleMicroTask} from '../../src/util/microtask';
import {getNativeRequestAnimationFrame} from '../../src/util/raf';
import {NoopNgZone} from '../../src/zone/ng_zone';
-const needsLongerTimers = browserDetection.isSlow || browserDetection.isEdge;
const resultTimer = 1000;
// Schedules a macrotask (using a timer)
function macroTask(fn: (...args: any[]) => void, timer = 1): void {
// adds longer timers for passing tests in IE and Edge
- setTimeout(fn, needsLongerTimers ? timer : 1);
+ setTimeout(fn, 1);
}
let _log: Log;
diff --git a/packages/platform-browser/animations/src/animation_renderer.ts b/packages/platform-browser/animations/src/animation_renderer.ts
index 8f4166f7bcbc..0a34bdd219cd 100644
--- a/packages/platform-browser/animations/src/animation_renderer.ts
+++ b/packages/platform-browser/animations/src/animation_renderer.ts
@@ -180,7 +180,7 @@ export class BaseAnimationRenderer implements Renderer2 {
}
removeChild(parent: any, oldChild: any, isHostElement: boolean): void {
- this.engine.onRemove(this.namespaceId, oldChild, this.delegate, isHostElement);
+ this.engine.onRemove(this.namespaceId, oldChild, this.delegate);
}
selectRootElement(selectorOrNode: any, preserveContent?: boolean) {
diff --git a/packages/platform-browser/test/browser_util_spec.ts b/packages/platform-browser/test/browser_util_spec.ts
deleted file mode 100644
index 26dde092bd72..000000000000
--- a/packages/platform-browser/test/browser_util_spec.ts
+++ /dev/null
@@ -1,175 +0,0 @@
-/**
- * @license
- * Copyright Google LLC All Rights Reserved.
- *
- * 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 {BrowserDetection} from '../testing/src/browser_util';
-
-{
- describe('BrowserDetection', () => {
- const browsers = [
- {
- name: 'Chrome',
- ua: 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36',
- isFirefox: false,
- isAndroid: false,
- isEdge: false,
- isWebkit: true,
- isIOS7: false,
- isSlow: false,
- isChromeDesktop: true,
- isOldChrome: false
- },
- {
- name: 'Chrome mobile',
- ua: 'Mozilla/5.0 (Linux; Android 5.1.1; D5803 Build/23.4.A.0.546) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36',
- isFirefox: false,
- isAndroid: false,
- isEdge: false,
- isWebkit: true,
- isIOS7: false,
- isSlow: false,
- isChromeDesktop: false,
- isOldChrome: false
- },
- {
- name: 'Firefox',
- ua: 'Mozilla/5.0 (X11; Linux i686; rv:40.0) Gecko/20100101 Firefox/40.0',
- isFirefox: true,
- isAndroid: false,
- isEdge: false,
- isWebkit: false,
- isIOS7: false,
- isSlow: false,
- isChromeDesktop: false,
- isOldChrome: false
- },
- {
- name: 'Edge',
- ua: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10136',
- isFirefox: false,
- isAndroid: false,
- isEdge: true,
- isWebkit: false,
- isIOS7: false,
- isSlow: false,
- isChromeDesktop: false,
- isOldChrome: false
- },
- {
- name: 'Android4.1',
- ua: 'Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; Android SDK built for x86 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
- isFirefox: false,
- isAndroid: true,
- isEdge: false,
- isWebkit: true,
- isIOS7: false,
- isSlow: true,
- isChromeDesktop: false,
- isOldChrome: false
- },
- {
- name: 'Android4.2',
- ua: 'Mozilla/5.0 (Linux; U; Android 4.2; en-us; Android SDK built for x86 Build/JOP40C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
- isFirefox: false,
- isAndroid: true,
- isEdge: false,
- isWebkit: true,
- isIOS7: false,
- isSlow: true,
- isChromeDesktop: false,
- isOldChrome: false
- },
- {
- name: 'Android4.3',
- ua: 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; Android SDK built for x86 Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
- isFirefox: false,
- isAndroid: true,
- isEdge: false,
- isWebkit: true,
- isIOS7: false,
- isSlow: true,
- isChromeDesktop: false,
- isOldChrome: false
- },
- {
- name: 'Android4.4',
- ua: 'Mozilla/5.0 (Linux; Android 4.4.2; Android SDK built for x86 Build/KK) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36',
- isFirefox: false,
- isAndroid: false,
- isEdge: false,
- isWebkit: true,
- isIOS7: false,
- isSlow: false,
- isChromeDesktop: false,
- isOldChrome: true
- },
- {
- name: 'Safari7',
- ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/7.1.7 Safari/537.85.16',
- isFirefox: false,
- isAndroid: false,
- isEdge: false,
- isWebkit: true,
- isIOS7: false,
- isSlow: false,
- isChromeDesktop: false,
- isOldChrome: false
- },
- {
- name: 'Safari8',
- ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/600.7.12 (KHTML, like Gecko) Version/8.0.7 Safari/600.7.12',
- isFirefox: false,
- isAndroid: false,
- isEdge: false,
- isWebkit: true,
- isIOS7: false,
- isSlow: false,
- isChromeDesktop: false,
- isOldChrome: false
- },
- {
- name: 'iOS7',
- ua: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D167 Safari/9537.53',
- isFirefox: false,
- isAndroid: false,
- isEdge: false,
- isWebkit: true,
- isIOS7: true,
- isSlow: true,
- isChromeDesktop: false,
- isOldChrome: false
- },
- {
- name: 'iOS8',
- ua: 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12H141 Safari/600.1.4',
- isFirefox: false,
- isAndroid: false,
- isEdge: false,
- isWebkit: true,
- isIOS7: false,
- isSlow: false,
- isChromeDesktop: false,
- isOldChrome: false
- }
- ];
-
- browsers.forEach((browser: {[key: string]: any}) => {
- it(`should detect ${browser['name']}`, () => {
- const bd = new BrowserDetection(browser['ua']);
- expect(bd.isFirefox).toBe(browser['isFirefox']);
- expect(bd.isAndroid).toBe(browser['isAndroid']);
- expect(bd.isEdge).toBe(browser['isEdge']);
- expect(bd.isWebkit).toBe(browser['isWebkit']);
- expect(bd.isIOS7).toBe(browser['isIOS7']);
- expect(bd.isSlow).toBe(browser['isSlow']);
- expect(bd.isChromeDesktop).toBe(browser['isChromeDesktop']);
- expect(bd.isOldChrome).toBe(browser['isOldChrome']);
- });
- });
- });
-}
diff --git a/packages/platform-browser/test/dom/shadow_dom_spec.ts b/packages/platform-browser/test/dom/shadow_dom_spec.ts
index 771806ffee88..36063110bc71 100644
--- a/packages/platform-browser/test/dom/shadow_dom_spec.ts
+++ b/packages/platform-browser/test/dom/shadow_dom_spec.ts
@@ -9,76 +9,79 @@
import {Component, NgModule, ViewEncapsulation} from '@angular/core';
import {TestBed} from '@angular/core/testing';
import {BrowserModule} from '@angular/platform-browser';
-import {browserDetection} from '@angular/platform-browser/testing/src/browser_util';
import {expect} from '@angular/platform-browser/testing/src/matchers';
-if (browserDetection.supportsShadowDom) {
- describe('ShadowDOM Support', () => {
- beforeEach(() => {
- TestBed.configureTestingModule({imports: [TestModule]});
- });
-
- it('should attach and use a shadowRoot when ViewEncapsulation.ShadowDom is set', () => {
- const compEl = TestBed.createComponent(ShadowComponent).nativeElement;
- expect(compEl.shadowRoot!.textContent).toEqual('Hello World');
- });
-
- it('should use the shadow root to encapsulate styles', () => {
- const compEl = TestBed.createComponent(StyledShadowComponent).nativeElement;
- // Firefox and Chrome return different computed styles. Chrome supports CSS property
- // shorthands in the computed style object while Firefox expects explicit CSS properties.
- // e.g. we can't use the "border" CSS property for this test as "border" is a shorthand
- // property and therefore would not work within Firefox.
- expect(window.getComputedStyle(compEl).backgroundColor).toEqual('rgb(0, 0, 0)');
- const redDiv = compEl.shadowRoot.querySelector('div.red');
- expect(window.getComputedStyle(redDiv).backgroundColor).toEqual('rgb(255, 0, 0)');
- });
-
- it('should allow the usage of elements', () => {
- const el = TestBed.createComponent(ShadowSlotComponent).nativeElement;
- const projectedContent = document.createTextNode('Hello Slot!');
- el.appendChild(projectedContent);
- const slot = el.shadowRoot!.querySelector('slot');
-
- expect(slot!.assignedNodes().length).toBe(1);
- expect(slot!.assignedNodes()[0].textContent).toBe('Hello Slot!');
- });
-
- it('should allow the usage of named elements', () => {
- const el = TestBed.createComponent(ShadowSlotsComponent).nativeElement;
-
- const headerContent = document.createElement('h1');
- headerContent.setAttribute('slot', 'header');
- headerContent.textContent = 'Header Text!';
-
- const articleContent = document.createElement('span');
- articleContent.setAttribute('slot', 'article');
- articleContent.textContent = 'Article Text!';
-
- const articleSubcontent = document.createElement('span');
- articleSubcontent.setAttribute('slot', 'article');
- articleSubcontent.textContent = 'Article Subtext!';
-
- el.appendChild(headerContent);
- el.appendChild(articleContent);
- el.appendChild(articleSubcontent);
-
- const headerSlot = el.shadowRoot!.querySelector('slot[name=header]') as HTMLSlotElement;
- const articleSlot = el.shadowRoot!.querySelector('slot[name=article]') as HTMLSlotElement;
-
- expect(headerSlot!.assignedNodes().length).toBe(1);
- expect(headerSlot!.assignedNodes()[0].textContent).toBe('Header Text!');
- expect(headerContent.assignedSlot).toBe(headerSlot);
-
- expect(articleSlot!.assignedNodes().length).toBe(2);
- expect(articleSlot!.assignedNodes()[0].textContent).toBe('Article Text!');
- expect(articleSlot!.assignedNodes()[1].textContent).toBe('Article Subtext!');
- expect(articleContent.assignedSlot).toBe(articleSlot);
- expect(articleSubcontent.assignedSlot).toBe(articleSlot);
- });
+describe('ShadowDOM Support', () => {
+ if (isNode) {
+ // Jasmine will throw if there are no tests.
+ it('should pass', () => {});
+ return;
+ }
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({imports: [TestModule]});
});
-}
+
+ it('should attach and use a shadowRoot when ViewEncapsulation.ShadowDom is set', () => {
+ const compEl = TestBed.createComponent(ShadowComponent).nativeElement;
+ expect(compEl.shadowRoot!.textContent).toEqual('Hello World');
+ });
+
+ it('should use the shadow root to encapsulate styles', () => {
+ const compEl = TestBed.createComponent(StyledShadowComponent).nativeElement;
+ // Firefox and Chrome return different computed styles. Chrome supports CSS property
+ // shorthands in the computed style object while Firefox expects explicit CSS properties.
+ // e.g. we can't use the "border" CSS property for this test as "border" is a shorthand
+ // property and therefore would not work within Firefox.
+ expect(window.getComputedStyle(compEl).backgroundColor).toEqual('rgb(0, 0, 0)');
+ const redDiv = compEl.shadowRoot.querySelector('div.red');
+ expect(window.getComputedStyle(redDiv).backgroundColor).toEqual('rgb(255, 0, 0)');
+ });
+
+ it('should allow the usage of elements', () => {
+ const el = TestBed.createComponent(ShadowSlotComponent).nativeElement;
+ const projectedContent = document.createTextNode('Hello Slot!');
+ el.appendChild(projectedContent);
+ const slot = el.shadowRoot!.querySelector('slot');
+
+ expect(slot!.assignedNodes().length).toBe(1);
+ expect(slot!.assignedNodes()[0].textContent).toBe('Hello Slot!');
+ });
+
+ it('should allow the usage of named elements', () => {
+ const el = TestBed.createComponent(ShadowSlotsComponent).nativeElement;
+
+ const headerContent = document.createElement('h1');
+ headerContent.setAttribute('slot', 'header');
+ headerContent.textContent = 'Header Text!';
+
+ const articleContent = document.createElement('span');
+ articleContent.setAttribute('slot', 'article');
+ articleContent.textContent = 'Article Text!';
+
+ const articleSubcontent = document.createElement('span');
+ articleSubcontent.setAttribute('slot', 'article');
+ articleSubcontent.textContent = 'Article Subtext!';
+
+ el.appendChild(headerContent);
+ el.appendChild(articleContent);
+ el.appendChild(articleSubcontent);
+
+ const headerSlot = el.shadowRoot!.querySelector('slot[name=header]') as HTMLSlotElement;
+ const articleSlot = el.shadowRoot!.querySelector('slot[name=article]') as HTMLSlotElement;
+
+ expect(headerSlot!.assignedNodes().length).toBe(1);
+ expect(headerSlot!.assignedNodes()[0].textContent).toBe('Header Text!');
+ expect(headerContent.assignedSlot).toBe(headerSlot);
+
+ expect(articleSlot!.assignedNodes().length).toBe(2);
+ expect(articleSlot!.assignedNodes()[0].textContent).toBe('Article Text!');
+ expect(articleSlot!.assignedNodes()[1].textContent).toBe('Article Subtext!');
+ expect(articleContent.assignedSlot).toBe(articleSlot);
+ expect(articleSubcontent.assignedSlot).toBe(articleSlot);
+ });
+});
@Component(
{selector: 'shadow-comp', template: 'Hello World', encapsulation: ViewEncapsulation.ShadowDom})
diff --git a/packages/platform-browser/testing/src/browser.ts b/packages/platform-browser/testing/src/browser.ts
index 6f6fc68f7703..f086081aa9ba 100644
--- a/packages/platform-browser/testing/src/browser.ts
+++ b/packages/platform-browser/testing/src/browser.ts
@@ -10,11 +10,8 @@ import {MockPlatformLocation} from '@angular/common/testing';
import {APP_ID, createPlatformFactory, NgModule, PLATFORM_INITIALIZER, platformCore, provideZoneChangeDetection, StaticProvider} from '@angular/core';
import {BrowserModule, ɵBrowserDomAdapter as BrowserDomAdapter} from '@angular/platform-browser';
-import {BrowserDetection, createNgZone} from './browser_util';
-
function initBrowserTests() {
BrowserDomAdapter.makeCurrent();
- BrowserDetection.setup();
}
const _TEST_BROWSER_PLATFORM_PROVIDERS: StaticProvider[] =
diff --git a/packages/platform-browser/testing/src/browser_util.ts b/packages/platform-browser/testing/src/browser_util.ts
index f17aa246479d..02f3f385f511 100644
--- a/packages/platform-browser/testing/src/browser_util.ts
+++ b/packages/platform-browser/testing/src/browser_util.ts
@@ -7,73 +7,7 @@
*/
import {ɵgetDOM as getDOM} from '@angular/common';
-import {NgZone, ɵglobal as global} from '@angular/core';
-
-export class BrowserDetection {
- private _overrideUa: string|null;
- private get _ua(): string {
- if (typeof this._overrideUa === 'string') {
- return this._overrideUa;
- }
-
- return getDOM() ? getDOM().getUserAgent() : '';
- }
-
- static setup() {
- return new BrowserDetection(null);
- }
-
- constructor(ua: string|null) {
- this._overrideUa = ua;
- }
-
- get isFirefox(): boolean {
- return this._ua.indexOf('Firefox') > -1;
- }
-
- get isAndroid(): boolean {
- return this._ua.indexOf('Mozilla/5.0') > -1 && this._ua.indexOf('Android') > -1 &&
- this._ua.indexOf('AppleWebKit') > -1 && this._ua.indexOf('Chrome') == -1 &&
- this._ua.indexOf('IEMobile') == -1;
- }
-
- get isEdge(): boolean {
- return this._ua.indexOf('Edge') > -1;
- }
-
- get isWebkit(): boolean {
- return this._ua.indexOf('AppleWebKit') > -1 && this._ua.indexOf('Edge') == -1 &&
- this._ua.indexOf('IEMobile') == -1;
- }
-
- get isIOS7(): boolean {
- return (this._ua.indexOf('iPhone OS 7') > -1 || this._ua.indexOf('iPad OS 7') > -1) &&
- this._ua.indexOf('IEMobile') == -1;
- }
-
- get isSlow(): boolean {
- return this.isAndroid || this.isIOS7;
- }
-
- get isChromeDesktop(): boolean {
- return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Mobile Safari') == -1 &&
- this._ua.indexOf('Edge') == -1;
- }
-
- // "Old Chrome" means Chrome 3X, where there are some discrepancies in the Intl API.
- // Android 4.4 and 5.X have such browsers by default (respectively 30 and 39).
- get isOldChrome(): boolean {
- return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Chrome/3') > -1 &&
- this._ua.indexOf('Edge') == -1;
- }
-
- get supportsShadowDom() {
- const testEl = document.createElement('div');
- return (typeof testEl.attachShadow !== 'undefined');
- }
-}
-
-export const browserDetection: BrowserDetection = BrowserDetection.setup();
+import {NgZone} from '@angular/core';
export function dispatchEvent(element: any, eventType: any): Event {
const evt: Event = getDOM().getDefaultDocument().createEvent('Event');
diff --git a/packages/platform-server/src/utils.ts b/packages/platform-server/src/utils.ts
index 12177666e57d..807b983317c7 100644
--- a/packages/platform-server/src/utils.ts
+++ b/packages/platform-server/src/utils.ts
@@ -54,13 +54,9 @@ function appendServerContextInfo(applicationRef: ApplicationRef) {
async function _render(platformRef: PlatformRef, applicationRef: ApplicationRef): Promise {
const environmentInjector = applicationRef.injector;
- const isStablePromise =
- applicationRef.isStable.pipe((first((isStable: boolean) => isStable))).toPromise();
- const pendingTasks = environmentInjector.get(InitialRenderPendingTasks);
- const pendingTasksPromise = pendingTasks.whenAllTasksComplete;
// Block until application is stable.
- await Promise.allSettled([isStablePromise, pendingTasksPromise]);
+ await applicationRef.isStable.pipe((first((isStable: boolean) => isStable))).toPromise();
const platformState = platformRef.injector.get(PlatformState);
if (applicationRef.injector.get(IS_HYDRATION_DOM_REUSE_ENABLED, false)) {
diff --git a/packages/platform-server/test/hydration_spec.ts b/packages/platform-server/test/hydration_spec.ts
index 75db97fdb0f2..26a3b8a07031 100644
--- a/packages/platform-server/test/hydration_spec.ts
+++ b/packages/platform-server/test/hydration_spec.ts
@@ -99,10 +99,8 @@ function stripExcessiveSpaces(html: string): string {
}
/** Returns a Promise that resolves when the ApplicationRef becomes stable. */
-function whenStable(appRef: ApplicationRef): Promise {
- const isStablePromise = appRef.isStable.pipe(first((isStable: boolean) => isStable)).toPromise();
- const pendingTasksPromise = appRef.injector.get(InitialRenderPendingTasks).whenAllTasksComplete;
- return Promise.allSettled([isStablePromise, pendingTasksPromise]);
+function whenStable(appRef: ApplicationRef): Promise {
+ return appRef.isStable.pipe(first((isStable: boolean) => isStable)).toPromise().then(() => {});
}
function verifyClientAndSSRContentsMatch(ssrContents: string, clientAppRootElement: HTMLElement) {
diff --git a/yarn.lock b/yarn.lock
index c913c75316cf..cd3166d5833c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3245,10 +3245,10 @@
"@types/node" "*"
"@types/responselike" "^1.0.0"
-"@types/chrome@^0.0.236":
- version "0.0.236"
- resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.236.tgz#f967769015c458718d4328a54682fa24f0c62c92"
- integrity sha512-ArQoxO9WtDY6GWcT2cpo+D+hyASPeFt7PHQEUDXwQhRS00Rbop07rnEOA046yws0HkM83Tcew/hW6Dgvnj4iMQ==
+"@types/chrome@^0.0.237":
+ version "0.0.237"
+ resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.237.tgz#20a38e1d1134e2725fc7eb43c881e55e1b24ddd7"
+ integrity sha512-krsRmyfMlck5r+H1EapsrrucDRq6iRm0NAi5fapr93CgnpVMDdK+h2+z4x79GegdW7BNH9Vb//gkptORwwwVIQ==
dependencies:
"@types/filesystem" "*"
"@types/har-format" "*"
@@ -3602,10 +3602,10 @@
"@types/glob" "*"
"@types/node" "*"
-"@types/selenium-webdriver4@npm:@types/selenium-webdriver@4.1.14", "@types/selenium-webdriver@^4.0.18":
- version "4.1.14"
- resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-4.1.14.tgz#4ce2839c35f751f5d497ae4e25989734a16dd555"
- integrity sha512-3vy3tbKfMWLhKMoZSnFAMZRf4Z1e8/zgpxIqXG7G2Coc8Rvf1QBvgpJDxxdnTuDFL6ZfymiGUHd8itwTmuEpeA==
+"@types/selenium-webdriver4@npm:@types/selenium-webdriver@4.1.15":
+ version "4.1.15"
+ resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-4.1.15.tgz#d346b674b96f5ba43f1ad5343f997030559e5b23"
+ integrity sha512-oQ15G3q3EZ0dS049SB/5zx2tQkIS2kmDQWC/TSfAHJYKvXLZoUiLaPXnfSwbLP8Q5lcJeu5oYjKVSEV0t3H6Bg==
dependencies:
"@types/ws" "*"
@@ -3619,6 +3619,14 @@
resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.21.tgz#af7a272e7f92a89cd432005dd1cb80956ebe4d9b"
integrity sha512-DRHyGEr25ra2C4+eU7eiCSto2j9eUa9pR4z5uiLRBXWFlmfMCAeXwecZnAhuB3eOOCA8OkwcNlb6QUkVZFlKTA==
+"@types/selenium-webdriver@^4.0.18":
+ name "@types/selenium-webdriver4"
+ version "4.1.14"
+ resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-4.1.14.tgz#4ce2839c35f751f5d497ae4e25989734a16dd555"
+ integrity sha512-3vy3tbKfMWLhKMoZSnFAMZRf4Z1e8/zgpxIqXG7G2Coc8Rvf1QBvgpJDxxdnTuDFL6ZfymiGUHd8itwTmuEpeA==
+ dependencies:
+ "@types/ws" "*"
+
"@types/semver@^7.3.4":
version "7.5.0"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a"
@@ -4153,10 +4161,10 @@ agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2:
dependencies:
debug "4"
-agent-base@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.0.1.tgz#ec4df4e6406bdf71490ade302ea45f86bf365ea9"
- integrity sha512-V9to8gr2GK7eA+xskWGAFUX/TLSQKuH2TI06c/jGLL6yLp3oEjtnqM7a5tPV9fC1rabLeAgThZeBwsYX+WWHpw==
+agent-base@^7.0.2:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434"
+ integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==
dependencies:
debug "^4.3.4"
@@ -9453,12 +9461,12 @@ http2-wrapper@^1.0.0-beta.5.2:
quick-lru "^5.1.1"
resolve-alpn "^1.0.0"
-https-proxy-agent@5, https-proxy-agent@5.0.1, https-proxy-agent@6.1.0, https-proxy-agent@^2.2.1, https-proxy-agent@^4.0.0, https-proxy-agent@^5.0.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-6.1.0.tgz#e00f1efb849171ea349721481d3bcbef03ab4d13"
- integrity sha512-rvGRAlc3y+iS7AC9Os2joN91mX8wHpJ4TEklmHHxr7Gz2Juqa7fJmJ8wWxXNpTaRt56MQTwojxV5d82UW/+jwg==
+https-proxy-agent@5, https-proxy-agent@5.0.1, https-proxy-agent@7.0.0, https-proxy-agent@^2.2.1, https-proxy-agent@^4.0.0, https-proxy-agent@^5.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.0.tgz#75cb70d04811685667183b31ab158d006750418a"
+ integrity sha512-0euwPCRyAPSgGdzD1IVN9nJYHtBhJwb6XPfbpQcYbPCwrBidX6GzxmchnaF4sfF/jPb74Ojx5g4yTg3sixlyPw==
dependencies:
- agent-base "^7.0.1"
+ agent-base "^7.0.2"
debug "4"
human-signals@^2.1.0: