diff --git a/client/.eslintrc.json b/client/.eslintrc.json new file mode 100644 index 000000000..d3d3b8061 --- /dev/null +++ b/client/.eslintrc.json @@ -0,0 +1,51 @@ +{ + "root": true, + "ignorePatterns": [ + "projects/**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "tsconfig.json", + "e2e/tsconfig.json" + ], + "createDefaultProgram": true + }, + "extends": [ + "plugin:@angular-eslint/recommended", + "plugin:@angular-eslint/template/process-inline-templates" + ], + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "cvc", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "cvc", + "style": "kebab-case" + } + ] + } + }, + { + "files": [ + "*.html" + ], + "extends": [ + "plugin:@angular-eslint/template/recommended" + ], + "rules": {} + } + ] +} diff --git a/client/.graphqlrc.yml b/client/.graphqlrc.yml index 02819b036..851f24240 100644 --- a/client/.graphqlrc.yml +++ b/client/.graphqlrc.yml @@ -21,15 +21,15 @@ extensions: config: apolloClientVersion: 3 nonOptionalTypename: true - futureProofUnions: true - futureProofEnums: true + futureProofUnions: false + futureProofEnums: false maybeValue: T | undefined - ./src/app/generated/server.possible-types.ts: + ./src/app/generated/civic.possible-types.ts: plugins: - fragment-matcher config: - apolloClientVersion: 2 - ./src/app/generated/server.field-policies.ts: + apolloClientVersion: 3 + ./src/app/generated/civic.apollo-helpers.ts: plugins: - typescript-apollo-client-helpers config: diff --git a/client/angular.json b/client/angular.json index 49cfe4d36..bcc0f7ccd 100644 --- a/client/angular.json +++ b/client/angular.json @@ -2,7 +2,8 @@ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "cli": { - "packageManager": "yarn" + "packageManager": "yarn", + "defaultCollection": "@angular-eslint/schematics" }, "newProjectRoot": "lib", "projects": { @@ -138,6 +139,15 @@ "devServerTarget": "main:serve:production" } } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": [ + "src/**/*.ts", + "src/**/*.html" + ] + } } } } diff --git a/client/package.json b/client/package.json index 0b6e697eb..621dd20b2 100644 --- a/client/package.json +++ b/client/package.json @@ -4,7 +4,9 @@ "scripts": { "ng": "ng", "start": "ng serve", - "build": "ng build", + "build": "ng build --build-optimizer", + "build:stats": "ng build --stats-json", + "analyze": "webpack-bundle-analyzer ../server/public/stats.json", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e", @@ -14,25 +16,32 @@ "generate-apollo:start": "graphql-codegen --watch" }, "private": true, + "resolutions": { + "error-stack-parser": "2.0.6" + }, "dependencies": { - "@angular/animations": "~13.1.3", - "@angular/common": "~13.1.3", - "@angular/compiler": "~13.1.3", - "@angular/core": "~13.1.3", - "@angular/forms": "~13.1.3", - "@angular/platform-browser": "~13.1.3", - "@angular/platform-browser-dynamic": "~13.1.3", - "@angular/router": "~13.1.3", + "@angular/animations": "~13.3.11", + "@angular/common": "~13.3.11", + "@angular/compiler": "~13.3.11", + "@angular/core": "~13.3.11", + "@angular/forms": "~13.3.11", + "@angular/platform-browser": "~13.3.11", + "@angular/platform-browser-dynamic": "~13.3.11", + "@angular/router": "~13.3.11", "@apollo/client": "^3.5.8", + "@ngneat/until-destroy": "^9.1.2", "@ngrx/component": "^12.5.1", "@ngx-formly/core": "^5.10.32", "@ngx-formly/ng-zorro-antd": "^0.0", - "apollo-angular": "^2.1.0", - "ng-zorro-antd": "^13.0.1", + "apollo-angular": "^3.0.1", + "ng-zorro-antd": "^13.3.2", "ngx-cookie-service": "^13.1.2", "ngx-logger": "^5.0.7", "ngx-timeago": "^2.0.0", - "rxjs": "~6.6.6", + "rxjs": "^6.5.3", + "rxjs-debug": "^1.3.0", + "rxjs-etc": "^10.6.2", + "rxjs-spy": "^7.5.3", "ts-enum-util": "^4.0.2", "tslib": "^2.3.1", "xstate": "^4.30.3", @@ -40,42 +49,44 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "~13.1.4", - "@angular-eslint/eslint-plugin": "^1.0.0", - "@angular-eslint/eslint-plugin-template": "^1.0.0", - "@angular-eslint/template-parser": "^1.0.0", - "@angular/cli": "^13.1.4", - "@angular/compiler-cli": "13.1.3", + "@angular-devkit/build-angular": "~13.3.8", + "@angular-eslint/builder": "13.2.1", + "@angular-eslint/eslint-plugin": "13.2.1", + "@angular-eslint/eslint-plugin-template": "13.2.1", + "@angular-eslint/schematics": "13.2.1", + "@angular-eslint/template-parser": "13.2.1", + "@angular/cli": "^13.3.8", + "@angular/compiler-cli": "13.3.11", "@angular/language-server": "^13.1.1", - "@graphql-codegen/add": "^2.0.2", - "@graphql-codegen/cli": "1.20.0", - "@graphql-codegen/fragment-matcher": "^2.0.1", - "@graphql-codegen/introspection": "^1.18.1", - "@graphql-codegen/typescript": "1.20.0", - "@graphql-codegen/typescript-apollo-angular": "2.2.1", - "@graphql-codegen/typescript-apollo-client-helpers": "^1.1.3", - "@graphql-codegen/typescript-operations": "^1.17.13", - "@graphql-eslint/eslint-plugin": "^0.7.1", - "@graphql-inspector/cli": "^2.3.0", + "@graphql-codegen/add": "3.1.1", + "@graphql-codegen/cli": "2.6.2", + "@graphql-codegen/fragment-matcher": "3.2.1", + "@graphql-codegen/introspection": "2.1.1", + "@graphql-codegen/typescript": "2.4.10", + "@graphql-codegen/typescript-apollo-angular": "3.4.9", + "@graphql-codegen/typescript-apollo-client-helpers": "2.1.17", + "@graphql-codegen/typescript-operations": "2.3.7", + "@graphql-eslint/eslint-plugin": "3.10.3", + "@graphql-inspector/cli": "3.1.2", "@ngx-formly/schematics": "^5.10.30", "@types/jasmine": "~3.6.0", "@types/node": "^12.11.1", - "@typescript-eslint/eslint-plugin": "^4.13.0", + "@typescript-eslint/eslint-plugin": "5.17.0", "@typescript-eslint/eslint-plugin-tslint": "^4.13.0", - "@typescript-eslint/parser": "^4.13.0", + "@typescript-eslint/parser": "5.17.0", "casual": "^1.6.2", "codelyzer": "^6.0.0", - "eslint": "^7.20.0", + "eslint": "^8.12.0", "eslint-plugin-import": "^2.22.1", "eslint-plugin-jsdoc": "^31.0.3", "eslint-plugin-prefer-arrow": "^1.2.2", "express": "^4.17.2", "express-graphql": "^0.12.0", - "graphql": "^15.4.0", + "graphql": "16.4.0", "graphql-cli": "^4.1.0", - "graphql-config": "^3.2.0", - "graphql-mock": "^1.3.0", - "graphql-schema-linter": "^2.0.1", + "graphql-config": "4.3.0", + "graphql-mock": "2.0.0", + "graphql-schema-linter": "3.0.0", "jasmine-core": "~3.6.0", "jasmine-spec-reporter": "~5.0.0", "karma": "~6.3.16", @@ -87,7 +98,6 @@ "patch-package": "^6.4.7", "prettier": "^2.5.1", "protractor": "~7.0.0", - "rxjs-spy": "^7.5.3", "svg-to-ts": "^6.0.0", "svgo": "^2.3.0", "ts-node": "~8.3.0", diff --git a/client/src/app/app.component.ts b/client/src/app/app.component.ts index 6c2d7e579..daeb06064 100644 --- a/client/src/app/app.component.ts +++ b/client/src/app/app.component.ts @@ -11,7 +11,7 @@ declare let gtag: Function; @Component({ selector: 'app-root', templateUrl: './app.component.html', - styleUrls: ['./app.component.less'] + styleUrls: ['./app.component.less'], }) export class AppComponent { diff --git a/client/src/app/components/assertions/assertion-card/assertion-card.component.ts b/client/src/app/components/assertions/assertion-card/assertion-card.component.ts index bb570fff3..a428a8004 100644 --- a/client/src/app/components/assertions/assertion-card/assertion-card.component.ts +++ b/client/src/app/components/assertions/assertion-card/assertion-card.component.ts @@ -1,5 +1,5 @@ import { Component, Input, OnInit } from "@angular/core"; -import { AssertionBrowseTableRowFieldsFragment } from "@app/generated/civic.apollo"; +import { AssertionBrowseFieldsFragment } from "@app/generated/civic.apollo"; @Component({ selector: 'cvc-assertion-card', @@ -7,7 +7,7 @@ import { AssertionBrowseTableRowFieldsFragment } from "@app/generated/civic.apol styleUrls: ['./assertion-card.component.less'] }) export class CvcAssertionCardComponent implements OnInit { - @Input() assertion!: AssertionBrowseTableRowFieldsFragment; + @Input() assertion!: AssertionBrowseFieldsFragment; ngOnInit(){ if(this.assertion == undefined) { diff --git a/client/src/app/components/assertions/assertions-popover/assertion-popover.component.html b/client/src/app/components/assertions/assertions-popover/assertion-popover.component.html index cd5f8e32e..da01fc245 100644 --- a/client/src/app/components/assertions/assertions-popover/assertion-popover.component.html +++ b/client/src/app/components/assertions/assertions-popover/assertion-popover.component.html @@ -46,7 +46,7 @@ {{ assertion.variantOrigin | evidenceEnumDisplay }} - + {{ code.code }} @@ -55,11 +55,18 @@ - - - {{ assertion.ampLevel | formatAmp: 'compact' | ifEmpty: '--' }} - - + + + {{ code.code }} + + + -- + + + + + {{ assertion.ampLevel | formatAmp: 'compact' | ifEmpty: '--' }} + diff --git a/client/src/app/components/assertions/assertions-popover/assertion-popover.component.ts b/client/src/app/components/assertions/assertions-popover/assertion-popover.component.ts index 3ebe5e506..55bd3fdf1 100644 --- a/client/src/app/components/assertions/assertions-popover/assertion-popover.component.ts +++ b/client/src/app/components/assertions/assertions-popover/assertion-popover.component.ts @@ -1,7 +1,9 @@ import { Component, Input, OnInit } from "@angular/core"; import { AssertionPopoverFragment, AssertionPopoverGQL, Maybe } from "@app/generated/civic.apollo"; -import { map } from 'rxjs/operators' +import { filter, map } from 'rxjs/operators' import { Observable } from 'rxjs'; +import { isNonNulled } from "rxjs-etc"; +import { AssertionState } from "@app/forms/config/states/assertion.state"; @Component({ selector: 'cvc-assertion-popover', @@ -13,6 +15,8 @@ export class CvcAssertionPopoverComponent implements OnInit { assertion$?: Observable> + assertionRules = new AssertionState() + constructor(private gql: AssertionPopoverGQL) { } ngOnInit() { @@ -21,6 +25,8 @@ export class CvcAssertionPopoverComponent implements OnInit { } this.assertion$ = this.gql.watch({ assertionId: this.assertionId }) .valueChanges - .pipe(map(({ data }) => data.assertion)) + .pipe(map(r => r.data), + filter(isNonNulled), + map(({ assertion }) => assertion)); } } diff --git a/client/src/app/components/assertions/assertions-popover/assertion-popover.query.gql b/client/src/app/components/assertions/assertions-popover/assertion-popover.query.gql index 382921cd4..ab2a15ecc 100644 --- a/client/src/app/components/assertions/assertions-popover/assertion-popover.query.gql +++ b/client/src/app/components/assertions/assertions-popover/assertion-popover.query.gql @@ -18,6 +18,10 @@ fragment assertionPopover on Assertion { code description } + clingenCodes { + code + description + } nccnGuideline { id name diff --git a/client/src/app/components/assertions/assertions-table/assertions-table.component.html b/client/src/app/components/assertions/assertions-table/assertions-table.component.html index 6c0cb8c38..380687678 100644 --- a/client/src/app/components/assertions/assertions-table/assertions-table.component.html +++ b/client/src/app/components/assertions/assertions-table/assertions-table.component.html @@ -26,15 +26,20 @@ - + Count + nzType="civic:evidence"> Count @@ -166,6 +171,8 @@ nzLabel="Diagnostic"> + + + + + + + + + [nzTooltipTitle]="!isScrolling ? (aid.drugInteractionType | drugInteractionEnumDisplay) : ''"> + [nzTooltipTitle]="!isScrolling ? aid.summary : ''"> @@ -321,7 +340,7 @@ nzRight> + [nzTooltipTitle]="!isScrolling ? (aid.assertionType | evidenceEnumDisplay) : ''"> @@ -331,7 +350,7 @@ nzRight> + [nzTooltipTitle]="!isScrolling ? (aid.assertionDirection | evidenceEnumDisplay) : ''"> @@ -341,7 +360,7 @@ nzRight> + [nzTooltipTitle]="!isScrolling ? (aid.clinicalSignificance | evidenceEnumDisplay) : ''"> @@ -352,7 +371,7 @@ + [nzTooltipTitle]="!isScrolling ? (aid.ampLevel | formatAmp: 'verbose') : ''"> {{ aid.ampLevel | formatAmp: 'compact' }} @@ -375,24 +394,19 @@ {{ this.cvcTitle }} - - ({{ totalCount | number }} total, showing {{ visibleCount | number }} of {{ filteredCount | number }} filtered) + + - - - (0 total) - - + - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/assertions/assertions-table/assertions-table.component.ts b/client/src/app/components/assertions/assertions-table/assertions-table.component.ts index 578a1be6a..ee51eb3ae 100644 --- a/client/src/app/components/assertions/assertions-table/assertions-table.component.ts +++ b/client/src/app/components/assertions/assertions-table/assertions-table.component.ts @@ -1,41 +1,22 @@ -import { - AfterViewInit, - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - Input, - OnInit, - TemplateRef, - ViewChild -} from '@angular/core'; -import { - AmpLevel, - AssertionBrowseTableRowFieldsFragment, - AssertionsBrowseGQL, - AssertionsBrowseQuery, - AssertionsBrowseQueryVariables, - AssertionSortColumns, - EvidenceClinicalSignificance, - EvidenceDirection, - EvidenceStatusFilter, - EvidenceType, - Maybe, - PageInfo -} from '@app/generated/civic.apollo'; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, TemplateRef } from '@angular/core'; +import { ApolloQueryResult } from '@apollo/client/core'; import { buildSortParams, SortDirectionEvent } from '@app/core/utilities/datatable-helpers'; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; +import { AmpLevel, AssertionBrowseFieldsFragment, AssertionConnection, AssertionsBrowseGQL, AssertionsBrowseQuery, AssertionsBrowseQueryVariables, AssertionSortColumns, EvidenceClinicalSignificance, EvidenceDirection, EvidenceStatusFilter, EvidenceType, Maybe, PageInfo } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { QueryRef } from 'apollo-angular'; -import { BehaviorSubject, interval, Observable, Subject } from 'rxjs'; -import { startWith, pluck, tap, map, debounceTime, take, takeUntil, withLatestFrom, pairwise, filter, throttleTime, first } from 'rxjs/operators'; -import { NzTableComponent } from 'ng-zorro-antd/table'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, takeUntil, withLatestFrom } from 'rxjs/operators'; +@UntilDestroy() @Component({ selector: 'cvc-assertions-table', templateUrl: './assertions-table.component.html', styleUrls: ['./assertions-table.component.less'], changeDetection: ChangeDetectionStrategy.OnPush }) -export class CvcAssertionsTableComponent implements OnInit, AfterViewInit { +export class CvcAssertionsTableComponent implements OnInit { @Input() cvcHeight: Maybe @Input() evidenceId: Maybe @Input() variantId: Maybe @@ -48,17 +29,33 @@ export class CvcAssertionsTableComponent implements OnInit, AfterViewInit { @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent; - viewport?: CdkVirtualScrollViewport; + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + + // INTERMEDIATE STREAMS + result$!: Observable> + connection$!: Observable + pageInfo$!: Observable + + // PRESENTATION STREAMS + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject + queryRef!: QueryRef + + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling: boolean = false + - private queryRef!: QueryRef private debouncedQuery = new Subject(); isLoading$?: Observable - assertions$?: Observable[]> + assertions$?: Observable[]> filteredCount$?: Observable - pageInfo$?: Observable isLoading = false; @@ -67,7 +64,6 @@ export class CvcAssertionsTableComponent implements OnInit, AfterViewInit { fetchMorePageSize = 25; isLoadingDelay = 300; visibleCount: number = this.initialPageSize - noMoreRows$: BehaviorSubject; loadedPages: number = 1 @@ -94,7 +90,10 @@ export class CvcAssertionsTableComponent implements OnInit, AfterViewInit { private destroy$ = new Subject(); constructor(private gql: AssertionsBrowseGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.scrollIndex$ = new Subject() } ngOnInit() { @@ -110,48 +109,44 @@ export class CvcAssertionsTableComponent implements OnInit, AfterViewInit { diseaseId: this.diseaseId, drugId: this.drugId, status: this.status, - cardView: !this.tableView - }, - { fetchPolicy: 'network-only' }); - - let observable = this.queryRef.valueChanges; + }); - // handle loading state - observable - .pipe( - takeUntil(this.destroy$), - pluck('loading'), - startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l; }); - - this.assertions$ = observable.pipe( - pluck('data', 'assertions', 'edges'), - map((edges) => { - return edges.map((e) => e.node) - })); - - this.filteredCount$ = observable.pipe( - pluck('data', 'assertions', 'totalCount')); - - this.filteredCount$ - .pipe(take(1)) - .subscribe(value => this.totalCount = value); - - this.filteredCount$ - .subscribe(value => { - if (value < this.initialPageSize) { - this.visibleCount = value - } else { - this.visibleCount = this.initialPageSize * this.loadedPages - if (this.visibleCount > value) { - this.visibleCount = value - } - } + this.result$ = this.queryRef.valueChanges + + // for controlling nzTable's loading overlay, which covers the whole table - + // good for the initial load as it's hard to miss + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // controls the smaller [Loading...] indicator, better for not distracting + // users by overlaying the row data they're focusing on + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + this.connection$ = this.result$ + .pipe(pluck('data', 'assertions'), + filter(isNonNulled)) as Observable; + + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))) + + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); }); - this.pageInfo$ = observable.pipe( - pluck('data', 'assertions', 'pageInfo')); - this.debouncedQuery .pipe( takeUntil(this.destroy$), @@ -159,80 +154,41 @@ export class CvcAssertionsTableComponent implements OnInit, AfterViewInit { .subscribe((_) => this.refresh()); this.textInputCallback = () => { this.debouncedQuery.next(); } - } // ngOnInit() - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe( - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); // TODO: figure out why this is required - }) - } - } - }); + // for every onScrolled event, convert to bool, share multicast + // false on 'scroll', true on 'stop' + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() + }) + + // emit event from noMoreRow$ when scroll viewport hits bottom + // and no next page exists + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); + } + }); + + } // ngOnInit() - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }) - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('evidence-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit // filtering, sorting callbacks onModelChanged() { this.debouncedQuery.next(); } - onSortChanged(e: SortDirectionEvent) { - this.loadedPages = 1 - this.queryRef.refetch({ sortBy: buildSortParams(e), cardView: !this.tableView }) - } - // refetch results, replacing current rows refresh() { this.isLoading = true; @@ -259,7 +215,6 @@ export class CvcAssertionsTableComponent implements OnInit, AfterViewInit { assertionDirection: this.assertionDirectionInput ? this.assertionDirectionInput : undefined, clinicalSignificance: this.clinicalSignificanceInput ? this.clinicalSignificanceInput : undefined, ampLevel: this.ampLevelInput ? this.ampLevelInput : undefined, - cardView: !this.tableView }) } @@ -274,14 +229,10 @@ export class CvcAssertionsTableComponent implements OnInit, AfterViewInit { } // virtual scroll helpers - trackByIndex(_: number, data: AssertionBrowseTableRowFieldsFragment): number { + trackByIndex(_: number, data: AssertionBrowseFieldsFragment): number { return data.id; } - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - ngOnDestroy() { this.destroy$.next(); this.destroy$.unsubscribe(); diff --git a/client/src/app/components/assertions/assertions-table/assertions-table.module.ts b/client/src/app/components/assertions/assertions-table/assertions-table.module.ts index d35d27da2..d17580495 100644 --- a/client/src/app/components/assertions/assertions-table/assertions-table.module.ts +++ b/client/src/app/components/assertions/assertions-table/assertions-table.module.ts @@ -1,31 +1,33 @@ +import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; -import { CommonModule, NgTemplateOutlet } from '@angular/common'; -import { NzTableModule } from 'ng-zorro-antd/table'; -import { NzFormModule } from 'ng-zorro-antd/form'; -import { NzInputModule } from 'ng-zorro-antd/input'; -import { NzIconModule } from 'ng-zorro-antd/icon'; -import { NzTypographyModule } from 'ng-zorro-antd/typography'; import { FormsModule } from '@angular/forms'; -import { ReactiveComponentModule } from '@ngrx/component'; -import { CvcTagOverflowModule } from '@app/components/shared/tag-overflow/tag-overflow.module'; - -import { CvcGeneTagModule } from '@app/components/genes/gene-tag/gene-tag.module'; -import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; -import { CvcVariantTagModule } from '@app/components/variants/variant-tag/variant-tag.module'; import { CvcDiseaseTagModule } from '@app/components/diseases/cvc-disease-tag/cvc-disease-tag.module'; import { CvcDrugTagModule } from '@app/components/drugs/cvc-drug-tag/cvc-drug-tag.module'; -import { NzSelectModule } from 'ng-zorro-antd/select'; +import { CvcEvidenceTagModule } from '@app/components/evidence/evidence-tag/evidence-tag.module'; +import { CvcGeneTagModule } from '@app/components/genes/gene-tag/gene-tag.module'; import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; -import { CvcPipesModule } from '@app/core/pipes/pipes.module'; -import { NzButtonModule } from 'ng-zorro-antd/button'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; import { CvcTagListModule } from '@app/components/shared/tag-list/tag-list.module'; -import { CvcAssertionsTableComponent } from './assertions-table.component'; -import { CvcEvidenceTagModule } from '@app/components/evidence/evidence-tag/evidence-tag.module'; -import { CvcAssertionsTagModule } from '../assertions-tag/assertions-tag.module'; -import { NzCardModule } from 'ng-zorro-antd/card'; +import { CvcTagOverflowModule } from '@app/components/shared/tag-overflow/tag-overflow.module'; +import { CvcVariantTagModule } from '@app/components/variants/variant-tag/variant-tag.module'; +import { CvcPipesModule } from '@app/core/pipes/pipes.module'; import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; +import { ReactiveComponentModule } from '@ngrx/component'; +import { NzButtonModule } from 'ng-zorro-antd/button'; +import { NzCardModule } from 'ng-zorro-antd/card'; +import { NzFormModule } from 'ng-zorro-antd/form'; +import { NzIconModule } from 'ng-zorro-antd/icon'; +import { NzInputModule } from 'ng-zorro-antd/input'; +import { NzSelectModule } from 'ng-zorro-antd/select'; +import { NzTableModule } from 'ng-zorro-antd/table'; import { NzTagModule } from 'ng-zorro-antd/tag'; +import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; +import { NzTypographyModule } from 'ng-zorro-antd/typography'; +import { CvcAssertionsTagModule } from '../assertions-tag/assertions-tag.module'; +import { CvcAssertionsTableComponent } from './assertions-table.component'; @NgModule({ declarations: [CvcAssertionsTableComponent], @@ -33,29 +35,34 @@ import { NzTagModule } from 'ng-zorro-antd/tag'; CommonModule, FormsModule, ReactiveComponentModule, + NzButtonModule, - NzTableModule, + NzCardModule, NzFormModule, - NzInputModule, NzIconModule, - NzTypographyModule, - NzToolTipModule, + NzInputModule, NzSelectModule, - NzCardModule, + NzTableModule, NzTagModule, + NzToolTipModule, + NzTypographyModule, + + CvcAssertionsTagModule, CvcAutoHeightCardModule, CvcAutoHeightTableModule, CvcClearableInputFilterModule, - CvcPipesModule, - CvcGeneTagModule, - CvcVariantTagModule, + CvcClearableInputFilterModule, CvcDiseaseTagModule, CvcDrugTagModule, - CvcAssertionsTagModule, CvcEvidenceTagModule, + CvcGeneTagModule, + CvcNoMoreRowsModule, + CvcPipesModule, + CvcTableCountsModule, + CvcTableScrollModule, CvcTagListModule, CvcTagOverflowModule, - CvcClearableInputFilterModule, + CvcVariantTagModule, ], exports: [CvcAssertionsTableComponent] }) diff --git a/client/src/app/components/assertions/assertions-table/assertions-table.query.gql b/client/src/app/components/assertions/assertions-table/assertions-table.query.gql index fb9c4e669..8f68ec95d 100644 --- a/client/src/app/components/assertions/assertions-table/assertions-table.query.gql +++ b/client/src/app/components/assertions/assertions-table/assertions-table.query.gql @@ -22,7 +22,6 @@ query AssertionsBrowse ( $diseaseId: Int, $drugId: Int, $status: EvidenceStatusFilter, - $cardView: Boolean! ) { assertions( first: $first @@ -59,13 +58,13 @@ query AssertionsBrowse ( edges { cursor node { - ...AssertionBrowseTableRowFields + ...AssertionBrowseFields } } } } -fragment AssertionBrowseTableRowFields on Assertion { +fragment AssertionBrowseFields on Assertion { id name link @@ -89,28 +88,12 @@ fragment AssertionBrowseTableRowFields on Assertion { name link } - phenotypes @include(if: $cardView) { - id - name - link - } drugInteractionType summary assertionType assertionDirection clinicalSignificance ampLevel - acmgCodes @include(if: $cardView) { - code - } - fdaCompanionTest @include(if: $cardView) - regulatoryApproval @include(if: $cardView) - regulatoryApprovalLastUpdated @include(if: $cardView) - nccnGuideline @include(if: $cardView) { - id - name - } - variantOrigin @include(if: $cardView) evidenceItemsCount status } diff --git a/client/src/app/components/clinical-trials/clinical-trial-popover/clinical-trial-popover.component.ts b/client/src/app/components/clinical-trials/clinical-trial-popover/clinical-trial-popover.component.ts index d5a9d6e6f..1b639a33b 100644 --- a/client/src/app/components/clinical-trials/clinical-trial-popover/clinical-trial-popover.component.ts +++ b/client/src/app/components/clinical-trials/clinical-trial-popover/clinical-trial-popover.component.ts @@ -1,7 +1,8 @@ import { Component, Input, OnInit } from "@angular/core"; import { ClinicalTrialPopoverFragment, ClinicalTrialPopoverGQL, Maybe } from "@app/generated/civic.apollo"; -import { map } from 'rxjs/operators' import { Observable } from 'rxjs'; +import { isNonNulled } from "rxjs-etc"; +import { filter, map } from 'rxjs/operators'; @Component({ selector: 'cvc-clinical-trial-popover', @@ -21,6 +22,7 @@ export class CvcClinicalTrialPopoverComponent implements OnInit { } this.clinicalTrial$ = this.gql.watch({ clinicalTrialId: this.clinicalTrialId }) .valueChanges - .pipe(map(({ data }) => data.clinicalTrials.edges[0]?.node)) + .pipe(map(({ data }) => data?.clinicalTrials.edges[0]?.node), + filter(isNonNulled)); } } diff --git a/client/src/app/components/clinical-trials/clinical-trials-table/clinical-trials-table.component.html b/client/src/app/components/clinical-trials/clinical-trials-table/clinical-trials-table.component.html index 70b84c4c8..459f92f8d 100644 --- a/client/src/app/components/clinical-trials/clinical-trials-table/clinical-trials-table.component.html +++ b/client/src/app/components/clinical-trials/clinical-trials-table/clinical-trials-table.component.html @@ -24,18 +24,23 @@ - + - + + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -98,13 +101,15 @@ + [nzTooltipTitle]="!isScrolling ? trial.name : ''"> {{ trial.name }} - + {{ trial.sourceCount }} - + {{ trial.evidenceCount }} @@ -113,32 +118,30 @@ + - + {{ this.cvcTitle }} - - ({{ totalCount | number }} total, showing {{ visibleCount | number }} of {{ filteredCount | number }} filtered) + + + - - - (0 total) - - + - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/clinical-trials/clinical-trials-table/clinical-trials-table.component.ts b/client/src/app/components/clinical-trials/clinical-trials-table/clinical-trials-table.component.ts index c30af51f9..849bf9f15 100644 --- a/client/src/app/components/clinical-trials/clinical-trials-table/clinical-trials-table.component.ts +++ b/client/src/app/components/clinical-trials/clinical-trials-table/clinical-trials-table.component.ts @@ -1,235 +1,157 @@ -import { AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core'; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { Maybe, PageInfo, ClinicalTrialsBrowseGQL, ClinicalTrialsBrowseQuery, ClinicalTrialsBrowseQueryVariables, ClinicalTrialSortColumns, BrowseClinicalTrial, BrowseClinicalTrialsRowFieldsFragment } from '@app/generated/civic.apollo'; +import { AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef } from '@angular/core'; +import { ApolloQueryResult } from '@apollo/client/core'; import { buildSortParams, SortDirectionEvent } from '@app/core/utilities/datatable-helpers'; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; +import { BrowseClinicalTrialConnection, BrowseClinicalTrialsRowFieldsFragment, ClinicalTrialsBrowseGQL, ClinicalTrialsBrowseQuery, ClinicalTrialsBrowseQueryVariables, ClinicalTrialSortColumns, Maybe, PageInfo } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { QueryRef } from 'apollo-angular'; import { BehaviorSubject, interval, Observable, Subject } from 'rxjs'; -import { startWith, pluck, map, debounceTime, take, takeUntil, withLatestFrom, pairwise, filter, throttleTime, first, tap } from 'rxjs/operators'; -import { NzTableComponent } from 'ng-zorro-antd/table'; -import { ApolloQueryResult } from '@apollo/client/core'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, first, map, pairwise, pluck, skip, startWith, take, takeUntil, tap, throttleTime, withLatestFrom } from 'rxjs/operators'; + +export interface ClinicalTrialsTableUserFilters { + nctIdFilter?: Maybe + nameFilter?: Maybe +} +@UntilDestroy() @Component({ selector: 'cvc-clinical-trials-table', templateUrl: './clinical-trials-table.component.html', styleUrls: ['./clinical-trials-table.component.less'] }) -export class CvcClinicalTrialsTableComponent implements OnInit, AfterViewInit, OnDestroy { +export class CvcClinicalTrialsTableComponent implements OnInit { @Input() cvcHeight?: number @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe + @Input() initialPageSize = 35 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent; - viewport?: CdkVirtualScrollViewport; - - private queryRef!: QueryRef - data$?: Observable>; - private debouncedQuery = new Subject(); - - isLoading = false; - isLoading$?: Observable - filteredCount$?: Observable - pageInfo$?: Observable - clinicalTrials$?: Observable[]> - - totalCount?: number - initialPageSize = 35 - visibleCount: number = this.initialPageSize - - fetchMorePageSize = 25; - isLoadingDelay = 300; - + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject + + // INTERMEDIATE STREAMS + queryRef!: QueryRef + result$!: Observable> + connection$!: Observable + + // PRESENTATION STREAMS + pageInfo$!: Observable + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject + + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling = false + + // filters nctIdFilter: Maybe nameFilter: Maybe - textInputCallback?: () => void - - showTooltips = true; - - sortColumns: typeof ClinicalTrialSortColumns = ClinicalTrialSortColumns - - loadedPages: number = 1 - - noMoreRows$: BehaviorSubject; - - private destroy$ = new Subject(); + sortColumns = ClinicalTrialSortColumns constructor(private gql: ClinicalTrialsBrowseGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() } ngOnInit(): void { - this.queryRef = this.gql.watch({ - first: this.initialPageSize - }, { fetchPolicy: 'network-only' }) - - this.data$ = this.queryRef.valueChanges.pipe( - map((r) => { - return { - data: r.data, - loading: r.loading, - networkStatus: r.networkStatus, - }; - })); - - this.clinicalTrials$ = this.data$ - .pipe( - pluck('data', 'clinicalTrials', 'edges'), - map((edges) => { - return edges.map((e) => e.node) - })); - - // handle loading state - this.data$ - .pipe( - takeUntil(this.destroy$), - pluck('loading'), - startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l; }); - - this.filteredCount$ = this.data$.pipe( - pluck('data', 'clinicalTrials', 'filteredCount')); - - this.filteredCount$ - .pipe( - takeUntil(this.destroy$), - take(1)) - .subscribe(value => this.totalCount = value); - - this.filteredCount$ - .pipe(takeUntil(this.destroy$)) - .subscribe( - value => { - if (value < this.initialPageSize) { - this.visibleCount = value - } - else { - this.visibleCount = this.initialPageSize * this.loadedPages - if (this.visibleCount > value) { - this.visibleCount = value - } - } - }); - - this.pageInfo$ = this.data$.pipe( - pluck('data', 'clinicalTrials', 'pageInfo')); - - this.debouncedQuery - .pipe( - takeUntil(this.destroy$), - debounceTime(500)) - .subscribe((_) => this.refresh()); - - this.textInputCallback = () => { this.debouncedQuery.next(); } - + this.queryRef = this.gql.watch({ first: this.initialPageSize }) + + this.result$ = this.queryRef.valueChanges + + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + this.connection$ = this.result$ + .pipe(pluck('data', 'clinicalTrials'), + filter(isNonNulled)) as Observable; + + // entity row nodes + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); + }); + + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }) + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() + }) + + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); + } + }); } // ngOnInit - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe( - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }) - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }) - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('evidence-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit - - onModelChanged() { this.debouncedQuery.next() } - - onSortChanged(e: SortDirectionEvent) { - this.loadedPages = 1 - this.queryRef.refetch({ - sortBy: buildSortParams(e) - }) - } - refresh() { - this.isLoading = true; - this.loadedPages = 1 - this.queryRef.refetch({ - name: this.nameFilter, - nctId: this.nctIdFilter - }) + this.queryRef + .refetch({ + name: this.nameFilter, + nctId: this.nctIdFilter + }) + .then(() => this.scrollIndex$.next(0)); + this.cdr.detectChanges() } - loadMore(cursor: Maybe) { - this.isLoading = true; - this.queryRef.fetchMore({ - variables: { - first: this.fetchMorePageSize, - after: cursor - } - }) - - this.loadedPages += 1 - } - - // virtual scroll helpers trackByIndex(_: number, data: BrowseClinicalTrialsRowFieldsFragment): number { return data.id; } - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.unsubscribe(); - } } diff --git a/client/src/app/components/clinical-trials/clinical-trials-table/clinical-trials-table.module.ts b/client/src/app/components/clinical-trials/clinical-trials-table/clinical-trials-table.module.ts index 7a3deabc4..ce5ad3599 100644 --- a/client/src/app/components/clinical-trials/clinical-trials-table/clinical-trials-table.module.ts +++ b/client/src/app/components/clinical-trials/clinical-trials-table/clinical-trials-table.module.ts @@ -1,35 +1,43 @@ -import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { CvcClinicalTrialsTableComponent } from './clinical-trials-table.component'; -import { NzTableModule } from 'ng-zorro-antd/table'; +import { NgModule } from '@angular/core'; import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; -import { CvcClinicalTrialTagModule } from '../clinical-trial-tag/clinical-trial-tag.module'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; +import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; +import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; import { ReactiveComponentModule } from '@ngrx/component'; import { NzButtonModule } from 'ng-zorro-antd/button'; import { NzCardModule } from 'ng-zorro-antd/card'; import { NzIconModule } from 'ng-zorro-antd/icon'; -import { NzTypographyModule } from 'ng-zorro-antd/typography'; -import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; -import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; -import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { NzTableModule } from 'ng-zorro-antd/table'; import { NzTagModule } from 'ng-zorro-antd/tag'; +import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; +import { NzTypographyModule } from 'ng-zorro-antd/typography'; +import { CvcClinicalTrialTagModule } from '../clinical-trial-tag/clinical-trial-tag.module'; +import { CvcClinicalTrialsTableComponent } from './clinical-trials-table.component'; @NgModule({ declarations: [CvcClinicalTrialsTableComponent], imports: [ CommonModule, ReactiveComponentModule, - NzTableModule, + NzButtonModule, NzCardModule, NzIconModule, - NzTypographyModule, - NzToolTipModule, + NzTableModule, NzTagModule, - CvcClearableInputFilterModule, - CvcClinicalTrialTagModule, + NzToolTipModule, + NzTypographyModule, + CvcAutoHeightCardModule, CvcAutoHeightTableModule, + CvcClearableInputFilterModule, + CvcClinicalTrialTagModule, + CvcNoMoreRowsModule, + CvcTableCountsModule, + CvcTableScrollModule, ], exports: [CvcClinicalTrialsTableComponent] }) diff --git a/client/src/app/components/comments/comment-list/comment-list.component.ts b/client/src/app/components/comments/comment-list/comment-list.component.ts index da5e7beab..56a232885 100644 --- a/client/src/app/components/comments/comment-list/comment-list.component.ts +++ b/client/src/app/components/comments/comment-list/comment-list.component.ts @@ -10,8 +10,6 @@ import { QueryRef } from 'apollo-angular'; import { Observable } from 'rxjs'; import { map, pluck } from 'rxjs/operators'; import { TagLinkableUser } from '@app/components/users/user-tag/user-tag.component'; -import { tag } from 'rxjs-spy/cjs/operators'; - interface CommentTagSegmentWithId { id: string diff --git a/client/src/app/components/diseases/cvc-disease-popover/cvc-disease-popover.component.ts b/client/src/app/components/diseases/cvc-disease-popover/cvc-disease-popover.component.ts index 926eb6dab..a826e165f 100644 --- a/client/src/app/components/diseases/cvc-disease-popover/cvc-disease-popover.component.ts +++ b/client/src/app/components/diseases/cvc-disease-popover/cvc-disease-popover.component.ts @@ -1,7 +1,8 @@ import { Component, Input, OnInit } from "@angular/core"; import { DiseasePopover, DiseasePopoverGQL, Maybe } from "@app/generated/civic.apollo"; -import { map } from 'rxjs/operators' import { Observable } from 'rxjs'; +import { isNonNulled } from "rxjs-etc"; +import { filter, map } from 'rxjs/operators'; @Component({ selector: 'cvc-disease-popover', @@ -21,6 +22,7 @@ export class CvcDiseasePopoverComponent implements OnInit { } this.disease$ = this.gql.watch({ diseaseId: this.diseaseId }) .valueChanges - .pipe(map(({ data }) => data.diseasePopover)) + .pipe(map(({ data }) => data?.diseasePopover), + filter(isNonNulled)); } } diff --git a/client/src/app/components/diseases/diseases-table/diseases-table.component.html b/client/src/app/components/diseases/diseases-table/diseases-table.component.html index 8dc6b0160..e1e782e9c 100644 --- a/client/src/app/components/diseases/diseases-table/diseases-table.component.html +++ b/client/src/app/components/diseases/diseases-table/diseases-table.component.html @@ -26,15 +26,20 @@ - + + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -138,7 +140,7 @@ + [nzTooltipTitle]="!isScrolling ? geneNames : ''"> {{ gene }}{{ isLast ? '' : ', ' }} @@ -168,6 +170,7 @@ + @@ -177,24 +180,20 @@ {{ this.cvcTitle }} - - ({{ totalCount | number }} total, showing {{ visibleCount | number }} of {{ filteredCount | number }} filtered) + + + - - - (0 total) - - + - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/diseases/diseases-table/diseases-table.component.ts b/client/src/app/components/diseases/diseases-table/diseases-table.component.ts index 6b729efd9..82e17aee9 100644 --- a/client/src/app/components/diseases/diseases-table/diseases-table.component.ts +++ b/client/src/app/components/diseases/diseases-table/diseases-table.component.ts @@ -1,236 +1,161 @@ -import { AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from "@angular/core"; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; +import { ChangeDetectorRef, Component, Input, OnInit, TemplateRef } from "@angular/core"; import { ApolloQueryResult } from "@apollo/client/core"; -import { BrowseDiseaseRowFieldsFragment, BrowseDiseasesGQL, BrowseDiseasesQuery, DiseasesSortColumns, Maybe, PageInfo, QueryBrowseDiseasesArgs } from "@app/generated/civic.apollo"; import { buildSortParams, SortDirectionEvent } from "@app/core/utilities/datatable-helpers"; -import { QueryRef } from "apollo-angular"; -import { Subject, Observable, BehaviorSubject, interval } from "rxjs"; -import { map, pluck, startWith, debounceTime, take, withLatestFrom, takeUntil, first, throttleTime, pairwise, tap, filter } from 'rxjs/operators'; -import { NzTableComponent } from "ng-zorro-antd/table"; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; +import { BrowseDiseaseConnection, BrowseDiseaseRowFieldsFragment, BrowseDiseasesGQL, BrowseDiseasesQuery, DiseasesSortColumns, Maybe, PageInfo, QueryBrowseDiseasesArgs } from "@app/generated/civic.apollo"; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; +import { QueryRef } from 'apollo-angular'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, withLatestFrom } from 'rxjs/operators'; + +export interface DiseasesTableUserFilters { + nameInput?: Maybe + geneNameInput?: Maybe + doidInput?: Maybe +} +@UntilDestroy() @Component({ selector: 'cvc-diseases-table', templateUrl: './diseases-table.component.html', styleUrls: ['./diseases-table.component.less'] }) -export class CvcDiseasesTableComponent implements OnInit, AfterViewInit, OnDestroy { +export class CvcDiseasesTableComponent implements OnInit { @Input() cvcHeight?: number @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe + @Input() initialPageSize = 35 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent; - viewport?: CdkVirtualScrollViewport; - - private debouncedQuery = new Subject(); - - queryRef?: QueryRef; - data$?: Observable>; - isLoading = false; - - noMoreRows$: BehaviorSubject; - - diseases$?: Observable[]>; - pageInfo$?: Observable; - - textInputCallback?: () => void; - + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject + + // INTERMEDIATE STREAMS + queryRef!: QueryRef + result$!: Observable> + connection$!: Observable + + // PRESENTATION STREAMS + pageInfo$!: Observable + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject + + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling = false //filters - nameInput: Maybe; - geneNameInput: Maybe; - doidInput: Maybe; - - showTooltips = true; + nameInput: Maybe + geneNameInput: Maybe + doidInput: Maybe - initialPageSize = 35; - visibleCount: number = this.initialPageSize; - fetchMorePageSize = 25; - sortColumns: typeof DiseasesSortColumns = DiseasesSortColumns; - - filteredCount$?: Observable; - totalCount?: number; - - isLoadingDelay = 300; - - loadedPages: number = 1; - - private destroy$ = new Subject(); + sortColumns: typeof DiseasesSortColumns = DiseasesSortColumns constructor(private gql: BrowseDiseasesGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() } ngOnInit() { this.queryRef = this.gql.watch({ first: this.initialPageSize }) - this.data$ = this.queryRef.valueChanges.pipe( - map((r) => { - return { - data: r.data, - loading: r.loading, - networkStatus: r.networkStatus - } - }) - ); - - // handle loading state - this.data$ - .pipe( - takeUntil(this.destroy$), - pluck('loading'), - startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l; }); - - this.diseases$ = this.data$.pipe( - pluck('data', 'browseDiseases', 'edges'), - map((edges) => { - return edges.map(e => e.node) + this.result$ = this.queryRef.valueChanges + // + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + this.connection$ = this.result$ + .pipe(pluck('data', 'browseDiseases'), + filter(isNonNulled)) as Observable; + + // entity row nodes + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); + }); + + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }) + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() }) - ); - - this.pageInfo$ = this.data$.pipe( - pluck('data', 'browseDiseases', 'pageInfo') - ); - - this.filteredCount$ = this.data$.pipe( - pluck('data', 'browseDiseases', 'filteredCount') - ) - this.data$.pipe( - pluck('data', 'browseDiseases', 'totalCount') - ).pipe(take(1)).subscribe(value => this.totalCount = value); - - this.filteredCount$.subscribe( - value => { - if (value < this.initialPageSize) { - this.visibleCount = value - } - else { - this.visibleCount = this.initialPageSize * this.loadedPages - if (this.visibleCount > value) { - this.visibleCount = value - } + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); } - } - ) + }); - this.debouncedQuery - .pipe(debounceTime(500)) - .subscribe((_) => this.refresh()); - - this.textInputCallback = () => { this.debouncedQuery.next(); } } // ngOnInit - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe( - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }) - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }) - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('diseases-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit - - refresh() { - this.isLoading = true; - this.loadedPages = 1 - this.queryRef?.refetch({ - name: this.nameInput, - geneNames: this.geneNameInput, - doid: this.doidInput - }) - } - - onSortChanged(e: SortDirectionEvent) { - this.isLoading = true; - this.loadedPages = 1 - this.queryRef?.refetch({ sortBy: buildSortParams(e) }) - } - - onModelChanged() { - this.debouncedQuery.next() - } - - loadMore(cursor: Maybe) { - this.isLoading = true; - this.queryRef?.fetchMore({ - variables: { - first: this.fetchMorePageSize, - after: cursor - } - }); + this.queryRef + .refetch({ + name: this.nameInput, + geneNames: this.geneNameInput, + doid: this.doidInput + }) + .then(() => this.scrollIndex$.next(0)); - this.loadedPages += 1 + this.cdr.detectChanges() } - // virtual scroll helpers trackByIndex(_: number, data: BrowseDiseaseRowFieldsFragment): number { return data.id; } - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.unsubscribe(); - } - } diff --git a/client/src/app/components/diseases/diseases-table/diseases-table.module.ts b/client/src/app/components/diseases/diseases-table/diseases-table.module.ts index ce4aeb3d0..b9901eba2 100644 --- a/client/src/app/components/diseases/diseases-table/diseases-table.module.ts +++ b/client/src/app/components/diseases/diseases-table/diseases-table.module.ts @@ -1,38 +1,46 @@ -import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { CvcDiseasesTableComponent } from './diseases-table.component'; -import { NzTableModule } from 'ng-zorro-antd/table'; +import { NgModule } from '@angular/core'; import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; import { CvcLinkTagModule } from '@app/components/shared/link-tag/link-tag.module'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; +import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; +import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; import { ReactiveComponentModule } from '@ngrx/component'; -import { CvcDiseaseTagModule } from '../cvc-disease-tag/cvc-disease-tag.module'; -import { NzIconModule } from 'ng-zorro-antd/icon'; -import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; import { NzButtonModule } from 'ng-zorro-antd/button'; import { NzCardModule } from 'ng-zorro-antd/card'; -import { NzTypographyModule } from 'ng-zorro-antd/typography'; -import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; -import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { NzIconModule } from 'ng-zorro-antd/icon'; +import { NzTableModule } from 'ng-zorro-antd/table'; import { NzTagModule } from 'ng-zorro-antd/tag'; +import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; +import { NzTypographyModule } from 'ng-zorro-antd/typography'; +import { CvcDiseaseTagModule } from '../cvc-disease-tag/cvc-disease-tag.module'; +import { CvcDiseasesTableComponent } from './diseases-table.component'; @NgModule({ declarations: [CvcDiseasesTableComponent], imports: [ CommonModule, ReactiveComponentModule, - NzIconModule, - NzToolTipModule, - NzTableModule, + NzButtonModule, NzCardModule, NzIconModule, - NzTypographyModule, + NzIconModule, + NzTableModule, NzTagModule, + NzToolTipModule, + NzTypographyModule, + CvcAutoHeightCardModule, CvcAutoHeightTableModule, CvcClearableInputFilterModule, - CvcLinkTagModule, CvcDiseaseTagModule, + CvcLinkTagModule, + CvcNoMoreRowsModule, + CvcTableCountsModule, + CvcTableScrollModule, ], exports: [CvcDiseasesTableComponent] }) diff --git a/client/src/app/components/drugs/cvc-drug-popover/cvc-drug-popover.component.ts b/client/src/app/components/drugs/cvc-drug-popover/cvc-drug-popover.component.ts index 44540c435..f71146a68 100644 --- a/client/src/app/components/drugs/cvc-drug-popover/cvc-drug-popover.component.ts +++ b/client/src/app/components/drugs/cvc-drug-popover/cvc-drug-popover.component.ts @@ -1,7 +1,8 @@ import { Component, Input, OnInit } from "@angular/core"; import { DrugPopover, DrugPopoverGQL, Maybe } from "@app/generated/civic.apollo"; -import { map } from 'rxjs/operators' +import { filter, map } from 'rxjs/operators' import { Observable } from 'rxjs'; +import { isNonNulled } from "rxjs-etc"; @Component({ selector: 'cvc-drug-popover', @@ -21,6 +22,7 @@ export class CvcDrugPopoverComponent implements OnInit { } this.drug$ = this.gql.watch({ drugId: this.drugId }) .valueChanges - .pipe(map(({ data }) => data.drugPopover)) + .pipe(map(({ data }) => data?.drugPopover), + filter(isNonNulled)); } } diff --git a/client/src/app/components/drugs/drugs-table/drugs-table.component.html b/client/src/app/components/drugs/drugs-table/drugs-table.component.html index 1e58dd717..506552b59 100644 --- a/client/src/app/components/drugs/drugs-table/drugs-table.component.html +++ b/client/src/app/components/drugs/drugs-table/drugs-table.component.html @@ -27,16 +27,20 @@ - - + + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -121,21 +123,20 @@ {{ this.cvcTitle }} - - ({{totalCount}} total, showing {{visibleCount}} of {{filteredCount}} filtered) + + + - - - (0 total) - - + - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/drugs/drugs-table/drugs-table.component.ts b/client/src/app/components/drugs/drugs-table/drugs-table.component.ts index b6cfad005..09396d38c 100644 --- a/client/src/app/components/drugs/drugs-table/drugs-table.component.ts +++ b/client/src/app/components/drugs/drugs-table/drugs-table.component.ts @@ -1,227 +1,159 @@ -import { AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core'; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { Maybe, PageInfo, DrugBrowseTableRowFieldsFragment, DrugsBrowseGQL, DrugsBrowseQuery, DrugsBrowseQueryVariables, DrugSortColumns } from '@app/generated/civic.apollo'; +import { AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef } from '@angular/core'; +import { ApolloQueryResult } from '@apollo/client/core'; import { buildSortParams, SortDirectionEvent } from '@app/core/utilities/datatable-helpers'; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; +import { BrowseDrugConnection, DrugBrowseTableRowFieldsFragment, DrugsBrowseGQL, DrugsBrowseQuery, DrugsBrowseQueryVariables, DrugSortColumns, Maybe, PageInfo } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { QueryRef } from 'apollo-angular'; -import { BehaviorSubject, interval, Observable, Subject } from 'rxjs'; -import { startWith, tap, pluck, map, debounceTime, take, takeUntil, withLatestFrom, pairwise, filter, throttleTime, first } from 'rxjs/operators'; -import { NzTableComponent } from 'ng-zorro-antd/table'; -import { ApolloQueryResult } from '@apollo/client/core'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, withLatestFrom } from 'rxjs/operators'; +export interface DrugTableUserFilters { + ncitIdFilter?: Maybe + nameFilter?: Maybe +} + +@UntilDestroy() @Component({ selector: 'cvc-drugs-table', templateUrl: './drugs-table.component.html', styleUrls: ['./drugs-table.component.less'] }) -export class CvcDrugsTableComponent implements OnInit, OnDestroy, AfterViewInit { +export class CvcDrugsTableComponent implements OnInit { @Input() cvcHeight: Maybe @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe @Input() truncateLongName: Maybe = false + @Input() initialPageSize = 35 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent - viewport?: CdkVirtualScrollViewport - - private queryRef?: QueryRef - private debouncedQuery = new Subject() + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject - isLoading = false - isLoadingDelay = 300 - initialPageSize = 35 - fetchMorePageSize = 25 + // INTERMEDIATE STREAMS + queryRef!: QueryRef + result$!: Observable> + connection$!: Observable - totalCount?: number; - visibleCount: number = this.initialPageSize - loadedPages: number = 1 + // PRESENTATION STREAMS + pageInfo$!: Observable + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject - data$?: Observable> - filteredCount$?: Observable - pageInfo$?: Observable - drugs$?: Observable[]> + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling = false // filters ncitIdFilter: Maybe nameFilter: Maybe - sortColumns: typeof DrugSortColumns = DrugSortColumns - - showTooltips = true; - noMoreRows$: BehaviorSubject; - textInputCallback?: () => void - private destroy$ = new Subject() + sortColumns = DrugSortColumns constructor(private gql: DrugsBrowseGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() } ngOnInit() { - this.queryRef = this.gql.watch({ - first: this.initialPageSize - }, { fetchPolicy: 'network-only' }); - - this.data$ = this.queryRef.valueChanges.pipe( - map((r) => { - return { - data: r.data, - loading: r.loading, - networkStatus: r.networkStatus, - }; - })); - - this.drugs$ = this.data$ - .pipe( - pluck('data', 'drugs', 'edges'), - map((edges) => { - return edges.map((e) => e.node) - })); - - // handle loading state - this.data$ - .pipe( - takeUntil(this.destroy$), - pluck('loading'), - startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l; }); - - this.filteredCount$ = this.data$.pipe( - pluck('data', 'drugs', 'filteredCount')); - - this.filteredCount$ - .pipe(take(1)) - .subscribe(value => this.totalCount = value); - - this.filteredCount$ - .subscribe(value => { - if (value < this.initialPageSize) { - this.visibleCount = value - } - else { - this.visibleCount = this.initialPageSize * this.loadedPages - if (this.visibleCount > value) { - this.visibleCount = value - } - } + this.queryRef = this.gql.watch({ first: this.initialPageSize }) + + this.result$ = this.queryRef.valueChanges + + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + this.connection$ = this.result$ + .pipe(pluck('data', 'drugs'), + filter(isNonNulled)) as Observable; + + // entity row nodes + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); }); - this.pageInfo$ = this.data$.pipe( - pluck('data', 'drugs', 'pageInfo')); - - this.debouncedQuery - .pipe( - takeUntil(this.destroy$), - debounceTime(500)) - .subscribe((_) => this.refresh()); - - this.textInputCallback = () => { this.debouncedQuery.next(); } + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }) + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() + }) + + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); + } + }); } // ngOnInit - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe( - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }); - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }) - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('variants-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit - - onModelChanged() { this.debouncedQuery.next() } - - onSortChanged(e: SortDirectionEvent) { - this.isLoading = true; - this.loadedPages = 1 - this.queryRef?.refetch({ - sortBy: buildSortParams(e) - }) - } - refresh() { - this.isLoading = true; - this.loadedPages = 1 - this.queryRef?.refetch({ - name: this.nameFilter, - ncitId: this.ncitIdFilter - }) + this.queryRef + .refetch({ + name: this.nameFilter, + ncitId: this.ncitIdFilter + }) + .then(() => this.scrollIndex$.next(0)); + + this.cdr.detectChanges() } - // virtual scroll helpers trackByIndex(_: number, data: DrugBrowseTableRowFieldsFragment): number { return data.id; } - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - loadMore(cursor: Maybe) { - this.isLoading = true; - this.queryRef?.fetchMore({ - variables: { - first: this.fetchMorePageSize, - after: cursor - } - }) - this.loadedPages += 1 - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.unsubscribe(); - } } diff --git a/client/src/app/components/drugs/drugs-table/drugs-table.module.ts b/client/src/app/components/drugs/drugs-table/drugs-table.module.ts index b00e2afa7..7235f8468 100644 --- a/client/src/app/components/drugs/drugs-table/drugs-table.module.ts +++ b/client/src/app/components/drugs/drugs-table/drugs-table.module.ts @@ -14,25 +14,33 @@ import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; import { NzTagModule } from 'ng-zorro-antd/tag'; import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; @NgModule({ declarations: [CvcDrugsTableComponent], imports: [ CommonModule, ReactiveComponentModule, - NzTableModule, - NzIconModule, + NzButtonModule, NzCardModule, NzIconModule, - NzTypographyModule, - NzToolTipModule, + NzIconModule, + NzTableModule, NzTagModule, + NzToolTipModule, + NzTypographyModule, + CvcAutoHeightCardModule, CvcAutoHeightTableModule, + CvcClearableInputFilterModule, CvcDrugTagModule, CvcLinkTagModule, - CvcClearableInputFilterModule + CvcNoMoreRowsModule, + CvcTableCountsModule, + CvcTableScrollModule, ], exports: [CvcDrugsTableComponent] }) diff --git a/client/src/app/components/events/event-feed/event-feed.component.ts b/client/src/app/components/events/event-feed/event-feed.component.ts index 3b5dec68d..9fb8238b4 100644 --- a/client/src/app/components/events/event-feed/event-feed.component.ts +++ b/client/src/app/components/events/event-feed/event-feed.component.ts @@ -16,10 +16,13 @@ import { import { QueryRef } from "apollo-angular"; import { ApolloQueryResult } from "@apollo/client/core"; import { Observable, Subject } from 'rxjs'; -import { map, startWith, take, takeUntil } from 'rxjs/operators'; +import { distinctUntilChanged, filter, map, startWith, take, takeUntil } from 'rxjs/operators'; import { TagLinkableOrganization } from "@app/components/organizations/organization-tag/organization-tag.component"; import { TagLinkableUser } from "@app/components/users/user-tag/user-tag.component"; import { environment } from "environments/environment"; +import { isNonNulled } from "rxjs-etc"; +import { tag } from "rxjs-spy/cjs/operators"; +import { untilDestroyed } from "@ngneat/until-destroy"; interface SelectableAction { id: EventAction } @@ -49,8 +52,8 @@ export class CvcEventFeedComponent implements OnInit, OnDestroy { events$?: Observable[]>; pageInfo$?: Observable; - participants$?: Observable; - organizations$?: Observable; + participants$?: Observable>; + organizations$?: Observable>; actions$?: Observable unfilteredCount$?: Observable loading$?: Observable @@ -77,42 +80,46 @@ export class CvcEventFeedComponent implements OnInit, OnDestroy { this.queryRef = this.gql.watch(this.initialQueryVars); - if(this.pollForNewEvents && environment.production) { + if (this.pollForNewEvents && environment.production) { this.newEventCount$ = this.eventCountGql - .watch(this.initialQueryVars, {fetchPolicy: 'no-cache', pollInterval: 30000}) + .watch(this.initialQueryVars, { fetchPolicy: 'no-cache', pollInterval: 30000 }) .valueChanges .pipe( - map( ({data}) => data.events.unfilteredCount ), + map(({ data }) => data.events.unfilteredCount), takeUntil(this.destroy$) ) } - this.results$ = this.queryRef.valueChanges; + this.results$ = this.queryRef.valueChanges + // .pipe(tag('event-feed results$')) this.pageInfo$ = this.results$.pipe( map(({ data }) => data.events.pageInfo) ) - this.events$ = this.results$.pipe( - map(({ data }) => { - return data.events.edges.map(e => e.node) - }) - ) - - this.loading$ = this.results$.pipe( - map(({loading}) => loading), - startWith(true) - ) - this.unfilteredCount$ = this.results$.pipe( - map(({data}) => { - return data.events.unfilteredCount - }) - ) - - this.unfilteredCount$.pipe(take(1)) + this.events$ = this.results$ + .pipe(map(r => r.data), + // tag('event-feed events$'), + filter(isNonNulled), + map(({ events }) => { + return events.edges.map(e => e.node) + })) + + this.loading$ = this.results$.pipe( + map(({ loading }) => loading), + distinctUntilChanged()); + + this.unfilteredCount$ = this.results$ + .pipe(map(r => r.data), + filter(isNonNulled), + map(({ events }) => events.unfilteredCount)); + + this.unfilteredCount$ + .pipe(take(1), + untilDestroyed(this)) .subscribe(value => this.originalEventCount = value) - if(this.showFilters) { + if (this.showFilters) { this.participants$ = this.results$.pipe( map(({ data }) => data.events.uniqueParticipants) ) @@ -122,7 +129,7 @@ export class CvcEventFeedComponent implements OnInit, OnDestroy { ) this.actions$ = this.results$.pipe( - map(({data}) => data.events?.eventTypes?.map((et) => {return {id: et}}) || []) + map(({ data }) => data.events?.eventTypes?.map((et) => { return { id: et } }) || []) ) } } @@ -159,7 +166,7 @@ export class CvcEventFeedComponent implements OnInit, OnDestroy { refresh() { this.queryRef.refetch().then( - ({data}) => { this.originalEventCount = data.events.unfilteredCount } + ({ data }) => { this.originalEventCount = data.events.unfilteredCount } ); } diff --git a/client/src/app/components/events/homepage-event-feed/homepage-event-feed.component.ts b/client/src/app/components/events/homepage-event-feed/homepage-event-feed.component.ts index 7b895b691..edf309b8c 100644 --- a/client/src/app/components/events/homepage-event-feed/homepage-event-feed.component.ts +++ b/client/src/app/components/events/homepage-event-feed/homepage-event-feed.component.ts @@ -1,21 +1,19 @@ import { Component, Input, OnInit } from "@angular/core"; +import { ApolloQueryResult } from "@apollo/client/core"; import { - EventAction, EventFeedGQL, EventFeedMode, EventFeedNodeFragment, EventFeedQuery, EventFeedQueryVariables, Maybe, - PageInfo, + PageInfo } from "@app/generated/civic.apollo"; import { QueryRef } from "apollo-angular"; -import { ApolloQueryResult } from "@apollo/client/core"; -import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; import { environment } from "environments/environment"; - -interface SelectableAction { id: EventAction } +import { Observable } from 'rxjs'; +import { isNonNulled } from "rxjs-etc"; +import { filter, map, pluck } from 'rxjs/operators'; export type EventDisplayOption = "hideSubject" | "hideUser" | "hideOrg" | "displayAll" @@ -51,27 +49,27 @@ export class CvcHomepageEventFeedComponent implements OnInit { includeAutomatedEvents: false } - if(environment.production) { - this.queryRef = this.gql.watch(this.initialQueryVars, {pollInterval: 30000}); + if (environment.production) { + this.queryRef = this.gql.watch(this.initialQueryVars, { pollInterval: 30000 }); } else { this.queryRef = this.gql.watch(this.initialQueryVars); } - this.results$ = this.queryRef.valueChanges; + this.results$ = this.queryRef.valueChanges - this.pageInfo$ = this.results$.pipe( - map(({ data }) => data.events.pageInfo) - ) + this.pageInfo$ = this.results$ + .pipe( + pluck('data'), + filter(isNonNulled), + map(({ events }) => events.pageInfo)); this.events$ = this.results$.pipe( - map(({ data }) => { - return data.events.edges.map(e => e.node) - }) - ) + pluck('data'), + filter(isNonNulled), + map(({ events }) => events.edges.map(e => e.node))); this.unfilteredCount$ = this.results$.pipe( - map(({data}) => { - return data.events.unfilteredCount - }) - ) + pluck('data'), + filter(isNonNulled), + map(({ events }) => events.unfilteredCount )) } -} \ No newline at end of file +} diff --git a/client/src/app/components/evidence/evidence-popover/evidence-popover.component.ts b/client/src/app/components/evidence/evidence-popover/evidence-popover.component.ts index 3cca50653..9814d89aa 100644 --- a/client/src/app/components/evidence/evidence-popover/evidence-popover.component.ts +++ b/client/src/app/components/evidence/evidence-popover/evidence-popover.component.ts @@ -1,8 +1,8 @@ import { Component, Input, OnInit } from "@angular/core"; import { EvidencePopoverFragment, EvidencePopoverGQL, Maybe } from "@app/generated/civic.apollo"; -import { map } from 'rxjs/operators' +import { map, filter } from 'rxjs/operators' import { Observable } from 'rxjs'; - +import { isNonNulled } from "rxjs-etc"; @Component({ selector: 'cvc-evidence-popover', @@ -20,8 +20,10 @@ export class CvcEvidencePopoverComponent implements OnInit { if (this.evidenceId == undefined) { throw new Error("cvc-evidence-popover requires valid evidenceId input."); } + this.evidence$ = this.gql.watch({ evidenceId: this.evidenceId }) .valueChanges - .pipe(map(({ data }) => data.evidenceItem)) + .pipe(map(({ data }) => data?.evidenceItem), + filter(isNonNulled)); } } diff --git a/client/src/app/components/evidence/evidence-table/evidence-table.component.html b/client/src/app/components/evidence/evidence-table/evidence-table.component.html index 1fdb66553..80ded9fff 100644 --- a/client/src/app/components/evidence/evidence-table/evidence-table.component.html +++ b/client/src/app/components/evidence/evidence-table/evidence-table.component.html @@ -27,15 +27,20 @@ - + + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -182,7 +187,7 @@ nzPlaceHolder="All" nzSize="small" [nzDropdownMatchSelectWidth]="false" - (ngModelChange)="onModelChanged()" + (ngModelChange)="filterChange$.next()" [(ngModel)]="evidenceLevelInput"> @@ -202,7 +207,7 @@ nzPlaceHolder="All" nzSize="small" [nzDropdownMatchSelectWidth]="false" - (ngModelChange)="onModelChanged()" + (ngModelChange)="filterChange$.next()" [(ngModel)]="evidenceTypeInput"> @@ -225,7 +230,7 @@ nzSize="small" [nzDropdownMatchSelectWidth]="false" [nzDropdownMatchSelectWidth]="false" - (ngModelChange)="onModelChanged()" + (ngModelChange)="filterChange$.next()" [(ngModel)]="evidenceDirectionInput"> @@ -241,7 +246,7 @@ nzPlaceHolder="All" nzSize="small" [nzDropdownMatchSelectWidth]="false" - (ngModelChange)="onModelChanged()" + (ngModelChange)="filterChange$.next()" [(ngModel)]="clinicalSignificanceInput"> + + + + @@ -299,7 +312,7 @@ nzPlaceHolder="All" nzSize="small" [nzDropdownMatchSelectWidth]="false" - (ngModelChange)="onModelChanged()" + (ngModelChange)="filterChange$.next()" [(ngModel)]="variantOriginInput"> @@ -321,7 +334,7 @@ nzPlaceHolder="All" nzSize="small" [nzDropdownMatchSelectWidth]="false" - (ngModelChange)="onModelChanged()" + (ngModelChange)="filterChange$.next()" [(ngModel)]="evidenceRatingInput"> @@ -386,7 +399,7 @@ + [nzTooltipTitle]="!isScrolling ? (eid.drugInteractionType | drugInteractionEnumDisplay) : ''"> + [nzTooltipTitle]="!isScrolling ? eid.description : ''"> @@ -411,7 +424,7 @@ nzRight> + [nzTooltipTitle]="!isScrolling ? eid.evidenceLevel + ' - ' + (eid.evidenceLevel | evidenceLevelDisplay) : ''"> {{ eid.evidenceLevel }} @@ -419,7 +432,7 @@ nzRight> + [nzTooltipTitle]="!isScrolling ? (eid.evidenceType | evidenceEnumDisplay) : ''"> @@ -429,7 +442,7 @@ nzRight> + [nzTooltipTitle]="!isScrolling ? (eid.evidenceDirection | evidenceEnumDisplay) : ''"> @@ -439,7 +452,7 @@ nzRight> + [nzTooltipTitle]="!isScrolling ? (eid.clinicalSignificance | evidenceEnumDisplay) : ''"> @@ -449,7 +462,7 @@ nzRight> + [nzTooltipTitle]="!isScrolling ? (eid.variantOrigin | evidenceEnumDisplay) : ''"> @@ -459,7 +472,7 @@ nzRight> + [nzTooltipTitle]="!isScrolling ? (eid.evidenceRating + ' stars') : ''"> {{ eid.evidenceRating }} {{ this.cvcTitle }} - - ({{ totalCount | number }} total, showing {{ visibleCount | number }} of {{ filteredCount | number }} filtered) - - - - (0 total) - - + + + - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/evidence/evidence-table/evidence-table.component.ts b/client/src/app/components/evidence/evidence-table/evidence-table.component.ts index 702912fab..ee3a5f6a3 100644 --- a/client/src/app/components/evidence/evidence-table/evidence-table.component.ts +++ b/client/src/app/components/evidence/evidence-table/evidence-table.component.ts @@ -1,73 +1,47 @@ -import { - Component, - Input, - OnDestroy, - OnInit, - Output, - EventEmitter, - TemplateRef, - ViewChild, - AfterViewInit, - ChangeDetectorRef, - ChangeDetectionStrategy -} from '@angular/core'; - -import { - EvidenceBrowseGQL, - EvidenceBrowseQuery, - EvidenceBrowseQueryVariables, - EvidenceClinicalSignificance, - EvidenceDirection, - EvidenceGridFieldsFragment, - EvidenceLevel, - EvidenceSortColumns, - EvidenceStatusFilter, - EvidenceType, - Maybe, - PageInfo, - VariantOrigin, -} from '@app/generated/civic.apollo'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core'; +import { ApolloQueryResult } from '@apollo/client/core'; import { buildSortParams, SortDirectionEvent } from '@app/core/utilities/datatable-helpers'; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { QueryRef } from 'apollo-angular'; -import { BehaviorSubject, interval, Observable, Subject } from 'rxjs'; -import { tap, pluck, map, debounceTime, take, takeUntil, pairwise, filter, throttleTime, withLatestFrom, first } from 'rxjs/operators'; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; import { FormEvidence } from '@app/forms/forms.interfaces'; -import { NzTableComponent } from 'ng-zorro-antd/table'; +import { EvidenceBrowseGQL, EvidenceBrowseQuery, EvidenceBrowseQueryVariables, EvidenceClinicalSignificance, EvidenceDirection, EvidenceGridFieldsFragment, EvidenceItemConnection, EvidenceLevel, EvidenceSortColumns, EvidenceStatusFilter, EvidenceType, Maybe, PageInfo, VariantOrigin } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; +import { QueryRef } from 'apollo-angular'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, withLatestFrom } from 'rxjs/operators'; export interface EvidenceTableUserFilters { - eidInput: Maybe - diseaseNameInput: Maybe - drugNameInput: Maybe - descriptionInput: Maybe - evidenceLevelInput: Maybe - evidenceTypeInput: Maybe - evidenceDirectionInput: Maybe - clinicalSignificanceInput: Maybe - variantOriginInput: Maybe - evidenceRatingInput: Maybe - variantNameInput: Maybe - geneSymbolInput: Maybe + eidInput?: Maybe + diseaseNameInput?: Maybe + drugNameInput?: Maybe + descriptionInput?: Maybe + evidenceLevelInput?: Maybe + evidenceTypeInput?: Maybe + evidenceDirectionInput?: Maybe + clinicalSignificanceInput?: Maybe + variantOriginInput?: Maybe + evidenceRatingInput?: Maybe + variantNameInput?: Maybe + geneSymbolInput?: Maybe } +@UntilDestroy() @Component({ selector: 'cvc-evidence-table', templateUrl: './evidence-table.component.html', styleUrls: ['./evidence-table.component.less'], - changeDetection: ChangeDetectionStrategy.OnPush + changeDetection: ChangeDetectionStrategy.OnPush, }) -export class CvcEvidenceTableComponent implements OnInit, AfterViewInit, OnDestroy { +export class CvcEvidenceTableComponent implements OnInit { @Input() cvcHeight: Maybe @Input() assertionId: Maybe @Input() clinicalTrialId: Maybe @Input() cvcTitle: Maybe @Input() cvcTitleTemplate: Maybe> @Input() diseaseId: Maybe - @Input() displayGeneAndVariant: boolean = true + @Input() displayGeneAndVariant = true @Input() drugId: Maybe - @Input() initialPageSize: number = 30; @Input() initialSelectedEids: FormEvidence[] = [] - @Input() initialUserFilters: Maybe @Input() mode: 'normal' | 'select' = 'normal' @Input() organizationId: Maybe @Input() phenotypeId: Maybe @@ -75,96 +49,88 @@ export class CvcEvidenceTableComponent implements OnInit, AfterViewInit, OnDestr @Input() status: Maybe @Input() userId: Maybe @Input() variantId: Maybe - - @Output() selectedEids = new EventEmitter() - selectedEvidenceIds = new Map(); - - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent; - viewport?: CdkVirtualScrollViewport; + @Input() initialPageSize = 35 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } @Output() initialTotalCount = new EventEmitter() - private queryRef!: QueryRef - private debouncedQuery = new Subject(); - // implementing isLoading as var so both watch() and fetchMore() can update loading state. - // TODO: update to apollo-angular v3 - eliminates the need to manually manage loading state - isLoading = true; - - evidence$?: Observable[]>; - filteredCount$?: Observable; - - pageInfo$?: Observable; - totalCount?: number; - fetchMorePageSize = 25; - isLoadingDelay = 300; - visibleCount: number = this.initialPageSize; - - noMoreRows$: BehaviorSubject; - - loadedPages: number = 1; - tableView: boolean = true; - - textInputCallback?: () => void; - - showTooltips = true; - - //filters - clinicalSignificanceInput: Maybe; - descriptionInput: Maybe; - diseaseNameInput: Maybe; - drugNameInput: Maybe; - eidInput: Maybe; - evidenceDirectionInput: Maybe; - evidenceLevelInput: Maybe; - evidenceRatingInput: Maybe; - evidenceTypeInput: Maybe; - geneSymbolInput: Maybe; - variantNameInput: Maybe; - variantOriginInput: Maybe; + @Output() selectedEids = new EventEmitter() - sortColumns: typeof EvidenceSortColumns = EvidenceSortColumns; + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject + + // INTERMEDIATE STREAMS + queryRef!: QueryRef + result$!: Observable> + connection$!: Observable + + // PRESENTATION STREAMS + pageInfo$!: Observable + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject + + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling = false + + // filters + clinicalSignificanceInput: Maybe + descriptionInput: Maybe + diseaseNameInput: Maybe + drugNameInput: Maybe + eidInput: Maybe + evidenceDirectionInput: Maybe + evidenceLevelInput: Maybe + evidenceRatingInput: Maybe + evidenceTypeInput: Maybe + geneSymbolInput: Maybe + variantNameInput: Maybe + variantOriginInput: Maybe - private destroy$ = new Subject(); + sortColumns = EvidenceSortColumns - showTbody: boolean = false; + selectedEvidenceIds = new Map() constructor(private gql: EvidenceBrowseGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() } ngOnInit() { - if (this.initialUserFilters) { - this.clinicalSignificanceInput = this.initialUserFilters.clinicalSignificanceInput - this.descriptionInput = this.initialUserFilters.descriptionInput - this.diseaseNameInput = this.initialUserFilters.diseaseNameInput - this.drugNameInput = this.initialUserFilters.drugNameInput - this.eidInput = this.initialUserFilters.eidInput - this.evidenceDirectionInput = this.initialUserFilters.evidenceDirectionInput - this.evidenceLevelInput = this.initialUserFilters.evidenceLevelInput - this.evidenceRatingInput = this.initialUserFilters.evidenceRatingInput - this.evidenceTypeInput = this.initialUserFilters.evidenceTypeInput - this.geneSymbolInput = this.initialUserFilters.geneSymbolInput - this.variantNameInput = this.initialUserFilters.variantNameInput - this.variantOriginInput = this.initialUserFilters.variantOriginInput - } - this.queryRef = this.gql.watch( { - first: this.initialPageSize, - assertionId: this.assertionId, - cardView: !this.tableView, - clinicalSignificance: this.clinicalSignificanceInput ? this.clinicalSignificanceInput : undefined, + clinicalSignificance: this.clinicalSignificanceInput + ? this.clinicalSignificanceInput + : undefined, clinicalTrialId: this.clinicalTrialId, description: this.descriptionInput, diseaseId: this.diseaseId, diseaseName: this.diseaseNameInput, drugId: this.drugId, drugName: this.drugNameInput, - evidenceDirection: this.evidenceDirectionInput ? this.evidenceDirectionInput : undefined, - evidenceLevel: this.evidenceLevelInput ? this.evidenceLevelInput : undefined, - evidenceType: this.evidenceTypeInput ? this.evidenceTypeInput : undefined, + evidenceDirection: this.evidenceDirectionInput + ? this.evidenceDirectionInput + : undefined, + evidenceLevel: this.evidenceLevelInput + ? this.evidenceLevelInput + : undefined, + evidenceType: this.evidenceTypeInput + ? this.evidenceTypeInput + : undefined, + first: this.initialPageSize, geneSymbol: this.geneSymbolInput ? this.geneSymbolInput : undefined, organizationId: this.organizationId, phenotypeId: this.phenotypeId, @@ -174,206 +140,143 @@ export class CvcEvidenceTableComponent implements OnInit, AfterViewInit, OnDestr userId: this.userId, variantId: this.variantId, variantName: this.variantNameInput ? this.variantNameInput : undefined, - variantOrigin: this.variantOriginInput ? this.variantOriginInput : undefined, - }, - { - fetchPolicy: 'network-only' + variantOrigin: this.variantOriginInput + ? this.variantOriginInput + : undefined, }); - this.initialSelectedEids.forEach(eid => this.selectedEvidenceIds.set(eid.id, eid)) - - let observable = this.queryRef.valueChanges; - - // handle loading state - observable - .pipe( - takeUntil(this.destroy$), - pluck('loading')) - .subscribe((l: boolean) => { this.isLoading = l; }); - - this.evidence$ = observable.pipe( - pluck('data', 'evidenceItems', 'edges'), - map((edges) => { return edges.map((e) => e.node); })); - - this.filteredCount$ = observable.pipe(pluck('data', 'evidenceItems', 'totalCount')); - - this.filteredCount$ - .pipe( - takeUntil(this.destroy$), - take(1)) - .subscribe(value => { - this.totalCount = value; - this.initialTotalCount.emit(value); + this.initialSelectedEids.forEach((eid) => + this.selectedEvidenceIds.set(eid.id, eid)) + + this.result$ = this.queryRef.valueChanges + + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + // entity relay connection + this.connection$ = this.result$ + .pipe(pluck('data', 'evidenceItems'), + filter(isNonNulled)) as Observable; + + // emit total counts + this.connection$ + .pipe(map(p => p.totalCount), + untilDestroyed(this)) + .subscribe(tc => this.initialTotalCount.next(tc)) + + // entity row nodes + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); }); - this.filteredCount$ - .pipe(takeUntil(this.destroy$)) - .subscribe(value => { - if (value < this.initialPageSize) { - this.visibleCount = value - } else { - this.visibleCount = this.initialPageSize + this.fetchMorePageSize * (this.loadedPages - 1) - if (this.visibleCount > value) { - this.visibleCount = value - } - } + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }); + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() }); - this.pageInfo$ = observable.pipe(pluck('data', 'evidenceItems', 'pageInfo')); - - this.debouncedQuery - .pipe( - takeUntil(this.destroy$), - debounceTime(500)) - .subscribe((_) => { - this.refresh() + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); + } }); - this.textInputCallback = () => { this.debouncedQuery.next(); } - - } - - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe(takeUntil(this.destroy$), - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }) - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }); - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { - this.viewport!.checkViewportSize(); - }); - - } else { - console.error('evidence-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit - - // filtering, sorting callbacks - onModelChanged() { this.debouncedQuery.next(); } - - onSortChanged(e: SortDirectionEvent) { - this.loadedPages = 1 - this.queryRef.refetch({ sortBy: buildSortParams(e), cardView: !this.tableView }) - } - - onEvidenceCheckboxClicked(newValue: boolean, eid: FormEvidence) { - if (newValue) { - this.selectedEvidenceIds.set(eid.id, eid) - } else { - this.selectedEvidenceIds.delete(eid.id) - } - this.selectedEids.emit(Array.from(this.selectedEvidenceIds.values())) - } - + } // ngOnInit refresh() { - this.isLoading = true; - this.loadedPages = 1; - var eid: Maybe + let eid: Maybe; if (this.eidInput) if (this.eidInput.toUpperCase().startsWith('EID')) { - eid = +(this.eidInput.toUpperCase().replace('EID', '')); - } - else { + eid = +this.eidInput.toUpperCase().replace('EID', ''); + } else { eid = +this.eidInput; } else { eid = undefined; } - this.queryRef.refetch({ - id: eid, - diseaseName: this.diseaseNameInput, - drugName: this.drugNameInput, - description: this.descriptionInput, - evidenceLevel: this.evidenceLevelInput ? this.evidenceLevelInput : undefined, - evidenceType: this.evidenceTypeInput ? this.evidenceTypeInput : undefined, - evidenceDirection: this.evidenceDirectionInput ? this.evidenceDirectionInput : undefined, - clinicalSignificance: this.clinicalSignificanceInput ? this.clinicalSignificanceInput : undefined, - variantOrigin: this.variantOriginInput ? this.variantOriginInput : undefined, - rating: this.evidenceRatingInput ? this.evidenceRatingInput : undefined, - geneSymbol: this.geneSymbolInput ? this.geneSymbolInput : undefined, - variantName: this.variantNameInput ? this.variantNameInput : undefined, - cardView: !this.tableView - }); - } + this.queryRef + .refetch({ + id: eid, + diseaseName: this.diseaseNameInput, + drugName: this.drugNameInput, + description: this.descriptionInput, + evidenceLevel: this.evidenceLevelInput + ? this.evidenceLevelInput + : undefined, + evidenceType: this.evidenceTypeInput + ? this.evidenceTypeInput + : undefined, + evidenceDirection: this.evidenceDirectionInput + ? this.evidenceDirectionInput + : undefined, + clinicalSignificance: this.clinicalSignificanceInput + ? this.clinicalSignificanceInput + : undefined, + variantOrigin: this.variantOriginInput + ? this.variantOriginInput + : undefined, + rating: this.evidenceRatingInput ? this.evidenceRatingInput : undefined, + geneSymbol: this.geneSymbolInput ? this.geneSymbolInput : undefined, + variantName: this.variantNameInput ? this.variantNameInput : undefined, + }) + .then(() => this.scrollIndex$.next(0)); - loadMore(afterCursor: Maybe): void { - this.isLoading = true; - this.queryRef.fetchMore({ - variables: { - first: this.fetchMorePageSize, - after: afterCursor - }, - }); + this.cdr.detectChanges() + } - this.loadedPages += 1 + onEvidenceCheckboxClicked(newValue: boolean, eid: FormEvidence) { + if (newValue) { + this.selectedEvidenceIds.set(eid.id, eid); + } else { + this.selectedEvidenceIds.delete(eid.id); + } + this.selectedEids.emit(Array.from(this.selectedEvidenceIds.values())); } - // virtual scroll helpers trackByIndex(_: number, data: EvidenceGridFieldsFragment): number { return data.id; } - - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.unsubscribe(); - } - - } diff --git a/client/src/app/components/evidence/evidence-table/evidence-table.module.ts b/client/src/app/components/evidence/evidence-table/evidence-table.module.ts index 2cb921eb1..79209e423 100644 --- a/client/src/app/components/evidence/evidence-table/evidence-table.module.ts +++ b/client/src/app/components/evidence/evidence-table/evidence-table.module.ts @@ -1,60 +1,68 @@ -import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { NzTableModule } from 'ng-zorro-antd/table'; -import { NzFormModule } from 'ng-zorro-antd/form'; -import { NzInputModule } from 'ng-zorro-antd/input'; -import { NzIconModule } from 'ng-zorro-antd/icon'; -import { NzTypographyModule } from 'ng-zorro-antd/typography'; +import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { ReactiveComponentModule } from '@ngrx/component'; -import { CvcTagOverflowModule } from '@app/components/shared/tag-overflow/tag-overflow.module'; - -import { CvcEvidenceTableComponent } from './evidence-table.component'; -import { CvcGeneTagModule } from '@app/components/genes/gene-tag/gene-tag.module'; -import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; -import { CvcVariantTagModule } from '@app/components/variants/variant-tag/variant-tag.module'; import { CvcDiseaseTagModule } from '@app/components/diseases/cvc-disease-tag/cvc-disease-tag.module'; import { CvcDrugTagModule } from '@app/components/drugs/cvc-drug-tag/cvc-drug-tag.module'; -import { CvcEvidenceTagModule } from '../evidence-tag/evidence-tag.module'; -import { NzSelectModule } from 'ng-zorro-antd/select'; +import { CvcGeneTagModule } from '@app/components/genes/gene-tag/gene-tag.module'; import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; -import { CvcPipesModule } from '@app/core/pipes/pipes.module'; -import { NzButtonModule } from 'ng-zorro-antd/button'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; import { CvcTagListModule } from '@app/components/shared/tag-list/tag-list.module'; -import { NzCheckboxModule } from 'ng-zorro-antd/checkbox'; -import { NzCardModule } from 'ng-zorro-antd/card'; +import { CvcTagOverflowModule } from '@app/components/shared/tag-overflow/tag-overflow.module'; +import { CvcVariantTagModule } from '@app/components/variants/variant-tag/variant-tag.module'; +import { CvcPipesModule } from '@app/core/pipes/pipes.module'; import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; +import { ReactiveComponentModule } from '@ngrx/component'; +import { NzButtonModule } from 'ng-zorro-antd/button'; +import { NzCardModule } from 'ng-zorro-antd/card'; +import { NzCheckboxModule } from 'ng-zorro-antd/checkbox'; +import { NzFormModule } from 'ng-zorro-antd/form'; +import { NzIconModule } from 'ng-zorro-antd/icon'; +import { NzInputModule } from 'ng-zorro-antd/input'; +import { NzSelectModule } from 'ng-zorro-antd/select'; +import { NzTableModule } from 'ng-zorro-antd/table'; import { NzTagModule } from 'ng-zorro-antd/tag'; +import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; +import { NzTypographyModule } from 'ng-zorro-antd/typography'; +import { CvcEvidenceTagModule } from '../evidence-tag/evidence-tag.module'; +import { CvcEvidenceTableComponent } from './evidence-table.component'; + @NgModule({ declarations: [CvcEvidenceTableComponent], imports: [ CommonModule, - FormsModule, ReactiveComponentModule, + FormsModule, + NzButtonModule, - NzTableModule, + NzCardModule, + NzCheckboxModule, NzFormModule, - NzInputModule, NzIconModule, - NzTypographyModule, - NzToolTipModule, + NzInputModule, NzSelectModule, - NzCheckboxModule, - NzCardModule, + NzTableModule, NzTagModule, + NzToolTipModule, + NzTypographyModule, + CvcAutoHeightCardModule, CvcAutoHeightTableModule, - CvcPipesModule, - CvcGeneTagModule, - CvcVariantTagModule, + CvcClearableInputFilterModule, CvcDiseaseTagModule, CvcDrugTagModule, CvcEvidenceTagModule, + CvcGeneTagModule, + CvcPipesModule, + CvcNoMoreRowsModule, + CvcTableCountsModule, + CvcTableScrollModule, CvcTagListModule, CvcTagOverflowModule, - CvcClearableInputFilterModule, + CvcVariantTagModule, ], exports: [CvcEvidenceTableComponent] }) diff --git a/client/src/app/components/evidence/evidence-table/evidence-table.query.gql b/client/src/app/components/evidence/evidence-table/evidence-table.query.gql index 02e23e0fc..b862bd21a 100644 --- a/client/src/app/components/evidence/evidence-table/evidence-table.query.gql +++ b/client/src/app/components/evidence/evidence-table/evidence-table.query.gql @@ -26,7 +26,6 @@ query EvidenceBrowse( $geneSymbol: String, $variantName: String $status: EvidenceStatusFilter - $cardView: Boolean! ) { evidenceItems( first: $first @@ -97,28 +96,6 @@ fragment EvidenceGridFields on EvidenceItem { name link } - phenotypes @include(if: $cardView) { - id - name - link - } - source @include(if: $cardView) { - id - citation - citationId - sourceType - sourceUrl - clinicalTrials { - nctId - id - } - link - } - assertions @include(if: $cardView) { - id - name - link - } status drugInteractionType description @@ -128,4 +105,4 @@ fragment EvidenceGridFields on EvidenceItem { evidenceRating clinicalSignificance variantOrigin -} \ No newline at end of file +} diff --git a/client/src/app/components/flags/flag-popover/flag-popover.component.ts b/client/src/app/components/flags/flag-popover/flag-popover.component.ts index 83f19dbdb..37a337f05 100644 --- a/client/src/app/components/flags/flag-popover/flag-popover.component.ts +++ b/client/src/app/components/flags/flag-popover/flag-popover.component.ts @@ -1,7 +1,8 @@ import { Component, Input, OnInit } from "@angular/core"; import { FlagPopoverFragment, FlagPopoverGQL, Maybe } from "@app/generated/civic.apollo"; -import { pluck } from 'rxjs/operators' import { Observable } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, map } from 'rxjs/operators'; @Component({ selector: 'cvc-flag-popover', @@ -21,6 +22,7 @@ export class CvcFlagPopoverComponent implements OnInit { } this.flag$ = this.gql.watch({ flagId: this.flagId }) .valueChanges - .pipe(pluck('data', 'flag')) + .pipe(map(({ data }) => data?.flag), + filter(isNonNulled)); } } diff --git a/client/src/app/components/genes/gene-popover/gene-popover.component.ts b/client/src/app/components/genes/gene-popover/gene-popover.component.ts index 23e24ec11..3dcaa3842 100644 --- a/client/src/app/components/genes/gene-popover/gene-popover.component.ts +++ b/client/src/app/components/genes/gene-popover/gene-popover.component.ts @@ -1,7 +1,8 @@ import { Component, Input, OnInit } from "@angular/core"; import { GenePopoverFragment, GenePopoverGQL, Maybe } from "@app/generated/civic.apollo"; -import { map } from 'rxjs/operators' import { Observable } from 'rxjs'; +import { isNonNulled } from "rxjs-etc"; +import { filter, map } from 'rxjs/operators'; @Component({ selector: 'cvc-gene-popover', @@ -21,6 +22,7 @@ export class CvcGenePopoverComponent implements OnInit { } this.gene$ = this.gql.watch({ geneId: this.geneId }) .valueChanges - .pipe(map(({ data }) => data.gene)) + .pipe(map(({ data }) => data?.gene), + filter(isNonNulled)); } } diff --git a/client/src/app/components/genes/genes-table/genes-table.component.html b/client/src/app/components/genes/genes-table/genes-table.component.html index d360411f4..574ac0df8 100644 --- a/client/src/app/components/genes/genes-table/genes-table.component.html +++ b/client/src/app/components/genes/genes-table/genes-table.component.html @@ -17,25 +17,30 @@ + nzSize="small"> - + - + + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -133,15 +138,19 @@ [tags]="gene.drugs" [matchingText]="drugInput"> - {{gene.variantCount}} - {{gene.evidenceItemCount}} - {{gene.assertionCount}} + {{gene.variantCount}} + {{gene.evidenceItemCount}} + {{gene.assertionCount}} + @@ -151,24 +160,19 @@ {{ this.cvcTitle }} - - ({{ totalCount | number }} total, showing {{ visibleCount | number }} of {{ filteredCount | number }} filtered) + + - - - (0 total) - - + - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/genes/genes-table/genes-table.component.ts b/client/src/app/components/genes/genes-table/genes-table.component.ts index ab11976ba..139ac4dca 100644 --- a/client/src/app/components/genes/genes-table/genes-table.component.ts +++ b/client/src/app/components/genes/genes-table/genes-table.component.ts @@ -1,26 +1,22 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, TemplateRef, ViewChild, } from '@angular/core'; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { BehaviorSubject, interval, Observable, Subject } from 'rxjs'; -import {debounceTime, filter, first, tap, map, pairwise, pluck, startWith, take, takeUntil, throttleTime, withLatestFrom,} from 'rxjs/operators'; -import { QueryRef } from 'apollo-angular'; - -import {BrowseGenesGQL, GeneBrowseTableRowFieldsFragment, QueryBrowseGenesArgs, PageInfo, Maybe, BrowseGenesQuery, GenesSortColumns,} from '@app/generated/civic.apollo'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, TemplateRef } from '@angular/core'; import { ApolloQueryResult } from '@apollo/client/core'; -import { buildSortParams, SortDirectionEvent, WithName } from '@app/core/utilities/datatable-helpers'; -import { NzTableComponent } from 'ng-zorro-antd/table'; - -export interface GeneTableRow { - id: number - entrezId: number - name: string - aliases?: Maybe - diseases?: Maybe - drugs?: Maybe - variantCount: number - evidenceItemCount: number - assertionCount: number +import { buildSortParams, SortDirectionEvent } from '@app/core/utilities/datatable-helpers'; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; +import { BrowseGeneConnection, BrowseGenesFieldsFragment, BrowseGenesGQL, BrowseGenesQuery, BrowseGenesQueryVariables, GenesSortColumns, Maybe, PageInfo } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; +import { QueryRef } from 'apollo-angular'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, withLatestFrom } from 'rxjs/operators'; + +export interface BrowseGenesTableUserFilters { + diseaseInput?: Maybe + drugInput?: Maybe + nameInput?: Maybe + aliasInput?: Maybe } +@UntilDestroy() @Component({ selector: 'cvc-genes-table', templateUrl: './genes-table.component.html', @@ -31,27 +27,34 @@ export class CvcGenesTableComponent implements OnInit { @Input() cvcHeight?: number @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe + @Input() initialPageSize: number = 35 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent; - viewport?: CdkVirtualScrollViewport; - - private initialQueryArgs?: QueryBrowseGenesArgs - private debouncedQuery = new Subject(); - - queryRef?: QueryRef; - data$?: Observable>; - genes$?: Observable[]>; - filteredCount$?: Observable - pageCount$?: Observable; - pageInfo$?: Observable; + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject - isLoading$?: Observable; - isLoading = false; + // INTERMEDIATE STREAMS + queryRef!: QueryRef + result$!: Observable> + connection$!: Observable + pageInfo$!: Observable - textInputCallback?: () => void + // PRESENTATION STREAMS + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject - showTooltips = true; + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling: boolean = false // filters diseaseInput: Maybe @@ -61,188 +64,98 @@ export class CvcGenesTableComponent implements OnInit { sortColumns: typeof GenesSortColumns = GenesSortColumns - totalCount?: number - initialPageSize = 35; - visibleCount: number = this.initialPageSize - fetchMorePageSize = 25; - isLoadingDelay = 300; - - noMoreRows$: BehaviorSubject; - - loadedPages: number = 1 - - private destroy$ = new Subject(); - + private debouncedQuery = new Subject() constructor(private query: BrowseGenesGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() } ngOnInit() { - this.initialQueryArgs = { - first: this.initialPageSize - } - - this.queryRef = this.query.watch(this.initialQueryArgs, { fetchPolicy: 'network-only' }); - - this.data$ = this.queryRef.valueChanges.pipe( - map((r) => { - return { - data: r.data, - loading: r.loading, - networkStatus: r.networkStatus - }; - })); - - // handle loading state - this.data$ - .pipe( - takeUntil(this.destroy$), - pluck('loading'), - startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l; }); - - this.genes$ = this.data$ - .pipe( - pluck('data', 'browseGenes', 'edges'), - map((edges) => { - return edges.map((e) => { return e.node; }) - })); - - this.pageInfo$ = this.data$ - .pipe(pluck('data', 'browseGenes', 'pageInfo')); - - this.filteredCount$ = this.data$ - .pipe(pluck('data', 'browseGenes', 'filteredCount')); - - this.data$ - .pipe( - takeUntil(this.destroy$), - pluck('data', 'browseGenes', 'totalCount'), - take(1)) - .subscribe(value => this.totalCount = value); - - this.filteredCount$ - .subscribe(value => { - if (value < this.initialPageSize) { - this.visibleCount = value - } - else { - this.visibleCount = this.initialPageSize + this.fetchMorePageSize * (this.loadedPages - 1) - if (this.visibleCount > value) { - this.visibleCount = value - } - } + this.queryRef = this.query.watch({ first: this.initialPageSize }) + + this.result$ = this.queryRef.valueChanges + + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)) + + this.connection$ = this.result$ + .pipe(pluck('data', 'browseGenes'), + filter(isNonNulled)) as Observable; + + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); }); - this.pageCount$ = this.data$ - .pipe( - pluck('data', 'browseGenes', 'pageCount'), - startWith(0)); - - this.debouncedQuery - .pipe( - takeUntil(this.destroy$), - debounceTime(500)) - .subscribe((_) => { - this.isLoading = true; - this.loadedPages = 1; - this.queryRef?.refetch({ - entrezSymbol: this.nameInput, - geneAlias: this.aliasInput, - diseaseName: this.diseaseInput, - drugName: this.drugInput, - }); + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }) + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() + }) + + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); + } }); - - this.textInputCallback = () => { this.debouncedQuery.next(); } } // ngOnInit() - ngAfterViewInit(): void { - if (this.nzTableComponent - && this.nzTableComponent.cdkVirtualScrollViewport - && this.pageInfo$) { - - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe( - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }) - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }) - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('evidence-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit - - - loadMore(afterCursor: Maybe): void { - this.isLoading = true; - this.queryRef?.fetchMore({ - variables: { - first: this.fetchMorePageSize, - after: afterCursor - }, - }); - - this.loadedPages += 1 - } - - onSortChanged(e: SortDirectionEvent) { - this.loadedPages = 1 - this.queryRef?.refetch({ - ...this.initialQueryArgs, - sortBy: buildSortParams(e), - }); + refresh() { + this.queryRef + .refetch({ + entrezSymbol: this.nameInput, + geneAlias: this.aliasInput, + diseaseName: this.diseaseInput, + drugName: this.drugInput, + }) + .then(() => this.scrollIndex$.next(0)); + + this.cdr.detectChanges() } onModelUpdated(_: Maybe) { @@ -250,16 +163,8 @@ export class CvcGenesTableComponent implements OnInit { } // virtual scroll helpers - trackByIndex(_: number, data: GeneBrowseTableRowFieldsFragment): number { + trackByIndex(_: number, data: BrowseGenesFieldsFragment): number { return data.id; } - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.unsubscribe(); - } } diff --git a/client/src/app/components/genes/genes-table/genes-table.module.ts b/client/src/app/components/genes/genes-table/genes-table.module.ts index c6fabe74b..f7309ef3b 100644 --- a/client/src/app/components/genes/genes-table/genes-table.module.ts +++ b/client/src/app/components/genes/genes-table/genes-table.module.ts @@ -18,6 +18,9 @@ import { NzTagModule } from 'ng-zorro-antd/tag'; import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; @NgModule({ declarations: [CvcGenesTableComponent], @@ -25,21 +28,26 @@ import { CvcClearableInputFilterModule } from '@app/components/shared/clearable- CommonModule, FormsModule, ReactiveComponentModule, - NzTableModule, + + NzButtonModule, + NzCardModule, NzFormModule, - NzInputModule, NzIconModule, - NzTypographyModule, - NzCardModule, - NzButtonModule, - NzToolTipModule, + NzInputModule, + NzTableModule, NzTagModule, - CvcClearableInputFilterModule, + NzToolTipModule, + NzTypographyModule, + CvcAutoHeightCardModule, CvcAutoHeightTableModule, + CvcClearableInputFilterModule, CvcGeneTagModule, + CvcNoMoreRowsModule, + CvcPlainTagOverflowModule, + CvcTableCountsModule, + CvcTableScrollModule, CvcTagOverflowModule, - CvcPlainTagOverflowModule ], exports: [CvcGenesTableComponent] }) diff --git a/client/src/app/components/genes/genes-table/genes-table.query.gql b/client/src/app/components/genes/genes-table/genes-table.query.gql index f7fe23c32..c1ccd3101 100644 --- a/client/src/app/components/genes/genes-table/genes-table.query.gql +++ b/client/src/app/components/genes/genes-table/genes-table.query.gql @@ -23,7 +23,7 @@ query BrowseGenes( edges { cursor node { - ...GeneBrowseTableRowFields + ...BrowseGenesFields } } pageInfo { @@ -38,7 +38,7 @@ query BrowseGenes( } } -fragment GeneBrowseTableRowFields on BrowseGene { +fragment BrowseGenesFields on BrowseGene { id entrezId name diff --git a/client/src/app/components/layout/quicksearch/quicksearch-component.html b/client/src/app/components/layout/quicksearch/quicksearch-component.html index 092acd890..a6fd83ed6 100644 --- a/client/src/app/components/layout/quicksearch/quicksearch-component.html +++ b/client/src/app/components/layout/quicksearch/quicksearch-component.html @@ -1,22 +1,33 @@ - - - - - - - - - - - - -  
- -
-
-
-
-
\ No newline at end of file + + + + + + — + + + + + Loading Data... + + diff --git a/client/src/app/components/layout/quicksearch/quicksearch-component.less b/client/src/app/components/layout/quicksearch/quicksearch-component.less index e69de29bb..0fe6e7508 100644 --- a/client/src/app/components/layout/quicksearch/quicksearch-component.less +++ b/client/src/app/components/layout/quicksearch/quicksearch-component.less @@ -0,0 +1,7 @@ +::host { + display: block; +} + +nz-select { + width: 100%; +} diff --git a/client/src/app/components/layout/quicksearch/quicksearch-component.ts b/client/src/app/components/layout/quicksearch/quicksearch-component.ts index a0d921c96..b5ee3e05b 100644 --- a/client/src/app/components/layout/quicksearch/quicksearch-component.ts +++ b/client/src/app/components/layout/quicksearch/quicksearch-component.ts @@ -1,41 +1,106 @@ -import { Component, OnDestroy, OnInit } from "@angular/core"; +import { Component, ViewChild } from "@angular/core"; import { Router } from "@angular/router"; +import { ApolloQueryResult } from "@apollo/client/core"; import { Maybe, QuicksearchGQL, QuicksearchQuery, QuicksearchQueryVariables, QuicksearchResultFragment, SearchableEntities, SearchResult } from "@app/generated/civic.apollo"; import { QueryRef } from "apollo-angular"; -import { Subject, Observable } from "rxjs"; -import { debounceTime, pluck } from "rxjs/operators"; +import { NzSelectComponent } from "ng-zorro-antd/select"; +import { asyncScheduler, defer, from, iif, Observable, Subject } from "rxjs"; +import { isNonNulled } from "rxjs-etc/dist/esm/util"; +import { distinctUntilChanged, filter, map, skip, switchMap, throttleTime } from "rxjs/operators"; + +export interface QuicksearchOption { + text: string + value: string + result: SearchResult +} @Component({ selector: 'cvc-quicksearch', styleUrls: ['./quicksearch-component.less'], templateUrl: './quicksearch-component.html' }) -export class CvcQuicksearchComponent implements OnInit { +export class CvcQuicksearchComponent { + + private _selectedOpt: Maybe + set selectedOpt(s: Maybe) { this._selectedOpt = s } + get selectedOpt(): Maybe { return this._selectedOpt } + + // get component ref to be able to clear it on select, + // as described here: https://github.com/NG-ZORRO/ng-zorro-antd/issues/3097 + @ViewChild(NzSelectComponent, { static: true }) selectNode!: NzSelectComponent; - searchQuery: string = "" - searchResults$: Maybe[]>> + // SOURCE STREAMS + onSearch$: Subject + onSelect$: Subject + // INTERMEDIATE STREAMS queryRef!: QueryRef + response$: Observable> + result$: Observable[]> - constructor(private gql: QuicksearchGQL, private router: Router) {} + // PRESENTATION STREAMS + option$: Observable + isLoading$: Observable - ngOnInit() { - this.queryRef = this.gql.watch({ query: this.searchQuery }) - let observable = this.queryRef.valueChanges + constructor(private gql: QuicksearchGQL, private router: Router) { + this.onSearch$ = new Subject() + this.onSelect$ = new Subject() - this.searchResults$ = observable.pipe(pluck('data', 'search')) - } + this.response$ = this.onSearch$ + .pipe(skip(1), // drop initial empty string from input init + throttleTime(300, asyncScheduler, { leading: false, trailing: true }), + switchMap((str: string) => { + // if queryRef doesn't exist, create it with watchQuery observable + // if it does, refetch with fetchQuery observable. + // using defer() ensures functions are not called until + // values are emitted. otherwise they'll be called on subscribe. + return iif( + () => this.queryRef === undefined, // predicate + defer(() => watchQuery(str)), // true + defer(() => fetchQuery(str))); // false + })); + + this.isLoading$ = this.response$ + .pipe(map(r => r.loading), + filter(isNonNulled), + distinctUntilChanged()); + + this.result$ = this.response$ + .pipe(map(resp => resp.data?.search), + filter(isNonNulled)); + + this.option$ = this.result$ + .pipe(map((res) => { + const opts: QuicksearchOption[] = [] + res.forEach((r) => { + if (r) opts.push({ text: r.name, value: r.id.toString(), result: r }) + }) + return opts + })); + + // on option select, navigate to selected entity page, clear select model + this.onSelect$.subscribe(() => { + if (this.selectedOpt) this.router.navigateByUrl(this.urlForResult(this.selectedOpt)) + this.selectNode.writeValue(undefined) + }) + + // set queryRef with watch(), return its valueChanges observable + const watchQuery = (str: string) => { + this.queryRef = this.gql.watch({ query: str }) + return this.queryRef.valueChanges + } + + // return observable from refetch() promise + const fetchQuery = (str: string) => from(this.queryRef.refetch({ query: str })) - refresh() { - this.queryRef.refetch({query: this.searchQuery}) } iconNameForResult(res: SearchResult): string { - switch(res.resultType) { + switch (res.resultType) { case SearchableEntities.EvidenceItem: - return 'civic:evidence'; + return 'civic:evidence'; case SearchableEntities.VariantGroup: - return 'civic:variantgroup'; + default: return `civic:${res.resultType.toLowerCase()}` } @@ -43,7 +108,7 @@ export class CvcQuicksearchComponent implements OnInit { urlForResult(res: SearchResult): string { let name: string - switch(res.resultType) { + switch (res.resultType) { case SearchableEntities.VariantGroup: name = 'variant-groups'; break; @@ -57,9 +122,4 @@ export class CvcQuicksearchComponent implements OnInit { return `/${name}/${res.id}/summary` } - quicksearchSelected (e: Event) { - let value = (e.target as HTMLInputElement).value; - this.searchQuery = "" - this.router.navigate([value]) - } } diff --git a/client/src/app/components/layout/quicksearch/quicksearch.module.ts b/client/src/app/components/layout/quicksearch/quicksearch.module.ts index a4edfc202..66a756d09 100644 --- a/client/src/app/components/layout/quicksearch/quicksearch.module.ts +++ b/client/src/app/components/layout/quicksearch/quicksearch.module.ts @@ -8,6 +8,8 @@ import { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete'; import { RouterModule } from '@angular/router'; import { ReactiveComponentModule } from '@ngrx/component'; import { FormsModule } from '@angular/forms'; +import { NzSelectModule } from 'ng-zorro-antd/select'; +import { NzTypographyModule } from 'ng-zorro-antd/typography'; @NgModule({ declarations: [CvcQuicksearchComponent], @@ -16,6 +18,8 @@ import { FormsModule } from '@angular/forms'; FormsModule, RouterModule, ReactiveComponentModule, + NzTypographyModule, + NzSelectModule, NzInputModule, NzFormModule, NzIconModule, diff --git a/client/src/app/components/organizations/organization-popover/organization-popover.component.ts b/client/src/app/components/organizations/organization-popover/organization-popover.component.ts index 11767cf3a..85c063093 100644 --- a/client/src/app/components/organizations/organization-popover/organization-popover.component.ts +++ b/client/src/app/components/organizations/organization-popover/organization-popover.component.ts @@ -1,11 +1,8 @@ import { Component, Input, OnInit } from '@angular/core'; -import { - OrgPopoverFragment, - Maybe, - OrgPopoverGQL, -} from '@app/generated/civic.apollo'; -import { map } from 'rxjs/operators'; +import { Maybe, OrgPopoverFragment, OrgPopoverGQL } from '@app/generated/civic.apollo'; import { Observable } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, map } from 'rxjs/operators'; @Component({ selector: 'cvc-organization-popover', @@ -26,6 +23,8 @@ export class CvcOrganizationPopoverComponent implements OnInit { this.org$ = this.gql .watch({ orgId: this.orgId }) - .valueChanges.pipe(map(({ data }) => data.organization)); + .valueChanges + .pipe(map(({ data }) => data?.organization), + filter(isNonNulled)); } } diff --git a/client/src/app/components/organizations/organizations-table/organizations-table.component.html b/client/src/app/components/organizations/organizations-table/organizations-table.component.html index 8ee1a47d4..8beb7c6b5 100644 --- a/client/src/app/components/organizations/organizations-table/organizations-table.component.html +++ b/client/src/app/components/organizations/organizations-table/organizations-table.component.html @@ -25,15 +25,20 @@ - + Sub Organizations - + Actions - + Last Action - + + (inputModelChange)="filterChange$.next()"> @@ -83,54 +91,48 @@ {{ organization.memberCount | number }} - + - + {{ organization.eventCount | number}} - + {{ organization.mostRecentEvent?.createdAt | timeago }} - - - - - - - -
+ - + {{ this.cvcTitle }} - - ({{totalCount}} total, showing {{visibleCount}} of {{filteredCount}} filtered) + + + - - - (0 total) - - + - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/organizations/organizations-table/organizations-table.component.ts b/client/src/app/components/organizations/organizations-table/organizations-table.component.ts index e016359b4..68a07d3dc 100644 --- a/client/src/app/components/organizations/organizations-table/organizations-table.component.ts +++ b/client/src/app/components/organizations/organizations-table/organizations-table.component.ts @@ -1,211 +1,158 @@ -import { AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core'; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { Maybe, OrganizationBrowseTableRowFieldsFragment, OrganizationsBrowseGQL, OrganizationsBrowseQuery, OrganizationsBrowseQueryVariables, OrganizationSortColumns, PageInfo } from '@app/generated/civic.apollo'; +import { ChangeDetectorRef, Component, Input, OnInit, TemplateRef } from '@angular/core'; +import { ApolloQueryResult } from '@apollo/client/core'; import { buildSortParams, SortDirectionEvent } from '@app/core/utilities/datatable-helpers'; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; +import { Maybe, OrganizationBrowseTableRowFieldsFragment, OrganizationConnection, OrganizationsBrowseGQL, OrganizationsBrowseQuery, OrganizationsBrowseQueryVariables, OrganizationSortColumns, PageInfo } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { QueryRef } from 'apollo-angular'; -import { BehaviorSubject, interval, Observable, Subject } from 'rxjs'; -import { startWith, pluck, map, debounceTime, take, takeUntil, withLatestFrom, pairwise, filter, throttleTime, first, tap } from 'rxjs/operators'; -import { NzTableComponent } from 'ng-zorro-antd/table'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, withLatestFrom } from 'rxjs/operators'; +export interface OrganizationsTableFilters { + orgNameInput?: Maybe + idInput?: Maybe +} + +@UntilDestroy() @Component({ selector: 'cvc-organizations-table', templateUrl: './organizations-table.component.html', styleUrls: ['./organizations-table.component.less'] }) -export class CvcOrganizationsTableComponent implements OnInit, OnDestroy, AfterViewInit { +export class CvcOrganizationsTableComponent implements OnInit { @Input() cvcHeight?: number @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe + @Input() initialPageSize = 35 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent; - viewport?: CdkVirtualScrollViewport; - - private queryRef!: QueryRef - private debouncedQuery = new Subject(); - - isLoading$?: Observable - isLoading = false - organizations$?: Observable[]> - filteredCount$?: Observable - pageInfo$?: Observable - - showTooltips = true; - - tableView: boolean = true - - totalCount?: number - initialPageSize = 35; - visibleCount: number = this.initialPageSize - fetchMorePageSize = 25; - isLoadingDelay = 300; - - loadedPages: number = 1 - - textInputCallback?: () => void - - //filters + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject + + // INTERMEDIATE STREAMS + queryRef!: QueryRef + result$!: Observable> + connection$!: Observable + + // PRESENTATION STREAMS + pageInfo$!: Observable + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject + + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling = false + + // filters orgNameInput: Maybe idInput: Maybe - sortColumns: typeof OrganizationSortColumns = OrganizationSortColumns - - noMoreRows$: BehaviorSubject; - private destroy$ = new Subject(); + sortColumns = OrganizationSortColumns constructor(private gql: OrganizationsBrowseGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() } ngOnInit() { this.queryRef = this.gql.watch({ first: this.initialPageSize, - cardView: !this.tableView }); - let observable = this.queryRef.valueChanges; - - this.isLoading$ = observable.pipe( - pluck('loading'), startWith(true) - ); - - observable - .pipe(takeUntil(this.destroy$), - pluck('loading'), startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l }); - - this.organizations$ = observable.pipe( - pluck('data', 'organizations', 'edges'), - map((edges) => { - return edges.map((e) => e.node) + this.result$ = this.queryRef.valueChanges + + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + // entity relay connection + this.connection$ = this.result$ + .pipe(pluck('data', 'organizations'), + filter(isNonNulled)) as Observable; + + // entity row nodes + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); + }); + + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }) + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() }) - ); - - this.filteredCount$ = observable.pipe( - pluck('data', 'organizations', 'totalCount') - ) - this.filteredCount$.pipe(take(1)).subscribe(value => this.totalCount = value); - - this.filteredCount$.subscribe( - value => { - if (value < this.initialPageSize) { - this.visibleCount = value - } - else { - this.visibleCount = this.initialPageSize + this.fetchMorePageSize * (this.loadedPages - 1) - if (this.visibleCount > value) { - this.visibleCount = value - } + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); } - } - ) - - this.pageInfo$ = observable.pipe( - pluck('data', 'organizations', 'pageInfo') - ); - - this.debouncedQuery - .pipe(takeUntil(this.destroy$), - debounceTime(500)) - .subscribe((_) => this.refresh()); + }); - this.textInputCallback = () => { this.debouncedQuery.next(); } } // ngOnInit - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe( - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }); - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }) - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('variants-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit - refresh() { - this.isLoading = true - this.loadedPages = 1 - this.queryRef.refetch({ - orgName: this.orgNameInput, - id: this.idInput ? +this.idInput : undefined, - cardView: !this.tableView - }) - } - - onModelChanged() { this.debouncedQuery.next(); } - - onSortChanged(e: SortDirectionEvent) { - this.isLoading = true - this.loadedPages = 1 - this.queryRef.refetch({ sortBy: buildSortParams(e), cardView: !this.tableView }) - } - - loadMore(afterCursor: Maybe): void { - this.isLoading = true - this.queryRef?.fetchMore({ - variables: { - first: this.fetchMorePageSize, - after: afterCursor - }, - }); + this.queryRef + .refetch({ + orgName: this.orgNameInput, + id: this.idInput ? +this.idInput : undefined, + }) + .then(() => this.scrollIndex$.next(0)); - this.loadedPages += 1 + this.cdr.detectChanges() } // virtual scroll helpers @@ -213,10 +160,4 @@ export class CvcOrganizationsTableComponent implements OnInit, OnDestroy, AfterV return data.id; } - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - ngOnDestroy() { this.debouncedQuery.unsubscribe(); } - } diff --git a/client/src/app/components/organizations/organizations-table/organizations-table.module.ts b/client/src/app/components/organizations/organizations-table/organizations-table.module.ts index 76b65107f..d1b645b80 100644 --- a/client/src/app/components/organizations/organizations-table/organizations-table.module.ts +++ b/client/src/app/components/organizations/organizations-table/organizations-table.module.ts @@ -1,27 +1,29 @@ -import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { CvcOrganizationsTableComponent } from './organizations-table.component'; -import { NzIconModule } from 'ng-zorro-antd/icon'; -import { NzTableModule } from 'ng-zorro-antd/table'; +import { NgModule } from '@angular/core'; import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; -import { CvcOrganizationTagModule } from '../organization-tag/organization-tag.module'; -import { ReactiveComponentModule } from '@ngrx/component'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; import { CvcTagOverflowModule } from '@app/components/shared/tag-overflow/tag-overflow.module'; -import { TimeagoModule } from 'ngx-timeago'; -import { NzButtonModule } from 'ng-zorro-antd/button'; -import { NzCardModule } from 'ng-zorro-antd/card'; -import { NzTypographyModule } from 'ng-zorro-antd/typography'; import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; +import { ReactiveComponentModule } from '@ngrx/component'; +import { NzButtonModule } from 'ng-zorro-antd/button'; +import { NzCardModule } from 'ng-zorro-antd/card'; +import { NzIconModule } from 'ng-zorro-antd/icon'; +import { NzTableModule } from 'ng-zorro-antd/table'; import { NzTagModule } from 'ng-zorro-antd/tag'; - - +import { NzTypographyModule } from 'ng-zorro-antd/typography'; +import { TimeagoModule } from 'ngx-timeago'; +import { CvcOrganizationTagModule } from '../organization-tag/organization-tag.module'; +import { CvcOrganizationsTableComponent } from './organizations-table.component'; @NgModule({ declarations: [CvcOrganizationsTableComponent], imports: [ CommonModule, ReactiveComponentModule, + NzIconModule, NzTableModule, NzButtonModule, @@ -29,6 +31,10 @@ import { NzTagModule } from 'ng-zorro-antd/tag'; NzIconModule, NzTypographyModule, NzTagModule, + + CvcNoMoreRowsModule, + CvcTableCountsModule, + CvcTableScrollModule, CvcAutoHeightCardModule, CvcAutoHeightTableModule, CvcClearableInputFilterModule, diff --git a/client/src/app/components/organizations/organizations-table/organizations-table.query.gql b/client/src/app/components/organizations/organizations-table/organizations-table.query.gql index 54212834a..974c756a6 100644 --- a/client/src/app/components/organizations/organizations-table/organizations-table.query.gql +++ b/client/src/app/components/organizations/organizations-table/organizations-table.query.gql @@ -6,7 +6,6 @@ query OrganizationsBrowse ( $id: Int $orgName: String $sortBy: OrganizationSort - $cardView: Boolean! ) { organizations( first: $first @@ -36,8 +35,8 @@ query OrganizationsBrowse ( fragment OrganizationBrowseTableRowFields on Organization { id name - description @include(if: $cardView) - profileImagePath(size: 256) @include(if: $cardView) + description + # profileImagePath(size: 256) @include(if: $cardView) url memberCount eventCount @@ -48,14 +47,14 @@ fragment OrganizationBrowseTableRowFields on Organization { mostRecentEvent { createdAt } - orgStatsHash @include(if: $cardView) { - comments - revisions - appliedRevisions - submittedEvidenceItems - acceptedEvidenceItems - suggestedSources - submittedAssertions - acceptedAssertions - } + # orgStatsHash @include(if: $cardView) { + # comments + # revisions + # appliedRevisions + # submittedEvidenceItems + # acceptedEvidenceItems + # suggestedSources + # submittedAssertions + # acceptedAssertions + # } } diff --git a/client/src/app/components/phenotypes/phenotype-popover/phenotype-popover.component.ts b/client/src/app/components/phenotypes/phenotype-popover/phenotype-popover.component.ts index 7ad6385cb..71c70660d 100644 --- a/client/src/app/components/phenotypes/phenotype-popover/phenotype-popover.component.ts +++ b/client/src/app/components/phenotypes/phenotype-popover/phenotype-popover.component.ts @@ -1,8 +1,8 @@ import { Component, Input, OnInit } from "@angular/core"; import { Maybe, PhenotypePopover, PhenotypePopoverGQL } from "@app/generated/civic.apollo"; -import { map } from 'rxjs/operators' import { Observable } from 'rxjs'; - +import { isNonNulled } from "rxjs-etc"; +import { filter, map } from 'rxjs/operators'; @Component({ selector: 'cvc-phenotype-popover', @@ -22,6 +22,7 @@ export class CvcPhenotypePopoverComponent implements OnInit { } this.phenotype$ = this.gql.watch({ phenotypeId: this.phenotypeId }) .valueChanges - .pipe(map(({ data }) => data.phenotypePopover)) + .pipe(map(({ data }) => data?.phenotypePopover), + filter(isNonNulled)); } } diff --git a/client/src/app/components/phenotypes/phenotypes-table/phenotypes-table.component.html b/client/src/app/components/phenotypes/phenotypes-table/phenotypes-table.component.html index 85a663dff..693769952 100644 --- a/client/src/app/components/phenotypes/phenotypes-table/phenotypes-table.component.html +++ b/client/src/app/components/phenotypes/phenotypes-table/phenotypes-table.component.html @@ -27,15 +27,20 @@ - + + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -113,6 +116,7 @@ + @@ -121,21 +125,20 @@ {{ this.cvcTitle }} - - ({{ totalCount | number }} total, showing {{ visibleCount | number }} of {{ filteredCount | number }} filtered) + + + - - - (0 total) - - + - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/phenotypes/phenotypes-table/phenotypes-table.component.ts b/client/src/app/components/phenotypes/phenotypes-table/phenotypes-table.component.ts index 69fcb209e..566a42337 100644 --- a/client/src/app/components/phenotypes/phenotypes-table/phenotypes-table.component.ts +++ b/client/src/app/components/phenotypes/phenotypes-table/phenotypes-table.component.ts @@ -1,229 +1,161 @@ -import { AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core'; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { Maybe, PageInfo, PhenotypeBrowseTableRowFieldsFragment, PhenotypesBrowseGQL, PhenotypesBrowseQuery, PhenotypesBrowseQueryVariables, PhenotypeSortColumns } from '@app/generated/civic.apollo'; +import { AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef } from '@angular/core'; +import { ApolloQueryResult } from '@apollo/client/core'; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; import { buildSortParams, SortDirectionEvent } from '@app/core/utilities/datatable-helpers'; +import { BrowsePhenotypeConnection, Maybe, PageInfo, PhenotypeBrowseTableRowFieldsFragment, PhenotypesBrowseGQL, PhenotypesBrowseQuery, PhenotypesBrowseQueryVariables, PhenotypeSortColumns } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { QueryRef } from 'apollo-angular'; -import { BehaviorSubject, interval, Observable, Subject } from 'rxjs'; -import { tap, map, pluck, startWith, debounceTime, take, takeUntil, withLatestFrom, pairwise, filter, throttleTime, first } from 'rxjs/operators'; -import { NzTableComponent } from 'ng-zorro-antd/table'; -import { ApolloQueryResult } from '@apollo/client/core'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, withLatestFrom } from 'rxjs/operators'; + +export interface PhenotypesTableUserFilters { + hpoIdFilter?: Maybe + hpoNameFilter?: Maybe +} +@UntilDestroy() @Component({ selector: 'cvc-phenotypes-table', templateUrl: './phenotypes-table.component.html', styleUrls: ['./phenotypes-table.component.less'] }) -export class CvcPhenotypesTableComponent implements OnInit, OnDestroy, AfterViewInit { +export class CvcPhenotypesTableComponent implements OnInit { @Input() cvcHeight?: number @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe + @Input() initialPageSize = 35 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } + + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent - viewport?: CdkVirtualScrollViewport + // INTERMEDIATE STREAMS + queryRef!: QueryRef + result$!: Observable> + connection$!: Observable - private queryRef?: QueryRef - data$?: Observable> - private debouncedQuery = new Subject(); + // PRESENTATION STREAMS + pageInfo$!: Observable + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject - isLoading = false - filteredCount$?: Observable - pageInfo$?: Observable - phenotypes$?: Observable[]> - initialPageSize = 50 - fetchMorePageSize = 25 - isLoadingDelay = 300 - noMoreRows$: BehaviorSubject; + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling = false // filters hpoIdFilter: Maybe hpoNameFilter: Maybe - showTooltips = true - - textInputCallback?: () => void - - sortColumns: typeof PhenotypeSortColumns = PhenotypeSortColumns - - totalCount?: number - visibleCount: number = this.initialPageSize - loadedPages: number = 1 - - private destroy$ = new Subject() + sortColumns = PhenotypeSortColumns constructor(private gql: PhenotypesBrowseGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() } ngOnInit() { - this.queryRef = this.gql - .watch({ first: this.initialPageSize }, { fetchPolicy: 'network-only' }); - - this.data$ = this.queryRef.valueChanges - .pipe(map((r) => { - return { - data: r.data, - loading: r.loading, - networkStatus: r.networkStatus, - }; - })); - - this.phenotypes$ = this.data$.pipe( - pluck('data', 'phenotypes', 'edges'), - map((edges) => { - return edges.map((e) => e.node) - }) - ) - - // handle loading state - this.data$ - .pipe(takeUntil(this.destroy$), - pluck('loading'), - startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l; }); - - this.filteredCount$ = this.data$ - .pipe(takeUntil(this.destroy$), - pluck('data', 'phenotypes', 'filteredCount')); - - this.filteredCount$ - .pipe(takeUntil(this.destroy$), - take(1)) - .subscribe(value => this.totalCount = value); - - this.filteredCount$ - .pipe(takeUntil(this.destroy$)) - .subscribe(value => { - if (value < this.initialPageSize) { - this.visibleCount = value - } - else { - this.visibleCount = this.initialPageSize * this.loadedPages - if (this.visibleCount > value) { - this.visibleCount = value - } - } + this.queryRef = this.gql.watch({ first: this.initialPageSize }) + + this.result$ = this.queryRef.valueChanges + + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + // entity relay connection + this.connection$ = this.result$ + .pipe(pluck('data', 'phenotypes'), + filter(isNonNulled)) as Observable; + + // entity row nodes + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); }); - this.pageInfo$ = this.data$ - .pipe(takeUntil(this.destroy$), - pluck('data', 'phenotypes', 'pageInfo')); + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }) + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() + }) - this.debouncedQuery - .pipe(takeUntil(this.destroy$), - debounceTime(500)) - .subscribe((_) => this.refresh()); + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); + } + }); - this.textInputCallback = () => { this.debouncedQuery.next(); } } // ngOnInit - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe( - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }); - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }) - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('variants-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit - - onModelChanged() { this.debouncedQuery.next() } - - onSortChanged(e: SortDirectionEvent) { - this.isLoading = true; - this.loadedPages = 1 - this.queryRef?.refetch({ - sortBy: buildSortParams(e) - }) - } refresh() { - this.isLoading = true; - this.loadedPages = 1 - this.queryRef?.refetch({ - name: this.hpoNameFilter, - hpoId: this.hpoIdFilter - }) - } - - loadMore(cursor: Maybe) { - this.isLoading = true; - this.queryRef?.fetchMore({ - variables: { - first: this.fetchMorePageSize, - after: cursor - } - }); + this.queryRef + .refetch({ + name: this.hpoNameFilter, + hpoId: this.hpoIdFilter + }) + .then(() => this.scrollIndex$.next(0)); - this.loadedPages += 1 + this.cdr.detectChanges() } - // virtual scroll helpers trackByIndex(_: number, data: PhenotypeBrowseTableRowFieldsFragment): number { return data.id; } - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.unsubscribe(); - } } diff --git a/client/src/app/components/phenotypes/phenotypes-table/phenotypes-table.module.ts b/client/src/app/components/phenotypes/phenotypes-table/phenotypes-table.module.ts index dd18df35b..8085e9a0d 100644 --- a/client/src/app/components/phenotypes/phenotypes-table/phenotypes-table.module.ts +++ b/client/src/app/components/phenotypes/phenotypes-table/phenotypes-table.module.ts @@ -14,6 +14,9 @@ import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; import { NzTagModule } from 'ng-zorro-antd/tag'; import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; @NgModule({ declarations: [CvcPhenotypesTableComponent], @@ -27,6 +30,9 @@ import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto NzCardModule, NzToolTipModule, NzTagModule, + CvcNoMoreRowsModule, + CvcTableScrollModule, + CvcTableCountsModule, CvcAutoHeightCardModule, CvcAutoHeightTableModule, CvcClearableInputFilterModule, diff --git a/client/src/app/components/revisions/revision-list/revision-list.component.html b/client/src/app/components/revisions/revision-list/revision-list.component.html index fb3744ca9..140385b91 100644 --- a/client/src/app/components/revisions/revision-list/revision-list.component.html +++ b/client/src/app/components/revisions/revision-list/revision-list.component.html @@ -60,6 +60,28 @@ + + + + + {{ item.displayName }} + + + + --> + + + + + {{ item.displayName }} + + + + data?.revision), + filter(isNonNulled)); } } diff --git a/client/src/app/components/shared/attribute-tag/attribute-tag.component.html b/client/src/app/components/shared/attribute-tag/attribute-tag.component.html new file mode 100644 index 000000000..314a3cb77 --- /dev/null +++ b/client/src/app/components/shared/attribute-tag/attribute-tag.component.html @@ -0,0 +1,5 @@ + + + {{ cvcAttrValue | evidenceEnumDisplay }} + diff --git a/client/src/app/components/shared/attribute-tag/attribute-tag.component.less b/client/src/app/components/shared/attribute-tag/attribute-tag.component.less new file mode 100644 index 000000000..48bb062ea --- /dev/null +++ b/client/src/app/components/shared/attribute-tag/attribute-tag.component.less @@ -0,0 +1,3 @@ +:host { + display: inline-block; +} diff --git a/client/src/app/components/shared/attribute-tag/attribute-tag.component.ts b/client/src/app/components/shared/attribute-tag/attribute-tag.component.ts new file mode 100644 index 000000000..d2647d134 --- /dev/null +++ b/client/src/app/components/shared/attribute-tag/attribute-tag.component.ts @@ -0,0 +1,16 @@ +import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; + +@Component({ + selector: 'cvc-attribute-tag', + templateUrl: './attribute-tag.component.html', + styleUrls: ['./attribute-tag.component.less'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class CvcAttributeTagComponent { + @Input() cvcAttrValue!: any + @Input() iconPropertyType?: 'clinical-significance' | 'type' + + @Input() cvcShowLabel: boolean = true + @Input() cvcShowTooltip: boolean = true + @Input() showIcon: boolean = true +} diff --git a/client/src/app/components/shared/attribute-tag/attribute-tag.module.ts b/client/src/app/components/shared/attribute-tag/attribute-tag.module.ts new file mode 100644 index 000000000..f5a6c7d6e --- /dev/null +++ b/client/src/app/components/shared/attribute-tag/attribute-tag.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { CvcAttributeTagComponent } from './attribute-tag.component'; +import { NzTagModule } from 'ng-zorro-antd/tag'; +import { CvcPipesModule } from '@app/core/pipes/pipes.module'; +import { NzIconModule } from 'ng-zorro-antd/icon'; +import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; + +@NgModule({ + declarations: [CvcAttributeTagComponent], + imports: [ + CommonModule, + NzTagModule, + NzIconModule, + NzToolTipModule, + CvcPipesModule, + ], + exports: [CvcAttributeTagComponent] +}) +export class CvcAttributeTagModule { } diff --git a/client/src/app/components/shared/no-more-rows/no-more-rows.module.ts b/client/src/app/components/shared/no-more-rows/no-more-rows.module.ts new file mode 100644 index 000000000..3c28fff86 --- /dev/null +++ b/client/src/app/components/shared/no-more-rows/no-more-rows.module.ts @@ -0,0 +1,18 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { ReactiveComponentModule } from '@ngrx/component'; +import { NzIconModule } from 'ng-zorro-antd/icon'; +import { NzTagModule } from 'ng-zorro-antd/tag'; +import { NoMoreRowsTag } from './no-more-rows.tag'; + +@NgModule({ + declarations: [NoMoreRowsTag], + imports: [ + CommonModule, + ReactiveComponentModule, + NzTagModule, + NzIconModule + ], + exports: [NoMoreRowsTag] +}) +export class CvcNoMoreRowsModule { } diff --git a/client/src/app/components/shared/no-more-rows/no-more-rows.tag.html b/client/src/app/components/shared/no-more-rows/no-more-rows.tag.html new file mode 100644 index 000000000..d7140a8fd --- /dev/null +++ b/client/src/app/components/shared/no-more-rows/no-more-rows.tag.html @@ -0,0 +1,6 @@ + + + End of results reached + diff --git a/client/src/app/forms/config/types/variant-select/variant-select.type.less b/client/src/app/components/shared/no-more-rows/no-more-rows.tag.less similarity index 100% rename from client/src/app/forms/config/types/variant-select/variant-select.type.less rename to client/src/app/components/shared/no-more-rows/no-more-rows.tag.less diff --git a/client/src/app/components/shared/no-more-rows/no-more-rows.tag.ts b/client/src/app/components/shared/no-more-rows/no-more-rows.tag.ts new file mode 100644 index 000000000..7ada3669e --- /dev/null +++ b/client/src/app/components/shared/no-more-rows/no-more-rows.tag.ts @@ -0,0 +1,33 @@ +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core'; +import { BehaviorSubject, interval } from 'rxjs'; +import { first } from 'rxjs/operators'; + +@Component({ + selector: 'cvc-no-more-rows', + templateUrl: './no-more-rows.tag.html', + styleUrls: ['./no-more-rows.tag.less'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class NoMoreRowsTag { + @Input() + set cvcShowTag(h: boolean) { if (h) this.showTag() } + + showTag$: BehaviorSubject + + constructor(private cdr: ChangeDetectorRef) { + this.showTag$ = new BehaviorSubject(false) + } + + showTag() { + if (this.showTag$.getValue() === false) { + this.showTag$.next(true); + interval(3000) + .pipe(first()) + .subscribe(() => { + this.showTag$.next(false); + this.cdr.detectChanges() + }) + } + } + +} diff --git a/client/src/app/components/shared/site-stats-card/site-stats-card.component.ts b/client/src/app/components/shared/site-stats-card/site-stats-card.component.ts index ed53f53bf..22a479cc3 100644 --- a/client/src/app/components/shared/site-stats-card/site-stats-card.component.ts +++ b/client/src/app/components/shared/site-stats-card/site-stats-card.component.ts @@ -3,7 +3,8 @@ import { ApolloQueryResult } from '@apollo/client/core'; import { CivicStatsGQL, CivicStatsQuery, CivicTimepointStats } from '@app/generated/civic.apollo'; import { QueryRef } from 'apollo-angular'; import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, pluck } from 'rxjs/operators'; @Component({ selector: 'cvc-site-stats-card', @@ -34,7 +35,13 @@ export class CvcSiteStatsCardComponent implements OnInit { this.statsRef = this.statsGql.watch({}); this.response$ = this.statsRef.valueChanges; - this.isLoading$ = this.response$.pipe(map(r => r.loading)); - this.stats$ = this.response$.pipe(map(r => r.data.timepointStats)); + this.isLoading$ = this.response$ + .pipe(pluck('loading'), + filter(isNonNulled)) + + this.stats$ = this.response$ + .pipe( + pluck('data', 'timepointStats'), + filter(isNonNulled)) } } diff --git a/client/src/app/components/shared/table-counts/table-counts.component.html b/client/src/app/components/shared/table-counts/table-counts.component.html new file mode 100644 index 000000000..143c91d3c --- /dev/null +++ b/client/src/app/components/shared/table-counts/table-counts.component.html @@ -0,0 +1,10 @@ + + {{ tci.totalCount | number }} total, showing {{ tci.edgeCount | number }} + + of {{ tci.filteredCount | number }} filtered + + diff --git a/client/src/app/components/shared/table-counts/table-counts.component.less b/client/src/app/components/shared/table-counts/table-counts.component.less new file mode 100644 index 000000000..de46685c0 --- /dev/null +++ b/client/src/app/components/shared/table-counts/table-counts.component.less @@ -0,0 +1,6 @@ +::host { + border: 1px solid red; +} +.table-counts { + display: inline-block; +} diff --git a/client/src/app/components/shared/table-counts/table-counts.component.ts b/client/src/app/components/shared/table-counts/table-counts.component.ts new file mode 100644 index 000000000..0b215107d --- /dev/null +++ b/client/src/app/components/shared/table-counts/table-counts.component.ts @@ -0,0 +1,58 @@ +import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { Maybe, PageInfo } from '@app/generated/civic.apollo'; +import { Observable } from 'rxjs'; +import { filter, map } from 'rxjs/operators'; + +export type TableCountsInfo = { + totalCount: number + filteredCount: Maybe + edgeCount: number +} + +export type EntityConnection = { + edges: Array + nodes: Array + pageCount: number + totalCount: number + filteredCount?: number + pageInfo: PageInfo +} + +export type EntityEdge = { + cursor: string + node?: object +} + +@Component({ + selector: 'cvc-table-counts', + templateUrl: './table-counts.component.html', + styleUrls: ['./table-counts.component.less'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class TableCountsComponent implements OnInit { + @Input() cvcTableCountsConnection!: Observable + tableCountsInfo$!: Observable + + private initialTotalCount!: number + + ngOnInit(): void { + this.tableCountsInfo$ = this.cvcTableCountsConnection + .pipe(filter((c) => c.totalCount !== undefined), + map((c: EntityConnection) => { + const { filteredCount: fc, totalCount: tc, edges } = c + // if no filtered count, and an initial total count has + // not been set, set it to total count + if (!fc && !this.initialTotalCount) this.initialTotalCount = tc + const itc = this.initialTotalCount + return { + edgeCount: edges.length, + // if the current total is less than the initial total, + // set total count to initial total count. + totalCount: (itc && tc < itc) ? itc : tc, + // If no filtered count, set filtered count to current total count + filteredCount: fc ? fc : tc + } + })); + } + +} diff --git a/client/src/app/components/shared/table-counts/table-counts.module.ts b/client/src/app/components/shared/table-counts/table-counts.module.ts new file mode 100644 index 000000000..ccf583e70 --- /dev/null +++ b/client/src/app/components/shared/table-counts/table-counts.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { TableCountsComponent } from './table-counts.component'; +import { NzTypographyModule } from 'ng-zorro-antd/typography'; +import { ReactiveComponentModule } from '@ngrx/component'; + +@NgModule({ + declarations: [TableCountsComponent], + imports: [ + CommonModule, + ReactiveComponentModule, + NzTypographyModule + ], + exports: [TableCountsComponent] +}) +export class CvcTableCountsModule { } diff --git a/client/src/app/components/source-suggestions/source-suggestions-table/source-suggestions-table.component.html b/client/src/app/components/source-suggestions/source-suggestions-table/source-suggestions-table.component.html index 8a8e69dfc..1b35f8907 100644 --- a/client/src/app/components/source-suggestions/source-suggestions-table/source-suggestions-table.component.html +++ b/client/src/app/components/source-suggestions/source-suggestions-table/source-suggestions-table.component.html @@ -27,15 +27,20 @@ - + @@ -105,7 +110,7 @@ nzSize="small" nzPlaceHolder="Any" [nzDropdownMatchSelectWidth]="false" - (ngModelChange)="onModelChanged()" + (ngModelChange)="filterChange$.next()" [(ngModel)]="statusInput"> @@ -117,21 +122,19 @@ + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -142,22 +145,22 @@ + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -189,7 +192,7 @@ {{ suggestion.status | lowercase}} @@ -202,7 +205,7 @@ + [nzTooltipTitle]="!isScrolling ? suggestion.initialComment : ''"> @@ -245,7 +248,7 @@ nz-button nzSize="small" nz-tooltip - [nzTooltipTitle]="showTooltips ? 'Create Evidence with this Source' : ''" + [nzTooltipTitle]="!isScrolling ? 'Create Evidence with this Source' : ''" [nzTooltipMouseEnterDelay]="1"> @@ -257,7 +260,7 @@ nzPopoverPlacement="left" nzPopoverTrigger="click" nz-tooltip - [nzTooltipTitle]="showTooltips ? 'Manage Source Suggestion' : ''" + [nzTooltipTitle]="!isScrolling ? 'Manage Source Suggestion' : ''" nzTooltipPlacement="top" [nzTooltipMouseEnterDelay]="1" [nzPopoverContent]="manageSuggestionTemplate" @@ -282,6 +285,7 @@ + @@ -291,24 +295,20 @@ {{ this.cvcTitle }} - - ({{totalCount}} new, showing {{visibleCount}} of {{filteredCount}} filtered) + + + - - - (0 total) - - + - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/source-suggestions/source-suggestions-table/source-suggestions-table.component.ts b/client/src/app/components/source-suggestions/source-suggestions-table/source-suggestions-table.component.ts index 7bb8582d6..9825ced0a 100644 --- a/client/src/app/components/source-suggestions/source-suggestions-table/source-suggestions-table.component.ts +++ b/client/src/app/components/source-suggestions/source-suggestions-table/source-suggestions-table.component.ts @@ -1,43 +1,68 @@ -import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from "@angular/core"; +import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef } from "@angular/core"; import { ApolloQueryResult } from "@apollo/client/core"; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { BrowseSourceSuggestionRowFieldsFragment, BrowseSourceSuggestionsGQL, BrowseSourceSuggestionsQuery, Maybe, PageInfo, QuerySourceSuggestionsArgs, SortDirection, SourceSource, SourceSuggestionsSortColumns, SourceSuggestionStatus } from "@app/generated/civic.apollo"; +import { ViewerService } from "@app/core/services/viewer/viewer.service"; import { buildSortParams, SortDirectionEvent } from "@app/core/utilities/datatable-helpers"; -import { QueryRef } from "apollo-angular"; -import { Subject, Observable, BehaviorSubject, interval } from "rxjs"; -import { map, pluck, startWith, debounceTime, take, takeUntil, withLatestFrom, pairwise, filter, throttleTime, first, tap } from 'rxjs/operators'; -import { Viewer, ViewerService } from "@app/core/services/viewer/viewer.service"; -import { NzTableComponent } from "ng-zorro-antd/table"; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; +import { BrowseSourceSuggestionRowFieldsFragment, BrowseSourceSuggestionsGQL, BrowseSourceSuggestionsQuery, Maybe, PageInfo, QuerySourceSuggestionsArgs, SortDirection, SourceSource, SourceSuggestionConnection, SourceSuggestionsSortColumns, SourceSuggestionStatus } from "@app/generated/civic.apollo"; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; +import { QueryRef } from 'apollo-angular'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, withLatestFrom } from 'rxjs/operators'; + +export interface SourceSuggestionTableFilters { + citationIdInput?: Maybe + citationInput?: Maybe + commentInput?: Maybe + diseaseNameInput?: Maybe + geneNameInput?: Maybe + sourceIdInput?: Maybe + sourceTypeInput?: Maybe + submitterInput?: Maybe + variantNameInput?: Maybe +} +@UntilDestroy() @Component({ selector: 'cvc-source-suggestions-table', templateUrl: './source-suggestions-table.component.html', styleUrls: ['./source-suggestions-table.component.less'], changeDetection: ChangeDetectionStrategy.OnPush }) -export class CvcSourceSuggestionsTableComponent implements OnInit, OnDestroy, AfterViewInit { +export class CvcSourceSuggestionsTableComponent implements OnInit { @Input() cvcHeight?: string @Input() sourceId: Maybe @Input() submitterId: Maybe @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe + @Input() initialPageSize = 35 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent - viewport?: CdkVirtualScrollViewport + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject - private debouncedQuery = new Subject(); + // INTERMEDIATE STREAMS + queryRef!: QueryRef + result$!: Observable> + connection$!: Observable - queryRef?: QueryRef; - data$?: Observable>; - isLoading$?: Observable; - isLoading = false - sourceSuggestions$?: Observable[]>; - pageInfo$?: Observable - viewer$?: Observable - filteredCount$?: Observable + // PRESENTATION STREAMS + pageInfo$!: Observable + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject - textInputCallback?: () => void + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling = false //filters citationIdInput: Maybe @@ -51,31 +76,30 @@ export class CvcSourceSuggestionsTableComponent implements OnInit, OnDestroy, Af citationInput: Maybe statusInput = SourceSuggestionStatus.New - sortColumns: typeof SourceSuggestionsSortColumns = SourceSuggestionsSortColumns - status: typeof SourceSuggestionStatus = SourceSuggestionStatus - + sortColumns = SourceSuggestionsSortColumns + status = SourceSuggestionStatus selectedSourceId?: number selectedStatus?: SourceSuggestionStatus - showManageForm = false - totalCount?: number - initialPageSize = 35 - visibleCount = this.initialPageSize - loadedPages = 1 - fetchMorePageSize = 25 - isLoadingDelay = 300 + showManageForm = false - isSignedIn = false - showTooltips = true - noMoreRows$: BehaviorSubject; - private destroy$ = new Subject() + isSignedIn!: boolean constructor(private gql: BrowseSourceSuggestionsGQL, private viewerService: ViewerService, private cdr: ChangeDetectorRef) { + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() - this.noMoreRows$ = new BehaviorSubject(false); + // provide viewer signed in + this.viewerService.viewer$ + .pipe(map(v => v.signedIn), + untilDestroyed(this)) + .subscribe((si) => this.isSignedIn = si as boolean) } ngOnInit() { @@ -91,165 +115,97 @@ export class CvcSourceSuggestionsTableComponent implements OnInit, OnDestroy, Af } }) - // provide viewer signed in - this.viewerService.viewer$ - .pipe(takeUntil(this.destroy$), - pluck('signedIn')) - .subscribe((si) => { this.isSignedIn = si as boolean }); - - this.data$ = this.queryRef.valueChanges.pipe( - map((r) => { - return { - data: r.data, - loading: r.loading, - networkStatus: r.networkStatus - } - }) - ); - - this.isLoading$ = this.data$.pipe(pluck('loading'), startWith(true)); - - // handle loading state - this.data$ - .pipe(takeUntil(this.destroy$), - pluck('loading'), - startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l; }); + this.result$ = this.queryRef.valueChanges + + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + // entity relay connection + this.connection$ = this.result$ + .pipe(pluck('data', 'sourceSuggestions'), + filter(isNonNulled)) as Observable; + + // entity row nodes + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); + }); - this.sourceSuggestions$ = this.data$.pipe( - pluck('data', 'sourceSuggestions', 'edges'), - map((edges) => { - return edges.map(e => e.node) + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }) + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() }) - ); - - this.pageInfo$ = this.data$ - .pipe(takeUntil(this.destroy$), - pluck('data', 'sourceSuggestions', 'pageInfo')); - - this.filteredCount$ = this.data$.pipe( - pluck('data', 'sourceSuggestions', 'filteredCount') - ) - - this.filteredCount$.pipe(take(1)).subscribe(value => this.totalCount = value); - this.filteredCount$ - .subscribe(value => { - if (value < this.initialPageSize) { - this.visibleCount = value - } - else { - this.visibleCount = this.initialPageSize * this.loadedPages - if (this.visibleCount > value) { - this.visibleCount = value - } + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); } }); - this.debouncedQuery - .pipe(takeUntil(this.destroy$), - debounceTime(500)) - .subscribe((_) => this.refresh()); - this.textInputCallback = () => { this.debouncedQuery.next(); } } // ngOnInit - - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - - const scrolled$ = this.viewport - .elementScrolled(); - - scrolled$ - .pipe(takeUntil(this.destroy$), - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - // console.log(`source-suggestions-table scroller$ - e1.offset: ${e1.offset}; e1.offset: ${e2.offset}; scroll target: ${(e2.offset < e1.offset && e2.offset < 140)}`); - - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }); - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }); - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('source-suggestions-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit - - refresh() { - this.isLoading = true - this.loadedPages = 1 - this.queryRef?.refetch({ - citationId: this.citationIdInput ? +this.citationIdInput : undefined, - sourceType: this.sourceTypeInput ? this.sourceTypeInput : undefined, - sourceId: this.sourceIdInput ? +this.sourceIdInput : undefined, - geneName: this.geneNameInput, - variantName: this.variantNameInput, - diseaseName: this.diseaseNameInput, - comment: this.commentInput, - submitter: this.submitterInput, - citation: this.citationInput, - status: this.statusInput ? this.statusInput : undefined - }) - } + this.queryRef + .refetch({ + citationId: this.citationIdInput ? +this.citationIdInput : undefined, + sourceType: this.sourceTypeInput ? this.sourceTypeInput : undefined, + sourceId: this.sourceIdInput ? +this.sourceIdInput : undefined, + geneName: this.geneNameInput, + variantName: this.variantNameInput, + diseaseName: this.diseaseNameInput, + comment: this.commentInput, + submitter: this.submitterInput, + citation: this.citationInput, + status: this.statusInput ? this.statusInput : undefined + }) + .then(() => this.scrollIndex$.next(0)); - onSortChanged(e: SortDirectionEvent) { - this.isLoading = true - this.loadedPages = 1 - this.queryRef?.refetch({ sortBy: buildSortParams(e) }) + this.cdr.detectChanges() } - onModelChanged() { - this.debouncedQuery.next() - } setFormInputs(selectedId: number, selectedStatus: SourceSuggestionStatus): void { this.selectedSourceId = selectedId @@ -266,25 +222,4 @@ export class CvcSourceSuggestionsTableComponent implements OnInit, OnDestroy, Af return data.id } - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - loadMore(cursor: Maybe) { - this.isLoading = true; - this.queryRef?.fetchMore({ - variables: { - first: this.fetchMorePageSize, - after: cursor - } - }); - - this.loadedPages += 1 - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.unsubscribe(); - } - } diff --git a/client/src/app/components/source-suggestions/source-suggestions-table/source-suggestions-table.module.ts b/client/src/app/components/source-suggestions/source-suggestions-table/source-suggestions-table.module.ts index 34c757b36..e3e3c4c97 100644 --- a/client/src/app/components/source-suggestions/source-suggestions-table/source-suggestions-table.module.ts +++ b/client/src/app/components/source-suggestions/source-suggestions-table/source-suggestions-table.module.ts @@ -5,12 +5,15 @@ import { RouterModule } from '@angular/router'; import { CvcDiseaseTagModule } from '@app/components/diseases/cvc-disease-tag/cvc-disease-tag.module'; import { CvcGeneTagModule } from '@app/components/genes/gene-tag/gene-tag.module'; import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; import { CvcSourceTagModule } from '@app/components/sources/source-tag/source-tag.module'; import { CvcUserTagModule } from '@app/components/users/user-tag/user-tag.module'; import { CvcVariantTagModule } from '@app/components/variants/variant-tag/variant-tag.module'; import { CvcPipesModule } from '@app/core/pipes/pipes.module'; import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; import { CvcFormErrorsAlertModule } from '@app/forms/config/components/form-errors-alert/form-errors-alert.module'; import { CvcUpdateSourceSuggestionFormModule } from '@app/forms/update-source-suggestion/update-source-suggestion.module'; import { ReactiveComponentModule } from '@ngrx/component'; @@ -41,6 +44,9 @@ import { CvcSourceSuggestionsTableComponent } from './source-suggestions-table.c NzTagModule, NzToolTipModule, NzTypographyModule, + CvcTableScrollModule, + CvcTableCountsModule, + CvcNoMoreRowsModule, CvcAutoHeightCardModule, CvcAutoHeightTableModule, CvcClearableInputFilterModule, diff --git a/client/src/app/components/sources/source-popover/source-popover.component.ts b/client/src/app/components/sources/source-popover/source-popover.component.ts index a218e9e2f..b08a7e64f 100644 --- a/client/src/app/components/sources/source-popover/source-popover.component.ts +++ b/client/src/app/components/sources/source-popover/source-popover.component.ts @@ -1,7 +1,8 @@ import { Component, Input, OnInit } from "@angular/core"; import { Maybe, SourcePopoverFragment, SourcePopoverGQL } from "@app/generated/civic.apollo"; -import { map } from 'rxjs/operators' import { Observable } from 'rxjs'; +import { isNonNulled } from "rxjs-etc"; +import { filter, map } from 'rxjs/operators'; @Component({ selector: 'cvc-source-popover', @@ -21,6 +22,7 @@ export class CvcSourcePopoverComponent implements OnInit { } this.source$ = this.gql.watch({ sourceId: this.sourceId }) .valueChanges - .pipe(map(({ data }) => data.sourcePopover)) + .pipe(map(({ data }) => data?.sourcePopover), + filter(isNonNulled)); } } diff --git a/client/src/app/components/sources/source-tag/source-tag.component.html b/client/src/app/components/sources/source-tag/source-tag.component.html index b91cc0133..929f7c846 100644 --- a/client/src/app/components/sources/source-tag/source-tag.component.html +++ b/client/src/app/components/sources/source-tag/source-tag.component.html @@ -12,8 +12,8 @@ nzPopoverPlacement="right" nzPopoverTrigger="hover" [(nzPopoverVisible)]="popoverVisible" - [nzMode]="this.onCloseClicked ? 'closeable' : 'default'" (nzOnClose)="itemClosed($event)" - > + [nzMode]="this.onCloseClicked ? 'closeable' : 'default'" + (nzOnClose)="itemClosed($event)"> @@ -23,7 +23,8 @@ - + @@ -36,7 +37,16 @@ -  {{this.displayName}} -  SID{{source.id}} + nzTwotoneColor="#F9BA45"> + + + {{ this.displayName | truncate: 50}} + + + {{ this.displayName }} + + + + SID:{{source.id}} + diff --git a/client/src/app/components/sources/source-tag/source-tag.component.ts b/client/src/app/components/sources/source-tag/source-tag.component.ts index 8dfd99fe2..b9dcff471 100644 --- a/client/src/app/components/sources/source-tag/source-tag.component.ts +++ b/client/src/app/components/sources/source-tag/source-tag.component.ts @@ -54,6 +54,7 @@ export class CvcSourceTagComponent extends BaseCloseableTag implements OnInit { @Input() enablePopover: Maybe = true @Input() linked: Maybe = true @Input() mode: 'normal' | 'concise' = 'normal' + @Input() truncateLongName: Maybe = false displayName!: string diff --git a/client/src/app/components/sources/sources-table/sources-table.component.html b/client/src/app/components/sources/sources-table/sources-table.component.html index 8418d3e24..5c1165947 100644 --- a/client/src/app/components/sources/sources-table/sources-table.component.html +++ b/client/src/app/components/sources/sources-table/sources-table.component.html @@ -15,7 +15,7 @@
@@ -27,15 +27,20 @@ - + @@ -98,18 +103,18 @@ + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -119,18 +124,15 @@ + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -142,11 +144,11 @@ let-index="index"> - + + [nzTooltipTitle]="!isScrolling ? source.name : ''"> {{ source.name }} @@ -185,24 +187,20 @@ {{ this.cvcTitle }} - - {{ totalCount | number }} total, showing {{ visibleCount | number }} of {{ filteredCount | number }} filtered + + + - - - (0 total) - - + - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/sources/sources-table/sources-table.component.ts b/client/src/app/components/sources/sources-table/sources-table.component.ts index c6a6ec3c2..c05c58a8f 100644 --- a/client/src/app/components/sources/sources-table/sources-table.component.ts +++ b/client/src/app/components/sources/sources-table/sources-table.component.ts @@ -1,47 +1,63 @@ -import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from "@angular/core"; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, TemplateRef } from "@angular/core"; import { ApolloQueryResult } from "@apollo/client/core"; -import { BrowseSourceRowFieldsFragment, BrowseSourcesGQL, BrowseSourcesQuery, Maybe, PageInfo, QueryBrowseSourcesArgs, SourceSource, SourcesSortColumns } from "@app/generated/civic.apollo"; import { buildSortParams, SortDirectionEvent } from "@app/core/utilities/datatable-helpers"; -import { QueryRef } from "apollo-angular"; -import { Subject, Observable, BehaviorSubject, interval } from "rxjs"; -import { map, pluck, startWith, debounceTime, take, takeUntil, withLatestFrom, pairwise, filter, throttleTime, first, tap } from 'rxjs/operators'; -import { NzTableComponent } from "ng-zorro-antd/table"; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; +import { BrowseSourceConnection, BrowseSourceRowFieldsFragment, BrowseSourcesGQL, BrowseSourcesQuery, Maybe, PageInfo, QueryBrowseSourcesArgs, SourceSource, SourcesSortColumns } from "@app/generated/civic.apollo"; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; +import { QueryRef } from 'apollo-angular'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, withLatestFrom } from 'rxjs/operators'; + +export interface SourcesTableUserFilters { + citationIdInput?: Maybe + authorInput?: Maybe + journalInput?: Maybe + nameInput?: Maybe + sourceTypeInput?: Maybe + yearInput?: Maybe +} +@UntilDestroy() @Component({ selector: 'cvc-sources-table', templateUrl: './sources-table.component.html', styleUrls: ['./sources-table.component.less'], changeDetection: ChangeDetectionStrategy.OnPush }) -export class CvcSourcesTableComponent implements OnInit, AfterViewInit { +export class CvcSourcesTableComponent implements OnInit { @Input() cvcHeight?: number @Input() clinicalTrialId: Maybe @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe + @Input() initialPageSize = 35 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent; - viewport?: CdkVirtualScrollViewport; - - private debouncedQuery = new Subject(); - - queryRef?: QueryRef; - data$?: Observable>; - isLoading = false; - sources$?: Observable[]>; - pageInfo$?: Observable; - filteredCount$?: Observable - - totalCount?: number - initialPageSize = 25 - visibleCount: number = this.initialPageSize - loadedPages: number = 1 - fetchMorePageSize = 25; - isLoadingDelay = 300; - - noMoreRows$: BehaviorSubject; - + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject + + // INTERMEDIATE STREAMS + queryRef!: QueryRef + result$!: Observable> + connection$!: Observable + + // PRESENTATION STREAMS + pageInfo$!: Observable + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject + + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling = false // filters citationIdInput: Maybe authorInput: Maybe @@ -50,193 +66,110 @@ export class CvcSourcesTableComponent implements OnInit, AfterViewInit { nameInput: Maybe sourceTypeInput: Maybe - showTooltips = true; - - textInputCallback?: () => void sortColumns: typeof SourcesSortColumns = SourcesSortColumns - - private destroy$ = new Subject(); - constructor(private gql: BrowseSourcesGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() } ngOnInit() { this.queryRef = this.gql.watch({ first: this.initialPageSize, clinicalTrialId: this.clinicalTrialId - }, { fetchPolicy: 'network-only' }); - - this.data$ = this.queryRef.valueChanges.pipe( - map((r) => { - return { - data: r.data, - loading: r.loading, - networkStatus: r.networkStatus - } - })); - - // handle loading state - this.data$ - .pipe( - takeUntil(this.destroy$), - pluck('loading'), - startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l; }); - - this.sources$ = this.data$.pipe( - pluck('data', 'browseSources', 'edges'), - map((edges) => { - return edges.map(e => e.node) - }) - ); - - this.pageInfo$ = this.data$.pipe( - pluck('data', 'browseSources', 'pageInfo') - ); - - this.filteredCount$ = this.data$.pipe( - pluck('data', 'browseSources', 'filteredCount') - ) + }); - this.filteredCount$.pipe(take(1)).subscribe(value => this.totalCount = value); + this.result$ = this.queryRef.valueChanges + + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + this.connection$ = this.result$ + .pipe(pluck('data', 'browseSources'), + filter(isNonNulled)) as Observable; + + // entity row nodes + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); + }); + + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }) + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() + }) - this.filteredCount$.subscribe( - value => { - if (value < this.initialPageSize) { - this.visibleCount = value + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); } - else { - this.visibleCount = this.initialPageSize * this.loadedPages - if (this.visibleCount > value) { - this.visibleCount = value - } - } - } - ) - - this.debouncedQuery - .pipe( - takeUntil(this.destroy$), - debounceTime(500)) - .subscribe((_) => this.refresh()); - - this.textInputCallback = () => { this.debouncedQuery.next(); } + }); } // ngOnInit() - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe( - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }) - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }) - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('sources-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit - // TODO: looks like these onSort and onModel changed functions can be removed - onSortChanged(e: SortDirectionEvent) { - this.loadedPages = 1 - this.queryRef?.refetch({ sortBy: buildSortParams(e) }) - } - - onModelChanged() { - this.debouncedQuery.next() - } - refresh() { - this.isLoading = true; - this.loadedPages = 1 - this.queryRef?.refetch({ - citationId: this.citationIdInput ? +this.citationIdInput : undefined, - author: this.authorInput, - year: this.yearInput ? +this.yearInput : undefined, - journal: this.journalInput, - name: this.nameInput, - sourceType: this.sourceTypeInput - }) - } - - loadMore(cursor: Maybe) { - this.isLoading = true; - this.queryRef?.fetchMore({ - variables: { - first: this.fetchMorePageSize, - after: cursor - } - }); + this.queryRef + .refetch({ + citationId: this.citationIdInput ? +this.citationIdInput : undefined, + author: this.authorInput, + year: this.yearInput ? +this.yearInput : undefined, + journal: this.journalInput, + name: this.nameInput, + sourceType: this.sourceTypeInput + }) + .then(() => this.scrollIndex$.next(0)); - this.loadedPages += 1 + this.cdr.detectChanges() } - // virtual scroll helpers trackByIndex(_: number, data: BrowseSourceRowFieldsFragment): number { return data.id; } - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.unsubscribe(); - } - } diff --git a/client/src/app/components/sources/sources-table/sources-table.module.ts b/client/src/app/components/sources/sources-table/sources-table.module.ts index cdc36bd30..4195d6672 100644 --- a/client/src/app/components/sources/sources-table/sources-table.module.ts +++ b/client/src/app/components/sources/sources-table/sources-table.module.ts @@ -1,21 +1,24 @@ -import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { CvcSourcesTableComponent } from './sources-table.component'; -import { NzTableModule } from 'ng-zorro-antd/table'; -import { NzSelectModule } from 'ng-zorro-antd/select'; -import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; +import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { CvcSourceTagModule } from '../source-tag/source-tag.module'; -import { ReactiveComponentModule } from '@ngrx/component'; +import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; import { CvcPlainTagOverflowModule } from '@app/components/shared/plain-tag-overflow/plain-tag-overflow.module'; -import { NzButtonModule } from 'ng-zorro-antd/button'; -import { NzIconModule } from 'ng-zorro-antd/icon'; -import { NzTypographyModule } from 'ng-zorro-antd/typography'; -import { NzCardModule } from 'ng-zorro-antd/card'; -import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; +import { ReactiveComponentModule } from '@ngrx/component'; +import { NzButtonModule } from 'ng-zorro-antd/button'; +import { NzCardModule } from 'ng-zorro-antd/card'; +import { NzIconModule } from 'ng-zorro-antd/icon'; +import { NzSelectModule } from 'ng-zorro-antd/select'; +import { NzTableModule } from 'ng-zorro-antd/table'; import { NzTagModule } from 'ng-zorro-antd/tag'; +import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; +import { NzTypographyModule } from 'ng-zorro-antd/typography'; +import { CvcSourceTagModule } from '../source-tag/source-tag.module'; +import { CvcSourcesTableComponent } from './sources-table.component'; @NgModule({ declarations: [CvcSourcesTableComponent], @@ -23,19 +26,24 @@ import { NzTagModule } from 'ng-zorro-antd/tag'; CommonModule, FormsModule, ReactiveComponentModule, - NzTableModule, - NzSelectModule, - NzIconModule, - NzTypographyModule, - NzCardModule, + NzButtonModule, + NzCardModule, + NzIconModule, + NzSelectModule, + NzTableModule, NzTagModule, NzToolTipModule, - CvcClearableInputFilterModule, - CvcSourceTagModule, - CvcPlainTagOverflowModule, + NzTypographyModule, + CvcAutoHeightCardModule, CvcAutoHeightTableModule, + CvcClearableInputFilterModule, + CvcNoMoreRowsModule, + CvcPlainTagOverflowModule, + CvcSourceTagModule, + CvcTableCountsModule, + CvcTableScrollModule, ], exports: [CvcSourcesTableComponent] }) diff --git a/client/src/app/components/users/user-popover/user-popover.component.ts b/client/src/app/components/users/user-popover/user-popover.component.ts index a718c9fac..d30b2c9d6 100644 --- a/client/src/app/components/users/user-popover/user-popover.component.ts +++ b/client/src/app/components/users/user-popover/user-popover.component.ts @@ -1,28 +1,31 @@ -import { Component, Input, OnInit, ContentChild, TemplateRef } from "@angular/core"; -import { PopoverUserFragment, UserPopoverGQL, Maybe } from "@app/generated/civic.apollo"; -import { map } from 'rxjs/operators' +import { Component, ContentChild, Input, OnInit, TemplateRef } from "@angular/core"; +import { Maybe, PopoverUserFragment, UserPopoverGQL } from "@app/generated/civic.apollo"; import { Observable } from 'rxjs'; +import { isNonNulled } from "rxjs-etc"; +import { filter, map } from 'rxjs/operators'; @Component({ - selector: 'cvc-user-popover', - templateUrl: './user-popover.component.html', - styleUrls: ['./user-popover.component.less'] + selector: 'cvc-user-popover', + templateUrl: './user-popover.component.html', + styleUrls: ['./user-popover.component.less'] }) export class CvcUserPopoverComponent implements OnInit { - @Input() userId!: number; + @Input() userId!: number; - @ContentChild('additionalMetadata') metadataTemplateRef?: TemplateRef + @ContentChild('additionalMetadata') metadataTemplateRef?: TemplateRef - user$?: Observable> + user$?: Observable> - constructor(private gql: UserPopoverGQL) { } + constructor(private gql: UserPopoverGQL) { } - ngOnInit(){ - if(this.userId == undefined) { - throw new Error("Must pass an id into user hovercard"); - } - this.user$ = this.gql.watch({userId: this.userId}) - .valueChanges - .pipe(map(({data}) => data.user)) + ngOnInit() { + if (this.userId == undefined) { + throw new Error("Must pass an id into user hovercard"); } + this.user$ = this.gql.watch({ userId: this.userId }) + .valueChanges + .pipe(map(({ data }) => data?.user), + filter(isNonNulled)); + + } } diff --git a/client/src/app/components/users/users-table/users-table.component.html b/client/src/app/components/users/users-table/users-table.component.html index 5d885d89a..ba28375f8 100644 --- a/client/src/app/components/users/users-table/users-table.component.html +++ b/client/src/app/components/users/users-table/users-table.component.html @@ -26,15 +26,20 @@ - + @@ -80,20 +85,18 @@ + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -161,6 +164,7 @@ + @@ -170,24 +174,20 @@ {{ this.cvcTitle }} - - ({{totalCount | number }} total, showing {{visibleCount | number}} of {{filteredCount | number}} filtered) + + + - - - (0 total) - - + - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/users/users-table/users-table.component.ts b/client/src/app/components/users/users-table/users-table.component.ts index f9d226b98..e4d11bb64 100644 --- a/client/src/app/components/users/users-table/users-table.component.ts +++ b/client/src/app/components/users/users-table/users-table.component.ts @@ -1,12 +1,21 @@ -import { ChangeDetectorRef, Component, Input, OnInit, TemplateRef, ViewChild } from '@angular/core'; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { Maybe, PageInfo, UsersSortColumns, OrganizationFilter, UserRole, UsersBrowseQuery, UsersBrowseQueryVariables, UsersBrowseGQL, UserBrowseTableRowFieldsFragment, SortDirection } from "@app/generated/civic.apollo"; +import { ChangeDetectorRef, Component, Input, OnInit, TemplateRef } from '@angular/core'; +import { ApolloQueryResult } from '@apollo/client/core'; import { buildSortParams, SortDirectionEvent } from '@app/core/utilities/datatable-helpers'; -import { QueryRef } from "apollo-angular"; -import { Subject, Observable, BehaviorSubject, interval } from 'rxjs'; -import { map, pluck, startWith, debounceTime, take, withLatestFrom, pairwise, filter, throttleTime, first, takeUntil, tap } from 'rxjs/operators'; -import { NzTableComponent } from 'ng-zorro-antd/table'; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; +import { Maybe, OrganizationFilter, PageInfo, SortDirection, UserBrowseTableRowFieldsFragment, UserConnection, UserRole, UsersBrowseGQL, UsersBrowseQuery, UsersBrowseQueryVariables, UsersSortColumns } from "@app/generated/civic.apollo"; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; +import { QueryRef } from 'apollo-angular'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, withLatestFrom } from 'rxjs/operators'; + +export interface UsersTableFilters { + nameInput?: Maybe + orgNameInput?: Maybe + roleInput?: Maybe +} +@UntilDestroy() @Component({ selector: 'cvc-users-table', templateUrl: './users-table.component.html', @@ -16,44 +25,50 @@ export class CvcUsersTableComponent implements OnInit { @Input() cvcHeight?: number @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe + @Input() initialPageSize = 35 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent - viewport?: CdkVirtualScrollViewport - - private debouncedQuery = new Subject(); - initialPageSize = 35; - fetchMorePageSize = 25; - - private queryRef!: QueryRef; - - isLoading = false; - users$?: Observable[]>; - filteredCount$?: Observable; - pageInfo$?: Observable; - - totalCount?: number - visibleCount: number = this.initialPageSize - loadedPages: number = 1 + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject - textInputCallback?: () => void; + // INTERMEDIATE STREAMS + queryRef!: QueryRef + result$!: Observable> + connection$!: Observable - noMoreRows$: BehaviorSubject; - private destroy$ = new Subject() + // PRESENTATION STREAMS + pageInfo$!: Observable + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject - showTooltips = true + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling = false // filters - sortColumns: typeof UsersSortColumns = UsersSortColumns nameInput: Maybe orgNameInput: Maybe roleInput: Maybe + sortColumns = UsersSortColumns orgName: Maybe constructor(private gql: UsersBrowseGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() } ngOnInit(): void { @@ -66,134 +81,89 @@ export class CvcUsersTableComponent implements OnInit { } }); - let observable = this.queryRef.valueChanges; - - observable - .pipe(takeUntil(this.destroy$), - pluck('loading'), startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l }); - - this.users$ = observable.pipe( - pluck('data', 'users', 'edges'), - map((edges) => { - return edges.map((e) => e.node) + this.result$ = this.queryRef.valueChanges + + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + // entity relay connection + this.connection$ = this.result$ + .pipe(pluck('data', 'users'), + filter(isNonNulled)) as Observable; + + + // entity row nodes + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); + }); + + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }) + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() }) - ); - - this.filteredCount$ = observable.pipe( - pluck('data', 'users', 'totalCount') - ) - - this.filteredCount$.pipe(take(1)).subscribe(value => this.totalCount = value); - this.filteredCount$.subscribe( - value => { - if (value < this.initialPageSize) { - this.visibleCount = value + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); } - else { - this.visibleCount = this.initialPageSize + (this.loadedPages - 1) * this.fetchMorePageSize - if (this.visibleCount > value) { - this.visibleCount = value - } - } - } - ) - - this.pageInfo$ = observable.pipe( - pluck('data', 'users', 'pageInfo')); + }); - this.debouncedQuery - .pipe(takeUntil(this.destroy$), - debounceTime(500)) - .subscribe((_) => this.refresh()); - - this.textInputCallback = () => { this.debouncedQuery.next(); } } // ngOnInit - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe( - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }); - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }) - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('variants-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit - refresh() { - this.isLoading = true - this.loadedPages = 1 - this.queryRef.refetch({ - userName: this.nameInput ? this.nameInput : undefined, - orgName: this.orgNameInput ? { "name": this.orgNameInput } : undefined, - userRole: this.roleInput ? this.roleInput : undefined - }) - } - - onModelChanged() { - this.debouncedQuery.next(); - } + this.queryRef + .refetch({ + userName: this.nameInput ? this.nameInput : undefined, + orgName: this.orgNameInput ? { "name": this.orgNameInput } : undefined, + userRole: this.roleInput ? this.roleInput : undefined + }) + .then(() => this.scrollIndex$.next(0)); - onSortChanged(e: SortDirectionEvent) { - this.isLoading = true - this.loadedPages = 1 - this.queryRef.refetch({ sortBy: buildSortParams(e) }) + this.cdr.detectChanges() } // virtual scroll helpers @@ -201,24 +171,4 @@ export class CvcUsersTableComponent implements OnInit { return data.id; } - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - loadMore(afterCursor: Maybe): void { - this.isLoading = true - this.queryRef.fetchMore({ - variables: { - first: this.fetchMorePageSize, - after: afterCursor - } - }) - - this.loadedPages += 1 - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.unsubscribe(); - } } diff --git a/client/src/app/components/users/users-table/users-table.module.ts b/client/src/app/components/users/users-table/users-table.module.ts index 9e05789e6..69473cd96 100644 --- a/client/src/app/components/users/users-table/users-table.module.ts +++ b/client/src/app/components/users/users-table/users-table.module.ts @@ -1,27 +1,30 @@ -import { NgModule } from "@angular/core"; import { CommonModule } from "@angular/common"; -import { CvcUsersTableComponent } from "./users-table.component"; -import { NzTableModule } from 'ng-zorro-antd/table'; +import { NgModule } from "@angular/core"; +import { FormsModule } from "@angular/forms"; +import { CvcOrganizationTagModule } from "@app/components/organizations/organization-tag/organization-tag.module"; import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; import { CvcLinkTagModule } from '@app/components/shared/link-tag/link-tag.module'; -import { ReactiveComponentModule } from '@ngrx/component'; -import { CvcUserTagModule } from "../user-tag/user-tag.module"; -import { NzIconModule } from "ng-zorro-antd/icon"; -import { NzToolTipModule } from "ng-zorro-antd/tooltip"; -import { CvcOrganizationTagModule } from "@app/components/organizations/organization-tag/organization-tag.module"; -import { NzSelectModule } from "ng-zorro-antd/select"; -import { FormsModule } from "@angular/forms"; -import { NzButtonModule } from "ng-zorro-antd/button"; +import { CvcNoMoreRowsModule } from "@app/components/shared/no-more-rows/no-more-rows.module"; +import { CvcTableCountsModule } from "@app/components/shared/table-counts/table-counts.module"; +import { CvcTagListModule } from "@app/components/shared/tag-list/tag-list.module"; +import { CvcTagOverflowModule } from "@app/components/shared/tag-overflow/tag-overflow.module"; import { CvcPipesModule } from "@app/core/pipes/pipes.module"; import { CivicTimeagoFormatter } from "@app/core/utilities/timeago-formatter"; -import { TimeagoFormatter, TimeagoModule } from "ngx-timeago"; -import { NzCardModule } from "ng-zorro-antd/card"; -import { NzTypographyModule } from "ng-zorro-antd/typography"; -import { CvcTagListModule } from "@app/components/shared/tag-list/tag-list.module"; -import { NzTagModule } from "ng-zorro-antd/tag"; import { CvcAutoHeightCardModule } from "@app/directives/auto-height-card/auto-height-card.module"; import { CvcAutoHeightTableModule } from "@app/directives/auto-height-table/auto-height-table.module"; -import { CvcTagOverflowModule } from "@app/components/shared/tag-overflow/tag-overflow.module"; +import { CvcTableScrollModule } from "@app/directives/table-scroll/table-scroll.module"; +import { ReactiveComponentModule } from '@ngrx/component'; +import { NzButtonModule } from "ng-zorro-antd/button"; +import { NzCardModule } from "ng-zorro-antd/card"; +import { NzIconModule } from "ng-zorro-antd/icon"; +import { NzSelectModule } from "ng-zorro-antd/select"; +import { NzTableModule } from 'ng-zorro-antd/table'; +import { NzTagModule } from "ng-zorro-antd/tag"; +import { NzToolTipModule } from "ng-zorro-antd/tooltip"; +import { NzTypographyModule } from "ng-zorro-antd/typography"; +import { TimeagoFormatter, TimeagoModule } from "ngx-timeago"; +import { CvcUserTagModule } from "../user-tag/user-tag.module"; +import { CvcUsersTableComponent } from "./users-table.component"; @NgModule({ declarations: [CvcUsersTableComponent], @@ -29,24 +32,29 @@ import { CvcTagOverflowModule } from "@app/components/shared/tag-overflow/tag-ov CommonModule, FormsModule, ReactiveComponentModule, - NzIconModule, + NzButtonModule, - NzToolTipModule, - NzTableModule, - NzSelectModule, NzCardModule, - NzTypographyModule, + NzIconModule, + NzSelectModule, + NzTableModule, NzTagModule, + NzToolTipModule, + NzTypographyModule, + CvcAutoHeightCardModule, CvcAutoHeightTableModule, - CvcTagOverflowModule, - CvcTagListModule, CvcClearableInputFilterModule, CvcLinkTagModule, - CvcUserTagModule, + CvcNoMoreRowsModule, + CvcOrganizationTagModule, CvcPipesModule, + CvcTableCountsModule, + CvcTableScrollModule, + CvcTagListModule, + CvcTagOverflowModule, + CvcUserTagModule, TimeagoModule.forChild({ formatter: {useClass: CivicTimeagoFormatter, provide: TimeagoFormatter} }), - CvcOrganizationTagModule ], exports: [CvcUsersTableComponent] }) diff --git a/client/src/app/components/variant-groups/variant-group-popover/variant-group-popover.component.less b/client/src/app/components/variant-groups/variant-group-popover/variant-group-popover.component.less index 5d4e87f30..a6d9d2fb2 100644 --- a/client/src/app/components/variant-groups/variant-group-popover/variant-group-popover.component.less +++ b/client/src/app/components/variant-groups/variant-group-popover/variant-group-popover.component.less @@ -1,3 +1 @@ -:host { - display: block; -} +@import 'themes/overrides/entity-popover.overrides.less'; diff --git a/client/src/app/components/variant-groups/variant-group-popover/variant-group-popover.component.ts b/client/src/app/components/variant-groups/variant-group-popover/variant-group-popover.component.ts index 32166ae76..947f3fb1f 100644 --- a/client/src/app/components/variant-groups/variant-group-popover/variant-group-popover.component.ts +++ b/client/src/app/components/variant-groups/variant-group-popover/variant-group-popover.component.ts @@ -1,7 +1,8 @@ import { Component, Input, OnInit } from '@angular/core'; import { Maybe, VariantGroupPopoverFieldsFragment, VariantGroupPopoverGQL } from '@app/generated/civic.apollo'; import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, map } from 'rxjs/operators'; @Component({ selector: 'cvc-variant-group-popover', @@ -22,7 +23,9 @@ export class CvcVariantGroupPopoverComponent implements OnInit { this.variantGroup$ = this.gql.watch({ variantGroupId: this.variantGroupId }) .valueChanges - .pipe(map(({ data }) => data.variantGroup)); + .pipe(map(({ data }) => data?.variantGroup), + filter(isNonNulled)); + } } diff --git a/client/src/app/components/variant-groups/variant-group-popover/variant-popover.query.gql b/client/src/app/components/variant-groups/variant-group-popover/variant-group-popover.query.gql similarity index 100% rename from client/src/app/components/variant-groups/variant-group-popover/variant-popover.query.gql rename to client/src/app/components/variant-groups/variant-group-popover/variant-group-popover.query.gql diff --git a/client/src/app/components/variant-groups/variant-groups-table/variant-groups-table.component.html b/client/src/app/components/variant-groups/variant-groups-table/variant-groups-table.component.html index de425c30a..673799f1a 100644 --- a/client/src/app/components/variant-groups/variant-groups-table/variant-groups-table.component.html +++ b/client/src/app/components/variant-groups/variant-groups-table/variant-groups-table.component.html @@ -27,15 +27,20 @@ - + + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -104,7 +106,7 @@ + [nzTooltipTitle]="!isScrolling ? variantNames : ''"> {{ variant }}{{ isLast ? '' : ', ' }} @@ -140,24 +142,19 @@ {{ this.cvcTitle }} - - ({{ totalCount | number }} total, showing {{ visibleCount | number }} of {{ filteredCount | number }} filtered) + + + - - - (0 total) - - - + - End of results reached + k nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/variant-groups/variant-groups-table/variant-groups-table.component.ts b/client/src/app/components/variant-groups/variant-groups-table/variant-groups-table.component.ts index dc14db1c4..6be57a6d3 100644 --- a/client/src/app/components/variant-groups/variant-groups-table/variant-groups-table.component.ts +++ b/client/src/app/components/variant-groups/variant-groups-table/variant-groups-table.component.ts @@ -1,229 +1,163 @@ -import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from "@angular/core"; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; +import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef } from "@angular/core"; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; import { ApolloQueryResult } from "@apollo/client/core"; -import { BrowseVariantGroupRowFieldsFragment, BrowseVariantGroupsGQL, BrowseVariantGroupsQuery, Maybe, PageInfo, QueryBrowseVariantGroupsArgs, VariantGroupsSortColumns } from "@app/generated/civic.apollo"; import { buildSortParams, SortDirectionEvent } from "@app/core/utilities/datatable-helpers"; +import { BrowseVariantGroupConnection, BrowseVariantGroupRowFieldsFragment, BrowseVariantGroupsGQL, BrowseVariantGroupsQuery, Maybe, PageInfo, QueryBrowseVariantGroupsArgs, VariantGroupsSortColumns } from "@app/generated/civic.apollo"; import { QueryRef } from "apollo-angular"; -import { Subject, Observable, BehaviorSubject, interval } from "rxjs"; -import { map, pluck, startWith, debounceTime, take, takeUntil, withLatestFrom, pairwise, filter, throttleTime, first, tap } from 'rxjs/operators'; -import { NzTableComponent } from "ng-zorro-antd/table"; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, withLatestFrom } from 'rxjs/operators'; +import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy"; + +export interface VariantGroupTableUserFilters { + nameInput?: Maybe + geneNameInput?: Maybe + variantNameInput?: Maybe +} +@UntilDestroy() @Component({ selector: 'cvc-variant-groups-table', templateUrl: './variant-groups-table.component.html', styleUrls: ['./variant-groups-table.component.less'], changeDetection: ChangeDetectionStrategy.OnPush }) -export class CvcVariantGroupsTableComponent implements OnInit, AfterViewInit, OnDestroy { +export class CvcVariantGroupsTableComponent implements OnInit { @Input() cvcHeight?: number @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe + @Input() initialPageSize = 30 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent; - viewport?: CdkVirtualScrollViewport; - - private debouncedQuery = new Subject(); - - queryRef?: QueryRef; - data$?: Observable>; - isLoading$?: Observable; - variantGroups$?: Observable[]>; - pageInfo$?: Observable; - filteredCount$?: Observable + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject - isLoading = false; + // INTERMEDIATE STREAMS + queryRef!: QueryRef; + result$!: Observable> + connection$!: Observable - showTooltips = true; + // PRESENTATION STREAMS + pageInfo$!: Observable + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject - textInputCallback?: () => void + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling: boolean = false //filters nameInput: Maybe geneNameInput: Maybe variantNameInput: Maybe - pageSize = 25 - sortColumns: typeof VariantGroupsSortColumns = VariantGroupsSortColumns - - totalCount?: number - visibleCount: number = this.pageSize - loadedPages: number = 1 - - isLoadingDelay = 300; - - noMoreRows$: BehaviorSubject; - - private destroy$ = new Subject(); + sortColumns = VariantGroupsSortColumns constructor(private gql: BrowseVariantGroupsGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() } - ngOnInit() { - this.queryRef = this.gql.watch({ first: this.pageSize }, { fetchPolicy: 'network-only' }) - - this.data$ = this.queryRef.valueChanges.pipe( - map((r) => { - return { - data: r.data, - loading: r.loading, - networkStatus: r.networkStatus - } - }) - ); - - this.isLoading$ = this.data$.pipe(pluck('loading'), startWith(true)); - - // handle loading state - this.data$ - .pipe( - takeUntil(this.destroy$), - pluck('loading'), - startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l; }); - - this.variantGroups$ = this.data$.pipe( - pluck('data', 'browseVariantGroups', 'edges'), - map((edges) => { - return edges.map(e => e.node); + this.queryRef = this.gql.watch({ first: this.initialPageSize }) + + this.result$ = this.queryRef.valueChanges + + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + this.connection$ = this.result$ + .pipe(pluck('data', 'browseVariantGroups'), + filter(isNonNulled)) as Observable; + + // entity row nodes + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); + }); + + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }) + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() }) - ); - - this.pageInfo$ = this.data$.pipe( - pluck('data', 'browseVariantGroups', 'pageInfo')); - this.filteredCount$ = this.data$.pipe( - pluck('data', 'browseVariantGroups', 'filteredCount')); - - this.filteredCount$.pipe(take(1)).subscribe(value => this.totalCount = value); - - this.filteredCount$.subscribe( - value => { - if (value < this.pageSize) { - this.visibleCount = value; - } - else { - this.visibleCount = this.pageSize * this.loadedPages; - if (this.visibleCount > value) { - this.visibleCount = value; - } + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); } - } - ) + }); - this.debouncedQuery - .pipe( - takeUntil(this.destroy$), - debounceTime(500)) - .subscribe((_) => this.refresh()); - - this.textInputCallback = () => { this.debouncedQuery.next(); } } // ngOnInit - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe( - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }) - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }) - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('evidence-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit refresh() { - this.isLoading = true; - this.loadedPages = 1; - this.queryRef?.refetch({ - name: this.nameInput, - geneNames: this.geneNameInput, - variantNames: this.variantNameInput - }) - } + this.queryRef + .refetch({ + name: this.nameInput, + geneNames: this.geneNameInput, + variantNames: this.variantNameInput + }) + .then(() => this.scrollIndex$.next(0)); - onSortChanged(e: SortDirectionEvent) { - this.loadedPages = 1 - this.queryRef?.refetch({ sortBy: buildSortParams(e) }) + this.cdr.detectChanges() } - loadMore(cursor: Maybe) { - this.isLoading = true; - this.queryRef?.fetchMore({ - variables: { - first: this.pageSize, - after: cursor - } - }); - - this.loadedPages += 1 - } - // // virtual scroll helpers trackByIndex(_: number, data: BrowseVariantGroupRowFieldsFragment): number { return data.id; } - - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.unsubscribe(); - } } diff --git a/client/src/app/components/variant-groups/variant-groups-table/variant-groups-table.module.ts b/client/src/app/components/variant-groups/variant-groups-table/variant-groups-table.module.ts index 5c8571f9b..e923f5c60 100644 --- a/client/src/app/components/variant-groups/variant-groups-table/variant-groups-table.module.ts +++ b/client/src/app/components/variant-groups/variant-groups-table/variant-groups-table.module.ts @@ -1,31 +1,23 @@ -import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { CvcVariantGroupsTableComponent } from './variant-groups-table.component'; +import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { ReactiveComponentModule } from '@ngrx/component'; -import { NzButtonModule } from 'ng-zorro-antd/button'; -import { NzTableModule } from 'ng-zorro-antd/table'; -import { NzFormModule } from 'ng-zorro-antd/form'; -import { NzInputModule } from 'ng-zorro-antd/input'; -import { NzIconModule } from 'ng-zorro-antd/icon'; -import { NzTypographyModule } from 'ng-zorro-antd/typography'; -import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; -import { NzSelectModule } from 'ng-zorro-antd/select'; import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; -import { CvcPipesModule } from '@app/core/pipes/pipes.module'; -import { CvcGeneTagModule } from '@app/components/genes/gene-tag/gene-tag.module'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; import { CvcVariantTagModule } from '@app/components/variants/variant-tag/variant-tag.module'; -import { CvcDiseaseTagModule } from '@app/components/diseases/cvc-disease-tag/cvc-disease-tag.module'; -import { CvcDrugTagModule } from '@app/components/drugs/cvc-drug-tag/cvc-drug-tag.module'; -import { CvcAssertionsTagModule } from '@app/components/assertions/assertions-tag/assertions-tag.module'; -import { CvcEvidenceTagModule } from '@app/components/evidence/evidence-tag/evidence-tag.module'; -import { CvcTagListModule } from '@app/components/shared/tag-list/tag-list.module'; -import { CvcTagOverflowModule } from '@app/components/shared/tag-overflow/tag-overflow.module'; -import { CvcVariantGroupTagModule } from '../variant-group-tag/variant-group-tag.module'; -import { NzCardModule } from 'ng-zorro-antd/card'; -import { NzTagModule } from 'ng-zorro-antd/tag'; +import { CvcPipesModule } from '@app/core/pipes/pipes.module'; import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; +import { ReactiveComponentModule } from '@ngrx/component'; +import { NzCardModule } from 'ng-zorro-antd/card'; +import { NzIconModule } from 'ng-zorro-antd/icon'; +import { NzTableModule } from 'ng-zorro-antd/table'; +import { NzTagModule } from 'ng-zorro-antd/tag'; +import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; +import { NzTypographyModule } from 'ng-zorro-antd/typography'; +import { CvcVariantGroupTagModule } from '../variant-group-tag/variant-group-tag.module'; +import { CvcVariantGroupsTableComponent } from './variant-groups-table.component'; @NgModule({ declarations: [CvcVariantGroupsTableComponent], @@ -33,32 +25,24 @@ import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto CommonModule, FormsModule, ReactiveComponentModule, - NzButtonModule, - NzTableModule, - NzFormModule, - NzInputModule, + + NzCardModule, NzIconModule, - NzTypographyModule, - NzToolTipModule, - NzSelectModule, NzIconModule, - NzCardModule, - NzTypographyModule, + NzTableModule, NzTagModule, + NzToolTipModule, + NzTypographyModule, + CvcAutoHeightCardModule, CvcAutoHeightTableModule, CvcClearableInputFilterModule, + CvcNoMoreRowsModule, CvcPipesModule, - CvcGeneTagModule, + CvcTableCountsModule, + CvcTableScrollModule, + CvcVariantGroupTagModule, CvcVariantTagModule, - CvcDiseaseTagModule, - CvcDrugTagModule, - CvcAssertionsTagModule, - CvcEvidenceTagModule, - CvcTagListModule, - CvcTagOverflowModule, - CvcClearableInputFilterModule, - CvcVariantGroupTagModule ], exports: [CvcVariantGroupsTableComponent] }) diff --git a/client/src/app/components/variant-types/variant-type-popover/variant-type-popover.component.ts b/client/src/app/components/variant-types/variant-type-popover/variant-type-popover.component.ts index e008000dc..b77b67447 100644 --- a/client/src/app/components/variant-types/variant-type-popover/variant-type-popover.component.ts +++ b/client/src/app/components/variant-types/variant-type-popover/variant-type-popover.component.ts @@ -1,7 +1,8 @@ import { Component, Input, OnInit } from "@angular/core"; import { Maybe, VariantTypePopoverFragment, VariantTypePopoverGQL } from "@app/generated/civic.apollo"; -import { map } from 'rxjs/operators' +import { filter, map } from 'rxjs/operators' import { Observable } from 'rxjs'; +import { isNonNulled } from "rxjs-etc"; @Component({ selector: 'cvc-variant-type-popover', @@ -21,6 +22,7 @@ export class CvcVariantTypePopoverComponent implements OnInit { } this.variantType$ = this.gql.watch({ variantTypeId: this.variantTypeId }) .valueChanges - .pipe(map(({ data }) => data.variantTypePopover)) + .pipe(map(({ data }) => data?.variantTypePopover), + filter(isNonNulled)); } } diff --git a/client/src/app/components/variant-types/variant-types-table/variant-types-table.component.html b/client/src/app/components/variant-types/variant-types-table/variant-types-table.component.html index d3920033a..e35f37616 100644 --- a/client/src/app/components/variant-types/variant-types-table/variant-types-table.component.html +++ b/client/src/app/components/variant-types/variant-types-table/variant-types-table.component.html @@ -26,15 +26,20 @@ - + + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -111,24 +114,20 @@ {{ this.cvcTitle }} - - ({{ totalCount | number }} total, showing {{ visibleCount | number }} of {{ filteredCount | number }} filtered) + + + - - - (0 total) - - + - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/variant-types/variant-types-table/variant-types-table.component.ts b/client/src/app/components/variant-types/variant-types-table/variant-types-table.component.ts index 469dca551..08dfefefa 100644 --- a/client/src/app/components/variant-types/variant-types-table/variant-types-table.component.ts +++ b/client/src/app/components/variant-types/variant-types-table/variant-types-table.component.ts @@ -1,230 +1,162 @@ -import { AfterViewInit, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core'; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; -import { Maybe, PageInfo, VariantTypeBrowseTableRowFieldsFragment, VariantTypesBrowseGQL, VariantTypesBrowseQuery, VariantTypesBrowseQueryVariables, VariantTypeSortColumns } from '@app/generated/civic.apollo'; +import { ChangeDetectorRef, Component, Input, OnInit, TemplateRef } from '@angular/core'; +import { ApolloQueryResult } from '@apollo/client/core'; import { buildSortParams, SortDirectionEvent } from '@app/core/utilities/datatable-helpers'; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; +import { BrowseVariantTypeConnection, Maybe, PageInfo, VariantTypeBrowseTableRowFieldsFragment, VariantTypesBrowseGQL, VariantTypesBrowseQuery, VariantTypesBrowseQueryVariables, VariantTypeSortColumns } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { QueryRef } from 'apollo-angular'; -import { BehaviorSubject, interval, Observable, Subject } from 'rxjs'; -import { tap, map, pluck, startWith, debounceTime, take, takeUntil, withLatestFrom, pairwise, filter, throttleTime, first } from 'rxjs/operators'; -import { NzTableComponent } from 'ng-zorro-antd/table'; -import { ApolloQueryResult } from '@apollo/client/core'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, withLatestFrom } from 'rxjs/operators'; + +export interface VariantTypesTableUserFilters { + soidFilter?: Maybe + nameFilter?: Maybe +} +@UntilDestroy() @Component({ selector: 'cvc-variant-types-table', templateUrl: './variant-types-table.component.html', styleUrls: ['./variant-types-table.component.less'] }) -export class CvcVariantTypesTableComponent implements OnInit, OnDestroy, AfterViewInit { +export class CvcVariantTypesTableComponent implements OnInit { @Input() cvcHeight?: number @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe + @Input() initialPageSize = 35 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent - viewport?: CdkVirtualScrollViewport - - private queryRef?: QueryRef data$?: Observable> - isLoading = false - filteredCount$?: Observable - pageInfo$?: Observable - variantTypes$?: Observable[]> + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject - initialPageSize = 50 - fetchMorePageSize = 25 - isLoadingDelay = 300 + // INTERMEDIATE STREAMS + queryRef!: QueryRef + result$!: Observable> + connection$!: Observable - noMoreRows$: BehaviorSubject; + // PRESENTATION STREAMS + pageInfo$!: Observable + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject + + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling = false // filters soidFilter: Maybe nameFilter: Maybe - showTooltips = true - - private debouncedQuery = new Subject(); - textInputCallback?: () => void - - sortColumns: typeof VariantTypeSortColumns = VariantTypeSortColumns - - totalCount?: number - visibleCount: number = this.initialPageSize - loadedPages: number = 1 - - private destroy$ = new Subject() + sortColumns = VariantTypeSortColumns constructor(private gql: VariantTypesBrowseGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() } ngOnInit() { - this.queryRef = this.gql.watch({ - first: this.initialPageSize - }, { fetchPolicy: 'network-only' }); - - this.data$ = this.queryRef.valueChanges - .pipe(map((r) => { - return { - data: r.data, - loading: r.loading, - networkStatus: r.networkStatus, - }; - })); - - this.variantTypes$ = this.data$.pipe( - pluck('data', 'variantTypes', 'edges'), - map((edges) => { - return edges.map((e) => e.node) - })); - - // handle loading state - this.data$ - .pipe(takeUntil(this.destroy$), - pluck('loading'), - startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l; }); - - this.filteredCount$ = this.data$.pipe( - pluck('data', 'variantTypes', 'filteredCount')); - - this.filteredCount$ - .pipe(takeUntil(this.destroy$), - take(1)) - .subscribe(value => this.totalCount = value); - - this.filteredCount$ - .pipe(takeUntil(this.destroy$)) - .subscribe(value => { - if (value < this.initialPageSize) { - this.visibleCount = value - } - else { - this.visibleCount = this.initialPageSize * this.loadedPages - if (this.visibleCount > value) { - this.visibleCount = value - } - } + this.queryRef = this.gql.watch({ first: this.initialPageSize }) + + this.result$ = this.queryRef.valueChanges + + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + // entity relay connection + this.connection$ = this.result$ + .pipe(pluck('data', 'variantTypes'), + filter(isNonNulled)) as Observable; + + // entity row nodes + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); }); - this.pageInfo$ = this.data$ - .pipe(takeUntil(this.destroy$), - pluck('data', 'variantTypes', 'pageInfo')); - - this.debouncedQuery - .pipe(takeUntil(this.destroy$), - debounceTime(500)) - .subscribe((_) => this.refresh()); + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }) + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() + }) + + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); + } + }); - this.textInputCallback = () => { this.debouncedQuery.next(); } } // ngOnInit - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe( - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }); - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }) - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('variants-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit - - onModelChanged() { this.debouncedQuery.next() } - - onSortChanged(e: SortDirectionEvent) { - this.isLoading = true - this.loadedPages = 1 - this.queryRef?.refetch({ - sortBy: buildSortParams(e) - }) - } - refresh() { - this.isLoading = true - this.loadedPages = 1 - this.queryRef?.refetch({ - name: this.nameFilter, - soid: this.soidFilter - }) + this.queryRef + .refetch({ + name: this.nameFilter, + soid: this.soidFilter + }) + .then(() => this.scrollIndex$.next(0)); + + this.cdr.detectChanges() } - // virtual scroll helpers trackByIndex(_: number, data: VariantTypeBrowseTableRowFieldsFragment): number { return data.id; } - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - loadMore(cursor: Maybe) { - this.isLoading = true - this.queryRef?.fetchMore({ - variables: { - first: this.fetchMorePageSize, - after: cursor - } - }); - - this.loadedPages += 1 - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.unsubscribe(); - } } diff --git a/client/src/app/components/variant-types/variant-types-table/variant-types-table.module.ts b/client/src/app/components/variant-types/variant-types-table/variant-types-table.module.ts index a25b3b020..06b765961 100644 --- a/client/src/app/components/variant-types/variant-types-table/variant-types-table.module.ts +++ b/client/src/app/components/variant-types/variant-types-table/variant-types-table.module.ts @@ -1,21 +1,24 @@ -import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { CvcVariantTypesTableComponent } from './variant-types-table.component'; -import { NzTableModule } from 'ng-zorro-antd/table'; -import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; import { CvcPhenotypeTagModule } from '@app/components/phenotypes/phenotype-tag/phenotype-tag.module'; +import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; import { CvcLinkTagModule } from '@app/components/shared/link-tag/link-tag.module'; -import { RouterModule } from '@angular/router'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; +import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; +import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; import { ReactiveComponentModule } from '@ngrx/component'; -import { CvcVariantTypeTagModule } from '../variant-type-tag/variant-type-tag.module'; -import { NzIconModule } from 'ng-zorro-antd/icon'; import { NzButtonModule } from 'ng-zorro-antd/button'; import { NzCardModule } from 'ng-zorro-antd/card'; -import { NzTypographyModule } from 'ng-zorro-antd/typography'; -import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; +import { NzIconModule } from 'ng-zorro-antd/icon'; +import { NzTableModule } from 'ng-zorro-antd/table'; import { NzTagModule } from 'ng-zorro-antd/tag'; -import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; -import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; +import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; +import { NzTypographyModule } from 'ng-zorro-antd/typography'; +import { CvcVariantTypeTagModule } from '../variant-type-tag/variant-type-tag.module'; +import { CvcVariantTypesTableComponent } from './variant-types-table.component'; @NgModule({ declarations: [CvcVariantTypesTableComponent], @@ -23,18 +26,23 @@ import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto CommonModule, RouterModule, ReactiveComponentModule, - NzTableModule, - NzIconModule, + NzButtonModule, NzCardModule, - NzTypographyModule, - NzToolTipModule, + NzIconModule, + NzTableModule, NzTagModule, + NzToolTipModule, + NzTypographyModule, + CvcAutoHeightCardModule, CvcAutoHeightTableModule, CvcClearableInputFilterModule, - CvcPhenotypeTagModule, CvcLinkTagModule, + CvcNoMoreRowsModule, + CvcPhenotypeTagModule, + CvcTableCountsModule, + CvcTableScrollModule, CvcVariantTypeTagModule, ], exports: [CvcVariantTypesTableComponent] diff --git a/client/src/app/components/variants/coordinates-card/coordinates-card.component.html b/client/src/app/components/variants/coordinates-card/coordinates-card.component.html new file mode 100644 index 000000000..5fe7b811f --- /dev/null +++ b/client/src/app/components/variants/coordinates-card/coordinates-card.component.html @@ -0,0 +1,119 @@ + + + + + + + + {{ variant.referenceBuild }} + + + + {{ variant.ensemblVersion}} + + + + + + + + + + + {{ coords.chromosome }} + + + + + {{ coords.start }} + + + + + {{ coords.stop }} + + + + + + {{ variant.referenceBases | ifEmpty: '--'}} + + + + + {{ variant.variantBases | ifEmpty: '--'}} + + + + + + + {{ coords.representativeTranscript }} + + + + + + + + + + + + + {{ coords.chromosome }} + + + + + {{ coords.start }} + + + + + {{ coords.stop }} + + + + + + {{ coords.representativeTranscript }} + + + + + + + + + + + + + + diff --git a/client/src/app/components/variants/coordinates-card/coordinates-card.component.less b/client/src/app/components/variants/coordinates-card/coordinates-card.component.less new file mode 100644 index 000000000..39dc75741 --- /dev/null +++ b/client/src/app/components/variants/coordinates-card/coordinates-card.component.less @@ -0,0 +1,24 @@ +// @import "themes/overrides/descriptions-overrides.less"; + +nz-card:first-of-type ::ng-deep { + .ant-card-body { + // remove card body padding + padding: 0; + // card title has a -1 bottom margin for some reason, partially occluding nz-description's top border + margin-top: 1px; + } + + // remove left & right borders from all descriptions boxes + nz-descriptions ::ng-deep .ant-descriptions-view { + border-left: none; + border-right: none; + } + + // remove top & bottom borders from top & bottom descriptions boxes + nz-descriptions:first-child ::ng-deep .ant-descriptions-view { + border-top: none; + } + nz-descriptions:last-child ::ng-deep .ant-descriptions-view { + border-bottom: none; + } +} diff --git a/client/src/app/components/variants/coordinates-card/coordinates-card.component.ts b/client/src/app/components/variants/coordinates-card/coordinates-card.component.ts new file mode 100644 index 000000000..6310c64cc --- /dev/null +++ b/client/src/app/components/variants/coordinates-card/coordinates-card.component.ts @@ -0,0 +1,41 @@ +import { Component, Input, OnInit } from '@angular/core'; +import { CoordinatesCardFieldsFragment, CoordinatesCardGQL, CoordinatesCardQuery, CoordinatesCardQueryVariables, Maybe, Variant } from '@app/generated/civic.apollo'; +import { QueryRef } from 'apollo-angular'; +import { Observable } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, pluck } from 'rxjs/operators'; + +@Component({ + selector: 'cvc-coordinates-card', + templateUrl: './coordinates-card.component.html', + styleUrls: ['./coordinates-card.component.less'] +}) +export class CvcCoordinatesCard implements OnInit { + @Input() cvcVariantId!: number + + queryRef!: QueryRef; + loading$!: Observable; + variant$!: Observable>; + + constructor(private gql: CoordinatesCardGQL) {} + + ngOnInit(): void { + if (!this.cvcVariantId) { + throw new Error('CvcCoordinatesCard requires valid cvcVariantId Input, none provided.') + } + + this.queryRef = this.gql.watch({ variantId: this.cvcVariantId }); + + let observable = this.queryRef.valueChanges; + + this.loading$ = observable + .pipe(pluck('loading'), + filter(isNonNulled)) + + this.variant$ = observable + .pipe(pluck('data', 'variant'), + filter(isNonNulled)) + + } + +} diff --git a/client/src/app/components/variants/coordinates-card/coordinates-card.module.ts b/client/src/app/components/variants/coordinates-card/coordinates-card.module.ts new file mode 100644 index 000000000..2ce239580 --- /dev/null +++ b/client/src/app/components/variants/coordinates-card/coordinates-card.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { CvcCoordinatesCard} from './coordinates-card.component'; +import { NzCardModule } from 'ng-zorro-antd/card'; +import { NzDescriptionsModule } from 'ng-zorro-antd/descriptions'; +import { CvcLinkTagModule } from '@app/components/shared/link-tag/link-tag.module'; +import { CvcEmptyRevisableModule } from '@app/components/shared/empty-revisable/empty-revisable.module'; +import { ReactiveComponentModule } from '@ngrx/component'; +import { CvcPipesModule } from '@app/core/pipes/pipes.module'; + +@NgModule({ + declarations: [CvcCoordinatesCard], + imports: [ + CommonModule, + ReactiveComponentModule, + NzCardModule, + NzDescriptionsModule, + CvcPipesModule, + CvcLinkTagModule, + CvcEmptyRevisableModule, + ], + exports: [CvcCoordinatesCard] +}) +export class CvcCoordinatesCardModule { } diff --git a/client/src/app/components/variants/coordinates-card/coordinates-card.query.gql b/client/src/app/components/variants/coordinates-card/coordinates-card.query.gql new file mode 100644 index 000000000..c8fd0656a --- /dev/null +++ b/client/src/app/components/variants/coordinates-card/coordinates-card.query.gql @@ -0,0 +1,26 @@ +query CoordinatesCard($variantId: Int!) { + variant(id: $variantId) { + ...CoordinatesCardFields + } +} + +fragment CoordinatesCardFields on Variant { + id + name + referenceBuild + ensemblVersion + primaryCoordinates { + representativeTranscript + chromosome + start + stop + } + secondaryCoordinates { + representativeTranscript + chromosome + start + stop + } + referenceBases + variantBases +} diff --git a/client/src/app/components/variants/variant-popover/variant-popover.component.ts b/client/src/app/components/variants/variant-popover/variant-popover.component.ts index baf688d24..3aae7ac78 100644 --- a/client/src/app/components/variants/variant-popover/variant-popover.component.ts +++ b/client/src/app/components/variants/variant-popover/variant-popover.component.ts @@ -1,7 +1,8 @@ -import { Component, OnInit, Input } from "@angular/core"; -import { map } from 'rxjs/operators' -import { Observable } from 'rxjs'; +import { Component, Input, OnInit } from "@angular/core"; import { Maybe, VariantPopoverFieldsFragment, VariantPopoverGQL } from "@app/generated/civic.apollo"; +import { Observable } from 'rxjs'; +import { isNonNulled } from "rxjs-etc"; +import { filter, map } from 'rxjs/operators'; @Component({ selector: 'cvc-variant-popover', @@ -22,6 +23,7 @@ export class CvcVariantPopoverComponent implements OnInit { this.variant$ = this.gql.watch({ variantId: this.variantId }) .valueChanges - .pipe(map(({ data }) => data.variant)); + .pipe(map(({ data }) => data?.variant), + filter(isNonNulled)); } } diff --git a/client/src/app/components/variants/variants-menu/variants-menu.component.ts b/client/src/app/components/variants/variants-menu/variants-menu.component.ts index 1d9283abd..fb78d3786 100644 --- a/client/src/app/components/variants/variants-menu/variants-menu.component.ts +++ b/client/src/app/components/variants/variants-menu/variants-menu.component.ts @@ -9,14 +9,18 @@ import { VariantDisplayFilter, PageInfo, VariantMenuSortColumns, - SortDirection + SortDirection, + VariantConnection } from "@app/generated/civic.apollo"; -import { map, debounceTime } from 'rxjs/operators' -import { Observable, Subject } from 'rxjs'; +import { map, debounceTime, pluck, distinctUntilChanged, filter } from 'rxjs/operators' +import { Observable, Observer, Subject } from 'rxjs'; import { Apollo, QueryRef } from "apollo-angular"; import { ApolloQueryResult } from "@apollo/client/core"; +import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy"; +import { isNonNulled } from "rxjs-etc"; +import { tag } from "rxjs-spy/cjs/operators"; - +@UntilDestroy() @Component({ selector: 'cvc-variant-menu', templateUrl: './variants-menu.component.html', @@ -35,11 +39,13 @@ export class CvcVariantsMenuComponent implements OnInit { sortBy: VariantMenuSortColumns = VariantMenuSortColumns.Name variantNameFilter: Maybe; - private debouncedQuery = new Subject(); - private results$!: Observable>; - private initialQueryVars!: VariantsMenuQueryVariables; + private debouncedQuery = new Subject() + private result$!: Observable> + connection$!: Observable + private initialQueryVars!: VariantsMenuQueryVariables private pageSize = 50; + constructor(private gql: VariantsMenuGQL) { } ngOnInit() { @@ -54,21 +60,26 @@ export class CvcVariantsMenuComponent implements OnInit { }; this.queryRef$ = this.gql.watch(this.initialQueryVars); - this.results$ = this.queryRef$.valueChanges; + this.result$ = this.queryRef$.valueChanges; + + this.connection$ = this.result$ + .pipe(map(r => r.data?.variants), + filter(isNonNulled)) as Observable; - this.pageInfo$ = this.results$.pipe( - map(({ data }) => data.variants.pageInfo) - ); + this.pageInfo$ = this.connection$ + .pipe(map(c => c.pageInfo), + filter(isNonNulled)); - this.menuVariants$ = this.results$.pipe( - map(({ data }) => data.variants.edges.map((e) => e.node)) - ); + this.menuVariants$ = this.connection$ + .pipe(map(c => c.edges.map((e) => e.node), + filter(isNonNulled))); - this.totalVariants$ = this.results$ - .pipe(map(({data}) => data.variants.totalCount)); + this.totalVariants$ = this.connection$ + .pipe(map(c => c.totalCount)); this.debouncedQuery - .pipe(debounceTime(500)) + .pipe(debounceTime(500), + untilDestroyed(this)) .subscribe((_) => this.refresh()); } diff --git a/client/src/app/components/variants/variants-table/variants-table.component.html b/client/src/app/components/variants/variants-table/variants-table.component.html index 2fb139bcf..fdc885b64 100644 --- a/client/src/app/components/variants/variants-table/variants-table.component.html +++ b/client/src/app/components/variants/variants-table/variants-table.component.html @@ -27,15 +27,20 @@ - + - Drugs {{ drugNameInput === undefined ? 'undefined' : drugNameInput }} + Drugs + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> + (inputModelChange)="filterChange$.next()"> @@ -165,24 +170,19 @@ {{ this.cvcTitle }} - - ({{ totalCount | number }} total, showing {{ visibleCount | number }} of {{ filteredCount | number }} filtered) + + + - - - (0 total) - - - + - End of results reached + nzType="sync" + nzSpin> + Loading… + diff --git a/client/src/app/components/variants/variants-table/variants-table.component.ts b/client/src/app/components/variants/variants-table/variants-table.component.ts index 146b0a932..a3f37bd2f 100644 --- a/client/src/app/components/variants/variants-table/variants-table.component.ts +++ b/client/src/app/components/variants/variants-table/variants-table.component.ts @@ -1,77 +1,81 @@ -import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core'; -import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, TemplateRef } from '@angular/core'; import { ApolloQueryResult } from '@apollo/client/core'; -import { BrowseVariantsGQL, BrowseVariantsQuery, Maybe, PageInfo, QueryBrowseVariantsArgs, VariantGridFieldsFragment, VariantsSortColumns, } - from '@app/generated/civic.apollo'; -import { buildSortParams, SortDirectionEvent, WithName } from '@app/core/utilities/datatable-helpers'; +import { buildSortParams, SortDirectionEvent } from '@app/core/utilities/datatable-helpers'; +import { ScrollEvent } from '@app/directives/table-scroll/table-scroll.directive'; +import { BrowseVariantConnection, BrowseVariantsFieldsFragment, BrowseVariantsGQL, BrowseVariantsQuery, BrowseVariantsQueryVariables, Maybe, PageInfo, VariantsSortColumns } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { QueryRef } from 'apollo-angular'; -import { BehaviorSubject, interval, Observable, Subject } from 'rxjs'; -import { tap, map, pluck, startWith, debounceTime, take, takeUntil, withLatestFrom, pairwise, filter, throttleTime, first } from 'rxjs/operators'; -import { NzTableComponent } from 'ng-zorro-antd/table'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { debounceTime, distinctUntilChanged, filter, map, pluck, skip, take, withLatestFrom } from 'rxjs/operators'; export interface VariantTableUserFilters { - variantNameInput: Maybe; - geneSymbolInput: Maybe; - diseaseNameInput: Maybe; - drugNameInput: Maybe; - variantAliasInput: Maybe; + variantNameInput?: Maybe + geneSymbolInput?: Maybe + diseaseNameInput?: Maybe + drugNameInput?: Maybe + variantAliasInput?: Maybe } +@UntilDestroy() @Component({ selector: 'cvc-variants-table', templateUrl: './variants-table.component.html', styleUrls: ['./variants-table.component.less'], changeDetection: ChangeDetectionStrategy.OnPush }) -export class CvcVariantsTableComponent implements OnDestroy, OnInit, AfterViewInit { +export class CvcVariantsTableComponent implements OnInit { @Input() cvcHeight?: number @Input() variantTypeId: Maybe @Input() variantGroupId: Maybe @Input() cvcTitleTemplate: Maybe> @Input() cvcTitle: Maybe + @Input() initialPageSize: number = 35 + @Input() + set initialUserFilters(f: Maybe) { + // assign any attributes in filters object to this class + if (f) Object.assign(this, f) + } - @ViewChild('virtualTable', { static: false }) - nzTableComponent?: NzTableComponent - viewport?: CdkVirtualScrollViewport - - private initialQueryArgs?: QueryBrowseVariantsArgs - private debouncedQuery = new Subject() - - queryRef!: QueryRef - data$?: Observable> - isLoading = false + // SOURCE STREAMS + scrollEvent$: BehaviorSubject + sortChange$: Subject + filterChange$: Subject - variants$?: Observable[]> - filteredCount$?: Observable - pageCount$?: Observable - pageInfo$?: Observable + // INTERMEDIATE STREAMS + queryRef!: QueryRef + result$!: Observable> + connection$!: Observable - totalCount?: number - initialPageSize = 50 - visibleCount: number = this.initialPageSize - loadedPages: number = 1 - fetchMorePageSize = 25 - isLoadingDelay = 300 + // PRESENTATION STREAMS + pageInfo$!: Observable + initialLoading$!: Observable + moreLoading$!: Observable + row$!: Observable[]> + scrollIndex$: Subject + noMoreRows$: BehaviorSubject - noMoreRows$: BehaviorSubject; + // need a static var for scrolling state b/c sub/unsub in + // virtual scroll rows degrades performance + isScrolling: boolean = false // filters - variantNameInput: Maybe = '' - geneSymbolInput: Maybe = '' - diseaseNameInput: Maybe = '' - drugNameInput: Maybe = '' - variantAliasInput: Maybe = '' - - textInputCallback?: () => void - - showTooltips = true + variantNameInput: Maybe + geneSymbolInput: Maybe + diseaseNameInput: Maybe + drugNameInput: Maybe + variantAliasInput: Maybe - sortColumns: typeof VariantsSortColumns = VariantsSortColumns + private initialQueryArgs?: BrowseVariantsQueryVariables - private destroy$ = new Subject() + sortColumns = VariantsSortColumns constructor(private gql: BrowseVariantsGQL, private cdr: ChangeDetectorRef) { - this.noMoreRows$ = new BehaviorSubject(false); + this.noMoreRows$ = new BehaviorSubject(false) + this.scrollEvent$ = new BehaviorSubject('stop') + this.sortChange$ = new Subject() + this.filterChange$ = new Subject() + this.scrollIndex$ = new Subject() } ngOnInit(): void { @@ -79,188 +83,98 @@ export class CvcVariantsTableComponent implements OnDestroy, OnInit, AfterViewIn first: this.initialPageSize, variantTypeId: this.variantTypeId, variantGroupId: this.variantGroupId - }; - - this.queryRef = this.gql - .watch(this.initialQueryArgs, { fetchPolicy: 'network-only' }); - - this.data$ = this.queryRef.valueChanges - .pipe(map((r) => { - return { - data: r.data, - loading: r.loading, - networkStatus: r.networkStatus, - }; - })); - - // handle loading state - this.data$ - .pipe(takeUntil(this.destroy$), - pluck('loading'), - startWith(true)) - .subscribe((l: boolean) => { this.isLoading = l; }); - - this.variants$ = this.data$ - .pipe(takeUntil(this.destroy$), - pluck('data', 'browseVariants', 'edges'), - map((edges) => { return edges.map((e) => e.node); })); - - this.pageInfo$ = this.data$ - .pipe(takeUntil(this.destroy$), - pluck('data', 'browseVariants', 'pageInfo')); - - this.filteredCount$ = this.data$ - .pipe( - pluck('data', 'browseVariants', 'filteredCount')); - - this.filteredCount$ - .pipe(takeUntil(this.destroy$), - take(1)) - .subscribe(value => this.totalCount = value); + } - this.filteredCount$ - .subscribe(value => { - if (value < this.initialPageSize) { - this.visibleCount = value - } - else { - this.visibleCount = this.initialPageSize * this.loadedPages - if (this.visibleCount > value) { - this.visibleCount = value - } - } + this.queryRef = this.gql.watch(this.initialQueryArgs) + + this.result$ = this.queryRef.valueChanges + + // toggles table overlay 'Loading...' spinner + this.initialLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + take(2)); + + // toggles table header 'Loading...' tag + this.moreLoading$ = this.result$ + .pipe(pluck('loading'), + distinctUntilChanged(), + skip(2)); + + this.connection$ = this.result$ + .pipe(pluck('data', 'browseVariants'), + filter(isNonNulled)) as Observable; + + // entity row nodes + this.row$ = this.connection$ + .pipe(pluck('edges'), + filter(isNonNulled), + map((edges) => edges.map((e) => e.node))); + + // provided to table-scroll directive for fetchMore queries + this.pageInfo$ = this.connection$ + .pipe(pluck('pageInfo'), + filter(isNonNulled)); + + // refetch when column sort changes + this.sortChange$ + .pipe(untilDestroyed(this)) + .subscribe((e: SortDirectionEvent) => { + this.queryRef.refetch({ sortBy: buildSortParams(e) }); }); - this.pageCount$ = this.data$ - .pipe(takeUntil(this.destroy$), - pluck('data', 'browseVariants', 'pageCount'), - startWith(0)); - - this.debouncedQuery - .pipe(takeUntil(this.destroy$), - debounceTime(500)) - .subscribe((_) => { - this.refresh(); + // refresh when filters change + this.filterChange$ + .pipe(debounceTime(500), + untilDestroyed(this)) + .subscribe(() => { this.refresh() }); + + // for every onScrolled event, convert to bool & set isScrolling + this.scrollEvent$ + .pipe(map((e: ScrollEvent) => (e === 'stop' ? false : true)), + distinctUntilChanged(), + untilDestroyed(this)) + .subscribe((e) => { + this.isScrolling = e + this.cdr.detectChanges() }); - this.textInputCallback = () => { this.debouncedQuery.next(); } + // emit event from noMoreRow$ if hasNextPage false + this.scrollEvent$ + .pipe(filter((e) => e === 'bottom'), + withLatestFrom(this.pageInfo$), + map(([_, pageInfo]: [ScrollEvent, PageInfo]) => pageInfo), + untilDestroyed(this)) + .subscribe((pageInfo: PageInfo) => { + if (!pageInfo.hasNextPage) { + this.noMoreRows$.next(true); + this.cdr.detectChanges() + + // need to send a followup 'false' here or else + // ng won't interpret subsequent 'true' events as changes + setInterval(() => this.noMoreRows$.next(false)); + } + }); } // ngOnInit() - ngAfterViewInit(): void { - if (this.nzTableComponent && this.nzTableComponent.cdkVirtualScrollViewport && - this.pageInfo$) { - this.viewport = this.nzTableComponent.cdkVirtualScrollViewport; - const scrolled$ = this.viewport.elementScrolled().pipe(takeUntil(this.destroy$)); - - scrolled$ - .pipe( - // for each elementScrolled event, get latest pageInfo, - // and return page cursor and scroll offest - withLatestFrom(this.pageInfo$), - map(([_, pageInfo]: [Event, PageInfo]) => { - return { - pageInfo: pageInfo, - offset: this.viewport!.measureScrollOffset('bottom') - } - }), - // pair with previous event/cursor - pairwise(), - // reject events that occur outside scroll target - filter(([e1, e2]) => { - return (e2.offset < e1.offset && e2.offset < 140) - }), - // throttle events to prevent spamming loadMore() requests - throttleTime(500)) - .subscribe(([_, e2]) => { - if (e2.pageInfo.hasNextPage) { - this.loadMore(e2.pageInfo.endCursor); - } else { - // show 'end of results' msg, hide after an interval - if (this.noMoreRows$.getValue() === false) { - this.noMoreRows$.next(true); - interval(3000) - .pipe(first()) - .subscribe((_) => { - this.noMoreRows$.next(false); - this.cdr.detectChanges(); - }); - } - } - }); - - // TODO: update tag popovers to work similarly to how base tags now work. Popovers inherit Tooltip base class, so should hopefully also hide themselves automatically if nzTitle is set to an empty string - - // toggle tooltips off when scrolling - scrolled$ - .pipe( - takeUntil(this.destroy$), - tap((_) => { this.showTooltips = false; }), // on scroll event toggle tooltips off - debounceTime(500) // wait 500ms, then execute subsribed function - ).subscribe((_) => { - this.showTooltips = true; // toggle tooltips on - this.cdr.detectChanges(); // force refresh - }) - - // force viewport check after initial render - this.viewport.renderedRangeStream - .pipe(first()) - .subscribe((_) => { this.viewport!.checkViewportSize(); }); - - } else { - console.error('variants-table unable to find cdkVirtualScrollViewport.'); - } - } // ngAfterViewInit - - onSortChanged(e: SortDirectionEvent) { - this.isLoading = true; - this.loadedPages = 1 - this.queryRef?.refetch({ - ...this.initialQueryArgs, - sortBy: buildSortParams(e), - }); - } - - onModelUpdated(_: Maybe) { - this.debouncedQuery.next(); - } - // fetch a new set of records refresh() { - this.isLoading = true; - this.loadedPages = 1 - this.queryRef.refetch({ - diseaseName: this.diseaseNameInput, - drugName: this.drugNameInput, - variantName: this.variantNameInput ? this.variantNameInput : undefined, - variantAlias: this.variantAliasInput ? this.variantAliasInput : undefined, - entrezSymbol: this.geneSymbolInput, - }) - } - - loadMore(cursor: Maybe) { - this.isLoading = true; - this.queryRef?.fetchMore({ - variables: { - first: this.fetchMorePageSize, - after: cursor - } - }) - - this.loadedPages += 1 + this.queryRef + .refetch({ + diseaseName: this.diseaseNameInput, + drugName: this.drugNameInput, + variantName: this.variantNameInput ? this.variantNameInput : undefined, + variantAlias: this.variantAliasInput ? this.variantAliasInput : undefined, + entrezSymbol: this.geneSymbolInput, + }) + .then(() => this.scrollIndex$.next(0)); + + this.cdr.detectChanges() } // virtual scroll helpers - trackByIndex(_: number, data: VariantGridFieldsFragment): number { + trackByIndex(_: number, data: BrowseVariantsFieldsFragment): number { return data.id; } - scrollToIndex(index: number): void { - this.nzTableComponent?.cdkVirtualScrollViewport?.scrollToIndex(index); - } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.unsubscribe(); - } - } diff --git a/client/src/app/components/variants/variants-table/variants-table.module.ts b/client/src/app/components/variants/variants-table/variants-table.module.ts index 982cbd131..02e38bbf9 100644 --- a/client/src/app/components/variants/variants-table/variants-table.module.ts +++ b/client/src/app/components/variants/variants-table/variants-table.module.ts @@ -1,47 +1,51 @@ -import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { NzTableModule } from 'ng-zorro-antd/table'; -import { NzFormModule } from 'ng-zorro-antd/form'; -import { NzInputModule } from 'ng-zorro-antd/input'; -import { NzIconModule } from 'ng-zorro-antd/icon'; -import { NzTypographyModule } from 'ng-zorro-antd/typography'; -import { FormsModule } from '@angular/forms'; -import { ReactiveComponentModule } from '@ngrx/component'; -import { CvcTagOverflowModule } from '@app/components/shared/tag-overflow/tag-overflow.module'; - -import { CvcVariantsTableComponent } from './variants-table.component'; +import { NgModule } from '@angular/core'; import { CvcGeneTagModule } from '@app/components/genes/gene-tag/gene-tag.module'; -import { CvcVariantTagModule } from '../variant-tag/variant-tag.module'; -import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; +import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; +import { CvcNoMoreRowsModule } from '@app/components/shared/no-more-rows/no-more-rows.module'; import { CvcPlainTagOverflowModule } from '@app/components/shared/plain-tag-overflow/plain-tag-overflow.module'; +import { CvcTableCountsModule } from '@app/components/shared/table-counts/table-counts.module'; +import { CvcTagOverflowModule } from '@app/components/shared/tag-overflow/tag-overflow.module'; import { CvcPipesModule } from '@app/core/pipes/pipes.module'; -import { NzButtonModule } from 'ng-zorro-antd/button'; -import { NzCardModule } from 'ng-zorro-antd/card'; import { CvcAutoHeightCardModule } from '@app/directives/auto-height-card/auto-height-card.module'; import { CvcAutoHeightTableModule } from '@app/directives/auto-height-table/auto-height-table.module'; -import { CvcClearableInputFilterModule } from '@app/components/shared/clearable-input-filter/clearable-input-filter.module'; +import { CvcTableScrollModule } from '@app/directives/table-scroll/table-scroll.module'; +import { ReactiveComponentModule } from '@ngrx/component'; +import { NzButtonModule } from 'ng-zorro-antd/button'; +import { NzCardModule } from 'ng-zorro-antd/card'; +import { NzIconModule } from 'ng-zorro-antd/icon'; +import { NzTableModule } from 'ng-zorro-antd/table'; import { NzTagModule } from 'ng-zorro-antd/tag'; +import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; +import { NzTypographyModule } from 'ng-zorro-antd/typography'; +import { CvcVariantTagModule } from '../variant-tag/variant-tag.module'; +import { CvcVariantsTableComponent } from './variants-table.component'; @NgModule({ declarations: [CvcVariantsTableComponent], imports: [ CommonModule, ReactiveComponentModule, - NzTableModule, - NzIconModule, - NzTypographyModule, - NzToolTipModule, + NzButtonModule, NzCardModule, + NzIconModule, + NzTableModule, NzTagModule, - CvcGeneTagModule, - CvcVariantTagModule, - CvcTagOverflowModule, - CvcPlainTagOverflowModule, - CvcPipesModule, - CvcClearableInputFilterModule, + NzToolTipModule, + NzTypographyModule, + CvcAutoHeightCardModule, CvcAutoHeightTableModule, + CvcClearableInputFilterModule, + CvcGeneTagModule, + CvcNoMoreRowsModule, + CvcPipesModule, + CvcPlainTagOverflowModule, + CvcTableCountsModule, + CvcTableScrollModule, + CvcTagOverflowModule, + CvcVariantTagModule, ], exports: [CvcVariantsTableComponent] }) diff --git a/client/src/app/components/variants/variants-table/variants-table.query.gql b/client/src/app/components/variants/variants-table/variants-table.query.gql index 42142dafe..a0d59ca36 100644 --- a/client/src/app/components/variants/variants-table/variants-table.query.gql +++ b/client/src/app/components/variants/variants-table/variants-table.query.gql @@ -35,7 +35,7 @@ query BrowseVariants( edges { cursor node { - ...VariantGridFields + ...BrowseVariantsFields } } totalCount @@ -44,7 +44,7 @@ query BrowseVariants( } } -fragment VariantGridFields on BrowseVariant { +fragment BrowseVariantsFields on BrowseVariant { id name link diff --git a/client/src/app/core/pipes/evidence-enum-display-type.ts b/client/src/app/core/pipes/evidence-enum-display-type.ts index fa733386a..62ceadd47 100644 --- a/client/src/app/core/pipes/evidence-enum-display-type.ts +++ b/client/src/app/core/pipes/evidence-enum-display-type.ts @@ -1,22 +1,31 @@ import { Pipe, PipeTransform } from '@angular/core'; -import { Maybe, EvidenceClinicalSignificance, EvidenceDirection, EvidenceType, VariantOrigin } from '@app/generated/civic.apollo'; -import { formatEvidenceEnum } from '../utilities/enum-formatters/format-evidence-enum'; +import { Maybe } from '@app/generated/civic.apollo'; +import { formatEvidenceEnum, InputEnum } from '../utilities/enum-formatters/format-evidence-enum'; export type EnumOutputStyle = 'display-string' | 'icon-name' -export type InputEnum = EvidenceClinicalSignificance | EvidenceDirection | EvidenceType | VariantOrigin - @Pipe({ name: 'evidenceEnumDisplay', pure: true }) export class EvidenceEnumDisplayPipe implements PipeTransform { - transform(value: Maybe, context: EnumOutputStyle = 'display-string') : string { + transform(value: Maybe, context: EnumOutputStyle = 'display-string', propertyType?: 'clinical-significance' | 'type' ) : string { if(value === undefined) return '' if (context === 'display-string') { return formatEvidenceEnum(value); // return this.formatString(value) } else { + if(value == "PROTECTIVENESS") { + return "civic-protective"; + } + console.log(value) + console.log(propertyType) + if(propertyType == 'type' && value == "ONCOGENIC") { + return 'civic-oncogenictype' + } + if(propertyType == 'clinical-significance' && value == "ONCOGENIC") { + return 'civic-oncogenicsignificance' + } return `civic-${value.replace(/_/g, '').toLowerCase()}` } } diff --git a/client/src/app/core/pipes/evidence-enum-tooltip.pipe.ts b/client/src/app/core/pipes/evidence-enum-tooltip.pipe.ts new file mode 100644 index 000000000..c630949fb --- /dev/null +++ b/client/src/app/core/pipes/evidence-enum-tooltip.pipe.ts @@ -0,0 +1,22 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import { Maybe } from '@app/generated/civic.apollo'; +import { getEvidenceEnumTooltip } from '../utilities/enum-tooltips/get-evidence-enum-tooltip'; + +@Pipe({ + name: 'enumTooltip', + pure: true +}) +export class EvidenceEnumTooltipPipe implements PipeTransform { + transform( + value: string | symbol | number, // value of attribute + name: string | symbol, // name of entity attribute + // optional contextual type (evidence/assertionType) + contextType: Maybe = undefined, + // optional contextual entity ('Assertion' or 'EvidenceType') + contextEntity: Maybe = undefined + ) { + if(!name) return '' + if(!value) return '' + return getEvidenceEnumTooltip(name, value, contextType, contextEntity) + } +} diff --git a/client/src/app/core/pipes/pipes.module.ts b/client/src/app/core/pipes/pipes.module.ts index dd30da956..b1bbf97d7 100644 --- a/client/src/app/core/pipes/pipes.module.ts +++ b/client/src/app/core/pipes/pipes.module.ts @@ -7,6 +7,7 @@ import { DrugInteractionEnumDisplayPipe } from './drug-interaction-enum-display. import { EnumToTitlePipe } from './enum-to-title-pipe'; import { EventVerbiagePipe } from './event-verbiage-pipe'; import { EvidenceEnumDisplayPipe } from './evidence-enum-display-type'; +import { EvidenceEnumTooltipPipe } from './evidence-enum-tooltip.pipe'; import { EvidenceLevelDisplayPipe } from './evidence-level-display.pipe'; import { HighlightTypeaheadPipe } from './highlight-typeahead-pipe'; import { IconNameForEventActionPipe } from './icon-name-for-event-action-pipe'; @@ -30,6 +31,7 @@ import { TypenameToRoutePipe } from './typename-to-route-pipe'; EnumToTitlePipe, EventVerbiagePipe, EvidenceEnumDisplayPipe, + EvidenceEnumTooltipPipe, EvidenceLevelDisplayPipe, HighlightTypeaheadPipe, IconNameForEventActionPipe, @@ -55,6 +57,7 @@ import { TypenameToRoutePipe } from './typename-to-route-pipe'; EnumToTitlePipe, EventVerbiagePipe, EvidenceEnumDisplayPipe, + EvidenceEnumTooltipPipe, EvidenceLevelDisplayPipe, HighlightTypeaheadPipe, IconNameForEventActionPipe, diff --git a/client/src/app/core/services/viewer/viewer.service.ts b/client/src/app/core/services/viewer/viewer.service.ts index 59381c412..c2923465f 100644 --- a/client/src/app/core/services/viewer/viewer.service.ts +++ b/client/src/app/core/services/viewer/viewer.service.ts @@ -1,20 +1,11 @@ -import { Injectable, OnDestroy } from '@angular/core'; import { HttpClient } from "@angular/common/http"; - +import { Injectable } from '@angular/core'; +import { CoiStatus, Maybe, Organization, User, UserRole, ViewerBaseGQL } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { QueryRef } from 'apollo-angular'; - import { Observable } from 'rxjs'; -import { pluck, map, shareReplay, startWith } from 'rxjs/operators'; - -import { - User, - Organization, - ViewerBaseGQL, - Maybe, - UserRole, - CoiStatus -} from '@app/generated/civic.apollo'; +import { map, pluck, shareReplay, startWith } from 'rxjs/operators'; export interface Viewer extends User { mostRecentOrg: Maybe; @@ -28,24 +19,13 @@ export interface Viewer extends User { invalidCoi: boolean } -export const InitialViewer: Viewer = { - mostRecentOrg: undefined, - signedIn: false, - isAdmin: false, - isEditor: false, - isCurator: false, - canCurate: false, - canModerate: false, - invalidCoi: true, -} +@UntilDestroy() @Injectable({ providedIn: 'root' }) -export class ViewerService implements OnDestroy { +export class ViewerService { private queryRef!: QueryRef; - data$: Observable; - isLoading$: Observable; viewer$: Observable; signedIn$: Observable; @@ -58,53 +38,54 @@ export class ViewerService implements OnDestroy { canCurate$: Observable; canModerate$: Observable; + initialViewer: Viewer = { + mostRecentOrg: undefined, + signedIn: false, + isAdmin: false, + isEditor: false, + isCurator: false, + canCurate: false, + canModerate: false, + invalidCoi: true, + } + constructor( private viewerBaseGQL: ViewerBaseGQL, private http: HttpClient, ) { - this.queryRef = this.viewerBaseGQL.watch(); - this.data$ = this.queryRef.valueChanges.pipe( - map((r: any) => { - return { - data: r.data, - loading: r.loading, - networkStatus: r.networkStatus - }; - }), - shareReplay(1)); - - this.isLoading$ = this.data$.pipe( - pluck('loading'), - startWith(true)); - - this.viewer$ = this.data$.pipe( - pluck('data', 'viewer'), - map((v: User): Viewer => { - return { - ...v, - signedIn: v === null ? false : true, - signedOut: v === null ? true : false, - canCurate: canCurate(v), - canModerate: canModerate(v), - isAdmin: isAdmin(v), - isEditor: isEditor(v), - isCurator: isCurator(v), - organizations: v === null ? [] : v.organizations, - mostRecentOrg: v === null ? undefined : mostRecentOrg(v), - invalidCoi: isEditor(v) && (!v.mostRecentConflictOfInterestStatement || v.mostRecentConflictOfInterestStatement.coiStatus === CoiStatus.Expired || v.mostRecentConflictOfInterestStatement.coiStatus === CoiStatus.Missing) - } - }), - startWith(InitialViewer), - shareReplay(1)); - - this.signedIn$ = this.viewer$.pipe( - map(v => v.signedIn)); - - this.signedOut$ = this.viewer$.pipe( - map(v => v.signedOut)); - - this.isAdmin$ = this.viewer$.pipe( - map(v => isAdmin(v))); + this.queryRef = this.viewerBaseGQL.watch(undefined, { notifyOnNetworkStatusChange: false }); + + this.viewer$ = this.queryRef + .valueChanges + .pipe( + pluck('data', 'viewer'), + map((v: User): Viewer => { + return { + ...v, + signedIn: v == null ? false : true, + signedOut: v == null ? true : false, + canCurate: canCurate(v), + canModerate: canModerate(v), + isAdmin: isAdmin(v), + isEditor: isEditor(v), + isCurator: isCurator(v), + organizations: v == null ? [] : v.organizations, + mostRecentOrg: v == null ? undefined : mostRecentOrg(v), + invalidCoi: isEditor(v) && (!v.mostRecentConflictOfInterestStatement || v.mostRecentConflictOfInterestStatement.coiStatus === CoiStatus.Expired || v.mostRecentConflictOfInterestStatement.coiStatus === CoiStatus.Missing) + } as Viewer + }), + startWith(this.initialViewer), + shareReplay(1), + ); + + this.signedIn$ = this.viewer$ + .pipe(map(v => v.signedIn)) + + this.signedOut$ = this.viewer$ + .pipe(map(v => v.signedOut)) + + this.isAdmin$ = this.viewer$ + .pipe(map(v => isAdmin(v))) this.isEditor$ = this.viewer$.pipe( map(v => isEditor(v))); @@ -139,7 +120,7 @@ export class ViewerService implements OnDestroy { return (v && (v.role === UserRole.Editor || v.role === UserRole.Admin) && v.mostRecentConflictOfInterestStatement && (v.mostRecentConflictOfInterestStatement?.coiStatus == CoiStatus.Conflict || v.mostRecentConflictOfInterestStatement?.coiStatus == CoiStatus.Valid)) ? true : false; } - function mostRecentOrg(v: User): Maybe{ + function mostRecentOrg(v: User): Maybe { if (v.mostRecentOrganizationId) { return v.organizations.find(o => o.id === v.mostRecentOrganizationId) } else { @@ -152,16 +133,12 @@ export class ViewerService implements OnDestroy { // GET /sign_out with HttpClient, then refetch Viewer signOut(): void { this.http.get('/api/sign_out') - .subscribe(d => { - this.refetch(); - }); + .pipe(untilDestroyed(this)) + .subscribe(() => this.queryRef.refetch()) } refetch(): void { this.queryRef.refetch(); } - ngOnDestroy(): void { - } - } diff --git a/client/src/app/core/utilities/enum-formatters/format-evidence-enum-tooltips.ts b/client/src/app/core/utilities/enum-formatters/format-evidence-enum-tooltips.ts new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/app/core/utilities/enum-formatters/format-evidence-enum.ts b/client/src/app/core/utilities/enum-formatters/format-evidence-enum.ts index 78ee6c03b..d5454c06f 100644 --- a/client/src/app/core/utilities/enum-formatters/format-evidence-enum.ts +++ b/client/src/app/core/utilities/enum-formatters/format-evidence-enum.ts @@ -2,9 +2,12 @@ import { AssertionClinicalSignificance, AssertionDirection, AssertionType, + DrugInteraction, EvidenceClinicalSignificance, EvidenceDirection, + EvidenceLevel, EvidenceType, + SourceSource, VariantOrigin, } from '@app/generated/civic.apollo'; @@ -15,7 +18,10 @@ export type InputEnum = | AssertionClinicalSignificance | AssertionDirection | AssertionType - | VariantOrigin; + | VariantOrigin + | SourceSource + | EvidenceLevel + | DrugInteraction; export function formatEvidenceEnum(value: InputEnum): string { let str: string[] diff --git a/client/src/app/core/utilities/enum-tooltips/get-evidence-enum-tooltip.ts b/client/src/app/core/utilities/enum-tooltips/get-evidence-enum-tooltip.ts new file mode 100644 index 000000000..4359a7973 --- /dev/null +++ b/client/src/app/core/utilities/enum-tooltips/get-evidence-enum-tooltip.ts @@ -0,0 +1,296 @@ +import { AssertionType, DrugInteraction, EvidenceDirection, EvidenceLevel, EvidenceType, Maybe, VariantOrigin } from '@app/generated/civic.apollo'; + +// map of tooltips for attributes without contextual differences +export type tooltipMap = { + [key: string | symbol]: { // attribute name + [key: string | symbol]: string // attribute value + } +} + +export const tooltips: tooltipMap = { + evidenceType: { + [EvidenceType.Diagnostic]: `Evidence pertains to a variant's impact on patient diagnosis (cancer subtype)`, + [EvidenceType.Functional]: `Evidence pertains to a variant that alters biological function from the reference state`, + [EvidenceType.Oncogenic]: `Evidence pertains to a somatic variant's involvement in tumor pathogenesis as described by the Hallmarks of Cancer`, + [EvidenceType.Predictive]: `Evidence pertains to a variant's effect on therapeutic response`, + [EvidenceType.Predisposing]: `Evidence pertains to a germline variant's role in conferring susceptibility to disease (including pathogenicity evaluations)`, + [EvidenceType.Prognostic]: `Evidence pertains to a variant's impact on disease progression, severity, or patient survival`, + }, + + assertionType: { + [AssertionType.Diagnostic]: `Assertion pertains to a variant's impact on patient diagnosis (cancer subtype)`, + [AssertionType.Predictive]: `Assertion pertains to a variant's effect on therapeutic response`, + [AssertionType.Predisposing]: `Assertion pertains to a germline variant's role in conferring susceptibility to disease (including pathogenicity evaluations)`, + [AssertionType.Prognostic]: `Assertion pertains to a variant's impact on disease progression, severity, or patient survival`, + [AssertionType.Oncogenic]: `Assertion pertains to a somatic variant's role in driving tumor formation, growth, and other processes related to the Hallmarks of Cancer`, + }, + + variantOrigin: { + [VariantOrigin.Somatic]: 'Variant is a mutation, found only in tumor cells, having arisen in a specific tissue (non-germ cell), and is not expected to be inherited or passed to offspring', + [VariantOrigin.RareGermline]: 'Variant is found in every cell (not restricted to tumor/diseased cells) and is thought to exist in less than 1% of the population relevant to this evidence item', + [VariantOrigin.CommonGermline]: 'Variant is found in every cell (not restricted to tumor/diseased cells) and is thought to exist in at least 1% of the population relevant to this evidence item', + [VariantOrigin.Unknown]: 'The variant origin is uncertain based on the available evidence', + [VariantOrigin.Na]: 'The variant type (e.g., expression) is not compatible (or easily classified) with the CIViC concept of variant origin', + }, + + evidenceLevel: { + [EvidenceLevel.A]: 'Proven/consensus association in human medicine', + [EvidenceLevel.B]: 'Clinical trial or other primary patient data supports association', + [EvidenceLevel.C]: 'Individual case reports from clinical journals', + [EvidenceLevel.D]: 'In vivo or in vitro models support association', + [EvidenceLevel.E]: 'Indirect evidence', + }, + + drugInteractionType: { + [DrugInteraction.Combination]: 'The drugs listed were used as part of a combination therapy approach', + [DrugInteraction.Sequential]: 'The drugs listed were used at separate timepoints in the same treatment plan', + [DrugInteraction.Substitutes]: 'The drugs listed are often considered to be of the same family, or behave similarly in a treatment setting', + }, + + evidenceRating: { + 1: 'Poor - Claim is not supported well by experimental evidence. Results are not reproducible, or have very small sample size. No follow-up is done to validate novel claims', + 2: 'Adequate - Evidence is not well supported by experimental data, and little follow-up data is available. Experiments may lack proper controls, have small sample size, or are not statistically convincing', + 3: 'Average - Evidence is convincing, but not supported by a breadth of experiments. May be smaller scale projects, or novel results without many follow-up experiments. Discrepancies from expected results are explained and not concerning', + 4: 'Strong - Well supported evidence. Experiments are well controlled, and results are convincing. Any discrepancies from expected results are well-explained and not concerning', + 5: 'Excellent - Solid, well supported evidence from a lab or journal with respected academic standing. Experiments are well controlled, and results are clean and reproducible across multiple replicates. Evidence confirmed using separate methods' + } +} + +// a map of tooltips that differ based on their display context (entity type, evidence/asssertion type) +export type ContextualTooltipMap = { + [key: string | symbol]: { // TODO: type as [key in ContextualAttribute]?: { + [key: string | symbol]: { // TODO: type as [key in TooltipContext]?: { + [key: string | symbol]: { // TODO: type as [key in InputEnum]? : {} + [key: string | number | symbol]: string // TODO: type as [key in TooltipEntity] + } + } + } +} + +export const contextualTooltips: ContextualTooltipMap = { + // Clinical Significance + clinicalSignificance: { + PREDICTIVE: { + ADVERSE_RESPONSE: { + EvidenceItem: 'Associated with an adverse response to drug treatment', + Assertion: 'Associated with an adverse response to drug treatment' + }, + REDUCED_SENSITIVITY: { + EvidenceItem: 'Response to treatment is lower than seen in other treatment contexts', + Assertion: 'Response to treatment is lower than seen in other treatment contexts' + }, + RESISTANCE: { + EvidenceItem: 'Associated with clinical or preclinical resistance to treatment', + Assertion: 'Associated with clinical or preclinical resistance to treatment' + }, + SENSITIVITYRESPONSE: { + EvidenceItem: 'Associated with clinical or preclinical response to treatment', + Assertion: 'Associated with a clinical or preclinical response to treatment' + }, + NA: { + EvidenceItem: 'Clinical Significance is not applicable', + Assertion: 'Clinical Significance is not applicable' + } + }, + DIAGNOSTIC: { + POSITIVE: { + EvidenceItem: 'Associated with diagnosis of disease or subtype', + Assertion: 'Associated with diagnosis of disease or subtype' + }, + NEGATIVE: { + EvidenceItem: 'Associated with lack of disease or subtype', + Assertion: 'Associated with lack of disease or subtype' + } + }, + PROGNOSTIC: { + BETTER_OUTCOME: { + EvidenceItem: 'Demonstrates better than expected clinical outcome', + Assertion: 'Demonstrates better than expected clinical outcome', + }, + POOR_OUTCOME: { + EvidenceItem: 'Demonstrates worse than expected clinical outcome', + Assertion: 'Demonstrates worse than expected clinical outcome', + }, + Na: { + EvidenceItem: 'Clinical Significance is not applicable', + Assertion: 'Clinical Significance is not applicable' + } + }, + PREDISPOSING: { + PATHOGENIC: { + Assertion: 'Very strong evidence the variant is pathogenic', + }, + LIKELY_PATHOGENIC: { + Assertion: 'Strong evidence (>90% certainty) the variant is pathogenic', + }, + BENIGN: { + Assertion: 'Very strong evidence the variant is benign', + }, + LIKELY_BENIGN: { + Assertion: 'Not expected to have a major effect on disease', + }, + UNCERTAIN_SIGNIFICANCE: { + Assertion: 'Does not meet the ACMG/AMP criteria for pathogenic/benign, or the evidence is conflicting', + }, + Na: { + EvidenceItem: 'Clinical Significance is not applicable', + }, + PREDISPOSITION: { + EvidenceItem: 'Germline variant has predisposing potential for cancer, and may meet ACMG/AMP criteria supporting pathogenic or benign classification.' + }, + PROTECTIVENESS: { + EvidenceItem: 'Germline variant has properties that protect individuals from acquiring cancer.' + }, + }, + ONCOGENIC: { + ONCOGENICITY: { + EvidenceItem: 'Somatic variant has oncogenic potential for driving cancer, and may meet ClinGen/CGC/VICC criteria supporting pathogenic or benign classification.', + }, + PROTECTIVENESS: { + EvidenceItem: 'Somatic variant has a protective role and minimizes co-occuring driver variants, tumor malignancy, or other oncogenic tumor properties.' + }, + ONCOGENIC: { + Assertion: 'Very strong evidence the variant is oncogenic.' + }, + LIKELY_ONCOGENIC: { + Assertion: 'Strong evidence the variant is oncogenic.' + }, + BENIGN: { + Assertion: 'Very strong evidence the variant does not have oncogenic properties.' + }, + LIKELY_BENIGN: { + Assertion: 'Strong evidence the variant does not have oncogenic properties.' + }, + UNCERTAIN_SIGNIFICANCE: { + Assertion: 'Does not meet guideline criteria for oncogenic/benign, or the evidence is conflicting.' + } + } + }, + evidenceDirection: { + PREDICTIVE: { + SUPPORTS: { + EvidenceItem: 'The experiment or study supports this variant\'s response to a drug', + }, + DOES_NOT_SUPPORT: { + EvidenceItem: 'The experiment or study does not support, or was inconclusive of an interaction between this variant and a drug' + } + }, + DIAGNOSTIC: { + SUPPORTS: { + EvidenceItem: 'The experiment or study supports this variant\'s impact on the diagnosis of disease or subtype' + }, + DOES_NOT_SUPPORT: { + EvidenceItem: 'The experiment or study does not support this variant\'s impact on diagnosis of disease or subtype' + } + }, + PROGNOSTIC: { + SUPPORTS: { + EvidenceItem: 'The experiment or study supports this variant\'s impact on prognostic outcome' + }, + DOES_NOT_SUPPORT: { + EvidenceItem: 'The experiment or study does not support a prognostic association between variant and outcome' + } + }, + PREDISPOSING: { + Na: { + EvidenceItem: 'Evidence Direction is not applicable' + }, + SUPPORTS: { + EvidenceItem: 'The evidence supports a pathogenic or a protective role for a germline variant in cancer.' + }, + DOES_NOT_SUPPORT: { + EvidenceItem: 'The evidence supports a benign (if Clinical Significance is Predisposition) or lack or protective (if Clinical Significance is Protectiveness) role for a germline variant in cancer.' + } + }, + FUNCTIONAL: { + SUPPORTS: { + EvidenceItem: 'The experiment or study supports this variant causing alteration or non-alteration of the gene product function' + }, + DOES_NOT_SUPPORT: { + EvidenceItem: 'The experiment or study does not support this variant causing alteration or non-alteration of the gene product function' + } + }, + ONCOGENIC: { + NA: { + EvidenceItem: 'Evidence Direction is not applicable for Oncogenic Evidence Type' + }, + SUPPORTS: { + EvidenceItem: `The evidence supports an oncogenic or protective role for a somatic variant`, + + }, + DOES_NOT_SUPPORT: { + EvidenceItem: `The evidence does not support an oncogenic or protective role for a somatic variant`, + } + } + }, + assertionDirection: { + PREDICTIVE: { + SUPPORTS: { + Assertion: 'The Assertion and associated Evidence Items support this variant\'s response to a drug' + }, + DOES_NOT_SUPPORT: { + Assertion: 'The Assertion and associated evidence does not support, or was inconclusive of an interaction between this variant and a drug' + } + }, + DIAGNOSTIC: { + SUPPORTS: { + Assertion: 'The Assertion and associated Evidence Items support this variant\'s impact on the diagnosis of disease or subtype' + }, + DOES_NOT_SUPPORT: { + Assertion: 'The Assertion and associated evidence does not support this variant\'s impact on diagnosis of disease or subtype' + } + }, + PROGNOSTIC: { + SUPPORTS: { + Assertion: 'The Assertion and associated Evidence Items support this variant\'s impact on prognostic outcome' + }, + DOES_NOT_SUPPORT: { + Assertion: 'The Assertion and associated evidence does not support a prognostic association between variant and outcome' + } + }, + PREDISPOSING: { + SUPPORTS: { + Assertion: 'The Assertion and associated Evidence Items support a variant\'s impact on predisposing outcome' + }, + DOES_NOT_SUPPORT: { + Assertion: 'The Assertion and associated evidence does not support a predisposing association between variant and outcome' + } + }, + FUNCTIONAL: { + SUPPORTS: { + Assertion: 'The Assertion and associated Evidence Items support this variant causing alteration or non-alteration of the gene product function' + }, + DOES_NOT_SUPPORT: { + Assertion: 'The Assertion and associated evidence does not support this variant causing alteration or non-alteration of the gene product function' + } + }, + ONCOGENIC: { + SUPPORTS: { + Assertion: `The Assertion and associated Evidence Items support a variant's oncogenic, benign, or uncertain significance`, + + }, + DOES_NOT_SUPPORT: { + Assertion: `The Assertion and associated Evidence Items do not support a variant's oncogenic, benign, or uncertain significance`, + } + } + }, +} + +export function getEvidenceEnumTooltip( + name: string | symbol, + value: string | symbol | number, + contextType: Maybe, + contextEntity: Maybe +): string { + + let tooltip: string | undefined + + if (contextType && contextEntity) { + tooltip = contextualTooltips[name][contextType][value][contextEntity] + } + else { + tooltip = tooltips[name][value] + } + + return tooltip ? tooltip : '' +} diff --git a/client/src/app/directives/table-scroll/table-scroll.directive.ts b/client/src/app/directives/table-scroll/table-scroll.directive.ts new file mode 100644 index 000000000..4b15f8a4b --- /dev/null +++ b/client/src/app/directives/table-scroll/table-scroll.directive.ts @@ -0,0 +1,158 @@ +import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; +import { AfterViewInit, Directive, EventEmitter, Input, Output } from '@angular/core'; +import { Maybe, PageInfo } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; +import { QueryRef } from 'apollo-angular'; +import { NzTableComponent } from 'ng-zorro-antd/table'; +import { asyncScheduler, Observable } from 'rxjs'; +import { debounceTime, filter, first, map, pairwise, tap, throttleTime } from 'rxjs/operators'; + +export type ScrollEvent = 'scroll' | 'stop' | 'bottom' + +@UntilDestroy() +@Directive({ + selector: '[cvcTableScroll]', +}) +export class TableScrollDirective implements AfterViewInit { + @Output() cvcTableScrollOnScroll = new EventEmitter() + + // TargetHeight defines the height from the end of the viewport's + // currently rendered rows that a 'bottom' scroll event will be emitted + @Input() cvcTableScrollTargetHeight: number = 140 + + @Input() cvcTableScrollQueryRef: Maybe> + @Input() cvcTableScrollPageInfo: Maybe + @Input() cvcTableScrollFetchCount: Maybe = 25 + + // call viewport scrollToIndex with provided index value + @Input() + set cvcTableScrollToIndex(n: number) { + if (n !== undefined) this.scrollToIndex(n) + } + + @Input() + set cvcTableScrollToOffset(o: number) { + if (o !== undefined) this.scrollToIndex(o) + } + // OnLoadMore events will only be sent in onLoadThrottleTime ms intervals + private onLoadThrottleTime: number = 500 + + // OnScrolled will emit true every onScrollThrottleTime ms while scrolling + private onScrollThrottleTime: number = 250 + // OnScrolled will emit false onScrollDebounceTime ms after final throttled scroll event + private onScrollDebounceTime: number = 300 + + private viewport?: CdkVirtualScrollViewport + + // observable of all scroll events from viewport + private scrolled$?: Observable + + // observable of all rowsRendered events from viewport + private rendered$?: Observable + + constructor(private host: NzTableComponent) { + } + + ngAfterViewInit() { + if (this.host && this.host.cdkVirtualScrollViewport) { + this.viewport = this.host.cdkVirtualScrollViewport + this.scrolled$ = this.viewport.elementScrolled() + this.rendered$ = this.viewport.renderedRangeStream + } else { + throw new Error('cvcTableScroll directive could not obtain reference to host cdkVirtualScrollViewport.') + } + + // after initial rows rendered, force viewport size update + // NOTE: upon initial render, the viewport computes its size. However, it often + // fails to correctly calculate the dimensions of its container, most likely due + // to the operation of several cvcAutoHeight directives in parent containers. + // The cvcAutoHeight directives (probably) perform their adjustments after the viewport + // calculates its size, so we end up with a big table w/ just a few rows displayed. + // This fix calls viewport's check size function once, after initial rows have been rendered, + // causing the viewport to resize to fit the its new container dimensions. + this.rendered$ + .pipe(first()) + .subscribe(() => this.viewport!.checkViewportSize()); + + // emit 'scroll' event when scroll starts, 'stop' scrollStopDebounce ms after last event + this.scrolled$ + .pipe( + // emits once at initial scroll event, once every throttleTime ms until no events, + // then a final event + throttleTime(this.onScrollThrottleTime, + asyncScheduler, + { leading: true, trailing: true }), + tap(_ => this.cvcTableScrollOnScroll.next('scroll')), + // wait debounceTime ms after last 'scroll' event to emit + debounceTime(this.onScrollDebounceTime), + untilDestroyed(this)) + .subscribe(_ => { this.cvcTableScrollOnScroll.next('stop') }); + + // emit load more events from OnLoadMore + this.scrolled$ + .pipe( + // for each scroll event, map to distance between viewport bottom + // and scroll content bottom + map((_: Event) => { + return this.viewport!.measureScrollOffset('bottom') + }), + // pair with previous offset to detect up/down scroll + pairwise(), + // pass only down scroll && bottom offsets within target height + filter(([offset1, offset2]) => { + return (offset2 < offset1 && offset2 < this.cvcTableScrollTargetHeight) + }), + // throttle events to prevent spamming OnLoadMore events + throttleTime(this.onLoadThrottleTime), + untilDestroyed(this)) + .subscribe((_) => { + this.cvcTableScrollOnScroll.next('bottom') + try { this.loadMore(this.cvcTableScrollPageInfo) } + catch (e) { console.error(e) } + }); + } + + loadMore(pi: Maybe) { + const queryRef = this.cvcTableScrollQueryRef + if (!pi && queryRef) + throw new Error(`table-scroll directive requires PageInfo to use provided QueryRef.`) + if (pi && !queryRef) + throw new Error(`table-scroll directive requires valid QueryRef when PageInfo provided.`) + if (pi && queryRef) { + const [fetchCount, hasNextPage, endCursor] + = [this.cvcTableScrollFetchCount, pi.hasNextPage, pi.endCursor] + if (fetchCount && endCursor) { + if (hasNextPage) { + queryRef + .fetchMore({ + variables: { + first: fetchCount, + after: endCursor + }, + }); + } else { return } + } else { + throw new Error(`table-scroll PageInfo invalid.`) + } + } + } + + scrollToIndex(index: number): void { + const [host, viewport] = [this.host, this.host.cdkVirtualScrollViewport] + if (host && viewport) { + viewport.scrollToIndex(index); + } else { + throw new Error(`table-scroll scrollToIndex() cannot find host viewport.`) + } + } + + scrollToOffset(offset: number): void { + const [host, viewport] = [this.host, this.host.cdkVirtualScrollViewport] + if (host && viewport) { + viewport.scrollToOffset(offset); + } else { + throw new Error(`table-scroll scrollToOffset() cannot find host viewport.`) + } + } + +} diff --git a/client/src/app/directives/table-scroll/table-scroll.module.ts b/client/src/app/directives/table-scroll/table-scroll.module.ts new file mode 100644 index 000000000..6aa851e61 --- /dev/null +++ b/client/src/app/directives/table-scroll/table-scroll.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { TableScrollDirective } from './table-scroll.directive'; + +@NgModule({ + declarations: [TableScrollDirective], + imports: [CommonModule], + exports: [TableScrollDirective] +}) +export class CvcTableScrollModule { } diff --git a/client/src/app/forms/assertion-revise/assertion-revise.form.ts b/client/src/app/forms/assertion-revise/assertion-revise.form.ts index 1610050b8..df0ffaa0a 100644 --- a/client/src/app/forms/assertion-revise/assertion-revise.form.ts +++ b/client/src/app/forms/assertion-revise/assertion-revise.form.ts @@ -2,7 +2,7 @@ import { AfterViewInit, Component, Input, OnDestroy } from '@angular/core'; import { AbstractControl, FormGroup } from '@angular/forms'; import { NetworkErrorsService } from '@app/core/services/network-errors.service'; import { MutatorWithState } from '@app/core/utilities/mutation-state-wrapper'; -import { AcmgCode, AmpLevel, AssertionClinicalSignificance, AssertionDetailGQL, AssertionDirection, AssertionRevisableFieldsGQL, AssertionType, DrugInteraction, Maybe, ModeratedEntities, NccnGuideline, Organization, RevisableAssertionFieldsFragment, RevisionsGQL, RevisionStatus, SuggestAssertionRevisionGQL, SuggestAssertionRevisionInput, SuggestAssertionRevisionMutation, SuggestAssertionRevisionMutationVariables, VariantOrigin } from '@app/generated/civic.apollo'; +import { AcmgCode, AmpLevel, AssertionClinicalSignificance, AssertionDetailGQL, AssertionDirection, AssertionRevisableFieldsGQL, AssertionType, ClingenCode, DrugInteraction, Maybe, ModeratedEntities, NccnGuideline, Organization, RevisableAssertionFieldsFragment, RevisionsGQL, RevisionStatus, SuggestAssertionRevisionGQL, SuggestAssertionRevisionInput, SuggestAssertionRevisionMutation, SuggestAssertionRevisionMutationVariables, VariantOrigin } from '@app/generated/civic.apollo'; import { FormlyFieldConfig, FormlyFormOptions } from '@ngx-formly/core'; import { Subject } from 'rxjs'; import { AssertionState } from '../config/states/assertion.state'; @@ -30,6 +30,7 @@ interface FormModel { nccnGuideline: Maybe nccnGuidelineVersion: Maybe, acmgCodes: AcmgCode[], + clingenCodes: ClingenCode[], fdaCompanionTest: Maybe, fdaRegulatoryApproval: Maybe, comment: Maybe, @@ -166,6 +167,10 @@ export class AssertionReviseForm implements OnDestroy, AfterViewInit { label: 'ACMG/AMP Code(s)', } }, + { + key: 'clingenCodes', + type: 'clingen-code-array', + }, { key: 'phenotypes', type: 'phenotype-array', @@ -289,6 +294,7 @@ export class AssertionReviseForm implements OnDestroy, AfterViewInit { nccnGuidelineId: fmt.toNullableInput(fields.nccnGuideline?.id), nccnGuidelineVersion: fmt.toNullableString(fields.nccnGuidelineVersion), acmgCodeIds: fields.acmgCodes.map(c => c.id), + clingenCodeIds: fields.clingenCodes.map(c => c.id), fdaCompanionTest: fmt.toNullableInput(fields.fdaCompanionTest), fdaRegulatoryApproval: fmt.toNullableInput(fields.fdaRegulatoryApproval), evidenceItemIds: fields.evidenceItems.map(e => e.id) @@ -319,6 +325,7 @@ export class AssertionReviseForm implements OnDestroy, AfterViewInit { nccnGuideline: fields.nccnGuideline, nccnGuidelineVersion: fields.nccnGuidelineVersion, acmgCodes: fields.acmgCodes, + clingenCodes: fields.clingenCodes, fdaCompanionTest: fields.fdaCompanionTest, fdaRegulatoryApproval: fields.regulatoryApproval, comment: this.formModel?.fields.comment, diff --git a/client/src/app/forms/assertion-revise/assertion-revise.module.ts b/client/src/app/forms/assertion-revise/assertion-revise.module.ts index ee16de936..73d761908 100644 --- a/client/src/app/forms/assertion-revise/assertion-revise.module.ts +++ b/client/src/app/forms/assertion-revise/assertion-revise.module.ts @@ -45,6 +45,7 @@ import { CvcFormContainerWrapperModule } from '../config/wrappers/form-container import { CvcEvidenceInputTypeModule } from '../config/types/evidence-input/evidence-input.module'; import { CvcEvidenceManagerWrapperModule } from '../config/wrappers/with-evidence-manager/with-evidence-manager.module'; import { CvcCancelButtonModule } from '../config/types/cancel-button/cancel-button.module'; +import { CvcClingenCodeArrayTypeModule } from '../config/types/clingen-code-array/clingen-code-array.module'; @NgModule({ declarations: [ @@ -95,7 +96,8 @@ import { CvcCancelButtonModule } from '../config/types/cancel-button/cancel-butt CvcFormContainerWrapperModule, CvcEvidenceInputTypeModule, CvcEvidenceManagerWrapperModule, - CvcCancelButtonModule + CvcCancelButtonModule, + CvcClingenCodeArrayTypeModule, ], exports: [ AssertionReviseForm diff --git a/client/src/app/forms/assertion-revise/assertion-revise.query.gql b/client/src/app/forms/assertion-revise/assertion-revise.query.gql index 037e9401d..8f588d220 100644 --- a/client/src/app/forms/assertion-revise/assertion-revise.query.gql +++ b/client/src/app/forms/assertion-revise/assertion-revise.query.gql @@ -47,6 +47,11 @@ fragment RevisableAssertionFields on Assertion { code description } + clingenCodes { + id + code + description + } nccnGuideline { id name diff --git a/client/src/app/forms/assertion-submit/assertion-submit.form.ts b/client/src/app/forms/assertion-submit/assertion-submit.form.ts index cb51e8741..841b7819b 100644 --- a/client/src/app/forms/assertion-submit/assertion-submit.form.ts +++ b/client/src/app/forms/assertion-submit/assertion-submit.form.ts @@ -9,6 +9,7 @@ import { AssertionClinicalSignificance, AssertionDirection, AssertionType, + ClingenCode, DrugInteraction, Maybe, NccnGuideline, @@ -52,6 +53,7 @@ interface FormModel { nccnGuideline: Maybe nccnGuidelineVersion: Maybe, acmgCodes: AcmgCode[], + clingenCodes: ClingenCode[], fdaCompanionTest: Maybe fdaRegulatoryApproval: Maybe comment: Maybe @@ -186,6 +188,10 @@ export class AssertionSubmitForm implements OnDestroy { label: 'ACMG/AMP Code(s)', } }, + { + key: 'clingenCodes', + type: 'clingen-code-array', + }, { key: 'phenotypes', type: 'phenotype-array', @@ -303,6 +309,7 @@ export class AssertionSubmitForm implements OnDestroy { nccnGuidelineId: fmt.toNullableInput(fields.nccnGuideline?.id), nccnGuidelineVersion: fmt.toNullableString(fields.nccnGuidelineVersion), acmgCodeIds: fields.acmgCodes.map(c => c.id), + clingenCodeIds: fields.clingenCodes.map(c => c.id), fdaCompanionTest: fmt.toNullableInput(fields.fdaCompanionTest), fdaRegulatoryApproval: fmt.toNullableInput(fields.fdaRegulatoryApproval), evidenceItemIds: fields.evidenceItems.map((e) => e.id) diff --git a/client/src/app/forms/assertion-submit/assertion-submit.module.ts b/client/src/app/forms/assertion-submit/assertion-submit.module.ts index 93ccbcb52..362461bad 100644 --- a/client/src/app/forms/assertion-submit/assertion-submit.module.ts +++ b/client/src/app/forms/assertion-submit/assertion-submit.module.ts @@ -48,6 +48,7 @@ import { CvcCancelButtonModule } from '../config/types/cancel-button/cancel-butt import { NzCardModule } from 'ng-zorro-antd/card'; import { NzSpaceModule } from 'ng-zorro-antd/space'; import { NzTypographyModule } from 'ng-zorro-antd/typography'; +import { CvcClingenCodeArrayTypeModule } from '../config/types/clingen-code-array/clingen-code-array.module'; @NgModule({ declarations: [ @@ -100,6 +101,7 @@ import { NzTypographyModule } from 'ng-zorro-antd/typography'; NgxJsonViewerModule, CvcEvidenceManagerWrapperModule, CvcCancelButtonModule, + CvcClingenCodeArrayTypeModule, NzSpaceModule, NzCardModule, NzTypographyModule diff --git a/client/src/app/forms/config/components/form-errors-alert/form-errors-alert.component.ts b/client/src/app/forms/config/components/form-errors-alert/form-errors-alert.component.ts index da88f4d1d..62cdd4966 100644 --- a/client/src/app/forms/config/components/form-errors-alert/form-errors-alert.component.ts +++ b/client/src/app/forms/config/components/form-errors-alert/form-errors-alert.component.ts @@ -12,6 +12,9 @@ export class CvcFormErrorsAlertComponent implements OnInit { } ngOnInit(): void { + if (this.errors.length == 1) { + this.errors = this.errors[0].split("|") + } } } diff --git a/client/src/app/forms/config/states/assertion.state.ts b/client/src/app/forms/config/states/assertion.state.ts index f4df7b980..6a7a7fa91 100644 --- a/client/src/app/forms/config/states/assertion.state.ts +++ b/client/src/app/forms/config/states/assertion.state.ts @@ -23,6 +23,7 @@ class AssertionState extends EntityState { ], requiresDisease: true, requiresDrug: true, + requiresClingenCodes: false, requiresAcmgCodes: false, requiresAmpLevel: true, allowsFdaApproval: true @@ -40,6 +41,7 @@ class AssertionState extends EntityState { ], requiresDisease: true, requiresDrug: false, + requiresClingenCodes: false, requiresAcmgCodes: false, requiresAmpLevel: true, allowsFdaApproval: false @@ -58,6 +60,7 @@ class AssertionState extends EntityState { ], requiresDisease: true, requiresDrug: false, + requiresClingenCodes: false, requiresAcmgCodes: false, requiresAmpLevel: true, allowsFdaApproval: false @@ -78,10 +81,32 @@ class AssertionState extends EntityState { ], requiresDisease: true, requiresDrug: false, + requiresClingenCodes: false, requiresAcmgCodes: true, requiresAmpLevel: false, allowsFdaApproval: false }); + + this.validStates.set(AssertionType.Oncogenic, { + entityType: AssertionType.Oncogenic, + clinicalSignificance: [ + AssertionClinicalSignificance.Oncogenic, + AssertionClinicalSignificance.LikelyOncogenic, + AssertionClinicalSignificance.Benign, + AssertionClinicalSignificance.LikelyBenign, + AssertionClinicalSignificance.UncertainSignificance, + ], + entityDirection: [ + AssertionDirection.Supports, + AssertionDirection.DoesNotSupport, + ], + requiresDisease: true, + requiresDrug: false, + requiresClingenCodes: true, + requiresAcmgCodes: false, + requiresAmpLevel: false, + allowsFdaApproval: false + }); } } diff --git a/client/src/app/forms/config/states/entity.state.ts b/client/src/app/forms/config/states/entity.state.ts index 78d606994..06b664a81 100644 --- a/client/src/app/forms/config/states/entity.state.ts +++ b/client/src/app/forms/config/states/entity.state.ts @@ -24,6 +24,7 @@ export type ValidEntity = { requiresDrug: boolean requiresAcmgCodes: boolean requiresAmpLevel: boolean + requiresClingenCodes: boolean allowsFdaApproval: boolean } @@ -56,6 +57,7 @@ export interface IEntityState { requiresDisease: (et: EntityType) => boolean; requiresAcmgCodes: (et: EntityType) => boolean; requiresAmpLevel: (et: EntityType) => boolean; + requiresClingenCodes: (et: EntityType) => boolean; allowsFdaApproval: (et: EntityType) => boolean; } @@ -123,6 +125,11 @@ class EntityState implements IEntityState { return state !== undefined ? state.requiresAmpLevel : true; } + requiresClingenCodes = (et: EntityType): boolean => { + const state = this.validStates.get(et); + return state !== undefined ? state.requiresClingenCodes : true; + } + allowsFdaApproval = (et: EntityType): boolean => { const state = this.validStates.get(et); return state !== undefined ? state.allowsFdaApproval : true; diff --git a/client/src/app/forms/config/states/evidence.state.ts b/client/src/app/forms/config/states/evidence.state.ts index 40e919bd7..1bcb2df4a 100644 --- a/client/src/app/forms/config/states/evidence.state.ts +++ b/client/src/app/forms/config/states/evidence.state.ts @@ -23,6 +23,7 @@ class EvidenceState extends EntityState { ], requiresDisease: true, requiresDrug: true, + requiresClingenCodes: false, requiresAcmgCodes: false, requiresAmpLevel: false, allowsFdaApproval: false @@ -40,6 +41,7 @@ class EvidenceState extends EntityState { ], requiresDisease: true, requiresDrug: false, + requiresClingenCodes: false, requiresAcmgCodes: false, requiresAmpLevel: false, allowsFdaApproval: false @@ -58,6 +60,7 @@ class EvidenceState extends EntityState { ], requiresDisease: true, requiresDrug: false, + requiresClingenCodes: false, requiresAcmgCodes: false, requiresAmpLevel: false, allowsFdaApproval: false @@ -66,13 +69,16 @@ class EvidenceState extends EntityState { this.validStates.set(EvidenceType.Oncogenic, { entityType: EvidenceType.Oncogenic, clinicalSignificance: [ - EvidenceClinicalSignificance.Na, + EvidenceClinicalSignificance.Oncogenicity, + EvidenceClinicalSignificance.Protectiveness, ], entityDirection: [ - EvidenceDirection.Na, + EvidenceDirection.Supports, + EvidenceDirection.DoesNotSupport, ], requiresDisease: true, requiresDrug: false, + requiresClingenCodes: false, requiresAcmgCodes: false, requiresAmpLevel: false, allowsFdaApproval: false @@ -81,13 +87,16 @@ class EvidenceState extends EntityState { this.validStates.set(EvidenceType.Predisposing, { entityType: EvidenceType.Predisposing, clinicalSignificance: [ - EvidenceClinicalSignificance.Na, + EvidenceClinicalSignificance.Predisposition, + EvidenceClinicalSignificance.Protectiveness, ], entityDirection: [ - EvidenceDirection.Na, + EvidenceDirection.Supports, + EvidenceDirection.DoesNotSupport, ], requiresDisease: true, requiresDrug: false, + requiresClingenCodes: false, requiresAcmgCodes: false, requiresAmpLevel: false, allowsFdaApproval: false @@ -110,6 +119,7 @@ class EvidenceState extends EntityState { requiresDisease: false, requiresDrug: false, requiresAcmgCodes: false, + requiresClingenCodes: false, requiresAmpLevel: false, allowsFdaApproval: false }); diff --git a/client/src/app/forms/config/types/acmg-code-array/acmg-code-array.type.ts b/client/src/app/forms/config/types/acmg-code-array/acmg-code-array.type.ts index ccb23aa60..ca49c9c57 100644 --- a/client/src/app/forms/config/types/acmg-code-array/acmg-code-array.type.ts +++ b/client/src/app/forms/config/types/acmg-code-array/acmg-code-array.type.ts @@ -1,7 +1,10 @@ import { AbstractControl, FormArray } from '@angular/forms'; import { formatEvidenceEnum } from '@app/core/utilities/enum-formatters/format-evidence-enum'; +import { untilDestroyed } from '@ngneat/until-destroy'; import { FormlyFieldConfig, FormlyTemplateOptions } from '@ngx-formly/core'; import { TypeOption } from '@ngx-formly/core/lib/services/formly.config'; +import { isNonNulled } from 'rxjs-etc'; +import { filter } from 'rxjs/operators'; import { EntityState, EntityType } from '../../states/entity.state'; const requiredValidationMsgFn = (err: any, ffc: FormlyFieldConfig): string => { @@ -33,14 +36,15 @@ export const acmgCodeArrayTypeOption: TypeOption = { } }, hooks: { - onInit:(ffc?: FormlyFieldConfig) : void => { + onInit: (ffc?: FormlyFieldConfig): void => { const to: FormlyTemplateOptions = ffc!.templateOptions!; // check for formState, populate with all options if not found const st: EntityState = ffc?.options?.formState; // find evidenceType formControl, subscribe to value changes to update options const etCtrl: AbstractControl | null = ffc?.form ? ffc.form.get('evidenceType') : null; if (!etCtrl) { return; } // no evidenceType FormControl found, cannot subscribe - to.vcSub = etCtrl.valueChanges + to.vcSub = etCtrl + .valueChanges .subscribe((et: EntityType) => { const fc: FormArray = ffc!.formControl! as FormArray; if (!st.requiresAcmgCodes(et)) { @@ -57,6 +61,10 @@ export const acmgCodeArrayTypeOption: TypeOption = { to.required = true; } }); + }, + onDestroy: (ffc?: FormlyFieldConfig): void => { + const to: FormlyTemplateOptions = ffc!.templateOptions!; + to.vcSub.unsubscribe(); } } } diff --git a/client/src/app/forms/config/types/acmg-code-select/acmg-code-select.type.ts b/client/src/app/forms/config/types/acmg-code-select/acmg-code-select.type.ts index feeb1fff4..d7c0725b1 100644 --- a/client/src/app/forms/config/types/acmg-code-select/acmg-code-select.type.ts +++ b/client/src/app/forms/config/types/acmg-code-select/acmg-code-select.type.ts @@ -1,23 +1,24 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; import { AcmgCode, AcmgCodeTypeaheadGQL, AcmgCodeTypeaheadQuery, AcmgCodeTypeaheadQueryVariables } from '@app/generated/civic.apollo'; +import { UntilDestroy } from '@ngneat/until-destroy'; import { FieldType } from '@ngx-formly/core'; import { TypeOption } from '@ngx-formly/core/lib/services/formly.config'; import { QueryRef } from 'apollo-angular'; -import { Observable, Subject } from 'rxjs'; -import { map, takeUntil } from 'rxjs/operators'; - +import { Observable } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, map } from 'rxjs/operators'; +@UntilDestroy() @Component({ selector: 'cvc-acmg-code-select-type', templateUrl: './acmg-code-select.type.html', styleUrls: ['./acmg-code-select.type.less'], }) -export class AcmgCodeInputType extends FieldType implements OnInit, OnDestroy { +export class AcmgCodeInputType extends FieldType implements OnInit { formControl!: FormControl; - private destroy$ = new Subject(); - searchVal = "" + searchVal = '' private queryRef?: QueryRef codes$?: Observable @@ -25,23 +26,18 @@ export class AcmgCodeInputType extends FieldType implements OnInit, OnDestroy { constructor(private acmgCodeGQL: AcmgCodeTypeaheadGQL) { super(); } - + ngOnInit(): void { - this.queryRef = this.acmgCodeGQL.watch({code: this.searchVal}) - this.codes$ = this.queryRef.valueChanges.pipe( - takeUntil(this.destroy$), - map(({data}) => data.acmgCodesTypeahead) - ) + this.queryRef = this.acmgCodeGQL.watch({ code: this.searchVal }) + this.codes$ = this.queryRef.valueChanges + .pipe(map(r => r.data), + filter(isNonNulled), + map(({ acmgCodesTypeahead }) => acmgCodesTypeahead)); } - ngOnDestroy(): void { - this.destroy$.next(); - this.destroy$.complete(); - } - onSearch(value: string): void { this.searchVal = value - this.queryRef?.refetch({code: value}) + this.queryRef?.refetch({ code: value }) } } @@ -54,10 +50,5 @@ export const acmgCodeSelectTypeOption: TypeOption = { templateOptions: { placeholder: 'None specified.', }, - modelOptions: { - debounce: { - default: 500 - } - }, } } diff --git a/client/src/app/forms/config/types/amp-level-input/amp-level-input.type.ts b/client/src/app/forms/config/types/amp-level-input/amp-level-input.type.ts index 452e70b49..45b38dbf7 100644 --- a/client/src/app/forms/config/types/amp-level-input/amp-level-input.type.ts +++ b/client/src/app/forms/config/types/amp-level-input/amp-level-input.type.ts @@ -50,6 +50,10 @@ export const ampLevelInputTypeOption: TypeOption = { to.required = true; } }); + }, + onDestroy:(ffc?: FormlyFieldConfig) : void => { + const to: FormlyTemplateOptions = ffc!.templateOptions! + to.vcSub.unsubscribe() } }, expressionProperties: { diff --git a/client/src/app/forms/config/types/clingen-code-array/clingen-code-array.module.ts b/client/src/app/forms/config/types/clingen-code-array/clingen-code-array.module.ts new file mode 100644 index 000000000..4a6e7e710 --- /dev/null +++ b/client/src/app/forms/config/types/clingen-code-array/clingen-code-array.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormlyModule } from '@ngx-formly/core'; +import { CvcMultiFieldTypeModule } from '../multi-field/multi-field.module'; +import { clingenCodeArrayTypeOption } from './clingen-code-array.type'; +import { CvcClingenCodeSelectTypeModule } from '../clingen-code-select/clingen-code-select.module'; + +@NgModule({ + imports: [ + CommonModule, + FormlyModule.forChild({types: [clingenCodeArrayTypeOption]}), + CvcMultiFieldTypeModule, + CvcClingenCodeSelectTypeModule + ], +}) +export class CvcClingenCodeArrayTypeModule { } diff --git a/client/src/app/forms/config/types/clingen-code-array/clingen-code-array.type.html b/client/src/app/forms/config/types/clingen-code-array/clingen-code-array.type.html new file mode 100644 index 000000000..312230093 --- /dev/null +++ b/client/src/app/forms/config/types/clingen-code-array/clingen-code-array.type.html @@ -0,0 +1 @@ +

clingen-code-array works!

diff --git a/client/src/app/forms/config/types/clingen-code-array/clingen-code-array.type.less b/client/src/app/forms/config/types/clingen-code-array/clingen-code-array.type.less new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/app/forms/config/types/clingen-code-array/clingen-code-array.type.ts b/client/src/app/forms/config/types/clingen-code-array/clingen-code-array.type.ts new file mode 100644 index 000000000..7c750b160 --- /dev/null +++ b/client/src/app/forms/config/types/clingen-code-array/clingen-code-array.type.ts @@ -0,0 +1,68 @@ +import { AbstractControl, FormArray } from '@angular/forms'; +import { formatEvidenceEnum } from '@app/core/utilities/enum-formatters/format-evidence-enum'; +import { FormlyFieldConfig, FormlyTemplateOptions } from '@ngx-formly/core'; +import { TypeOption } from '@ngx-formly/core/lib/services/formly.config'; +import { EntityState, EntityType } from '../../states/entity.state'; + +const requiredValidationMsgFn = (err: any, ffc: FormlyFieldConfig): string => { + const etCtrl: AbstractControl | null = ffc?.form ? ffc.form.get('evidenceType') : null; + return etCtrl && etCtrl.value ? `${formatEvidenceEnum(etCtrl.value)} Assertions require at least one ClinGen/CGC/VICC code to be specified.` : 'ClinGen/CGC/VICC Code is required.'; +}; + +export const clingenCodeArrayTypeOption: TypeOption = { + name: 'clingen-code-array', + extends: 'multi-field', + wrappers: ['form-field'], + defaultOptions: { + templateOptions: { + label: 'ClinGen/CGC/VICC Code Code(s)', + required: false, + addText: 'Add a ClinGen/CGC/VICC Code', + helpText: 'Refers to evidence Classifications from the Standards for the classification of pathogenicity of somatic variants in cancer (oncogenicity) in Horak et. al. 2022.', + }, + fieldArray: { + type: 'clingen-code-select', + templateOptions: { + required: false + } + }, + defaultValue: [], + validation: { + messages: { + required: requiredValidationMsgFn + } + }, + hooks: { + onInit: (ffc?: FormlyFieldConfig): void => { + const to: FormlyTemplateOptions = ffc!.templateOptions!; + // check for formState, populate with all options if not found + const st: EntityState = ffc?.options?.formState; + // find evidenceType formControl, subscribe to value changes to update options + const etCtrl: AbstractControl | null = ffc?.form ? ffc.form.get('evidenceType') : null; + if (!etCtrl) { return; } // no evidenceType FormControl found, cannot subscribe + to.vcSub = etCtrl + .valueChanges + .subscribe((et: EntityType) => { + const fc: FormArray = ffc!.formControl! as FormArray; + if (!st.requiresClingenCodes(et)) { + to.hidden = true; + to.required = false; + // remove() rebuilds the field, so here we clear the array except for the + // first element, then call remove() so the field is only rebuilt once + if (ffc!.model.length > 0) { + ffc!.model.splice(1); + to.remove(0); + } + } else { + to.hidden = false; + to.required = true; + } + }); + }, + onDestroy: (ffc?: FormlyFieldConfig): void => { + const to: FormlyTemplateOptions = ffc!.templateOptions!; + to.vcSub.unsubscribe(); + } + } + } +} \ No newline at end of file diff --git a/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.module.ts b/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.module.ts new file mode 100644 index 000000000..f80285303 --- /dev/null +++ b/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.module.ts @@ -0,0 +1,31 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ReactiveFormsModule } from '@angular/forms'; +import { FormlySelectModule } from '@ngx-formly/core/select'; +import { FormlyModule } from '@ngx-formly/core'; +import { NzTagModule } from 'ng-zorro-antd/tag'; +import { NzSelectModule } from 'ng-zorro-antd/select'; +import { NzSpaceModule } from 'ng-zorro-antd/space'; +import { ReactiveComponentModule } from '@ngrx/component'; +import { CvcPipesModule } from '@app/core/pipes/pipes.module'; +import { CvcFormFieldWrapperModule } from '../../wrappers/form-field/form-field.module'; +import { CvcAutofocusModule } from '@app/directives/auto-focus/auto-focus.module'; +import { ClingenCodeInputType, clingenCodeSelectTypeOption } from './clingen-code-select.type'; + +@NgModule({ + declarations: [ClingenCodeInputType], + imports: [ + CommonModule, + ReactiveFormsModule, + ReactiveComponentModule, + FormlySelectModule, + NzTagModule, + NzSelectModule, + NzSpaceModule, + CvcPipesModule, + FormlyModule.forChild({types: [clingenCodeSelectTypeOption],}), + CvcFormFieldWrapperModule, + CvcAutofocusModule + ] +}) +export class CvcClingenCodeSelectTypeModule { } diff --git a/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.query.gql b/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.query.gql new file mode 100644 index 000000000..1c3ec6705 --- /dev/null +++ b/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.query.gql @@ -0,0 +1,7 @@ +query ClingenCodeTypeahead($code: String!) { + clingenCodesTypeahead(queryTerm: $code){ + id + code + description + } +} diff --git a/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.type.html b/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.type.html new file mode 100644 index 000000000..8009fe872 --- /dev/null +++ b/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.type.html @@ -0,0 +1,31 @@ + + + + + + + - {{ opt.description }} + + + + + + + No ACMG code found in CIViC that matches the string provided. + + + + {{formControl.value.code}} + diff --git a/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.type.less b/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.type.less new file mode 100644 index 000000000..e69de29bb diff --git a/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.type.ts b/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.type.ts new file mode 100644 index 000000000..70f7fab85 --- /dev/null +++ b/client/src/app/forms/config/types/clingen-code-select/clingen-code-select.type.ts @@ -0,0 +1,52 @@ +import { Component, OnInit } from '@angular/core'; +import { FormControl } from '@angular/forms'; +import { ClingenCode, ClingenCodeTypeaheadGQL, ClingenCodeTypeaheadQuery, ClingenCodeTypeaheadQueryVariables } from '@app/generated/civic.apollo'; +import { FieldType } from '@ngx-formly/core'; +import { TypeOption } from '@ngx-formly/core/lib/services/formly.config'; +import { QueryRef } from 'apollo-angular'; +import { Observable } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, map } from 'rxjs/operators'; + +@Component({ + selector: 'cvc-clingen-code-select-type', + templateUrl: './clingen-code-select.type.html', + styleUrls: ['./clingen-code-select.type.less'], +}) +export class ClingenCodeInputType extends FieldType implements OnInit { + formControl!: FormControl; + + searchVal = '' + + private queryRef?: QueryRef + codes$?: Observable + + constructor(private clingenCodeGQL: ClingenCodeTypeaheadGQL){ + super(); + } + + ngOnInit(): void { + this.queryRef = this.clingenCodeGQL.watch({ code: this.searchVal }) + this.codes$ = this.queryRef.valueChanges + .pipe(map(r => r.data), + filter(isNonNulled), + map(({ clingenCodesTypeahead }) => clingenCodesTypeahead)); + } + + onSearch(value: string): void { + this.searchVal = value + this.queryRef?.refetch({ code: value }) + } + +} +export const clingenCodeSelectTypeOption: TypeOption = { + name: 'clingen-code-select', + extends: 'select', + component: ClingenCodeInputType, + wrappers: ['form-field'], + defaultOptions: { + templateOptions: { + placeholder: 'None specified.', + }, + } +} diff --git a/client/src/app/forms/config/types/clinical-significance-select/clinical-significance-select.type.ts b/client/src/app/forms/config/types/clinical-significance-select/clinical-significance-select.type.ts index 05fed357a..41ac0c010 100644 --- a/client/src/app/forms/config/types/clinical-significance-select/clinical-significance-select.type.ts +++ b/client/src/app/forms/config/types/clinical-significance-select/clinical-significance-select.type.ts @@ -24,7 +24,8 @@ const optionText: any = { 'NA': 'Clinical Significance is not applicable.' }, 'PREDISPOSING': { - 'NA': 'Clinical Significance is not applicable.' + 'PREDISPOSITION': 'Germline variant has predisposing potential for cancer, and may meet select ACMG/AMP criteria supporting pathogenic or benign classification.', + 'PROTECTIVENESS': 'Germline variant has properties that protect individuals from acquiring cancer.' }, 'FUNCTIONAL': { 'GAIN_OF_FUNCTION': 'Sequence variant confers an increase in normal gene function', @@ -35,7 +36,8 @@ const optionText: any = { 'UNKNOWN': 'Sequence variant that cannot be precisely defined by the other listed categories', }, 'ONCOGENIC': { - 'NA': 'Clinical Significance is not applicable.' + 'ONCOGENICITY': 'Somatic variant has oncogenic potential for driving cancer, and may meet select ClinGen/CGC/VICC criteria supporting pathogenic or benign classification.', + 'PROTECTIVENESS': 'Somatic variant has a protective role against cancer.' } }, Assertion: { @@ -60,8 +62,16 @@ const optionText: any = { 'LIKELY_PATHOGENIC': 'Strong evidence (>90% certainty) the variant is pathogenic.', 'BENIGN': 'Very strong evidence the variant is benign', 'LIKELY_BENIGN': 'Not expected to have a major effect on disease', - 'UNCERTAIN_SIGNIFICANCE': 'Does not fullfill the ACMG/AMP criteria for pathogenic/benign, or the evidence is conflicting', + 'UNCERTAIN_SIGNIFICANCE': 'Does not meet the ACMG/AMP criteria for pathogenic/benign, or the evidence is conflicting', }, + 'ONCOGENIC': { + 'ONCOGENIC': 'Very strong evidence the variant is oncogenic.', + 'LIKELY_ONCOGENIC': 'Strong evidence the variant is oncogenic.', + 'BENIGN': 'Very strong evidence the variant does not have oncogenic properties.', + 'LIKELY_BENIGN': 'Strong evidence the variant does not have oncogenic properties.', + 'UNCERTAIN_SIGNIFICANCE': 'Does not meet guideline criteria for oncogenic/benign, or the evidence is conflicting.', + + } } } @@ -72,7 +82,7 @@ export const clinicalSignificanceSelectTypeOption: TypeOption = { defaultOptions: { templateOptions: { label: 'Clinical Signficance', - helpText: 'The impact of the variant for predictive, prognostic, diagnostic, or functional evidence types. For predisposing and oncogenic evidence, impact is only applied at the assertion level and N/A should be selected here.', + helpText: 'The impact of the variant.', placeholder: 'None specified', options: [], }, diff --git a/client/src/app/forms/config/types/disease-input/disease-input.type.ts b/client/src/app/forms/config/types/disease-input/disease-input.type.ts index 7a8ac9d96..951b4aa67 100644 --- a/client/src/app/forms/config/types/disease-input/disease-input.type.ts +++ b/client/src/app/forms/config/types/disease-input/disease-input.type.ts @@ -1,18 +1,15 @@ -import { - AfterViewInit, - Component, - OnDestroy, - OnInit, -} from '@angular/core'; +import { AfterViewInit, Component, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; +import { NetworkErrorsService } from '@app/core/services/network-errors.service'; +import { MutatorWithState } from '@app/core/utilities/mutation-state-wrapper'; import { AddDiseaseGQL, AddDiseaseMutation, AddDiseaseMutationVariables, DiseaseTypeaheadGQL, DiseaseTypeaheadQuery, DiseaseTypeaheadQueryVariables } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { FieldType } from '@ngx-formly/core'; -import { map, pluck, takeUntil } from 'rxjs/operators'; -import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { TypeOption } from "@ngx-formly/core/lib/services/formly.config"; import { QueryRef } from 'apollo-angular'; -import {TypeOption} from "@ngx-formly/core/lib/services/formly.config"; -import { MutatorWithState } from '@app/core/utilities/mutation-state-wrapper'; -import { NetworkErrorsService } from '@app/core/services/network-errors.service'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, map, pluck } from 'rxjs/operators'; interface DiseaseTypeahead { id: number, @@ -28,24 +25,24 @@ interface DiseaseTypeaheadOption { disease: DiseaseTypeahead } +@UntilDestroy() @Component({ selector: 'cvc-disease-input-type', templateUrl: './disease-input.type.html', styleUrls: ['./disease-input.type.less'], }) -export class DiseaseInputType extends FieldType implements AfterViewInit, OnInit, OnDestroy { +export class DiseaseInputType extends FieldType implements AfterViewInit, OnInit { formControl!: FormControl; private queryRef!: QueryRef diseases$?: Observable - private destroy$ = new Subject(); success: boolean = false errorMessages: string[] = [] loading: boolean = false addDiseaseMutator: MutatorWithState - enteredDoid: String = "" + enteredDoid: String = '' displayAdd$ = new BehaviorSubject(false) constructor( @@ -55,13 +52,13 @@ export class DiseaseInputType extends FieldType implements AfterViewInit, OnInit ) { super(); - this.addDiseaseMutator = new MutatorWithState(networkErrorService) + this.addDiseaseMutator = new MutatorWithState(this.networkErrorService) this.defaultOptions = { templateOptions: { placeholder: 'Search Diseases', showArrow: false, - onSearch: () => {}, + onSearch: () => { }, minLengthSearch: 1, optionList: [] as Array<{ value: string; label: string; disease: any }>, searchString: "", @@ -71,27 +68,25 @@ export class DiseaseInputType extends FieldType implements AfterViewInit, OnInit } ngOnInit() { - this.queryRef = this.diseaseTypeaheadQuery.watch({ name: "zzzz"}) + this.queryRef = this.diseaseTypeaheadQuery.watch({ name: "zzzz" }) this.diseases$ = this.queryRef - .valueChanges - .pipe(takeUntil(this.destroy$), - pluck('data', 'diseaseTypeahead'), - map((diseases) => { - let diseaseInputs = diseases.map((d) => { - let doid = d.doid ? `DOID:${d.doid}` : "no DOID" - let aliases = d.diseaseAliases.length > 0 ? `Aliases: ${d.diseaseAliases.join(', ')}` : "" - return { - value: d.id, - tooltip: `${d.displayName} (${doid}) ${aliases}`, - label: `${d.displayName} (${doid})`, - disease: d, - } - }) - - return diseaseInputs - }) - ) + .valueChanges + .pipe(pluck('data', 'diseaseTypeahead'), + filter(isNonNulled), + map((diseases) => { + let diseaseInputs = diseases.map((d) => { + let doid = d.doid ? `DOID:${d.doid}` : "no DOID" + let aliases = d.diseaseAliases.length > 0 ? `Aliases: ${d.diseaseAliases.join(', ')}` : "" + return { + value: d.id, + tooltip: `${d.displayName} (${doid}) ${aliases}`, + label: `${d.displayName} (${doid})`, + disease: d, + } + }) + return diseaseInputs + })); } ngAfterViewInit(): void { @@ -101,48 +96,43 @@ export class DiseaseInputType extends FieldType implements AfterViewInit, OnInit } this.to.searchString = value; this.errorMessages = [] - this.queryRef.refetch({name: value}).then((res) => { + this.queryRef.refetch({ name: value }).then((res) => { this.displayAdd$.next(res.data.diseaseTypeahead.filter(d => { return d.displayName.toUpperCase() == value.toUpperCase() }).length == 0 - )}) + ) + }) }; } - addDisease(diseaseName: string): void { - if(diseaseName && diseaseName != '') { + addDisease(diseaseName: string): void { + if (diseaseName && diseaseName != '') { let doid = +this.enteredDoid ? +this.enteredDoid : undefined let state = this.addDiseaseMutator.mutate(this.addDiseaseGQL, { name: diseaseName, doid: doid }, {}, (data) => { - this.field.formControl?.setValue( {id: data.addDisease.disease.id, name: data.addDisease.disease.name} ) + this.field.formControl?.setValue({ id: data.addDisease.disease.id, name: data.addDisease.disease.name }) this.to.searchString = ''; this.to.searchLength = 0; }) - state.submitSuccess$.pipe(takeUntil(this.destroy$)).subscribe((res) => { + state.submitSuccess$.pipe(untilDestroyed(this)).subscribe((res) => { if (res) { this.success = true } }) - state.submitError$.pipe(takeUntil(this.destroy$)).subscribe((errs) => { + state.submitError$.pipe(untilDestroyed(this)).subscribe((errs) => { if (errs) { this.errorMessages = errs this.success = false } }) - state.isSubmitting$.pipe(takeUntil(this.destroy$)).subscribe((loading) => { + state.isSubmitting$.pipe(untilDestroyed(this)).subscribe((loading) => { this.loading = loading }) } } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.complete(); - this.displayAdd$.complete(); - } } export const DiseaseInputTypeOption: TypeOption = { diff --git a/client/src/app/forms/config/types/drug-input/drug-input.type.ts b/client/src/app/forms/config/types/drug-input/drug-input.type.ts index b53f20a48..f6a222536 100644 --- a/client/src/app/forms/config/types/drug-input/drug-input.type.ts +++ b/client/src/app/forms/config/types/drug-input/drug-input.type.ts @@ -1,18 +1,15 @@ -import { - AfterViewInit, - Component, - OnDestroy, - OnInit, -} from '@angular/core'; +import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; +import { NetworkErrorsService } from '@app/core/services/network-errors.service'; +import { MutatorWithState } from '@app/core/utilities/mutation-state-wrapper'; import { AddDrugGQL, AddDrugMutation, AddDrugMutationVariables, DrugTypeaheadGQL, DrugTypeaheadQuery, DrugTypeaheadQueryVariables } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { FieldType } from '@ngx-formly/core'; -import { map, pluck, takeUntil } from 'rxjs/operators'; -import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { TypeOption } from "@ngx-formly/core/lib/services/formly.config"; import { QueryRef } from 'apollo-angular'; -import {TypeOption} from "@ngx-formly/core/lib/services/formly.config"; -import { MutatorWithState } from '@app/core/utilities/mutation-state-wrapper'; -import { NetworkErrorsService } from '@app/core/services/network-errors.service'; +import { BehaviorSubject, Observable, Subject } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, map, pluck, takeUntil } from 'rxjs/operators'; interface DrugTypeahead { id: number, @@ -28,19 +25,18 @@ interface DrugTypeaheadOption { drug: DrugTypeahead } +@UntilDestroy() @Component({ selector: 'cvc-drug-input-type', templateUrl: './drug-input.type.html', styleUrls: ['./drug-input.type.less'], }) -export class DrugInputType extends FieldType implements AfterViewInit, OnInit, OnDestroy { +export class DrugInputType extends FieldType implements AfterViewInit, OnInit { formControl!: FormControl; - private queryRef!: QueryRef drugs$?: Observable - private destroy$ = new Subject(); success: boolean = false errorMessages: string[] = [] loading: boolean = false @@ -56,13 +52,13 @@ export class DrugInputType extends FieldType implements AfterViewInit, OnInit, O ) { super(); - this.addDrugMutator = new MutatorWithState(networkErrorService); + this.addDrugMutator = new MutatorWithState(this.networkErrorService); this.defaultOptions = { templateOptions: { placeholder: 'Search Drugs', showArrow: false, - onSearch: () => {}, + onSearch: () => { }, minLengthSearch: 1, optionList: [] as Array<{ value: string; label: string; drug: any }>, searchString: "", @@ -72,36 +68,35 @@ export class DrugInputType extends FieldType implements AfterViewInit, OnInit, O } ngOnInit() { - this.queryRef = this.drugTypeaheadQuery.watch({ name: "zzzzz"}) + this.queryRef = this.drugTypeaheadQuery.watch({ name: "zzzzz" }) this.drugs$ = this.queryRef - .valueChanges - .pipe(takeUntil(this.destroy$), - pluck('data', 'drugTypeahead'), - map((drugs) => { - return drugs.map((d) => { - let ncitId = d.ncitId ? `${d.ncitId}` : "no NCIt ID" - let aliases = d.drugAliases.length > 0 ? `Aliases: ${d.drugAliases.join(', ')}` : "" - return { - value: d.id, - tooltip: `${d.name} (${ncitId}) ${aliases}`, - label: `${d.name} (${ncitId})`, - drug: d, - } - }) - }) - ) + .valueChanges + .pipe(pluck('data', 'drugTypeahead'), + filter(isNonNulled), + map((drugs) => { + return drugs.map((d) => { + let ncitId = d.ncitId ? `${d.ncitId}` : "no NCIt ID" + let aliases = d.drugAliases.length > 0 ? `Aliases: ${d.drugAliases.join(', ')}` : "" + return { + value: d.id, + tooltip: `${d.name} (${ncitId}) ${aliases}`, + label: `${d.name} (${ncitId})`, + drug: d, + } + }) + })); } ngAfterViewInit() { this.to.onSearch = (value: string): void => { - if (value.length < this.to.minLengthSearch) { + if (value.length < this.to.minLengthSearch) { return; } this.to.searchString = value; this.errorMessages = [] - this.queryRef.refetch({name: value}).then((res) => { + this.queryRef.refetch({ name: value }).then((res) => { let displayAdd = res.data.drugTypeahead.filter(d => { return d.name.toUpperCase() == value.toUpperCase(); }).length == 0 @@ -110,40 +105,34 @@ export class DrugInputType extends FieldType implements AfterViewInit, OnInit, O }; } - addDrug(drugName: string): void { - if(drugName && drugName != '') { + addDrug(drugName: string): void { + if (drugName && drugName != '') { let state = this.addDrugMutator.mutate(this.addDrugGQL, { name: drugName }, {}, (data) => { - this.field.formControl?.setValue( {id: data.addDrug.drug.id, name: data.addDrug.drug.name} ) + this.field.formControl?.setValue({ id: data.addDrug.drug.id, name: data.addDrug.drug.name }) this.to.searchString = ''; this.to.searchLength = 0; }) - state.submitSuccess$.pipe(takeUntil(this.destroy$)).subscribe((res) => { + state.submitSuccess$.pipe(untilDestroyed(this)).subscribe((res) => { if (res) { this.success = true } }) - state.submitError$.pipe(takeUntil(this.destroy$)).subscribe((errs) => { + state.submitError$.pipe(untilDestroyed(this)).subscribe((errs) => { if (errs) { this.errorMessages = errs this.success = false } }) - state.isSubmitting$.pipe(takeUntil(this.destroy$)).subscribe((loading) => { + state.isSubmitting$.pipe(untilDestroyed(this)).subscribe((loading) => { this.loading = loading }) } } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.complete(); - this.displayAdd$.complete(); - } } export const DrugInputTypeOption: TypeOption = { diff --git a/client/src/app/forms/config/types/duplicate-evidence-warning/duplicate-evidence-warning.html b/client/src/app/forms/config/types/duplicate-evidence-warning/duplicate-evidence-warning.html index fd1c4ea2c..3c417406a 100644 --- a/client/src/app/forms/config/types/duplicate-evidence-warning/duplicate-evidence-warning.html +++ b/client/src/app/forms/config/types/duplicate-evidence-warning/duplicate-evidence-warning.html @@ -10,4 +10,4 @@

Evidence matching this Gene/Variant/Source combination already [variantId]="this.to.evidenceParams.variantId" (initialTotalCount)="this.initalCountLoaded($event)" > - \ No newline at end of file + diff --git a/client/src/app/forms/config/types/evidence-direction-select/evidence-direction-select.type.ts b/client/src/app/forms/config/types/evidence-direction-select/evidence-direction-select.type.ts index 1e79387b2..9cff052b7 100644 --- a/client/src/app/forms/config/types/evidence-direction-select/evidence-direction-select.type.ts +++ b/client/src/app/forms/config/types/evidence-direction-select/evidence-direction-select.type.ts @@ -21,14 +21,17 @@ const optionText: any = { 'DOES_NOT_SUPPORT': 'The experiment or study does not support a prognostic association between variant and outcome' }, 'PREDISPOSING': { - 'NA': 'Evidence Direction is Not Applicable.' + 'SUPPORTS': 'The evidence suggests a pathogenic or a protective role for a germline variant in cancer', + 'DOES_NOT_SUPPORT': 'The evidence supports a benign (for Predisposition) or lack of protective (for Protectiveness) role for a germline variant in cancer.' }, 'FUNCTIONAL': { 'SUPPORTS': 'The experiment or study supports this variant causing alteration or non-alteration of the gene product function', 'DOES_NOT_SUPPORT': 'The experiment or study does not support this variant causing alteration or non-alteration of the gene product function', }, 'ONCOGENIC': { - 'NA': 'Evidence Direction is Not Applicable for Oncogenic Evidence Type.' + 'NA': 'Evidence Direction is Not Applicable for Oncogenic Evidence Type.', + 'SUPPORTS': 'The evidence supports an oncogenic or protective role for a somatic variant.', + 'DOES_NOT_SUPPORT': 'The evidence supports a benign (for Oncogenicity) or lack of protective (for Protectiveness) role for a somatic variant in cancer.', }, }, 'Assertion': { @@ -45,13 +48,17 @@ const optionText: any = { 'DOES_NOT_SUPPORT': 'The Assertion and associated evidence does not support a prognostic association between variant and outcome' }, 'PREDISPOSING': { - 'SUPPORTS': 'The Assertion and associated Evidence Items support a variant\'s impact on predisposing outcome', - 'DOES_NOT_SUPPORT': 'The Assertion and associated evidence does not support a predisposing association between variant and outcome' + 'SUPPORTS': 'The Assertion suggests a pathogenic or a protective role for a germline variant in cancer', + 'DOES_NOT_SUPPORT': 'The Assertion does not support an association between the variant and disease causation.' }, 'FUNCTIONAL': { 'SUPPORTS': 'The Assertion and associated Evidence Items support this variant causing alteration or non-alteration of the gene product function', 'DOES_NOT_SUPPORT': 'The Assertion and associated evidence does not support this variant causing alteration or non-alteration of the gene product function', }, + 'ONCOGENIC': { + 'SUPPORTS': 'The Assertion supports an oncogenic or protective role for a somatic variant.', + 'DOES_NOT_SUPPORT': 'The Assertion does not support an association between the variant and disease causation.', + }, } } @@ -81,7 +88,7 @@ export const evidenceDirectionSelectTypeOption: TypeOption = { if (!st) { return } else { to.label = `${st.entityName} Direction`; - to.helpText = `An indicator of whether the ${st.entityName} statement supports or refutes the clinical significance of an event. For predisposing and oncogenic ${st.pluralNames.get(st.entityName)}, directionality is only applied at the assertion level and N/A should be selected here.`; + to.helpText = `An indicator of whether the ${st.entityName} statement supports or refutes the clinical significance of an event.`; // find evidenceType formControl, subscribe to value changes to update options const etCtrl: AbstractControl | null = ffc?.form ? ffc.form.get('evidenceType') : null; if (!etCtrl) { return; } // no evidenceType FormControl found, cannot subscribe diff --git a/client/src/app/forms/config/types/evidence-type-select/evidence-type-select.type.ts b/client/src/app/forms/config/types/evidence-type-select/evidence-type-select.type.ts index 5eec20093..0bdbca595 100644 --- a/client/src/app/forms/config/types/evidence-type-select/evidence-type-select.type.ts +++ b/client/src/app/forms/config/types/evidence-type-select/evidence-type-select.type.ts @@ -6,12 +6,12 @@ import { Subject } from 'rxjs'; import { EntityState } from '../../states/entity.state'; const optionText: { [option: string]: string } = { - "DIAGNOSTIC": "Evidence pertains to a variant's impact on patient diagnosis (cancer subtype)", - "PREDICTIVE": "Evidence pertains to a variant's effect on therapeutic response", - "PROGNOSTIC": "Evidence pertains to a variant's impact on disease progression, severity, or patient survival", - "PREDISPOSING": "Evidence pertains to a germline variant's role in conferring susceptibility to disease (including pathogenicity evaluations)", - "ONCOGENIC": 'Evidence pertains to a somatic variant\'s involvement in tumor pathogenesis as described by the Hallmarks of Cancer', - "FUNCTIONAL": 'Evidence pertains to a variant that alters biological function from the reference state', + "DIAGNOSTIC": "Evidence pertains to a variant's impact on patient diagnosis (cancer subtype).", + "PREDICTIVE": "Evidence pertains to a variant's effect on therapeutic response.", + "PROGNOSTIC": "Evidence pertains to a variant's impact on disease progression, severity, or patient survival.", + "PREDISPOSING": "Evidence pertains to a germline variant's role in conferring susceptibility to disease (including pathogenicity evaluations).", + "ONCOGENIC": 'Evidence pertains to a somatic variant\'s involvement in tumor pathogenesis as described by the Hallmarks of Cancer.', + "FUNCTIONAL": 'Evidence pertains to a variant that alters biological function from the reference state.', } export const evidenceTypeSelectTypeOption: TypeOption = { diff --git a/client/src/app/forms/config/types/gene-input/gene-input.type.html b/client/src/app/forms/config/types/gene-input/gene-input.type.html index 016410190..cf710ab99 100644 --- a/client/src/app/forms/config/types/gene-input/gene-input.type.html +++ b/client/src/app/forms/config/types/gene-input/gene-input.type.html @@ -10,7 +10,6 @@ [nzFilterOption]="to.filterOption" (nzOnSearch)="to.onSearch($event)"> - {{genes | json}} genes$?: Observable - private destroy$ = new Subject(); - constructor( private geneTypeaheadQuery: GeneTypeaheadGQL, ) { super(); } ngOnInit() { - this.queryRef = this.geneTypeaheadQuery.watch({ entrezSymbol: ""}) + this.queryRef = this.geneTypeaheadQuery.watch({ entrezSymbol: "" }) this.genes$ = this.queryRef - .valueChanges - .pipe(takeUntil(this.destroy$), - pluck('data', 'geneTypeahead'), - map((genes) => { - return genes.map((g) => { - let aliases = g.geneAliases.length > 0 ? `Aliases: ${g.geneAliases.join(', ')}` : "" - return { - value: g.id, - tooltip: `${g.name} (${g.entrezId}) ${aliases}`, - label: `${g.name} (${g.entrezId})`, - gene: g, - } + .valueChanges + .pipe(pluck('data', 'geneTypeahead'), + filter(isNonNulled), + map((genes) => { + return genes.map((g) => { + let aliases = g.geneAliases.length > 0 ? `Aliases: ${g.geneAliases.join(', ')}` : "" + return { + value: g.id, + tooltip: `${g.name} (${g.entrezId}) ${aliases}`, + label: `${g.name} (${g.entrezId})`, + gene: g, + } + }) }) - }) - ) + ) } ngAfterViewInit() { @@ -73,19 +73,13 @@ export class GeneInputType extends FieldType implements AfterViewInit, OnDestroy return; } this.to.searchString = value; - this.queryRef.refetch({entrezSymbol: value}) + this.queryRef.refetch({ entrezSymbol: value }) } } - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.complete(); - } - } export const GeneInputTypeOption: TypeOption = { name: 'cvc-gene-input', component: GeneInputType, - // wrappers: ['form-field'], } diff --git a/client/src/app/forms/config/types/nccn-guideline-input/nccn-guideline-input.type.ts b/client/src/app/forms/config/types/nccn-guideline-input/nccn-guideline-input.type.ts index cc0d9623b..95a16b980 100644 --- a/client/src/app/forms/config/types/nccn-guideline-input/nccn-guideline-input.type.ts +++ b/client/src/app/forms/config/types/nccn-guideline-input/nccn-guideline-input.type.ts @@ -1,22 +1,22 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; import { NccnGuideline, NccnGuidelineTypeaheadGQL, NccnGuidelineTypeaheadQuery, NccnGuidelineTypeaheadQueryVariables } from '@app/generated/civic.apollo'; import { FieldType } from '@ngx-formly/core'; import { TypeOption } from '@ngx-formly/core/lib/services/formly.config'; import { QueryRef } from 'apollo-angular'; -import { Observable, Subject } from 'rxjs'; -import { map, takeUntil } from 'rxjs/operators'; +import { Observable } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, map } from 'rxjs/operators'; @Component({ selector: 'cvc-nccn-guideline-input-type', templateUrl: './nccn-guideline-input.type.html', styleUrls: ['./nccn-guideline-input.type.less'] }) -export class NccnGuidelineInputType extends FieldType implements OnInit, OnDestroy { +export class NccnGuidelineInputType extends FieldType implements OnInit { formControl!: FormControl; - private destroy$ = new Subject(); - private searchVal = "" + private searchVal = '' private queryRef?: QueryRef guidelines$?: Observable @@ -26,20 +26,15 @@ export class NccnGuidelineInputType extends FieldType implements OnInit, OnDestr } ngOnInit(): void { - this.queryRef = this.nccnGuidelineGQL.watch({name: this.searchVal}) - this.guidelines$ = this.queryRef.valueChanges.pipe( - takeUntil(this.destroy$), - map(({data}) => data.nccnGuidelinesTypeahead ) - ) - } - - ngOnDestroy(): void { - this.destroy$.next(); - this.destroy$.complete(); + this.queryRef = this.nccnGuidelineGQL.watch({ name: this.searchVal }) + this.guidelines$ = this.queryRef + .valueChanges + .pipe(map(r => r.data?.nccnGuidelinesTypeahead), + filter(isNonNulled)); } onSearch(value: string): void { - this.queryRef?.refetch({name: value}) + this.queryRef?.refetch({ name: value }) } } @@ -52,7 +47,7 @@ export const nccnGuidelineInputTypeOption: TypeOption = { templateOptions: { label: 'NCCN Guideline', placeholder: 'None specified', - helpText: 'If applicable, please provide cancer (e.g., Breast Cancer) and version (e.g., 5.2016) for the appropriate NCCN guideline.' + helpText: 'If applicable, please provide cancer (e.g., Breast Cancer) and version (e.g., 5.2016) for the appropriate NCCN guideline.' }, modelOptions: { debounce: { diff --git a/client/src/app/forms/config/types/nccn-version-input/nccn-version-input.type.ts b/client/src/app/forms/config/types/nccn-version-input/nccn-version-input.type.ts index 465183860..efd3222c4 100644 --- a/client/src/app/forms/config/types/nccn-version-input/nccn-version-input.type.ts +++ b/client/src/app/forms/config/types/nccn-version-input/nccn-version-input.type.ts @@ -44,7 +44,6 @@ export const nccnVersionInputTypeOption: TypeOption = { if (ffc) { const to: Maybe = ffc.templateOptions; to?.ncSub?.unsubscribe(); - } } } diff --git a/client/src/app/forms/config/types/phenotype-input/phenotype-input.type.ts b/client/src/app/forms/config/types/phenotype-input/phenotype-input.type.ts index b608c9876..ef84510ad 100644 --- a/client/src/app/forms/config/types/phenotype-input/phenotype-input.type.ts +++ b/client/src/app/forms/config/types/phenotype-input/phenotype-input.type.ts @@ -1,16 +1,13 @@ -import { - AfterViewInit, - Component, - OnDestroy, - OnInit, -} from '@angular/core'; +import { AfterViewInit, Component, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; import { PhenotypeTypeaheadGQL, PhenotypeTypeaheadQuery, PhenotypeTypeaheadQueryVariables } from '@app/generated/civic.apollo'; +import { UntilDestroy } from '@ngneat/until-destroy'; import { FieldType } from '@ngx-formly/core'; +import { TypeOption } from "@ngx-formly/core/lib/services/formly.config"; import { QueryRef } from 'apollo-angular'; -import { Observable, Subject } from 'rxjs'; -import { pluck, takeUntil } from 'rxjs/operators'; -import {TypeOption} from "@ngx-formly/core/lib/services/formly.config"; +import { Observable } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, pluck } from 'rxjs/operators'; interface PhenotypeTypeahead { id: number, @@ -18,15 +15,15 @@ interface PhenotypeTypeahead { name: string } +@UntilDestroy() @Component({ selector: 'cvc-phenotype-input-type', templateUrl: './phenotype-input.type.html', styleUrls: ['./phenotype-input.type.less'], }) -export class PhenotypeInputType extends FieldType implements OnInit, AfterViewInit, OnDestroy { +export class PhenotypeInputType extends FieldType implements OnInit, AfterViewInit { formControl!: FormControl; - private destroy$ = new Subject(); private queryRef?: QueryRef phenotypes$?: Observable @@ -35,7 +32,7 @@ export class PhenotypeInputType extends FieldType implements OnInit, AfterViewIn templateOptions: { placeholder: 'Search Phenotypes', showArrow: false, - onSearch: () => {}, + onSearch: () => { }, minLengthSearch: 1, optionList: [], }, @@ -48,29 +45,26 @@ export class PhenotypeInputType extends FieldType implements OnInit, AfterViewIn } ngOnInit(): void { - this.queryRef = this.phenotypeTypeaheadQuery.watch({name: ''}) + this.queryRef = this.phenotypeTypeaheadQuery.watch({ name: '' }) this.phenotypes$ = this.queryRef.valueChanges - .pipe( takeUntil(this.destroy$), pluck('data', 'phenotypeTypeahead')) + .pipe(pluck('data', 'phenotypeTypeahead'), + filter(isNonNulled)); } ngAfterViewInit(): void { this.to.onSearch = (value: string): void => { this.to.fieldValue = value; this.to.fieldLength = value.length; - if ( value.length < this.to.minLengthSearch) { + if (value.length < this.to.minLengthSearch) { return; } this.to.searchString = value; - this.queryRef?.refetch({name: value}) + this.queryRef?.refetch({ name: value }) }; } - ngOnDestroy(): void { - this.destroy$.next(); - this.destroy$.complete(); - } } export const PhenotypeInputTypeOption: TypeOption = { diff --git a/client/src/app/forms/config/types/phenotypes-array/phenotypes-array.type.ts b/client/src/app/forms/config/types/phenotypes-array/phenotypes-array.type.ts index 4ccf619b8..afcf9b65f 100644 --- a/client/src/app/forms/config/types/phenotypes-array/phenotypes-array.type.ts +++ b/client/src/app/forms/config/types/phenotypes-array/phenotypes-array.type.ts @@ -15,7 +15,7 @@ export const phenotypeArrayTypeOption: TypeOption = { defaultOptions: { templateOptions: { label: 'Phenotype', - helpText: 'Please provide any HPO phenotypes.', + helpText: 'Please provide any HPO phenotypes, including age of onset.', required: false, addText: 'Add a Phenotype', }, diff --git a/client/src/app/forms/config/types/source-input/source-selector/source-selector-typeahead/source-selector-typeahead.type.ts b/client/src/app/forms/config/types/source-input/source-selector/source-selector-typeahead/source-selector-typeahead.type.ts index 1d2407aa9..1848dbfa5 100644 --- a/client/src/app/forms/config/types/source-input/source-selector/source-selector-typeahead/source-selector-typeahead.type.ts +++ b/client/src/app/forms/config/types/source-input/source-selector/source-selector-typeahead/source-selector-typeahead.type.ts @@ -1,12 +1,13 @@ import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component } from '@angular/core'; import { FormControl } from '@angular/forms'; +import { CitationTypeaheadGQL } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { FieldType } from '@ngx-formly/core'; +import { TypeOption } from "@ngx-formly/core/lib/services/formly.config"; +import { isNonNulled } from 'rxjs-etc'; +import { filter, map } from 'rxjs/operators'; -import { - CitationTypeaheadGQL, -} from '@app/generated/civic.apollo'; -import {TypeOption} from "@ngx-formly/core/lib/services/formly.config"; - +@UntilDestroy() @Component({ selector: 'cvc-source-selector-typeahead-type', templateUrl: './source-selector-typeahead.type.html', @@ -37,7 +38,7 @@ export class SourceSelectorTypeaheadType extends FieldType implements AfterViewI // storing its value and length (for various UI conditionals) here fieldLength: 0, fieldValue: '', - optionList: [] as Array<{ value: string; label: string; source: any}> + optionList: [] as Array<{ value: string; label: string; source: any }> }, }; } @@ -48,7 +49,7 @@ export class SourceSelectorTypeaheadType extends FieldType implements AfterViewI this.to.modelChange = (e: any): void => { // this gets called both when an existing source is selected, // and when source-loader triggers onModelUpdated() & patches the form - if(this.to.optionList.length > 0) { + if (this.to.optionList.length > 0) { // update form model with selected source's id & citation const { source } = this.to.optionList.find((opt: any) => opt.value === +e); if (source) { @@ -61,13 +62,16 @@ export class SourceSelectorTypeaheadType extends FieldType implements AfterViewI this.to.onSearch = (value: string): void => { this.to.fieldValue = value; this.to.fieldLength = value.length; - if(value.length < this.to.minLengthSearch || value.length > this.to.maxLength!) { return } + if (value.length < this.to.minLengthSearch || value.length > this.to.maxLength!) { return } this.sourceTypeaheadQuery .fetch({ sourceType: this.to.sourceType, partialCitationId: +value }, { fetchPolicy: 'network-only' }) - .subscribe(({ data: { sourceTypeahead } }) => { + .pipe(map(r => r.data), + filter(isNonNulled), + untilDestroyed(this)) + .subscribe(({ sourceTypeahead }) => { this.to.optionList = sourceTypeahead.map(s => { return { value: s.citationId, label: s.citationId, source: s } }) diff --git a/client/src/app/forms/config/types/source-select/citation-loader/citation-loader.component.ts b/client/src/app/forms/config/types/source-select/citation-loader/citation-loader.component.ts index 29988ba05..0ffd8bff4 100644 --- a/client/src/app/forms/config/types/source-select/citation-loader/citation-loader.component.ts +++ b/client/src/app/forms/config/types/source-select/citation-loader/citation-loader.component.ts @@ -1,29 +1,17 @@ -import { - AfterContentInit, - ChangeDetectorRef, - Component, - EventEmitter, - Input, - Output -} from '@angular/core'; +import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core'; import { ApolloError } from '@apollo/client/errors'; -import { - CheckRemoteCitationGQL, - AddRemoteCitationGQL, - Maybe, - SourceSource, - SourceStub, - SourceStubFieldsFragmentDoc -} from '@app/generated/civic.apollo'; +import { AddRemoteCitationGQL, CheckRemoteCitationGQL, Maybe, SourceSource, SourceStub, SourceStubFieldsFragmentDoc } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { finalize } from 'rxjs/operators'; import { $enum } from 'ts-enum-util'; +@UntilDestroy() @Component({ selector: 'cvc-citation-loader', templateUrl: './citation-loader.component.html', styleUrls: ['./citation-loader.component.less'] }) -export class CitationLoaderComponent implements AfterContentInit { +export class CitationLoaderComponent { @Input() model!: any; @Output() addCitation = new EventEmitter(); @@ -70,11 +58,8 @@ export class CitationLoaderComponent implements AfterContentInit { sourceType: this.sourceType, citationId: +this.citationId }) - .pipe(finalize(() => { - this.isChecking = false; - // TODO figure out why this detectChanges call is necessary - this.changeDetectorRef.detectChanges(); - })) + .pipe(finalize(() => { this.isChecking = false; this.changeDetectorRef.detectChanges(); }), + untilDestroyed(this)) .subscribe({ next: ({ data: { remoteCitation } }) => { if (remoteCitation !== null) { @@ -111,7 +96,8 @@ export class CitationLoaderComponent implements AfterContentInit { this.isCreating = false; // TODO figure out why this detectChanges call is necessary this.changeDetectorRef.detectChanges(); - })) + }), + untilDestroyed(this)) .subscribe( { next: ({ data }): void => { @@ -128,9 +114,7 @@ export class CitationLoaderComponent implements AfterContentInit { complete: (): void => { this.createErrors = []; } - } - ) - + }); } onAcceptSource(e: any): void { @@ -140,8 +124,4 @@ export class CitationLoaderComponent implements AfterContentInit { entityFragment: SourceStubFieldsFragmentDoc }) } - - ngAfterContentInit(): void { - console.log('model'); - } } diff --git a/client/src/app/forms/config/types/variant-input/variant-input.query.gql b/client/src/app/forms/config/types/variant-input/variant-input.query.gql index ecb4aa63a..d2eb58011 100644 --- a/client/src/app/forms/config/types/variant-input/variant-input.query.gql +++ b/client/src/app/forms/config/types/variant-input/variant-input.query.gql @@ -25,4 +25,18 @@ fragment AddVariantFields on AddVariantPayload { id name } -} \ No newline at end of file +} + +query VariantSelect($name: String!, $geneId: Int) { + variants(name: $name, first: 20, geneId: $geneId) { + nodes { + ... VariantTypeaheadFields + } + } +} + + +fragment VariantSelectFields on Variant { + id + name +} diff --git a/client/src/app/forms/config/types/variant-input/variant-input.type.ts b/client/src/app/forms/config/types/variant-input/variant-input.type.ts index e01d89f00..1cfb1acba 100644 --- a/client/src/app/forms/config/types/variant-input/variant-input.type.ts +++ b/client/src/app/forms/config/types/variant-input/variant-input.type.ts @@ -1,18 +1,15 @@ -import { - AfterViewInit, - ChangeDetectionStrategy, - Component, - OnInit, -} from '@angular/core'; -import {FormControl } from '@angular/forms'; +import { AfterViewInit, ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; +import { FormControl } from '@angular/forms'; import { NetworkErrorsService } from '@app/core/services/network-errors.service'; import { MutatorWithState } from '@app/core/utilities/mutation-state-wrapper'; import { AddVariantGQL, AddVariantMutation, AddVariantMutationVariables, VariantSelectFieldsFragment, VariantSelectQuery, VariantSelectQueryVariables, VariantTypeaheadGQL } from '@app/generated/civic.apollo'; +import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { FieldType, FormlyFieldConfig } from '@ngx-formly/core'; import { TypeOption } from '@ngx-formly/core/lib/services/formly.config'; import { QueryRef } from 'apollo-angular'; -import { BehaviorSubject, Observable, Subject } from 'rxjs'; -import { map, pluck, takeUntil } from 'rxjs/operators'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, map, pluck } from 'rxjs/operators'; interface VariantSelectOption { value: number; @@ -20,6 +17,7 @@ interface VariantSelectOption { variant: VariantSelectFieldsFragment; } +@UntilDestroy() @Component({ selector: 'cvc-variant-input-type', templateUrl: './variant-input.type.html', @@ -28,10 +26,9 @@ interface VariantSelectOption { }) export class VariantInputType extends FieldType implements OnInit, AfterViewInit { formControl!: FormControl; - private queryRef!: QueryRef< VariantSelectQuery, VariantSelectQueryVariables >; + private queryRef!: QueryRef; variants$?: Observable; - private destroy$ = new Subject(); success: boolean = false errorMessages: string[] = [] loading: boolean = false @@ -44,10 +41,10 @@ export class VariantInputType extends FieldType implements OnInit, AfterViewInit private variantTypeaheadQuery: VariantTypeaheadGQL, private networkErrorService: NetworkErrorsService, private addVariantGQL: AddVariantGQL - ) { - super(); + ) { + super(); - this.addVariantMutator = new MutatorWithState(networkErrorService) + this.addVariantMutator = new MutatorWithState(this.networkErrorService) this.defaultOptions = { templateOptions: { @@ -61,8 +58,8 @@ export class VariantInputType extends FieldType implements OnInit, AfterViewInit expressionProperties: { 'templateOptions.geneId': (model: any, formState: any, ffc?: FormlyFieldConfig) => { let mainModel = ffc?.parent?.parent?.model - if(mainModel) { - if(mainModel.gene && mainModel.gene[0]) { + if (mainModel) { + if (mainModel.gene && mainModel.gene[0]) { return mainModel.gene[0].id } } @@ -75,9 +72,12 @@ export class VariantInputType extends FieldType implements OnInit, AfterViewInit ngOnInit(): void { this.queryRef = this.variantTypeaheadQuery.watch({ name: 'zzzz' }); // no need to unsubscribe variants$ as ngrxLet in the template does this automatically - this.variants$ = this.queryRef.valueChanges.pipe( - pluck('data', 'variants', 'nodes'), - map((variants: VariantSelectFieldsFragment[]): VariantSelectOption[] => { + this.variants$ = this.queryRef + .valueChanges + .pipe( + pluck('data', 'variants', 'nodes'), + filter(isNonNulled), + map((variants: VariantSelectFieldsFragment[]): VariantSelectOption[] => { let variantInputs = variants.map((v: VariantSelectFieldsFragment) => { return { value: v.id, @@ -85,14 +85,11 @@ export class VariantInputType extends FieldType implements OnInit, AfterViewInit variant: v, }; }); - + return variantInputs; - } - ) - ); + })); } - ngAfterViewInit() { this.to.onSearch = (value: string): void => { if (value.length < this.to.minLengthSearch) { @@ -100,47 +97,43 @@ export class VariantInputType extends FieldType implements OnInit, AfterViewInit } this.to.searchString = value; this.errorMessages = [] - this.queryRef.refetch({name: value, geneId: this.to.geneId}).then((res) => { + this.queryRef.refetch({ name: value, geneId: this.to.geneId }).then((res) => { this.displayAdd$.next(res.data.variants.nodes.filter(d => { return d.name.toUpperCase() == value.toUpperCase() }).length == 0 - )}) + ) + }) }; } - addVariant(variantName: string): void { - if(variantName && variantName != '' && this.to.geneId) { + addVariant(variantName: string): void { + if (variantName && variantName != '' && this.to.geneId) { let state = this.addVariantMutator.mutate(this.addVariantGQL, { name: variantName, geneId: this.to.geneId }, {}, (data) => { - this.field.formControl?.setValue( {id: data.addVariant.variant.id, name: data.addVariant.variant.name}) + this.field.formControl?.setValue({ id: data.addVariant.variant.id, name: data.addVariant.variant.name }) this.to.searchString = ''; this.to.searchLength = 0; }) - state.submitSuccess$.pipe(takeUntil(this.destroy$)).subscribe((res) => { + state.submitSuccess$.pipe(untilDestroyed(this)).subscribe((res) => { if (res) { this.success = true } }) - state.submitError$.pipe(takeUntil(this.destroy$)).subscribe((errs) => { + state.submitError$.pipe(untilDestroyed(this)).subscribe((errs) => { if (errs) { this.errorMessages = errs this.success = false } }) - state.isSubmitting$.pipe(takeUntil(this.destroy$)).subscribe((loading) => { + state.isSubmitting$.pipe(untilDestroyed(this)).subscribe((loading) => { this.loading = loading }) } } - ngOnDestroy(): void { - this.destroy$.next(); - this.destroy$.complete(); - this.displayAdd$.complete(); - } } export const variantInputTypeOption: TypeOption = { diff --git a/client/src/app/forms/config/types/variant-select/variant-select.module.ts b/client/src/app/forms/config/types/variant-select/variant-select.module.ts deleted file mode 100644 index bb258b507..000000000 --- a/client/src/app/forms/config/types/variant-select/variant-select.module.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { VariantSelectType } from './variant-select.type'; -import { NzSelectModule } from 'ng-zorro-antd/select'; -import { ConfigOption, FormlyModule } from '@ngx-formly/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { NzTypographyModule } from 'ng-zorro-antd/typography'; -import { ReactiveComponentModule } from '@ngrx/component'; -import { NzButtonModule } from 'ng-zorro-antd/button'; -import { NzIconModule } from 'ng-zorro-antd/icon'; -import { CvcFormErrorsAlertModule } from '../../components/form-errors-alert/form-errors-alert.module'; -import { NzAlertModule } from 'ng-zorro-antd/alert'; - -const configOption: ConfigOption = { - types: [ - { // variant-select only - name: 'variant-select', - component: VariantSelectType, - }, - { // field-tag wrapper replaces select with variant-tag upon selection - name: 'variant-select-tag', - extends: 'variant-select', - wrappers: ['field-tag'] - }, - { // select-tag field with base form-field label, validation - name: 'variant-select-field', - extends: 'variant-select-tag', - wrappers: ['form-field', 'field-tag'] - }, - { // select-tag card with cvc-form-card label, validation, helptext - name: 'variant-select-card', - extends: 'variant-select-tag', - wrappers: ['form-card', 'field-tag'] - } - ] -} - -@NgModule({ - declarations: [VariantSelectType], - imports: [ - CommonModule, - ReactiveFormsModule, - ReactiveComponentModule, - FormlyModule.forChild(configOption), - NzSelectModule, - NzTypographyModule, - NzButtonModule, - NzIconModule, - NzAlertModule, - CvcFormErrorsAlertModule - ] -}) -export class CvcVariantSelectTypeModule { } diff --git a/client/src/app/forms/config/types/variant-select/variant-select.query.gql b/client/src/app/forms/config/types/variant-select/variant-select.query.gql deleted file mode 100644 index 08bb563c4..000000000 --- a/client/src/app/forms/config/types/variant-select/variant-select.query.gql +++ /dev/null @@ -1,14 +0,0 @@ -query VariantSelect($name: String!, $geneId: Int) { - variants(name: $name, first: 20, geneId: $geneId) { - nodes { - ... VariantTypeaheadFields - } - } -} - -fragment VariantSelectFields on Variant { - id - name -} - - diff --git a/client/src/app/forms/config/types/variant-select/variant-select.type.html b/client/src/app/forms/config/types/variant-select/variant-select.type.html deleted file mode 100644 index 864b716a5..000000000 --- a/client/src/app/forms/config/types/variant-select/variant-select.type.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {{ opt.label}} - - - - - - - - - - - - - - -
- Enter a Variant name to search CIViC Variant. -
-
-
-
\ No newline at end of file diff --git a/client/src/app/forms/config/types/variant-select/variant-select.type.ts b/client/src/app/forms/config/types/variant-select/variant-select.type.ts deleted file mode 100644 index 9f8aa602a..000000000 --- a/client/src/app/forms/config/types/variant-select/variant-select.type.ts +++ /dev/null @@ -1,180 +0,0 @@ -import { - AfterViewInit, - ChangeDetectionStrategy, - Component, - OnDestroy, - OnInit, -} from '@angular/core'; -import { AbstractControl, FormControl } from '@angular/forms'; -import { NetworkErrorsService } from '@app/core/services/network-errors.service'; -import { MutatorWithState } from '@app/core/utilities/mutation-state-wrapper'; -import { - AddVariantFieldsFragmentDoc, - AddVariantGQL, - AddVariantMutation, - AddVariantMutationVariables, - Maybe, - VariantSelectFieldsFragment, - VariantSelectFieldsFragmentDoc, - VariantSelectGQL, - VariantSelectQuery, - VariantSelectQueryVariables, -} from '@app/generated/civic.apollo'; -import { - FieldType, - FormlyFieldConfig, - FormlyTemplateOptions, -} from '@ngx-formly/core'; -import { QueryRef } from 'apollo-angular'; -import { Observable, Subject } from 'rxjs'; -import { pluck, map, takeUntil } from 'rxjs/operators'; - -interface VariantSelectOption { - value: number; - label: string; - variant: VariantSelectFieldsFragment; -} - -@Component({ - selector: 'cvc-variant-select-type', - templateUrl: './variant-select.type.html', - styleUrls: ['./variant-select.type.less'], - changeDetection: ChangeDetectionStrategy.OnPush, -}) -export class VariantSelectType extends FieldType implements OnInit, AfterViewInit, OnDestroy { - formControl!: FormControl; - private queryRef!: QueryRef< VariantSelectQuery, VariantSelectQueryVariables >; - variants$?: Observable; - - - private destroy$ = new Subject(); - success: boolean = false - errorMessages: string[] = [] - loading: boolean = false - displayAdd: boolean = false - - addVariantMutator: MutatorWithState - - constructor( - private variantTypeaheadQuery: VariantSelectGQL, - private networkErrorService: NetworkErrorsService, - private addVariantGqL: AddVariantGQL - ) { - super(); - - this.addVariantMutator = new MutatorWithState(networkErrorService); - - this.defaultOptions = { - defaultValue: undefined, - templateOptions: { - label: 'Variant', - placeholder: 'Search Variants', - onSearch: () => {}, - minLengthSearch: 1, - optionList: [] as Array<{ value: string; label: string; variant: any }>, - searchLength: 0, - searchString: '', - entityType: 'Variant', - entityFragment: VariantSelectFieldsFragmentDoc, - }, - hideExpression: (m: any, st: any, ff?: FormlyFieldConfig) => { - return !m.gene; - }, - hooks: { - onInit: (ffc?: FormlyFieldConfig): void => { - const to: Maybe = ffc?.templateOptions; - const geneCtrl: AbstractControl | null = ffc?.form ? ffc.form.get('gene') : null; - if (!geneCtrl) { return; } - if (!to) { return; } - - to.geneSub = geneCtrl.valueChanges.subscribe((g) => { - if(g) { - to.geneId = g.id; - } - }); - }, - onDestroy: (ffc?: FormlyFieldConfig): void => { - const to: Maybe = ffc?.templateOptions; - if (to) { - to.geneSub.unsubscribe(); - } - }, - }, - }; - } - - ngOnInit(): void { - this.queryRef = this.variantTypeaheadQuery.watch({ name: 'zzzz' }); - // no need to unsubscribe variants$ as ngrxLet in the template does this automatically - this.variants$ = this.queryRef.valueChanges.pipe( - pluck('data', 'variants', 'nodes'), - map((variants: VariantSelectFieldsFragment[]): VariantSelectOption[] => { - let variantInputs = variants.map((v: VariantSelectFieldsFragment) => { - return { - value: v.id, - label: v.name, - variant: v, - }; - }); - - this.displayAdd = variantInputs.filter(v => { return v.label.toUpperCase() == this.to.searchString.toUpperCase() }).length <= 0 - return variantInputs; - } - ) - ); - } - - ngAfterViewInit(): void { - this.to.onSearch = (value: string): void => { - this.to.fieldValue = value; - this.to.searchLength = value.length; - if ( - value.length < this.to.minLengthSearch || - value.length > this.to.maxLength! - ) { - return; - } - this.to.searchString = value; - this.queryRef.refetch({ name: value, geneId: this.to.geneId }); - }; - } - - addVariant(variantName: string): void { - if(variantName && variantName != '' && this.to.geneId) { - let state = this.addVariantMutator.mutate(this.addVariantGqL, { name: variantName, geneId: this.to.geneId }, - (data) => { - const parentOptions = this.field.parent?.templateOptions - if(parentOptions) { - parentOptions.entityType = 'LinkableVariant' - parentOptions.entityFragment = AddVariantFieldsFragmentDoc - } - this.field.formControl?.setValue( {id: data.addVariant.variant.id, name: data.addVariant.variant.name}) - this.to.searchString = ''; - this.to.searchLength = 0; - }) - - state.submitSuccess$.pipe(takeUntil(this.destroy$)).subscribe((res) => { - if (res) { - this.success = true - } - }) - - state.submitError$.pipe(takeUntil(this.destroy$)).subscribe((errs) => { - if (errs) { - this.errorMessages = errs - this.success = false - } - }) - - state.isSubmitting$.pipe(takeUntil(this.destroy$)).subscribe((loading) => { - this.loading = loading - }) - } - - } - - ngOnDestroy(): void { - this.destroy$.next(); - this.destroy$.complete(); - } -} diff --git a/client/src/app/forms/config/types/variant-type-input/variant-type-input.type.ts b/client/src/app/forms/config/types/variant-type-input/variant-type-input.type.ts index 651eb5e42..21d8e082b 100644 --- a/client/src/app/forms/config/types/variant-type-input/variant-type-input.type.ts +++ b/client/src/app/forms/config/types/variant-type-input/variant-type-input.type.ts @@ -1,16 +1,12 @@ -import { - AfterViewInit, - Component, - OnDestroy, - OnInit, -} from '@angular/core'; +import { AfterViewInit, Component, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; import { VariantTypeTypeaheadGQL, VariantTypeTypeaheadQuery, VariantTypeTypeaheadQueryVariables } from '@app/generated/civic.apollo'; import { FieldType } from '@ngx-formly/core'; +import { TypeOption } from "@ngx-formly/core/lib/services/formly.config"; import { QueryRef } from 'apollo-angular'; -import { Observable, Subject } from 'rxjs'; -import { pluck, takeUntil } from 'rxjs/operators'; -import {TypeOption} from "@ngx-formly/core/lib/services/formly.config"; +import { Observable } from 'rxjs'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, map } from 'rxjs/operators'; interface VariantTypeTypeahead { id: number, @@ -23,10 +19,9 @@ interface VariantTypeTypeahead { templateUrl: './variant-type-input.type.html', styleUrls: ['./variant-type-input.type.less'], }) -export class VariantTypeInputType extends FieldType implements OnInit, AfterViewInit, OnDestroy { +export class VariantTypeInputType extends FieldType implements OnInit, AfterViewInit { formControl!: FormControl; - private destroy$ = new Subject(); private queryRef?: QueryRef variantTypes$?: Observable @@ -35,7 +30,7 @@ export class VariantTypeInputType extends FieldType implements OnInit, AfterView templateOptions: { placeholder: 'Search Variant Types', showArrow: false, - onSearch: () => {}, + onSearch: () => { }, minLengthSearch: 1, optionList: [], }, @@ -47,10 +42,11 @@ export class VariantTypeInputType extends FieldType implements OnInit, AfterView } ngOnInit() { - this.queryRef = this.variantTypeTypeaheadQuery.watch({name: ''}) + this.queryRef = this.variantTypeTypeaheadQuery.watch({ name: '' }) this.variantTypes$ = this.queryRef.valueChanges - .pipe( takeUntil(this.destroy$), pluck('data', 'variantTypeTypeahead')) + .pipe(map(r => r.data?.variantTypeTypeahead), + filter(isNonNulled)); } ngAfterViewInit() { @@ -64,14 +60,9 @@ export class VariantTypeInputType extends FieldType implements OnInit, AfterView return; } - this.queryRef?.refetch({name: value}) + this.queryRef?.refetch({ name: value }) }; } - - ngOnDestroy() { - this.destroy$.next(); - this.destroy$.complete(); - } } export const VariantTypeInputTypeOption: TypeOption = { diff --git a/client/src/app/generated/server.field-policies.ts b/client/src/app/generated/civic.apollo-helpers.ts similarity index 97% rename from client/src/app/generated/server.field-policies.ts rename to client/src/app/generated/civic.apollo-helpers.ts index 7b3860aca..4e5ec409c 100644 --- a/client/src/app/generated/server.field-policies.ts +++ b/client/src/app/generated/civic.apollo-helpers.ts @@ -45,13 +45,14 @@ export type AdvancedSearchResultFieldPolicy = { resultIds?: FieldPolicy | FieldReadFunction, searchEndpoint?: FieldPolicy | FieldReadFunction }; -export type AssertionKeySpecifier = ('acceptanceEvent' | 'acmgCodes' | 'ampLevel' | 'assertionDirection' | 'assertionType' | 'clinicalSignificance' | 'comments' | 'description' | 'disease' | 'drugInteractionType' | 'drugs' | 'events' | 'evidenceItems' | 'evidenceItemsCount' | 'fdaCompanionTest' | 'fdaCompanionTestLastUpdated' | 'flagged' | 'flags' | 'gene' | 'id' | 'lastAcceptedRevisionEvent' | 'lastCommentEvent' | 'lastSubmittedRevisionEvent' | 'link' | 'name' | 'nccnGuideline' | 'nccnGuidelineVersion' | 'phenotypes' | 'regulatoryApproval' | 'regulatoryApprovalLastUpdated' | 'rejectionEvent' | 'revisions' | 'status' | 'submissionEvent' | 'summary' | 'variant' | 'variantOrigin' | AssertionKeySpecifier)[]; +export type AssertionKeySpecifier = ('acceptanceEvent' | 'acmgCodes' | 'ampLevel' | 'assertionDirection' | 'assertionType' | 'clingenCodes' | 'clinicalSignificance' | 'comments' | 'description' | 'disease' | 'drugInteractionType' | 'drugs' | 'events' | 'evidenceItems' | 'evidenceItemsCount' | 'fdaCompanionTest' | 'fdaCompanionTestLastUpdated' | 'flagged' | 'flags' | 'gene' | 'id' | 'lastAcceptedRevisionEvent' | 'lastCommentEvent' | 'lastSubmittedRevisionEvent' | 'link' | 'name' | 'nccnGuideline' | 'nccnGuidelineVersion' | 'phenotypes' | 'regulatoryApproval' | 'regulatoryApprovalLastUpdated' | 'rejectionEvent' | 'revisions' | 'status' | 'submissionEvent' | 'summary' | 'variant' | 'variantOrigin' | AssertionKeySpecifier)[]; export type AssertionFieldPolicy = { acceptanceEvent?: FieldPolicy | FieldReadFunction, acmgCodes?: FieldPolicy | FieldReadFunction, ampLevel?: FieldPolicy | FieldReadFunction, assertionDirection?: FieldPolicy | FieldReadFunction, assertionType?: FieldPolicy | FieldReadFunction, + clingenCodes?: FieldPolicy | FieldReadFunction, clinicalSignificance?: FieldPolicy | FieldReadFunction, comments?: FieldPolicy | FieldReadFunction, description?: FieldPolicy | FieldReadFunction, @@ -346,6 +347,12 @@ export type CivicTimepointStatsFieldPolicy = { users?: FieldPolicy | FieldReadFunction, variants?: FieldPolicy | FieldReadFunction }; +export type ClingenCodeKeySpecifier = ('code' | 'description' | 'id' | ClingenCodeKeySpecifier)[]; +export type ClingenCodeFieldPolicy = { + code?: FieldPolicy | FieldReadFunction, + description?: FieldPolicy | FieldReadFunction, + id?: FieldPolicy | FieldReadFunction +}; export type ClinicalTrialKeySpecifier = ('description' | 'id' | 'link' | 'name' | 'nctId' | 'url' | ClinicalTrialKeySpecifier)[]; export type ClinicalTrialFieldPolicy = { description?: FieldPolicy | FieldReadFunction, @@ -745,7 +752,7 @@ export type MutationFieldPolicy = { updateNotificationStatus?: FieldPolicy | FieldReadFunction, updateSourceSuggestionStatus?: FieldPolicy | FieldReadFunction }; -export type MyVariantInfoKeySpecifier = ('caddConsequence' | 'caddDetail' | 'caddScore' | 'clinvarClinicalSignificance' | 'clinvarHgvsCoding' | 'clinvarHgvsGenomic' | 'clinvarHgvsNonCoding' | 'clinvarHgvsProtein' | 'clinvarId' | 'clinvarOmim' | 'cosmicId' | 'dbnsfpInterproDomain' | 'dbsnpRsid' | 'eglClass' | 'eglHgvs' | 'eglProtein' | 'eglTranscript' | 'exacAlleleCount' | 'exacAlleleFrequency' | 'exacAlleleNumber' | 'fathmmMklPrediction' | 'fathmmMklScore' | 'fathmmPrediction' | 'fathmmScore' | 'fitconsScore' | 'gerp' | 'gnomadExomeAlleleCount' | 'gnomadExomeAlleleFrequency' | 'gnomadExomeAlleleNumber' | 'gnomadExomeFilter' | 'gnomadGenomeAlleleCount' | 'gnomadGenomeAlleleFrequency' | 'gnomadGenomeAlleleNumber' | 'gnomadGenomeFilter' | 'lrtPrediction' | 'lrtScore' | 'metalrPrediction' | 'metalrScore' | 'metasvmPrediction' | 'metasvmScore' | 'mutationassessorPrediction' | 'mutationassessorScore' | 'mutationtasterPrediction' | 'mutationtasterScore' | 'myVariantInfoId' | 'phastcons100way' | 'phastcons30way' | 'phyloP100way' | 'phyloP30way' | 'polyphen2HdivPrediction' | 'polyphen2HdivScore' | 'polyphen2HvarPrediction' | 'polyphen2HvarScore' | 'proveanPrediction' | 'proveanScore' | 'revelScore' | 'siftPrediction' | 'siftScore' | 'siphy' | 'snpeffSnpEffect' | 'snpeffSnpImpact' | MyVariantInfoKeySpecifier)[]; +export type MyVariantInfoKeySpecifier = ('caddConsequence' | 'caddDetail' | 'caddScore' | 'clinvarClinicalSignificance' | 'clinvarHgvsCoding' | 'clinvarHgvsGenomic' | 'clinvarHgvsNonCoding' | 'clinvarHgvsProtein' | 'clinvarId' | 'clinvarOmim' | 'cosmicId' | 'dbnsfpInterproDomain' | 'dbsnpRsid' | 'eglClass' | 'eglHgvs' | 'eglProtein' | 'eglTranscript' | 'exacAlleleCount' | 'exacAlleleFrequency' | 'exacAlleleNumber' | 'fathmmMklPrediction' | 'fathmmMklScore' | 'fathmmPrediction' | 'fathmmScore' | 'fitconsScore' | 'gerp' | 'gnomadExomeAlleleCount' | 'gnomadExomeAlleleFrequency' | 'gnomadExomeAlleleNumber' | 'gnomadExomeFilter' | 'gnomadGenomeAlleleCount' | 'gnomadGenomeAlleleFrequency' | 'gnomadGenomeAlleleNumber' | 'gnomadGenomeFilter' | 'lrtPrediction' | 'lrtScore' | 'metalrPrediction' | 'metalrScore' | 'metasvmPrediction' | 'metasvmScore' | 'mutationassessorPrediction' | 'mutationassessorScore' | 'mutationtasterPrediction' | 'mutationtasterScore' | 'myVariantInfoId' | 'phastcons30way' | 'phastcons100way' | 'phyloP30way' | 'phyloP100way' | 'polyphen2HdivPrediction' | 'polyphen2HdivScore' | 'polyphen2HvarPrediction' | 'polyphen2HvarScore' | 'proveanPrediction' | 'proveanScore' | 'revelScore' | 'siftPrediction' | 'siftScore' | 'siphy' | 'snpeffSnpEffect' | 'snpeffSnpImpact' | MyVariantInfoKeySpecifier)[]; export type MyVariantInfoFieldPolicy = { caddConsequence?: FieldPolicy | FieldReadFunction, caddDetail?: FieldPolicy | FieldReadFunction, @@ -792,10 +799,10 @@ export type MyVariantInfoFieldPolicy = { mutationtasterPrediction?: FieldPolicy | FieldReadFunction, mutationtasterScore?: FieldPolicy | FieldReadFunction, myVariantInfoId?: FieldPolicy | FieldReadFunction, - phastcons100way?: FieldPolicy | FieldReadFunction, phastcons30way?: FieldPolicy | FieldReadFunction, - phyloP100way?: FieldPolicy | FieldReadFunction, + phastcons100way?: FieldPolicy | FieldReadFunction, phyloP30way?: FieldPolicy | FieldReadFunction, + phyloP100way?: FieldPolicy | FieldReadFunction, polyphen2HdivPrediction?: FieldPolicy | FieldReadFunction, polyphen2HdivScore?: FieldPolicy | FieldReadFunction, polyphen2HvarPrediction?: FieldPolicy | FieldReadFunction, @@ -911,7 +918,7 @@ export type PhenotypePopoverFieldPolicy = { name?: FieldPolicy | FieldReadFunction, url?: FieldPolicy | FieldReadFunction }; -export type QueryKeySpecifier = ('acmgCodesTypeahead' | 'assertion' | 'assertions' | 'browseDiseases' | 'browseGenes' | 'browseSources' | 'browseVariantGroups' | 'browseVariants' | 'clinicalTrial' | 'clinicalTrials' | 'comment' | 'comments' | 'contributors' | 'countries' | 'dataReleases' | 'disease' | 'diseasePopover' | 'diseaseTypeahead' | 'drug' | 'drugPopover' | 'drugTypeahead' | 'drugs' | 'entityTypeahead' | 'events' | 'evidenceItem' | 'evidenceItems' | 'flag' | 'flags' | 'gene' | 'geneTypeahead' | 'genes' | 'nccnGuidelinesTypeahead' | 'notifications' | 'organization' | 'organizations' | 'phenotype' | 'phenotypePopover' | 'phenotypeTypeahead' | 'phenotypes' | 'previewCommentText' | 'remoteCitation' | 'revision' | 'revisions' | 'search' | 'searchByPermalink' | 'searchGenes' | 'source' | 'sourcePopover' | 'sourceSuggestionValues' | 'sourceSuggestions' | 'sourceTypeahead' | 'subscriptionForEntity' | 'timepointStats' | 'user' | 'userTypeahead' | 'users' | 'validateRevisionsForAcceptance' | 'variant' | 'variantGroup' | 'variantGroups' | 'variantType' | 'variantTypePopover' | 'variantTypeTypeahead' | 'variantTypes' | 'variants' | 'viewer' | QueryKeySpecifier)[]; +export type QueryKeySpecifier = ('acmgCodesTypeahead' | 'assertion' | 'assertions' | 'browseDiseases' | 'browseGenes' | 'browseSources' | 'browseVariantGroups' | 'browseVariants' | 'clingenCodesTypeahead' | 'clinicalTrial' | 'clinicalTrials' | 'comment' | 'comments' | 'contributors' | 'countries' | 'dataReleases' | 'disease' | 'diseasePopover' | 'diseaseTypeahead' | 'drug' | 'drugPopover' | 'drugTypeahead' | 'drugs' | 'entityTypeahead' | 'events' | 'evidenceItem' | 'evidenceItems' | 'flag' | 'flags' | 'gene' | 'geneTypeahead' | 'genes' | 'nccnGuidelinesTypeahead' | 'notifications' | 'organization' | 'organizations' | 'phenotype' | 'phenotypePopover' | 'phenotypeTypeahead' | 'phenotypes' | 'previewCommentText' | 'remoteCitation' | 'revision' | 'revisions' | 'search' | 'searchByPermalink' | 'searchGenes' | 'source' | 'sourcePopover' | 'sourceSuggestionValues' | 'sourceSuggestions' | 'sourceTypeahead' | 'subscriptionForEntity' | 'timepointStats' | 'user' | 'userTypeahead' | 'users' | 'validateRevisionsForAcceptance' | 'variant' | 'variantGroup' | 'variantGroups' | 'variantType' | 'variantTypePopover' | 'variantTypeTypeahead' | 'variantTypes' | 'variants' | 'viewer' | QueryKeySpecifier)[]; export type QueryFieldPolicy = { acmgCodesTypeahead?: FieldPolicy | FieldReadFunction, assertion?: FieldPolicy | FieldReadFunction, @@ -921,6 +928,7 @@ export type QueryFieldPolicy = { browseSources?: FieldPolicy | FieldReadFunction, browseVariantGroups?: FieldPolicy | FieldReadFunction, browseVariants?: FieldPolicy | FieldReadFunction, + clingenCodesTypeahead?: FieldPolicy | FieldReadFunction, clinicalTrial?: FieldPolicy | FieldReadFunction, clinicalTrials?: FieldPolicy | FieldReadFunction, comment?: FieldPolicy | FieldReadFunction, @@ -1401,7 +1409,7 @@ export type WithRevisionsFieldPolicy = { lastSubmittedRevisionEvent?: FieldPolicy | FieldReadFunction, revisions?: FieldPolicy | FieldReadFunction }; -export type TypedTypePolicies = TypePolicies & { +export type StrictTypedTypePolicies = { AcceptRevisionsPayload?: Omit & { keyFields?: false | AcceptRevisionsPayloadKeySpecifier | (() => undefined | AcceptRevisionsPayloadKeySpecifier), fields?: AcceptRevisionsPayloadFieldPolicy, @@ -1558,6 +1566,10 @@ export type TypedTypePolicies = TypePolicies & { keyFields?: false | CivicTimepointStatsKeySpecifier | (() => undefined | CivicTimepointStatsKeySpecifier), fields?: CivicTimepointStatsFieldPolicy, }, + ClingenCode?: Omit & { + keyFields?: false | ClingenCodeKeySpecifier | (() => undefined | ClingenCodeKeySpecifier), + fields?: ClingenCodeFieldPolicy, + }, ClinicalTrial?: Omit & { keyFields?: false | ClinicalTrialKeySpecifier | (() => undefined | ClinicalTrialKeySpecifier), fields?: ClinicalTrialFieldPolicy, @@ -1982,4 +1994,5 @@ export type TypedTypePolicies = TypePolicies & { keyFields?: false | WithRevisionsKeySpecifier | (() => undefined | WithRevisionsKeySpecifier), fields?: WithRevisionsFieldPolicy, } -}; \ No newline at end of file +}; +export type TypedTypePolicies = StrictTypedTypePolicies & TypePolicies; \ No newline at end of file diff --git a/client/src/app/generated/civic.apollo.ts b/client/src/app/generated/civic.apollo.ts index aec4d840c..e18b4bec5 100644 --- a/client/src/app/generated/civic.apollo.ts +++ b/client/src/app/generated/civic.apollo.ts @@ -3,6 +3,7 @@ import { gql } from 'apollo-angular'; import { Injectable } from '@angular/core'; import * as Apollo from 'apollo-angular'; export type Maybe = T | undefined; +export type InputMaybe = T | undefined; export type Exact = { [K in keyof T]: T[K] }; export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; @@ -19,25 +20,23 @@ export type Scalars = { JSON: any; }; - - /** Autogenerated input type of AcceptRevisions */ export type AcceptRevisionsInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Body of an optional comment to attach to the revision on acceptance. */ - comment?: Maybe; + comment?: InputMaybe; /** A list of IDs of the Revisions to accept. */ - ids?: Maybe>; + ids?: InputMaybe>; /** * The ID of the organization to credit the user's contributions to. * If the user belongs to a single organization or no organizations, this field is not required. * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; /** The ID of a revision set. */ - revisionSetId?: Maybe; + revisionSetId?: InputMaybe; }; /** Autogenerated return type of AcceptRevisions */ @@ -63,18 +62,18 @@ export type AddCommentInput = { /** Text of the comment. */ body: Scalars['String']; /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** * The ID of the organization to credit the user's contributions to. * If the user belongs to a single organization or no organizations, this field is not required. * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; /** The commentable to attach the comment to. Specified by ID and Type. */ subject: CommentableInput; /** Optional title for the comment. */ - title?: Maybe; + title?: InputMaybe; }; /** Autogenerated return type of AddComment */ @@ -89,9 +88,9 @@ export type AddCommentPayload = { /** Autogenerated input type of AddDisease */ export type AddDiseaseInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** The DOID of the disease, if the disease is present in the Disease Ontology. */ - doid?: Maybe; + doid?: InputMaybe; /** The name of the disease. */ name: Scalars['String']; }; @@ -110,11 +109,11 @@ export type AddDiseasePayload = { /** Autogenerated input type of AddDrug */ export type AddDrugInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** The name of the drug. */ name: Scalars['String']; /** The NCIt ID of the drug, if the drug is present in the NCIthesaurus. */ - ncitId?: Maybe; + ncitId?: InputMaybe; }; /** Autogenerated return type of AddDrug */ @@ -133,7 +132,7 @@ export type AddRemoteCitationInput = { /** The external id for the source to add. */ citationId: Scalars['Int']; /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** The origin of the external source. */ sourceType: SourceSource; }; @@ -150,7 +149,7 @@ export type AddRemoteCitationPayload = { /** Autogenerated input type of AddVariant */ export type AddVariantInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** The CIViC ID of the Gene to which the new variant belongs. */ geneId: Scalars['Int']; /** The name of the variant to add. */ @@ -198,6 +197,7 @@ export type Assertion = Commentable & EventOriginObject & EventSubject & Flaggab ampLevel?: Maybe; assertionDirection: AssertionDirection; assertionType: AssertionType; + clingenCodes: Array; clinicalSignificance: AssertionClinicalSignificance; /** List and filter comments. */ comments: CommentConnection; @@ -238,52 +238,52 @@ export type Assertion = Commentable & EventOriginObject & EventSubject & Flaggab export type AssertionCommentsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; - mentionedEntity?: Maybe; - mentionedRole?: Maybe; - mentionedUserId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + mentionedEntity?: InputMaybe; + mentionedRole?: InputMaybe; + mentionedUserId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type AssertionEventsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - last?: Maybe; - organizationId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + organizationId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type AssertionFlagsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - flaggingUserId?: Maybe; - last?: Maybe; - resolvingUserId?: Maybe; - sortBy?: Maybe; - state?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + flaggingUserId?: InputMaybe; + last?: InputMaybe; + resolvingUserId?: InputMaybe; + sortBy?: InputMaybe; + state?: InputMaybe; }; export type AssertionRevisionsArgs = { - after?: Maybe; - before?: Maybe; - fieldName?: Maybe; - first?: Maybe; - last?: Maybe; - originatingUserId?: Maybe; - revisionsetId?: Maybe; - sortBy?: Maybe; - status?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + fieldName?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + originatingUserId?: InputMaybe; + revisionsetId?: InputMaybe; + sortBy?: InputMaybe; + status?: InputMaybe; }; export enum AssertionClinicalSignificance { @@ -291,9 +291,11 @@ export enum AssertionClinicalSignificance { Benign = 'BENIGN', BetterOutcome = 'BETTER_OUTCOME', LikelyBenign = 'LIKELY_BENIGN', + LikelyOncogenic = 'LIKELY_ONCOGENIC', LikelyPathogenic = 'LIKELY_PATHOGENIC', Na = 'NA', Negative = 'NEGATIVE', + Oncogenic = 'ONCOGENIC', Pathogenic = 'PATHOGENIC', PoorOutcome = 'POOR_OUTCOME', Positive = 'POSITIVE', @@ -342,6 +344,8 @@ export type AssertionFields = { assertionDirection: AssertionDirection; /** The Type of the Assertion */ assertionType: AssertionType; + /** List of CIViC IDs for the ClinGen/CGC/VICC codes associated with this Assertion */ + clingenCodeIds: Array; /** The Clinical Significance of the Assertion */ clinicalSignificance: AssertionClinicalSignificance; /** A detailed description of the Assertion including practice guidelines and approved tests. */ @@ -398,6 +402,7 @@ export enum AssertionSortColumns { export enum AssertionType { Diagnostic = 'DIAGNOSTIC', + Oncogenic = 'ONCOGENIC', Predictive = 'PREDICTIVE', Predisposing = 'PREDISPOSING', Prognostic = 'PROGNOSTIC' @@ -779,6 +784,13 @@ export type CivicTimepointStats = { variants: TimePointCounts; }; +export type ClingenCode = { + __typename: 'ClingenCode'; + code: Scalars['String']; + description: Scalars['String']; + id: Scalars['Int']; +}; + export type ClinicalTrial = { __typename: 'ClinicalTrial'; description: Scalars['String']; @@ -809,9 +821,9 @@ export enum ClinicalTrialSortColumns { */ export type ClinvarInput = { /** The ClinVar ID(s) */ - ids?: Maybe>; - noneFound?: Maybe; - notApplicable?: Maybe; + ids?: InputMaybe>; + noneFound?: InputMaybe; + notApplicable?: InputMaybe; }; export type Coi = { @@ -912,15 +924,15 @@ export type Commentable = { /** A CIViC entity that can have comments on it. */ export type CommentableCommentsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; - mentionedEntity?: Maybe; - mentionedRole?: Maybe; - mentionedUserId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + mentionedEntity?: InputMaybe; + mentionedRole?: InputMaybe; + mentionedUserId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export enum CommentableEntities { @@ -970,10 +982,10 @@ export type Coordinate = { }; export type CoordinateInput = { - chromosome?: Maybe; - representativeTranscript?: Maybe; - start?: Maybe; - stop?: Maybe; + chromosome?: InputMaybe; + representativeTranscript?: InputMaybe; + start?: InputMaybe; + stop?: InputMaybe; }; export type Country = { @@ -1107,7 +1119,7 @@ export type EditUserInput = { */ bio: NullableStringInput; /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** The internal CIViC ID of the country the user resides or studies in. */ countryId: NullableIntInput; /** The user's email address */ @@ -1240,14 +1252,14 @@ export type EventSubject = { /** The subject of an event log event. */ export type EventSubjectEventsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - last?: Maybe; - organizationId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + organizationId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; /** An event subject paired with a count of how many times that subject has appeared */ @@ -1269,9 +1281,12 @@ export enum EvidenceClinicalSignificance { Na = 'NA', Negative = 'NEGATIVE', Neomorphic = 'NEOMORPHIC', + Oncogenicity = 'ONCOGENICITY', Pathogenic = 'PATHOGENIC', PoorOutcome = 'POOR_OUTCOME', Positive = 'POSITIVE', + Predisposition = 'PREDISPOSITION', + Protectiveness = 'PROTECTIVENESS', ReducedSensitivity = 'REDUCED_SENSITIVITY', Resistance = 'RESISTANCE', Sensitivityresponse = 'SENSITIVITYRESPONSE', @@ -1327,52 +1342,52 @@ export type EvidenceItem = Commentable & EventOriginObject & EventSubject & Flag export type EvidenceItemCommentsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; - mentionedEntity?: Maybe; - mentionedRole?: Maybe; - mentionedUserId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + mentionedEntity?: InputMaybe; + mentionedRole?: InputMaybe; + mentionedUserId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type EvidenceItemEventsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - last?: Maybe; - organizationId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + organizationId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type EvidenceItemFlagsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - flaggingUserId?: Maybe; - last?: Maybe; - resolvingUserId?: Maybe; - sortBy?: Maybe; - state?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + flaggingUserId?: InputMaybe; + last?: InputMaybe; + resolvingUserId?: InputMaybe; + sortBy?: InputMaybe; + state?: InputMaybe; }; export type EvidenceItemRevisionsArgs = { - after?: Maybe; - before?: Maybe; - fieldName?: Maybe; - first?: Maybe; - last?: Maybe; - originatingUserId?: Maybe; - revisionsetId?: Maybe; - sortBy?: Maybe; - status?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + fieldName?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + originatingUserId?: InputMaybe; + revisionsetId?: InputMaybe; + sortBy?: InputMaybe; + status?: InputMaybe; }; /** The connection type for EvidenceItem. */ @@ -1516,15 +1531,15 @@ export type Flag = Commentable & EventOriginObject & { export type FlagCommentsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; - mentionedEntity?: Maybe; - mentionedRole?: Maybe; - mentionedUserId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + mentionedEntity?: InputMaybe; + mentionedRole?: InputMaybe; + mentionedUserId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; /** The connection type for Flag. */ @@ -1563,7 +1578,7 @@ export type FlagEdge = { /** Autogenerated input type of FlagEntity */ export type FlagEntityInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Text describing the problem you observed with this entity. */ comment: Scalars['String']; /** @@ -1572,7 +1587,7 @@ export type FlagEntityInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; /** The entity to flag, specified by its ID and type. */ subject: FlaggableInput; }; @@ -1604,14 +1619,14 @@ export type Flaggable = { /** A CIViC entity that can be flagged for editor attention. */ export type FlaggableFlagsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - flaggingUserId?: Maybe; - last?: Maybe; - resolvingUserId?: Maybe; - sortBy?: Maybe; - state?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + flaggingUserId?: InputMaybe; + last?: InputMaybe; + resolvingUserId?: InputMaybe; + sortBy?: InputMaybe; + state?: InputMaybe; }; /** Enumeration of all entities in CIViC that can be flagged. */ @@ -1660,62 +1675,62 @@ export type Gene = Commentable & EventSubject & Flaggable & WithRevisions & { export type GeneCommentsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; - mentionedEntity?: Maybe; - mentionedRole?: Maybe; - mentionedUserId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + mentionedEntity?: InputMaybe; + mentionedRole?: InputMaybe; + mentionedUserId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type GeneEventsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - last?: Maybe; - organizationId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + organizationId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type GeneFlagsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - flaggingUserId?: Maybe; - last?: Maybe; - resolvingUserId?: Maybe; - sortBy?: Maybe; - state?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + flaggingUserId?: InputMaybe; + last?: InputMaybe; + resolvingUserId?: InputMaybe; + sortBy?: InputMaybe; + state?: InputMaybe; }; export type GeneRevisionsArgs = { - after?: Maybe; - before?: Maybe; - fieldName?: Maybe; - first?: Maybe; - last?: Maybe; - originatingUserId?: Maybe; - revisionsetId?: Maybe; - sortBy?: Maybe; - status?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + fieldName?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + originatingUserId?: InputMaybe; + revisionsetId?: InputMaybe; + sortBy?: InputMaybe; + status?: InputMaybe; }; export type GeneVariantsArgs = { - after?: Maybe; - before?: Maybe; - evidenceStatusFilter?: Maybe; - first?: Maybe; - last?: Maybe; - name?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + evidenceStatusFilter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + name?: InputMaybe; }; /** The connection type for Gene. */ @@ -1751,15 +1766,15 @@ export type GeneFields = { }; export type GeneSearchFilter = { - alias?: Maybe; - booleanOperator?: Maybe; - description?: Maybe; - entrezId?: Maybe; - entrezSymbol?: Maybe; - hasAssertion?: Maybe; - id?: Maybe; - openRevisionCount?: Maybe; - subFilters?: Maybe>; + alias?: InputMaybe; + booleanOperator?: InputMaybe; + description?: InputMaybe; + entrezId?: InputMaybe; + entrezSymbol?: InputMaybe; + hasAssertion?: InputMaybe; + id?: InputMaybe; + openRevisionCount?: InputMaybe; + subFilters?: InputMaybe>; }; export type GenesSort = { @@ -1779,7 +1794,6 @@ export enum GenesSortColumns { VariantCount = 'variantCount' } - export type IntSearchInput = { comparisonOperator: IntSearchOperator; value: Scalars['Int']; @@ -1795,7 +1809,6 @@ export enum IntSearchOperator { Ne = 'NE' } - export type LinkoutData = { __typename: 'LinkoutData'; currentValue: ModeratedField; @@ -1809,7 +1822,7 @@ export type ModerateAssertionInput = { /** ID of the Assertion to moderate */ assertionId: Scalars['Int']; /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** The desired status of the Assertion */ newStatus: EvidenceStatus; /** @@ -1818,7 +1831,7 @@ export type ModerateAssertionInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; }; /** Autogenerated return type of ModerateAssertion */ @@ -1833,7 +1846,7 @@ export type ModerateAssertionPayload = { /** Autogenerated input type of ModerateEvidenceItem */ export type ModerateEvidenceItemInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** ID of the Evidence Item to moderate */ evidenceItemId: Scalars['Int']; /** The desired status of the Evidence Item */ @@ -1844,7 +1857,7 @@ export type ModerateEvidenceItemInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; }; /** Autogenerated return type of ModerateEvidenceItem */ @@ -2139,10 +2152,10 @@ export type MyVariantInfo = { mutationtasterPrediction: Array; mutationtasterScore: Array; myVariantInfoId: Scalars['String']; - phastcons100way?: Maybe; phastcons30way?: Maybe; - phyloP100way?: Maybe; + phastcons100way?: Maybe; phyloP30way?: Maybe; + phyloP100way?: Maybe; polyphen2HdivPrediction: Array; polyphen2HdivScore: Array; polyphen2HvarPrediction: Array; @@ -2225,9 +2238,9 @@ export enum NotificationReason { */ export type NullableAmpLevelTypeInput = { /** Set to true if you wish to set the field's value to null. */ - unset?: Maybe; + unset?: InputMaybe; /** The desired value for the field. Mutually exclusive with unset. */ - value?: Maybe; + value?: InputMaybe; }; /** @@ -2238,9 +2251,9 @@ export type NullableAmpLevelTypeInput = { */ export type NullableAreaOfExpertiseTypeInput = { /** Set to true if you wish to set the field's value to null. */ - unset?: Maybe; + unset?: InputMaybe; /** The desired value for the field. Mutually exclusive with unset. */ - value?: Maybe; + value?: InputMaybe; }; /** @@ -2251,9 +2264,9 @@ export type NullableAreaOfExpertiseTypeInput = { */ export type NullableBooleanInput = { /** Set to true if you wish to set the field's value to null. */ - unset?: Maybe; + unset?: InputMaybe; /** The desired value for the field. Mutually exclusive with unset. */ - value?: Maybe; + value?: InputMaybe; }; /** @@ -2264,9 +2277,9 @@ export type NullableBooleanInput = { */ export type NullableDrugInteractionTypeInput = { /** Set to true if you wish to set the field's value to null. */ - unset?: Maybe; + unset?: InputMaybe; /** The desired value for the field. Mutually exclusive with unset. */ - value?: Maybe; + value?: InputMaybe; }; /** @@ -2277,9 +2290,9 @@ export type NullableDrugInteractionTypeInput = { */ export type NullableIdInput = { /** Set to true if you wish to set the field's value to null. */ - unset?: Maybe; + unset?: InputMaybe; /** The desired value for the field. Mutually exclusive with unset. */ - value?: Maybe; + value?: InputMaybe; }; /** @@ -2290,9 +2303,9 @@ export type NullableIdInput = { */ export type NullableIntInput = { /** Set to true if you wish to set the field's value to null. */ - unset?: Maybe; + unset?: InputMaybe; /** The desired value for the field. Mutually exclusive with unset. */ - value?: Maybe; + value?: InputMaybe; }; /** @@ -2303,9 +2316,9 @@ export type NullableIntInput = { */ export type NullableReferenceBuildTypeInput = { /** Set to true if you wish to set the field's value to null. */ - unset?: Maybe; + unset?: InputMaybe; /** The desired value for the field. Mutually exclusive with unset. */ - value?: Maybe; + value?: InputMaybe; }; /** @@ -2316,9 +2329,9 @@ export type NullableReferenceBuildTypeInput = { */ export type NullableStringInput = { /** Set to true if you wish to set the field's value to null. */ - unset?: Maybe; + unset?: InputMaybe; /** The desired value for the field. Mutually exclusive with unset. */ - value?: Maybe; + value?: InputMaybe; }; export type ObjectField = { @@ -2354,23 +2367,23 @@ export type Organization = { export type OrganizationEventsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; }; export type OrganizationMembersArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; }; export type OrganizationProfileImagePathArgs = { - size?: Maybe; + size?: InputMaybe; }; /** The connection type for Organization. */ @@ -2400,11 +2413,11 @@ export type OrganizationEdge = { /** Filter on organization id and whether or not to include the organization's subgroups */ export type OrganizationFilter = { /** The organization ID. */ - id?: Maybe; + id?: InputMaybe; /** Whether or not to include the organization's subgroup. */ - includeSubgroups?: Maybe; + includeSubgroups?: InputMaybe; /** The organization name. */ - name?: Maybe; + name?: InputMaybe; }; export type OrganizationSort = { @@ -2479,6 +2492,8 @@ export type Query = { browseSources: BrowseSourceConnection; browseVariantGroups: BrowseVariantGroupConnection; browseVariants: BrowseVariantConnection; + /** Retrieve Clingen Code options as a typeahead */ + clingenCodesTypeahead: Array; /** Find a clinical trial by CIViC ID */ clinicalTrial?: Maybe; /** List and filter Clinical Trials from ClinicalTrials.gov. */ @@ -2598,100 +2613,105 @@ export type QueryAssertionArgs = { export type QueryAssertionsArgs = { - after?: Maybe; - ampLevel?: Maybe; - assertionDirection?: Maybe; - assertionType?: Maybe; - before?: Maybe; - clinicalSignificance?: Maybe; - diseaseId?: Maybe; - diseaseName?: Maybe; - drugId?: Maybe; - drugName?: Maybe; - evidenceId?: Maybe; - first?: Maybe; - geneName?: Maybe; - id?: Maybe; - last?: Maybe; - organizationId?: Maybe; - phenotypeId?: Maybe; - sortBy?: Maybe; - status?: Maybe; - summary?: Maybe; - userId?: Maybe; - variantId?: Maybe; - variantName?: Maybe; + after?: InputMaybe; + ampLevel?: InputMaybe; + assertionDirection?: InputMaybe; + assertionType?: InputMaybe; + before?: InputMaybe; + clinicalSignificance?: InputMaybe; + diseaseId?: InputMaybe; + diseaseName?: InputMaybe; + drugId?: InputMaybe; + drugName?: InputMaybe; + evidenceId?: InputMaybe; + first?: InputMaybe; + geneName?: InputMaybe; + id?: InputMaybe; + last?: InputMaybe; + organizationId?: InputMaybe; + phenotypeId?: InputMaybe; + sortBy?: InputMaybe; + status?: InputMaybe; + summary?: InputMaybe; + userId?: InputMaybe; + variantId?: InputMaybe; + variantName?: InputMaybe; }; export type QueryBrowseDiseasesArgs = { - after?: Maybe; - before?: Maybe; - doid?: Maybe; - first?: Maybe; - geneNames?: Maybe; - id?: Maybe; - last?: Maybe; - name?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + doid?: InputMaybe; + first?: InputMaybe; + geneNames?: InputMaybe; + id?: InputMaybe; + last?: InputMaybe; + name?: InputMaybe; + sortBy?: InputMaybe; }; export type QueryBrowseGenesArgs = { - after?: Maybe; - before?: Maybe; - diseaseName?: Maybe; - drugName?: Maybe; - entrezSymbol?: Maybe; - first?: Maybe; - geneAlias?: Maybe; - last?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + diseaseName?: InputMaybe; + drugName?: InputMaybe; + entrezSymbol?: InputMaybe; + first?: InputMaybe; + geneAlias?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; }; export type QueryBrowseSourcesArgs = { - after?: Maybe; - author?: Maybe; - before?: Maybe; - citationId?: Maybe; - clinicalTrialId?: Maybe; - first?: Maybe; - id?: Maybe; - journal?: Maybe; - last?: Maybe; - name?: Maybe; - sortBy?: Maybe; - sourceType?: Maybe; - year?: Maybe; + after?: InputMaybe; + author?: InputMaybe; + before?: InputMaybe; + citationId?: InputMaybe; + clinicalTrialId?: InputMaybe; + first?: InputMaybe; + id?: InputMaybe; + journal?: InputMaybe; + last?: InputMaybe; + name?: InputMaybe; + sortBy?: InputMaybe; + sourceType?: InputMaybe; + year?: InputMaybe; }; export type QueryBrowseVariantGroupsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - geneNames?: Maybe; - last?: Maybe; - name?: Maybe; - sortBy?: Maybe; - variantNames?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + geneNames?: InputMaybe; + last?: InputMaybe; + name?: InputMaybe; + sortBy?: InputMaybe; + variantNames?: InputMaybe; }; export type QueryBrowseVariantsArgs = { - after?: Maybe; - before?: Maybe; - diseaseName?: Maybe; - drugName?: Maybe; - entrezSymbol?: Maybe; - first?: Maybe; - last?: Maybe; - sortBy?: Maybe; - variantAlias?: Maybe; - variantGroupId?: Maybe; - variantName?: Maybe; - variantTypeId?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + diseaseName?: InputMaybe; + drugName?: InputMaybe; + entrezSymbol?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; + variantAlias?: InputMaybe; + variantGroupId?: InputMaybe; + variantName?: InputMaybe; + variantTypeId?: InputMaybe; +}; + + +export type QueryClingenCodesTypeaheadArgs = { + queryTerm: Scalars['String']; }; @@ -2701,14 +2721,14 @@ export type QueryClinicalTrialArgs = { export type QueryClinicalTrialsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - id?: Maybe; - last?: Maybe; - name?: Maybe; - nctId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + id?: InputMaybe; + last?: InputMaybe; + name?: InputMaybe; + nctId?: InputMaybe; + sortBy?: InputMaybe; }; @@ -2718,16 +2738,16 @@ export type QueryCommentArgs = { export type QueryCommentsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; - mentionedEntity?: Maybe; - mentionedRole?: Maybe; - mentionedUserId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; - subject?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + mentionedEntity?: InputMaybe; + mentionedRole?: InputMaybe; + mentionedUserId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; + subject?: InputMaybe; }; @@ -2767,14 +2787,14 @@ export type QueryDrugTypeaheadArgs = { export type QueryDrugsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - id?: Maybe; - last?: Maybe; - name?: Maybe; - ncitId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + id?: InputMaybe; + last?: InputMaybe; + name?: InputMaybe; + ncitId?: InputMaybe; + sortBy?: InputMaybe; }; @@ -2784,17 +2804,17 @@ export type QueryEntityTypeaheadArgs = { export type QueryEventsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - includeAutomatedEvents?: Maybe; - last?: Maybe; - mode?: Maybe; - organizationId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; - subject?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + includeAutomatedEvents?: InputMaybe; + last?: InputMaybe; + mode?: InputMaybe; + organizationId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; + subject?: InputMaybe; }; @@ -2804,33 +2824,33 @@ export type QueryEvidenceItemArgs = { export type QueryEvidenceItemsArgs = { - after?: Maybe; - assertionId?: Maybe; - before?: Maybe; - clinicalSignificance?: Maybe; - clinicalTrialId?: Maybe; - description?: Maybe; - diseaseId?: Maybe; - diseaseName?: Maybe; - drugId?: Maybe; - drugName?: Maybe; - evidenceDirection?: Maybe; - evidenceLevel?: Maybe; - evidenceRating?: Maybe; - evidenceType?: Maybe; - first?: Maybe; - geneSymbol?: Maybe; - id?: Maybe; - last?: Maybe; - organizationId?: Maybe; - phenotypeId?: Maybe; - sortBy?: Maybe; - sourceId?: Maybe; - status?: Maybe; - userId?: Maybe; - variantId?: Maybe; - variantName?: Maybe; - variantOrigin?: Maybe; + after?: InputMaybe; + assertionId?: InputMaybe; + before?: InputMaybe; + clinicalSignificance?: InputMaybe; + clinicalTrialId?: InputMaybe; + description?: InputMaybe; + diseaseId?: InputMaybe; + diseaseName?: InputMaybe; + drugId?: InputMaybe; + drugName?: InputMaybe; + evidenceDirection?: InputMaybe; + evidenceLevel?: InputMaybe; + evidenceRating?: InputMaybe; + evidenceType?: InputMaybe; + first?: InputMaybe; + geneSymbol?: InputMaybe; + id?: InputMaybe; + last?: InputMaybe; + organizationId?: InputMaybe; + phenotypeId?: InputMaybe; + sortBy?: InputMaybe; + sourceId?: InputMaybe; + status?: InputMaybe; + userId?: InputMaybe; + variantId?: InputMaybe; + variantName?: InputMaybe; + variantOrigin?: InputMaybe; }; @@ -2840,15 +2860,15 @@ export type QueryFlagArgs = { export type QueryFlagsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - flaggable?: Maybe; - flaggingUserId?: Maybe; - last?: Maybe; - resolvingUserId?: Maybe; - sortBy?: Maybe; - state?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + flaggable?: InputMaybe; + flaggingUserId?: InputMaybe; + last?: InputMaybe; + resolvingUserId?: InputMaybe; + sortBy?: InputMaybe; + state?: InputMaybe; }; @@ -2863,10 +2883,10 @@ export type QueryGeneTypeaheadArgs = { export type QueryGenesArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; }; @@ -2876,17 +2896,17 @@ export type QueryNccnGuidelinesTypeaheadArgs = { export type QueryNotificationsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - includeRead?: Maybe; - last?: Maybe; - notificationReason?: Maybe; - organizationId?: Maybe; - originatingObject?: Maybe; - originatingUserId?: Maybe; - subscriptionId?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + includeRead?: InputMaybe; + last?: InputMaybe; + notificationReason?: InputMaybe; + organizationId?: InputMaybe; + originatingObject?: InputMaybe; + originatingUserId?: InputMaybe; + subscriptionId?: InputMaybe; }; @@ -2896,13 +2916,13 @@ export type QueryOrganizationArgs = { export type QueryOrganizationsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - id?: Maybe; - last?: Maybe; - name?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + id?: InputMaybe; + last?: InputMaybe; + name?: InputMaybe; + sortBy?: InputMaybe; }; @@ -2922,14 +2942,14 @@ export type QueryPhenotypeTypeaheadArgs = { export type QueryPhenotypesArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - hpoId?: Maybe; - id?: Maybe; - last?: Maybe; - name?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + hpoId?: InputMaybe; + id?: InputMaybe; + last?: InputMaybe; + name?: InputMaybe; + sortBy?: InputMaybe; }; @@ -2950,17 +2970,17 @@ export type QueryRevisionArgs = { export type QueryRevisionsArgs = { - after?: Maybe; - before?: Maybe; - fieldName?: Maybe; - first?: Maybe; - last?: Maybe; - originatingUserId?: Maybe; - resolvingUserId?: Maybe; - revisionsetId?: Maybe; - sortBy?: Maybe; - status?: Maybe; - subject?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + fieldName?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + originatingUserId?: InputMaybe; + resolvingUserId?: InputMaybe; + revisionsetId?: InputMaybe; + sortBy?: InputMaybe; + status?: InputMaybe; + subject?: InputMaybe; }; @@ -2975,7 +2995,7 @@ export type QuerySearchByPermalinkArgs = { export type QuerySearchGenesArgs = { - createPermalink?: Maybe; + createPermalink?: InputMaybe; query: GeneSearchFilter; }; @@ -2991,30 +3011,30 @@ export type QuerySourcePopoverArgs = { export type QuerySourceSuggestionValuesArgs = { - diseaseId?: Maybe; - geneId?: Maybe; - sourceId?: Maybe; - variantId?: Maybe; + diseaseId?: InputMaybe; + geneId?: InputMaybe; + sourceId?: InputMaybe; + variantId?: InputMaybe; }; export type QuerySourceSuggestionsArgs = { - after?: Maybe; - before?: Maybe; - citation?: Maybe; - citationId?: Maybe; - comment?: Maybe; - diseaseName?: Maybe; - first?: Maybe; - geneName?: Maybe; - last?: Maybe; - sortBy?: Maybe; - sourceId?: Maybe; - sourceType?: Maybe; - status?: Maybe; - submitter?: Maybe; - submitterId?: Maybe; - variantName?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + citation?: InputMaybe; + citationId?: InputMaybe; + comment?: InputMaybe; + diseaseName?: InputMaybe; + first?: InputMaybe; + geneName?: InputMaybe; + last?: InputMaybe; + sortBy?: InputMaybe; + sourceId?: InputMaybe; + sourceType?: InputMaybe; + status?: InputMaybe; + submitter?: InputMaybe; + submitterId?: InputMaybe; + variantName?: InputMaybe; }; @@ -3040,15 +3060,15 @@ export type QueryUserTypeaheadArgs = { export type QueryUsersArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; - name?: Maybe; - organization?: Maybe; - role?: Maybe; - sortBy?: Maybe; - username?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + name?: InputMaybe; + organization?: InputMaybe; + role?: InputMaybe; + sortBy?: InputMaybe; + username?: InputMaybe; }; @@ -3068,11 +3088,11 @@ export type QueryVariantGroupArgs = { export type QueryVariantGroupsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - geneId?: Maybe; - last?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + geneId?: InputMaybe; + last?: InputMaybe; }; @@ -3092,26 +3112,26 @@ export type QueryVariantTypeTypeaheadArgs = { export type QueryVariantTypesArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - id?: Maybe; - last?: Maybe; - name?: Maybe; - soid?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + id?: InputMaybe; + last?: InputMaybe; + name?: InputMaybe; + soid?: InputMaybe; + sortBy?: InputMaybe; }; export type QueryVariantsArgs = { - after?: Maybe; - before?: Maybe; - evidenceStatusFilter?: Maybe; - first?: Maybe; - geneId?: Maybe; - last?: Maybe; - name?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + evidenceStatusFilter?: InputMaybe; + first?: InputMaybe; + geneId?: InputMaybe; + last?: InputMaybe; + name?: InputMaybe; + sortBy?: InputMaybe; }; export enum ReadStatus { @@ -3128,20 +3148,20 @@ export enum ReferenceBuild { /** Autogenerated input type of RejectRevisions */ export type RejectRevisionsInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Text explaining the reasoning for rejecting this Revision. Will be attached as a comment. */ comment: Scalars['String']; /** A list of IDs of the Revisions to reject. */ - ids?: Maybe>; + ids?: InputMaybe>; /** * The ID of the organization to credit the user's contributions to. * If the user belongs to a single organization or no organizations, this field is not required. * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; /** The ID of a revision set. */ - revisionSetId?: Maybe; + revisionSetId?: InputMaybe; }; /** Autogenerated return type of RejectRevisions */ @@ -3156,7 +3176,7 @@ export type RejectRevisionsPayload = { /** Autogenerated input type of ResolveFlag */ export type ResolveFlagInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Text describing the reason for resolving the flag. Will be attached as a comment. */ comment: Scalars['String']; /** The ID of the flag to resolve. */ @@ -3167,7 +3187,7 @@ export type ResolveFlagInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; }; /** Autogenerated return type of ResolveFlag */ @@ -3208,27 +3228,27 @@ export type Revision = Commentable & EventOriginObject & EventSubject & { export type RevisionCommentsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; - mentionedEntity?: Maybe; - mentionedRole?: Maybe; - mentionedUserId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + mentionedEntity?: InputMaybe; + mentionedRole?: InputMaybe; + mentionedUserId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type RevisionEventsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - last?: Maybe; - organizationId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + organizationId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; /** The connection type for Revision. */ @@ -3349,27 +3369,27 @@ export type Source = Commentable & EventSubject & { export type SourceCommentsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; - mentionedEntity?: Maybe; - mentionedRole?: Maybe; - mentionedUserId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + mentionedEntity?: InputMaybe; + mentionedRole?: InputMaybe; + mentionedUserId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type SourceEventsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - last?: Maybe; - organizationId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + organizationId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type SourcePopover = Commentable & EventSubject & { @@ -3404,27 +3424,27 @@ export type SourcePopover = Commentable & EventSubject & { export type SourcePopoverCommentsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; - mentionedEntity?: Maybe; - mentionedRole?: Maybe; - mentionedUserId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + mentionedEntity?: InputMaybe; + mentionedRole?: InputMaybe; + mentionedUserId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type SourcePopoverEventsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - last?: Maybe; - organizationId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + organizationId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export enum SourceSource { @@ -3459,14 +3479,14 @@ export type SourceSuggestion = EventOriginObject & EventSubject & { export type SourceSuggestionEventsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - last?: Maybe; - organizationId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + organizationId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; /** The connection type for SourceSuggestion. */ @@ -3573,9 +3593,9 @@ export enum StringSearchOperator { /** Autogenerated input type of SubmitAssertion */ export type SubmitAssertionInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Text describing any further context or details about your proposed Assertion. Will be attached as a comment. */ - comment?: Maybe; + comment?: InputMaybe; /** The desired state of the Assertion's editable fields. */ fields: AssertionFields; /** @@ -3584,7 +3604,7 @@ export type SubmitAssertionInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; }; /** Autogenerated return type of SubmitAssertion */ @@ -3599,9 +3619,9 @@ export type SubmitAssertionPayload = { /** Autogenerated input type of SubmitEvidenceItem */ export type SubmitEvidenceItemInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Text describing any further context or details about your proposed EvidenceItem. Will be attached as a comment. */ - comment?: Maybe; + comment?: InputMaybe; /** The desired state of the EvidenceItems's editable fields. */ fields: EvidenceItemFields; /** @@ -3610,7 +3630,7 @@ export type SubmitEvidenceItemInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; }; /** Autogenerated return type of SubmitEvidenceItem */ @@ -3625,7 +3645,7 @@ export type SubmitEvidenceItemPayload = { /** Autogenerated input type of SubmitVariantGroup */ export type SubmitVariantGroupInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** A description of the variant group. */ description: Scalars['String']; /** The name of the disease. */ @@ -3636,7 +3656,7 @@ export type SubmitVariantGroupInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; /** A list of CIViC source IDs to associate with the variant group. */ sourceIds: Array; /** A list of CIViC variant IDs to add to the variant group. */ @@ -3684,20 +3704,20 @@ export type SubscribableQueryInput = { /** ID of subscribable entity. */ id: Scalars['Int']; /** Include child entities of the requested subscribable */ - includeChildren?: Maybe; + includeChildren?: InputMaybe; }; /** Autogenerated input type of Subscribe */ export type SubscribeInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** A list of one or more entities to subscribe to, each identified by its ID and type. */ subscribables: Array; /** * Do you want to subscribe to related child entities of the subscribed entities? * IE: If you subscribe to a Gene, do you want to receive notifications for its Variants as well? */ - subscribeToChildren?: Maybe; + subscribeToChildren?: InputMaybe; }; /** Autogenerated return type of Subscribe */ @@ -3718,7 +3738,7 @@ export type Subscription = { /** Autogenerated input type of SuggestAssertionRevision */ export type SuggestAssertionRevisionInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Text describing the reason for the change. Will be attached to the Revision as a comment. */ comment: Scalars['String']; /** @@ -3734,7 +3754,7 @@ export type SuggestAssertionRevisionInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; }; /** Autogenerated return type of SuggestAssertionRevision */ @@ -3757,7 +3777,7 @@ export type SuggestAssertionRevisionPayload = { /** Autogenerated input type of SuggestEvidenceItemRevision */ export type SuggestEvidenceItemRevisionInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Text describing the reason for the change. Will be attached to the Revision as a comment. */ comment: Scalars['String']; /** @@ -3773,7 +3793,7 @@ export type SuggestEvidenceItemRevisionInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; }; /** Autogenerated return type of SuggestEvidenceItemRevision */ @@ -3796,7 +3816,7 @@ export type SuggestEvidenceItemRevisionPayload = { /** Autogenerated input type of SuggestGeneRevision */ export type SuggestGeneRevisionInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Text describing the reason for the change. Will be attached to the Revision as a comment. */ comment: Scalars['String']; /** @@ -3812,7 +3832,7 @@ export type SuggestGeneRevisionInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; }; /** Autogenerated return type of SuggestGeneRevision */ @@ -3835,24 +3855,24 @@ export type SuggestGeneRevisionPayload = { /** Autogenerated input type of SuggestSource */ export type SuggestSourceInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Text explaining why this source should be curated for CIViC evidence. */ comment: Scalars['String']; /** Internal CIViC ID for the applicable disease, if any. */ - diseaseId?: Maybe; + diseaseId?: InputMaybe; /** Internal CIViC ID for the applicable gene, if any. */ - geneId?: Maybe; + geneId?: InputMaybe; /** * The ID of the organization to credit the user's contributions to. * If the user belongs to a single organization or no organizations, this field is not required. * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; /** Internal CIViC ID for the source to suggest. Use the AddRemoteCitation mutation to populate this if needed. */ sourceId: Scalars['Int']; /** Internal CIViC ID for the applicable variant, if any. */ - variantId?: Maybe; + variantId?: InputMaybe; }; /** Autogenerated return type of SuggestSource */ @@ -3867,7 +3887,7 @@ export type SuggestSourcePayload = { /** Autogenerated input type of SuggestVariantGroupRevision */ export type SuggestVariantGroupRevisionInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Text describing the reason for the change. Will be attached to the Revision as a comment. */ comment: Scalars['String']; /** @@ -3883,7 +3903,7 @@ export type SuggestVariantGroupRevisionInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; }; /** Autogenerated return type of SuggestVariantGroupRevision */ @@ -3906,9 +3926,9 @@ export type SuggestVariantGroupRevisionPayload = { /** Autogenerated input type of SuggestVariantRevision */ export type SuggestVariantRevisionInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Text describing the reason for the change. Will be attached to the Revision as a comment. */ - comment?: Maybe; + comment?: InputMaybe; /** * The desired state of the Variant's editable fields if the change were applied. * If no change is desired for a particular field, pass in the current value of that field. @@ -3922,7 +3942,7 @@ export type SuggestVariantRevisionInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; }; /** Autogenerated return type of SuggestVariantRevision */ @@ -3971,14 +3991,14 @@ export type TimePointCounts = { /** Autogenerated input type of Unsubscribe */ export type UnsubscribeInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** A list of one or more entities to unsubscribe from, each identified by its ID and type. */ subscribables: Array; /** * Do you also wish to stop receiving notifications from child entities? * IE: If you unsubscribe from a Gene do you want to stop receiving notifications for its Variants as well? */ - unsubscribeFromChildren?: Maybe; + unsubscribeFromChildren?: InputMaybe; }; /** Autogenerated return type of Unsubscribe */ @@ -3993,11 +4013,11 @@ export type UnsubscribePayload = { /** Autogenerated input type of UpdateCoi */ export type UpdateCoiInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** Does the user report having a conflict of interest? Mark true if so. */ coiPresent: Scalars['Boolean']; /** If the user reports a potential conflict of interest please provide a brief summary of it. */ - statement?: Maybe; + statement?: InputMaybe; }; /** Autogenerated return type of UpdateCoi */ @@ -4011,7 +4031,7 @@ export type UpdateCoiPayload = { /** Autogenerated input type of UpdateNotificationStatus */ export type UpdateNotificationStatusInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** A list of one or more Notification IDs. */ ids: Array; /** The new status of the selected notifications. */ @@ -4030,7 +4050,7 @@ export type UpdateNotificationStatusPayload = { /** Autogenerated input type of UpdateSourceSuggestionStatus */ export type UpdateSourceSuggestionStatusInput = { /** A unique identifier for the client performing the mutation. */ - clientMutationId?: Maybe; + clientMutationId?: InputMaybe; /** The ID of the SourceSuggestion to update. */ id: Scalars['Int']; /** The desired status of the SourceSuggestion. */ @@ -4041,9 +4061,9 @@ export type UpdateSourceSuggestionStatusInput = { * This field is required if the user belongs to more than one organization. * The user must belong to the organization provided. */ - organizationId?: Maybe; + organizationId?: InputMaybe; /** The justification for marking a source as curated/rejected */ - reason?: Maybe; + reason?: InputMaybe; }; /** Autogenerated return type of UpdateSourceSuggestionStatus */ @@ -4085,27 +4105,27 @@ export type User = { export type UserEventsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; }; export type UserNotificationsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - includeSeen?: Maybe; - last?: Maybe; - notificationType?: Maybe; - subscriptionId?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + includeSeen?: InputMaybe; + last?: InputMaybe; + notificationType?: InputMaybe; + subscriptionId?: InputMaybe; }; export type UserProfileImagePathArgs = { - size?: Maybe; + size?: InputMaybe; }; /** The connection type for User. */ @@ -4196,60 +4216,60 @@ export type Variant = Commentable & EventOriginObject & EventSubject & Flaggable export type VariantCommentsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; - mentionedEntity?: Maybe; - mentionedRole?: Maybe; - mentionedUserId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + mentionedEntity?: InputMaybe; + mentionedRole?: InputMaybe; + mentionedUserId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type VariantEventsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - last?: Maybe; - organizationId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + organizationId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type VariantEvidenceItemsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; }; export type VariantFlagsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - flaggingUserId?: Maybe; - last?: Maybe; - resolvingUserId?: Maybe; - sortBy?: Maybe; - state?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + flaggingUserId?: InputMaybe; + last?: InputMaybe; + resolvingUserId?: InputMaybe; + sortBy?: InputMaybe; + state?: InputMaybe; }; export type VariantRevisionsArgs = { - after?: Maybe; - before?: Maybe; - fieldName?: Maybe; - first?: Maybe; - last?: Maybe; - originatingUserId?: Maybe; - revisionsetId?: Maybe; - sortBy?: Maybe; - status?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + fieldName?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + originatingUserId?: InputMaybe; + revisionsetId?: InputMaybe; + sortBy?: InputMaybe; + status?: InputMaybe; }; export type VariantAlias = { @@ -4349,62 +4369,62 @@ export type VariantGroup = Commentable & EventSubject & Flaggable & WithRevision export type VariantGroupCommentsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - last?: Maybe; - mentionedEntity?: Maybe; - mentionedRole?: Maybe; - mentionedUserId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + mentionedEntity?: InputMaybe; + mentionedRole?: InputMaybe; + mentionedUserId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type VariantGroupEventsArgs = { - after?: Maybe; - before?: Maybe; - eventType?: Maybe; - first?: Maybe; - last?: Maybe; - organizationId?: Maybe; - originatingUserId?: Maybe; - sortBy?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + eventType?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + organizationId?: InputMaybe; + originatingUserId?: InputMaybe; + sortBy?: InputMaybe; }; export type VariantGroupFlagsArgs = { - after?: Maybe; - before?: Maybe; - first?: Maybe; - flaggingUserId?: Maybe; - last?: Maybe; - resolvingUserId?: Maybe; - sortBy?: Maybe; - state?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + flaggingUserId?: InputMaybe; + last?: InputMaybe; + resolvingUserId?: InputMaybe; + sortBy?: InputMaybe; + state?: InputMaybe; }; export type VariantGroupRevisionsArgs = { - after?: Maybe; - before?: Maybe; - fieldName?: Maybe; - first?: Maybe; - last?: Maybe; - originatingUserId?: Maybe; - revisionsetId?: Maybe; - sortBy?: Maybe; - status?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + fieldName?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + originatingUserId?: InputMaybe; + revisionsetId?: InputMaybe; + sortBy?: InputMaybe; + status?: InputMaybe; }; export type VariantGroupVariantsArgs = { - after?: Maybe; - before?: Maybe; - evidenceStatusFilter?: Maybe; - first?: Maybe; - last?: Maybe; - name?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + evidenceStatusFilter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + name?: InputMaybe; }; /** The connection type for VariantGroup. */ @@ -4541,15 +4561,15 @@ export type WithRevisions = { /** A CIViC entity that can have revisions proposed to it. */ export type WithRevisionsRevisionsArgs = { - after?: Maybe; - before?: Maybe; - fieldName?: Maybe; - first?: Maybe; - last?: Maybe; - originatingUserId?: Maybe; - revisionsetId?: Maybe; - sortBy?: Maybe; - status?: Maybe; + after?: InputMaybe; + before?: InputMaybe; + fieldName?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + originatingUserId?: InputMaybe; + revisionsetId?: InputMaybe; + sortBy?: InputMaybe; + status?: InputMaybe; }; export type AssertionPopoverQueryVariables = Exact<{ @@ -4557,1923 +4577,656 @@ export type AssertionPopoverQueryVariables = Exact<{ }>; -export type AssertionPopoverQuery = ( - { __typename: 'Query' } - & { assertion?: Maybe<( - { __typename: 'Assertion' } - & AssertionPopoverFragment - )> } -); - -export type AssertionPopoverFragment = ( - { __typename: 'Assertion' } - & Pick - & { acmgCodes: Array<( - { __typename: 'AcmgCode' } - & Pick - )>, nccnGuideline?: Maybe<( - { __typename: 'NccnGuideline' } - & Pick - )>, drugs: Array<( - { __typename: 'Drug' } - & Pick - )>, disease?: Maybe<( - { __typename: 'Disease' } - & Pick - )>, phenotypes: Array<( - { __typename: 'Phenotype' } - & Pick - )>, gene: ( - { __typename: 'Gene' } - & Pick - ), variant: ( - { __typename: 'Variant' } - & Pick - ), flags: ( - { __typename: 'FlagConnection' } - & Pick - ), revisions: ( - { __typename: 'RevisionConnection' } - & Pick - ), comments: ( - { __typename: 'CommentConnection' } - & Pick - ) } -); +export type AssertionPopoverQuery = { __typename: 'Query', assertion?: { __typename: 'Assertion', id: number, name: string, status: EvidenceStatus, summary: string, assertionType: AssertionType, assertionDirection: AssertionDirection, clinicalSignificance: AssertionClinicalSignificance, variantOrigin: VariantOrigin, ampLevel?: AmpLevel | undefined, regulatoryApproval?: boolean | undefined, regulatoryApprovalLastUpdated?: any | undefined, fdaCompanionTest?: boolean | undefined, fdaCompanionTestLastUpdated?: any | undefined, drugInteractionType?: DrugInteraction | undefined, acmgCodes: Array<{ __typename: 'AcmgCode', code: string, description: string }>, clingenCodes: Array<{ __typename: 'ClingenCode', code: string, description: string }>, nccnGuideline?: { __typename: 'NccnGuideline', id: number, name: string } | undefined, drugs: Array<{ __typename: 'Drug', id: number, name: string, link: string }>, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, phenotypes: Array<{ __typename: 'Phenotype', id: number, name: string, link: string }>, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string }, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } } | undefined }; + +export type AssertionPopoverFragment = { __typename: 'Assertion', id: number, name: string, status: EvidenceStatus, summary: string, assertionType: AssertionType, assertionDirection: AssertionDirection, clinicalSignificance: AssertionClinicalSignificance, variantOrigin: VariantOrigin, ampLevel?: AmpLevel | undefined, regulatoryApproval?: boolean | undefined, regulatoryApprovalLastUpdated?: any | undefined, fdaCompanionTest?: boolean | undefined, fdaCompanionTestLastUpdated?: any | undefined, drugInteractionType?: DrugInteraction | undefined, acmgCodes: Array<{ __typename: 'AcmgCode', code: string, description: string }>, clingenCodes: Array<{ __typename: 'ClingenCode', code: string, description: string }>, nccnGuideline?: { __typename: 'NccnGuideline', id: number, name: string } | undefined, drugs: Array<{ __typename: 'Drug', id: number, name: string, link: string }>, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, phenotypes: Array<{ __typename: 'Phenotype', id: number, name: string, link: string }>, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string }, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } }; export type AssertionsBrowseQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - diseaseName?: Maybe; - drugName?: Maybe; - id?: Maybe; - summary?: Maybe; - assertionDirection?: Maybe; - clinicalSignificance?: Maybe; - assertionType?: Maybe; - variantId?: Maybe; - evidenceId?: Maybe; - geneName?: Maybe; - variantName?: Maybe; - sortBy?: Maybe; - ampLevel?: Maybe; - organizationId?: Maybe; - userId?: Maybe; - phenotypeId?: Maybe; - diseaseId?: Maybe; - drugId?: Maybe; - status?: Maybe; - cardView: Scalars['Boolean']; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + diseaseName?: InputMaybe; + drugName?: InputMaybe; + id?: InputMaybe; + summary?: InputMaybe; + assertionDirection?: InputMaybe; + clinicalSignificance?: InputMaybe; + assertionType?: InputMaybe; + variantId?: InputMaybe; + evidenceId?: InputMaybe; + geneName?: InputMaybe; + variantName?: InputMaybe; + sortBy?: InputMaybe; + ampLevel?: InputMaybe; + organizationId?: InputMaybe; + userId?: InputMaybe; + phenotypeId?: InputMaybe; + diseaseId?: InputMaybe; + drugId?: InputMaybe; + status?: InputMaybe; }>; -export type AssertionsBrowseQuery = ( - { __typename: 'Query' } - & { assertions: ( - { __typename: 'AssertionConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'AssertionEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'Assertion' } - & AssertionBrowseTableRowFieldsFragment - )> } - )> } - ) } -); - -export type AssertionBrowseTableRowFieldsFragment = ( - { __typename: 'Assertion' } - & MakeOptional, 'fdaCompanionTest' | 'regulatoryApproval' | 'regulatoryApprovalLastUpdated' | 'variantOrigin'> - & { gene: ( - { __typename: 'Gene' } - & Pick - ), variant: ( - { __typename: 'Variant' } - & Pick - ), disease?: Maybe<( - { __typename: 'Disease' } - & Pick - )>, drugs: Array<( - { __typename: 'Drug' } - & Pick - )>, phenotypes: Array<( - { __typename: 'Phenotype' } - & Pick - )>, acmgCodes: Array<( - { __typename: 'AcmgCode' } - & Pick - )>, nccnGuideline?: Maybe<( - { __typename: 'NccnGuideline' } - & Pick - )> } -); +export type AssertionsBrowseQuery = { __typename: 'Query', assertions: { __typename: 'AssertionConnection', totalCount: number, pageInfo: { __typename: 'PageInfo', hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: string | undefined, endCursor?: string | undefined }, edges: Array<{ __typename: 'AssertionEdge', cursor: string, node?: { __typename: 'Assertion', id: number, name: string, link: string, drugInteractionType?: DrugInteraction | undefined, summary: string, assertionType: AssertionType, assertionDirection: AssertionDirection, clinicalSignificance: AssertionClinicalSignificance, ampLevel?: AmpLevel | undefined, evidenceItemsCount: number, status: EvidenceStatus, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string }, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, drugs: Array<{ __typename: 'Drug', id: number, name: string, link: string }> } | undefined }> } }; + +export type AssertionBrowseFieldsFragment = { __typename: 'Assertion', id: number, name: string, link: string, drugInteractionType?: DrugInteraction | undefined, summary: string, assertionType: AssertionType, assertionDirection: AssertionDirection, clinicalSignificance: AssertionClinicalSignificance, ampLevel?: AmpLevel | undefined, evidenceItemsCount: number, status: EvidenceStatus, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string }, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, drugs: Array<{ __typename: 'Drug', id: number, name: string, link: string }> }; export type ClinicalTrialPopoverQueryVariables = Exact<{ clinicalTrialId: Scalars['Int']; }>; -export type ClinicalTrialPopoverQuery = ( - { __typename: 'Query' } - & { clinicalTrials: ( - { __typename: 'BrowseClinicalTrialConnection' } - & { edges: Array<( - { __typename: 'BrowseClinicalTrialEdge' } - & { node?: Maybe<( - { __typename: 'BrowseClinicalTrial' } - & ClinicalTrialPopoverFragment - )> } - )> } - ) } -); - -export type ClinicalTrialPopoverFragment = ( - { __typename: 'BrowseClinicalTrial' } - & Pick -); +export type ClinicalTrialPopoverQuery = { __typename: 'Query', clinicalTrials: { __typename: 'BrowseClinicalTrialConnection', edges: Array<{ __typename: 'BrowseClinicalTrialEdge', node?: { __typename: 'BrowseClinicalTrial', id: number, name: string, nctId?: string | undefined, url?: string | undefined, sourceCount: number, evidenceCount: number } | undefined }> } }; + +export type ClinicalTrialPopoverFragment = { __typename: 'BrowseClinicalTrial', id: number, name: string, nctId?: string | undefined, url?: string | undefined, sourceCount: number, evidenceCount: number }; export type ClinicalTrialsBrowseQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - name?: Maybe; - nctId?: Maybe; - sortBy?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + name?: InputMaybe; + nctId?: InputMaybe; + sortBy?: InputMaybe; }>; -export type ClinicalTrialsBrowseQuery = ( - { __typename: 'Query' } - & { clinicalTrials: ( - { __typename: 'BrowseClinicalTrialConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'BrowseClinicalTrialEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'BrowseClinicalTrial' } - & BrowseClinicalTrialsRowFieldsFragment - )> } - )> } - ) } -); - -export type BrowseClinicalTrialsRowFieldsFragment = ( - { __typename: 'BrowseClinicalTrial' } - & Pick -); +export type ClinicalTrialsBrowseQuery = { __typename: 'Query', clinicalTrials: { __typename: 'BrowseClinicalTrialConnection', totalCount: number, filteredCount: number, pageInfo: { __typename: 'PageInfo', hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: string | undefined, endCursor?: string | undefined }, edges: Array<{ __typename: 'BrowseClinicalTrialEdge', cursor: string, node?: { __typename: 'BrowseClinicalTrial', id: number, name: string, nctId?: string | undefined, evidenceCount: number, sourceCount: number, link: string } | undefined }> } }; + +export type BrowseClinicalTrialsRowFieldsFragment = { __typename: 'BrowseClinicalTrial', id: number, name: string, nctId?: string | undefined, evidenceCount: number, sourceCount: number, link: string }; export type CommentListQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - originatingUserId?: Maybe; - mentionedUserId?: Maybe; - mentionedRole?: Maybe; - mentionedEntity?: Maybe; - subject?: Maybe; - sortBy?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + originatingUserId?: InputMaybe; + mentionedUserId?: InputMaybe; + mentionedRole?: InputMaybe; + mentionedEntity?: InputMaybe; + subject?: InputMaybe; + sortBy?: InputMaybe; }>; -export type CommentListQuery = ( - { __typename: 'Query' } - & { comments: ( - { __typename: 'CommentConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), uniqueCommenters: Array<( - { __typename: 'User' } - & Pick - )>, mentionedUsers: Array<( - { __typename: 'User' } - & Pick - )>, mentionedRoles: Array<( - { __typename: 'CommentTagSegment' } - & Pick - )>, mentionedEntities: Array<( - { __typename: 'CommentTagSegment' } - & Pick - )>, edges: Array<( - { __typename: 'CommentEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'Comment' } - & CommentListNodeFragment - )> } - )> } - ) } -); - -export type CommentListNodeFragment = ( - { __typename: 'Comment' } - & Pick - & { commenter: ( - { __typename: 'User' } - & Pick - & { organizations: Array<( - { __typename: 'Organization' } - & Pick - )> } - ), parsedComment: Array<( - { __typename: 'CommentTagSegment' } - & Pick - ) | ( - { __typename: 'CommentTextSegment' } - & Pick - ) | ( - { __typename: 'User' } - & Pick - )> } -); +export type CommentListQuery = { __typename: 'Query', comments: { __typename: 'CommentConnection', totalCount: number, unfilteredCountForSubject?: number | undefined, pageInfo: { __typename: 'PageInfo', startCursor?: string | undefined, endCursor?: string | undefined, hasPreviousPage: boolean, hasNextPage: boolean }, uniqueCommenters: Array<{ __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined }>, mentionedUsers: Array<{ __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined }>, mentionedRoles: Array<{ __typename: 'CommentTagSegment', displayName: string, entityId: number, tagType: TaggableEntity, link: string }>, mentionedEntities: Array<{ __typename: 'CommentTagSegment', displayName: string, entityId: number, tagType: TaggableEntity, link: string }>, edges: Array<{ __typename: 'CommentEdge', cursor: string, node?: { __typename: 'Comment', id: number, title?: string | undefined, comment: string, createdAt: any, commenter: { __typename: 'User', id: number, username: string, displayName: string, name?: string | undefined, role: UserRole, profileImagePath?: string | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }> }, parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, status?: EvidenceStatus | undefined, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> } | undefined }> } }; + +export type CommentListNodeFragment = { __typename: 'Comment', id: number, title?: string | undefined, comment: string, createdAt: any, commenter: { __typename: 'User', id: number, username: string, displayName: string, name?: string | undefined, role: UserRole, profileImagePath?: string | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }> }, parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, status?: EvidenceStatus | undefined, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> }; export type CommentPopoverQueryVariables = Exact<{ commentId: Scalars['Int']; }>; -export type CommentPopoverQuery = ( - { __typename: 'Query' } - & { comment?: Maybe<( - { __typename: 'Comment' } - & CommentPopoverFragment - )> } -); - -export type CommentPopoverFragment = ( - { __typename: 'Comment' } - & Pick - & { commenter: ( - { __typename: 'User' } - & Pick - ), commentable: ( - { __typename: 'Assertion' } - & Pick - ) | ( - { __typename: 'EvidenceItem' } - & Pick - ) | ( - { __typename: 'Flag' } - & Pick - ) | ( - { __typename: 'Gene' } - & Pick - ) | ( - { __typename: 'Revision' } - & Pick - ) | ( - { __typename: 'Source' } - & Pick - ) | ( - { __typename: 'SourcePopover' } - & Pick - ) | ( - { __typename: 'Variant' } - & Pick - ) | ( - { __typename: 'VariantGroup' } - & Pick - ) } -); +export type CommentPopoverQuery = { __typename: 'Query', comment?: { __typename: 'Comment', id: number, name: string, createdAt: any, title?: string | undefined, comment: string, commenter: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined }, commentable: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Gene', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'Source', id: number, name: string, link: string } | { __typename: 'SourcePopover', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | { __typename: 'VariantGroup', id: number, name: string, link: string } } | undefined }; + +export type CommentPopoverFragment = { __typename: 'Comment', id: number, name: string, createdAt: any, title?: string | undefined, comment: string, commenter: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined }, commentable: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Gene', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'Source', id: number, name: string, link: string } | { __typename: 'SourcePopover', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | { __typename: 'VariantGroup', id: number, name: string, link: string } }; export type DiseasePopoverQueryVariables = Exact<{ diseaseId: Scalars['Int']; }>; -export type DiseasePopoverQuery = ( - { __typename: 'Query' } - & { diseasePopover?: Maybe<( - { __typename: 'DiseasePopover' } - & Pick - )> } -); +export type DiseasePopoverQuery = { __typename: 'Query', diseasePopover?: { __typename: 'DiseasePopover', id: number, name: string, displayName: string, doid?: number | undefined, diseaseUrl?: string | undefined, diseaseAliases: Array, assertionCount: number, evidenceItemCount: number, variantCount: number, link: string } | undefined }; export type BrowseDiseasesQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - sortBy?: Maybe; - name?: Maybe; - doid?: Maybe; - geneNames?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + sortBy?: InputMaybe; + name?: InputMaybe; + doid?: InputMaybe; + geneNames?: InputMaybe; }>; -export type BrowseDiseasesQuery = ( - { __typename: 'Query' } - & { browseDiseases: ( - { __typename: 'BrowseDiseaseConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'BrowseDiseaseEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'BrowseDisease' } - & BrowseDiseaseRowFieldsFragment - )> } - )> } - ) } -); - -export type BrowseDiseaseRowFieldsFragment = ( - { __typename: 'BrowseDisease' } - & Pick -); +export type BrowseDiseasesQuery = { __typename: 'Query', browseDiseases: { __typename: 'BrowseDiseaseConnection', totalCount: number, filteredCount: number, pageCount: number, pageInfo: { __typename: 'PageInfo', endCursor?: string | undefined, hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: string | undefined }, edges: Array<{ __typename: 'BrowseDiseaseEdge', cursor: string, node?: { __typename: 'BrowseDisease', id: number, name: string, doid?: string | undefined, diseaseUrl?: string | undefined, geneNames: Array, assertionCount: number, evidenceItemCount: number, variantCount: number, geneCount: number, link: string } | undefined }> } }; + +export type BrowseDiseaseRowFieldsFragment = { __typename: 'BrowseDisease', id: number, name: string, doid?: string | undefined, diseaseUrl?: string | undefined, geneNames: Array, assertionCount: number, evidenceItemCount: number, variantCount: number, geneCount: number, link: string }; export type DrugPopoverQueryVariables = Exact<{ drugId: Scalars['Int']; }>; -export type DrugPopoverQuery = ( - { __typename: 'Query' } - & { drugPopover?: Maybe<( - { __typename: 'DrugPopover' } - & Pick - )> } -); +export type DrugPopoverQuery = { __typename: 'Query', drugPopover?: { __typename: 'DrugPopover', id: number, name: string, drugUrl?: string | undefined, ncitId?: string | undefined, drugAliases: Array, assertionCount: number, evidenceItemCount: number, link: string } | undefined }; export type DrugsBrowseQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - name?: Maybe; - ncitId?: Maybe; - sortBy?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + name?: InputMaybe; + ncitId?: InputMaybe; + sortBy?: InputMaybe; }>; -export type DrugsBrowseQuery = ( - { __typename: 'Query' } - & { drugs: ( - { __typename: 'BrowseDrugConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'BrowseDrugEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'BrowseDrug' } - & DrugBrowseTableRowFieldsFragment - )> } - )> } - ) } -); - -export type DrugBrowseTableRowFieldsFragment = ( - { __typename: 'BrowseDrug' } - & Pick -); +export type DrugsBrowseQuery = { __typename: 'Query', drugs: { __typename: 'BrowseDrugConnection', totalCount: number, filteredCount: number, pageInfo: { __typename: 'PageInfo', hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: string | undefined, endCursor?: string | undefined }, edges: Array<{ __typename: 'BrowseDrugEdge', cursor: string, node?: { __typename: 'BrowseDrug', id: number, name: string, ncitId?: string | undefined, drugUrl?: string | undefined, assertionCount: number, evidenceCount: number, link: string } | undefined }> } }; + +export type DrugBrowseTableRowFieldsFragment = { __typename: 'BrowseDrug', id: number, name: string, ncitId?: string | undefined, drugUrl?: string | undefined, assertionCount: number, evidenceCount: number, link: string }; export type EventFeedCountQueryVariables = Exact<{ - subject?: Maybe; - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - originatingUserId?: Maybe; - organizationId?: Maybe; - eventType?: Maybe; - includeAutomatedEvents?: Maybe; - mode?: Maybe; + subject?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + originatingUserId?: InputMaybe; + organizationId?: InputMaybe; + eventType?: InputMaybe; + includeAutomatedEvents?: InputMaybe; + mode?: InputMaybe; }>; -export type EventFeedCountQuery = ( - { __typename: 'Query' } - & { events: ( - { __typename: 'EventConnection' } - & Pick - ) } -); +export type EventFeedCountQuery = { __typename: 'Query', events: { __typename: 'EventConnection', unfilteredCount: number } }; export type EventFeedQueryVariables = Exact<{ - subject?: Maybe; - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - originatingUserId?: Maybe; - organizationId?: Maybe; - eventType?: Maybe; - mode?: Maybe; - includeAutomatedEvents?: Maybe; + subject?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + originatingUserId?: InputMaybe; + organizationId?: InputMaybe; + eventType?: InputMaybe; + mode?: InputMaybe; + includeAutomatedEvents?: InputMaybe; showFilters: Scalars['Boolean']; }>; -export type EventFeedQuery = ( - { __typename: 'Query' } - & { events: ( - { __typename: 'EventConnection' } - & EventFeedFragment - ) } -); - -export type EventFeedFragment = ( - { __typename: 'EventConnection' } - & MakeOptional, 'eventTypes'> - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), uniqueParticipants: Array<( - { __typename: 'User' } - & Pick - )>, participatingOrganizations: Array<( - { __typename: 'Organization' } - & Pick - )>, edges: Array<( - { __typename: 'EventEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'Event' } - & EventFeedNodeFragment - )> } - )> } -); - -export type EventFeedNodeFragment = ( - { __typename: 'Event' } - & Pick - & { organization?: Maybe<( - { __typename: 'Organization' } - & Pick - )>, originatingUser: ( - { __typename: 'User' } - & Pick - ), subject?: Maybe<( - { __typename: 'Assertion' } - & Pick - ) | ( - { __typename: 'EvidenceItem' } - & Pick - ) | ( - { __typename: 'Gene' } - & Pick - ) | ( - { __typename: 'Revision' } - & Pick - ) | ( - { __typename: 'Source' } - & Pick - ) | ( - { __typename: 'SourcePopover' } - & Pick - ) | ( - { __typename: 'SourceSuggestion' } - & Pick - ) | ( - { __typename: 'Variant' } - & Pick - ) | ( - { __typename: 'VariantGroup' } - & Pick - )>, originatingObject?: Maybe<( - { __typename: 'Assertion' } - & Pick - ) | ( - { __typename: 'Comment' } - & Pick - ) | ( - { __typename: 'EvidenceItem' } - & Pick - ) | ( - { __typename: 'Flag' } - & Pick - ) | ( - { __typename: 'Revision' } - & Pick - ) | ( - { __typename: 'SourceSuggestion' } - & Pick - ) | ( - { __typename: 'Variant' } - & Pick - )> } -); +export type EventFeedQuery = { __typename: 'Query', events: { __typename: 'EventConnection', eventTypes?: Array, unfilteredCount: number, pageInfo: { __typename: 'PageInfo', startCursor?: string | undefined, endCursor?: string | undefined, hasNextPage: boolean, hasPreviousPage: boolean }, uniqueParticipants?: Array<{ __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined }>, participatingOrganizations?: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }>, edges: Array<{ __typename: 'EventEdge', cursor: string, node?: { __typename: 'Event', id: number, action: EventAction, createdAt: any, organization?: { __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined } | undefined, originatingUser: { __typename: 'User', id: number, username: string, displayName: string, role: UserRole, profileImagePath?: string | undefined }, subject?: { __typename: 'Assertion', status: EvidenceStatus, name: string, id: number, link: string } | { __typename: 'EvidenceItem', status: EvidenceStatus, name: string, id: number, link: string } | { __typename: 'Gene', name: string, id: number, link: string } | { __typename: 'Revision', name: string, id: number, link: string } | { __typename: 'Source', citation?: string | undefined, sourceType: SourceSource, name: string, id: number, link: string } | { __typename: 'SourcePopover', name: string, id: number, link: string } | { __typename: 'SourceSuggestion', name: string, id: number, link: string } | { __typename: 'Variant', name: string, id: number, link: string } | { __typename: 'VariantGroup', name: string, id: number, link: string } | undefined, originatingObject?: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'Comment', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'SourceSuggestion', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | undefined } | undefined }> } }; + +export type EventFeedFragment = { __typename: 'EventConnection', eventTypes?: Array, unfilteredCount: number, pageInfo: { __typename: 'PageInfo', startCursor?: string | undefined, endCursor?: string | undefined, hasNextPage: boolean, hasPreviousPage: boolean }, uniqueParticipants?: Array<{ __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined }>, participatingOrganizations?: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }>, edges: Array<{ __typename: 'EventEdge', cursor: string, node?: { __typename: 'Event', id: number, action: EventAction, createdAt: any, organization?: { __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined } | undefined, originatingUser: { __typename: 'User', id: number, username: string, displayName: string, role: UserRole, profileImagePath?: string | undefined }, subject?: { __typename: 'Assertion', status: EvidenceStatus, name: string, id: number, link: string } | { __typename: 'EvidenceItem', status: EvidenceStatus, name: string, id: number, link: string } | { __typename: 'Gene', name: string, id: number, link: string } | { __typename: 'Revision', name: string, id: number, link: string } | { __typename: 'Source', citation?: string | undefined, sourceType: SourceSource, name: string, id: number, link: string } | { __typename: 'SourcePopover', name: string, id: number, link: string } | { __typename: 'SourceSuggestion', name: string, id: number, link: string } | { __typename: 'Variant', name: string, id: number, link: string } | { __typename: 'VariantGroup', name: string, id: number, link: string } | undefined, originatingObject?: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'Comment', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'SourceSuggestion', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | undefined } | undefined }> }; + +export type EventFeedNodeFragment = { __typename: 'Event', id: number, action: EventAction, createdAt: any, organization?: { __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined } | undefined, originatingUser: { __typename: 'User', id: number, username: string, displayName: string, role: UserRole, profileImagePath?: string | undefined }, subject?: { __typename: 'Assertion', status: EvidenceStatus, name: string, id: number, link: string } | { __typename: 'EvidenceItem', status: EvidenceStatus, name: string, id: number, link: string } | { __typename: 'Gene', name: string, id: number, link: string } | { __typename: 'Revision', name: string, id: number, link: string } | { __typename: 'Source', citation?: string | undefined, sourceType: SourceSource, name: string, id: number, link: string } | { __typename: 'SourcePopover', name: string, id: number, link: string } | { __typename: 'SourceSuggestion', name: string, id: number, link: string } | { __typename: 'Variant', name: string, id: number, link: string } | { __typename: 'VariantGroup', name: string, id: number, link: string } | undefined, originatingObject?: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'Comment', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'SourceSuggestion', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | undefined }; export type EvidencePopoverQueryVariables = Exact<{ evidenceId: Scalars['Int']; }>; -export type EvidencePopoverQuery = ( - { __typename: 'Query' } - & { evidenceItem?: Maybe<( - { __typename: 'EvidenceItem' } - & EvidencePopoverFragment - )> } -); - -export type EvidencePopoverFragment = ( - { __typename: 'EvidenceItem' } - & Pick - & { drugs: Array<( - { __typename: 'Drug' } - & Pick - )>, disease?: Maybe<( - { __typename: 'Disease' } - & Pick - )>, phenotypes: Array<( - { __typename: 'Phenotype' } - & Pick - )>, gene: ( - { __typename: 'Gene' } - & Pick - ), variant: ( - { __typename: 'Variant' } - & Pick - ), source: ( - { __typename: 'Source' } - & Pick - ), flags: ( - { __typename: 'FlagConnection' } - & Pick - ), revisions: ( - { __typename: 'RevisionConnection' } - & Pick - ), comments: ( - { __typename: 'CommentConnection' } - & Pick - ) } -); +export type EvidencePopoverQuery = { __typename: 'Query', evidenceItem?: { __typename: 'EvidenceItem', id: number, name: string, status: EvidenceStatus, description: string, evidenceLevel: EvidenceLevel, evidenceType: EvidenceType, evidenceDirection: EvidenceDirection, clinicalSignificance: EvidenceClinicalSignificance, variantOrigin: VariantOrigin, drugInteractionType?: DrugInteraction | undefined, evidenceRating?: number | undefined, drugs: Array<{ __typename: 'Drug', id: number, name: string, link: string }>, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, phenotypes: Array<{ __typename: 'Phenotype', id: number, name: string, link: string }>, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string }, source: { __typename: 'Source', id: number, citation?: string | undefined, sourceType: SourceSource, displayType: string, link: string }, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } } | undefined }; + +export type EvidencePopoverFragment = { __typename: 'EvidenceItem', id: number, name: string, status: EvidenceStatus, description: string, evidenceLevel: EvidenceLevel, evidenceType: EvidenceType, evidenceDirection: EvidenceDirection, clinicalSignificance: EvidenceClinicalSignificance, variantOrigin: VariantOrigin, drugInteractionType?: DrugInteraction | undefined, evidenceRating?: number | undefined, drugs: Array<{ __typename: 'Drug', id: number, name: string, link: string }>, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, phenotypes: Array<{ __typename: 'Phenotype', id: number, name: string, link: string }>, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string }, source: { __typename: 'Source', id: number, citation?: string | undefined, sourceType: SourceSource, displayType: string, link: string }, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } }; export type EvidenceBrowseQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - diseaseName?: Maybe; - drugName?: Maybe; - id?: Maybe; - description?: Maybe; - evidenceLevel?: Maybe; - evidenceDirection?: Maybe; - clinicalSignificance?: Maybe; - evidenceType?: Maybe; - rating?: Maybe; - variantOrigin?: Maybe; - variantId?: Maybe; - assertionId?: Maybe; - organizationId?: Maybe; - userId?: Maybe; - sortBy?: Maybe; - phenotypeId?: Maybe; - diseaseId?: Maybe; - drugId?: Maybe; - sourceId?: Maybe; - clinicalTrialId?: Maybe; - geneSymbol?: Maybe; - variantName?: Maybe; - status?: Maybe; - cardView: Scalars['Boolean']; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + diseaseName?: InputMaybe; + drugName?: InputMaybe; + id?: InputMaybe; + description?: InputMaybe; + evidenceLevel?: InputMaybe; + evidenceDirection?: InputMaybe; + clinicalSignificance?: InputMaybe; + evidenceType?: InputMaybe; + rating?: InputMaybe; + variantOrigin?: InputMaybe; + variantId?: InputMaybe; + assertionId?: InputMaybe; + organizationId?: InputMaybe; + userId?: InputMaybe; + sortBy?: InputMaybe; + phenotypeId?: InputMaybe; + diseaseId?: InputMaybe; + drugId?: InputMaybe; + sourceId?: InputMaybe; + clinicalTrialId?: InputMaybe; + geneSymbol?: InputMaybe; + variantName?: InputMaybe; + status?: InputMaybe; }>; -export type EvidenceBrowseQuery = ( - { __typename: 'Query' } - & { evidenceItems: ( - { __typename: 'EvidenceItemConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'EvidenceItemEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'EvidenceItem' } - & EvidenceGridFieldsFragment - )> } - )> } - ) } -); - -export type EvidenceGridFieldsFragment = ( - { __typename: 'EvidenceItem' } - & Pick - & { disease?: Maybe<( - { __typename: 'Disease' } - & Pick - )>, drugs: Array<( - { __typename: 'Drug' } - & Pick - )>, gene: ( - { __typename: 'Gene' } - & Pick - ), variant: ( - { __typename: 'Variant' } - & Pick - ), phenotypes: Array<( - { __typename: 'Phenotype' } - & Pick - )>, source: ( - { __typename: 'Source' } - & Pick - & { clinicalTrials?: Maybe - )>> } - ), assertions: Array<( - { __typename: 'Assertion' } - & Pick - )> } -); +export type EvidenceBrowseQuery = { __typename: 'Query', evidenceItems: { __typename: 'EvidenceItemConnection', totalCount: number, pageInfo: { __typename: 'PageInfo', hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: string | undefined, endCursor?: string | undefined }, edges: Array<{ __typename: 'EvidenceItemEdge', cursor: string, node?: { __typename: 'EvidenceItem', id: number, name: string, link: string, status: EvidenceStatus, drugInteractionType?: DrugInteraction | undefined, description: string, evidenceType: EvidenceType, evidenceDirection: EvidenceDirection, evidenceLevel: EvidenceLevel, evidenceRating?: number | undefined, clinicalSignificance: EvidenceClinicalSignificance, variantOrigin: VariantOrigin, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, drugs: Array<{ __typename: 'Drug', id: number, name: string, link: string }>, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string } } | undefined }> } }; + +export type EvidenceGridFieldsFragment = { __typename: 'EvidenceItem', id: number, name: string, link: string, status: EvidenceStatus, drugInteractionType?: DrugInteraction | undefined, description: string, evidenceType: EvidenceType, evidenceDirection: EvidenceDirection, evidenceLevel: EvidenceLevel, evidenceRating?: number | undefined, clinicalSignificance: EvidenceClinicalSignificance, variantOrigin: VariantOrigin, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, drugs: Array<{ __typename: 'Drug', id: number, name: string, link: string }>, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string } }; export type FlagListQueryVariables = Exact<{ - flaggable?: Maybe; - flaggingUserId?: Maybe; - resolvingUserId?: Maybe; - state?: Maybe; - sortBy?: Maybe; - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; + flaggable?: InputMaybe; + flaggingUserId?: InputMaybe; + resolvingUserId?: InputMaybe; + state?: InputMaybe; + sortBy?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; }>; -export type FlagListQuery = ( - { __typename: 'Query' } - & { flags: ( - { __typename: 'FlagConnection' } - & FlagListFragment - ) } -); - -export type FlagListFragment = ( - { __typename: 'FlagConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), uniqueFlaggingUsers: Array<( - { __typename: 'User' } - & Pick - )>, uniqueResolvingUsers?: Maybe - )>>, edges: Array<( - { __typename: 'FlagEdge' } - & { node?: Maybe<( - { __typename: 'Flag' } - & FlagFragment - )> } - )> } -); - -export type FlagFragment = ( - { __typename: 'Flag' } - & Pick - & { flaggable: ( - { __typename: 'Assertion' } - & Pick - ) | ( - { __typename: 'EvidenceItem' } - & Pick - ) | ( - { __typename: 'Gene' } - & Pick - ) | ( - { __typename: 'Variant' } - & Pick - ) | ( - { __typename: 'VariantGroup' } - & Pick - ), flaggingUser: ( - { __typename: 'User' } - & Pick - ), resolvingUser?: Maybe<( - { __typename: 'User' } - & Pick - )>, openComment: ( - { __typename: 'Comment' } - & { parsedComment: Array<( - { __typename: 'CommentTagSegment' } - & Pick - ) | ( - { __typename: 'CommentTextSegment' } - & Pick - ) | ( - { __typename: 'User' } - & Pick - )> } - ), resolutionComment?: Maybe<( - { __typename: 'Comment' } - & { parsedComment: Array<( - { __typename: 'CommentTagSegment' } - & Pick - ) | ( - { __typename: 'CommentTextSegment' } - & Pick - ) | ( - { __typename: 'User' } - & Pick - )> } - )> } -); +export type FlagListQuery = { __typename: 'Query', flags: { __typename: 'FlagConnection', totalCount: number, unfilteredCountForSubject?: number | undefined, pageInfo: { __typename: 'PageInfo', startCursor?: string | undefined, endCursor?: string | undefined, hasNextPage: boolean, hasPreviousPage: boolean }, uniqueFlaggingUsers: Array<{ __typename: 'User', username: string, id: number, profileImagePath?: string | undefined }>, uniqueResolvingUsers?: Array<{ __typename: 'User', username: string, id: number, profileImagePath?: string | undefined }> | undefined, edges: Array<{ __typename: 'FlagEdge', node?: { __typename: 'Flag', id: number, state: FlagState, createdAt: any, resolvedAt?: any | undefined, flaggable: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Gene', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | { __typename: 'VariantGroup', id: number, name: string, link: string }, flaggingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined }, resolvingUser?: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } | undefined, openComment: { __typename: 'Comment', parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> }, resolutionComment?: { __typename: 'Comment', parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> } | undefined } | undefined }> } }; + +export type FlagListFragment = { __typename: 'FlagConnection', totalCount: number, unfilteredCountForSubject?: number | undefined, pageInfo: { __typename: 'PageInfo', startCursor?: string | undefined, endCursor?: string | undefined, hasNextPage: boolean, hasPreviousPage: boolean }, uniqueFlaggingUsers: Array<{ __typename: 'User', username: string, id: number, profileImagePath?: string | undefined }>, uniqueResolvingUsers?: Array<{ __typename: 'User', username: string, id: number, profileImagePath?: string | undefined }> | undefined, edges: Array<{ __typename: 'FlagEdge', node?: { __typename: 'Flag', id: number, state: FlagState, createdAt: any, resolvedAt?: any | undefined, flaggable: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Gene', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | { __typename: 'VariantGroup', id: number, name: string, link: string }, flaggingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined }, resolvingUser?: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } | undefined, openComment: { __typename: 'Comment', parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> }, resolutionComment?: { __typename: 'Comment', parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> } | undefined } | undefined }> }; + +export type FlagFragment = { __typename: 'Flag', id: number, state: FlagState, createdAt: any, resolvedAt?: any | undefined, flaggable: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Gene', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | { __typename: 'VariantGroup', id: number, name: string, link: string }, flaggingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined }, resolvingUser?: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } | undefined, openComment: { __typename: 'Comment', parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> }, resolutionComment?: { __typename: 'Comment', parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> } | undefined }; export type FlagPopoverQueryVariables = Exact<{ flagId: Scalars['Int']; }>; -export type FlagPopoverQuery = ( - { __typename: 'Query' } - & { flag?: Maybe<( - { __typename: 'Flag' } - & FlagPopoverFragment - )> } -); - -export type FlagPopoverFragment = ( - { __typename: 'Flag' } - & Pick - & { flaggingUser: ( - { __typename: 'User' } - & Pick - ), flaggable: ( - { __typename: 'Assertion' } - & Pick - ) | ( - { __typename: 'EvidenceItem' } - & Pick - ) | ( - { __typename: 'Gene' } - & Pick - ) | ( - { __typename: 'Variant' } - & Pick - ) | ( - { __typename: 'VariantGroup' } - & Pick - ), openComment: ( - { __typename: 'Comment' } - & Pick - ) } -); +export type FlagPopoverQuery = { __typename: 'Query', flag?: { __typename: 'Flag', id: number, name: string, state: FlagState, createdAt: any, flaggingUser: { __typename: 'User', id: number, displayName: string, role: UserRole }, flaggable: { __typename: 'Assertion', id: number, link: string, name: string } | { __typename: 'EvidenceItem', id: number, link: string, name: string } | { __typename: 'Gene', id: number, link: string, name: string } | { __typename: 'Variant', id: number, link: string, name: string } | { __typename: 'VariantGroup', id: number, link: string, name: string }, openComment: { __typename: 'Comment', comment: string } } | undefined }; + +export type FlagPopoverFragment = { __typename: 'Flag', id: number, name: string, state: FlagState, createdAt: any, flaggingUser: { __typename: 'User', id: number, displayName: string, role: UserRole }, flaggable: { __typename: 'Assertion', id: number, link: string, name: string } | { __typename: 'EvidenceItem', id: number, link: string, name: string } | { __typename: 'Gene', id: number, link: string, name: string } | { __typename: 'Variant', id: number, link: string, name: string } | { __typename: 'VariantGroup', id: number, link: string, name: string }, openComment: { __typename: 'Comment', comment: string } }; export type GenePopoverQueryVariables = Exact<{ geneId: Scalars['Int']; }>; -export type GenePopoverQuery = ( - { __typename: 'Query' } - & { gene?: Maybe<( - { __typename: 'Gene' } - & GenePopoverFragment - )> } -); - -export type GenePopoverFragment = ( - { __typename: 'Gene' } - & Pick - & { variants: ( - { __typename: 'VariantConnection' } - & Pick - ), revisions: ( - { __typename: 'RevisionConnection' } - & Pick - ), comments: ( - { __typename: 'CommentConnection' } - & Pick - ), flags: ( - { __typename: 'FlagConnection' } - & Pick - ) } -); +export type GenePopoverQuery = { __typename: 'Query', gene?: { __typename: 'Gene', id: number, name: string, officialName: string, geneAliases: Array, variants: { __typename: 'VariantConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number }, flags: { __typename: 'FlagConnection', totalCount: number } } | undefined }; + +export type GenePopoverFragment = { __typename: 'Gene', id: number, name: string, officialName: string, geneAliases: Array, variants: { __typename: 'VariantConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number }, flags: { __typename: 'FlagConnection', totalCount: number } }; export type BrowseGenesQueryVariables = Exact<{ - entrezSymbol?: Maybe; - drugName?: Maybe; - geneAlias?: Maybe; - diseaseName?: Maybe; - sortBy?: Maybe; - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; + entrezSymbol?: InputMaybe; + drugName?: InputMaybe; + geneAlias?: InputMaybe; + diseaseName?: InputMaybe; + sortBy?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; }>; -export type BrowseGenesQuery = ( - { __typename: 'Query' } - & { browseGenes: ( - { __typename: 'BrowseGeneConnection' } - & Pick - & { edges: Array<( - { __typename: 'BrowseGeneEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'BrowseGene' } - & GeneBrowseTableRowFieldsFragment - )> } - )>, pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ) } - ) } -); - -export type GeneBrowseTableRowFieldsFragment = ( - { __typename: 'BrowseGene' } - & Pick - & { diseases?: Maybe - )>>, drugs?: Maybe - )>> } -); +export type BrowseGenesQuery = { __typename: 'Query', browseGenes: { __typename: 'BrowseGeneConnection', totalCount: number, filteredCount: number, pageCount: number, edges: Array<{ __typename: 'BrowseGeneEdge', cursor: string, node?: { __typename: 'BrowseGene', id: number, entrezId: number, name: string, link: string, geneAliases?: Array | undefined, variantCount: number, evidenceItemCount: number, assertionCount: number, diseases?: Array<{ __typename: 'Disease', name: string, id: number, link: string }> | undefined, drugs?: Array<{ __typename: 'Drug', name: string, id: number, link: string }> | undefined } | undefined }>, pageInfo: { __typename: 'PageInfo', startCursor?: string | undefined, endCursor?: string | undefined, hasPreviousPage: boolean, hasNextPage: boolean } } }; + +export type BrowseGenesFieldsFragment = { __typename: 'BrowseGene', id: number, entrezId: number, name: string, link: string, geneAliases?: Array | undefined, variantCount: number, evidenceItemCount: number, assertionCount: number, diseases?: Array<{ __typename: 'Disease', name: string, id: number, link: string }> | undefined, drugs?: Array<{ __typename: 'Drug', name: string, id: number, link: string }> | undefined }; export type QuicksearchQueryVariables = Exact<{ query: Scalars['String']; }>; -export type QuicksearchQuery = ( - { __typename: 'Query' } - & { search: Array<( - { __typename: 'SearchResult' } - & QuicksearchResultFragment - )> } -); +export type QuicksearchQuery = { __typename: 'Query', search: Array<{ __typename: 'SearchResult', id: number, resultType: SearchableEntities, name: string, matchingText: string }> }; -export type QuicksearchResultFragment = ( - { __typename: 'SearchResult' } - & Pick -); +export type QuicksearchResultFragment = { __typename: 'SearchResult', id: number, resultType: SearchableEntities, name: string, matchingText: string }; export type OrgPopoverQueryVariables = Exact<{ orgId: Scalars['Int']; }>; -export type OrgPopoverQuery = ( - { __typename: 'Query' } - & { organization?: Maybe<( - { __typename: 'Organization' } - & OrgPopoverFragment - )> } -); +export type OrgPopoverQuery = { __typename: 'Query', organization?: { __typename: 'Organization', id: number, profileImagePath?: string | undefined, name: string, description: string, url: string } | undefined }; -export type OrgPopoverFragment = ( - { __typename: 'Organization' } - & Pick -); +export type OrgPopoverFragment = { __typename: 'Organization', id: number, profileImagePath?: string | undefined, name: string, description: string, url: string }; export type OrganizationsBrowseQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - id?: Maybe; - orgName?: Maybe; - sortBy?: Maybe; - cardView: Scalars['Boolean']; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + id?: InputMaybe; + orgName?: InputMaybe; + sortBy?: InputMaybe; }>; -export type OrganizationsBrowseQuery = ( - { __typename: 'Query' } - & { organizations: ( - { __typename: 'OrganizationConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'OrganizationEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'Organization' } - & OrganizationBrowseTableRowFieldsFragment - )> } - )> } - ) } -); - -export type OrganizationBrowseTableRowFieldsFragment = ( - { __typename: 'Organization' } - & MakeOptional, 'description' | 'profileImagePath'> - & { subGroups: Array<( - { __typename: 'Organization' } - & Pick - )>, mostRecentEvent?: Maybe<( - { __typename: 'Event' } - & Pick - )>, orgStatsHash: ( - { __typename: 'Stats' } - & Pick - ) } -); +export type OrganizationsBrowseQuery = { __typename: 'Query', organizations: { __typename: 'OrganizationConnection', totalCount: number, pageInfo: { __typename: 'PageInfo', hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: string | undefined, endCursor?: string | undefined }, edges: Array<{ __typename: 'OrganizationEdge', cursor: string, node?: { __typename: 'Organization', id: number, name: string, description: string, url: string, memberCount: number, eventCount: number, subGroups: Array<{ __typename: 'Organization', name: string, id: number }>, mostRecentEvent?: { __typename: 'Event', createdAt: any } | undefined } | undefined }> } }; + +export type OrganizationBrowseTableRowFieldsFragment = { __typename: 'Organization', id: number, name: string, description: string, url: string, memberCount: number, eventCount: number, subGroups: Array<{ __typename: 'Organization', name: string, id: number }>, mostRecentEvent?: { __typename: 'Event', createdAt: any } | undefined }; export type PhenotypePopoverQueryVariables = Exact<{ phenotypeId: Scalars['Int']; }>; -export type PhenotypePopoverQuery = ( - { __typename: 'Query' } - & { phenotypePopover?: Maybe<( - { __typename: 'PhenotypePopover' } - & Pick - )> } -); +export type PhenotypePopoverQuery = { __typename: 'Query', phenotypePopover?: { __typename: 'PhenotypePopover', id: number, name: string, url: string, hpoId: string, assertionCount: number, evidenceItemCount: number, link: string } | undefined }; export type PhenotypesBrowseQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - name?: Maybe; - hpoId?: Maybe; - sortBy?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + name?: InputMaybe; + hpoId?: InputMaybe; + sortBy?: InputMaybe; }>; -export type PhenotypesBrowseQuery = ( - { __typename: 'Query' } - & { phenotypes: ( - { __typename: 'BrowsePhenotypeConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'BrowsePhenotypeEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'BrowsePhenotype' } - & PhenotypeBrowseTableRowFieldsFragment - )> } - )> } - ) } -); - -export type PhenotypeBrowseTableRowFieldsFragment = ( - { __typename: 'BrowsePhenotype' } - & Pick -); +export type PhenotypesBrowseQuery = { __typename: 'Query', phenotypes: { __typename: 'BrowsePhenotypeConnection', totalCount: number, filteredCount: number, pageInfo: { __typename: 'PageInfo', hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: string | undefined, endCursor?: string | undefined }, edges: Array<{ __typename: 'BrowsePhenotypeEdge', cursor: string, node?: { __typename: 'BrowsePhenotype', id: number, name: string, hpoId: string, url: string, assertionCount: number, evidenceCount: number, link: string } | undefined }> } }; + +export type PhenotypeBrowseTableRowFieldsFragment = { __typename: 'BrowsePhenotype', id: number, name: string, hpoId: string, url: string, assertionCount: number, evidenceCount: number, link: string }; export type AcceptRevisionMutationVariables = Exact<{ input: AcceptRevisionsInput; }>; -export type AcceptRevisionMutation = ( - { __typename: 'Mutation' } - & { acceptRevisions?: Maybe<( - { __typename: 'AcceptRevisionsPayload' } - & { revisions: Array<( - { __typename: 'Revision' } - & Pick - )> } - )> } -); +export type AcceptRevisionMutation = { __typename: 'Mutation', acceptRevisions?: { __typename: 'AcceptRevisionsPayload', revisions: Array<{ __typename: 'Revision', id: number }> } | undefined }; export type RejectRevisionMutationVariables = Exact<{ input: RejectRevisionsInput; }>; -export type RejectRevisionMutation = ( - { __typename: 'Mutation' } - & { rejectRevisions?: Maybe<( - { __typename: 'RejectRevisionsPayload' } - & { revisions: Array<( - { __typename: 'Revision' } - & Pick - )> } - )> } -); +export type RejectRevisionMutation = { __typename: 'Mutation', rejectRevisions?: { __typename: 'RejectRevisionsPayload', revisions: Array<{ __typename: 'Revision', id: number }> } | undefined }; export type ValidateRevisionsForAcceptanceQueryVariables = Exact<{ ids: Array | Scalars['Int']; }>; -export type ValidateRevisionsForAcceptanceQuery = ( - { __typename: 'Query' } - & { validateRevisionsForAcceptance: ( - { __typename: 'ValidationErrors' } - & Pick - & { validationErrors: Array<( - { __typename: 'FieldValidationError' } - & ValidationErrorFragment - )> } - ) } -); +export type ValidateRevisionsForAcceptanceQuery = { __typename: 'Query', validateRevisionsForAcceptance: { __typename: 'ValidationErrors', genericErrors: Array, validationErrors: Array<{ __typename: 'FieldValidationError', fieldName: string, error: string }> } }; -export type ValidationErrorFragment = ( - { __typename: 'FieldValidationError' } - & Pick -); +export type ValidationErrorFragment = { __typename: 'FieldValidationError', fieldName: string, error: string }; export type RevisionPopoverQueryVariables = Exact<{ revisionId: Scalars['Int']; }>; -export type RevisionPopoverQuery = ( - { __typename: 'Query' } - & { revision?: Maybe<( - { __typename: 'Revision' } - & RevisionPopoverFragment - )> } -); - -export type RevisionPopoverFragment = ( - { __typename: 'Revision' } - & Pick - & { revisor?: Maybe<( - { __typename: 'User' } - & Pick - )>, subject: ( - { __typename: 'Assertion' } - & Pick - ) | ( - { __typename: 'EvidenceItem' } - & Pick - ) | ( - { __typename: 'Gene' } - & Pick - ) | ( - { __typename: 'Revision' } - & Pick - ) | ( - { __typename: 'Source' } - & Pick - ) | ( - { __typename: 'SourcePopover' } - & Pick - ) | ( - { __typename: 'SourceSuggestion' } - & Pick - ) | ( - { __typename: 'Variant' } - & Pick - ) | ( - { __typename: 'VariantGroup' } - & Pick - ), linkoutData: ( - { __typename: 'LinkoutData' } - & Pick - ) } -); +export type RevisionPopoverQuery = { __typename: 'Query', revision?: { __typename: 'Revision', id: number, name: string, link: string, status: RevisionStatus, createdAt: any, revisor?: { __typename: 'User', id: number, displayName: string, role: UserRole } | undefined, subject: { __typename: 'Assertion', id: number, link: string, name: string } | { __typename: 'EvidenceItem', id: number, link: string, name: string } | { __typename: 'Gene', id: number, link: string, name: string } | { __typename: 'Revision', id: number, link: string, name: string } | { __typename: 'Source', id: number, link: string, name: string } | { __typename: 'SourcePopover', id: number, link: string, name: string } | { __typename: 'SourceSuggestion', id: number, link: string, name: string } | { __typename: 'Variant', id: number, link: string, name: string } | { __typename: 'VariantGroup', id: number, link: string, name: string }, linkoutData: { __typename: 'LinkoutData', name: string } } | undefined }; + +export type RevisionPopoverFragment = { __typename: 'Revision', id: number, name: string, link: string, status: RevisionStatus, createdAt: any, revisor?: { __typename: 'User', id: number, displayName: string, role: UserRole } | undefined, subject: { __typename: 'Assertion', id: number, link: string, name: string } | { __typename: 'EvidenceItem', id: number, link: string, name: string } | { __typename: 'Gene', id: number, link: string, name: string } | { __typename: 'Revision', id: number, link: string, name: string } | { __typename: 'Source', id: number, link: string, name: string } | { __typename: 'SourcePopover', id: number, link: string, name: string } | { __typename: 'SourceSuggestion', id: number, link: string, name: string } | { __typename: 'Variant', id: number, link: string, name: string } | { __typename: 'VariantGroup', id: number, link: string, name: string }, linkoutData: { __typename: 'LinkoutData', name: string } }; export type RevisionsQueryVariables = Exact<{ - subject?: Maybe; - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - fieldName?: Maybe; - originatingUserId?: Maybe; - resolvingUserId?: Maybe; - revisionsetId?: Maybe; - status?: Maybe; + subject?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + fieldName?: InputMaybe; + originatingUserId?: InputMaybe; + resolvingUserId?: InputMaybe; + revisionsetId?: InputMaybe; + status?: InputMaybe; }>; -export type RevisionsQuery = ( - { __typename: 'Query' } - & { revisions: ( - { __typename: 'RevisionConnection' } - & Pick - & { uniqueRevisors: Array<( - { __typename: 'User' } - & Pick - )>, uniqueResolvers: Array<( - { __typename: 'User' } - & Pick - )>, revisedFieldNames: Array<( - { __typename: 'FieldName' } - & Pick - )>, pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'RevisionEdge' } - & { node?: Maybe<( - { __typename: 'Revision' } - & RevisionFragment - )> } - )> } - ) } -); - -export type RevisionFragment = ( - { __typename: 'Revision' } - & Pick - & { linkoutData: ( - { __typename: 'LinkoutData' } - & Pick - & { diffValue: ( - { __typename: 'ObjectFieldDiff' } - & { currentObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )>, addedObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )>, removedObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )>, keptObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )>, suggestedObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )> } - ) | ( - { __typename: 'ScalarFieldDiff' } - & Pick - ) } - ), revisor?: Maybe<( - { __typename: 'User' } - & Pick - )>, resolver?: Maybe<( - { __typename: 'User' } - & Pick - )>, creationComment?: Maybe<( - { __typename: 'Comment' } - & { parsedComment: Array<( - { __typename: 'CommentTagSegment' } - & Pick - ) | ( - { __typename: 'CommentTextSegment' } - & Pick - ) | ( - { __typename: 'User' } - & Pick - )> } - )>, resolutionComment?: Maybe<( - { __typename: 'Comment' } - & { parsedComment: Array<( - { __typename: 'CommentTagSegment' } - & Pick - ) | ( - { __typename: 'CommentTextSegment' } - & Pick - ) | ( - { __typename: 'User' } - & Pick - )> } - )> } -); +export type RevisionsQuery = { __typename: 'Query', revisions: { __typename: 'RevisionConnection', totalCount: number, unfilteredCountForSubject?: number | undefined, uniqueRevisors: Array<{ __typename: 'User', username: string, id: number, profileImagePath?: string | undefined }>, uniqueResolvers: Array<{ __typename: 'User', username: string, id: number, profileImagePath?: string | undefined }>, revisedFieldNames: Array<{ __typename: 'FieldName', name: string, displayName: string }>, pageInfo: { __typename: 'PageInfo', hasNextPage: boolean, hasPreviousPage: boolean, endCursor?: string | undefined, startCursor?: string | undefined }, edges: Array<{ __typename: 'RevisionEdge', node?: { __typename: 'Revision', id: number, revisionsetId: string, createdAt: any, resolvedAt?: any | undefined, fieldName: string, currentValue?: any | undefined, suggestedValue?: any | undefined, status: RevisionStatus, linkoutData: { __typename: 'LinkoutData', name: string, diffValue: { __typename: 'ObjectFieldDiff', currentObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean }>, addedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean }>, removedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean }>, keptObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean }>, suggestedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean }> } | { __typename: 'ScalarFieldDiff', left: string, right: string } }, revisor?: { __typename: 'User', id: number, displayName: string, role: UserRole } | undefined, resolver?: { __typename: 'User', id: number, displayName: string, role: UserRole } | undefined, creationComment?: { __typename: 'Comment', parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> } | undefined, resolutionComment?: { __typename: 'Comment', parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> } | undefined } | undefined }> } }; + +export type RevisionFragment = { __typename: 'Revision', id: number, revisionsetId: string, createdAt: any, resolvedAt?: any | undefined, fieldName: string, currentValue?: any | undefined, suggestedValue?: any | undefined, status: RevisionStatus, linkoutData: { __typename: 'LinkoutData', name: string, diffValue: { __typename: 'ObjectFieldDiff', currentObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean }>, addedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean }>, removedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean }>, keptObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean }>, suggestedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string, link?: string | undefined, deleted: boolean }> } | { __typename: 'ScalarFieldDiff', left: string, right: string } }, revisor?: { __typename: 'User', id: number, displayName: string, role: UserRole } | undefined, resolver?: { __typename: 'User', id: number, displayName: string, role: UserRole } | undefined, creationComment?: { __typename: 'Comment', parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> } | undefined, resolutionComment?: { __typename: 'Comment', parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> } | undefined }; export type ContributorAvatarsQueryVariables = Exact<{ subscribable: SubscribableInput; }>; -export type ContributorAvatarsQuery = ( - { __typename: 'Query' } - & { contributors: ( - { __typename: 'ContributingUsersSummary' } - & { editors: Array<( - { __typename: 'ContributingUser' } - & ContributorFieldsFragment - )>, curators: Array<( - { __typename: 'ContributingUser' } - & ContributorFieldsFragment - )> } - ) } -); - -export type ContributorFieldsFragment = ( - { __typename: 'ContributingUser' } - & Pick - & { user: ( - { __typename: 'User' } - & Pick - ), uniqueActions: Array<( - { __typename: 'Contribution' } - & Pick - )> } -); +export type ContributorAvatarsQuery = { __typename: 'Query', contributors: { __typename: 'ContributingUsersSummary', editors: Array<{ __typename: 'ContributingUser', lastActionDate: any, totalActionCount: number, user: { __typename: 'User', id: number, profileImagePath?: string | undefined }, uniqueActions: Array<{ __typename: 'Contribution', action: EventAction, count: number }> }>, curators: Array<{ __typename: 'ContributingUser', lastActionDate: any, totalActionCount: number, user: { __typename: 'User', id: number, profileImagePath?: string | undefined }, uniqueActions: Array<{ __typename: 'Contribution', action: EventAction, count: number }> }> } }; + +export type ContributorFieldsFragment = { __typename: 'ContributingUser', lastActionDate: any, totalActionCount: number, user: { __typename: 'User', id: number, profileImagePath?: string | undefined }, uniqueActions: Array<{ __typename: 'Contribution', action: EventAction, count: number }> }; export type SubscriptionForEntityQueryVariables = Exact<{ subscribable: SubscribableInput; }>; -export type SubscriptionForEntityQuery = ( - { __typename: 'Query' } - & { subscriptionForEntity?: Maybe<( - { __typename: 'Subscription' } - & SubscriptionIdFragment - )> } -); +export type SubscriptionForEntityQuery = { __typename: 'Query', subscriptionForEntity?: { __typename: 'Subscription', id: number } | undefined }; -export type SubscriptionIdFragment = ( - { __typename: 'Subscription' } - & Pick -); +export type SubscriptionIdFragment = { __typename: 'Subscription', id: number }; export type ModerateEvidenceItemMutationVariables = Exact<{ input: ModerateEvidenceItemInput; }>; -export type ModerateEvidenceItemMutation = ( - { __typename: 'Mutation' } - & { moderateEvidenceItem?: Maybe<( - { __typename: 'ModerateEvidenceItemPayload' } - & { evidenceItem: ( - { __typename: 'EvidenceItem' } - & Pick - ) } - )> } -); +export type ModerateEvidenceItemMutation = { __typename: 'Mutation', moderateEvidenceItem?: { __typename: 'ModerateEvidenceItemPayload', evidenceItem: { __typename: 'EvidenceItem', id: number } } | undefined }; export type ModerateAssertionMutationVariables = Exact<{ input: ModerateAssertionInput; }>; -export type ModerateAssertionMutation = ( - { __typename: 'Mutation' } - & { moderateAssertion?: Maybe<( - { __typename: 'ModerateAssertionPayload' } - & { assertion: ( - { __typename: 'Assertion' } - & Pick - ) } - )> } -); +export type ModerateAssertionMutation = { __typename: 'Mutation', moderateAssertion?: { __typename: 'ModerateAssertionPayload', assertion: { __typename: 'Assertion', id: number } } | undefined }; export type CivicStatsQueryVariables = Exact<{ [key: string]: never; }>; -export type CivicStatsQuery = ( - { __typename: 'Query' } - & { timepointStats: ( - { __typename: 'CivicTimepointStats' } - & { assertions: ( - { __typename: 'TimePointCounts' } - & TimepointCountFragment - ), diseases: ( - { __typename: 'TimePointCounts' } - & TimepointCountFragment - ), comments: ( - { __typename: 'TimePointCounts' } - & TimepointCountFragment - ), drugs: ( - { __typename: 'TimePointCounts' } - & TimepointCountFragment - ), evidenceItems: ( - { __typename: 'TimePointCounts' } - & TimepointCountFragment - ), genes: ( - { __typename: 'TimePointCounts' } - & TimepointCountFragment - ), revisions: ( - { __typename: 'TimePointCounts' } - & TimepointCountFragment - ), sources: ( - { __typename: 'TimePointCounts' } - & TimepointCountFragment - ), users: ( - { __typename: 'TimePointCounts' } - & TimepointCountFragment - ), variants: ( - { __typename: 'TimePointCounts' } - & TimepointCountFragment - ) } - ) } -); - -export type TimepointCountFragment = ( - { __typename: 'TimePointCounts' } - & Pick -); +export type CivicStatsQuery = { __typename: 'Query', timepointStats: { __typename: 'CivicTimepointStats', assertions: { __typename: 'TimePointCounts', allTime: number, newThisMonth: number, newThisWeek: number, newThisYear: number }, diseases: { __typename: 'TimePointCounts', allTime: number, newThisMonth: number, newThisWeek: number, newThisYear: number }, comments: { __typename: 'TimePointCounts', allTime: number, newThisMonth: number, newThisWeek: number, newThisYear: number }, drugs: { __typename: 'TimePointCounts', allTime: number, newThisMonth: number, newThisWeek: number, newThisYear: number }, evidenceItems: { __typename: 'TimePointCounts', allTime: number, newThisMonth: number, newThisWeek: number, newThisYear: number }, genes: { __typename: 'TimePointCounts', allTime: number, newThisMonth: number, newThisWeek: number, newThisYear: number }, revisions: { __typename: 'TimePointCounts', allTime: number, newThisMonth: number, newThisWeek: number, newThisYear: number }, sources: { __typename: 'TimePointCounts', allTime: number, newThisMonth: number, newThisWeek: number, newThisYear: number }, users: { __typename: 'TimePointCounts', allTime: number, newThisMonth: number, newThisWeek: number, newThisYear: number }, variants: { __typename: 'TimePointCounts', allTime: number, newThisMonth: number, newThisWeek: number, newThisYear: number } } }; + +export type TimepointCountFragment = { __typename: 'TimePointCounts', allTime: number, newThisMonth: number, newThisWeek: number, newThisYear: number }; export type BrowseSourceSuggestionsQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - sortBy?: Maybe; - sourceType?: Maybe; - citationId?: Maybe; - sourceId?: Maybe; - geneName?: Maybe; - variantName?: Maybe; - diseaseName?: Maybe; - comment?: Maybe; - submitter?: Maybe; - citation?: Maybe; - submitterId?: Maybe; - status?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + sortBy?: InputMaybe; + sourceType?: InputMaybe; + citationId?: InputMaybe; + sourceId?: InputMaybe; + geneName?: InputMaybe; + variantName?: InputMaybe; + diseaseName?: InputMaybe; + comment?: InputMaybe; + submitter?: InputMaybe; + citation?: InputMaybe; + submitterId?: InputMaybe; + status?: InputMaybe; }>; -export type BrowseSourceSuggestionsQuery = ( - { __typename: 'Query' } - & { sourceSuggestions: ( - { __typename: 'SourceSuggestionConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'SourceSuggestionEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'SourceSuggestion' } - & BrowseSourceSuggestionRowFieldsFragment - )> } - )> } - ) } -); - -export type BrowseSourceSuggestionRowFieldsFragment = ( - { __typename: 'SourceSuggestion' } - & Pick - & { gene?: Maybe<( - { __typename: 'Gene' } - & Pick - )>, variant?: Maybe<( - { __typename: 'Variant' } - & Pick - )>, disease?: Maybe<( - { __typename: 'Disease' } - & Pick - )>, source?: Maybe<( - { __typename: 'Source' } - & Pick - )>, user?: Maybe<( - { __typename: 'User' } - & Pick - )> } -); +export type BrowseSourceSuggestionsQuery = { __typename: 'Query', sourceSuggestions: { __typename: 'SourceSuggestionConnection', totalCount: number, filteredCount: number, pageCount: number, pageInfo: { __typename: 'PageInfo', endCursor?: string | undefined, hasNextPage: boolean, startCursor?: string | undefined, hasPreviousPage: boolean }, edges: Array<{ __typename: 'SourceSuggestionEdge', cursor: string, node?: { __typename: 'SourceSuggestion', id: number, initialComment: string, status: SourceSuggestionStatus, reason?: string | undefined, createdAt: any, gene?: { __typename: 'Gene', id: number, name: string, link: string } | undefined, variant?: { __typename: 'Variant', id: number, name: string, link: string } | undefined, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, source?: { __typename: 'Source', id: number, citation?: string | undefined, citationId: number, sourceType: SourceSource, sourceUrl?: string | undefined, displayType: string } | undefined, user?: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } | undefined } | undefined }> } }; + +export type BrowseSourceSuggestionRowFieldsFragment = { __typename: 'SourceSuggestion', id: number, initialComment: string, status: SourceSuggestionStatus, reason?: string | undefined, createdAt: any, gene?: { __typename: 'Gene', id: number, name: string, link: string } | undefined, variant?: { __typename: 'Variant', id: number, name: string, link: string } | undefined, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, source?: { __typename: 'Source', id: number, citation?: string | undefined, citationId: number, sourceType: SourceSource, sourceUrl?: string | undefined, displayType: string } | undefined, user?: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } | undefined }; export type UpdateSourceSuggestionStatusMutationVariables = Exact<{ input: UpdateSourceSuggestionStatusInput; }>; -export type UpdateSourceSuggestionStatusMutation = ( - { __typename: 'Mutation' } - & { updateSourceSuggestionStatus?: Maybe<( - { __typename: 'UpdateSourceSuggestionStatusPayload' } - & { sourceSuggestion: ( - { __typename: 'SourceSuggestion' } - & Pick - ) } - )> } -); +export type UpdateSourceSuggestionStatusMutation = { __typename: 'Mutation', updateSourceSuggestionStatus?: { __typename: 'UpdateSourceSuggestionStatusPayload', sourceSuggestion: { __typename: 'SourceSuggestion', id: number, status: SourceSuggestionStatus } } | undefined }; export type SourcePopoverQueryVariables = Exact<{ sourceId: Scalars['Int']; }>; -export type SourcePopoverQuery = ( - { __typename: 'Query' } - & { sourcePopover?: Maybe<( - { __typename: 'SourcePopover' } - & SourcePopoverFragment - )> } -); +export type SourcePopoverQuery = { __typename: 'Query', sourcePopover?: { __typename: 'SourcePopover', id: number, name: string, evidenceItemCount: number, citation?: string | undefined, citationId: number, displayType: string, sourceUrl?: string | undefined, clinicalTrials?: Array<{ __typename: 'ClinicalTrial', id: number, nctId: string, link: string }> | undefined } | undefined }; -export type SourcePopoverFragment = ( - { __typename: 'SourcePopover' } - & Pick - & { clinicalTrials?: Maybe - )>> } -); +export type SourcePopoverFragment = { __typename: 'SourcePopover', id: number, name: string, evidenceItemCount: number, citation?: string | undefined, citationId: number, displayType: string, sourceUrl?: string | undefined, clinicalTrials?: Array<{ __typename: 'ClinicalTrial', id: number, nctId: string, link: string }> | undefined }; export type BrowseSourcesQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - sortBy?: Maybe; - name?: Maybe; - year?: Maybe; - sourceType?: Maybe; - citationId?: Maybe; - author?: Maybe; - journal?: Maybe; - clinicalTrialId?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + sortBy?: InputMaybe; + name?: InputMaybe; + year?: InputMaybe; + sourceType?: InputMaybe; + citationId?: InputMaybe; + author?: InputMaybe; + journal?: InputMaybe; + clinicalTrialId?: InputMaybe; }>; -export type BrowseSourcesQuery = ( - { __typename: 'Query' } - & { browseSources: ( - { __typename: 'BrowseSourceConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'BrowseSourceEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'BrowseSource' } - & BrowseSourceRowFieldsFragment - )> } - )> } - ) } -); - -export type BrowseSourceRowFieldsFragment = ( - { __typename: 'BrowseSource' } - & Pick -); +export type BrowseSourcesQuery = { __typename: 'Query', browseSources: { __typename: 'BrowseSourceConnection', totalCount: number, filteredCount: number, pageCount: number, pageInfo: { __typename: 'PageInfo', endCursor?: string | undefined, hasNextPage: boolean, startCursor?: string | undefined, hasPreviousPage: boolean }, edges: Array<{ __typename: 'BrowseSourceEdge', cursor: string, node?: { __typename: 'BrowseSource', id: number, authors: Array, citationId: number, evidenceItemCount: number, sourceSuggestionCount: number, journal?: string | undefined, name?: string | undefined, publicationYear?: number | undefined, sourceType: SourceSource, citation: string, displayType: string, link: string } | undefined }> } }; + +export type BrowseSourceRowFieldsFragment = { __typename: 'BrowseSource', id: number, authors: Array, citationId: number, evidenceItemCount: number, sourceSuggestionCount: number, journal?: string | undefined, name?: string | undefined, publicationYear?: number | undefined, sourceType: SourceSource, citation: string, displayType: string, link: string }; export type UserPopoverQueryVariables = Exact<{ userId: Scalars['Int']; }>; -export type UserPopoverQuery = ( - { __typename: 'Query' } - & { user?: Maybe<( - { __typename: 'User' } - & PopoverUserFragment - )> } -); +export type UserPopoverQuery = { __typename: 'Query', user?: { __typename: 'User', id: number, profileImagePath?: string | undefined, displayName: string, bio?: string | undefined, role: UserRole, organizations: Array<{ __typename: 'Organization', id: number, name: string }> } | undefined }; -export type PopoverUserFragment = ( - { __typename: 'User' } - & Pick - & { organizations: Array<( - { __typename: 'Organization' } - & Pick - )> } -); +export type PopoverUserFragment = { __typename: 'User', id: number, profileImagePath?: string | undefined, displayName: string, bio?: string | undefined, role: UserRole, organizations: Array<{ __typename: 'Organization', id: number, name: string }> }; export type UsersBrowseQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - userName?: Maybe; - orgName?: Maybe; - userRole?: Maybe; - sortBy?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + userName?: InputMaybe; + orgName?: InputMaybe; + userRole?: InputMaybe; + sortBy?: InputMaybe; }>; -export type UsersBrowseQuery = ( - { __typename: 'Query' } - & { users: ( - { __typename: 'UserConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'UserEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'User' } - & UserBrowseTableRowFieldsFragment - )> } - )> } - ) } -); - -export type UserBrowseTableRowFieldsFragment = ( - { __typename: 'User' } - & Pick - & { organizations: Array<( - { __typename: 'Organization' } - & Pick - )>, statsHash: ( - { __typename: 'Stats' } - & Pick - ) } -); +export type UsersBrowseQuery = { __typename: 'Query', users: { __typename: 'UserConnection', totalCount: number, pageInfo: { __typename: 'PageInfo', endCursor?: string | undefined, hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: string | undefined }, edges: Array<{ __typename: 'UserEdge', cursor: string, node?: { __typename: 'User', id: number, name?: string | undefined, displayName: string, role: UserRole, mostRecentActionTimestamp?: any | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string }>, statsHash: { __typename: 'Stats', submittedEvidenceItems: number, revisions: number } } | undefined }> } }; + +export type UserBrowseTableRowFieldsFragment = { __typename: 'User', id: number, name?: string | undefined, displayName: string, role: UserRole, mostRecentActionTimestamp?: any | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string }>, statsHash: { __typename: 'Stats', submittedEvidenceItems: number, revisions: number } }; export type VariantGroupPopoverQueryVariables = Exact<{ variantGroupId: Scalars['Int']; }>; -export type VariantGroupPopoverQuery = ( - { __typename: 'Query' } - & { variantGroup?: Maybe<( - { __typename: 'VariantGroup' } - & VariantGroupPopoverFieldsFragment - )> } -); - -export type VariantGroupPopoverFieldsFragment = ( - { __typename: 'VariantGroup' } - & Pick - & { variants: ( - { __typename: 'VariantConnection' } - & { edges: Array<( - { __typename: 'VariantEdge' } - & { node?: Maybe<( - { __typename: 'Variant' } - & Pick - )> } - )> } - ), sources: Array<( - { __typename: 'Source' } - & Pick - )> } -); +export type VariantGroupPopoverQuery = { __typename: 'Query', variantGroup?: { __typename: 'VariantGroup', id: number, name: string, description: string, variants: { __typename: 'VariantConnection', edges: Array<{ __typename: 'VariantEdge', node?: { __typename: 'Variant', id: number, name: string, link: string } | undefined }> }, sources: Array<{ __typename: 'Source', id: number, citation?: string | undefined, sourceType: SourceSource, link: string }> } | undefined }; + +export type VariantGroupPopoverFieldsFragment = { __typename: 'VariantGroup', id: number, name: string, description: string, variants: { __typename: 'VariantConnection', edges: Array<{ __typename: 'VariantEdge', node?: { __typename: 'Variant', id: number, name: string, link: string } | undefined }> }, sources: Array<{ __typename: 'Source', id: number, citation?: string | undefined, sourceType: SourceSource, link: string }> }; export type BrowseVariantGroupsQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - sortBy?: Maybe; - name?: Maybe; - geneNames?: Maybe; - variantNames?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + sortBy?: InputMaybe; + name?: InputMaybe; + geneNames?: InputMaybe; + variantNames?: InputMaybe; }>; -export type BrowseVariantGroupsQuery = ( - { __typename: 'Query' } - & { browseVariantGroups: ( - { __typename: 'BrowseVariantGroupConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'BrowseVariantGroupEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'BrowseVariantGroup' } - & BrowseVariantGroupRowFieldsFragment - )> } - )> } - ) } -); - -export type BrowseVariantGroupRowFieldsFragment = ( - { __typename: 'BrowseVariantGroup' } - & Pick -); +export type BrowseVariantGroupsQuery = { __typename: 'Query', browseVariantGroups: { __typename: 'BrowseVariantGroupConnection', totalCount: number, filteredCount: number, pageCount: number, pageInfo: { __typename: 'PageInfo', endCursor?: string | undefined, hasNextPage: boolean, startCursor?: string | undefined, hasPreviousPage: boolean }, edges: Array<{ __typename: 'BrowseVariantGroupEdge', cursor: string, node?: { __typename: 'BrowseVariantGroup', id: number, name: string, link: string, geneNames: Array, variantNames: Array, variantCount: number, evidenceItemCount: number } | undefined }> } }; + +export type BrowseVariantGroupRowFieldsFragment = { __typename: 'BrowseVariantGroup', id: number, name: string, link: string, geneNames: Array, variantNames: Array, variantCount: number, evidenceItemCount: number }; export type VariantTypePopoverQueryVariables = Exact<{ variantTypeId: Scalars['Int']; }>; -export type VariantTypePopoverQuery = ( - { __typename: 'Query' } - & { variantTypePopover?: Maybe<( - { __typename: 'VariantTypePopover' } - & VariantTypePopoverFragment - )> } -); +export type VariantTypePopoverQuery = { __typename: 'Query', variantTypePopover?: { __typename: 'VariantTypePopover', id: number, name: string, url?: string | undefined, soid: string, variantCount: number } | undefined }; -export type VariantTypePopoverFragment = ( - { __typename: 'VariantTypePopover' } - & Pick -); +export type VariantTypePopoverFragment = { __typename: 'VariantTypePopover', id: number, name: string, url?: string | undefined, soid: string, variantCount: number }; export type VariantTypesBrowseQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - name?: Maybe; - soid?: Maybe; - sortBy?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + name?: InputMaybe; + soid?: InputMaybe; + sortBy?: InputMaybe; +}>; + + +export type VariantTypesBrowseQuery = { __typename: 'Query', variantTypes: { __typename: 'BrowseVariantTypeConnection', totalCount: number, filteredCount: number, pageInfo: { __typename: 'PageInfo', hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: string | undefined, endCursor?: string | undefined }, edges: Array<{ __typename: 'BrowseVariantTypeEdge', cursor: string, node?: { __typename: 'BrowseVariantType', id: number, name: string, soid: string, url?: string | undefined, variantCount: number, link: string } | undefined }> } }; + +export type VariantTypeBrowseTableRowFieldsFragment = { __typename: 'BrowseVariantType', id: number, name: string, soid: string, url?: string | undefined, variantCount: number, link: string }; + +export type CoordinatesCardQueryVariables = Exact<{ + variantId: Scalars['Int']; }>; -export type VariantTypesBrowseQuery = ( - { __typename: 'Query' } - & { variantTypes: ( - { __typename: 'BrowseVariantTypeConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'BrowseVariantTypeEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'BrowseVariantType' } - & VariantTypeBrowseTableRowFieldsFragment - )> } - )> } - ) } -); - -export type VariantTypeBrowseTableRowFieldsFragment = ( - { __typename: 'BrowseVariantType' } - & Pick -); +export type CoordinatesCardQuery = { __typename: 'Query', variant?: { __typename: 'Variant', id: number, name: string, referenceBuild?: ReferenceBuild | undefined, ensemblVersion?: number | undefined, referenceBases?: string | undefined, variantBases?: string | undefined, primaryCoordinates?: { __typename: 'Coordinate', representativeTranscript?: string | undefined, chromosome?: string | undefined, start?: number | undefined, stop?: number | undefined } | undefined, secondaryCoordinates?: { __typename: 'Coordinate', representativeTranscript?: string | undefined, chromosome?: string | undefined, start?: number | undefined, stop?: number | undefined } | undefined } | undefined }; + +export type CoordinatesCardFieldsFragment = { __typename: 'Variant', id: number, name: string, referenceBuild?: ReferenceBuild | undefined, ensemblVersion?: number | undefined, referenceBases?: string | undefined, variantBases?: string | undefined, primaryCoordinates?: { __typename: 'Coordinate', representativeTranscript?: string | undefined, chromosome?: string | undefined, start?: number | undefined, stop?: number | undefined } | undefined, secondaryCoordinates?: { __typename: 'Coordinate', representativeTranscript?: string | undefined, chromosome?: string | undefined, start?: number | undefined, stop?: number | undefined } | undefined }; export type VariantPopoverQueryVariables = Exact<{ variantId: Scalars['Int']; }>; -export type VariantPopoverQuery = ( - { __typename: 'Query' } - & { variant?: Maybe<( - { __typename: 'Variant' } - & VariantPopoverFieldsFragment - )> } -); - -export type VariantPopoverFieldsFragment = ( - { __typename: 'Variant' } - & Pick - & { evidenceItems: ( - { __typename: 'EvidenceItemConnection' } - & Pick - ), gene: ( - { __typename: 'Gene' } - & Pick - ), revisions: ( - { __typename: 'RevisionConnection' } - & Pick - ), comments: ( - { __typename: 'CommentConnection' } - & Pick - ), flags: ( - { __typename: 'FlagConnection' } - & Pick - ) } -); +export type VariantPopoverQuery = { __typename: 'Query', variant?: { __typename: 'Variant', id: number, name: string, description?: string | undefined, variantAliases: Array, alleleRegistryId?: string | undefined, evidenceItems: { __typename: 'EvidenceItemConnection', totalCount: number }, gene: { __typename: 'Gene', id: number, name: string, link: string }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number }, flags: { __typename: 'FlagConnection', totalCount: number } } | undefined }; + +export type VariantPopoverFieldsFragment = { __typename: 'Variant', id: number, name: string, description?: string | undefined, variantAliases: Array, alleleRegistryId?: string | undefined, evidenceItems: { __typename: 'EvidenceItemConnection', totalCount: number }, gene: { __typename: 'Gene', id: number, name: string, link: string }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number }, flags: { __typename: 'FlagConnection', totalCount: number } }; export type VariantsMenuQueryVariables = Exact<{ - geneId?: Maybe; - variantName?: Maybe; - evidenceStatusFilter?: Maybe; - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - sortBy?: Maybe; + geneId?: InputMaybe; + variantName?: InputMaybe; + evidenceStatusFilter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + sortBy?: InputMaybe; }>; -export type VariantsMenuQuery = ( - { __typename: 'Query' } - & { variants: ( - { __typename: 'VariantConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'VariantEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'Variant' } - & MenuVariantFragment - )> } - )> } - ) } -); - -export type MenuVariantFragment = ( - { __typename: 'Variant' } - & Pick -); +export type VariantsMenuQuery = { __typename: 'Query', variants: { __typename: 'VariantConnection', totalCount: number, pageInfo: { __typename: 'PageInfo', startCursor?: string | undefined, endCursor?: string | undefined, hasPreviousPage: boolean, hasNextPage: boolean }, edges: Array<{ __typename: 'VariantEdge', cursor: string, node?: { __typename: 'Variant', id: number, name: string, link: string } | undefined }> } }; + +export type MenuVariantFragment = { __typename: 'Variant', id: number, name: string, link: string }; export type BrowseVariantsQueryVariables = Exact<{ - variantName?: Maybe; - entrezSymbol?: Maybe; - diseaseName?: Maybe; - drugName?: Maybe; - variantAlias?: Maybe; - variantTypeId?: Maybe; - variantGroupId?: Maybe; - sortBy?: Maybe; - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; + variantName?: InputMaybe; + entrezSymbol?: InputMaybe; + diseaseName?: InputMaybe; + drugName?: InputMaybe; + variantAlias?: InputMaybe; + variantTypeId?: InputMaybe; + variantGroupId?: InputMaybe; + sortBy?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; }>; -export type BrowseVariantsQuery = ( - { __typename: 'Query' } - & { browseVariants: ( - { __typename: 'BrowseVariantConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'BrowseVariantEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'BrowseVariant' } - & VariantGridFieldsFragment - )> } - )> } - ) } -); - -export type VariantGridFieldsFragment = ( - { __typename: 'BrowseVariant' } - & Pick - & { diseases: Array<( - { __typename: 'Disease' } - & Pick - )>, drugs: Array<( - { __typename: 'Drug' } - & Pick - )>, aliases: Array<( - { __typename: 'VariantAlias' } - & Pick - )> } -); +export type BrowseVariantsQuery = { __typename: 'Query', browseVariants: { __typename: 'BrowseVariantConnection', totalCount: number, filteredCount: number, pageCount: number, pageInfo: { __typename: 'PageInfo', endCursor?: string | undefined, hasNextPage: boolean, startCursor?: string | undefined, hasPreviousPage: boolean }, edges: Array<{ __typename: 'BrowseVariantEdge', cursor: string, node?: { __typename: 'BrowseVariant', id: number, name: string, link: string, evidenceScore: number, evidenceItemCount: number, geneId: number, geneName: string, geneLink: string, assertionCount: number, diseases: Array<{ __typename: 'Disease', id: number, name: string, link: string }>, drugs: Array<{ __typename: 'Drug', id: number, name: string, link: string }>, aliases: Array<{ __typename: 'VariantAlias', name: string }> } | undefined }> } }; + +export type BrowseVariantsFieldsFragment = { __typename: 'BrowseVariant', id: number, name: string, link: string, evidenceScore: number, evidenceItemCount: number, geneId: number, geneName: string, geneLink: string, assertionCount: number, diseases: Array<{ __typename: 'Disease', id: number, name: string, link: string }>, drugs: Array<{ __typename: 'Drug', id: number, name: string, link: string }>, aliases: Array<{ __typename: 'VariantAlias', name: string }> }; export type ViewerBaseQueryVariables = Exact<{ [key: string]: never; }>; -export type ViewerBaseQuery = ( - { __typename: 'Query' } - & { viewer?: Maybe<( - { __typename: 'User' } - & Pick - & { organizations: Array<( - { __typename: 'Organization' } - & Pick - )>, mostRecentConflictOfInterestStatement?: Maybe<( - { __typename: 'Coi' } - & Pick - )> } - )> } -); +export type ViewerBaseQuery = { __typename: 'Query', viewer?: { __typename: 'User', id: number, username: string, role: UserRole, displayName: string, profileImagePath?: string | undefined, mostRecentOrganizationId?: number | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }>, mostRecentConflictOfInterestStatement?: { __typename: 'Coi', coiStatus: CoiStatus } | undefined } | undefined }; export type ViewerNotificationCountQueryVariables = Exact<{ [key: string]: never; }>; -export type ViewerNotificationCountQuery = ( - { __typename: 'Query' } - & { notifications: ( - { __typename: 'NotificationConnection' } - & Pick - ) } -); +export type ViewerNotificationCountQuery = { __typename: 'Query', notifications: { __typename: 'NotificationConnection', unreadCount: number } }; export type AssertionRevisableFieldsQueryVariables = Exact<{ assertionId: Scalars['Int']; }>; -export type AssertionRevisableFieldsQuery = ( - { __typename: 'Query' } - & { assertion?: Maybe<( - { __typename: 'Assertion' } - & RevisableAssertionFieldsFragment - )> } -); - -export type RevisableAssertionFieldsFragment = ( - { __typename: 'Assertion' } - & Pick - & { variant: ( - { __typename: 'Variant' } - & Pick - ), gene: ( - { __typename: 'Gene' } - & Pick - ), disease?: Maybe<( - { __typename: 'Disease' } - & Pick - )>, drugs: Array<( - { __typename: 'Drug' } - & Pick - )>, phenotypes: Array<( - { __typename: 'Phenotype' } - & Pick - )>, acmgCodes: Array<( - { __typename: 'AcmgCode' } - & Pick - )>, nccnGuideline?: Maybe<( - { __typename: 'NccnGuideline' } - & Pick - )>, evidenceItems: Array<( - { __typename: 'EvidenceItem' } - & Pick - )> } -); +export type AssertionRevisableFieldsQuery = { __typename: 'Query', assertion?: { __typename: 'Assertion', id: number, summary: string, description: string, variantOrigin: VariantOrigin, clinicalSignificance: AssertionClinicalSignificance, drugInteractionType?: DrugInteraction | undefined, assertionDirection: AssertionDirection, assertionType: AssertionType, ampLevel?: AmpLevel | undefined, nccnGuidelineVersion?: string | undefined, regulatoryApproval?: boolean | undefined, fdaCompanionTest?: boolean | undefined, variant: { __typename: 'Variant', id: number, name: string, link: string }, gene: { __typename: 'Gene', id: number, name: string, link: string }, disease?: { __typename: 'Disease', id: number, doid?: number | undefined, name: string, displayName: string, link: string } | undefined, drugs: Array<{ __typename: 'Drug', id: number, ncitId?: string | undefined, name: string, link: string }>, phenotypes: Array<{ __typename: 'Phenotype', id: number, hpoId: string, name: string }>, acmgCodes: Array<{ __typename: 'AcmgCode', id: number, code: string, description: string }>, clingenCodes: Array<{ __typename: 'ClingenCode', id: number, code: string, description: string }>, nccnGuideline?: { __typename: 'NccnGuideline', id: number, name: string } | undefined, evidenceItems: Array<{ __typename: 'EvidenceItem', id: number, name: string, link: string, status: EvidenceStatus }> } | undefined }; + +export type RevisableAssertionFieldsFragment = { __typename: 'Assertion', id: number, summary: string, description: string, variantOrigin: VariantOrigin, clinicalSignificance: AssertionClinicalSignificance, drugInteractionType?: DrugInteraction | undefined, assertionDirection: AssertionDirection, assertionType: AssertionType, ampLevel?: AmpLevel | undefined, nccnGuidelineVersion?: string | undefined, regulatoryApproval?: boolean | undefined, fdaCompanionTest?: boolean | undefined, variant: { __typename: 'Variant', id: number, name: string, link: string }, gene: { __typename: 'Gene', id: number, name: string, link: string }, disease?: { __typename: 'Disease', id: number, doid?: number | undefined, name: string, displayName: string, link: string } | undefined, drugs: Array<{ __typename: 'Drug', id: number, ncitId?: string | undefined, name: string, link: string }>, phenotypes: Array<{ __typename: 'Phenotype', id: number, hpoId: string, name: string }>, acmgCodes: Array<{ __typename: 'AcmgCode', id: number, code: string, description: string }>, clingenCodes: Array<{ __typename: 'ClingenCode', id: number, code: string, description: string }>, nccnGuideline?: { __typename: 'NccnGuideline', id: number, name: string } | undefined, evidenceItems: Array<{ __typename: 'EvidenceItem', id: number, name: string, link: string, status: EvidenceStatus }> }; export type SuggestAssertionRevisionMutationVariables = Exact<{ input: SuggestAssertionRevisionInput; }>; -export type SuggestAssertionRevisionMutation = ( - { __typename: 'Mutation' } - & { suggestAssertionRevision?: Maybe<( - { __typename: 'SuggestAssertionRevisionPayload' } - & Pick - & { assertion: ( - { __typename: 'Assertion' } - & Pick - ) } - )> } -); +export type SuggestAssertionRevisionMutation = { __typename: 'Mutation', suggestAssertionRevision?: { __typename: 'SuggestAssertionRevisionPayload', clientMutationId?: string | undefined, assertion: { __typename: 'Assertion', id: number } } | undefined }; export type SubmitAssertionMutationVariables = Exact<{ input: SubmitAssertionInput; }>; -export type SubmitAssertionMutation = ( - { __typename: 'Mutation' } - & { submitAssertion?: Maybe<( - { __typename: 'SubmitAssertionPayload' } - & Pick - & { assertion: ( - { __typename: 'Assertion' } - & Pick - ) } - )> } -); +export type SubmitAssertionMutation = { __typename: 'Mutation', submitAssertion?: { __typename: 'SubmitAssertionPayload', clientMutationId?: string | undefined, assertion: { __typename: 'Assertion', id: number } } | undefined }; export type AddCommentMutationVariables = Exact<{ input: AddCommentInput; }>; -export type AddCommentMutation = ( - { __typename: 'Mutation' } - & { addComment?: Maybe<( - { __typename: 'AddCommentPayload' } - & Pick - & { comment?: Maybe<( - { __typename: 'Comment' } - & CommentListNodeFragment - )> } - )> } -); +export type AddCommentMutation = { __typename: 'Mutation', addComment?: { __typename: 'AddCommentPayload', clientMutationId?: string | undefined, comment?: { __typename: 'Comment', id: number, title?: string | undefined, comment: string, createdAt: any, commenter: { __typename: 'User', id: number, username: string, displayName: string, name?: string | undefined, role: UserRole, profileImagePath?: string | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }> }, parsedComment: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, status?: EvidenceStatus | undefined, link: string } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> } | undefined } | undefined }; export type PreviewCommentQueryVariables = Exact<{ commentText: Scalars['String']; }>; -export type PreviewCommentQuery = ( - { __typename: 'Query' } - & { previewCommentText: Array<( - { __typename: 'CommentTagSegment' } - & PreviewComment_CommentTagSegment_Fragment - ) | ( - { __typename: 'CommentTextSegment' } - & PreviewComment_CommentTextSegment_Fragment - ) | ( - { __typename: 'User' } - & PreviewComment_User_Fragment - )> } -); - -type PreviewComment_CommentTagSegment_Fragment = ( - { __typename: 'CommentTagSegment' } - & Pick -); - -type PreviewComment_CommentTextSegment_Fragment = ( - { __typename: 'CommentTextSegment' } - & Pick -); - -type PreviewComment_User_Fragment = ( - { __typename: 'User' } - & Pick -); +export type PreviewCommentQuery = { __typename: 'Query', previewCommentText: Array<{ __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, status?: EvidenceStatus | undefined } | { __typename: 'CommentTextSegment', text: string } | { __typename: 'User', id: number, displayName: string, role: UserRole }> }; + +type PreviewComment_CommentTagSegment_Fragment = { __typename: 'CommentTagSegment', entityId: number, displayName: string, tagType: TaggableEntity, status?: EvidenceStatus | undefined }; + +type PreviewComment_CommentTextSegment_Fragment = { __typename: 'CommentTextSegment', text: string }; + +type PreviewComment_User_Fragment = { __typename: 'User', id: number, displayName: string, role: UserRole }; export type PreviewCommentFragment = PreviewComment_CommentTagSegment_Fragment | PreviewComment_CommentTextSegment_Fragment | PreviewComment_User_Fragment; @@ -6482,168 +5235,92 @@ export type UserTypeaheadQueryVariables = Exact<{ }>; -export type UserTypeaheadQuery = ( - { __typename: 'Query' } - & { userTypeahead: Array<( - { __typename: 'User' } - & Pick - )> } -); +export type UserTypeaheadQuery = { __typename: 'Query', userTypeahead: Array<{ __typename: 'User', username: string }> }; export type EntityTypeaheadQueryVariables = Exact<{ queryTerm: Scalars['String']; }>; -export type EntityTypeaheadQuery = ( - { __typename: 'Query' } - & { entityTypeahead: Array<( - { __typename: 'CommentTagSegment' } - & Pick - )> } -); +export type EntityTypeaheadQuery = { __typename: 'Query', entityTypeahead: Array<{ __typename: 'CommentTagSegment', entityId: number, tagType: TaggableEntity, displayName: string }> }; export type AcmgCodeTypeaheadQueryVariables = Exact<{ code: Scalars['String']; }>; -export type AcmgCodeTypeaheadQuery = ( - { __typename: 'Query' } - & { acmgCodesTypeahead: Array<( - { __typename: 'AcmgCode' } - & Pick - )> } -); +export type AcmgCodeTypeaheadQuery = { __typename: 'Query', acmgCodesTypeahead: Array<{ __typename: 'AcmgCode', id: number, code: string, description: string }> }; + +export type ClingenCodeTypeaheadQueryVariables = Exact<{ + code: Scalars['String']; +}>; + + +export type ClingenCodeTypeaheadQuery = { __typename: 'Query', clingenCodesTypeahead: Array<{ __typename: 'ClingenCode', id: number, code: string, description: string }> }; export type DiseaseTypeaheadQueryVariables = Exact<{ name: Scalars['String']; }>; -export type DiseaseTypeaheadQuery = ( - { __typename: 'Query' } - & { diseaseTypeahead: Array<( - { __typename: 'Disease' } - & Pick - )> } -); +export type DiseaseTypeaheadQuery = { __typename: 'Query', diseaseTypeahead: Array<{ __typename: 'Disease', id: number, name: string, displayName: string, doid?: number | undefined, diseaseAliases: Array }> }; export type AddDiseaseMutationVariables = Exact<{ name: Scalars['String']; - doid?: Maybe; + doid?: InputMaybe; }>; -export type AddDiseaseMutation = ( - { __typename: 'Mutation' } - & { addDisease?: Maybe<( - { __typename: 'AddDiseasePayload' } - & AddDiseaseFieldsFragment - )> } -); +export type AddDiseaseMutation = { __typename: 'Mutation', addDisease?: { __typename: 'AddDiseasePayload', new: boolean, disease: { __typename: 'Disease', id: number, name: string, displayName: string } } | undefined }; -export type AddDiseaseFieldsFragment = ( - { __typename: 'AddDiseasePayload' } - & Pick - & { disease: ( - { __typename: 'Disease' } - & Pick - ) } -); +export type AddDiseaseFieldsFragment = { __typename: 'AddDiseasePayload', new: boolean, disease: { __typename: 'Disease', id: number, name: string, displayName: string } }; export type DrugTypeaheadQueryVariables = Exact<{ name: Scalars['String']; }>; -export type DrugTypeaheadQuery = ( - { __typename: 'Query' } - & { drugTypeahead: Array<( - { __typename: 'Drug' } - & Pick - )> } -); +export type DrugTypeaheadQuery = { __typename: 'Query', drugTypeahead: Array<{ __typename: 'Drug', id: number, name: string, ncitId?: string | undefined, drugAliases: Array }> }; export type AddDrugMutationVariables = Exact<{ name: Scalars['String']; - ncitId?: Maybe; + ncitId?: InputMaybe; }>; -export type AddDrugMutation = ( - { __typename: 'Mutation' } - & { addDrug?: Maybe<( - { __typename: 'AddDrugPayload' } - & AddDrugFieldsFragment - )> } -); +export type AddDrugMutation = { __typename: 'Mutation', addDrug?: { __typename: 'AddDrugPayload', new: boolean, drug: { __typename: 'Drug', id: number, ncitId?: string | undefined, name: string } } | undefined }; -export type AddDrugFieldsFragment = ( - { __typename: 'AddDrugPayload' } - & Pick - & { drug: ( - { __typename: 'Drug' } - & Pick - ) } -); +export type AddDrugFieldsFragment = { __typename: 'AddDrugPayload', new: boolean, drug: { __typename: 'Drug', id: number, ncitId?: string | undefined, name: string } }; export type EvidenceTypeaheadQueryVariables = Exact<{ id: Scalars['Int']; }>; -export type EvidenceTypeaheadQuery = ( - { __typename: 'Query' } - & { evidenceItem?: Maybe<( - { __typename: 'EvidenceItem' } - & Pick - )> } -); +export type EvidenceTypeaheadQuery = { __typename: 'Query', evidenceItem?: { __typename: 'EvidenceItem', id: number, status: EvidenceStatus, name: string } | undefined }; export type GeneTypeaheadQueryVariables = Exact<{ entrezSymbol: Scalars['String']; }>; -export type GeneTypeaheadQuery = ( - { __typename: 'Query' } - & { geneTypeahead: Array<( - { __typename: 'Gene' } - & GeneTypeaheadFieldsFragment - )> } -); +export type GeneTypeaheadQuery = { __typename: 'Query', geneTypeahead: Array<{ __typename: 'Gene', id: number, name: string, geneAliases: Array, entrezId: number }> }; -export type GeneTypeaheadFieldsFragment = ( - { __typename: 'Gene' } - & Pick -); +export type GeneTypeaheadFieldsFragment = { __typename: 'Gene', id: number, name: string, geneAliases: Array, entrezId: number }; export type NccnGuidelineTypeaheadQueryVariables = Exact<{ name: Scalars['String']; }>; -export type NccnGuidelineTypeaheadQuery = ( - { __typename: 'Query' } - & { nccnGuidelinesTypeahead: Array<( - { __typename: 'NccnGuideline' } - & Pick - )> } -); +export type NccnGuidelineTypeaheadQuery = { __typename: 'Query', nccnGuidelinesTypeahead: Array<{ __typename: 'NccnGuideline', id: number, name: string }> }; export type PhenotypeTypeaheadQueryVariables = Exact<{ name: Scalars['String']; }>; -export type PhenotypeTypeaheadQuery = ( - { __typename: 'Query' } - & { phenotypeTypeahead: Array<( - { __typename: 'Phenotype' } - & Pick - )> } -); +export type PhenotypeTypeaheadQuery = { __typename: 'Query', phenotypeTypeahead: Array<{ __typename: 'Phenotype', hpoId: string, id: number, name: string }> }; export type CitationTypeaheadQueryVariables = Exact<{ partialCitationId: Scalars['Int']; @@ -6651,18 +5328,9 @@ export type CitationTypeaheadQueryVariables = Exact<{ }>; -export type CitationTypeaheadQuery = ( - { __typename: 'Query' } - & { sourceTypeahead: Array<( - { __typename: 'Source' } - & SourceTypeaheadResultFragment - )> } -); +export type CitationTypeaheadQuery = { __typename: 'Query', sourceTypeahead: Array<{ __typename: 'Source', id: number, name: string, citation?: string | undefined, citationId: number, sourceType: SourceSource }> }; -export type SourceTypeaheadResultFragment = ( - { __typename: 'Source' } - & Pick -); +export type SourceTypeaheadResultFragment = { __typename: 'Source', id: number, name: string, citation?: string | undefined, citationId: number, sourceType: SourceSource }; export type CitationExistenceCheckQueryVariables = Exact<{ sourceType: SourceSource; @@ -6670,26 +5338,14 @@ export type CitationExistenceCheckQueryVariables = Exact<{ }>; -export type CitationExistenceCheckQuery = ( - { __typename: 'Query' } - & Pick -); +export type CitationExistenceCheckQuery = { __typename: 'Query', remoteCitation?: string | undefined }; export type CreateSourceStubMutationVariables = Exact<{ input: AddRemoteCitationInput; }>; -export type CreateSourceStubMutation = ( - { __typename: 'Mutation' } - & { addRemoteCitation?: Maybe<( - { __typename: 'AddRemoteCitationPayload' } - & { newSource: ( - { __typename: 'SourceStub' } - & Pick - ) } - )> } -); +export type CreateSourceStubMutation = { __typename: 'Mutation', addRemoteCitation?: { __typename: 'AddRemoteCitationPayload', newSource: { __typename: 'SourceStub', id: number, citationId: number, sourceType: SourceSource } } | undefined }; export type CheckRemoteCitationQueryVariables = Exact<{ sourceType: SourceSource; @@ -6697,31 +5353,16 @@ export type CheckRemoteCitationQueryVariables = Exact<{ }>; -export type CheckRemoteCitationQuery = ( - { __typename: 'Query' } - & Pick -); +export type CheckRemoteCitationQuery = { __typename: 'Query', remoteCitation?: string | undefined }; export type AddRemoteCitationMutationVariables = Exact<{ input: AddRemoteCitationInput; }>; -export type AddRemoteCitationMutation = ( - { __typename: 'Mutation' } - & { addRemoteCitation?: Maybe<( - { __typename: 'AddRemoteCitationPayload' } - & { newSource: ( - { __typename: 'SourceStub' } - & SourceStubFieldsFragment - ) } - )> } -); +export type AddRemoteCitationMutation = { __typename: 'Mutation', addRemoteCitation?: { __typename: 'AddRemoteCitationPayload', newSource: { __typename: 'SourceStub', id: number, citationId: number, sourceType: SourceSource } } | undefined }; -export type SourceStubFieldsFragment = ( - { __typename: 'SourceStub' } - & Pick -); +export type SourceStubFieldsFragment = { __typename: 'SourceStub', id: number, citationId: number, sourceType: SourceSource }; export type SourceTypeaheadQueryVariables = Exact<{ partialCitationId: Scalars['Int']; @@ -6729,40 +5370,19 @@ export type SourceTypeaheadQueryVariables = Exact<{ }>; -export type SourceTypeaheadQuery = ( - { __typename: 'Query' } - & { sourceTypeahead: Array<( - { __typename: 'Source' } - & SourceTypeaheadResultFragment - )> } -); +export type SourceTypeaheadQuery = { __typename: 'Query', sourceTypeahead: Array<{ __typename: 'Source', id: number, name: string, citation?: string | undefined, citationId: number, sourceType: SourceSource }> }; -export type SourceTypeaheadFieldsFragment = ( - { __typename: 'Source' } - & Pick -); +export type SourceTypeaheadFieldsFragment = { __typename: 'Source', id: number, name: string, citation?: string | undefined, citationId: number, sourceType: SourceSource }; export type VariantTypeaheadQueryVariables = Exact<{ name: Scalars['String']; - geneId?: Maybe; + geneId?: InputMaybe; }>; -export type VariantTypeaheadQuery = ( - { __typename: 'Query' } - & { variants: ( - { __typename: 'VariantConnection' } - & { nodes: Array<( - { __typename: 'Variant' } - & VariantTypeaheadFieldsFragment - )> } - ) } -); +export type VariantTypeaheadQuery = { __typename: 'Query', variants: { __typename: 'VariantConnection', nodes: Array<{ __typename: 'Variant', id: number, name: string, variantAliases: Array }> } }; -export type VariantTypeaheadFieldsFragment = ( - { __typename: 'Variant' } - & Pick -); +export type VariantTypeaheadFieldsFragment = { __typename: 'Variant', id: number, name: string, variantAliases: Array }; export type AddVariantMutationVariables = Exact<{ name: Scalars['String']; @@ -6770,1528 +5390,450 @@ export type AddVariantMutationVariables = Exact<{ }>; -export type AddVariantMutation = ( - { __typename: 'Mutation' } - & { addVariant?: Maybe<( - { __typename: 'AddVariantPayload' } - & AddVariantFieldsFragment - )> } -); +export type AddVariantMutation = { __typename: 'Mutation', addVariant?: { __typename: 'AddVariantPayload', clientMutationId?: string | undefined, new: boolean, variant: { __typename: 'Variant', id: number, name: string } } | undefined }; -export type AddVariantFieldsFragment = ( - { __typename: 'AddVariantPayload' } - & Pick - & { variant: ( - { __typename: 'Variant' } - & Pick - ) } -); +export type AddVariantFieldsFragment = { __typename: 'AddVariantPayload', clientMutationId?: string | undefined, new: boolean, variant: { __typename: 'Variant', id: number, name: string } }; export type VariantSelectQueryVariables = Exact<{ name: Scalars['String']; - geneId?: Maybe; + geneId?: InputMaybe; }>; -export type VariantSelectQuery = ( - { __typename: 'Query' } - & { variants: ( - { __typename: 'VariantConnection' } - & { nodes: Array<( - { __typename: 'Variant' } - & VariantTypeaheadFieldsFragment - )> } - ) } -); +export type VariantSelectQuery = { __typename: 'Query', variants: { __typename: 'VariantConnection', nodes: Array<{ __typename: 'Variant', id: number, name: string, variantAliases: Array }> } }; -export type VariantSelectFieldsFragment = ( - { __typename: 'Variant' } - & Pick -); +export type VariantSelectFieldsFragment = { __typename: 'Variant', id: number, name: string }; export type VariantTypeTypeaheadQueryVariables = Exact<{ name: Scalars['String']; }>; -export type VariantTypeTypeaheadQuery = ( - { __typename: 'Query' } - & { variantTypeTypeahead: Array<( - { __typename: 'VariantType' } - & Pick - )> } -); +export type VariantTypeTypeaheadQuery = { __typename: 'Query', variantTypeTypeahead: Array<{ __typename: 'VariantType', name: string, soid: string, id: number }> }; export type EvidenceItemRevisableFieldsQueryVariables = Exact<{ evidenceId: Scalars['Int']; }>; -export type EvidenceItemRevisableFieldsQuery = ( - { __typename: 'Query' } - & { evidenceItem?: Maybe<( - { __typename: 'EvidenceItem' } - & RevisableEvidenceFieldsFragment - )> } -); - -export type RevisableEvidenceFieldsFragment = ( - { __typename: 'EvidenceItem' } - & Pick - & { gene: ( - { __typename: 'Gene' } - & Pick - ), variant: ( - { __typename: 'Variant' } - & Pick - ), disease?: Maybe<( - { __typename: 'Disease' } - & Pick - )>, drugs: Array<( - { __typename: 'Drug' } - & Pick - )>, phenotypes: Array<( - { __typename: 'Phenotype' } - & Pick - )>, source: ( - { __typename: 'Source' } - & Pick - ) } -); +export type EvidenceItemRevisableFieldsQuery = { __typename: 'Query', evidenceItem?: { __typename: 'EvidenceItem', id: number, variantOrigin: VariantOrigin, description: string, clinicalSignificance: EvidenceClinicalSignificance, drugInteractionType?: DrugInteraction | undefined, evidenceDirection: EvidenceDirection, evidenceLevel: EvidenceLevel, evidenceType: EvidenceType, evidenceRating?: number | undefined, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string }, disease?: { __typename: 'Disease', id: number, doid?: number | undefined, name: string, displayName: string } | undefined, drugs: Array<{ __typename: 'Drug', id: number, ncitId?: string | undefined, name: string }>, phenotypes: Array<{ __typename: 'Phenotype', id: number, hpoId: string, name: string }>, source: { __typename: 'Source', id: number, sourceType: SourceSource, citationId: number, citation?: string | undefined } } | undefined }; + +export type RevisableEvidenceFieldsFragment = { __typename: 'EvidenceItem', id: number, variantOrigin: VariantOrigin, description: string, clinicalSignificance: EvidenceClinicalSignificance, drugInteractionType?: DrugInteraction | undefined, evidenceDirection: EvidenceDirection, evidenceLevel: EvidenceLevel, evidenceType: EvidenceType, evidenceRating?: number | undefined, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string }, disease?: { __typename: 'Disease', id: number, doid?: number | undefined, name: string, displayName: string } | undefined, drugs: Array<{ __typename: 'Drug', id: number, ncitId?: string | undefined, name: string }>, phenotypes: Array<{ __typename: 'Phenotype', id: number, hpoId: string, name: string }>, source: { __typename: 'Source', id: number, sourceType: SourceSource, citationId: number, citation?: string | undefined } }; export type SuggestEvidenceItemRevisionMutationVariables = Exact<{ input: SuggestEvidenceItemRevisionInput; }>; -export type SuggestEvidenceItemRevisionMutation = ( - { __typename: 'Mutation' } - & { suggestEvidenceItemRevision?: Maybe<( - { __typename: 'SuggestEvidenceItemRevisionPayload' } - & Pick - & { evidenceItem: ( - { __typename: 'EvidenceItem' } - & Pick - ) } - )> } -); +export type SuggestEvidenceItemRevisionMutation = { __typename: 'Mutation', suggestEvidenceItemRevision?: { __typename: 'SuggestEvidenceItemRevisionPayload', clientMutationId?: string | undefined, evidenceItem: { __typename: 'EvidenceItem', id: number } } | undefined }; export type EvidenceFieldsFromSourceSuggestionQueryVariables = Exact<{ - sourceId?: Maybe; - geneId?: Maybe; - variantId?: Maybe; - diseaseId?: Maybe; + sourceId?: InputMaybe; + geneId?: InputMaybe; + variantId?: InputMaybe; + diseaseId?: InputMaybe; }>; -export type EvidenceFieldsFromSourceSuggestionQuery = ( - { __typename: 'Query' } - & { sourceSuggestionValues: ( - { __typename: 'SourceSuggestionValues' } - & { gene?: Maybe<( - { __typename: 'Gene' } - & Pick - )>, variant?: Maybe<( - { __typename: 'Variant' } - & Pick - )>, disease?: Maybe<( - { __typename: 'Disease' } - & Pick - )>, source?: Maybe<( - { __typename: 'Source' } - & Pick - )> } - ) } -); +export type EvidenceFieldsFromSourceSuggestionQuery = { __typename: 'Query', sourceSuggestionValues: { __typename: 'SourceSuggestionValues', gene?: { __typename: 'Gene', id: number, name: string, link: string } | undefined, variant?: { __typename: 'Variant', id: number, name: string, link: string } | undefined, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, source?: { __typename: 'Source', id: number, sourceType: SourceSource, citationId: number, citation?: string | undefined, link: string } | undefined } }; export type EvidenceSubmittableFieldsQueryVariables = Exact<{ evidenceId: Scalars['Int']; }>; -export type EvidenceSubmittableFieldsQuery = ( - { __typename: 'Query' } - & { evidenceItem?: Maybe<( - { __typename: 'EvidenceItem' } - & SubmittableEvidenceFieldsFragment - )> } -); - -export type SubmittableEvidenceFieldsFragment = ( - { __typename: 'EvidenceItem' } - & Pick - & { gene: ( - { __typename: 'Gene' } - & Pick - ), variant: ( - { __typename: 'Variant' } - & Pick - ), source: ( - { __typename: 'Source' } - & Pick - ), phenotypes: Array<( - { __typename: 'Phenotype' } - & Pick - )>, drugs: Array<( - { __typename: 'Drug' } - & Pick - )>, disease?: Maybe<( - { __typename: 'Disease' } - & Pick - )> } -); +export type EvidenceSubmittableFieldsQuery = { __typename: 'Query', evidenceItem?: { __typename: 'EvidenceItem', id: number, description: string, variantOrigin: VariantOrigin, evidenceType: EvidenceType, clinicalSignificance: EvidenceClinicalSignificance, evidenceLevel: EvidenceLevel, evidenceDirection: EvidenceDirection, evidenceRating?: number | undefined, drugInteractionType?: DrugInteraction | undefined, gene: { __typename: 'Gene', id: number, name: string }, variant: { __typename: 'Variant', id: number, name: string }, source: { __typename: 'Source', id: number, citation?: string | undefined, sourceType: SourceSource }, phenotypes: Array<{ __typename: 'Phenotype', id: number, name: string }>, drugs: Array<{ __typename: 'Drug', id: number, name: string }>, disease?: { __typename: 'Disease', id: number, name: string } | undefined } | undefined }; + +export type SubmittableEvidenceFieldsFragment = { __typename: 'EvidenceItem', id: number, description: string, variantOrigin: VariantOrigin, evidenceType: EvidenceType, clinicalSignificance: EvidenceClinicalSignificance, evidenceLevel: EvidenceLevel, evidenceDirection: EvidenceDirection, evidenceRating?: number | undefined, drugInteractionType?: DrugInteraction | undefined, gene: { __typename: 'Gene', id: number, name: string }, variant: { __typename: 'Variant', id: number, name: string }, source: { __typename: 'Source', id: number, citation?: string | undefined, sourceType: SourceSource }, phenotypes: Array<{ __typename: 'Phenotype', id: number, name: string }>, drugs: Array<{ __typename: 'Drug', id: number, name: string }>, disease?: { __typename: 'Disease', id: number, name: string } | undefined }; export type SubmitEvidenceItemMutationVariables = Exact<{ input: SubmitEvidenceItemInput; }>; -export type SubmitEvidenceItemMutation = ( - { __typename: 'Mutation' } - & { submitEvidence?: Maybe<( - { __typename: 'SubmitEvidenceItemPayload' } - & Pick - & { evidenceItem: ( - { __typename: 'EvidenceItem' } - & Pick - ) } - )> } -); +export type SubmitEvidenceItemMutation = { __typename: 'Mutation', submitEvidence?: { __typename: 'SubmitEvidenceItemPayload', clientMutationId?: string | undefined, evidenceItem: { __typename: 'EvidenceItem', id: number } } | undefined }; export type FlagEntityMutationVariables = Exact<{ input: FlagEntityInput; }>; -export type FlagEntityMutation = ( - { __typename: 'Mutation' } - & { flagEntity?: Maybe<( - { __typename: 'FlagEntityPayload' } - & { flag?: Maybe<( - { __typename: 'Flag' } - & Pick - )> } - )> } -); +export type FlagEntityMutation = { __typename: 'Mutation', flagEntity?: { __typename: 'FlagEntityPayload', flag?: { __typename: 'Flag', id: number } | undefined } | undefined }; export type ResolveFlagMutationVariables = Exact<{ input: ResolveFlagInput; }>; -export type ResolveFlagMutation = ( - { __typename: 'Mutation' } - & { resolveFlag?: Maybe<( - { __typename: 'ResolveFlagPayload' } - & { flag?: Maybe<( - { __typename: 'Flag' } - & Pick - )> } - )> } -); +export type ResolveFlagMutation = { __typename: 'Mutation', resolveFlag?: { __typename: 'ResolveFlagPayload', flag?: { __typename: 'Flag', id: number } | undefined } | undefined }; export type GeneRevisableFieldsQueryVariables = Exact<{ geneId: Scalars['Int']; }>; -export type GeneRevisableFieldsQuery = ( - { __typename: 'Query' } - & { gene?: Maybe<( - { __typename: 'Gene' } - & RevisableGeneFieldsFragment - )> } -); +export type GeneRevisableFieldsQuery = { __typename: 'Query', gene?: { __typename: 'Gene', id: number, description: string, sources: Array<{ __typename: 'Source', id: number, sourceType: SourceSource, citation?: string | undefined, citationId: number }> } | undefined }; -export type RevisableGeneFieldsFragment = ( - { __typename: 'Gene' } - & Pick - & { sources: Array<( - { __typename: 'Source' } - & Pick - )> } -); +export type RevisableGeneFieldsFragment = { __typename: 'Gene', id: number, description: string, sources: Array<{ __typename: 'Source', id: number, sourceType: SourceSource, citation?: string | undefined, citationId: number }> }; export type SuggestGeneRevisionMutationVariables = Exact<{ input: SuggestGeneRevisionInput; }>; -export type SuggestGeneRevisionMutation = ( - { __typename: 'Mutation' } - & { suggestGeneRevision?: Maybe<( - { __typename: 'SuggestGeneRevisionPayload' } - & Pick - & { gene: ( - { __typename: 'Gene' } - & Pick - & { revisions: ( - { __typename: 'RevisionConnection' } - & Pick - & { edges: Array<( - { __typename: 'RevisionEdge' } - & { node?: Maybe<( - { __typename: 'Revision' } - & Pick - & { linkoutData: ( - { __typename: 'LinkoutData' } - & Pick - & { diffValue: ( - { __typename: 'ObjectFieldDiff' } - & { addedObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )>, removedObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )>, keptObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )> } - ) | ( - { __typename: 'ScalarFieldDiff' } - & Pick - ) } - ), revisor?: Maybe<( - { __typename: 'User' } - & Pick - )> } - )> } - )> } - ) } - ), results: Array<( - { __typename: 'RevisionResult' } - & Pick - )> } - )> } -); +export type SuggestGeneRevisionMutation = { __typename: 'Mutation', suggestGeneRevision?: { __typename: 'SuggestGeneRevisionPayload', clientMutationId?: string | undefined, gene: { __typename: 'Gene', id: number, revisions: { __typename: 'RevisionConnection', totalCount: number, edges: Array<{ __typename: 'RevisionEdge', node?: { __typename: 'Revision', id: number, revisionsetId: string, createdAt: any, fieldName: string, currentValue?: any | undefined, suggestedValue?: any | undefined, status: RevisionStatus, linkoutData: { __typename: 'LinkoutData', name: string, diffValue: { __typename: 'ObjectFieldDiff', addedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string }>, removedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string }>, keptObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string }> } | { __typename: 'ScalarFieldDiff', left: string, right: string } }, revisor?: { __typename: 'User', id: number, name?: string | undefined } | undefined } | undefined }> } }, results: Array<{ __typename: 'RevisionResult', id: number, fieldName: string }> } | undefined }; export type SuggestSourceMutationVariables = Exact<{ input: SuggestSourceInput; }>; -export type SuggestSourceMutation = ( - { __typename: 'Mutation' } - & { suggestSource?: Maybe<( - { __typename: 'SuggestSourcePayload' } - & Pick - & { sourceSuggestion: ( - { __typename: 'SourceSuggestion' } - & Pick - ) } - )> } -); +export type SuggestSourceMutation = { __typename: 'Mutation', suggestSource?: { __typename: 'SuggestSourcePayload', clientMutationId?: string | undefined, sourceSuggestion: { __typename: 'SourceSuggestion', id: number } } | undefined }; export type UpdateSourceSuggestionMutationVariables = Exact<{ input: UpdateSourceSuggestionStatusInput; }>; -export type UpdateSourceSuggestionMutation = ( - { __typename: 'Mutation' } - & { updateSourceSuggestionStatus?: Maybe<( - { __typename: 'UpdateSourceSuggestionStatusPayload' } - & { sourceSuggestion: ( - { __typename: 'SourceSuggestion' } - & Pick - ) } - )> } -); +export type UpdateSourceSuggestionMutation = { __typename: 'Mutation', updateSourceSuggestionStatus?: { __typename: 'UpdateSourceSuggestionStatusPayload', sourceSuggestion: { __typename: 'SourceSuggestion', id: number, status: SourceSuggestionStatus } } | undefined }; export type UpdateCoiMutationVariables = Exact<{ input: UpdateCoiInput; }>; -export type UpdateCoiMutation = ( - { __typename: 'Mutation' } - & { updateCoi?: Maybe<( - { __typename: 'UpdateCoiPayload' } - & { coiStatement: ( - { __typename: 'Coi' } - & Pick - ) } - )> } -); +export type UpdateCoiMutation = { __typename: 'Mutation', updateCoi?: { __typename: 'UpdateCoiPayload', coiStatement: { __typename: 'Coi', coiPresent: boolean, coiStatus: CoiStatus, createdAt?: any | undefined, id: number } } | undefined }; export type UpdateUserProfileMutationVariables = Exact<{ input: EditUserInput; }>; -export type UpdateUserProfileMutation = ( - { __typename: 'Mutation' } - & { editUser?: Maybe<( - { __typename: 'EditUserPayload' } - & { user: ( - { __typename: 'User' } - & Pick - ) } - )> } -); +export type UpdateUserProfileMutation = { __typename: 'Mutation', editUser?: { __typename: 'EditUserPayload', user: { __typename: 'User', id: number } } | undefined }; export type CountriesQueryVariables = Exact<{ [key: string]: never; }>; -export type CountriesQuery = ( - { __typename: 'Query' } - & { countries: Array<( - { __typename: 'Country' } - & Pick - )> } -); +export type CountriesQuery = { __typename: 'Query', countries: Array<{ __typename: 'Country', id: number, name: string }> }; export type SuggestVariantGroupRevisionMutationVariables = Exact<{ input: SuggestVariantGroupRevisionInput; }>; -export type SuggestVariantGroupRevisionMutation = ( - { __typename: 'Mutation' } - & { suggestVariantGroupRevision?: Maybe<( - { __typename: 'SuggestVariantGroupRevisionPayload' } - & Pick - & { variantGroup: ( - { __typename: 'VariantGroup' } - & Pick - ), results: Array<( - { __typename: 'RevisionResult' } - & Pick - )> } - )> } -); +export type SuggestVariantGroupRevisionMutation = { __typename: 'Mutation', suggestVariantGroupRevision?: { __typename: 'SuggestVariantGroupRevisionPayload', clientMutationId?: string | undefined, variantGroup: { __typename: 'VariantGroup', id: number }, results: Array<{ __typename: 'RevisionResult', id: number, fieldName: string }> } | undefined }; export type VariantGroupSubmittableFieldsQueryVariables = Exact<{ variantGroupId: Scalars['Int']; }>; -export type VariantGroupSubmittableFieldsQuery = ( - { __typename: 'Query' } - & { variantGroup?: Maybe<( - { __typename: 'VariantGroup' } - & SubmittableVariantGroupFieldsFragment - )> } -); - -export type SubmittableVariantGroupFieldsFragment = ( - { __typename: 'VariantGroup' } - & Pick - & { variants: ( - { __typename: 'VariantConnection' } - & { nodes: Array<( - { __typename: 'Variant' } - & Pick - )> } - ), sources: Array<( - { __typename: 'Source' } - & Pick - )> } -); +export type VariantGroupSubmittableFieldsQuery = { __typename: 'Query', variantGroup?: { __typename: 'VariantGroup', id: number, name: string, description: string, variants: { __typename: 'VariantConnection', nodes: Array<{ __typename: 'Variant', id: number, name: string, link: string }> }, sources: Array<{ __typename: 'Source', id: number, link: string, citation?: string | undefined, sourceType: SourceSource }> } | undefined }; + +export type SubmittableVariantGroupFieldsFragment = { __typename: 'VariantGroup', id: number, name: string, description: string, variants: { __typename: 'VariantConnection', nodes: Array<{ __typename: 'Variant', id: number, name: string, link: string }> }, sources: Array<{ __typename: 'Source', id: number, link: string, citation?: string | undefined, sourceType: SourceSource }> }; export type SubmitVariantGroupMutationVariables = Exact<{ input: SubmitVariantGroupInput; }>; -export type SubmitVariantGroupMutation = ( - { __typename: 'Mutation' } - & { submitVariantGroup?: Maybe<( - { __typename: 'SubmitVariantGroupPayload' } - & Pick - & { variantGroup: ( - { __typename: 'VariantGroup' } - & Pick - ) } - )> } -); +export type SubmitVariantGroupMutation = { __typename: 'Mutation', submitVariantGroup?: { __typename: 'SubmitVariantGroupPayload', clientMutationId?: string | undefined, variantGroup: { __typename: 'VariantGroup', id: number } } | undefined }; export type VariantRevisableFieldsQueryVariables = Exact<{ variantId: Scalars['Int']; }>; -export type VariantRevisableFieldsQuery = ( - { __typename: 'Query' } - & { variant?: Maybe<( - { __typename: 'Variant' } - & RevisableVariantFieldsFragment - )> } -); - -export type RevisableVariantFieldsFragment = ( - { __typename: 'Variant' } - & Pick - & { sources: Array<( - { __typename: 'Source' } - & Pick - )>, gene: ( - { __typename: 'Gene' } - & Pick - ), variantTypes: Array<( - { __typename: 'VariantType' } - & Pick - )>, primaryCoordinates?: Maybe<( - { __typename: 'Coordinate' } - & CoordinateFieldsFragment - )>, secondaryCoordinates?: Maybe<( - { __typename: 'Coordinate' } - & CoordinateFieldsFragment - )> } -); - -export type CoordinateFieldsFragment = ( - { __typename: 'Coordinate' } - & Pick -); +export type VariantRevisableFieldsQuery = { __typename: 'Query', variant?: { __typename: 'Variant', id: number, name: string, description?: string | undefined, variantAliases: Array, alleleRegistryId?: string | undefined, clinvarIds: Array, ensemblVersion?: number | undefined, hgvsDescriptions: Array, referenceBuild?: ReferenceBuild | undefined, referenceBases?: string | undefined, variantBases?: string | undefined, sources: Array<{ __typename: 'Source', id: number, sourceType: SourceSource, citation?: string | undefined, citationId: number }>, gene: { __typename: 'Gene', id: number, name: string }, variantTypes: Array<{ __typename: 'VariantType', id: number, name: string, soid: string }>, primaryCoordinates?: { __typename: 'Coordinate', chromosome?: string | undefined, representativeTranscript?: string | undefined, start?: number | undefined, stop?: number | undefined } | undefined, secondaryCoordinates?: { __typename: 'Coordinate', chromosome?: string | undefined, representativeTranscript?: string | undefined, start?: number | undefined, stop?: number | undefined } | undefined } | undefined }; + +export type RevisableVariantFieldsFragment = { __typename: 'Variant', id: number, name: string, description?: string | undefined, variantAliases: Array, alleleRegistryId?: string | undefined, clinvarIds: Array, ensemblVersion?: number | undefined, hgvsDescriptions: Array, referenceBuild?: ReferenceBuild | undefined, referenceBases?: string | undefined, variantBases?: string | undefined, sources: Array<{ __typename: 'Source', id: number, sourceType: SourceSource, citation?: string | undefined, citationId: number }>, gene: { __typename: 'Gene', id: number, name: string }, variantTypes: Array<{ __typename: 'VariantType', id: number, name: string, soid: string }>, primaryCoordinates?: { __typename: 'Coordinate', chromosome?: string | undefined, representativeTranscript?: string | undefined, start?: number | undefined, stop?: number | undefined } | undefined, secondaryCoordinates?: { __typename: 'Coordinate', chromosome?: string | undefined, representativeTranscript?: string | undefined, start?: number | undefined, stop?: number | undefined } | undefined }; + +export type CoordinateFieldsFragment = { __typename: 'Coordinate', chromosome?: string | undefined, representativeTranscript?: string | undefined, start?: number | undefined, stop?: number | undefined }; export type SuggestVariantRevisionMutationVariables = Exact<{ input: SuggestVariantRevisionInput; }>; -export type SuggestVariantRevisionMutation = ( - { __typename: 'Mutation' } - & { suggestVariantRevision?: Maybe<( - { __typename: 'SuggestVariantRevisionPayload' } - & Pick - & { variant: ( - { __typename: 'Variant' } - & Pick - & { revisions: ( - { __typename: 'RevisionConnection' } - & Pick - & { edges: Array<( - { __typename: 'RevisionEdge' } - & { node?: Maybe<( - { __typename: 'Revision' } - & Pick - & { linkoutData: ( - { __typename: 'LinkoutData' } - & Pick - & { diffValue: ( - { __typename: 'ObjectFieldDiff' } - & { addedObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )>, removedObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )>, keptObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )> } - ) | ( - { __typename: 'ScalarFieldDiff' } - & Pick - ) } - ), revisor?: Maybe<( - { __typename: 'User' } - & Pick - )> } - )> } - )> } - ) } - ), results: Array<( - { __typename: 'RevisionResult' } - & Pick - )> } - )> } -); +export type SuggestVariantRevisionMutation = { __typename: 'Mutation', suggestVariantRevision?: { __typename: 'SuggestVariantRevisionPayload', clientMutationId?: string | undefined, variant: { __typename: 'Variant', id: number, revisions: { __typename: 'RevisionConnection', totalCount: number, edges: Array<{ __typename: 'RevisionEdge', node?: { __typename: 'Revision', id: number, revisionsetId: string, createdAt: any, fieldName: string, currentValue?: any | undefined, suggestedValue?: any | undefined, status: RevisionStatus, linkoutData: { __typename: 'LinkoutData', name: string, diffValue: { __typename: 'ObjectFieldDiff', addedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string }>, removedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string }>, keptObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string }> } | { __typename: 'ScalarFieldDiff', left: string, right: string } }, revisor?: { __typename: 'User', id: number, name?: string | undefined } | undefined } | undefined }> } }, results: Array<{ __typename: 'RevisionResult', id: number, fieldName: string }> } | undefined }; export type AssertionDetailQueryVariables = Exact<{ assertionId: Scalars['Int']; }>; -export type AssertionDetailQuery = ( - { __typename: 'Query' } - & { assertion?: Maybe<( - { __typename: 'Assertion' } - & AssertionDetailFieldsFragment - )> } -); - -export type AssertionDetailFieldsFragment = ( - { __typename: 'Assertion' } - & Pick - & { submissionEvent: ( - { __typename: 'Event' } - & { originatingUser: ( - { __typename: 'User' } - & Pick - ) } - ), gene: ( - { __typename: 'Gene' } - & Pick - ), variant: ( - { __typename: 'Variant' } - & Pick - ), flags: ( - { __typename: 'FlagConnection' } - & Pick - ), revisions: ( - { __typename: 'RevisionConnection' } - & Pick - ), comments: ( - { __typename: 'CommentConnection' } - & Pick - ) } -); +export type AssertionDetailQuery = { __typename: 'Query', assertion?: { __typename: 'Assertion', id: number, name: string, status: EvidenceStatus, submissionEvent: { __typename: 'Event', originatingUser: { __typename: 'User', id: number } }, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string }, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } } | undefined }; + +export type AssertionDetailFieldsFragment = { __typename: 'Assertion', id: number, name: string, status: EvidenceStatus, submissionEvent: { __typename: 'Event', originatingUser: { __typename: 'User', id: number } }, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string }, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } }; export type AssertionSummaryQueryVariables = Exact<{ assertionId: Scalars['Int']; }>; -export type AssertionSummaryQuery = ( - { __typename: 'Query' } - & { assertion?: Maybe<( - { __typename: 'Assertion' } - & AssertionSummaryFieldsFragment - )> } -); - -export type AssertionSummaryFieldsFragment = ( - { __typename: 'Assertion' } - & Pick - & { disease?: Maybe<( - { __typename: 'Disease' } - & Pick - )>, gene: ( - { __typename: 'Gene' } - & Pick - ), variant: ( - { __typename: 'Variant' } - & Pick - ), drugs: Array<( - { __typename: 'Drug' } - & Pick - )>, phenotypes: Array<( - { __typename: 'Phenotype' } - & Pick - )>, acmgCodes: Array<( - { __typename: 'AcmgCode' } - & Pick - )>, nccnGuideline?: Maybe<( - { __typename: 'NccnGuideline' } - & Pick - )>, flags: ( - { __typename: 'FlagConnection' } - & Pick - ), revisions: ( - { __typename: 'RevisionConnection' } - & Pick - ), comments: ( - { __typename: 'CommentConnection' } - & Pick - ), acceptanceEvent?: Maybe<( - { __typename: 'Event' } - & Pick - & { originatingUser: ( - { __typename: 'User' } - & Pick - ) } - )>, submissionEvent: ( - { __typename: 'Event' } - & Pick - & { originatingUser: ( - { __typename: 'User' } - & Pick - ) } - ), rejectionEvent?: Maybe<( - { __typename: 'Event' } - & Pick - & { originatingUser: ( - { __typename: 'User' } - & Pick - ) } - )> } -); +export type AssertionSummaryQuery = { __typename: 'Query', assertion?: { __typename: 'Assertion', id: number, name: string, summary: string, description: string, status: EvidenceStatus, variantOrigin: VariantOrigin, assertionType: AssertionType, assertionDirection: AssertionDirection, clinicalSignificance: AssertionClinicalSignificance, drugInteractionType?: DrugInteraction | undefined, ampLevel?: AmpLevel | undefined, nccnGuidelineVersion?: string | undefined, regulatoryApproval?: boolean | undefined, regulatoryApprovalLastUpdated?: any | undefined, fdaCompanionTest?: boolean | undefined, fdaCompanionTestLastUpdated?: any | undefined, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, alleleRegistryId?: string | undefined }, drugs: Array<{ __typename: 'Drug', ncitId?: string | undefined, name: string, link: string, id: number }>, phenotypes: Array<{ __typename: 'Phenotype', id: number, name: string, link: string }>, acmgCodes: Array<{ __typename: 'AcmgCode', code: string, description: string }>, clingenCodes: Array<{ __typename: 'ClingenCode', id: number, code: string, description: string }>, nccnGuideline?: { __typename: 'NccnGuideline', id: number, name: string } | undefined, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number }, acceptanceEvent?: { __typename: 'Event', createdAt: any, originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined, submissionEvent: { __typename: 'Event', createdAt: any, originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } }, rejectionEvent?: { __typename: 'Event', createdAt: any, originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined } | undefined }; + +export type AssertionSummaryFieldsFragment = { __typename: 'Assertion', id: number, name: string, summary: string, description: string, status: EvidenceStatus, variantOrigin: VariantOrigin, assertionType: AssertionType, assertionDirection: AssertionDirection, clinicalSignificance: AssertionClinicalSignificance, drugInteractionType?: DrugInteraction | undefined, ampLevel?: AmpLevel | undefined, nccnGuidelineVersion?: string | undefined, regulatoryApproval?: boolean | undefined, regulatoryApprovalLastUpdated?: any | undefined, fdaCompanionTest?: boolean | undefined, fdaCompanionTestLastUpdated?: any | undefined, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, alleleRegistryId?: string | undefined }, drugs: Array<{ __typename: 'Drug', ncitId?: string | undefined, name: string, link: string, id: number }>, phenotypes: Array<{ __typename: 'Phenotype', id: number, name: string, link: string }>, acmgCodes: Array<{ __typename: 'AcmgCode', code: string, description: string }>, clingenCodes: Array<{ __typename: 'ClingenCode', id: number, code: string, description: string }>, nccnGuideline?: { __typename: 'NccnGuideline', id: number, name: string } | undefined, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number }, acceptanceEvent?: { __typename: 'Event', createdAt: any, originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined, submissionEvent: { __typename: 'Event', createdAt: any, originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } }, rejectionEvent?: { __typename: 'Event', createdAt: any, originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined }; export type ClinicalTrialDetailQueryVariables = Exact<{ clinicalTrialId: Scalars['Int']; }>; -export type ClinicalTrialDetailQuery = ( - { __typename: 'Query' } - & { clinicalTrial?: Maybe<( - { __typename: 'ClinicalTrial' } - & Pick - )> } -); +export type ClinicalTrialDetailQuery = { __typename: 'Query', clinicalTrial?: { __typename: 'ClinicalTrial', id: number, name: string, nctId: string, description: string, url?: string | undefined, link: string } | undefined }; + +export type ClinicalTrialSummaryQueryVariables = Exact<{ + clinicalTrialId: Scalars['Int']; +}>; + + +export type ClinicalTrialSummaryQuery = { __typename: 'Query', clinicalTrial?: { __typename: 'ClinicalTrial', id: number, name: string, nctId: string, description: string, url?: string | undefined, link: string } | undefined }; export type DiseaseDetailQueryVariables = Exact<{ diseaseId: Scalars['Int']; }>; -export type DiseaseDetailQuery = ( - { __typename: 'Query' } - & { disease?: Maybe<( - { __typename: 'Disease' } - & Pick - )> } -); +export type DiseaseDetailQuery = { __typename: 'Query', disease?: { __typename: 'Disease', id: number, name: string, doid?: number | undefined, diseaseUrl?: string | undefined, displayName: string, diseaseAliases: Array, link: string } | undefined }; export type DiseasesSummaryQueryVariables = Exact<{ diseaseId: Scalars['Int']; }>; -export type DiseasesSummaryQuery = ( - { __typename: 'Query' } - & { disease?: Maybe<( - { __typename: 'Disease' } - & DiseasesSummaryFieldsFragment - )> } -); +export type DiseasesSummaryQuery = { __typename: 'Query', disease?: { __typename: 'Disease', id: number, name: string, doid?: number | undefined, diseaseUrl?: string | undefined, displayName: string, diseaseAliases: Array, link: string } | undefined }; -export type DiseasesSummaryFieldsFragment = ( - { __typename: 'Disease' } - & Pick -); +export type DiseasesSummaryFieldsFragment = { __typename: 'Disease', id: number, name: string, doid?: number | undefined, diseaseUrl?: string | undefined, displayName: string, diseaseAliases: Array, link: string }; export type DrugDetailQueryVariables = Exact<{ drugId: Scalars['Int']; }>; -export type DrugDetailQuery = ( - { __typename: 'Query' } - & { drug?: Maybe<( - { __typename: 'Drug' } - & Pick - )> } -); +export type DrugDetailQuery = { __typename: 'Query', drug?: { __typename: 'Drug', id: number, name: string, ncitId?: string | undefined, drugUrl?: string | undefined, drugAliases: Array, link: string } | undefined }; export type DrugsSummaryQueryVariables = Exact<{ drugId: Scalars['Int']; }>; -export type DrugsSummaryQuery = ( - { __typename: 'Query' } - & { drug?: Maybe<( - { __typename: 'Drug' } - & DrugsSummaryFieldsFragment - )> } -); +export type DrugsSummaryQuery = { __typename: 'Query', drug?: { __typename: 'Drug', id: number, name: string, ncitId?: string | undefined, drugUrl?: string | undefined, drugAliases: Array, link: string } | undefined }; -export type DrugsSummaryFieldsFragment = ( - { __typename: 'Drug' } - & Pick -); +export type DrugsSummaryFieldsFragment = { __typename: 'Drug', id: number, name: string, ncitId?: string | undefined, drugUrl?: string | undefined, drugAliases: Array, link: string }; export type EvidenceDetailQueryVariables = Exact<{ evidenceId: Scalars['Int']; }>; -export type EvidenceDetailQuery = ( - { __typename: 'Query' } - & { evidenceItem?: Maybe<( - { __typename: 'EvidenceItem' } - & EvidenceDetailFieldsFragment - )> } -); - -export type EvidenceDetailFieldsFragment = ( - { __typename: 'EvidenceItem' } - & Pick - & { submissionEvent: ( - { __typename: 'Event' } - & { originatingUser: ( - { __typename: 'User' } - & Pick - ) } - ), variant: ( - { __typename: 'Variant' } - & Pick - ), gene: ( - { __typename: 'Gene' } - & Pick - ), assertions: Array<( - { __typename: 'Assertion' } - & Pick - )>, flags: ( - { __typename: 'FlagConnection' } - & Pick - ), revisions: ( - { __typename: 'RevisionConnection' } - & Pick - ), comments: ( - { __typename: 'CommentConnection' } - & Pick - ) } -); +export type EvidenceDetailQuery = { __typename: 'Query', evidenceItem?: { __typename: 'EvidenceItem', id: number, name: string, status: EvidenceStatus, submissionEvent: { __typename: 'Event', originatingUser: { __typename: 'User', id: number } }, variant: { __typename: 'Variant', id: number, name: string, link: string }, gene: { __typename: 'Gene', id: number, name: string, link: string }, assertions: Array<{ __typename: 'Assertion', id: number, name: string, link: string }>, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } } | undefined }; + +export type EvidenceDetailFieldsFragment = { __typename: 'EvidenceItem', id: number, name: string, status: EvidenceStatus, submissionEvent: { __typename: 'Event', originatingUser: { __typename: 'User', id: number } }, variant: { __typename: 'Variant', id: number, name: string, link: string }, gene: { __typename: 'Gene', id: number, name: string, link: string }, assertions: Array<{ __typename: 'Assertion', id: number, name: string, link: string }>, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } }; export type EvidenceSummaryQueryVariables = Exact<{ evidenceId: Scalars['Int']; }>; -export type EvidenceSummaryQuery = ( - { __typename: 'Query' } - & { evidenceItem?: Maybe<( - { __typename: 'EvidenceItem' } - & EvidenceSummaryFieldsFragment - )> } -); - -export type EvidenceSummaryFieldsFragment = ( - { __typename: 'EvidenceItem' } - & Pick - & { drugs: Array<( - { __typename: 'Drug' } - & Pick - )>, disease?: Maybe<( - { __typename: 'Disease' } - & Pick - )>, phenotypes: Array<( - { __typename: 'Phenotype' } - & Pick - )>, source: ( - { __typename: 'Source' } - & Pick - & { clinicalTrials?: Maybe - )>> } - ), gene: ( - { __typename: 'Gene' } - & Pick - ), variant: ( - { __typename: 'Variant' } - & Pick - ), flags: ( - { __typename: 'FlagConnection' } - & Pick - ), revisions: ( - { __typename: 'RevisionConnection' } - & Pick - ), comments: ( - { __typename: 'CommentConnection' } - & Pick - ), acceptanceEvent?: Maybe<( - { __typename: 'Event' } - & Pick - & { originatingUser: ( - { __typename: 'User' } - & Pick - ) } - )>, submissionEvent: ( - { __typename: 'Event' } - & Pick - & { originatingUser: ( - { __typename: 'User' } - & Pick - ) } - ), rejectionEvent?: Maybe<( - { __typename: 'Event' } - & Pick - & { originatingUser: ( - { __typename: 'User' } - & Pick - ) } - )> } -); +export type EvidenceSummaryQuery = { __typename: 'Query', evidenceItem?: { __typename: 'EvidenceItem', id: number, name: string, description: string, status: EvidenceStatus, evidenceLevel: EvidenceLevel, evidenceType: EvidenceType, evidenceDirection: EvidenceDirection, clinicalSignificance: EvidenceClinicalSignificance, variantOrigin: VariantOrigin, drugInteractionType?: DrugInteraction | undefined, evidenceRating?: number | undefined, drugs: Array<{ __typename: 'Drug', id: number, name: string, link: string }>, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, phenotypes: Array<{ __typename: 'Phenotype', id: number, name: string, link: string }>, source: { __typename: 'Source', id: number, citation?: string | undefined, citationId: number, sourceType: SourceSource, displayType: string, sourceUrl?: string | undefined, ascoAbstractId?: number | undefined, link: string, clinicalTrials?: Array<{ __typename: 'ClinicalTrial', nctId: string, id: number }> | undefined }, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string }, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number }, acceptanceEvent?: { __typename: 'Event', createdAt: any, originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined, submissionEvent: { __typename: 'Event', createdAt: any, originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } }, rejectionEvent?: { __typename: 'Event', createdAt: any, originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined } | undefined }; + +export type EvidenceSummaryFieldsFragment = { __typename: 'EvidenceItem', id: number, name: string, description: string, status: EvidenceStatus, evidenceLevel: EvidenceLevel, evidenceType: EvidenceType, evidenceDirection: EvidenceDirection, clinicalSignificance: EvidenceClinicalSignificance, variantOrigin: VariantOrigin, drugInteractionType?: DrugInteraction | undefined, evidenceRating?: number | undefined, drugs: Array<{ __typename: 'Drug', id: number, name: string, link: string }>, disease?: { __typename: 'Disease', id: number, name: string, link: string } | undefined, phenotypes: Array<{ __typename: 'Phenotype', id: number, name: string, link: string }>, source: { __typename: 'Source', id: number, citation?: string | undefined, citationId: number, sourceType: SourceSource, displayType: string, sourceUrl?: string | undefined, ascoAbstractId?: number | undefined, link: string, clinicalTrials?: Array<{ __typename: 'ClinicalTrial', nctId: string, id: number }> | undefined }, gene: { __typename: 'Gene', id: number, name: string, link: string }, variant: { __typename: 'Variant', id: number, name: string, link: string }, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number }, acceptanceEvent?: { __typename: 'Event', createdAt: any, originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined, submissionEvent: { __typename: 'Event', createdAt: any, originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } }, rejectionEvent?: { __typename: 'Event', createdAt: any, originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined }; export type GeneDetailQueryVariables = Exact<{ geneId: Scalars['Int']; }>; -export type GeneDetailQuery = ( - { __typename: 'Query' } - & { gene?: Maybe<( - { __typename: 'Gene' } - & GeneDetailFieldsFragment - )> } -); - -export type GeneDetailFieldsFragment = ( - { __typename: 'Gene' } - & Pick - & { flags: ( - { __typename: 'FlagConnection' } - & Pick - ), revisions: ( - { __typename: 'RevisionConnection' } - & Pick - ), comments: ( - { __typename: 'CommentConnection' } - & Pick - ) } -); +export type GeneDetailQuery = { __typename: 'Query', gene?: { __typename: 'Gene', id: number, name: string, officialName: string, entrezId: number, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } } | undefined }; + +export type GeneDetailFieldsFragment = { __typename: 'Gene', id: number, name: string, officialName: string, entrezId: number, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } }; export type GenesSummaryQueryVariables = Exact<{ geneId: Scalars['Int']; }>; -export type GenesSummaryQuery = ( - { __typename: 'Query' } - & { gene?: Maybe<( - { __typename: 'Gene' } - & GeneSummaryFieldsFragment - )> } -); - -export type GeneSummaryFieldsFragment = ( - { __typename: 'Gene' } - & Pick - & { sources: Array<( - { __typename: 'Source' } - & Pick - )>, variants: ( - { __typename: 'VariantConnection' } - & { edges: Array<( - { __typename: 'VariantEdge' } - & { node?: Maybe<( - { __typename: 'Variant' } - & Pick - )> } - )> } - ), lastSubmittedRevisionEvent?: Maybe<( - { __typename: 'Event' } - & { originatingUser: ( - { __typename: 'User' } - & Pick - ) } - )>, lastAcceptedRevisionEvent?: Maybe<( - { __typename: 'Event' } - & { originatingUser: ( - { __typename: 'User' } - & Pick - ) } - )> } -); +export type GenesSummaryQuery = { __typename: 'Query', gene?: { __typename: 'Gene', description: string, entrezId: number, geneAliases: Array, id: number, name: string, officialName: string, myGeneInfoDetails?: any | undefined, sources: Array<{ __typename: 'Source', id: number, citation?: string | undefined, sourceUrl?: string | undefined, displayType: string, sourceType: SourceSource }>, variants: { __typename: 'VariantConnection', edges: Array<{ __typename: 'VariantEdge', node?: { __typename: 'Variant', id: number, name: string, description?: string | undefined } | undefined }> }, lastSubmittedRevisionEvent?: { __typename: 'Event', originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined, lastAcceptedRevisionEvent?: { __typename: 'Event', originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined } | undefined }; + +export type GeneSummaryFieldsFragment = { __typename: 'Gene', description: string, entrezId: number, geneAliases: Array, id: number, name: string, officialName: string, myGeneInfoDetails?: any | undefined, sources: Array<{ __typename: 'Source', id: number, citation?: string | undefined, sourceUrl?: string | undefined, displayType: string, sourceType: SourceSource }>, variants: { __typename: 'VariantConnection', edges: Array<{ __typename: 'VariantEdge', node?: { __typename: 'Variant', id: number, name: string, description?: string | undefined } | undefined }> }, lastSubmittedRevisionEvent?: { __typename: 'Event', originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined, lastAcceptedRevisionEvent?: { __typename: 'Event', originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined }; export type OrganizationDetailQueryVariables = Exact<{ organizationId: Scalars['Int']; }>; -export type OrganizationDetailQuery = ( - { __typename: 'Query' } - & { organization?: Maybe<( - { __typename: 'Organization' } - & OrganizationDetailFieldsFragment - )> } -); - -export type OrganizationDetailFieldsFragment = ( - { __typename: 'Organization' } - & Pick - & { subGroups: Array<( - { __typename: 'Organization' } - & Pick - )>, orgStatsHash: ( - { __typename: 'Stats' } - & Pick - ), orgAndSuborgsStatsHash: ( - { __typename: 'Stats' } - & Pick - ) } -); +export type OrganizationDetailQuery = { __typename: 'Query', organization?: { __typename: 'Organization', id: number, name: string, url: string, description: string, profileImagePath?: string | undefined, subGroups: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }>, orgStatsHash: { __typename: 'Stats', comments: number, revisions: number, appliedRevisions: number, submittedEvidenceItems: number, acceptedEvidenceItems: number, suggestedSources: number, submittedAssertions: number, acceptedAssertions: number }, orgAndSuborgsStatsHash: { __typename: 'Stats', comments: number, revisions: number, appliedRevisions: number, submittedEvidenceItems: number, acceptedEvidenceItems: number, suggestedSources: number, submittedAssertions: number, acceptedAssertions: number } } | undefined }; + +export type OrganizationDetailFieldsFragment = { __typename: 'Organization', id: number, name: string, url: string, description: string, profileImagePath?: string | undefined, subGroups: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }>, orgStatsHash: { __typename: 'Stats', comments: number, revisions: number, appliedRevisions: number, submittedEvidenceItems: number, acceptedEvidenceItems: number, suggestedSources: number, submittedAssertions: number, acceptedAssertions: number }, orgAndSuborgsStatsHash: { __typename: 'Stats', comments: number, revisions: number, appliedRevisions: number, submittedEvidenceItems: number, acceptedEvidenceItems: number, suggestedSources: number, submittedAssertions: number, acceptedAssertions: number } }; export type OrganizationGroupsQueryVariables = Exact<{ organizationId: Scalars['Int']; }>; -export type OrganizationGroupsQuery = ( - { __typename: 'Query' } - & { organization?: Maybe<( - { __typename: 'Organization' } - & { subGroups: Array<( - { __typename: 'Organization' } - & OrganizationGroupsFieldsFragment - )> } - )> } -); - -export type OrganizationGroupsFieldsFragment = ( - { __typename: 'Organization' } - & Pick - & { orgStatsHash: ( - { __typename: 'Stats' } - & Pick - ), orgAndSuborgsStatsHash: ( - { __typename: 'Stats' } - & Pick - ), subGroups: Array<( - { __typename: 'Organization' } - & Pick - )> } -); +export type OrganizationGroupsQuery = { __typename: 'Query', organization?: { __typename: 'Organization', subGroups: Array<{ __typename: 'Organization', id: number, name: string, description: string, profileImagePath?: string | undefined, orgStatsHash: { __typename: 'Stats', comments: number, revisions: number, appliedRevisions: number, submittedEvidenceItems: number, acceptedEvidenceItems: number, suggestedSources: number, submittedAssertions: number, acceptedAssertions: number }, orgAndSuborgsStatsHash: { __typename: 'Stats', comments: number, revisions: number, appliedRevisions: number, submittedEvidenceItems: number, acceptedEvidenceItems: number, suggestedSources: number, submittedAssertions: number, acceptedAssertions: number }, subGroups: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }> }> } | undefined }; + +export type OrganizationGroupsFieldsFragment = { __typename: 'Organization', id: number, name: string, description: string, profileImagePath?: string | undefined, orgStatsHash: { __typename: 'Stats', comments: number, revisions: number, appliedRevisions: number, submittedEvidenceItems: number, acceptedEvidenceItems: number, suggestedSources: number, submittedAssertions: number, acceptedAssertions: number }, orgAndSuborgsStatsHash: { __typename: 'Stats', comments: number, revisions: number, appliedRevisions: number, submittedEvidenceItems: number, acceptedEvidenceItems: number, suggestedSources: number, submittedAssertions: number, acceptedAssertions: number }, subGroups: Array<{ __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined }> }; export type OrganizationMembersQueryVariables = Exact<{ organizationId: Scalars['Int']; - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; }>; -export type OrganizationMembersQuery = ( - { __typename: 'Query' } - & { users: ( - { __typename: 'UserConnection' } - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), edges: Array<( - { __typename: 'UserEdge' } - & Pick - & { node?: Maybe<( - { __typename: 'User' } - & OrganizationMembersFieldsFragment - )> } - )> } - ) } -); - -export type OrganizationMembersFieldsFragment = ( - { __typename: 'User' } - & Pick - & { organizations: Array<( - { __typename: 'Organization' } - & Pick - )> } -); +export type OrganizationMembersQuery = { __typename: 'Query', users: { __typename: 'UserConnection', pageInfo: { __typename: 'PageInfo', hasNextPage: boolean, hasPreviousPage: boolean, startCursor?: string | undefined, endCursor?: string | undefined }, edges: Array<{ __typename: 'UserEdge', cursor: string, node?: { __typename: 'User', id: number, name?: string | undefined, displayName: string, username: string, profileImagePath?: string | undefined, role: UserRole, url?: string | undefined, areaOfExpertise?: AreaOfExpertise | undefined, orcid?: string | undefined, twitterHandle?: string | undefined, facebookProfile?: string | undefined, linkedinProfile?: string | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string }> } | undefined }> } }; + +export type OrganizationMembersFieldsFragment = { __typename: 'User', id: number, name?: string | undefined, displayName: string, username: string, profileImagePath?: string | undefined, role: UserRole, url?: string | undefined, areaOfExpertise?: AreaOfExpertise | undefined, orcid?: string | undefined, twitterHandle?: string | undefined, facebookProfile?: string | undefined, linkedinProfile?: string | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string }> }; export type PhenotypeDetailQueryVariables = Exact<{ phenotypeId: Scalars['Int']; }>; -export type PhenotypeDetailQuery = ( - { __typename: 'Query' } - & { phenotype?: Maybe<( - { __typename: 'Phenotype' } - & Pick - )> } -); +export type PhenotypeDetailQuery = { __typename: 'Query', phenotype?: { __typename: 'Phenotype', id: number, name: string, hpoId: string, url: string, link: string } | undefined }; export type DataReleasesQueryVariables = Exact<{ [key: string]: never; }>; -export type DataReleasesQuery = ( - { __typename: 'Query' } - & { dataReleases: Array<( - { __typename: 'DataRelease' } - & ReleaseFragment - )> } -); - -export type ReleaseFragment = ( - { __typename: 'DataRelease' } - & Pick - & { geneTsv?: Maybe<( - { __typename: 'DownloadableFile' } - & Pick - )>, variantTsv?: Maybe<( - { __typename: 'DownloadableFile' } - & Pick - )>, variantGroupTsv?: Maybe<( - { __typename: 'DownloadableFile' } - & Pick - )>, evidenceTsv?: Maybe<( - { __typename: 'DownloadableFile' } - & Pick - )>, assertionTsv?: Maybe<( - { __typename: 'DownloadableFile' } - & Pick - )>, acceptedVariantsVcf?: Maybe<( - { __typename: 'DownloadableFile' } - & Pick - )>, acceptedAndSubmittedVariantsVcf?: Maybe<( - { __typename: 'DownloadableFile' } - & Pick - )> } -); +export type DataReleasesQuery = { __typename: 'Query', dataReleases: Array<{ __typename: 'DataRelease', name: string, geneTsv?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined, variantTsv?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined, variantGroupTsv?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined, evidenceTsv?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined, assertionTsv?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined, acceptedVariantsVcf?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined, acceptedAndSubmittedVariantsVcf?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined }> }; + +export type ReleaseFragment = { __typename: 'DataRelease', name: string, geneTsv?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined, variantTsv?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined, variantGroupTsv?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined, evidenceTsv?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined, assertionTsv?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined, acceptedVariantsVcf?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined, acceptedAndSubmittedVariantsVcf?: { __typename: 'DownloadableFile', filename: string, path: string } | undefined }; export type SourceDetailQueryVariables = Exact<{ sourceId: Scalars['Int']; }>; -export type SourceDetailQuery = ( - { __typename: 'Query' } - & { source?: Maybe<( - { __typename: 'Source' } - & SourceDetailFieldsFragment - )> } -); +export type SourceDetailQuery = { __typename: 'Query', source?: { __typename: 'Source', id: number, citation?: string | undefined, sourceUrl?: string | undefined, displayType: string, citationId: number } | undefined }; -export type SourceDetailFieldsFragment = ( - { __typename: 'Source' } - & Pick -); +export type SourceDetailFieldsFragment = { __typename: 'Source', id: number, citation?: string | undefined, sourceUrl?: string | undefined, displayType: string, citationId: number }; export type SourceSummaryQueryVariables = Exact<{ sourceId: Scalars['Int']; }>; -export type SourceSummaryQuery = ( - { __typename: 'Query' } - & { source?: Maybe<( - { __typename: 'Source' } - & SourceSummaryFieldsFragment - )> } -); +export type SourceSummaryQuery = { __typename: 'Query', source?: { __typename: 'Source', id: number, citation?: string | undefined, displayType: string, sourceUrl?: string | undefined, title?: string | undefined, abstract?: string | undefined, publicationDate?: string | undefined, citationId: number, fullJournalTitle?: string | undefined, pmcId?: string | undefined, authorString?: string | undefined, clinicalTrials?: Array<{ __typename: 'ClinicalTrial', nctId: string, id: number }> | undefined } | undefined }; -export type SourceSummaryFieldsFragment = ( - { __typename: 'Source' } - & Pick - & { clinicalTrials?: Maybe - )>> } -); +export type SourceSummaryFieldsFragment = { __typename: 'Source', id: number, citation?: string | undefined, displayType: string, sourceUrl?: string | undefined, title?: string | undefined, abstract?: string | undefined, publicationDate?: string | undefined, citationId: number, fullJournalTitle?: string | undefined, pmcId?: string | undefined, authorString?: string | undefined, clinicalTrials?: Array<{ __typename: 'ClinicalTrial', nctId: string, id: number }> | undefined }; export type UserDetailQueryVariables = Exact<{ userId: Scalars['Int']; }>; -export type UserDetailQuery = ( - { __typename: 'Query' } - & { user?: Maybe<( - { __typename: 'User' } - & UserDetailFieldsFragment - )> } -); - -export type UserDetailFieldsFragment = ( - { __typename: 'User' } - & Pick - & { organizations: Array<( - { __typename: 'Organization' } - & Pick - )>, country?: Maybe<( - { __typename: 'Country' } - & Pick - )>, statsHash: ( - { __typename: 'Stats' } - & Pick - ), mostRecentConflictOfInterestStatement?: Maybe<( - { __typename: 'Coi' } - & Pick - )> } -); +export type UserDetailQuery = { __typename: 'Query', user?: { __typename: 'User', id: number, name?: string | undefined, displayName: string, username: string, email?: string | undefined, profileImagePath?: string | undefined, role: UserRole, url?: string | undefined, bio?: string | undefined, areaOfExpertise?: AreaOfExpertise | undefined, orcid?: string | undefined, twitterHandle?: string | undefined, facebookProfile?: string | undefined, linkedinProfile?: string | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string }>, country?: { __typename: 'Country', id: number, name: string } | undefined, statsHash: { __typename: 'Stats', comments: number, revisions: number, appliedRevisions: number, submittedEvidenceItems: number, acceptedEvidenceItems: number, suggestedSources: number, submittedAssertions: number, acceptedAssertions: number }, mostRecentConflictOfInterestStatement?: { __typename: 'Coi', id: number, coiPresent: boolean, coiStatement?: string | undefined, coiStatus: CoiStatus, createdAt?: any | undefined, expiresAt: any } | undefined } | undefined }; + +export type UserDetailFieldsFragment = { __typename: 'User', id: number, name?: string | undefined, displayName: string, username: string, email?: string | undefined, profileImagePath?: string | undefined, role: UserRole, url?: string | undefined, bio?: string | undefined, areaOfExpertise?: AreaOfExpertise | undefined, orcid?: string | undefined, twitterHandle?: string | undefined, facebookProfile?: string | undefined, linkedinProfile?: string | undefined, organizations: Array<{ __typename: 'Organization', id: number, name: string }>, country?: { __typename: 'Country', id: number, name: string } | undefined, statsHash: { __typename: 'Stats', comments: number, revisions: number, appliedRevisions: number, submittedEvidenceItems: number, acceptedEvidenceItems: number, suggestedSources: number, submittedAssertions: number, acceptedAssertions: number }, mostRecentConflictOfInterestStatement?: { __typename: 'Coi', id: number, coiPresent: boolean, coiStatement?: string | undefined, coiStatus: CoiStatus, createdAt?: any | undefined, expiresAt: any } | undefined }; export type UserNotificationsQueryVariables = Exact<{ - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - notificationReason?: Maybe; - subscriptionId?: Maybe; - originatingObject?: Maybe; - eventType?: Maybe; - originatingUserId?: Maybe; - organizationId?: Maybe; - includeRead?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + notificationReason?: InputMaybe; + subscriptionId?: InputMaybe; + originatingObject?: InputMaybe; + eventType?: InputMaybe; + originatingUserId?: InputMaybe; + organizationId?: InputMaybe; + includeRead?: InputMaybe; }>; -export type UserNotificationsQuery = ( - { __typename: 'Query' } - & { notifications: ( - { __typename: 'NotificationConnection' } - & Pick - & { pageInfo: ( - { __typename: 'PageInfo' } - & Pick - ), notificationSubjects: Array<( - { __typename: 'EventSubjectWithCount' } - & NotificationFeedSubjectsFragment - )>, originatingUsers: Array<( - { __typename: 'User' } - & NotificationOriginatingUsersFragment - )>, organizations: Array<( - { __typename: 'Organization' } - & NotificationOrganizationFragment - )>, edges: Array<( - { __typename: 'NotificationEdge' } - & { node?: Maybe<( - { __typename: 'Notification' } - & NotificationNodeFragment - )> } - )> } - ) } -); - -export type NotificationOrganizationFragment = ( - { __typename: 'Organization' } - & Pick -); - -export type NotificationOriginatingUsersFragment = ( - { __typename: 'User' } - & Pick -); - -export type NotificationFeedSubjectsFragment = ( - { __typename: 'EventSubjectWithCount' } - & Pick - & { subject?: Maybe<( - { __typename: 'Assertion' } - & Pick - ) | ( - { __typename: 'EvidenceItem' } - & Pick - ) | ( - { __typename: 'Gene' } - & Pick - ) | ( - { __typename: 'Revision' } - & Pick - ) | ( - { __typename: 'Source' } - & Pick - ) | ( - { __typename: 'SourcePopover' } - & Pick - ) | ( - { __typename: 'SourceSuggestion' } - & Pick - ) | ( - { __typename: 'Variant' } - & Pick - ) | ( - { __typename: 'VariantGroup' } - & Pick - )> } -); - -export type NotificationNodeFragment = ( - { __typename: 'Notification' } - & Pick - & { event: ( - { __typename: 'Event' } - & EventFeedNodeFragment - ), subscription?: Maybe<( - { __typename: 'Subscription' } - & Pick - & { subscribable: ( - { __typename: 'Assertion' } - & Pick - ) | ( - { __typename: 'EvidenceItem' } - & Pick - ) | ( - { __typename: 'Gene' } - & Pick - ) | ( - { __typename: 'Revision' } - & Pick - ) | ( - { __typename: 'Source' } - & Pick - ) | ( - { __typename: 'SourcePopover' } - & Pick - ) | ( - { __typename: 'SourceSuggestion' } - & Pick - ) | ( - { __typename: 'Variant' } - & Pick - ) | ( - { __typename: 'VariantGroup' } - & Pick - ) } - )> } -); +export type UserNotificationsQuery = { __typename: 'Query', notifications: { __typename: 'NotificationConnection', eventTypes: Array, pageInfo: { __typename: 'PageInfo', startCursor?: string | undefined, endCursor?: string | undefined, hasNextPage: boolean, hasPreviousPage: boolean }, notificationSubjects: Array<{ __typename: 'EventSubjectWithCount', occuranceCount: number, subject?: { __typename: 'Assertion', id: number, name: string } | { __typename: 'EvidenceItem', id: number, name: string } | { __typename: 'Gene', id: number, name: string } | { __typename: 'Revision', id: number, name: string } | { __typename: 'Source', id: number, name: string } | { __typename: 'SourcePopover', id: number, name: string } | { __typename: 'SourceSuggestion', id: number, name: string } | { __typename: 'Variant', id: number, name: string } | { __typename: 'VariantGroup', id: number, name: string } | undefined }>, originatingUsers: Array<{ __typename: 'User', id: number, displayName: string }>, organizations: Array<{ __typename: 'Organization', id: number, name: string }>, edges: Array<{ __typename: 'NotificationEdge', node?: { __typename: 'Notification', id: number, type: NotificationReason, seen: boolean, event: { __typename: 'Event', id: number, action: EventAction, createdAt: any, organization?: { __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined } | undefined, originatingUser: { __typename: 'User', id: number, username: string, displayName: string, role: UserRole, profileImagePath?: string | undefined }, subject?: { __typename: 'Assertion', status: EvidenceStatus, name: string, id: number, link: string } | { __typename: 'EvidenceItem', status: EvidenceStatus, name: string, id: number, link: string } | { __typename: 'Gene', name: string, id: number, link: string } | { __typename: 'Revision', name: string, id: number, link: string } | { __typename: 'Source', citation?: string | undefined, sourceType: SourceSource, name: string, id: number, link: string } | { __typename: 'SourcePopover', name: string, id: number, link: string } | { __typename: 'SourceSuggestion', name: string, id: number, link: string } | { __typename: 'Variant', name: string, id: number, link: string } | { __typename: 'VariantGroup', name: string, id: number, link: string } | undefined, originatingObject?: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'Comment', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'SourceSuggestion', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | undefined }, subscription?: { __typename: 'Subscription', id: number, subscribable: { __typename: 'Assertion', id: number, name: string } | { __typename: 'EvidenceItem', id: number, name: string } | { __typename: 'Gene', id: number, name: string } | { __typename: 'Revision', id: number, name: string } | { __typename: 'Source', id: number, name: string } | { __typename: 'SourcePopover', id: number, name: string } | { __typename: 'SourceSuggestion', id: number, name: string } | { __typename: 'Variant', id: number, name: string } | { __typename: 'VariantGroup', id: number, name: string } } | undefined } | undefined }> } }; + +export type NotificationOrganizationFragment = { __typename: 'Organization', id: number, name: string }; + +export type NotificationOriginatingUsersFragment = { __typename: 'User', id: number, displayName: string }; + +export type NotificationFeedSubjectsFragment = { __typename: 'EventSubjectWithCount', occuranceCount: number, subject?: { __typename: 'Assertion', id: number, name: string } | { __typename: 'EvidenceItem', id: number, name: string } | { __typename: 'Gene', id: number, name: string } | { __typename: 'Revision', id: number, name: string } | { __typename: 'Source', id: number, name: string } | { __typename: 'SourcePopover', id: number, name: string } | { __typename: 'SourceSuggestion', id: number, name: string } | { __typename: 'Variant', id: number, name: string } | { __typename: 'VariantGroup', id: number, name: string } | undefined }; + +export type NotificationNodeFragment = { __typename: 'Notification', id: number, type: NotificationReason, seen: boolean, event: { __typename: 'Event', id: number, action: EventAction, createdAt: any, organization?: { __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined } | undefined, originatingUser: { __typename: 'User', id: number, username: string, displayName: string, role: UserRole, profileImagePath?: string | undefined }, subject?: { __typename: 'Assertion', status: EvidenceStatus, name: string, id: number, link: string } | { __typename: 'EvidenceItem', status: EvidenceStatus, name: string, id: number, link: string } | { __typename: 'Gene', name: string, id: number, link: string } | { __typename: 'Revision', name: string, id: number, link: string } | { __typename: 'Source', citation?: string | undefined, sourceType: SourceSource, name: string, id: number, link: string } | { __typename: 'SourcePopover', name: string, id: number, link: string } | { __typename: 'SourceSuggestion', name: string, id: number, link: string } | { __typename: 'Variant', name: string, id: number, link: string } | { __typename: 'VariantGroup', name: string, id: number, link: string } | undefined, originatingObject?: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'Comment', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'SourceSuggestion', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | undefined }, subscription?: { __typename: 'Subscription', id: number, subscribable: { __typename: 'Assertion', id: number, name: string } | { __typename: 'EvidenceItem', id: number, name: string } | { __typename: 'Gene', id: number, name: string } | { __typename: 'Revision', id: number, name: string } | { __typename: 'Source', id: number, name: string } | { __typename: 'SourcePopover', id: number, name: string } | { __typename: 'SourceSuggestion', id: number, name: string } | { __typename: 'Variant', id: number, name: string } | { __typename: 'VariantGroup', id: number, name: string } } | undefined }; export type UpdateNotificationStatusMutationVariables = Exact<{ input: UpdateNotificationStatusInput; }>; -export type UpdateNotificationStatusMutation = ( - { __typename: 'Mutation' } - & { updateNotificationStatus?: Maybe<( - { __typename: 'UpdateNotificationStatusPayload' } - & { notifications: Array<( - { __typename: 'Notification' } - & NotificationNodeFragment - )> } - )> } -); +export type UpdateNotificationStatusMutation = { __typename: 'Mutation', updateNotificationStatus?: { __typename: 'UpdateNotificationStatusPayload', notifications: Array<{ __typename: 'Notification', id: number, type: NotificationReason, seen: boolean, event: { __typename: 'Event', id: number, action: EventAction, createdAt: any, organization?: { __typename: 'Organization', id: number, name: string, profileImagePath?: string | undefined } | undefined, originatingUser: { __typename: 'User', id: number, username: string, displayName: string, role: UserRole, profileImagePath?: string | undefined }, subject?: { __typename: 'Assertion', status: EvidenceStatus, name: string, id: number, link: string } | { __typename: 'EvidenceItem', status: EvidenceStatus, name: string, id: number, link: string } | { __typename: 'Gene', name: string, id: number, link: string } | { __typename: 'Revision', name: string, id: number, link: string } | { __typename: 'Source', citation?: string | undefined, sourceType: SourceSource, name: string, id: number, link: string } | { __typename: 'SourcePopover', name: string, id: number, link: string } | { __typename: 'SourceSuggestion', name: string, id: number, link: string } | { __typename: 'Variant', name: string, id: number, link: string } | { __typename: 'VariantGroup', name: string, id: number, link: string } | undefined, originatingObject?: { __typename: 'Assertion', id: number, name: string, link: string } | { __typename: 'Comment', id: number, name: string, link: string } | { __typename: 'EvidenceItem', id: number, name: string, link: string } | { __typename: 'Flag', id: number, name: string, link: string } | { __typename: 'Revision', id: number, name: string, link: string } | { __typename: 'SourceSuggestion', id: number, name: string, link: string } | { __typename: 'Variant', id: number, name: string, link: string } | undefined }, subscription?: { __typename: 'Subscription', id: number, subscribable: { __typename: 'Assertion', id: number, name: string } | { __typename: 'EvidenceItem', id: number, name: string } | { __typename: 'Gene', id: number, name: string } | { __typename: 'Revision', id: number, name: string } | { __typename: 'Source', id: number, name: string } | { __typename: 'SourcePopover', id: number, name: string } | { __typename: 'SourceSuggestion', id: number, name: string } | { __typename: 'Variant', id: number, name: string } | { __typename: 'VariantGroup', id: number, name: string } } | undefined }> } | undefined }; export type UnsubscribeMutationVariables = Exact<{ input: UnsubscribeInput; }>; -export type UnsubscribeMutation = ( - { __typename: 'Mutation' } - & { unsubscribe?: Maybe<( - { __typename: 'UnsubscribePayload' } - & { unsubscribedEntities: Array<( - { __typename: 'Subscribable' } - & SubscribableFragment - )> } - )> } -); +export type UnsubscribeMutation = { __typename: 'Mutation', unsubscribe?: { __typename: 'UnsubscribePayload', unsubscribedEntities: Array<{ __typename: 'Subscribable', id: number, entityType: SubscribableEntities }> } | undefined }; export type SubscribeMutationVariables = Exact<{ input: SubscribeInput; }>; -export type SubscribeMutation = ( - { __typename: 'Mutation' } - & { subscribe?: Maybe<( - { __typename: 'SubscribePayload' } - & { subscriptions: Array<( - { __typename: 'Subscription' } - & Pick - )> } - )> } -); +export type SubscribeMutation = { __typename: 'Mutation', subscribe?: { __typename: 'SubscribePayload', subscriptions: Array<{ __typename: 'Subscription', id: number }> } | undefined }; -export type SubscribableFragment = ( - { __typename: 'Subscribable' } - & Pick -); +export type SubscribableFragment = { __typename: 'Subscribable', id: number, entityType: SubscribableEntities }; export type VariantGroupDetailQueryVariables = Exact<{ variantGroupId: Scalars['Int']; }>; -export type VariantGroupDetailQuery = ( - { __typename: 'Query' } - & { variantGroup?: Maybe<( - { __typename: 'VariantGroup' } - & VariantGroupDetailFieldsFragment - )> } -); - -export type VariantGroupDetailFieldsFragment = ( - { __typename: 'VariantGroup' } - & Pick - & { variants: ( - { __typename: 'VariantConnection' } - & Pick - ), flags: ( - { __typename: 'FlagConnection' } - & Pick - ), revisions: ( - { __typename: 'RevisionConnection' } - & Pick - ), comments: ( - { __typename: 'CommentConnection' } - & Pick - ) } -); +export type VariantGroupDetailQuery = { __typename: 'Query', variantGroup?: { __typename: 'VariantGroup', id: number, name: string, variants: { __typename: 'VariantConnection', totalCount: number }, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } } | undefined }; + +export type VariantGroupDetailFieldsFragment = { __typename: 'VariantGroup', id: number, name: string, variants: { __typename: 'VariantConnection', totalCount: number }, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } }; export type VariantGroupRevisionsQueryVariables = Exact<{ variantGroupId: Scalars['Int']; - first?: Maybe; - last?: Maybe; - before?: Maybe; - after?: Maybe; - fieldName?: Maybe; - originatingUserId?: Maybe; + first?: InputMaybe; + last?: InputMaybe; + before?: InputMaybe; + after?: InputMaybe; + fieldName?: InputMaybe; + originatingUserId?: InputMaybe; }>; -export type VariantGroupRevisionsQuery = ( - { __typename: 'Query' } - & { variantGroup?: Maybe<( - { __typename: 'VariantGroup' } - & Pick - & { revisions: ( - { __typename: 'RevisionConnection' } - & Pick - & { uniqueRevisors: Array<( - { __typename: 'User' } - & Pick - )>, revisedFieldNames: Array<( - { __typename: 'FieldName' } - & Pick - )>, edges: Array<( - { __typename: 'RevisionEdge' } - & { node?: Maybe<( - { __typename: 'Revision' } - & Pick - & { linkoutData: ( - { __typename: 'LinkoutData' } - & Pick - & { diffValue: ( - { __typename: 'ObjectFieldDiff' } - & { addedObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )>, removedObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )>, keptObjects: Array<( - { __typename: 'ModeratedObjectField' } - & Pick - )> } - ) | ( - { __typename: 'ScalarFieldDiff' } - & Pick - ) } - ), revisor?: Maybe<( - { __typename: 'User' } - & Pick - )> } - )> } - )> } - ) } - )> } -); +export type VariantGroupRevisionsQuery = { __typename: 'Query', variantGroup?: { __typename: 'VariantGroup', id: number, revisions: { __typename: 'RevisionConnection', totalCount: number, uniqueRevisors: Array<{ __typename: 'User', username: string, id: number, profileImagePath?: string | undefined }>, revisedFieldNames: Array<{ __typename: 'FieldName', name: string, displayName: string }>, edges: Array<{ __typename: 'RevisionEdge', node?: { __typename: 'Revision', id: number, revisionsetId: string, createdAt: any, fieldName: string, currentValue?: any | undefined, suggestedValue?: any | undefined, status: RevisionStatus, linkoutData: { __typename: 'LinkoutData', name: string, diffValue: { __typename: 'ObjectFieldDiff', addedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string }>, removedObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string }>, keptObjects: Array<{ __typename: 'ModeratedObjectField', id: number, displayName?: string | undefined, displayType?: string | undefined, entityType: string }> } | { __typename: 'ScalarFieldDiff', left: string, right: string } }, revisor?: { __typename: 'User', id: number, name?: string | undefined } | undefined } | undefined }> } } | undefined }; export type VariantGroupsSummaryQueryVariables = Exact<{ variantGroupId: Scalars['Int']; }>; -export type VariantGroupsSummaryQuery = ( - { __typename: 'Query' } - & { variantGroup?: Maybe<( - { __typename: 'VariantGroup' } - & VariantGroupSummaryFieldsFragment - )> } -); - -export type VariantGroupSummaryFieldsFragment = ( - { __typename: 'VariantGroup' } - & Pick - & { sources: Array<( - { __typename: 'Source' } - & Pick - )>, variants: ( - { __typename: 'VariantConnection' } - & { edges: Array<( - { __typename: 'VariantEdge' } - & { node?: Maybe<( - { __typename: 'Variant' } - & Pick - )> } - )> } - ) } -); +export type VariantGroupsSummaryQuery = { __typename: 'Query', variantGroup?: { __typename: 'VariantGroup', id: number, name: string, description: string, sources: Array<{ __typename: 'Source', id: number, link: string, citation?: string | undefined, sourceUrl?: string | undefined, displayType: string, sourceType: SourceSource }>, variants: { __typename: 'VariantConnection', edges: Array<{ __typename: 'VariantEdge', node?: { __typename: 'Variant', id: number, name: string, link: string, description?: string | undefined } | undefined }> } } | undefined }; + +export type VariantGroupSummaryFieldsFragment = { __typename: 'VariantGroup', id: number, name: string, description: string, sources: Array<{ __typename: 'Source', id: number, link: string, citation?: string | undefined, sourceUrl?: string | undefined, displayType: string, sourceType: SourceSource }>, variants: { __typename: 'VariantConnection', edges: Array<{ __typename: 'VariantEdge', node?: { __typename: 'Variant', id: number, name: string, link: string, description?: string | undefined } | undefined }> } }; export type VariantTypeDetailQueryVariables = Exact<{ variantTypeId: Scalars['Int']; }>; -export type VariantTypeDetailQuery = ( - { __typename: 'Query' } - & { variantType?: Maybe<( - { __typename: 'VariantType' } - & Pick - )> } -); +export type VariantTypeDetailQuery = { __typename: 'Query', variantType?: { __typename: 'VariantType', id: number, name: string, soid: string, description: string, url?: string | undefined, link: string } | undefined }; export type VariantDetailQueryVariables = Exact<{ variantId: Scalars['Int']; }>; -export type VariantDetailQuery = ( - { __typename: 'Query' } - & { variant?: Maybe<( - { __typename: 'Variant' } - & VariantDetailFieldsFragment - )> } -); - -export type VariantDetailFieldsFragment = ( - { __typename: 'Variant' } - & Pick - & { gene: ( - { __typename: 'Gene' } - & Pick - ), flags: ( - { __typename: 'FlagConnection' } - & Pick - ), revisions: ( - { __typename: 'RevisionConnection' } - & Pick - ), comments: ( - { __typename: 'CommentConnection' } - & Pick - ) } -); +export type VariantDetailQuery = { __typename: 'Query', variant?: { __typename: 'Variant', id: number, name: string, variantAliases: Array, gene: { __typename: 'Gene', id: number, name: string }, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } } | undefined }; + +export type VariantDetailFieldsFragment = { __typename: 'Variant', id: number, name: string, variantAliases: Array, gene: { __typename: 'Gene', id: number, name: string }, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number } }; export type VariantSummaryQueryVariables = Exact<{ variantId: Scalars['Int']; }>; -export type VariantSummaryQuery = ( - { __typename: 'Query' } - & { variant?: Maybe<( - { __typename: 'Variant' } - & VariantSummaryFieldsFragment - )> } -); - -export type VariantSummaryFieldsFragment = ( - { __typename: 'Variant' } - & Pick - & { gene: ( - { __typename: 'Gene' } - & Pick - ), sources: Array<( - { __typename: 'Source' } - & Pick - )>, variantTypes: Array<( - { __typename: 'VariantType' } - & Pick - )>, primaryCoordinates?: Maybe<( - { __typename: 'Coordinate' } - & Pick - )>, secondaryCoordinates?: Maybe<( - { __typename: 'Coordinate' } - & Pick - )>, flags: ( - { __typename: 'FlagConnection' } - & Pick - ), revisions: ( - { __typename: 'RevisionConnection' } - & Pick - ), comments: ( - { __typename: 'CommentConnection' } - & Pick - ), myVariantInfo?: Maybe<( - { __typename: 'MyVariantInfo' } - & MyVariantInfoFieldsFragment - )>, lastSubmittedRevisionEvent?: Maybe<( - { __typename: 'Event' } - & { originatingUser: ( - { __typename: 'User' } - & Pick - ) } - )>, lastAcceptedRevisionEvent?: Maybe<( - { __typename: 'Event' } - & { originatingUser: ( - { __typename: 'User' } - & Pick - ) } - )> } -); - -export type MyVariantInfoFieldsFragment = ( - { __typename: 'MyVariantInfo' } - & Pick -); +export type VariantSummaryQuery = { __typename: 'Query', variant?: { __typename: 'Variant', id: number, name: string, description?: string | undefined, variantAliases: Array, alleleRegistryId?: string | undefined, hgvsDescriptions: Array, clinvarIds: Array, evidenceScore: number, referenceBuild?: ReferenceBuild | undefined, ensemblVersion?: number | undefined, referenceBases?: string | undefined, variantBases?: string | undefined, gene: { __typename: 'Gene', id: number, name: string, link: string }, sources: Array<{ __typename: 'Source', id: number, citation?: string | undefined, sourceUrl?: string | undefined, displayType: string, sourceType: SourceSource }>, variantTypes: Array<{ __typename: 'VariantType', id: number, link: string, soid: string, name: string }>, primaryCoordinates?: { __typename: 'Coordinate', representativeTranscript?: string | undefined, chromosome?: string | undefined, start?: number | undefined, stop?: number | undefined } | undefined, secondaryCoordinates?: { __typename: 'Coordinate', representativeTranscript?: string | undefined, chromosome?: string | undefined, start?: number | undefined, stop?: number | undefined } | undefined, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number }, myVariantInfo?: { __typename: 'MyVariantInfo', myVariantInfoId: string, caddConsequence: Array, caddDetail: Array, caddScore?: number | undefined, clinvarClinicalSignificance: Array, clinvarHgvsCoding: Array, clinvarHgvsGenomic: Array, clinvarHgvsNonCoding: Array, clinvarHgvsProtein: Array, clinvarId?: number | undefined, clinvarOmim?: string | undefined, cosmicId?: string | undefined, dbnsfpInterproDomain: Array, dbsnpRsid?: string | undefined, eglClass?: string | undefined, eglHgvs: Array, eglProtein?: string | undefined, eglTranscript?: string | undefined, exacAlleleCount?: number | undefined, exacAlleleFrequency?: number | undefined, exacAlleleNumber?: number | undefined, fathmmMklPrediction?: string | undefined, fathmmMklScore?: number | undefined, fathmmPrediction: Array, fathmmScore: Array, fitconsScore?: number | undefined, gerp?: number | undefined, gnomadExomeAlleleCount?: number | undefined, gnomadExomeAlleleFrequency?: number | undefined, gnomadExomeAlleleNumber?: number | undefined, gnomadExomeFilter?: string | undefined, gnomadGenomeAlleleCount?: number | undefined, gnomadGenomeAlleleFrequency?: number | undefined, gnomadGenomeAlleleNumber?: number | undefined, gnomadGenomeFilter?: string | undefined, lrtPrediction?: string | undefined, lrtScore?: number | undefined, metalrPrediction?: string | undefined, metalrScore?: number | undefined, metasvmPrediction?: string | undefined, metasvmScore?: number | undefined, mutationassessorPrediction: Array, mutationassessorScore: Array, mutationtasterPrediction: Array, mutationtasterScore: Array, phastcons100way?: number | undefined, phastcons30way?: number | undefined, phyloP100way?: number | undefined, phyloP30way?: number | undefined, polyphen2HdivPrediction: Array, polyphen2HdivScore: Array, polyphen2HvarPrediction: Array, polyphen2HvarScore: Array, proveanPrediction: Array, proveanScore: Array, revelScore?: number | undefined, siftPrediction: Array, siftScore: Array, siphy?: number | undefined, snpeffSnpEffect: Array, snpeffSnpImpact: Array } | undefined, lastSubmittedRevisionEvent?: { __typename: 'Event', originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined, lastAcceptedRevisionEvent?: { __typename: 'Event', originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined } | undefined }; + +export type VariantSummaryFieldsFragment = { __typename: 'Variant', id: number, name: string, description?: string | undefined, variantAliases: Array, alleleRegistryId?: string | undefined, hgvsDescriptions: Array, clinvarIds: Array, evidenceScore: number, referenceBuild?: ReferenceBuild | undefined, ensemblVersion?: number | undefined, referenceBases?: string | undefined, variantBases?: string | undefined, gene: { __typename: 'Gene', id: number, name: string, link: string }, sources: Array<{ __typename: 'Source', id: number, citation?: string | undefined, sourceUrl?: string | undefined, displayType: string, sourceType: SourceSource }>, variantTypes: Array<{ __typename: 'VariantType', id: number, link: string, soid: string, name: string }>, primaryCoordinates?: { __typename: 'Coordinate', representativeTranscript?: string | undefined, chromosome?: string | undefined, start?: number | undefined, stop?: number | undefined } | undefined, secondaryCoordinates?: { __typename: 'Coordinate', representativeTranscript?: string | undefined, chromosome?: string | undefined, start?: number | undefined, stop?: number | undefined } | undefined, flags: { __typename: 'FlagConnection', totalCount: number }, revisions: { __typename: 'RevisionConnection', totalCount: number }, comments: { __typename: 'CommentConnection', totalCount: number }, myVariantInfo?: { __typename: 'MyVariantInfo', myVariantInfoId: string, caddConsequence: Array, caddDetail: Array, caddScore?: number | undefined, clinvarClinicalSignificance: Array, clinvarHgvsCoding: Array, clinvarHgvsGenomic: Array, clinvarHgvsNonCoding: Array, clinvarHgvsProtein: Array, clinvarId?: number | undefined, clinvarOmim?: string | undefined, cosmicId?: string | undefined, dbnsfpInterproDomain: Array, dbsnpRsid?: string | undefined, eglClass?: string | undefined, eglHgvs: Array, eglProtein?: string | undefined, eglTranscript?: string | undefined, exacAlleleCount?: number | undefined, exacAlleleFrequency?: number | undefined, exacAlleleNumber?: number | undefined, fathmmMklPrediction?: string | undefined, fathmmMklScore?: number | undefined, fathmmPrediction: Array, fathmmScore: Array, fitconsScore?: number | undefined, gerp?: number | undefined, gnomadExomeAlleleCount?: number | undefined, gnomadExomeAlleleFrequency?: number | undefined, gnomadExomeAlleleNumber?: number | undefined, gnomadExomeFilter?: string | undefined, gnomadGenomeAlleleCount?: number | undefined, gnomadGenomeAlleleFrequency?: number | undefined, gnomadGenomeAlleleNumber?: number | undefined, gnomadGenomeFilter?: string | undefined, lrtPrediction?: string | undefined, lrtScore?: number | undefined, metalrPrediction?: string | undefined, metalrScore?: number | undefined, metasvmPrediction?: string | undefined, metasvmScore?: number | undefined, mutationassessorPrediction: Array, mutationassessorScore: Array, mutationtasterPrediction: Array, mutationtasterScore: Array, phastcons100way?: number | undefined, phastcons30way?: number | undefined, phyloP100way?: number | undefined, phyloP30way?: number | undefined, polyphen2HdivPrediction: Array, polyphen2HdivScore: Array, polyphen2HvarPrediction: Array, polyphen2HvarScore: Array, proveanPrediction: Array, proveanScore: Array, revelScore?: number | undefined, siftPrediction: Array, siftScore: Array, siphy?: number | undefined, snpeffSnpEffect: Array, snpeffSnpImpact: Array } | undefined, lastSubmittedRevisionEvent?: { __typename: 'Event', originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined, lastAcceptedRevisionEvent?: { __typename: 'Event', originatingUser: { __typename: 'User', id: number, displayName: string, role: UserRole, profileImagePath?: string | undefined } } | undefined }; + +export type MyVariantInfoFieldsFragment = { __typename: 'MyVariantInfo', myVariantInfoId: string, caddConsequence: Array, caddDetail: Array, caddScore?: number | undefined, clinvarClinicalSignificance: Array, clinvarHgvsCoding: Array, clinvarHgvsGenomic: Array, clinvarHgvsNonCoding: Array, clinvarHgvsProtein: Array, clinvarId?: number | undefined, clinvarOmim?: string | undefined, cosmicId?: string | undefined, dbnsfpInterproDomain: Array, dbsnpRsid?: string | undefined, eglClass?: string | undefined, eglHgvs: Array, eglProtein?: string | undefined, eglTranscript?: string | undefined, exacAlleleCount?: number | undefined, exacAlleleFrequency?: number | undefined, exacAlleleNumber?: number | undefined, fathmmMklPrediction?: string | undefined, fathmmMklScore?: number | undefined, fathmmPrediction: Array, fathmmScore: Array, fitconsScore?: number | undefined, gerp?: number | undefined, gnomadExomeAlleleCount?: number | undefined, gnomadExomeAlleleFrequency?: number | undefined, gnomadExomeAlleleNumber?: number | undefined, gnomadExomeFilter?: string | undefined, gnomadGenomeAlleleCount?: number | undefined, gnomadGenomeAlleleFrequency?: number | undefined, gnomadGenomeAlleleNumber?: number | undefined, gnomadGenomeFilter?: string | undefined, lrtPrediction?: string | undefined, lrtScore?: number | undefined, metalrPrediction?: string | undefined, metalrScore?: number | undefined, metasvmPrediction?: string | undefined, metasvmScore?: number | undefined, mutationassessorPrediction: Array, mutationassessorScore: Array, mutationtasterPrediction: Array, mutationtasterScore: Array, phastcons100way?: number | undefined, phastcons30way?: number | undefined, phyloP100way?: number | undefined, phyloP30way?: number | undefined, polyphen2HdivPrediction: Array, polyphen2HdivScore: Array, polyphen2HvarPrediction: Array, polyphen2HvarScore: Array, proveanPrediction: Array, proveanScore: Array, revelScore?: number | undefined, siftPrediction: Array, siftScore: Array, siphy?: number | undefined, snpeffSnpEffect: Array, snpeffSnpImpact: Array }; export const AssertionPopoverFragmentDoc = gql` fragment assertionPopover on Assertion { @@ -8308,6 +5850,10 @@ export const AssertionPopoverFragmentDoc = gql` code description } + clingenCodes { + code + description + } nccnGuideline { id name @@ -8353,8 +5899,8 @@ export const AssertionPopoverFragmentDoc = gql` } } `; -export const AssertionBrowseTableRowFieldsFragmentDoc = gql` - fragment AssertionBrowseTableRowFields on Assertion { +export const AssertionBrowseFieldsFragmentDoc = gql` + fragment AssertionBrowseFields on Assertion { id name link @@ -8378,28 +5924,12 @@ export const AssertionBrowseTableRowFieldsFragmentDoc = gql` name link } - phenotypes @include(if: $cardView) { - id - name - link - } drugInteractionType summary assertionType assertionDirection clinicalSignificance ampLevel - acmgCodes @include(if: $cardView) { - code - } - fdaCompanionTest @include(if: $cardView) - regulatoryApproval @include(if: $cardView) - regulatoryApprovalLastUpdated @include(if: $cardView) - nccnGuideline @include(if: $cardView) { - id - name - } - variantOrigin @include(if: $cardView) evidenceItemsCount status } @@ -8670,28 +6200,6 @@ export const EvidenceGridFieldsFragmentDoc = gql` name link } - phenotypes @include(if: $cardView) { - id - name - link - } - source @include(if: $cardView) { - id - citation - citationId - sourceType - sourceUrl - clinicalTrials { - nctId - id - } - link - } - assertions @include(if: $cardView) { - id - name - link - } status drugInteractionType description @@ -8838,8 +6346,8 @@ export const GenePopoverFragmentDoc = gql` } } `; -export const GeneBrowseTableRowFieldsFragmentDoc = gql` - fragment GeneBrowseTableRowFields on BrowseGene { +export const BrowseGenesFieldsFragmentDoc = gql` + fragment BrowseGenesFields on BrowseGene { id entrezId name @@ -8881,8 +6389,7 @@ export const OrganizationBrowseTableRowFieldsFragmentDoc = gql` fragment OrganizationBrowseTableRowFields on Organization { id name - description @include(if: $cardView) - profileImagePath(size: 256) @include(if: $cardView) + description url memberCount eventCount @@ -8893,16 +6400,6 @@ export const OrganizationBrowseTableRowFieldsFragmentDoc = gql` mostRecentEvent { createdAt } - orgStatsHash @include(if: $cardView) { - comments - revisions - appliedRevisions - submittedEvidenceItems - acceptedEvidenceItems - suggestedSources - submittedAssertions - acceptedAssertions - } } `; export const PhenotypeBrowseTableRowFieldsFragmentDoc = gql` @@ -9237,6 +6734,28 @@ export const VariantTypeBrowseTableRowFieldsFragmentDoc = gql` link } `; +export const CoordinatesCardFieldsFragmentDoc = gql` + fragment CoordinatesCardFields on Variant { + id + name + referenceBuild + ensemblVersion + primaryCoordinates { + representativeTranscript + chromosome + start + stop + } + secondaryCoordinates { + representativeTranscript + chromosome + start + stop + } + referenceBases + variantBases +} + `; export const VariantPopoverFieldsFragmentDoc = gql` fragment variantPopoverFields on Variant { id @@ -9270,8 +6789,8 @@ export const MenuVariantFragmentDoc = gql` link } `; -export const VariantGridFieldsFragmentDoc = gql` - fragment VariantGridFields on BrowseVariant { +export const BrowseVariantsFieldsFragmentDoc = gql` + fragment BrowseVariantsFields on BrowseVariant { id name link @@ -9340,6 +6859,11 @@ export const RevisableAssertionFieldsFragmentDoc = gql` code description } + clingenCodes { + id + code + description + } nccnGuideline { id name @@ -9686,6 +7210,11 @@ export const AssertionSummaryFieldsFragmentDoc = gql` code description } + clingenCodes { + id + code + description + } nccnGuideline { id name @@ -10072,7 +7601,9 @@ export const SourceDetailFieldsFragmentDoc = gql` export const SourceSummaryFieldsFragmentDoc = gql` fragment SourceSummaryFields on Source { id + citation displayType + sourceUrl title abstract publicationDate @@ -10313,6 +7844,7 @@ export const VariantSummaryFieldsFragmentDoc = gql` gene { id name + link } sources { id @@ -10397,7 +7929,7 @@ export const AssertionPopoverDocument = gql` } } export const AssertionsBrowseDocument = gql` - query AssertionsBrowse($first: Int, $last: Int, $before: String, $after: String, $diseaseName: String, $drugName: String, $id: Int, $summary: String, $assertionDirection: EvidenceDirection, $clinicalSignificance: EvidenceClinicalSignificance, $assertionType: EvidenceType, $variantId: Int, $evidenceId: Int, $geneName: String, $variantName: String, $sortBy: AssertionSort, $ampLevel: AmpLevel, $organizationId: Int, $userId: Int, $phenotypeId: Int, $diseaseId: Int, $drugId: Int, $status: EvidenceStatusFilter, $cardView: Boolean!) { + query AssertionsBrowse($first: Int, $last: Int, $before: String, $after: String, $diseaseName: String, $drugName: String, $id: Int, $summary: String, $assertionDirection: EvidenceDirection, $clinicalSignificance: EvidenceClinicalSignificance, $assertionType: EvidenceType, $variantId: Int, $evidenceId: Int, $geneName: String, $variantName: String, $sortBy: AssertionSort, $ampLevel: AmpLevel, $organizationId: Int, $userId: Int, $phenotypeId: Int, $diseaseId: Int, $drugId: Int, $status: EvidenceStatusFilter) { assertions( first: $first last: $last @@ -10433,12 +7965,12 @@ export const AssertionsBrowseDocument = gql` edges { cursor node { - ...AssertionBrowseTableRowFields + ...AssertionBrowseFields } } } } - ${AssertionBrowseTableRowFieldsFragmentDoc}`; + ${AssertionBrowseFieldsFragmentDoc}`; @Injectable({ providedIn: 'root' @@ -10804,7 +8336,7 @@ export const EvidencePopoverDocument = gql` } } export const EvidenceBrowseDocument = gql` - query EvidenceBrowse($first: Int, $last: Int, $before: String, $after: String, $diseaseName: String, $drugName: String, $id: Int, $description: String, $evidenceLevel: EvidenceLevel, $evidenceDirection: EvidenceDirection, $clinicalSignificance: EvidenceClinicalSignificance, $evidenceType: EvidenceType, $rating: Int, $variantOrigin: VariantOrigin, $variantId: Int, $assertionId: Int, $organizationId: Int, $userId: Int, $sortBy: EvidenceSort, $phenotypeId: Int, $diseaseId: Int, $drugId: Int, $sourceId: Int, $clinicalTrialId: Int, $geneSymbol: String, $variantName: String, $status: EvidenceStatusFilter, $cardView: Boolean!) { + query EvidenceBrowse($first: Int, $last: Int, $before: String, $after: String, $diseaseName: String, $drugName: String, $id: Int, $description: String, $evidenceLevel: EvidenceLevel, $evidenceDirection: EvidenceDirection, $clinicalSignificance: EvidenceClinicalSignificance, $evidenceType: EvidenceType, $rating: Int, $variantOrigin: VariantOrigin, $variantId: Int, $assertionId: Int, $organizationId: Int, $userId: Int, $sortBy: EvidenceSort, $phenotypeId: Int, $diseaseId: Int, $drugId: Int, $sourceId: Int, $clinicalTrialId: Int, $geneSymbol: String, $variantName: String, $status: EvidenceStatusFilter) { evidenceItems( first: $first last: $last @@ -10941,7 +8473,7 @@ export const BrowseGenesDocument = gql` edges { cursor node { - ...GeneBrowseTableRowFields + ...BrowseGenesFields } } pageInfo { @@ -10955,7 +8487,7 @@ export const BrowseGenesDocument = gql` pageCount } } - ${GeneBrowseTableRowFieldsFragmentDoc}`; + ${BrowseGenesFieldsFragmentDoc}`; @Injectable({ providedIn: 'root' @@ -11004,7 +8536,7 @@ export const OrgPopoverDocument = gql` } } export const OrganizationsBrowseDocument = gql` - query OrganizationsBrowse($first: Int, $last: Int, $before: String, $after: String, $id: Int, $orgName: String, $sortBy: OrganizationSort, $cardView: Boolean!) { + query OrganizationsBrowse($first: Int, $last: Int, $before: String, $after: String, $id: Int, $orgName: String, $sortBy: OrganizationSort) { organizations( first: $first last: $last @@ -11670,6 +9202,24 @@ export const VariantTypesBrowseDocument = gql` export class VariantTypesBrowseGQL extends Apollo.Query { document = VariantTypesBrowseDocument; + constructor(apollo: Apollo.Apollo) { + super(apollo); + } + } +export const CoordinatesCardDocument = gql` + query CoordinatesCard($variantId: Int!) { + variant(id: $variantId) { + ...CoordinatesCardFields + } +} + ${CoordinatesCardFieldsFragmentDoc}`; + + @Injectable({ + providedIn: 'root' + }) + export class CoordinatesCardGQL extends Apollo.Query { + document = CoordinatesCardDocument; + constructor(apollo: Apollo.Apollo) { super(apollo); } @@ -11756,7 +9306,7 @@ export const BrowseVariantsDocument = gql` edges { cursor node { - ...VariantGridFields + ...BrowseVariantsFields } } totalCount @@ -11764,7 +9314,7 @@ export const BrowseVariantsDocument = gql` pageCount } } - ${VariantGridFieldsFragmentDoc}`; + ${BrowseVariantsFieldsFragmentDoc}`; @Injectable({ providedIn: 'root' @@ -11978,6 +9528,26 @@ export const AcmgCodeTypeaheadDocument = gql` export class AcmgCodeTypeaheadGQL extends Apollo.Query { document = AcmgCodeTypeaheadDocument; + constructor(apollo: Apollo.Apollo) { + super(apollo); + } + } +export const ClingenCodeTypeaheadDocument = gql` + query ClingenCodeTypeahead($code: String!) { + clingenCodesTypeahead(queryTerm: $code) { + id + code + description + } +} + `; + + @Injectable({ + providedIn: 'root' + }) + export class ClingenCodeTypeaheadGQL extends Apollo.Query { + document = ClingenCodeTypeaheadDocument; + constructor(apollo: Apollo.Apollo) { super(apollo); } @@ -12891,6 +10461,29 @@ export const ClinicalTrialDetailDocument = gql` export class ClinicalTrialDetailGQL extends Apollo.Query { document = ClinicalTrialDetailDocument; + constructor(apollo: Apollo.Apollo) { + super(apollo); + } + } +export const ClinicalTrialSummaryDocument = gql` + query ClinicalTrialSummary($clinicalTrialId: Int!) { + clinicalTrial(id: $clinicalTrialId) { + id + name + nctId + description + url + link + } +} + `; + + @Injectable({ + providedIn: 'root' + }) + export class ClinicalTrialSummaryGQL extends Apollo.Query { + document = ClinicalTrialSummaryDocument; + constructor(apollo: Apollo.Apollo) { super(apollo); } diff --git a/client/src/app/generated/civic.icons.ts b/client/src/app/generated/civic.icons.ts index 6e62970a5..90711963a 100644 --- a/client/src/app/generated/civic.icons.ts +++ b/client/src/app/generated/civic.icons.ts @@ -76,6 +76,13 @@ export const civicLikelybenignOutline: { name: 'likelybenignOutline', data: `` }; +export const civicLikelyoncogenicOutline: { + name: 'likelyoncogenicOutline'; + data: string; +} = { + name: 'likelyoncogenicOutline', + data: `` +}; export const civicLikelypathogenicOutline: { name: 'likelypathogenicOutline'; data: string; @@ -111,11 +118,18 @@ export const civicNeomorphicOutline: { name: 'neomorphicOutline', data: `` }; -export const civicOncogenicOutline: { - name: 'oncogenicOutline'; +export const civicOncogenicsignificanceOutline: { + name: 'oncogenicsignificanceOutline'; data: string; } = { - name: 'oncogenicOutline', + name: 'oncogenicsignificanceOutline', + data: `` +}; +export const civicOncogenictypeOutline: { + name: 'oncogenictypeOutline'; + data: string; +} = { + name: 'oncogenictypeOutline', data: `` }; export const civicPathogenicOutline: { @@ -160,6 +174,13 @@ export const civicPrognosticOutline: { name: 'prognosticOutline', data: `` }; +export const civicProtectiveOutline: { + name: 'protectiveOutline'; + data: string; +} = { + name: 'protectiveOutline', + data: `` +}; export const civicRaregermlineOutline: { name: 'raregermlineOutline'; data: string; @@ -475,6 +496,13 @@ export const civicEvidenceOutline: { name: 'evidenceOutline', data: `` }; +export const civicEvidenceitemOutline: { + name: 'evidenceitemOutline'; + data: string; +} = { + name: 'evidenceitemOutline', + data: `` +}; export const civicFlagOutline: { name: 'flagOutline'; data: string; @@ -636,6 +664,13 @@ export const civicEvidenceTwotone: { name: 'evidenceTwotone', data: `` }; +export const civicEvidenceitemTwotone: { + name: 'evidenceitemTwotone'; + data: string; +} = { + name: 'evidenceitemTwotone', + data: `` +}; export const civicFlagTwotone: { name: 'flagTwotone'; data: string; @@ -739,18 +774,21 @@ export const CivicIcon = { functionalOutline: 'functionalOutline', gainoffunctionOutline: 'gainoffunctionOutline', likelybenignOutline: 'likelybenignOutline', + likelyoncogenicOutline: 'likelyoncogenicOutline', likelypathogenicOutline: 'likelypathogenicOutline', lossoffunctionOutline: 'lossoffunctionOutline', naOutline: 'naOutline', negativeOutline: 'negativeOutline', neomorphicOutline: 'neomorphicOutline', - oncogenicOutline: 'oncogenicOutline', + oncogenicsignificanceOutline: 'oncogenicsignificanceOutline', + oncogenictypeOutline: 'oncogenictypeOutline', pathogenicOutline: 'pathogenicOutline', pooroutcomeOutline: 'pooroutcomeOutline', positiveOutline: 'positiveOutline', predictiveOutline: 'predictiveOutline', predisposingOutline: 'predisposingOutline', prognosticOutline: 'prognosticOutline', + protectiveOutline: 'protectiveOutline', raregermlineOutline: 'raregermlineOutline', reducedsensitivityOutline: 'reducedsensitivityOutline', resistanceOutline: 'resistanceOutline', @@ -796,6 +834,7 @@ export const CivicIcon = { editorOutline: 'editorOutline', eventOutline: 'eventOutline', evidenceOutline: 'evidenceOutline', + evidenceitemOutline: 'evidenceitemOutline', flagOutline: 'flagOutline', geneOutline: 'geneOutline', interventionOutline: 'interventionOutline', @@ -819,6 +858,7 @@ export const CivicIcon = { editorTwotone: 'editorTwotone', eventTwotone: 'eventTwotone', evidenceTwotone: 'evidenceTwotone', + evidenceitemTwotone: 'evidenceitemTwotone', flagTwotone: 'flagTwotone', geneTwotone: 'geneTwotone', interventionTwotone: 'interventionTwotone', diff --git a/client/src/app/generated/civic.possible-types.ts b/client/src/app/generated/civic.possible-types.ts new file mode 100644 index 000000000..079d63b85 --- /dev/null +++ b/client/src/app/generated/civic.possible-types.ts @@ -0,0 +1,70 @@ + + export interface PossibleTypesResultData { + possibleTypes: { + [key: string]: string[] + } + } + const result: PossibleTypesResultData = { + "possibleTypes": { + "CommentBodySegment": [ + "CommentTagSegment", + "CommentTextSegment", + "User" + ], + "Commentable": [ + "Assertion", + "EvidenceItem", + "Flag", + "Gene", + "Revision", + "Source", + "SourcePopover", + "Variant", + "VariantGroup" + ], + "EventOriginObject": [ + "Assertion", + "Comment", + "EvidenceItem", + "Flag", + "Revision", + "SourceSuggestion", + "Variant" + ], + "EventSubject": [ + "Assertion", + "EvidenceItem", + "Gene", + "Revision", + "Source", + "SourcePopover", + "SourceSuggestion", + "Variant", + "VariantGroup" + ], + "Flaggable": [ + "Assertion", + "EvidenceItem", + "Gene", + "Variant", + "VariantGroup" + ], + "ModeratedField": [ + "ObjectField", + "ScalarField" + ], + "ModeratedFieldDiff": [ + "ObjectFieldDiff", + "ScalarFieldDiff" + ], + "WithRevisions": [ + "Assertion", + "EvidenceItem", + "Gene", + "Variant", + "VariantGroup" + ] + } +}; + export default result; + \ No newline at end of file diff --git a/client/src/app/generated/server.model.graphql b/client/src/app/generated/server.model.graphql index c44c86187..2aad976df 100644 --- a/client/src/app/generated/server.model.graphql +++ b/client/src/app/generated/server.model.graphql @@ -288,6 +288,7 @@ type Assertion implements Commentable & EventOriginObject & EventSubject & Flagg ampLevel: AmpLevel assertionDirection: AssertionDirection! assertionType: AssertionType! + clingenCodes: [ClingenCode!]! clinicalSignificance: AssertionClinicalSignificance! """ @@ -501,9 +502,11 @@ enum AssertionClinicalSignificance { BENIGN BETTER_OUTCOME LIKELY_BENIGN + LIKELY_ONCOGENIC LIKELY_PATHOGENIC NA NEGATIVE + ONCOGENIC PATHOGENIC POOR_OUTCOME POSITIVE @@ -587,6 +590,11 @@ input AssertionFields { """ assertionType: AssertionType! + """ + List of CIViC IDs for the ClinGen/CGC/VICC codes associated with this Assertion + """ + clingenCodeIds: [Int!]! + """ The Clinical Significance of the Assertion """ @@ -692,6 +700,7 @@ enum AssertionSortColumns { enum AssertionType { DIAGNOSTIC + ONCOGENIC PREDICTIVE PREDISPOSING PROGNOSTIC @@ -1281,6 +1290,12 @@ type CivicTimepointStats { variants: TimePointCounts! } +type ClingenCode { + code: String! + description: String! + id: Int! +} + type ClinicalTrial { description: String! id: Int! @@ -1945,9 +1960,12 @@ enum EvidenceClinicalSignificance { NA NEGATIVE NEOMORPHIC + ONCOGENICITY PATHOGENIC POOR_OUTCOME POSITIVE + PREDISPOSITION + PROTECTIVENESS REDUCED_SENSITIVITY RESISTANCE SENSITIVITYRESPONSE @@ -4156,6 +4174,11 @@ type Query { variantTypeId: Int ): BrowseVariantConnection! + """ + Retrieve Clingen Code options as a typeahead + """ + clingenCodesTypeahead(queryTerm: String!): [ClingenCode!]! + """ Find a clinical trial by CIViC ID """ diff --git a/client/src/app/generated/server.possible-types.ts b/client/src/app/generated/server.possible-types.ts deleted file mode 100644 index ccacca340..000000000 --- a/client/src/app/generated/server.possible-types.ts +++ /dev/null @@ -1,194 +0,0 @@ - - export interface IntrospectionResultData { - __schema: { - types: { - kind: string; - name: string; - possibleTypes: { - name: string; - }[]; - }[]; - }; - } - const result: IntrospectionResultData = { - "__schema": { - "types": [ - { - "kind": "UNION", - "name": "CommentBodySegment", - "possibleTypes": [ - { - "name": "CommentTagSegment" - }, - { - "name": "CommentTextSegment" - }, - { - "name": "User" - } - ] - }, - { - "kind": "INTERFACE", - "name": "Commentable", - "possibleTypes": [ - { - "name": "Assertion" - }, - { - "name": "EvidenceItem" - }, - { - "name": "Flag" - }, - { - "name": "Gene" - }, - { - "name": "Revision" - }, - { - "name": "Source" - }, - { - "name": "SourcePopover" - }, - { - "name": "Variant" - }, - { - "name": "VariantGroup" - } - ] - }, - { - "kind": "INTERFACE", - "name": "EventOriginObject", - "possibleTypes": [ - { - "name": "Assertion" - }, - { - "name": "Comment" - }, - { - "name": "EvidenceItem" - }, - { - "name": "Flag" - }, - { - "name": "Revision" - }, - { - "name": "SourceSuggestion" - }, - { - "name": "Variant" - } - ] - }, - { - "kind": "INTERFACE", - "name": "EventSubject", - "possibleTypes": [ - { - "name": "Assertion" - }, - { - "name": "EvidenceItem" - }, - { - "name": "Gene" - }, - { - "name": "Revision" - }, - { - "name": "Source" - }, - { - "name": "SourcePopover" - }, - { - "name": "SourceSuggestion" - }, - { - "name": "Variant" - }, - { - "name": "VariantGroup" - } - ] - }, - { - "kind": "INTERFACE", - "name": "Flaggable", - "possibleTypes": [ - { - "name": "Assertion" - }, - { - "name": "EvidenceItem" - }, - { - "name": "Gene" - }, - { - "name": "Variant" - }, - { - "name": "VariantGroup" - } - ] - }, - { - "kind": "UNION", - "name": "ModeratedField", - "possibleTypes": [ - { - "name": "ObjectField" - }, - { - "name": "ScalarField" - } - ] - }, - { - "kind": "UNION", - "name": "ModeratedFieldDiff", - "possibleTypes": [ - { - "name": "ObjectFieldDiff" - }, - { - "name": "ScalarFieldDiff" - } - ] - }, - { - "kind": "INTERFACE", - "name": "WithRevisions", - "possibleTypes": [ - { - "name": "Assertion" - }, - { - "name": "EvidenceItem" - }, - { - "name": "Gene" - }, - { - "name": "Variant" - }, - { - "name": "VariantGroup" - } - ] - } - ] - } -}; - export default result; - \ No newline at end of file diff --git a/client/src/app/generated/server.schema.json b/client/src/app/generated/server.schema.json index 7d68798a9..1be1a4775 100644 --- a/client/src/app/generated/server.schema.json +++ b/client/src/app/generated/server.schema.json @@ -978,6 +978,30 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "clingenCodes", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ClingenCode", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "clinicalSignificance", "description": null, @@ -2001,6 +2025,18 @@ "description": null, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "ONCOGENIC", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "LIKELY_ONCOGENIC", + "description": null, + "isDeprecated": false, + "deprecationReason": null } ], "possibleTypes": null @@ -2484,6 +2520,30 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "clingenCodeIds", + "description": "List of CIViC IDs for the ClinGen/CGC/VICC codes associated with this Assertion", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + } + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "fdaCompanionTest", "description": "Is an FDA companion test available that pertains to this Assertion.", @@ -2678,6 +2738,12 @@ "description": null, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "ONCOGENIC", + "description": null, + "isDeprecated": false, + "deprecationReason": null } ], "possibleTypes": null @@ -5818,6 +5884,65 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "OBJECT", + "name": "ClingenCode", + "description": null, + "fields": [ + { + "name": "code", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "Int", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, { "kind": "OBJECT", "name": "ClinicalTrial", @@ -9632,6 +9757,24 @@ "description": null, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "PREDISPOSITION", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PROTECTIVENESS", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ONCOGENICITY", + "description": null, + "isDeprecated": false, + "deprecationReason": null } ], "possibleTypes": null @@ -18944,6 +19087,47 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "clingenCodesTypeahead", + "description": "Retrieve Clingen Code options as a typeahead", + "args": [ + { + "name": "queryTerm", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "ClingenCode", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "clinicalTrial", "description": "Find a clinical trial by CIViC ID", diff --git a/client/src/app/graphql/graphql.module.ts b/client/src/app/graphql/graphql.module.ts index 5e2ba6396..d67dcdf9b 100644 --- a/client/src/app/graphql/graphql.module.ts +++ b/client/src/app/graphql/graphql.module.ts @@ -1,25 +1,21 @@ import { NgModule } from '@angular/core'; -import { HttpLink } from 'apollo-angular/http'; - -import { APOLLO_OPTIONS } from 'apollo-angular'; +import { TypePolicies } from '@apollo/client/cache'; import { ApolloClientOptions, ApolloLink, InMemoryCache } from '@apollo/client/core'; -import { PossibleTypesMap, TypePolicies } from '@apollo/client/cache'; -import { CvcTypePolicies } from './graphql.type-policies'; +import result from '@app/generated/civic.possible-types'; +import { ApolloModule, APOLLO_FLAGS, APOLLO_OPTIONS } from 'apollo-angular'; +import { HttpLink } from 'apollo-angular/http'; +import { CvcTypePolicies } from './graphql.type-policies'; -import { - default as result, - IntrospectionResultData, -} from '@app/generated/server.possible-types'; -const uri = '/api/graphql'; // <-- add the URL of the GraphQL server here +const uri = '/api/graphql'; // <-- URL of the GraphQL server const typePolicies: TypePolicies = CvcTypePolicies; export function createApollo(httpLink: HttpLink): ApolloClientOptions { - let http = httpLink.create({ uri: uri, withCredentials: true}) + let http = httpLink.create({ uri: uri, withCredentials: true }) - const analyticsLink = new ApolloLink((operation, forward) => { + const analyticsLink = new ApolloLink((operation, forward) => { operation.setContext({ headers: { 'Civic-Client-Name': 'civic-frontend' @@ -31,21 +27,30 @@ export function createApollo(httpLink: HttpLink): ApolloClientOptions { return { link: analyticsLink.concat(http), cache: new InMemoryCache({ - possibleTypes: introspectionToPossibleTypes(result), + possibleTypes: result.possibleTypes, typePolicies: typePolicies }), defaultOptions: { watchQuery: { - fetchPolicy: 'cache-first', + fetchPolicy: 'cache-and-network', + nextFetchPolicy: 'cache-first', errorPolicy: 'all', - notifyOnNetworkStatusChange: false, + notifyOnNetworkStatusChange: true, + // returnPartialData: true }, }, }; } @NgModule({ + imports: [ApolloModule], providers: [ + { + provide: APOLLO_FLAGS, + useValue: { + useInitialLoading: true, // enable it here + }, + }, { provide: APOLLO_OPTIONS, useFactory: createApollo, @@ -53,25 +58,4 @@ export function createApollo(httpLink: HttpLink): ApolloClientOptions { }, ], }) -export class GraphQLModule {} - -/** - * Extracts `PossibleTypesMap` as accepted by `@apollo/client` from GraphQL introspection query result. From: https://github.com/apollographql/apollo-client/issues/6855 - */ -const introspectionToPossibleTypes = ( - introspectionResultData: IntrospectionResultData -): PossibleTypesMap => { - const possibleTypes: PossibleTypesMap = {}; - - introspectionResultData.__schema.types.forEach((supertype) => { - if (supertype.possibleTypes) { - possibleTypes[supertype.name] = supertype.possibleTypes.map((subtype) => { - return subtype.name; - }); - } - }); - - return possibleTypes; -}; - -export default introspectionToPossibleTypes; +export class GraphQLModule { } diff --git a/client/src/app/icons-provider.module.ts b/client/src/app/icons-provider.module.ts index c9244b5c5..24b258a95 100644 --- a/client/src/app/icons-provider.module.ts +++ b/client/src/app/icons-provider.module.ts @@ -57,6 +57,8 @@ import { civicEvidenceFullcolor, civicEvidenceOutline, civicEvidenceTwotone, + civicEvidenceitemOutline, + civicEvidenceitemTwotone, civicFlagFullcolor, civicFlagOutline, civicFlagTwotone, @@ -77,7 +79,8 @@ import { civicNaOutline, civicNegativeOutline, civicNeomorphicOutline, - civicOncogenicOutline, + civicOncogenictypeOutline, + civicOncogenicsignificanceOutline, civicOrganizationFullcolor, civicOrganizationOutline, civicOrganizationTwotone, @@ -120,6 +123,8 @@ import { civicVarianttypeFullcolor, civicVarianttypeOutline, civicVarianttypeTwotone, + civicLikelyoncogenicOutline, + civicProtectiveOutline, } from '@app/generated/civic.icons'; const iconLiterals = [ @@ -152,7 +157,9 @@ const iconLiterals = [ civicEventOutline, civicEventTwotone, civicEvidenceOutline, + civicEvidenceitemOutline, civicEvidenceTwotone, + civicEvidenceitemTwotone, civicFlagOutline, civicFlagTwotone, civicFunctionalOutline, @@ -169,7 +176,10 @@ const iconLiterals = [ civicNaOutline, civicNegativeOutline, civicNeomorphicOutline, - civicOncogenicOutline, + civicOncogenictypeOutline, + civicOncogenicsignificanceOutline, + civicLikelyoncogenicOutline, + civicProtectiveOutline, civicOrganizationOutline, civicOrganizationTwotone, civicPathogenicOutline, diff --git a/client/src/app/layout/layout.component.ts b/client/src/app/layout/layout.component.ts index 95f3672ad..3f30269ca 100644 --- a/client/src/app/layout/layout.component.ts +++ b/client/src/app/layout/layout.component.ts @@ -8,11 +8,10 @@ import { ViewerService } from '@app/core/services/viewer/viewer.service'; @Component({ selector: 'cvc-layout', templateUrl: './layout.component.html', - styleUrls: ['./layout.component.less'] + styleUrls: ['./layout.component.less'], }) export class LayoutComponent { isCollapsed = false; - data$!: Observable; viewer$!: Observable; signedIn$!: Observable; signedOut$!: Observable; @@ -22,7 +21,6 @@ export class LayoutComponent { constructor(private viewerService: ViewerService,) {} ngOnInit(): void { - this.data$ = this.viewerService.data$; this.viewer$ = this.viewerService.viewer$; this.signedIn$ = this.viewerService.signedIn$; this.signedOut$ = this.viewerService.signedOut$; diff --git a/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.module.ts b/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.module.ts index bb9ffbe8b..054a86429 100644 --- a/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.module.ts +++ b/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.module.ts @@ -20,6 +20,9 @@ import { CvcPhenotypeTagModule } from '@app/components/phenotypes/phenotype-tag/ import { TimeagoFormatter, TimeagoModule } from 'ngx-timeago'; import { CivicTimeagoFormatter } from '@app/core/utilities/timeago-formatter'; import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; +import { CvcAttributeTagModule } from '@app/components/shared/attribute-tag/attribute-tag.module'; +import { CvcVariantTagModule } from '@app/components/variants/variant-tag/variant-tag.module'; +import { CvcGeneTagModule } from '@app/components/genes/gene-tag/gene-tag.module'; @NgModule({ declarations: [AssertionsSummaryPage], @@ -39,11 +42,14 @@ import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; CvcPipesModule, CvcStatusTagModule, CvcUserTagModule, + CvcVariantTagModule, + CvcGeneTagModule, CvcTagListModule, CvcDrugTagModule, CvcEvidenceTableModule, CvcDiseaseTagModule, CvcPhenotypeTagModule, + CvcAttributeTagModule, TimeagoModule.forChild({ formatter: {useClass: CivicTimeagoFormatter, provide: TimeagoFormatter} }), ], exports: [AssertionsSummaryPage] diff --git a/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.page.html b/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.page.html index dd4480b29..01068b40f 100644 --- a/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.page.html +++ b/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.page.html @@ -1,142 +1,115 @@ - - - + + + + - - - - - - -

{{ assertion.summary }}

-
- - -

{{ assertion.description }}

-
- -
- - - - - - - {{ assertion.assertionType | evidenceEnumDisplay }} - - - - - {{ assertion.assertionDirection | evidenceEnumDisplay }} - - - - - {{ assertion.clinicalSignificance | evidenceEnumDisplay }} - - - - - - - - - - - {{ assertion.ampLevel | formatAmp: 'verbose' }} - - - - - - - - {{ code.code }} + + + + + + +

{{ assertion.summary }}

+
+ + +

{{ assertion.description }}

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ assertion.ampLevel | formatAmp: 'verbose' }} - - None provided + + + + + + + {{ code.code }} + + + None provided + -
-
- - - Not applicable - -
-
- -
- - - - - - - - - - - - - - - - {{ assertion.submissionEvent.createdAt | timeago }} by - - - - - - - - - - {{ assertion.acceptanceEvent.createdAt | timeago }} by - - - - {{ assertion.rejectionEvent.createdAt | timeago }} by - - - - - - - - - + + + + + + + {{code.code }} + + + None provided + + + - - - {{ assertion.variantOrigin | evidenceEnumDisplay }} - + + Not applicable + + - + None provided - + - +
+ - - + + + + + + + + + + + + + + + + + by + + + + Submitted + + ({{ assertion.submissionEvent.createdAt | timeago }}) + + - - - - + + + + + + + by + + + + Accepted + + ({{ assertion.acceptanceEvent.createdAt| timeago }}) + + + + + by {{ assertion.rejectionEvent.createdAt | timeago }} by + + + + Rejected + + ({{ assertion.rejectionEvent.createdAt | timeago }}) + + + - Not applicable - - - - - None Specified - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + Not applicable + + + + + Not applicable - - - - + nzType="secondary">None Specified + + - - + + - - +
+ + + + + + + + N/A + + + + + + + + + + + - - - - - - - - - - - (last updated {{ assertion.regulatoryApprovalLastUpdated | timeago }}) - - + - - - - - - (last updated {{ assertion.fdaCompanionTestLastUpdated | timeago }}) - - + + + {{ assertion.drugInteractionType | titlecase }} + + + + + + + + + (last updated {{ assertion.regulatoryApprovalLastUpdated | timeago }}) + + + + + + + + + (last updated {{ assertion.fdaCompanionTestLastUpdated | timeago }}) + + - - - {{ assertion.nccnGuideline.name }} ({{ assertion.nccnGuidelineVersion}}) - - None Provided - - + + + {{ assertion.nccnGuideline.name }} ({{ + assertion.nccnGuidelineVersion}}) + + None Provided + + + + - -
+ + + + + - - +
diff --git a/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.page.less b/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.page.less index e7b83fb20..bdd6adff2 100644 --- a/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.page.less +++ b/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.page.less @@ -1,4 +1,5 @@ @import "themes/global-variables.less"; +@import "themes/overrides/descriptions-overrides.less"; :host { display: block; diff --git a/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.page.ts b/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.page.ts index 6de600546..f7985c15a 100644 --- a/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.page.ts +++ b/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.page.ts @@ -4,6 +4,7 @@ import { AssertionSummaryGQL, Maybe, AssertionSummaryQuery, AssertionSummaryQuer import { QueryRef } from "apollo-angular"; import { pluck, startWith } from "rxjs/operators"; import { Observable } from "rxjs"; +import { AssertionState } from "@app/forms/config/states/assertion.state"; @Component({ selector: 'cvc-assertion-summary', @@ -17,7 +18,7 @@ export class AssertionsSummaryPage { loading$: Observable assertion$: Observable> - predisposingAssertionType$ = AssertionType.Predisposing + assertionRules = new AssertionState() subscribable: SubscribableInput diff --git a/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.query.gql b/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.query.gql index bcf08f34a..38f0361eb 100644 --- a/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.query.gql +++ b/client/src/app/views/assertions/assertions-detail/assertions-summary/assertions-summary.query.gql @@ -46,6 +46,11 @@ fragment AssertionSummaryFields on Assertion { code description } + clingenCodes { + id + code + description + } nccnGuideline { id name diff --git a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-detail.component.html b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-detail.component.html index 2148b0ecd..62bdd87ae 100644 --- a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-detail.component.html +++ b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-detail.component.html @@ -1,21 +1,18 @@ - - + + {{ t.name }} + nzType="civic:clinicaltrial"> {{ trial.nctId }} - - {{ t.nctId }} + {{ trial.nctId }} -
- {{ t.description }} - -
+
diff --git a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-detail.component.ts b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-detail.component.ts index 10c9748a5..9f9e46cd7 100644 --- a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-detail.component.ts +++ b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-detail.component.ts @@ -18,7 +18,7 @@ export class ClinicalTrialsDetailComponent implements OnDestroy { queryRef?: QueryRef loading$?: Observable; - clinicalTrial$?: Observable> + clinicalTrial$?: Observable>> constructor( private route: ActivatedRoute, private gql: ClinicalTrialDetailGQL) { this.routeSub = this.route.params.subscribe((params) => { diff --git a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-detail.query.gql b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-detail.query.gql index 6fb24137c..7c5cc2566 100644 --- a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-detail.query.gql +++ b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-detail.query.gql @@ -1,6 +1,4 @@ -query ClinicalTrialDetail( - $clinicalTrialId: Int! -){ +query ClinicalTrialDetail($clinicalTrialId: Int!){ clinicalTrial(id: $clinicalTrialId){ id name @@ -9,4 +7,4 @@ query ClinicalTrialDetail( url link } -} \ No newline at end of file +} diff --git a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.component.html b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.component.html index 9525d80de..86b95c9a7 100644 --- a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.component.html +++ b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.component.html @@ -1,10 +1,22 @@ - - - - - - - - + + + + + + {{ trial.description }} + + + + + + + + + + + + diff --git a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.component.less b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.component.less index 5d4e87f30..5dbc0af64 100644 --- a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.component.less +++ b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.component.less @@ -1,3 +1,4 @@ +@import "themes/overrides/descriptions-overrides.less"; :host { display: block; } diff --git a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.component.ts b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.component.ts index 4e6dc13b7..4c4de48b7 100644 --- a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.component.ts +++ b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.component.ts @@ -1,6 +1,10 @@ import { ChangeDetectionStrategy, Component, OnDestroy } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; -import { Subscription } from 'rxjs' +import { ClinicalTrial, ClinicalTrialSummaryGQL, ClinicalTrialSummaryQuery, ClinicalTrialSummaryQueryVariables, Maybe } from '@app/generated/civic.apollo'; +import { QueryRef } from 'apollo-angular/query-ref'; +import { Observable, Subscription } from 'rxjs' +import { isNonNulled } from 'rxjs-etc'; +import { filter, pluck, startWith } from 'rxjs/operators'; @Component({ selector: 'cvc-clinical-trials-summary', @@ -12,9 +16,30 @@ export class ClinicalTrialsSummaryComponent implements OnDestroy { routeSub: Subscription; clinicalTrialId?: number; - constructor(private route: ActivatedRoute) { + queryRef?: QueryRef + + loading$?: Observable; + clinicalTrial$?: Observable>> + + constructor(private route: ActivatedRoute, + private gql: ClinicalTrialSummaryGQL) { this.routeSub = this.route.params.subscribe((params) => { this.clinicalTrialId = +params.clinicalTrialId; + + this.queryRef = this.gql.watch({ + clinicalTrialId: this.clinicalTrialId + }) + + let observable = this.queryRef.valueChanges + this.loading$ = observable + .pipe( + pluck('loading'), + filter(isNonNulled)); + + this.clinicalTrial$ = observable.pipe( + pluck('data', 'clinicalTrial'), + filter(isNonNulled)); + }) } diff --git a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.module.ts b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.module.ts index a3699cf12..5cc047779 100644 --- a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.module.ts +++ b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.module.ts @@ -4,11 +4,15 @@ import { ClinicalTrialsSummaryComponent } from './clinical-trials-summary.compon import { CvcEvidenceTableModule } from '@app/components/evidence/evidence-table/evidence-table.module'; import { CvcSourcesTableModule } from '@app/components/sources/sources-table/sources-table.module'; import { NzGridModule } from 'ng-zorro-antd/grid'; +import { ReactiveComponentModule } from '@ngrx/component'; +import { NzDescriptionsModule } from 'ng-zorro-antd/descriptions'; @NgModule({ declarations: [ClinicalTrialsSummaryComponent], imports: [ CommonModule, + ReactiveComponentModule, + NzDescriptionsModule, NzGridModule, CvcEvidenceTableModule, CvcSourcesTableModule, diff --git a/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.query.gql b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.query.gql new file mode 100644 index 000000000..f5ec7608e --- /dev/null +++ b/client/src/app/views/clinical-trials/clinical-trials-detail/clinical-trials-summary/clinical-trials-summary.query.gql @@ -0,0 +1,11 @@ + +query ClinicalTrialSummary($clinicalTrialId: Int!){ + clinicalTrial(id: $clinicalTrialId){ + id + name + nctId + description + url + link + } +} diff --git a/client/src/app/views/evidence/evidence-detail/evidence-summary/evidence-summary.module.ts b/client/src/app/views/evidence/evidence-detail/evidence-summary/evidence-summary.module.ts index b56c75445..67f56b5df 100644 --- a/client/src/app/views/evidence/evidence-detail/evidence-summary/evidence-summary.module.ts +++ b/client/src/app/views/evidence/evidence-detail/evidence-summary/evidence-summary.module.ts @@ -23,6 +23,10 @@ import { CvcTagListModule } from '@app/components/shared/tag-list/tag-list.modul import { CvcDiseaseTagModule } from '@app/components/diseases/cvc-disease-tag/cvc-disease-tag.module'; import { TimeagoFormatter, TimeagoModule } from 'ngx-timeago'; import { CivicTimeagoFormatter } from '@app/core/utilities/timeago-formatter'; +import { CvcGeneTagModule } from '@app/components/genes/gene-tag/gene-tag.module'; +import { CvcVariantTagModule } from '@app/components/variants/variant-tag/variant-tag.module'; +import { CvcAttributeTagModule } from '@app/components/shared/attribute-tag/attribute-tag.module'; +import { NzToolTipModule } from 'ng-zorro-antd/tooltip'; @NgModule({ declarations: [EvidenceSummaryPage], @@ -37,6 +41,7 @@ import { CivicTimeagoFormatter } from '@app/core/utilities/timeago-formatter'; NzTagModule, NzIconModule, NzDescriptionsModule, + NzToolTipModule, CvcPipesModule, CvcEvidenceRatingModule, CvcDiseaseTagModule, @@ -48,6 +53,9 @@ import { CivicTimeagoFormatter } from '@app/core/utilities/timeago-formatter'; CvcPhenotypeTagModule, CvcDrugTagModule, CvcAssertionsTableModule, + CvcGeneTagModule, + CvcVariantTagModule, + CvcAttributeTagModule, TimeagoModule.forChild({ formatter: {useClass: CivicTimeagoFormatter, provide: TimeagoFormatter} }), ] }) diff --git a/client/src/app/views/evidence/evidence-detail/evidence-summary/evidence-summary.page.html b/client/src/app/views/evidence/evidence-detail/evidence-summary/evidence-summary.page.html index aaed08baf..ccd53a36c 100644 --- a/client/src/app/views/evidence/evidence-detail/evidence-summary/evidence-summary.page.html +++ b/client/src/app/views/evidence/evidence-detail/evidence-summary/evidence-summary.page.html @@ -1,207 +1,251 @@ - - - - + + + - - - - - -

{{ evidence.description }}

-
- -
- - - - - - - {{ evidence.evidenceType | evidenceEnumDisplay }} - - - - - {{ evidence.evidenceDirection | evidenceEnumDisplay}} - - - - - {{ evidence.clinicalSignificance | evidenceEnumDisplay }} - - - - - - {{ evidence.evidenceLevel }} - - - - - - - - - - - -
+ + + + + + +

{{ evidence.description }}

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ evidence.evidenceLevel }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + None Specified + + + + +
- + - - - - - - - - - - - - {{ evidence.submissionEvent.createdAt | timeago }} by - - - - - - - - - - {{ evidence.acceptanceEvent.createdAt | timeago }} by - - - - {{ evidence.rejectionEvent.createdAt | timeago }} by - - - - - - - - - - - - - - - - - - - - - - - None Specified - - - - - - - - - - - -
- - - - N/A - - - - - - - - - - - - + + + + + + + + + + + + + by + + + + Submitted None Specified + nzType="secondary"> + ({{ evidence.submissionEvent.createdAt | timeago }}) + - - - - - - - - - - N/A - + + + + + + + by + + + + Accepted + + ({{ evidence.acceptanceEvent.createdAt| timeago }}) + + + + by + + + + Rejected + + ({{ evidence.rejectionEvent.createdAt | timeago }}) + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + N/A + + + + + - - + + + + + None Specified - + - - + + + - Drug - - - Drug + N/A + + - Drugs ({{ evidence.drugInteractionType | titlecase }}) + + + + + - - - - + + + {{ evidence.drugInteractionType | titlecase }} + + + + + + + + + + + + + - - + diff --git a/client/src/app/views/evidence/evidence-detail/evidence-summary/evidence-summary.page.less b/client/src/app/views/evidence/evidence-detail/evidence-summary/evidence-summary.page.less index 756eb16f1..fd7e9e4c8 100644 --- a/client/src/app/views/evidence/evidence-detail/evidence-summary/evidence-summary.page.less +++ b/client/src/app/views/evidence/evidence-detail/evidence-summary/evidence-summary.page.less @@ -1,18 +1,7 @@ @import "themes/global-variables.less"; +@import "themes/overrides/descriptions-overrides.less"; :host { display: block; } -nz-space, nz-space-item { - width: 100%; -} - -.status-tags ::ng-deep { - nz-tag { - margin-right: 0; - } - .ant-descriptions-item-label { - white-space: nowrap; - } -} diff --git a/client/src/app/views/genes/genes-detail/genes-summary/genes-summary.page.html b/client/src/app/views/genes/genes-detail/genes-summary/genes-summary.page.html index 687c95961..e81e47967 100644 --- a/client/src/app/views/genes/genes-detail/genes-summary/genes-summary.page.html +++ b/client/src/app/views/genes/genes-detail/genes-summary/genes-summary.page.html @@ -1,87 +1,84 @@ - + + + - - - - - - - - - - - -

{{ gene.description }}

- - - - - + + + + -
+ + - - - - - - - - + + +

{{ gene.description }}

+ + + + + + +
+ + +
+
+ + + + + + + + + + + + + None specified + + + + + + {{ alias }} + + None specified - - - - - - - - {{ alias }} - - - None specified - - - - - - - - - DGIdb - - - ProteinPaint - - - - -
+ + + + + + DGIdb + + + ProteinPaint + + + + + + @@ -91,13 +88,13 @@ - - - + + - + + diff --git a/client/src/app/views/genes/genes-detail/genes-summary/genes-summary.page.less b/client/src/app/views/genes/genes-detail/genes-summary/genes-summary.page.less index a0b41ddc6..83b889331 100644 --- a/client/src/app/views/genes/genes-detail/genes-summary/genes-summary.page.less +++ b/client/src/app/views/genes/genes-detail/genes-summary/genes-summary.page.less @@ -1,3 +1,4 @@ +@import "themes/overrides/descriptions-overrides.less"; :host { display: block; } diff --git a/client/src/app/views/sources/sources-detail/sources-detail.view.html b/client/src/app/views/sources/sources-detail/sources-detail.view.html index a35e502f1..322c7a3da 100644 --- a/client/src/app/views/sources/sources-detail/sources-detail.view.html +++ b/client/src/app/views/sources/sources-detail/sources-detail.view.html @@ -20,7 +20,7 @@ - {{ source.displayType + ': ' + source.citationId }} + {{ source.displayType + ':' + source.citationId }} diff --git a/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.module.ts b/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.module.ts index a1123ca79..e8a5a09f1 100644 --- a/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.module.ts +++ b/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.module.ts @@ -2,6 +2,7 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { CvcClinicalTrialTagModule } from '@app/components/clinical-trials/clinical-trial-tag/clinical-trial-tag.module'; import { CvcEvidenceTableModule } from '@app/components/evidence/evidence-table/evidence-table.module'; +import { CvcLinkTagModule } from '@app/components/shared/link-tag/link-tag.module'; import { CvcSourceSuggestionsTableModule } from '@app/components/source-suggestions/source-suggestions-table/source-suggestions-table.module'; import { CvcAutoHeightDivModule } from '@app/directives/auto-height-div/auto-height-div.module'; import { ReactiveComponentModule } from '@ngrx/component'; @@ -24,6 +25,7 @@ import { SourcesSummaryPage } from './sources-summary.page'; NzTypographyModule, NzIconModule, NzDescriptionsModule, + CvcLinkTagModule, CvcAutoHeightDivModule, CvcEvidenceTableModule, CvcSourceSuggestionsTableModule, diff --git a/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.page.html b/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.page.html index 78b6d35cb..31d66cbba 100644 --- a/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.page.html +++ b/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.page.html @@ -1,19 +1,48 @@ - + -

{{ source.title }}

+ + + {{ source.title}} + + + {{source.authorString}} + +
- {{ source.abstract }} + nzSize="small" + nzLayout="vertical" + [nzColumn]="1"> + +

+ + {{ source.abstract }} + +

+
+
{{ source.publicationDate }} - {{ source.citationId }} + + + {{ source.displayType + ':' + source.citationId }} + + {{ source.fullJournalTitle }} @@ -47,24 +76,18 @@

{{ source.title }}

- Not available - + Not available + - - - {{source.authorString}} - -
+ [cvcTitleTemplate]="evidenceCardTitle"> + - Evidence for {{ source.title}} + Evidence for {{ source.citation}} @@ -74,7 +97,7 @@

{{ source.title }}

cvcHeight="400" [cvcTitleTemplate]="sourceSuggestionCardTitle"> - Source Suggestions for {{ source.title}} + Source Suggestions for {{ source.citation}}
diff --git a/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.page.less b/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.page.less index e69de29bb..4d8c9909e 100644 --- a/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.page.less +++ b/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.page.less @@ -0,0 +1 @@ +@import "themes/overrides/descriptions-overrides.less"; diff --git a/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.query.gql b/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.query.gql index b90007b5f..db7809753 100644 --- a/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.query.gql +++ b/client/src/app/views/sources/sources-detail/sources-summary/sources-summary.query.gql @@ -9,7 +9,9 @@ query SourceSummary( fragment SourceSummaryFields on Source { id + citation displayType + sourceUrl title abstract publicationDate @@ -21,4 +23,4 @@ fragment SourceSummaryFields on Source { nctId id } -} \ No newline at end of file +} diff --git a/client/src/app/views/users/users-notifications/users-notifications.component.ts b/client/src/app/views/users/users-notifications/users-notifications.component.ts index 9f7cac5de..6852ee3a6 100644 --- a/client/src/app/views/users/users-notifications/users-notifications.component.ts +++ b/client/src/app/views/users/users-notifications/users-notifications.component.ts @@ -3,10 +3,11 @@ import { ActivatedRoute } from '@angular/router'; import { ApolloQueryResult } from "@apollo/client/core"; import { NetworkErrorsService } from '@app/core/services/network-errors.service'; import { MutatorWithState } from '@app/core/utilities/mutation-state-wrapper'; -import { EventAction, UpdateNotificationStatusGQL, UpdateNotificationStatusMutation, UpdateNotificationStatusMutationVariables, Maybe, NotificationFeedSubjectsFragment, NotificationNodeFragment, NotificationOrganizationFragment, NotificationOriginatingUsersFragment, NotificationReason, PageInfo, SubscribableEntities, SubscribableInput, UserNotificationsGQL, UserNotificationsQuery, UserNotificationsQueryVariables, ReadStatus, UnsubscribeGQL, UnsubscribeMutation, UnsubscribeMutationVariables, SubscribableFragment } from '@app/generated/civic.apollo'; +import { EventAction, Maybe, NotificationConnection, NotificationFeedSubjectsFragment, NotificationNodeFragment, NotificationOrganizationFragment, NotificationOriginatingUsersFragment, NotificationReason, PageInfo, ReadStatus, SubscribableEntities, SubscribableInput, UnsubscribeGQL, UnsubscribeMutation, UnsubscribeMutationVariables, UpdateNotificationStatusGQL, UpdateNotificationStatusMutation, UpdateNotificationStatusMutationVariables, UserNotificationsGQL, UserNotificationsQuery, UserNotificationsQueryVariables } from '@app/generated/civic.apollo'; import { QueryRef } from 'apollo-angular'; import { Observable } from 'rxjs'; -import { map, startWith } from 'rxjs/operators'; +import { isNonNulled } from 'rxjs-etc'; +import { filter, map, startWith } from 'rxjs/operators'; interface SelectableNotificationReason { id: number, @@ -34,6 +35,8 @@ interface Checked { checked: boolean } private queryRef!: QueryRef; private results$!: Observable>; + private connection$!: Observable + private initialQueryVars?: UserNotificationsQueryVariables; notifications$?: Observable[]>; @@ -53,12 +56,12 @@ interface Checked { checked: boolean } allChecked: boolean = false someChecked: boolean = false - updateNotificationStatusMutator: MutatorWithState; + updateNotificationStatusMutator: MutatorWithState; unsubscribeMutator: MutatorWithState notificationTypes: SelectableNotificationReason[] = [ - {id: 1, type: NotificationReason.Mention, iconName: 'notification', displayName: 'Mentioned'}, - {id: 2, type: NotificationReason.Subscription, iconName: 'book', displayName: 'Subscribed'}, + { id: 1, type: NotificationReason.Mention, iconName: 'notification', displayName: 'Mentioned' }, + { id: 2, type: NotificationReason.Subscription, iconName: 'book', displayName: 'Subscribed' }, ] @@ -73,30 +76,25 @@ interface Checked { checked: boolean } includeRead: this.includeReadInput } - this.queryRef = this.gql.watch(this.initialQueryVars); - this.results$ = this.queryRef.valueChanges; + this.queryRef = this.gql.watch(this.initialQueryVars) + this.results$ = this.queryRef.valueChanges - this.pageInfo$ = this.results$.pipe( - map(({ data }) => data.notifications.pageInfo) - ) + this.connection$ = this.results$ + .pipe(map(r => r.data?.notifications), + filter(isNonNulled)) as Observable -/* this.notifications$ = this.results$.pipe( - map(({ data }) => { - return data.notifications.edges.map(e => { - if (e.node){ - this.notificationState.set(e.node, {checked: false} ) - } - return e.node - }) - }) - ) */ + this.pageInfo$ = this.connection$ + .pipe(map(c => c.pageInfo), + filter(isNonNulled)); this.notificationStateObservable$ = this.results$.pipe( - map(({ data }) => { + map(r => r.data), + filter(isNonNulled), + map(({ notifications }) => { let checkedMap = new Map() - data.notifications.edges.forEach(e => { - if (e.node){ - let initialChecked = { checked: false} + notifications.edges.forEach(e => { + if (e.node) { + let initialChecked = { checked: false } checkedMap.set(e.node, initialChecked) this.notificationState.set(e.node, initialChecked) } @@ -106,31 +104,33 @@ interface Checked { checked: boolean } ) this.notificationSubjects$ = this.results$.pipe( - map(({data}) => { - return data.notifications.notificationSubjects.map((ns) => { - return { id: `${ns.subject?.__typename}:${ns.subject?.id}`, subjectWithCount: ns} + map(r => r.data), + filter(isNonNulled), + map(({ notifications }) => { + return notifications.notificationSubjects.map((ns) => { + return { id: `${ns.subject?.__typename}:${ns.subject?.id}`, subjectWithCount: ns } }) }) ) this.originatingUsers$ = this.results$.pipe( - map(({data}) => { + map(({ data }) => { return data.notifications.originatingUsers }) ) this.actions$ = this.results$.pipe( - map(({data}) => data.notifications.eventTypes.map((et) => {return {id: et}})) + map(({ data }) => data.notifications.eventTypes.map((et) => { return { id: et } })) ) this.organizations$ = this.results$.pipe( - map(({data}) => { + map(({ data }) => { return data.notifications.organizations }) ) this.isLoading$ = this.results$.pipe( - map(({loading}) => loading), + map(({ loading }) => loading), startWith(true) ) @@ -153,16 +153,16 @@ interface Checked { checked: boolean } onNotificationReasonSelected(r: Maybe) { this.queryRef.refetch({ - notificationReason: r ? r.type: undefined + notificationReason: r ? r.type : undefined }) } - + onNotificationSubjectSelected(s: Maybe) { let orgObj: Maybe = undefined if (s !== undefined) { - let entityType: keyof typeof SubscribableEntities = s.subjectWithCount.subject?.__typename - orgObj = { + let entityType: keyof typeof SubscribableEntities = s.subjectWithCount.subject?.__typename + orgObj = { id: s.subjectWithCount.subject!.id, entityType: SubscribableEntities[entityType] } @@ -191,18 +191,18 @@ interface Checked { checked: boolean } }) } - markAsRead(id: number){ + markAsRead(id: number) { this.updateNotificationStatusMutator.mutate(this.updateNotificationStatusMuation, { - input: { + input: { ids: [id], newStatus: ReadStatus.Read } }) } - markAsUnread(id: number){ + markAsUnread(id: number) { this.updateNotificationStatusMutator.mutate(this.updateNotificationStatusMuation, { - input: { + input: { ids: [id], newStatus: ReadStatus.Unread } @@ -210,10 +210,10 @@ interface Checked { checked: boolean } } unsubscribe(id: number, typename: string) { - let entityType: keyof typeof SubscribableEntities = typename + let entityType: keyof typeof SubscribableEntities = typename this.unsubscribeMutator.mutate(this.unsubscribeMutation, { - input :{ - subscribables: [{id: id, entityType: SubscribableEntities[entityType]}] + input: { + subscribables: [{ id: id, entityType: SubscribableEntities[entityType] }] } }) } @@ -263,7 +263,7 @@ interface Checked { checked: boolean } getCheckedIds() { let ids: number[] = [] this.notificationState.forEach((checked, notification) => { - if(checked.checked) { + if (checked.checked) { ids.push(notification.id) } }) @@ -273,9 +273,9 @@ interface Checked { checked: boolean } checkAll() { this.queryRef.refetch().then(() => { - this.notificationState.forEach((checkedState, _ ) => { - checkedState.checked = true - }) + this.notificationState.forEach((checkedState, _) => { + checkedState.checked = true + }) }) this.allChecked = true this.someChecked = false @@ -284,9 +284,9 @@ interface Checked { checked: boolean } uncheckAll() { this.queryRef.refetch().then(() => { - this.notificationState.forEach((checkedState, _ ) => { - checkedState.checked = false - }) + this.notificationState.forEach((checkedState, _) => { + checkedState.checked = false + }) }) this.allChecked = false this.someChecked = false @@ -316,8 +316,8 @@ interface Checked { checked: boolean } bulkUnsubscribe() { let subscribables: SubscribableInput[] = [] this.notificationState.forEach((checked, notification) => { - if(checked.checked && notification.subscription) { - let entityType: keyof typeof SubscribableEntities = notification.subscription.subscribable.__typename + if (checked.checked && notification.subscription) { + let entityType: keyof typeof SubscribableEntities = notification.subscription.subscribable.__typename subscribables.push({ id: notification.subscription.subscribable.id, entityType: SubscribableEntities[entityType] @@ -326,13 +326,13 @@ interface Checked { checked: boolean } }) this.unsubscribeMutator.mutate(this.unsubscribeMutation, { - input: {subscribables: subscribables} - }).submitSuccess$.subscribe((res) => { - if(res) { - this.queryRef.refetch() - } - }) + input: { subscribables: subscribables } + }).submitSuccess$.subscribe((res) => { + if (res) { + this.queryRef.refetch() + } + }) - this.uncheckAll(); + this.uncheckAll(); } } diff --git a/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.module.ts b/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.module.ts index b8c5d3837..18507a1b0 100644 --- a/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.module.ts +++ b/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.module.ts @@ -20,6 +20,8 @@ import { CvcPipesModule } from '@app/core/pipes/pipes.module'; import { NzIconModule } from 'ng-zorro-antd/icon'; import { CvcUserTagModule } from '@app/components/users/user-tag/user-tag.module'; import { NzTagModule } from 'ng-zorro-antd/tag'; +import { CvcGeneTagModule } from '@app/components/genes/gene-tag/gene-tag.module'; +import { CvcCoordinatesCardModule } from '@app/components/variants/coordinates-card/coordinates-card.module'; @NgModule({ declarations: [VariantsSummaryPage], @@ -33,12 +35,14 @@ import { NzTagModule } from 'ng-zorro-antd/tag'; NzTypographyModule, NzIconModule, NzTagModule, + CvcCoordinatesCardModule, CvcPipesModule, CvcEvidenceTableModule, CvcAssertionsTableModule, CvcTagListModule, CvcUserTagModule, CvcSourceTagModule, + CvcGeneTagModule, CvcVariantTypeTagModule, CvcLinkTagModule, CvcMyVariantInfoModule, diff --git a/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.page.html b/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.page.html index 7614e17c3..d6d51cc1a 100644 --- a/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.page.html +++ b/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.page.html @@ -3,312 +3,188 @@ - + - + + + + + + + +

{{ variant.description }}

+ + + + + +
+ + + + + + + + + + + None specified + + + +
+
+ + + + + + + + + + + {{ alias }} + + + + None specified + + + + + + + + + + + + None specified + + + + + + + + {{ desc }} + + + + None specified + + + + + +
- - - - -

{{ variant.description }}

- - - - - - -
- - - - - - - - - - None specified - - - -
- - - - - - - - {{ alias }} - - - None specified - - - - - - - - - - - - - - - - - - - None specified - - - - - - - - - - - - {{ desc }} - - - - None specified - - - - - -
- + - - - - - - - - - - {{ variant.alleleRegistryId }} - - - None provided - - - - - - {{ variant.evidenceScore }} - - - - - - - - - {{ id }} - - - - - - - N/A - - - - None provided - - - - - + + + + + + + + + + + + + + + {{ variant.alleleRegistryId }} + + + None provided + + + + + + {{ variant.evidenceScore | number }} + + + + + + + + + {{ id }} + + + + + + + N/A + + + + None provided + + + + + - - - + + + - - - - - {{ variant.referenceBuild }} - - - - {{ variant.ensemblVersion}} - - - - - - - - - - - {{ coords.chromosome }} - - - - - {{ coords.start }} - - - - - {{ coords.stop }} - - - - - - {{ variant.referenceBases | ifEmpty: '--'}} - - - - - {{ variant.variantBases | ifEmpty: '--'}} - - - - - - - {{ coords.representativeTranscript }} - - - - - - - - - - - - - {{ coords.chromosome }} - - - - - {{ coords.start }} - - - - - {{ coords.stop }} - - - - - - {{ coords.representativeTranscript }} - - - - - - - - - - - - - - - - + + - - - - + +
+ + + + + - - - - - + + + - + - @@ -318,8 +194,7 @@ - diff --git a/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.page.less b/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.page.less index a0b41ddc6..5050bd41a 100644 --- a/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.page.less +++ b/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.page.less @@ -1,3 +1,5 @@ +@import "themes/overrides/descriptions-overrides.less"; + :host { display: block; } diff --git a/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.query.gql b/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.query.gql index f7876d963..0d53e86b6 100644 --- a/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.query.gql +++ b/client/src/app/views/variants/variants-detail/variants-summary/variants-summary.query.gql @@ -1,9 +1,6 @@ - -query VariantSummary( - $variantId: Int! -) { +query VariantSummary($variantId: Int!) { variant(id: $variantId) { - ...VariantSummaryFields + ...VariantSummaryFields } } @@ -12,23 +9,24 @@ fragment VariantSummaryFields on Variant { name description gene { - id - name + id + name + link } sources { - id - citation - sourceUrl + id + citation + sourceUrl displayType - sourceType + sourceType } variantAliases alleleRegistryId variantTypes { - id - link - soid - name + id + link + soid + name } hgvsDescriptions clinvarIds @@ -36,16 +34,16 @@ fragment VariantSummaryFields on Variant { referenceBuild ensemblVersion primaryCoordinates { - representativeTranscript - chromosome - start - stop + representativeTranscript + chromosome + start + stop } secondaryCoordinates { - representativeTranscript - chromosome - start - stop + representativeTranscript + chromosome + start + stop } referenceBases variantBases diff --git a/client/src/assets/icons/attribute/likelyoncogenic-outline.svg b/client/src/assets/icons/attribute/likelyoncogenic-outline.svg new file mode 100644 index 000000000..25e9d5856 --- /dev/null +++ b/client/src/assets/icons/attribute/likelyoncogenic-outline.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/client/src/assets/icons/attribute/oncogenicsignificance-outline.svg b/client/src/assets/icons/attribute/oncogenicsignificance-outline.svg new file mode 100644 index 000000000..f031a80d5 --- /dev/null +++ b/client/src/assets/icons/attribute/oncogenicsignificance-outline.svg @@ -0,0 +1,17 @@ + + + + + diff --git a/client/src/assets/icons/attribute/oncogenic-outline.svg b/client/src/assets/icons/attribute/oncogenictype-outline.svg similarity index 100% rename from client/src/assets/icons/attribute/oncogenic-outline.svg rename to client/src/assets/icons/attribute/oncogenictype-outline.svg diff --git a/client/src/assets/icons/attribute/protective-outline.svg b/client/src/assets/icons/attribute/protective-outline.svg new file mode 100644 index 000000000..f2dfd4ecc --- /dev/null +++ b/client/src/assets/icons/attribute/protective-outline.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/client/src/assets/icons/outline/evidenceitem-outline.svg b/client/src/assets/icons/outline/evidenceitem-outline.svg new file mode 100644 index 000000000..43c5c8441 --- /dev/null +++ b/client/src/assets/icons/outline/evidenceitem-outline.svg @@ -0,0 +1,8 @@ + + + + + diff --git a/client/src/assets/icons/twotone/evidenceitem-twotone.svg b/client/src/assets/icons/twotone/evidenceitem-twotone.svg new file mode 100644 index 000000000..3c7338bc9 --- /dev/null +++ b/client/src/assets/icons/twotone/evidenceitem-twotone.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/client/src/themes/overrides/card-table.overrides.less b/client/src/themes/overrides/card-table.overrides.less index 304e4bda0..1fce03052 100644 --- a/client/src/themes/overrides/card-table.overrides.less +++ b/client/src/themes/overrides/card-table.overrides.less @@ -2,16 +2,6 @@ display: block; } -// selectors for debugging table cdk-scroll sizing issues, -// TODO: remove after dev on these components has stabilized -::ng-deep .cdk-virtual-scroll-viewport { -// border: 1px solid red; -} - -::ng-deep .cdk-virtual-scroll-content-wrapper { -// border: 1px solid blue; -} - nz-card:first-of-type ::ng-deep { .ant-card-body { // remove card body padding @@ -21,6 +11,12 @@ nz-card:first-of-type ::ng-deep { } } +.table-info{ + margin-left: .5rem; +} + + + tr.col-header-row th.ant-table-cell { white-space: nowrap; } diff --git a/client/src/themes/overrides/descriptions-overrides.less b/client/src/themes/overrides/descriptions-overrides.less new file mode 100644 index 000000000..45d4becab --- /dev/null +++ b/client/src/themes/overrides/descriptions-overrides.less @@ -0,0 +1,24 @@ +@import 'themes/global-variables.less'; + +:host ::ng-deep nz-descriptions { + // slightly embolden description key values + .ant-descriptions-item-label { + font-weight: 500; + } + // reduce title margins, add padding to align with key values + .ant-descriptions-header { + margin-top: @margin-xs; + margin-bottom: @margin-xs; + padding-left: @padding-md; + } + // de-emphasize titles + .ant-descriptions-title { + font-weight: 500; + color: @text-color-secondary; + font-size: @font-size-base; + } + // remove bottom padding from last paragraph + .ant-descriptions-item-content p:last-of-type { + margin-bottom: 0; + } +} diff --git a/client/tsconfig.json b/client/tsconfig.json index 9db786eac..b135b9c70 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -22,7 +22,7 @@ "target": "es2015", "module": "ESNext", "lib": [ - "es2018", + "es2019", "dom", "esnext.asynciterable" ], diff --git a/client/yarn.lock b/client/yarn.lock index ab6777610..eb13305ec 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -2,53 +2,53 @@ # yarn lockfile v1 -"@ampproject/remapping@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-1.0.2.tgz#a7ebbadb71517dd63298420868f27d98fe230a0a" - integrity sha512-SncaVxs+E3EdoA9xJgHfWPxZfowAgeIsd71VpqCKP6KNKm6s7zSqqvUc70UpKUFsrV3dAmy6qxHoIj5NG+3DiA== +"@ampproject/remapping@2.2.0", "@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: - "@jridgewell/resolve-uri" "1.0.0" - sourcemap-codec "1.4.8" + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" -"@angular-devkit/architect@0.1301.4": - version "0.1301.4" - resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1301.4.tgz#2fc51bcae0dcb581c8be401e2fde7bbd10b43076" - integrity sha512-p6G8CEMnE+gYwxRyEttj3QGsuNJ3Kusi7iwBIzWyf2RpJSdGzXdwUEiRGg6iS0YHFr06/ZFfAWfnM2DQvNm4TA== +"@angular-devkit/architect@0.1303.8": + version "0.1303.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1303.8.tgz#7f1e02fff380b87910a7b57ec09e65c16db6fcbc" + integrity sha512-2zaNejnfZbq+fFOVgkmWkh+2UmK/CBDbWTq7VJHopJLtUuf7pFNvRk73s9xayuJ3Lt2/sY17Mykku2LziBF89A== dependencies: - "@angular-devkit/core" "13.1.4" + "@angular-devkit/core" "13.3.8" rxjs "6.6.7" -"@angular-devkit/build-angular@~13.1.4": - version "13.1.4" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-13.1.4.tgz#942023fca240b0f5753dcf65bb67e57e4779bf86" - integrity sha512-MTvlUCb02J4ODXDsnit4N0PR9PkpKeSYpTPueaSBuWTBeP3dvMPZQabvb3C5QT/5yUzBiXQZq11QYx3Gui4StA== - dependencies: - "@ampproject/remapping" "1.0.2" - "@angular-devkit/architect" "0.1301.4" - "@angular-devkit/build-webpack" "0.1301.4" - "@angular-devkit/core" "13.1.4" - "@babel/core" "7.16.0" - "@babel/generator" "7.16.0" - "@babel/helper-annotate-as-pure" "7.16.0" - "@babel/plugin-proposal-async-generator-functions" "7.16.4" - "@babel/plugin-transform-async-to-generator" "7.16.0" - "@babel/plugin-transform-runtime" "7.16.4" - "@babel/preset-env" "7.16.4" - "@babel/runtime" "7.16.3" - "@babel/template" "7.16.0" +"@angular-devkit/build-angular@~13.3.8": + version "13.3.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-13.3.8.tgz#4682e50901486a4fb36a3c58cd5bb7a669d388e4" + integrity sha512-5nWqb58oLcWoBoAECqHiUlOV23/J/4W1a9aqaFQcN6bThRzoy54S69zUuQREnBE36elDrSxhn2Y34poqYe8iKQ== + dependencies: + "@ampproject/remapping" "2.2.0" + "@angular-devkit/architect" "0.1303.8" + "@angular-devkit/build-webpack" "0.1303.8" + "@angular-devkit/core" "13.3.8" + "@babel/core" "7.16.12" + "@babel/generator" "7.16.8" + "@babel/helper-annotate-as-pure" "7.16.7" + "@babel/plugin-proposal-async-generator-functions" "7.16.8" + "@babel/plugin-transform-async-to-generator" "7.16.8" + "@babel/plugin-transform-runtime" "7.16.10" + "@babel/preset-env" "7.16.11" + "@babel/runtime" "7.16.7" + "@babel/template" "7.16.7" "@discoveryjs/json-ext" "0.5.6" - "@ngtools/webpack" "13.1.4" + "@ngtools/webpack" "13.3.8" ansi-colors "4.1.1" - babel-loader "8.2.3" + babel-loader "8.2.5" babel-plugin-istanbul "6.1.1" browserslist "^4.9.1" cacache "15.3.0" circular-dependency-plugin "5.2.2" - copy-webpack-plugin "10.0.0" - core-js "3.19.3" + copy-webpack-plugin "10.2.1" + core-js "3.20.3" critters "0.0.16" css-loader "6.5.1" - esbuild-wasm "0.14.11" + esbuild-wasm "0.14.22" glob "7.2.0" https-proxy-agent "5.0.0" inquirer "8.2.0" @@ -56,139 +56,175 @@ karma-source-map-support "1.4.0" less "4.1.2" less-loader "10.2.0" - license-webpack-plugin "4.0.0" + license-webpack-plugin "4.0.2" loader-utils "3.2.0" - mini-css-extract-plugin "2.4.5" - minimatch "3.0.4" + mini-css-extract-plugin "2.5.3" + minimatch "3.0.5" open "8.4.0" ora "5.4.1" parse5-html-rewriting-stream "6.0.1" - piscina "3.1.0" - postcss "8.4.4" + piscina "3.2.0" + postcss "8.4.5" postcss-import "14.0.2" postcss-loader "6.2.1" postcss-preset-env "7.2.3" regenerator-runtime "0.13.9" - resolve-url-loader "4.0.0" + resolve-url-loader "5.0.0" rxjs "6.6.7" - sass "1.44.0" + sass "1.49.9" sass-loader "12.4.0" semver "7.3.5" - source-map-loader "3.0.0" + source-map-loader "3.0.1" source-map-support "0.5.21" - stylus "0.55.0" + stylus "0.56.0" stylus-loader "6.2.0" - terser "5.10.0" + terser "5.11.0" text-table "0.2.0" tree-kill "1.2.2" tslib "2.3.1" - webpack "5.65.0" - webpack-dev-middleware "5.2.2" - webpack-dev-server "4.6.0" + webpack "5.70.0" + webpack-dev-middleware "5.3.0" + webpack-dev-server "4.7.3" webpack-merge "5.8.0" - webpack-subresource-integrity "5.0.0" + webpack-subresource-integrity "5.1.0" optionalDependencies: - esbuild "0.14.11" + esbuild "0.14.22" -"@angular-devkit/build-webpack@0.1301.4": - version "0.1301.4" - resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1301.4.tgz#7dd16ec7fb26c5e177ad26a6f485faf4393774ef" - integrity sha512-IcC3Y5WhreIV0uT90ITqJVgRqFjGwH72hftwLxkslaX+FJDcL36mhsNdyN66BJiuX7R85xUxHq3PEb9cZrllJA== +"@angular-devkit/build-webpack@0.1303.8": + version "0.1303.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1303.8.tgz#8e5c45eee0517c6f019b74a99c754c7f734cc6fc" + integrity sha512-N3DehEQ4uARricbYTuASBCnHdrtKFIMZpl6A4GB5DKQILF7KctsaAz0QvAiA8y4ojhSIRvXK5XVWklX3QVlJIw== dependencies: - "@angular-devkit/architect" "0.1301.4" + "@angular-devkit/architect" "0.1303.8" rxjs "6.6.7" -"@angular-devkit/core@11.0.5", "@angular-devkit/core@>=7.0.0": - version "11.0.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-11.0.5.tgz#8239486d2de6c08fc55d2a64f12a7f5d518c8beb" - integrity sha512-hwV8fjF8JNPJkiVWw8MNzeIfDo01aD/OAOlC4L5rQnVHn+i2EiU3brSDmFqyeHPPV3h/QjuBkS3tkN7gSnVWaQ== +"@angular-devkit/core@13.3.8": + version "13.3.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.3.8.tgz#f4043de67155816e61b174233881fc0e8704d0fd" + integrity sha512-PCmfMkErpnH429l1cANak4PnCpAscqAubS6Dw83++cS34ht0/bgKRb2zSyBuB2Ka6kw7wAZ3fCyTcVvyfxVFEg== dependencies: - ajv "6.12.6" + ajv "8.9.0" + ajv-formats "2.1.1" fast-json-stable-stringify "2.1.0" magic-string "0.25.7" - rxjs "6.6.3" + rxjs "6.6.7" source-map "0.7.3" -"@angular-devkit/core@13.1.4": - version "13.1.4" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-13.1.4.tgz#b5b6ddd674ae351f83beff2e4a0d702096bdfd47" - integrity sha512-225Gjy4iVxh5Jo9njJnaG75M/Dt95UW+dEPCGWKV5E/++7UUlXlo9sNWq8x2vJm2nhtsPkpnXNOt4pW1mIDwqQ== +"@angular-devkit/core@14.0.2", "@angular-devkit/core@>=7.0.0": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-14.0.2.tgz#47f62a57cf36a2e102188a89ae00f5e5a05d837d" + integrity sha512-lT875LhgO+23HvjUmuCZomH/0ivetzo8xsaT+7YM8SeUpmjsNTpTA/xNAQ4uD4JGscsJeCKsGT/zJIwPAAe6vQ== dependencies: - ajv "8.8.2" + ajv "8.11.0" ajv-formats "2.1.1" - fast-json-stable-stringify "2.1.0" - magic-string "0.25.7" + jsonc-parser "3.0.0" rxjs "6.6.7" source-map "0.7.3" -"@angular-devkit/schematics@11.0.5", "@angular-devkit/schematics@>=7.0.0": - version "11.0.5" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-11.0.5.tgz#e5d89451daa644eccce93970709f7cdf44c11982" - integrity sha512-0NKGC8Nf/4vvDpWKB7bwxIazvNnNHnZBX6XlyBXNl+fW8tpTef3PNMJMSErTz9LFnuv61vsKbc36u/Ek2YChWg== +"@angular-devkit/schematics@13.3.8": + version "13.3.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.3.8.tgz#e7f5804bdd05b882ebedeabca7544a6a30387748" + integrity sha512-7mTlxZhS9uHxtmOiZeSMkKdIE5r5FmQ/1IBhRBfD5XDQdipQkUJyOtclPO/+t/AJIG0+LYt9+7X5hHUr7W3kZA== dependencies: - "@angular-devkit/core" "11.0.5" - ora "5.1.0" - rxjs "6.6.3" + "@angular-devkit/core" "13.3.8" + jsonc-parser "3.0.0" + magic-string "0.25.7" + ora "5.4.1" + rxjs "6.6.7" -"@angular-devkit/schematics@13.1.4": - version "13.1.4" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-13.1.4.tgz#e8ed817887aa51268dec27d8d6188e2f3f10742a" - integrity sha512-yBa7IeC4cLZ7s137NAQD+sMB5c6SI6UJ6xYxl6J/CvV2RLGOZZA93i4GuRALi5s82eLi1fH+HEL/gvf3JQynzQ== +"@angular-devkit/schematics@14.0.2", "@angular-devkit/schematics@>=7.0.0": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-14.0.2.tgz#8d878bcdb9d8ad876c254ebec55b7da6773e05df" + integrity sha512-NCAYwvQBL71MbAzeF8XOM9LXYfZbUK7THYCW8UteKDY4Df6EdVOGhBdWY2LstAkZeVCaQWSJU7FcVRS9Ulvg0A== dependencies: - "@angular-devkit/core" "13.1.4" + "@angular-devkit/core" "14.0.2" jsonc-parser "3.0.0" - magic-string "0.25.7" + magic-string "0.26.1" ora "5.4.1" rxjs "6.6.7" -"@angular-eslint/eslint-plugin-template@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-1.0.0.tgz#a969070b4df0628aed8e30164fb86a8002c0385c" - integrity sha512-+LrAypsGUaW98aoDb/ITWWDKYHYp6UcJraJU7/bih7AQOJyDs6AnpbMPLscTcxkcCP2ylmJ31pEzYz4ItNKRTQ== +"@angular-eslint/builder@13.2.1": + version "13.2.1" + resolved "https://registry.yarnpkg.com/@angular-eslint/builder/-/builder-13.2.1.tgz#8bcff02fd930bbedd5522ff71a0f47a844c3acd4" + integrity sha512-79378DhlZ+hUlsTYvFs/BauiCQPN0RGlN5IuvzZs62yWquPecwK0nHcSasUe5OtiknuwIy7SwFq/AXyJVI+Ouw== + dependencies: + "@nrwl/devkit" "13.1.3" + +"@angular-eslint/bundled-angular-compiler@13.2.1": + version "13.2.1" + resolved "https://registry.yarnpkg.com/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-13.2.1.tgz#adefaafc45a77ef286efe587a72371ded8e0c6af" + integrity sha512-v/O9s6yvg7MJTQ9iNdXpZJOAjunY4ATk/dE3+xTsLwWTZXTXLXZE1FtKD/reijoItZtGiLUJ+F1pK5nwq/iI6w== + +"@angular-eslint/eslint-plugin-template@13.2.1": + version "13.2.1" + resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-13.2.1.tgz#d12846507a0331cbbc81ded45a905186323e5c09" + integrity sha512-fA11IGfnWzJePFVS04JKigQY33/Twp5Gv3sj6o8NLRi25NbZDFMc6YjRv8FuKfJ0DXrZh0nLgP2L/01qnXDgZQ== dependencies: - "@typescript-eslint/experimental-utils" "4.3.0" + "@angular-eslint/bundled-angular-compiler" "13.2.1" + "@typescript-eslint/experimental-utils" "5.17.0" aria-query "^4.2.2" axobject-query "^2.2.0" -"@angular-eslint/eslint-plugin@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin/-/eslint-plugin-1.0.0.tgz#741a98c351ee02edb7d7f70473da699ee2eafa09" - integrity sha512-oar+5WhqFMVrK8ywTAJAnnisIQyG6I2STHHwVURx4rPyzjk3pZN10c3KgJuOF5FExfO2bewwr8FBy1CEZsh90w== +"@angular-eslint/eslint-plugin@13.2.1": + version "13.2.1" + resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin/-/eslint-plugin-13.2.1.tgz#9537b07d7a9d9b69a84c89d3c8b4da46792208f0" + integrity sha512-hlHzbe7MIBbZ4IUKvJh5pjN5nKw0YZBwPyIB1+IBOJAdjWuS274uUGTZxKeyJiyJi0FOUu5+Z6vbM9ZJ2uzjcw== dependencies: - "@typescript-eslint/experimental-utils" "4.3.0" + "@angular-eslint/utils" "13.2.1" + "@typescript-eslint/experimental-utils" "5.17.0" -"@angular-eslint/template-parser@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@angular-eslint/template-parser/-/template-parser-1.0.0.tgz#e4d431db36e64bf14cca90e19f40eb48c3c20402" - integrity sha512-M7rj907yOoEzq10FO5BDX7Ylw24V+YfdsYfyEi/TzzQtNGxCwQhbEwXc1PAZgsQ+P1wbGFbg9mb3yFkps7/LEA== +"@angular-eslint/schematics@13.2.1": + version "13.2.1" + resolved "https://registry.yarnpkg.com/@angular-eslint/schematics/-/schematics-13.2.1.tgz#20a2ecda4d6a8319aaa58c654abccd31ee0915f4" + integrity sha512-uejXuV9mGzjxw/WY7T3FBpm3HWmOtjnA3eFXzY2VssqaYbEcBl9DakBh9h+KivV86iH3F3ElY8WC0Ka25TCCsg== + dependencies: + "@angular-eslint/eslint-plugin" "13.2.1" + "@angular-eslint/eslint-plugin-template" "13.2.1" + ignore "5.2.0" + strip-json-comments "3.1.1" + tmp "0.2.1" + +"@angular-eslint/template-parser@13.2.1": + version "13.2.1" + resolved "https://registry.yarnpkg.com/@angular-eslint/template-parser/-/template-parser-13.2.1.tgz#c931b79532b5230c771cd8344e7ddecb6b01512f" + integrity sha512-aSZjKYTUXjJ3sehm90CfZey/ed333IxP0TpnaG7Lue9rSEa3BkKOv8Kffy+EhDkpdTpjdwdmGfopxxsbm9sPHw== dependencies: + "@angular-eslint/bundled-angular-compiler" "13.2.1" eslint-scope "^5.1.0" -"@angular/animations@~13.1.3": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-13.1.3.tgz#2da6ad99602bfb450624a7499d6f81366c3a4519" - integrity sha512-OwsVQsNHubIgRcxnjti4CU3QJnqd7Z2b+2iu3M349Oxyqxz4DNCqKXalDuJZt/b0yNfirvYO3kCgBfj4PF43QQ== +"@angular-eslint/utils@13.2.1": + version "13.2.1" + resolved "https://registry.yarnpkg.com/@angular-eslint/utils/-/utils-13.2.1.tgz#f9cb023abb20ebce7a10e0758752293026b06026" + integrity sha512-TCw56jQDPe/FDg3IC0QTQVn4mv5Pzb8K4YpO2hiBdU4XwmOTGWjbwZO++Wr1Gekw1OJYVWSIwNfz2MrGIDsu7A== + dependencies: + "@angular-eslint/bundled-angular-compiler" "13.2.1" + "@typescript-eslint/experimental-utils" "5.17.0" + +"@angular/animations@~13.3.11": + version "13.3.11" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-13.3.11.tgz#13a7afa3d7d7076874f6ac62da5158ec4ae009f0" + integrity sha512-KE/3RuvixHIk9YTSwaUsezsUm9Ig9Y8rZMpHOT/8bRtzPiJ5ld2GnDHjrJgyZn7TdoP4wz4YCta5eC4ycu+KCw== dependencies: tslib "^2.3.0" "@angular/cdk@^13.0.1": - version "13.1.1" - resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-13.1.1.tgz#bfc1050df357a26bda03410d821ae05826dcf88e" - integrity sha512-66PyWg+zKdxTe3b1pc1RduT8hsMs/hJ0aD0JX0pSEWVq7O0OJWJ5f0z+Mk03T9tAERA3NK1GifcKEDq5k7R2Zw== + version "13.3.9" + resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-13.3.9.tgz#a177196e872e29be3f84d3a50f778d361c689ff7" + integrity sha512-XCuCbeuxWFyo3EYrgEYx7eHzwl76vaWcxtWXl00ka8d+WAOtMQ6Tf1D98ybYT5uwF9889fFpXAPw98mVnlo3MA== dependencies: tslib "^2.3.0" optionalDependencies: parse5 "^5.0.0" -"@angular/cli@^13.1.4": - version "13.1.4" - resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-13.1.4.tgz#34e6e87d1c6950408167c41293cf2cd5d1e00a2e" - integrity sha512-PP9xpvDDCHhLTIZjewQQzzf+JbpF2s5mXTW2AgIL/E53ukaVvXwwjFMt9dQvECwut/LDpThoc3OfqcGrmwtqnA== +"@angular/cli@^13.3.8": + version "13.3.8" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-13.3.8.tgz#f072ade832f59edfea90b6b0a7cbe1351fb7707c" + integrity sha512-dsvum8oGnbgX5mLh9CDzP1ip2UGDZdppPD6np2XXhqX75DfJxRlgl4u3NxBSnDmeyhIGTsGV0HKAxoB5EOoHcw== dependencies: - "@angular-devkit/architect" "0.1301.4" - "@angular-devkit/core" "13.1.4" - "@angular-devkit/schematics" "13.1.4" - "@schematics/angular" "13.1.4" + "@angular-devkit/architect" "0.1303.8" + "@angular-devkit/core" "13.3.8" + "@angular-devkit/schematics" "13.3.8" + "@schematics/angular" "13.3.8" "@yarnpkg/lockfile" "1.1.0" ansi-colors "4.1.1" debug "4.3.3" @@ -199,30 +235,29 @@ npm-pick-manifest "6.1.1" open "8.4.0" ora "5.4.1" - pacote "12.0.2" - resolve "1.20.0" + pacote "12.0.3" + resolve "1.22.0" semver "7.3.5" symbol-observable "4.0.0" uuid "8.3.2" -"@angular/common@~13.1.3": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-13.1.3.tgz#4c80f45cfd00a17543559c5fbebe0a7a7cf403ed" - integrity sha512-8qf5syeXUogf3+GSu6IRJjrk46UKh9L0QuLx+OSIl/df0y1ewx7e28q3BAUEEnOnKrLzpPNxWs2iwModc4KYfg== +"@angular/common@~13.3.11": + version "13.3.11" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-13.3.11.tgz#bcd42bb078ffd3712625be35dc6ec7b6ab828df7" + integrity sha512-gPMwDYIAag1izXm2tRQ6EOIx9FVEUqLdr+qYtRVoQtoBmfkoTSLGcpeBXqqlPVxVPbA6Li1WZZT5wxLLlLAN+Q== dependencies: tslib "^2.3.0" -"@angular/compiler-cli@13.1.3": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-13.1.3.tgz#0269370350e928f22f3150523f95bc490a1e7a7a" - integrity sha512-ALURaJATc54DzPuiZBvALf/alEp1wr7Hjmw4FuMn2cU7p8lwKkra1Dz5dAZOxh7jAcD1GJfrK/+Sb7A3cuuKjQ== +"@angular/compiler-cli@13.3.11": + version "13.3.11" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-13.3.11.tgz#259e2f5174ea23f1f97a5ef65dac20d0fb55c6bc" + integrity sha512-cl+3Wzxt8NRi2WY+RdsxuQ3yQRUp8pSlfSlJJnfaKE1BEqap6uem2DovuhnIbmrLhxZ5xt7o+I1szyO6sn6+ag== dependencies: - "@babel/core" "^7.8.6" - canonical-path "1.0.0" + "@babel/core" "^7.17.2" chokidar "^3.0.0" convert-source-map "^1.5.1" dependency-graph "^0.11.0" - magic-string "^0.25.0" + magic-string "^0.26.0" reflect-metadata "^0.1.2" semver "^7.0.0" sourcemap-codec "^1.4.8" @@ -234,10 +269,10 @@ resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.0.0.tgz#87e0bef4c369b6cadae07e3a4295778fc93799d5" integrity sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ== -"@angular/compiler@~13.1.3": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-13.1.3.tgz#fc33b06046599ecc943f55049e0a121d5ab46d4f" - integrity sha512-dbHs/Oa+Dn+7i0jKtlVDE0lD0DaUC+lVzAcTK/zS37LrckrTMn1CA+z9bZ4gpHig9RU0wgV3YORxv0wokyiB8A== +"@angular/compiler@~13.3.11": + version "13.3.11" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-13.3.11.tgz#1268a3f82bd9693eaf17c2a8764d917efdd624a0" + integrity sha512-EV6JCBbXdHDHbPShWmymvuoxFYG0KVc8sDJpYp47WLHCY2zgZaXhvWs//Hrls3fmi+TGTekgRa2jOBBNce/Ggg== dependencies: tslib "^2.3.0" @@ -246,88 +281,88 @@ resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.0.0.tgz#227dc53e1ac81824f998c6e76000b7efc522641e" integrity sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w== -"@angular/core@~13.1.3": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-13.1.3.tgz#4afd71f674f9ead1aada81315f84846cdba10fa4" - integrity sha512-rvCnIAonRx7VnH2Mv9lQR+UYdlFQQetZCjPw8QOswOspEpHpEPDrp1HxDIqJnHxNqW0n8J3Zev/VgQYr0481UA== +"@angular/core@~13.3.11": + version "13.3.11" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-13.3.11.tgz#e5d56560028b3c99c6814989cba7ad61339968ea" + integrity sha512-9BmE2CxyV0g+AkBeuc8IwjSOiJ8Y+kptXnqD/J8EAFT3B0/fLGVnjFdZC6Sev9L0SNZb6qdzebpfIOLqbUjReQ== dependencies: tslib "^2.3.0" -"@angular/forms@~13.1.3": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-13.1.3.tgz#4b31d1208e2b191766efbbe1a502193e28e89240" - integrity sha512-c4N9zZSILyEbomY2CJo1WAMxiHu/qlycvzxKH5NFS2P2+fieORlbKUJ2p1CbYqcIxVnLYRSdWH8f1JpoaG0ETw== +"@angular/forms@~13.3.11": + version "13.3.11" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-13.3.11.tgz#f63aa99a2b3bd4638fb3429417b4e432ddc0f113" + integrity sha512-iMgTNB+Qc3TsfAZSk1FnUE6MVoddPzxhG9AKCfSlvpjFh8VmXkIjxPL3dun7J8OjayT3X+B8f7LZ9AkKNXtBKw== dependencies: tslib "^2.3.0" "@angular/language-server@^13.1.1": - version "13.1.1" - resolved "https://registry.yarnpkg.com/@angular/language-server/-/language-server-13.1.1.tgz#8420ef3d13d58a31eeb8c61b34b1eb959968d6ec" - integrity sha512-xVwZ5PWOGGBVCWv6tsmtbEEd99Lr5JA2k0X7EShwY7sL69t3iMdeISUmd+jDCpyZ9bMkhUcL1qM6zjUKo7FEyQ== + version "13.3.4" + resolved "https://registry.yarnpkg.com/@angular/language-server/-/language-server-13.3.4.tgz#0560762fd15a86d5800473505d5ac02ade78725d" + integrity sha512-9I6h66TPAY3CbKkBtsj5XAlfJhhexD1KSy7gfe2ZXQsrXygCj6BvjaaDGK5DKs2ea/LLtIDKGb9GAlrJL3dnrw== dependencies: - "@angular/language-service" "13.1.2" + "@angular/language-service" "13.3.8" vscode-jsonrpc "6.0.0" vscode-languageserver "7.0.0" vscode-uri "3.0.3" -"@angular/language-service@13.1.2": - version "13.1.2" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-13.1.2.tgz#ff858d02ba4f1604382271f566e81f1fda22e15f" - integrity sha512-x38shYdkGEZm1pOai1xon82SDIlDAB/RZfhrSPCu56ryWmI0yfD49XUXywsEmpEMG5tmvdDlicaR59Q4QXjvwA== +"@angular/language-service@13.3.8": + version "13.3.8" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-13.3.8.tgz#82b5769f9176b0955f2bd0bf2dde8f7e6d24560a" + integrity sha512-dA+uxtUO+7i5gMCwIMtaUMse6+Bep6JcDWo8GJ/nWS8c3GAS2E96Sm3NBycKWGaiz9HNOgO2cbpPlMifKPREow== -"@angular/platform-browser-dynamic@~13.1.3": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.1.3.tgz#08cbe321e5f39636a08eb77606ff496df478a21e" - integrity sha512-vEWyJ+2gkwh2N6KOJfxUNSdSO51ROlzCqqzCfHrPYQrlOFUfKsYKA1uoiB5UGfFEU0HBtIRWn6xoUy3wzVOZbw== +"@angular/platform-browser-dynamic@~13.3.11": + version "13.3.11" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.11.tgz#779b4042d009c6eb3f16410bdfcba1909bbb2b83" + integrity sha512-xM0VRC1Nw//SHO3gkghUHyjCaaQbk1UYMq4vIu3iKVq9KLqOSZgccv0NcOKHzXXN3S5RgX2auuyOUOCD6ny1Pg== dependencies: tslib "^2.3.0" -"@angular/platform-browser@~13.1.3": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-13.1.3.tgz#69d90b10e89e11f14f5798d1b6fd788255a6114e" - integrity sha512-mnWjdr9UTNZvGk8jPI6O9FIhun8Q/0ghy3dg3I9AfRzEG4vPiIZW1ICksTiB+jV9etzhKpidtmg71bwgeXax1A== +"@angular/platform-browser@~13.3.11": + version "13.3.11" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-13.3.11.tgz#689334ae5b8a77b0cc8c0dc8bd9d0746dc73f362" + integrity sha512-PG3chCErARb6wNzkOed2NsZmgvTmbumRx/6sMXqGkDKXYQm0JULnl4X42Rn+JCgJ9DLJi5/jrd1dbcBCrKk9Vg== dependencies: tslib "^2.3.0" -"@angular/router@~13.1.3": - version "13.1.3" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-13.1.3.tgz#2330254febabce55061236f1761a03aae9a9418f" - integrity sha512-L86kARlc5UNi5KeI0O8PO7wFbTzjEI8ouz+z+aNmCnMUUNX0rbvbuXiPdDvLc71nKZznsPCl2IuO8ojyHrSPsQ== +"@angular/router@~13.3.11": + version "13.3.11" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-13.3.11.tgz#5a74a10d4317d6bde8ee4f57055da10065ce6d87" + integrity sha512-bJTcxDYKEyoqtsi1kJcDJWLmEN+dXpwhU07SsqUwfyN4V5fYF1ApDhpJ4c17hNdjEqe106srT9tiHXhmWayhmQ== dependencies: tslib "^2.3.0" "@ant-design/colors@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-5.0.1.tgz#09670f2f44a7473d7bc01be901c48ec10f12c7a4" - integrity sha512-x1TUaRILaqy3zgFNo+kIqOa3eTYPt81H1/3E4dCjDP4Qvk/xaPEizLDFdRUcIx0cWwyu2LklwfyLHWpbYK8v6A== + version "5.1.1" + resolved "https://registry.yarnpkg.com/@ant-design/colors/-/colors-5.1.1.tgz#800b2186b1e27e66432e67d03ed96af3e21d8940" + integrity sha512-Txy4KpHrp3q4XZdfgOBqLl+lkQIc3tEvHXOimRN1giX1AEC7mGtyrO9p8iRGJ3FLuVMGa2gNEzQyghVymLttKQ== dependencies: "@ctrl/tinycolor" "^3.3.1" "@ant-design/icons-angular@^13.0.1": - version "13.0.2" - resolved "https://registry.yarnpkg.com/@ant-design/icons-angular/-/icons-angular-13.0.2.tgz#9bb74ea93b566fc54c28061afd325ddd6da6ce38" - integrity sha512-5ub/tVR9Y1xAMeYzrfavL+Cma6SjpMYaKOn7Aa02P9vDEHIAwJHsgB2NbO+hlwyHmGX5MeCCVymrVf9US3W2iQ== + version "13.1.0" + resolved "https://registry.yarnpkg.com/@ant-design/icons-angular/-/icons-angular-13.1.0.tgz#6ff472ae880f911bf3a04f19b2f9b5ef5d096a90" + integrity sha512-bQ1pxiDmR8Hx7kUwQImxLGAtexv0uDCCMlKSWdyaw39TnNAPz+Hls0XL+UqVIjHgt/D4R8tkmSMpx3eBGFIY/Q== dependencies: "@ant-design/colors" "^5.0.0" tslib "^2.0.0" "@apollo/client@^3.5.8": - version "3.5.8" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.5.8.tgz#7215b974c5988b6157530eb69369209210349fe0" - integrity sha512-MAm05+I1ullr64VLpZwon/ISnkMuNLf6vDqgo9wiMhHYBGT4yOAbAIseRdjCHZwfSx/7AUuBgaTNOssZPIr6FQ== + version "3.6.9" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.6.9.tgz#ad0ee2e3a3c92dbed4acd6917b6158a492739d94" + integrity sha512-Y1yu8qa2YeaCUBVuw08x8NHenFi0sw2I3KCu7Kw9mDSu86HmmtHJkCAifKVrN2iPgDTW/BbP3EpSV8/EQCcxZA== dependencies: - "@graphql-typed-document-node/core" "^3.0.0" + "@graphql-typed-document-node/core" "^3.1.1" "@wry/context" "^0.6.0" "@wry/equality" "^0.5.0" "@wry/trie" "^0.3.0" - graphql-tag "^2.12.3" + graphql-tag "^2.12.6" hoist-non-react-statics "^3.3.2" optimism "^0.16.1" prop-types "^15.7.2" symbol-observable "^4.0.0" - ts-invariant "^0.9.4" + ts-invariant "^0.10.3" tslib "^2.3.0" - zen-observable-ts "^1.2.0" + zen-observable-ts "^1.2.5" "@ardatan/aggregate-error@0.0.6": version "0.0.6" @@ -336,98 +371,60 @@ dependencies: tslib "~2.0.1" +"@ardatan/relay-compiler@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz#2e4cca43088e807adc63450e8cab037020e91106" + integrity sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q== + dependencies: + "@babel/core" "^7.14.0" + "@babel/generator" "^7.14.0" + "@babel/parser" "^7.14.0" + "@babel/runtime" "^7.0.0" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.0.0" + babel-preset-fbjs "^3.4.0" + chalk "^4.0.0" + fb-watchman "^2.0.0" + fbjs "^3.0.0" + glob "^7.1.1" + immutable "~3.7.6" + invariant "^2.2.4" + nullthrows "^1.1.1" + relay-runtime "12.0.0" + signedsource "^1.0.0" + yargs "^15.3.1" + "@assemblyscript/loader@^0.10.1": version "0.10.1" resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.10.1.tgz#70e45678f06c72fa2e350e8553ec4a4d72b92e06" integrity sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg== -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11", "@babel/code-frame@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.0.tgz#7889eb7ee6518e2afa5d312b15fd7fd1fe9f3744" - integrity sha512-mKgFbYQ+23pjwNGBNPNWrBfa3g/EcmrPnwQpjWoNxq9xYf+M8wcLhMlz/wkWimLjzNzGnl3D+C2186gMzk0VuA== - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.8.tgz#31560f9f29fdf1868de8cb55049538a1b9732a60" - integrity sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q== - -"@babel/core@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" - integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-compilation-targets" "^7.16.0" - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helpers" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.0" - "@babel/types" "^7.16.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/core@^7.0.0", "@babel/core@^7.8.6": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" - integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.10" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.5" - "@babel/parser" "^7.12.10" - "@babel/template" "^7.12.7" - "@babel/traverse" "^7.12.10" - "@babel/types" "^7.12.10" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - semver "^5.4.1" - source-map "^0.5.0" +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.10": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" + integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== -"@babel/core@^7.12.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf" - integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA== +"@babel/core@7.16.12": + version "7.16.12" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" + integrity sha512-dK5PtG1uiN2ikk++5OzSYsitZKny4wOCD0nrO4TqnW4BVBTQ2NGS3NgilvT/TEyxTST7LNyWV/T4tXDoD3fOgg== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.7" + "@babel/generator" "^7.16.8" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-module-transforms" "^7.16.7" "@babel/helpers" "^7.16.7" - "@babel/parser" "^7.16.7" + "@babel/parser" "^7.16.12" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/traverse" "^7.16.10" + "@babel/types" "^7.16.8" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -435,56 +432,28 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.7.5": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.0.tgz#5d61713de310dcfb09258b9fbd081c90623a9548" - integrity sha512-aiv4TeB1i0y3E/+be4U4xtb21CvidNbBegcxvVOrM2B5HfKwwCbYdhGbZUtzeV4HkNevRMLx7oSgQ9bjl4WhXw== +"@babel/core@^7.12.3", "@babel/core@^7.14.0", "@babel/core@^7.17.2", "@babel/core@^7.7.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" + integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.0" - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-transforms" "^7.13.0" - "@babel/helpers" "^7.13.0" - "@babel/parser" "^7.13.0" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helpers" "^7.18.2" + "@babel/parser" "^7.18.5" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.5" + "@babel/types" "^7.18.4" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.1.2" - lodash "^4.17.19" - semver "7.0.0" - source-map "^0.5.0" - -"@babel/generator@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" - integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== - dependencies: - "@babel/types" "^7.16.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.10.5": - version "7.13.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39" - integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw== - dependencies: - "@babel/types" "^7.13.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.12.1", "@babel/generator@^7.12.10", "@babel/generator@^7.12.11", "@babel/generator@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.0.tgz#bd00d4394ca22f220390c56a0b5b85568ec1ec0c" - integrity sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw== - dependencies: - "@babel/types" "^7.13.0" - jsesc "^2.5.1" - source-map "^0.5.0" + json5 "^2.2.1" + semver "^6.3.0" -"@babel/generator@^7.16.0", "@babel/generator@^7.16.7", "@babel/generator@^7.16.8": +"@babel/generator@7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.8.tgz#359d44d966b8cd059d543250ce79596f792f2ebe" integrity sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw== @@ -493,37 +462,16 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.5.0": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" - integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== +"@babel/generator@^7.14.0", "@babel/generator@^7.16.8", "@babel/generator@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== dependencies: - "@babel/types" "^7.12.11" + "@babel/types" "^7.18.2" + "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" - integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" - integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== - dependencies: - "@babel/types" "^7.12.13" -"@babel/helper-annotate-as-pure@^7.12.10": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d" - integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ== - dependencies: - "@babel/types" "^7.12.10" - -"@babel/helper-annotate-as-pure@^7.16.7": +"@babel/helper-annotate-as-pure@7.16.7", "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== @@ -538,79 +486,41 @@ "@babel/helper-explode-assignable-expression" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.0.tgz#c9cf29b82a76fd637f0faa35544c4ace60a155a1" - integrity sha512-SOWD0JK9+MMIhTQiUVd4ng8f3NXhPVQvTv7D3UN4wbp/6cAHnB2EmMaU1zZA2Hh1gwme+THBrVSqTFxHczTh0Q== - dependencies: - "@babel/compat-data" "^7.13.0" - "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" - semver "7.0.0" - -"@babel/helper-compilation-targets@^7.16.0", "@babel/helper-compilation-targets@^7.16.3", "@babel/helper-compilation-targets@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b" - integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA== +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" + integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== dependencies: - "@babel/compat-data" "^7.16.4" + "@babel/compat-data" "^7.17.10" "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" + browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.12.1": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.0.tgz#28d04ad9cfbd1ed1d8b988c9ea7b945263365846" - integrity sha512-twwzhthM4/+6o9766AW2ZBHpIHPSGrPGk1+WfHiu13u/lBnggXGNYCpeAyVfNwGDKfkhEDp+WOD/xafoJ2iLjA== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-member-expression-to-functions" "^7.13.0" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-split-export-declaration" "^7.12.13" - -"@babel/helper-create-class-features-plugin@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba" - integrity sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw== +"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" + integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" "@babel/helper-optimise-call-expression" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-regexp-features-plugin@^7.12.13": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" - integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.12.13" - regexpu-core "^4.7.1" - -"@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" - integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== +"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" + integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^4.7.1" - -"@babel/helper-define-map@^7.10.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.12.13.tgz#8629999d0fd0b3bd3a3468879dd5e6ab7c1f5b21" - integrity sha512-Buu0cZUjCU+WkFi6ZCSr2ONHuDTcQOJGNnXs/lzepONbMyIZ3oDHG4ftrzNK5vGz6ktNmelTRsTFIQQ+ALsIhg== - dependencies: - "@babel/helper-function-name" "^7.12.13" - "@babel/types" "^7.12.13" - lodash "^4.17.19" + regexpu-core "^5.0.1" -"@babel/helper-define-polyfill-provider@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" - integrity sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg== +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -621,12 +531,10 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" - integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== - dependencies: - "@babel/types" "^7.16.7" +"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== "@babel/helper-explode-assignable-expression@^7.16.7": version "7.16.7" @@ -635,37 +543,13 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-function-name@^7.10.4", "@babel/helper-function-name@^7.12.11", "@babel/helper-function-name@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" - integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== +"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== dependencies: - "@babel/helper-get-function-arity" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" @@ -674,76 +558,33 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz#6aa4bb678e0f8c22f58cdb79451d30494461b091" - integrity sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ== - dependencies: - "@babel/types" "^7.13.0" - -"@babel/helper-member-expression-to-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0" - integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-imports@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" - integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-module-imports@^7.12.5": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" - integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== +"@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== dependencies: - "@babel/types" "^7.12.5" + "@babel/types" "^7.17.0" -"@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7": +"@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz#42eb4bd8eea68bab46751212c357bfed8b40f6f1" - integrity sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-replace-supers" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.12.11" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - lodash "^4.17.19" - -"@babel/helper-module-transforms@^7.16.0", "@babel/helper-module-transforms@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41" - integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng== +"@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== dependencies: "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-optimise-call-expression@^7.10.4", "@babel/helper-optimise-call-expression@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" - integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== - dependencies: - "@babel/types" "^7.12.13" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" @@ -752,22 +593,12 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" - integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== - -"@babel/helper-plugin-utils@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz#174254d0f2424d8aefb4dd48057511247b0a9eeb" - integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA== - -"@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== -"@babel/helper-remap-async-to-generator@^7.16.0", "@babel/helper-remap-async-to-generator@^7.16.4", "@babel/helper-remap-async-to-generator@^7.16.8": +"@babel/helper-remap-async-to-generator@^7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== @@ -776,47 +607,23 @@ "@babel/helper-wrap-function" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helper-replace-supers@^7.12.1", "@babel/helper-replace-supers@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz#6034b7b51943094cb41627848cb219cb02be1d24" - integrity sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.13.0" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helper-replace-supers@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" - integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== +"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" + integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-member-expression-to-functions" "^7.17.7" "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-simple-access@^7.12.1", "@babel/helper-simple-access@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" - integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-simple-access@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" - integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g== - dependencies: - "@babel/types" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" -"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" - integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== +"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" + integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== dependencies: - "@babel/types" "^7.12.1" + "@babel/types" "^7.18.2" "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" @@ -825,13 +632,6 @@ dependencies: "@babel/types" "^7.16.0" -"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11", "@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" @@ -839,22 +639,12 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== -"@babel/helper-validator-option@^7.12.17": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" - integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== - -"@babel/helper-validator-option@^7.14.5", "@babel/helper-validator-option@^7.16.7": +"@babel/helper-validator-option@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== @@ -869,98 +659,46 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.0.tgz#7647ae57377b4f0408bf4f8a7af01c42e41badc0" - integrity sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ== - dependencies: - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.0" - -"@babel/helpers@^7.16.0", "@babel/helpers@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" - integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== +"@babel/helpers@^7.16.7", "@babel/helpers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" + integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c" - integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - chalk "^2.0.0" - js-tokens "^4.0.0" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" "@babel/highlight@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" - integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" - integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== - -"@babel/parser@^7.0.0", "@babel/parser@^7.12.1": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" - integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== - -"@babel/parser@^7.10.5": - version "7.13.11" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.11.tgz#f93ebfc99d21c1772afbbaa153f47e7ce2f50b88" - integrity sha512-PhuoqeHoO9fc4ffMEVk4qb/w/s2iOSWohvbHxLtxui0eBg3Lg5gN1U8wp1V1u61hOWkPQJJyJzGH6Y+grwkq8Q== - -"@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.13", "@babel/parser@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.0.tgz#49b9b6ee213e5634fa80361dae139effef893f78" - integrity sha512-w80kxEMFhE3wjMOQkfdTvv0CSdRSJZptIlLhU4eU/coNJeWjduspUFz+IRnBbAq6m5XYBFMoT1TNkk9K9yf10g== - -"@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.7", "@babel/parser@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.8.tgz#61c243a3875f7d0b0962b0543a33ece6ff2f1f17" - integrity sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw== - -"@babel/parser@~7.10.3": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.5.tgz#e7c6bf5a7deff957cec9f04b551e2762909d826b" - integrity sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ== +"@babel/parser@^7.10.3", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.12", "@babel/parser@^7.16.7", "@babel/parser@^7.16.8", "@babel/parser@^7.18.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" + integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.2": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" - integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" + integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" - integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" + integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - -"@babel/plugin-proposal-async-generator-functions@7.16.4": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz#e606eb6015fec6fa5978c940f315eae4e300b081" - integrity sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.16.4" - "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" -"@babel/plugin-proposal-async-generator-functions@^7.16.4": +"@babel/plugin-proposal-async-generator-functions@7.16.8": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== @@ -969,32 +707,33 @@ "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" - integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== +"@babel/plugin-proposal-async-generator-functions@^7.16.8": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" + integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" - integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" + integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-class-static-block@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a" - integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw== +"@babel/plugin-proposal-class-static-block@^7.16.7": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" + integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-dynamic-import@^7.16.0": +"@babel/plugin-proposal-dynamic-import@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== @@ -1002,39 +741,39 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" - integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== +"@babel/plugin-proposal-export-namespace-from@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" + integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" - integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== +"@babel/plugin-proposal-json-strings@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" + integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" - integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== +"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" + integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" - integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" + integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.16.0": +"@babel/plugin-proposal-numeric-separator@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== @@ -1042,27 +781,18 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" - integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.12.1" - -"@babel/plugin-proposal-object-rest-spread@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8" - integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA== +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.16.7": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" + integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== dependencies: - "@babel/compat-data" "^7.16.4" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" -"@babel/plugin-proposal-optional-catch-binding@^7.16.0": +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== @@ -1070,48 +800,40 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" - integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== +"@babel/plugin-proposal-optional-chaining@^7.16.7", "@babel/plugin-proposal-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" + integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz#e418e3aa6f86edd6d327ce84eff188e479f571e0" - integrity sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw== +"@babel/plugin-proposal-private-methods@^7.16.11": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" + integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-private-property-in-object@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" - integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== +"@babel/plugin-proposal-private-property-in-object@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" + integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" - integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" - integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== +"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" + integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -1120,14 +842,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" - integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-class-properties@^7.12.13": +"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== @@ -1155,12 +870,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz#a77670d9abe6d63e8acadf4c31bb1eb5a506bbdd" - integrity sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA== +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.17.12.tgz#23d852902acd19f42923fca9d0f196984d124e73" + integrity sha512-B8QIgBvkIG6G2jgsOHQUist7Sm0EBLDCx8sen072IwqNuzMegZNXrYnSv77cYzA8mLDZAfQYqsLIhimiP1s2HQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" @@ -1169,12 +884,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" - integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz#834035b45061983a491f60096f61a2e7c5674a47" + integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -1197,7 +912,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== @@ -1232,123 +947,74 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" - integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" + integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-arrow-functions@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" - integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== +"@babel/plugin-transform-async-to-generator@7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" + integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== dependencies: + "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" -"@babel/plugin-transform-async-to-generator@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz#df12637f9630ddfa0ef9d7a11bc414d629d38604" - integrity sha512-PbIr7G9kR8tdH6g8Wouir5uVjklETk91GMVSUq+VaOgiinbCkBP6Q7NN/suM/QutZkMJMvcyAriogcYAdhg8Gw== - dependencies: - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-remap-async-to-generator" "^7.16.0" - -"@babel/plugin-transform-async-to-generator@^7.16.0": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" - integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== +"@babel/plugin-transform-async-to-generator@^7.16.8": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" + integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== dependencies: "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-remap-async-to-generator" "^7.16.8" -"@babel/plugin-transform-block-scoped-functions@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" - integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-block-scoped-functions@^7.16.0": +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.0.0": - version "7.12.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.12.tgz#d93a567a152c22aea3b1929bb118d1d0a175cdca" - integrity sha512-VOEPQ/ExOVqbukuP7BYJtI5ZxxsmegTwzZ04j1aF0dkSypGo9XpDHuOrABsJu+ie+penpSJheDJ11x1BEZNiyQ== +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.16.7": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz#7988627b3e9186a13e4d7735dc9c34a056613fb9" + integrity sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-block-scoping@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" - integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-classes@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" - integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== - dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" - "@babel/helper-define-map" "^7.10.4" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" - "@babel/helper-split-export-declaration" "^7.10.4" - globals "^11.1.0" - -"@babel/plugin-transform-classes@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" - integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.16.7": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz#51310b812a090b846c784e47087fa6457baef814" + integrity sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-replace-supers" "^7.18.2" "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" - integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" + integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-computed-properties@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" - integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== +"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.16.7": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" + integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-destructuring@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" - integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-destructuring@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23" - integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-dotall-regex@^7.16.0": +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== @@ -1356,22 +1022,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" - integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== +"@babel/plugin-transform-duplicate-keys@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" + integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-duplicate-keys@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" - integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-exponentiation-operator@^7.16.0": +"@babel/plugin-transform-exponentiation-operator@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== @@ -1380,36 +1038,21 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-flow-strip-types@^7.0.0": - version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.10.tgz#d85e30ecfa68093825773b7b857e5085bbd32c95" - integrity sha512-0ti12wLTLeUIzu9U7kjqIn4MyOL7+Wibc7avsHhj4o1l5C0ATs8p2IMHrVYjm9t9wzhfEO6S3kxax0Rpdo8LTg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-flow" "^7.12.1" - -"@babel/plugin-transform-for-of@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" - integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-for-of@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" - integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.17.12.tgz#5e070f99a4152194bd9275de140e83a92966cab3" + integrity sha512-g8cSNt+cHCpG/uunPQELdq/TeV3eg1OLJYwxypwHtAWo9+nErH3lQx9CSO2uI9lF74A0mR0t4KoMjs1snSgnTw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-flow" "^7.17.12" -"@babel/plugin-transform-function-name@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" - integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.16.7": + version "7.18.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" + integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== dependencies: - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-function-name@^7.16.0": +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== @@ -1418,105 +1061,74 @@ "@babel/helper-function-name" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-literals@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" - integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" + integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-literals@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" - integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-member-expression-literals@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" - integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-member-expression-literals@^7.16.0": +"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" - integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== +"@babel/plugin-transform-modules-amd@^7.16.7": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" + integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" - integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.16.8": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" + integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== dependencies: - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-simple-access" "^7.18.2" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.16.0": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" - integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== - dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" - integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== +"@babel/plugin-transform-modules-systemjs@^7.16.7": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz#87f11c44fbfd3657be000d4897e192d9cb535996" + integrity sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q== dependencies: "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" - integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== - dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.0": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== +"@babel/plugin-transform-modules-umd@^7.16.7": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" + integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-new-target@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" - integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" + integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-object-super@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" - integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== +"@babel/plugin-transform-new-target@^7.16.7": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz#8c228c4a07501dd12c95c5f23d1622131cc23931" + integrity sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-object-super@^7.16.0": +"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== @@ -1524,35 +1136,14 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" -"@babel/plugin-transform-parameters@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" - integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.16.7", "@babel/plugin-transform-parameters@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" + integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-parameters@^7.12.1": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007" - integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw== - dependencies: - "@babel/helper-plugin-utils" "^7.13.0" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-parameters@^7.16.3", "@babel/plugin-transform-parameters@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" - integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-property-literals@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" - integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-property-literals@^7.16.0": +"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== @@ -1560,115 +1151,94 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-react-display-name@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" - integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" + integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-react-jsx@^7.0.0": - version "7.12.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.12.tgz#b0da51ffe5f34b9a900e9f1f5fb814f9e512d25e" - integrity sha512-JDWGuzGNWscYcq8oJVCtSE61a5+XAOos+V0HrxnDieUus4UMnBEosDnY1VJqU5iZ4pA04QY7l0+JvHL1hZEfsw== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz#2aa20022709cd6a3f40b45d60603d5f269586dba" + integrity sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.12.10" - "@babel/helper-module-imports" "^7.12.5" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.12.1" - "@babel/types" "^7.12.12" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-jsx" "^7.17.12" + "@babel/types" "^7.17.12" -"@babel/plugin-transform-regenerator@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== +"@babel/plugin-transform-regenerator@^7.16.7": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" + integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== dependencies: - regenerator-transform "^0.14.2" + "@babel/helper-plugin-utils" "^7.17.12" + regenerator-transform "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" - integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== +"@babel/plugin-transform-reserved-words@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" + integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-runtime@7.16.4": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.4.tgz#f9ba3c7034d429c581e1bd41b4952f3db3c2c7e8" - integrity sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A== +"@babel/plugin-transform-runtime@7.16.10": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.10.tgz#53d9fd3496daedce1dd99639097fa5d14f4c7c2c" + integrity sha512-9nwTiqETv2G7xI4RvXHNfpGdr8pAA+Q/YtN3yLK7OoK7n9OibVm/xymJ838a9A6E/IciOLPj82lZk0fW6O4O7w== dependencies: - "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" semver "^6.3.0" -"@babel/plugin-transform-shorthand-properties@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" - integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-shorthand-properties@^7.16.0": +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-spread@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" - integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" - -"@babel/plugin-transform-spread@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" - integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" + integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" -"@babel/plugin-transform-sticky-regex@^7.16.0": +"@babel/plugin-transform-sticky-regex@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-template-literals@^7.0.0": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" - integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.16.7": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" + integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-template-literals@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" - integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-typeof-symbol@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" - integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== +"@babel/plugin-transform-typeof-symbol@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" + integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-unicode-escapes@^7.16.0": +"@babel/plugin-transform-unicode-escapes@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-unicode-regex@^7.16.0": +"@babel/plugin-transform-unicode-regex@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== @@ -1676,32 +1246,32 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/preset-env@7.16.4": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.4.tgz#4f6ec33b2a3fe72d6bfdcdf3859500232563a2e3" - integrity sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA== +"@babel/preset-env@7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" + integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== dependencies: - "@babel/compat-data" "^7.16.4" - "@babel/helper-compilation-targets" "^7.16.3" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.2" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.0" - "@babel/plugin-proposal-async-generator-functions" "^7.16.4" - "@babel/plugin-proposal-class-properties" "^7.16.0" - "@babel/plugin-proposal-class-static-block" "^7.16.0" - "@babel/plugin-proposal-dynamic-import" "^7.16.0" - "@babel/plugin-proposal-export-namespace-from" "^7.16.0" - "@babel/plugin-proposal-json-strings" "^7.16.0" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" - "@babel/plugin-proposal-numeric-separator" "^7.16.0" - "@babel/plugin-proposal-object-rest-spread" "^7.16.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.0" - "@babel/plugin-proposal-private-methods" "^7.16.0" - "@babel/plugin-proposal-private-property-in-object" "^7.16.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.0" + "@babel/compat-data" "^7.16.8" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" + "@babel/plugin-proposal-class-properties" "^7.16.7" + "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.16.7" + "@babel/plugin-proposal-json-strings" "^7.16.7" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" + "@babel/plugin-proposal-private-property-in-object" "^7.16.7" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" @@ -1716,44 +1286,44 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.0" - "@babel/plugin-transform-async-to-generator" "^7.16.0" - "@babel/plugin-transform-block-scoped-functions" "^7.16.0" - "@babel/plugin-transform-block-scoping" "^7.16.0" - "@babel/plugin-transform-classes" "^7.16.0" - "@babel/plugin-transform-computed-properties" "^7.16.0" - "@babel/plugin-transform-destructuring" "^7.16.0" - "@babel/plugin-transform-dotall-regex" "^7.16.0" - "@babel/plugin-transform-duplicate-keys" "^7.16.0" - "@babel/plugin-transform-exponentiation-operator" "^7.16.0" - "@babel/plugin-transform-for-of" "^7.16.0" - "@babel/plugin-transform-function-name" "^7.16.0" - "@babel/plugin-transform-literals" "^7.16.0" - "@babel/plugin-transform-member-expression-literals" "^7.16.0" - "@babel/plugin-transform-modules-amd" "^7.16.0" - "@babel/plugin-transform-modules-commonjs" "^7.16.0" - "@babel/plugin-transform-modules-systemjs" "^7.16.0" - "@babel/plugin-transform-modules-umd" "^7.16.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.0" - "@babel/plugin-transform-new-target" "^7.16.0" - "@babel/plugin-transform-object-super" "^7.16.0" - "@babel/plugin-transform-parameters" "^7.16.3" - "@babel/plugin-transform-property-literals" "^7.16.0" - "@babel/plugin-transform-regenerator" "^7.16.0" - "@babel/plugin-transform-reserved-words" "^7.16.0" - "@babel/plugin-transform-shorthand-properties" "^7.16.0" - "@babel/plugin-transform-spread" "^7.16.0" - "@babel/plugin-transform-sticky-regex" "^7.16.0" - "@babel/plugin-transform-template-literals" "^7.16.0" - "@babel/plugin-transform-typeof-symbol" "^7.16.0" - "@babel/plugin-transform-unicode-escapes" "^7.16.0" - "@babel/plugin-transform-unicode-regex" "^7.16.0" + "@babel/plugin-transform-arrow-functions" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.16.7" + "@babel/plugin-transform-classes" "^7.16.7" + "@babel/plugin-transform-computed-properties" "^7.16.7" + "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.8" + "@babel/plugin-transform-modules-systemjs" "^7.16.7" + "@babel/plugin-transform-modules-umd" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" + "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.16.7" + "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.16.7" + "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.0" + "@babel/types" "^7.16.8" babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.19.1" + core-js-compat "^3.20.2" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -1768,53 +1338,28 @@ esutils "^2.0.2" "@babel/runtime-corejs3@^7.10.2": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz#ffee91da0eb4c6dae080774e94ba606368e414f4" - integrity sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ== + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz#52f0241a31e0ec61a6187530af6227c2846bd60c" + integrity sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q== dependencies: - core-js-pure "^3.0.0" + core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@7.16.3": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" - integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" - integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== +"@babel/runtime@7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" + integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.8.4": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.0.tgz#7f2cd0e2086626eea186a5a062e21e77ec0e45d0" - integrity sha512-himjPiVq1N4Eqv80uaIMdLYav1LWO51J7PwQkgp3z8N0v8cnaeP5kSgWH4hS6jvjjWAbh5tB5fVw+zuNyyQTYQ== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.8.4": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" + integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" - integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A== - dependencies: - "@babel/code-frame" "^7.16.0" - "@babel/parser" "^7.16.0" - "@babel/types" "^7.16.0" - -"@babel/template@^7.12.13", "@babel/template@^7.12.7": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/template@^7.16.0", "@babel/template@^7.16.7": +"@babel/template@7.16.7", "@babel/template@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== @@ -1823,130 +1368,51 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e" - integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.12.1" - "@babel/types" "^7.12.1" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.0.0": - version "7.12.12" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" - integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== - dependencies: - "@babel/code-frame" "^7.12.11" - "@babel/generator" "^7.12.11" - "@babel/helper-function-name" "^7.12.11" - "@babel/helper-split-export-declaration" "^7.12.11" - "@babel/parser" "^7.12.11" - "@babel/types" "^7.12.12" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.12.10", "@babel/traverse@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc" - integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.13.0" - "@babel/helper-function-name" "^7.12.13" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.13.0" - "@babel/types" "^7.13.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/traverse@^7.16.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.8.tgz#bab2f2b09a5fe8a8d9cad22cbfe3ba1d126fef9c" - integrity sha512-xe+H7JlvKsDQwXRsBhSnq1/+9c+LlQcCK3Tn/l5sbx02HYns/cn7ibp9+RV1sIUqu7hKg91NWsgHurO9dowITQ== +"@babel/traverse@^7.10.3", "@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.16.10", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" + integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.8" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.16.8" - "@babel/types" "^7.16.8" + "@babel/parser" "^7.18.5" + "@babel/types" "^7.18.4" debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@~7.10.3": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564" - integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.10.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.10.4" - "@babel/parser" "^7.10.5" - "@babel/types" "^7.10.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.19" - -"@babel/types@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" - integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA== +"@babel/types@^7.0.0", "@babel/types@^7.10.3", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.12", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.4.4": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.0.0": - version "7.12.12" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" - integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" + "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.13", "@babel/types@^7.12.5", "@babel/types@^7.13.0", "@babel/types@^7.4.4": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80" - integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== -"@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" - integrity sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg== +"@csstools/postcss-progressive-custom-properties@^1.1.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" + integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" + postcss-value-parser "^4.2.0" -"@babel/types@~7.10.3": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15" - integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" +"@csstools/selector-specificity@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz#b6b8d81780b9a9f6459f4bfe9226ac6aefaefe87" + integrity sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA== "@ctrl/tinycolor@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.3.1.tgz#fa0efcf813daa43f8a6aef3ddaa80f7e66f1278e" - integrity sha512-jUJrjU62MUgHDSu5JfONfgRM2V7GfN5KknsygfIbxwRZXGeayIzxk4O9GiYgEAr9DG5HJThTF5+a5x3wtrOKzQ== + version "3.4.1" + resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz#75b4c27948c81e88ccd3a8902047bcd797f38d32" + integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== "@discoveryjs/json-ext@0.5.6": version "0.5.6" @@ -1963,31 +1429,61 @@ ts-node "^9" tslib "^2" -"@eslint/eslintrc@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" - integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== +"@envelop/core@^2.0.0": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@envelop/core/-/core-2.3.3.tgz#a77b28930b3090e2eb1ecb4696ffd6e4bdc4ddba" + integrity sha512-ZWlBXTd35Uwp4cKRsU36NqgpSwXAIe34tXHWUjI7n/TDgOZ0hcgvhQ+nF1dGLsJted0gqnfVX8ZceX30lTGgDg== + dependencies: + "@envelop/types" "2.2.1" + +"@envelop/disable-introspection@^3.0.0": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@envelop/disable-introspection/-/disable-introspection-3.3.3.tgz#90b12972efd7f5df65320579e0b885481fae7230" + integrity sha512-IMNnciasjCCRAyfvYIi9eZx7fHHeuKouw5yozrgg/xCOb4ibiMczKkq5NmvExNo4GxloHzme5ITPK5Xj50jmiw== + +"@envelop/parser-cache@^4.0.0": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@envelop/parser-cache/-/parser-cache-4.3.3.tgz#dcb2fcca29f327d2a7b1c13fdf76d494a7efeab6" + integrity sha512-JfgKynw/OtY+xxzGvQuaiojPYqpxmS6fh4CWc0G/SBjb4keeZ/9yCUANRMT7xN2R9lb2dKwkKS+VGd8Zp7tMWQ== + dependencies: + tiny-lru "7.0.6" + +"@envelop/types@2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@envelop/types/-/types-2.2.1.tgz#5c2e3ae04837533521d0800e7dfa4c3f86f70c4c" + integrity sha512-TONrQ8a2/y0emVhdIRhAJzqCXWtaTBLv+JnYVmihR9Iw8ETyVbZOuReB9EuSGZHciKtpkQXTjD/gq5wVMIa47g== + +"@envelop/validation-cache@^4.0.0": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@envelop/validation-cache/-/validation-cache-4.3.3.tgz#319c967504153918892c8c23ece2b90388d727c3" + integrity sha512-NchRKNGA1gegzFoxi3/PLe3qQThq5DezP+RKalCiTuFwEd89TQo3rugHJXZX6tZNmw6jJ3eTnE9ouOMKvwVo+Q== + dependencies: + tiny-lru "7.0.6" + +"@eslint/eslintrc@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" + integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== dependencies: ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^12.1.0" - ignore "^4.0.6" + debug "^4.3.2" + espree "^9.3.2" + globals "^13.15.0" + ignore "^5.2.0" import-fresh "^3.2.1" - js-yaml "^3.13.1" - lodash "^4.17.20" - minimatch "^3.0.4" + js-yaml "^4.1.0" + minimatch "^3.1.2" strip-json-comments "^3.1.1" "@exodus/schemasafe@^1.0.0-rc.2": - version "1.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.0.0-rc.3.tgz#dda2fbf3dafa5ad8c63dadff7e01d3fdf4736025" - integrity sha512-GoXw0U2Qaa33m3eUcxuHnHpNvHjNlLo0gtV091XBpaRINaB4X6FGCG5XKxSFNFiPpugUDqNruHzaqpTdDm4AOg== + version "1.0.0-rc.6" + resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.0.0-rc.6.tgz#7985f681564cff4ffaebb5896eb4be20af3aae7a" + integrity sha512-dDnQizD94EdBwEj/fh3zPRa/HWCS9O5au2PuHhZBbuM3xWHxuaKzPBOEWze7Nn0xW68MIpZ7Xdyn1CoCpjKCuQ== -"@gar/promisify@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210" - integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw== +"@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== "@graphql-cli/common@4.1.0": version "4.1.0" @@ -2021,494 +1517,526 @@ tmp "0.2.1" tslib "2.0.2" -"@graphql-codegen/add@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@graphql-codegen/add/-/add-2.0.2.tgz#4acbb95be9ebb859a3cebfe7132fdf49ffe06dd8" - integrity sha512-0X1ofeSvAjCNcLar2ZR1EOmm5dvyKJMFbgM+ySf1PaHyoi3yf/xRI2Du81ONzQ733Lhmn3KTX1VKybm/OB1Qtg== +"@graphql-codegen/add@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/add/-/add-3.1.1.tgz#e161ff1c7cdf74ce20b32f75f640f9592b9a18ca" + integrity sha512-XkVwcqosa0CVBlL1HaQT0gp+EUfhuQE3LzrEpzMQLwchxaj/NPVYtOJL6MUHaYDsHzLqxWrufjfbeB3y2NQgRw== dependencies: - "@graphql-codegen/plugin-helpers" "^1.18.2" - tslib "~2.0.1" + "@graphql-codegen/plugin-helpers" "^2.3.2" + tslib "~2.3.0" -"@graphql-codegen/cli@1.20.0": - version "1.20.0" - resolved "https://registry.yarnpkg.com/@graphql-codegen/cli/-/cli-1.20.0.tgz#e1bb62fce07caaf1395ca6e94ffc0f2ba1f57938" - integrity sha512-5pLtZoaqEmEui6PR7IArmD23VLD3++UQby6iNe4NFG4eMcRai2raIM0E4a/MSn7SjyfSRguekYMMC5JKS1VgQw== - dependencies: - "@graphql-codegen/core" "1.17.9" - "@graphql-codegen/plugin-helpers" "^1.18.2" - "@graphql-tools/apollo-engine-loader" "^6" - "@graphql-tools/code-file-loader" "^6" - "@graphql-tools/git-loader" "^6" - "@graphql-tools/github-loader" "^6" - "@graphql-tools/graphql-file-loader" "^6" - "@graphql-tools/json-file-loader" "^6" - "@graphql-tools/load" "^6" - "@graphql-tools/prisma-loader" "^6" - "@graphql-tools/url-loader" "^6" - "@graphql-tools/utils" "^7.0.0" +"@graphql-codegen/cli@2.6.2": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@graphql-codegen/cli/-/cli-2.6.2.tgz#a9aa4656141ee0998cae8c7ad7d0bf9ca8e0c9ae" + integrity sha512-UO75msoVgvLEvfjCezM09cQQqp32+mR8Ma1ACsBpr7nroFvHbgcu2ulx1cMovg4sxDBCsvd9Eq/xOOMpARUxtw== + dependencies: + "@graphql-codegen/core" "2.5.1" + "@graphql-codegen/plugin-helpers" "^2.4.1" + "@graphql-tools/apollo-engine-loader" "^7.0.5" + "@graphql-tools/code-file-loader" "^7.0.6" + "@graphql-tools/git-loader" "^7.0.5" + "@graphql-tools/github-loader" "^7.0.5" + "@graphql-tools/graphql-file-loader" "^7.0.5" + "@graphql-tools/json-file-loader" "^7.1.2" + "@graphql-tools/load" "^7.3.0" + "@graphql-tools/prisma-loader" "^7.0.6" + "@graphql-tools/url-loader" "^7.0.11" + "@graphql-tools/utils" "^8.1.1" ansi-escapes "^4.3.1" - camel-case "^4.1.2" chalk "^4.1.0" - chokidar "^3.4.3" + change-case-all "1.0.14" + chokidar "^3.5.2" common-tags "^1.8.0" - constant-case "^3.0.3" cosmiconfig "^7.0.0" debounce "^1.2.0" - dependency-graph "^0.9.0" + dependency-graph "^0.11.0" detect-indent "^6.0.0" glob "^7.1.6" - graphql-config "^3.2.0" - indent-string "^4.0.0" - inquirer "^7.3.3" + globby "^11.0.4" + graphql-config "^4.1.0" + inquirer "^8.0.0" is-glob "^4.0.1" json-to-pretty-yaml "^1.2.2" latest-version "5.1.0" listr "^0.14.3" listr-update-renderer "^0.5.0" log-symbols "^4.0.0" - lower-case "^2.0.1" - minimatch "^3.0.4" + minimatch "^4.0.0" mkdirp "^1.0.4" - pascal-case "^3.1.1" - request "^2.88.2" string-env-interpolation "^1.0.1" ts-log "^2.2.3" - tslib "~2.0.1" - upper-case "^2.0.2" + tslib "~2.3.0" valid-url "^1.0.9" wrap-ansi "^7.0.0" yaml "^1.10.0" - yargs "^16.1.1" + yargs "^17.0.0" -"@graphql-codegen/core@1.17.9": - version "1.17.9" - resolved "https://registry.yarnpkg.com/@graphql-codegen/core/-/core-1.17.9.tgz#c03e71018ff04d26f5139a2d90a32b31d3bb2b43" - integrity sha512-7nwy+bMWqb0iYJ2DKxA9UiE16meeJ2Ch2XWS/N/ZnA0snTR+GZ20USI8z6YqP1Fuist7LvGO1MbitO2qBT8raA== +"@graphql-codegen/core@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/core/-/core-2.5.1.tgz#e3d50d3449b8c58b74ea08e97faf656a1b7fc8a1" + integrity sha512-alctBVl2hMnBXDLwkgmnFPrZVIiBDsWJSmxJcM4GKg1PB23+xuov35GE47YAyAhQItE1B1fbYnbb1PtGiDZ4LA== dependencies: - "@graphql-codegen/plugin-helpers" "^1.18.2" - "@graphql-tools/merge" "^6" - "@graphql-tools/utils" "^6" - tslib "~2.0.1" + "@graphql-codegen/plugin-helpers" "^2.4.1" + "@graphql-tools/schema" "^8.1.2" + "@graphql-tools/utils" "^8.1.1" + tslib "~2.3.0" -"@graphql-codegen/fragment-matcher@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@graphql-codegen/fragment-matcher/-/fragment-matcher-2.0.1.tgz#be1bdb7590952304639b4c58dc2074e14e1663c0" - integrity sha512-CUHmeunK2xz9P5XBOPYeJwuQCa/7YnwmXJzuLMs+6fKa43KlFTTmpzYHh4p4Hx2lHAsZUpuWSD9/KSptvSG4aA== +"@graphql-codegen/fragment-matcher@3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/fragment-matcher/-/fragment-matcher-3.2.1.tgz#cbaf886d2322cba9ae66e68d7cee512edeaab5b0" + integrity sha512-Hy7tgp5dqDHSUFAfePsK7h5qNk1JWCljpR9gqeY2hnTYzI4YI4jdvH19RiSJ97Px5Ykd15KHzSgj9g0SHm4l8A== dependencies: - "@graphql-codegen/plugin-helpers" "^1.18.2" - tslib "~2.0.1" + "@graphql-codegen/plugin-helpers" "^2.3.2" + tslib "~2.3.0" -"@graphql-codegen/introspection@^1.18.1": - version "1.18.1" - resolved "https://registry.yarnpkg.com/@graphql-codegen/introspection/-/introspection-1.18.1.tgz#fe3f781b2b60cc69a0cf535a3cfe912c71e32770" - integrity sha512-M8kLUYF+YA/oj378RHh7BN5hO2wdplBfL2oyRL9sxjtNY30iYGn7To3TRijDCNoXaak5jLwgwUURZ0BZgX6IJA== +"@graphql-codegen/introspection@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/introspection/-/introspection-2.1.1.tgz#5f3aac47ef46ed817baf969e78dd2dd6d307b18a" + integrity sha512-O9zsy0IoFYDo37pBVF4pSvRMDx/AKdgOxyko4R/O+0DHEw9Nya/pQ3dbn+LDLj2n6X+xOXUBUfFvqhODTqU28w== dependencies: - "@graphql-codegen/plugin-helpers" "^1.18.2" - tslib "~2.0.1" + "@graphql-codegen/plugin-helpers" "^2.3.2" + tslib "~2.3.0" -"@graphql-codegen/plugin-helpers@^1.18.2": - version "1.18.2" - resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-1.18.2.tgz#57011076cb8b8f5d04d37d226a5eda300c01be94" - integrity sha512-SvX+Ryq2naLcoD6jJNxtzc/moWTgHJ+X0KRfvhGWTa+xtFTS02i+PWOR89YYPcD8+LF6GmyFBjx2FmLCx4JwMg== +"@graphql-codegen/plugin-helpers@^2.3.2", "@graphql-codegen/plugin-helpers@^2.4.0", "@graphql-codegen/plugin-helpers@^2.4.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-2.4.2.tgz#e4f6b74dddcf8a9974fef5ce48562ae0980f9fed" + integrity sha512-LJNvwAPv/sKtI3RnRDm+nPD+JeOfOuSOS4FFIpQCMUCyMnFcchV/CPTTv7tT12fLUpEg6XjuFfDBvOwndti30Q== dependencies: - "@graphql-tools/utils" "^6" - camel-case "4.1.1" - common-tags "1.8.0" - constant-case "3.0.3" - import-from "3.0.0" - lodash "~4.17.20" - lower-case "2.0.1" - param-case "3.0.3" - pascal-case "3.1.1" - tslib "~2.0.1" - upper-case "2.0.1" + "@graphql-tools/utils" "^8.5.2" + change-case-all "1.0.14" + common-tags "1.8.2" + import-from "4.0.0" + lodash "~4.17.0" + tslib "~2.3.0" -"@graphql-codegen/plugin-helpers@^1.18.3": - version "1.18.3" - resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-1.18.3.tgz#607a8bc16d80b30d59cd07d70de2ba803b57bc4a" - integrity sha512-+LVxWFlcZW+FB32CyvkdaMN/tIMajO42pCg0Cy8Z8ZZtGutXW1w6UggrvrEUzMZc9GHZQe49q+w7QQxeooaIlA== +"@graphql-codegen/schema-ast@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/schema-ast/-/schema-ast-2.4.1.tgz#ad742b53e32f7a2fbff8ea8a91ba7e617e6ef236" + integrity sha512-bIWlKk/ShoVJfghA4Rt1OWnd34/dQmZM/vAe6fu6QKyOh44aAdqPtYQ2dbTyFXoknmu504etKJGEDllYNUJRfg== dependencies: - "@graphql-tools/utils" "^7.0.0" - common-tags "1.8.0" - import-from "3.0.0" - lodash "~4.17.20" - tslib "~2.1.0" + "@graphql-codegen/plugin-helpers" "^2.3.2" + "@graphql-tools/utils" "^8.1.1" + tslib "~2.3.0" -"@graphql-codegen/typescript-apollo-angular@2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-apollo-angular/-/typescript-apollo-angular-2.2.1.tgz#c34506dc0f2cce15d1ad288173d64ac244195093" - integrity sha512-ATqeJHwVlxoYpGZd/7Eenk4DoxBpPPcxhRzFfCpl+OgroH3fOlJ0ikBNS9whY85CeMd7cTBhONpGuLz9T7ZJSQ== +"@graphql-codegen/typescript-apollo-angular@3.4.9": + version "3.4.9" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-apollo-angular/-/typescript-apollo-angular-3.4.9.tgz#ccf2c4b0ca7662d4507c3f702b75e7e49c8c3ab4" + integrity sha512-e4LeS3zV5Pu1bXQ0XXKedhpuX9qHHD75m97igmyr/aV/uTo3PB/5sYRBHeewAsMm6XcEcROO1MJ+RVRglBhsQQ== dependencies: - "@graphql-codegen/plugin-helpers" "^1.18.2" - "@graphql-codegen/visitor-plugin-common" "^1.17.20" + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/visitor-plugin-common" "2.7.6" auto-bind "~4.0.0" - camel-case "^4.1.1" - tslib "~2.0.1" + change-case-all "1.0.14" + tslib "~2.4.0" -"@graphql-codegen/typescript-apollo-client-helpers@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-apollo-client-helpers/-/typescript-apollo-client-helpers-1.1.3.tgz#b434d1ef5c0bfc62ee838aadbb23bd82df3fa73b" - integrity sha512-sNj2fy/4qc2GMkfLfB4qWgwVEPqrk/7kd6S2L/cUOwvG+XNAzb8QjsVS/a0AbnBPnUOqDfiru9YE6JTfm03Xxw== +"@graphql-codegen/typescript-apollo-client-helpers@2.1.17": + version "2.1.17" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-apollo-client-helpers/-/typescript-apollo-client-helpers-2.1.17.tgz#5bfadc884c73bd80fb56d7c3dfa26be28a100c10" + integrity sha512-yemay3BBFS+yVHZQ1BajP/YWfzM8fWC5ylyl0qE731Ts8kwt0rsZDsOMDgwlxWbbjAgVJU4Xsn/byYqlfX+EEQ== dependencies: - "@graphql-codegen/plugin-helpers" "^1.18.3" - "@graphql-codegen/visitor-plugin-common" "^1.19.0" + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/visitor-plugin-common" "2.7.6" auto-bind "~4.0.0" - change-case-all "^1.0.12" - tslib "~2.1.0" + change-case-all "1.0.14" + tslib "~2.4.0" -"@graphql-codegen/typescript-operations@^1.17.13": - version "1.17.13" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-1.17.13.tgz#a5b08c1573b9507ca5a9e66e795aecc40ddc5305" - integrity sha512-Wm/S4pmPy+KPvFVpygNwC4pd9zKtGIwnS+2rlMUBZVSpv4fxjX2YDvYHP/gucck+SiS0RRxB7hW65bTwCns46g== +"@graphql-codegen/typescript-operations@2.3.7": + version "2.3.7" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-2.3.7.tgz#eddbac9fcbc6ad017b1f9c4760785207827f09db" + integrity sha512-XRArQ+Mk7NAikaRVM3+ctnskPTtucICen/KxrdBOzM+V9CXKkdXg2leu9i5ofoYg0oBMDKJQC4vN2/gKPyfHhg== dependencies: - "@graphql-codegen/plugin-helpers" "^1.18.2" - "@graphql-codegen/typescript" "^1.18.1" - "@graphql-codegen/visitor-plugin-common" "^1.17.22" + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/typescript" "^2.4.10" + "@graphql-codegen/visitor-plugin-common" "2.7.6" auto-bind "~4.0.0" - tslib "~2.0.1" + tslib "~2.4.0" -"@graphql-codegen/typescript@1.20.0", "@graphql-codegen/typescript@^1.18.1": - version "1.20.0" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-1.20.0.tgz#f9a17b869e5691276965a56c7a1efe4eb938b6e7" - integrity sha512-7xW+n0USNpr6iZ4Et17ZbPzBLNe/LrSgrQ6V/8Mlgp1reQWAZtoVw13Oq4GnxHCzAYio8nFindLl+emW9ZBeew== +"@graphql-codegen/typescript@2.4.10": + version "2.4.10" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-2.4.10.tgz#245512826fc0c6663756cca6359ac4d45719af5f" + integrity sha512-Wr/GzYrpY8d8I9+ZFSkNefOpYaMtBL2s2E79IoEOLAqXHUWxM0reBwkEk4oHtLw27AmaXgngajPFPaO5QAhotQ== dependencies: - "@graphql-codegen/plugin-helpers" "^1.18.2" - "@graphql-codegen/visitor-plugin-common" "^1.18.0" + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/schema-ast" "^2.4.1" + "@graphql-codegen/visitor-plugin-common" "2.7.6" auto-bind "~4.0.0" - tslib "~2.0.1" + tslib "~2.4.0" -"@graphql-codegen/visitor-plugin-common@^1.17.20": - version "1.17.22" - resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-1.17.22.tgz#5321077ea54b423397b659406a2b60d1a3b44156" - integrity sha512-5+fkcET7ftqexyEkGWvmalL+RTi1ApfAt9k9FEmM2WdRXi/uYwwYb+qHwIoaMVD0pXKeUAB5+Qgs9+Md4VIM7Q== +"@graphql-codegen/typescript@^2.4.10": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-2.5.1.tgz#5131485ff3ac83d5bc0aae11a2af0c9bdc08854c" + integrity sha512-D/9V2VfVIE4Mu5UiMGQtxyFU5xe1ZkAZi8g/IsqymW8rqlhTwsGhtk4JR55qPfOYxR8G94RJSJpzgNakRneytw== dependencies: - "@graphql-codegen/plugin-helpers" "^1.18.2" - "@graphql-tools/optimize" "^1.0.1" - "@graphql-tools/relay-operation-optimizer" "^6" - array.prototype.flatmap "^1.2.4" + "@graphql-codegen/plugin-helpers" "^2.4.0" + "@graphql-codegen/schema-ast" "^2.4.1" + "@graphql-codegen/visitor-plugin-common" "2.9.1" auto-bind "~4.0.0" - dependency-graph "^0.9.0" - graphql-tag "^2.11.0" - parse-filepath "^1.0.2" - pascal-case "^3.1.1" - tslib "~2.0.1" + tslib "~2.4.0" -"@graphql-codegen/visitor-plugin-common@^1.17.22", "@graphql-codegen/visitor-plugin-common@^1.18.0": - version "1.18.0" - resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-1.18.0.tgz#f4366ec1093c01e752e85f8bd30d09c58b1d6951" - integrity sha512-OR/Cm9nVaqMLe94Ski60UDhaAf/4+QeV/CQRYrCmxFzEsm03U41VplcNgJBXIAB3EgP/LEIZtgkRc1H4N9u9+Q== +"@graphql-codegen/visitor-plugin-common@2.7.6": + version "2.7.6" + resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.7.6.tgz#70be729551fedc090d69fe4f16272bccf5222d28" + integrity sha512-XHeopd8z5UE2alv8nn2LrF+qpfRpldeqHOwrmLmlzyCWcuz5vMiZ08CgtE03micQNQJg5s8Z9m72S3FrvBUoAA== dependencies: - "@graphql-codegen/plugin-helpers" "^1.18.2" + "@graphql-codegen/plugin-helpers" "^2.4.0" "@graphql-tools/optimize" "^1.0.1" - "@graphql-tools/relay-operation-optimizer" "^6" - array.prototype.flatmap "^1.2.4" + "@graphql-tools/relay-operation-optimizer" "^6.3.7" + "@graphql-tools/utils" "^8.3.0" auto-bind "~4.0.0" - dependency-graph "^0.9.0" + change-case-all "1.0.14" + dependency-graph "^0.11.0" graphql-tag "^2.11.0" parse-filepath "^1.0.2" - pascal-case "^3.1.1" - tslib "~2.0.1" + tslib "~2.4.0" -"@graphql-codegen/visitor-plugin-common@^1.19.0": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-1.19.0.tgz#e302dd1ba55cf220079c40fa840a355dcf81526d" - integrity sha512-Vsh9FwB90SBLnSr4KTFY8cuwjC//JBVyqn4k4usBZHFLWLkPwWzdkUKABFg6ET2gnL2L1rSU/gM30eEBrLRXFA== +"@graphql-codegen/visitor-plugin-common@2.9.1": + version "2.9.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-2.9.1.tgz#17dfe33e19e846e7475ab9d4ff43de5130e18397" + integrity sha512-j9eGOSGt+sJcwv0ijhZiQ2cF/0ponscekNVoF+vHdOT4RB0qgOQxykPBk6EbKxIHECnkdV8ARdPVTA21A93/QQ== dependencies: - "@graphql-codegen/plugin-helpers" "^1.18.3" + "@graphql-codegen/plugin-helpers" "^2.4.0" "@graphql-tools/optimize" "^1.0.1" - "@graphql-tools/relay-operation-optimizer" "^6" - array.prototype.flatmap "^1.2.4" + "@graphql-tools/relay-operation-optimizer" "^6.4.14" + "@graphql-tools/utils" "^8.3.0" auto-bind "~4.0.0" - change-case-all "^1.0.12" + change-case-all "1.0.14" dependency-graph "^0.11.0" graphql-tag "^2.11.0" parse-filepath "^1.0.2" - tslib "~2.1.0" + tslib "~2.4.0" -"@graphql-eslint/eslint-plugin@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@graphql-eslint/eslint-plugin/-/eslint-plugin-0.7.1.tgz#027d4bcf81b50a97fe8886ebd65768c5e3d893f9" - integrity sha512-k3OLvQgFn6/pV7LRqiMaAazRKsXDgsO1AYILcryEDI3/hHMqtiIc9Px9fC1yFv30Mr4WXXZr2SdIrrzgAeiY7A== - dependencies: - "@graphql-tools/code-file-loader" "~6.2.6" - "@graphql-tools/graphql-file-loader" "~6.2.6" - "@graphql-tools/graphql-tag-pluck" "~6.3.0" - "@graphql-tools/json-file-loader" "~6.2.6" - "@graphql-tools/load" "~6.2.5" - "@graphql-tools/url-loader" "~6.7.0" - "@graphql-tools/utils" "~7.2.0" - graphql-config "^3.2.0" - graphql-depth-limit "1.1.0" - prettier-linter-helpers "1.0.0" - -"@graphql-inspector/cli@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/cli/-/cli-2.3.0.tgz#92a1f632bf8a4160e07fcb70dd810693dc7a89ff" - integrity sha512-vyhCPhij7g4lKFKean1UCAe7FB70HU+Ktu/yL/uTPe0NqQUmymxmqeAQsDp1Z4ltCm68lzh+xVEz5xpzBQbg+g== - dependencies: - "@graphql-inspector/code-loader" "2.3.0" - "@graphql-inspector/commands" "2.3.0" - "@graphql-inspector/coverage-command" "2.3.0" - "@graphql-inspector/diff-command" "2.3.0" - "@graphql-inspector/docs-command" "2.3.0" - "@graphql-inspector/git-loader" "2.3.0" - "@graphql-inspector/github-loader" "2.3.0" - "@graphql-inspector/graphql-loader" "2.3.0" - "@graphql-inspector/introspect-command" "2.3.0" - "@graphql-inspector/json-loader" "2.3.0" - "@graphql-inspector/loaders" "2.3.0" - "@graphql-inspector/serve-command" "2.3.0" - "@graphql-inspector/similar-command" "2.3.0" - "@graphql-inspector/url-loader" "2.3.0" - "@graphql-inspector/validate-command" "2.3.0" +"@graphql-eslint/eslint-plugin@3.10.3": + version "3.10.3" + resolved "https://registry.yarnpkg.com/@graphql-eslint/eslint-plugin/-/eslint-plugin-3.10.3.tgz#5e77f18b18769fe68565a76cc33a094576809b5c" + integrity sha512-QQiTBw5T28INXayJHHp8lsfiJoanJIYuTqqA0axKlSyDMtNlbfsL3Kc+a+hth29Fw7zyi9XMGAhTDmIOkpskhg== + dependencies: + "@babel/code-frame" "^7.16.7" + "@graphql-tools/code-file-loader" "^7.2.14" + "@graphql-tools/graphql-tag-pluck" "^7.2.6" + "@graphql-tools/utils" "^8.6.9" + chalk "^4.1.2" + debug "^4.3.4" + fast-glob "^3.2.11" + graphql-config "^4.3.0" + graphql-depth-limit "^1.1.0" + lodash.lowercase "^4.3.0" + +"@graphql-inspector/cli@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/cli/-/cli-3.1.2.tgz#186b29cf18f3f94dfb92b11bc038e2c712640d79" + integrity sha512-DXnVcPygy9rKUki4Hixx+RZhvnFTpizlXfWcDFeUfRjs0ETEHCdhaiJFvRwPn0PbK1kVKuEBFREIpoAC2Rm1jg== + dependencies: + "@graphql-inspector/code-loader" "3.1.2" + "@graphql-inspector/commands" "3.1.2" + "@graphql-inspector/coverage-command" "3.1.2" + "@graphql-inspector/diff-command" "3.1.2" + "@graphql-inspector/docs-command" "3.1.2" + "@graphql-inspector/git-loader" "3.1.2" + "@graphql-inspector/github-loader" "3.1.2" + "@graphql-inspector/graphql-loader" "3.1.2" + "@graphql-inspector/introspect-command" "3.1.2" + "@graphql-inspector/json-loader" "3.1.2" + "@graphql-inspector/loaders" "3.1.2" + "@graphql-inspector/serve-command" "3.1.2" + "@graphql-inspector/similar-command" "3.1.2" + "@graphql-inspector/url-loader" "3.1.2" + "@graphql-inspector/validate-command" "3.1.2" tslib "^2.0.0" - yargs "16.1.0" + yargs "17.2.1" -"@graphql-inspector/code-loader@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/code-loader/-/code-loader-2.3.0.tgz#1aada8e557b3b23256630dc99f1350de4d159921" - integrity sha512-68GSt0jUxi06Ob5U+pRhDuhQcji/6w82XpqltMO9KHAH/iUULWpIPdlZhSboClD04qM6sn/77luA3wdLgcBhAQ== +"@graphql-inspector/code-loader@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/code-loader/-/code-loader-3.1.2.tgz#6aca6b3ef875e42b3c7095340e64e66b7f27bb92" + integrity sha512-klKMGUXOBhaXM42SS+ZBU249c9G+157ShqqmSn+oi8VzF7VeVtyQEG8htQHrUMxCc3Xb+qEdRPNbBqE3vmOHWQ== dependencies: - "@graphql-tools/code-file-loader" "^6.0.0" + "@graphql-tools/code-file-loader" "^7.2.2" tslib "^2.0.0" -"@graphql-inspector/commands@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/commands/-/commands-2.3.0.tgz#f0846a68cdbd4b9e2a8124961f6187c7a7749614" - integrity sha512-VAbRoQgLAGrW51QtmItefNKp84mFP2tYRY1BSw+gkwgbJsYKZ/wEXcupj0Eh7NqGqohypY5X09PKwxuuJhq+rg== +"@graphql-inspector/commands@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/commands/-/commands-3.1.2.tgz#753028114beaba19632f43c942f3403ba6fc04f2" + integrity sha512-mRxk4egd84swBB0jBZ2IiWa56qBFrg1HHn/Q0x2evzoGc2NI4S9meEyRd8AtJuPUxWFeCIM7bSMLzBcL/uHT5w== dependencies: tslib "^2.0.0" -"@graphql-inspector/core@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/core/-/core-2.3.0.tgz#d57d11f6b59f65edf5d5056416f4d37e379d9235" - integrity sha512-bxYqAvVK7vDQ0O/ygZ/JNs5XCxSe+DtKwkCsov7RMPoSkkFuHyyC9BDTm6eN57wPwVk5AJ5b5s32oYVTphvELA== +"@graphql-inspector/core@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/core/-/core-3.1.2.tgz#9ef2a72601a77cb0dcc09c5fbd870413bc687ad8" + integrity sha512-f+w1LG6JkGuORBVZM9ZM4j/nT2TgPZwk40m7XutWozNKZpguVG8ChQsldAzb9xPpRZ6Qj/qRfMYMyiA4AAqQbg== dependencies: - dependency-graph "0.9.0" + dependency-graph "0.11.0" + object-inspect "1.10.3" tslib "^2.0.0" -"@graphql-inspector/coverage-command@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/coverage-command/-/coverage-command-2.3.0.tgz#6814d83cc6b1a8095d16ed416702a57bfc58d773" - integrity sha512-v8UaFa3va5epbuCd98PbbyYDS9aYwT3rYOuaP7RWd28rMWQy0GZtDH2g0d2r0WPXZsRNcJWHjgZ+H6oFJ2MjLw== +"@graphql-inspector/coverage-command@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/coverage-command/-/coverage-command-3.1.2.tgz#266a20a355381dcc18f8f19cec62ad1f55c532d9" + integrity sha512-d3zW+v46AeNf0pLQ+SCRX+2BhgmZZSnco2Fjlj8YwS+9LK6JuMz4t5jIS77azu/SgFONozJ4r4+KfALp8FvD1Q== dependencies: - "@graphql-inspector/commands" "2.3.0" - "@graphql-inspector/core" "2.3.0" - "@graphql-inspector/logger" "2.3.0" + "@graphql-inspector/commands" "3.1.2" + "@graphql-inspector/core" "3.1.2" + "@graphql-inspector/logger" "3.1.2" tslib "^2.0.0" -"@graphql-inspector/diff-command@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/diff-command/-/diff-command-2.3.0.tgz#5761503b9107710b8a0843721d31dc6649fa6e90" - integrity sha512-ey/u8eA1UDnxmCHg/m3mx9j7if6qdTUG7iizuGZ9wTGraU/pMs4ycIxvwQ9xkh6ToOldnk7ZqXaaU5uHAXQYPQ== +"@graphql-inspector/diff-command@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/diff-command/-/diff-command-3.1.2.tgz#224f1900894de85995d6892b999fa5f0a5c03fa3" + integrity sha512-+a286Jks3c0W2GYx8YUpO9Rclvij4loFZxKhCaljVbUiQ5l+DOvKCAdarmMIfyb4CUz2OvMx6aiwJQ8xVVb/+g== dependencies: - "@graphql-inspector/commands" "2.3.0" - "@graphql-inspector/core" "2.3.0" - "@graphql-inspector/logger" "2.3.0" + "@graphql-inspector/commands" "3.1.2" + "@graphql-inspector/core" "3.1.2" + "@graphql-inspector/logger" "3.1.2" tslib "^2.0.0" -"@graphql-inspector/docs-command@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/docs-command/-/docs-command-2.3.0.tgz#ec70f0db1f5519cfe2fc11d9945f77e993fb8663" - integrity sha512-MWOMuQxDVNrSc1fF+PSQc1m5AZUxeejuVkzfwUehBYRmHVru3cOk5NYtuhtisu1qdCViQhGAUvv+xYZKUTySDQ== +"@graphql-inspector/docs-command@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/docs-command/-/docs-command-3.1.2.tgz#6db67d8cb741fd560e112af21ae8a678bb9663d2" + integrity sha512-zR/HvzxetzWvUOJFMILIo3YuImaYiKOFZzNqMKHZfkui8mlfwrOlbZXa84KApHNuCAFckfSAunGZNndwpfDaAg== dependencies: - "@graphql-inspector/commands" "2.3.0" - open "7.3.0" + "@graphql-inspector/commands" "3.1.2" + open "8.2.1" tslib "^2.0.0" -"@graphql-inspector/git-loader@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/git-loader/-/git-loader-2.3.0.tgz#5cb7f9575df62794e035f19995e18115b5a4ab02" - integrity sha512-U37gLGGuUoOfpalqQL2QgFEfrUPpFXKc7Lwo69SxIDcAKYz+HMNkYaJmU76SGTf4GFFldof3LaViqjRX18ISLg== +"@graphql-inspector/git-loader@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/git-loader/-/git-loader-3.1.2.tgz#c24b2b6f7d58381b4556eff30ddbdce3a744a0e2" + integrity sha512-Ov5q2lkqjERUztF0tl2MMfX2SXOxV4NJpq/mIanTLJTjexbFic/odBLkMLQv3rOK+bvpZIA6jYA1kNveJa9BiQ== dependencies: - "@graphql-tools/git-loader" "^6.0.0" + "@graphql-tools/git-loader" "^7.1.2" tslib "^2.0.0" -"@graphql-inspector/github-loader@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/github-loader/-/github-loader-2.3.0.tgz#3bda05a7be03f329ce6a5e497dc00c55aa824e6c" - integrity sha512-XHDlBCaGnstpUNs8HPRAtzVdr7DHKGmBr+3QuEs9qUrKbsHe9X7COobG92x5sh2gmkMq64/i2riyjs0R/7+dBg== +"@graphql-inspector/github-loader@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/github-loader/-/github-loader-3.1.2.tgz#c0ece97df569a386ccaa105ac0a8256985d485bb" + integrity sha512-MID5Ca4qkXI3wtbDmMx+90ThNixyA4SC9lF3UsFk1wuMKRqgoNyCe0smnTr1eI4x44CjZsbMnoj1RMypcRwv5A== dependencies: - "@graphql-tools/github-loader" "^6.0.0" + "@graphql-tools/github-loader" "^7.1.1" tslib "^2.0.0" -"@graphql-inspector/graphql-loader@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/graphql-loader/-/graphql-loader-2.3.0.tgz#6d7448be504bcb4b8d4502cadc9225923d0ef139" - integrity sha512-TNkJiYJY/+LfaHmfq1wWRwrLHfc9NN4YaGRwg+sUs+rXDal+5wmCzJiaB+R0EyqtW3Q3BXHF+fFZ0+ROKsevlQ== +"@graphql-inspector/graphql-loader@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/graphql-loader/-/graphql-loader-3.1.2.tgz#1d9d937f01dcc274779472e069be6fd52b66a25c" + integrity sha512-zrsws1Hddd4m88EaBE13RUZpp3+gIiGu7TQmYHnls6k1Dm/gHPm+f9Oi1wWIdbZENUUprZtE0rm832mWg/nObQ== dependencies: - "@graphql-tools/graphql-file-loader" "^6.0.0" + "@graphql-tools/graphql-file-loader" "^7.3.2" tslib "^2.0.0" -"@graphql-inspector/introspect-command@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/introspect-command/-/introspect-command-2.3.0.tgz#f99889694e0f75b7b8cb31626a75ac21838584da" - integrity sha512-r3kunbID/l9W4dZEf5kfbgtI0YCa6O0T4B/SXgGNO2cr8oLW1cSQPWkeP0xpTcDCI2LByP3mGBcQ7/nUk3KP9A== +"@graphql-inspector/introspect-command@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/introspect-command/-/introspect-command-3.1.2.tgz#097b329a674d4165305336ee0fa22263e46d3ccc" + integrity sha512-S6AeQq7Ug1yoBRa+mU89Qsabh/MLa/tYwpu1DtYXaadvhsHEPIGYSJuKfzqpt5+k/cgcYYzC12hCwbjqDndrUA== dependencies: - "@graphql-inspector/commands" "2.3.0" - "@graphql-inspector/core" "2.3.0" - "@graphql-inspector/logger" "2.3.0" + "@graphql-inspector/commands" "3.1.2" + "@graphql-inspector/core" "3.1.2" + "@graphql-inspector/logger" "3.1.2" tslib "^2.0.0" -"@graphql-inspector/json-loader@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/json-loader/-/json-loader-2.3.0.tgz#48c7401bbf2e6ccea6485a98fe4e1da6c59448da" - integrity sha512-h58ZfmP76FygCkrXLwcwvW36+txgPWzV+cB8aWyENEolRz0p3+UX5RxOhQ3sK8yQ5/T9NKOsu5R+VMy0nedJzw== +"@graphql-inspector/json-loader@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/json-loader/-/json-loader-3.1.2.tgz#84cdd1d1697c9495494ee847c916dbcd752a4a59" + integrity sha512-uSYBxIGU5XFOlAvsD+TOtaa6yUj+S0XqxaWGFkqrw8lXdCi2P1ytH7Iv1oh9IJVTZyUWr+bucw/s/3NbT3KJkg== dependencies: - "@graphql-tools/json-file-loader" "^6.0.0" + "@graphql-tools/json-file-loader" "^7.3.2" tslib "^2.0.0" -"@graphql-inspector/loaders@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/loaders/-/loaders-2.3.0.tgz#700fb4bfb482a3099752dc2374b39fff79e60cfd" - integrity sha512-WosY3BIvvEC/+A1Rk6Fk8dv5zwLHOtqoXlrEnhWR7RBcrl1+k7V2AapBWUGmrBfqdUGJOPPmdYAJQkDSFqcZyw== +"@graphql-inspector/loaders@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/loaders/-/loaders-3.1.2.tgz#17aeab213952c4dddc215914ea2bd32d51766a93" + integrity sha512-Gbqagr2uif3QKIWq64VExaWQErmmZCl8ByDsbK7omAJhEre+vvzMK5OXHTBB/ZxPtS8k3dXxBBv9YrUvoQvgiA== dependencies: - "@graphql-tools/load" "^6.0.0" + "@graphql-tools/load" "^7.4.1" tslib "^2.0.0" -"@graphql-inspector/logger@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/logger/-/logger-2.3.0.tgz#c4932fa5c348bc05a6b735233f30c2717626285f" - integrity sha512-l3yVYLoQpJffYBuQ00xzSF0pvkh/2rrcvVwJli7QkV7ckhaqejxFkSJ+lk5lo6axBKPIXiVdjrZdHQps4oL5QQ== +"@graphql-inspector/logger@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/logger/-/logger-3.1.2.tgz#66d21ae230f9e7b0aabe47a80a53013ecb9ff56b" + integrity sha512-QwzhNLSQYY5UNjIy8uRNS+q5ZH4n4SiFCNBQ0zSgRwUXfHHNSj5WVOm5pQntQlK5735TCYDCkYU0plw0cWhflg== dependencies: - chalk "4.1.0" + chalk "4.1.2" figures "3.2.0" - log-symbols "4.0.0" - std-env "2.2.1" + log-symbols "^4.1.0" + std-env "2.3.0" tslib "^2.0.0" -"@graphql-inspector/serve-command@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/serve-command/-/serve-command-2.3.0.tgz#97fd86d7d8fa727c6b7a999fe8fa71aa2d8adb56" - integrity sha512-i1FXgrVT+RRlhQ43XSeis7OqIeAzyN3i/xtxueIkXch1TYIzpHY/KFynpdQsu6UuJ4mJk3+bXiJJVgEG7zArYg== - dependencies: - "@graphql-inspector/commands" "2.3.0" - "@graphql-inspector/logger" "2.3.0" - cors "2.8.5" - express "4.17.1" - express-graphql "0.11.0" - open "7.3.0" +"@graphql-inspector/serve-command@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/serve-command/-/serve-command-3.1.2.tgz#64f49a72c789f858fc018df6af925111d5bdca37" + integrity sha512-a8/Rwpy6DEujpmp+4u/0owwFNHuM2FWoK3jd2bRP1z8CRlCirLvJmEZUU0JUhuPYcF2ue1PuAGPql2MI0KGFPg== + dependencies: + "@graphql-inspector/commands" "3.1.2" + "@graphql-inspector/logger" "3.1.2" + "@graphql-yoga/node" "2.0.0" + open "8.2.1" tslib "^2.0.0" -"@graphql-inspector/similar-command@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/similar-command/-/similar-command-2.3.0.tgz#24eba217503ffe9a496ac34399b13365965ee938" - integrity sha512-rVzNqZ1Sz544UPlKqJwGiLtM8P0kA3qmjID1pkJlyvpviPmrm+S5l5VxTo4R6l16PiQehwIT3sSX0SkX/D1W9A== +"@graphql-inspector/similar-command@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/similar-command/-/similar-command-3.1.2.tgz#eebb6591e6d8aae717004ccd5c286dc209c9359f" + integrity sha512-ht4ODKhtunD7t4UQB43sB8RgeheruCVaeIKp1AC24uYYXnU6pQGF949/ECj40rwTjLy0/nr/kmkAWVMJmSFkIA== dependencies: - "@graphql-inspector/commands" "2.3.0" - "@graphql-inspector/core" "2.3.0" - "@graphql-inspector/logger" "2.3.0" + "@graphql-inspector/commands" "3.1.2" + "@graphql-inspector/core" "3.1.2" + "@graphql-inspector/logger" "3.1.2" tslib "^2.0.0" -"@graphql-inspector/url-loader@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/url-loader/-/url-loader-2.3.0.tgz#7b244158b2c420a5e6beb8a3eff1c3e9b7ca208a" - integrity sha512-lzdJklP3bC9/RPjmaVyt2o5sJCwNy1sRkHliYUvJ3uKug12ggU3QsUC4KG4SNsVxFimqUR7uAQVXqX8tKcTYEg== +"@graphql-inspector/url-loader@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/url-loader/-/url-loader-3.1.2.tgz#a76624ef6030f8321322a195a2b9ccc13f388cb3" + integrity sha512-cURHJOiPxaHQ1UpCpFyVV7CZ556DqF2fMg8T7H09AVOelHRMf4G2SdvVxPzw5CmNpGpobwzPJ74IfVoGMeq+Zg== dependencies: - "@graphql-tools/url-loader" "^6.0.0" + "@graphql-tools/url-loader" "^7.4.2" tslib "^2.0.0" -"@graphql-inspector/validate-command@2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@graphql-inspector/validate-command/-/validate-command-2.3.0.tgz#48b13b1a1de8bfca2d1e593c67338e754390a38e" - integrity sha512-ud3hS7tm9h0oswXjNiL9Y7MyDEyCYEzhdCihv3h6uGqZbKmx3PSHjZjG2B/XlcTkWkn4Ca1qcEEnslKgwW17EQ== +"@graphql-inspector/validate-command@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@graphql-inspector/validate-command/-/validate-command-3.1.2.tgz#ec5f5753e6e6ceb5a0edf576d00add25eb9bae00" + integrity sha512-F/uEhJ0EXqY4Z7t5kSGLo2+TY78TlWpPftlijndORe4BW73M+u/b4BbD7aT3+jOshxPfrIkVJ+YXbRn4GUgxbQ== dependencies: - "@graphql-inspector/commands" "2.3.0" - "@graphql-inspector/core" "2.3.0" - "@graphql-inspector/logger" "2.3.0" + "@graphql-inspector/commands" "3.1.2" + "@graphql-inspector/core" "3.1.2" + "@graphql-inspector/logger" "3.1.2" tslib "^2.0.0" -"@graphql-tools/apollo-engine-loader@^6": - version "6.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-6.2.5.tgz#b9e65744f522bb9f6ca50651e5622820c4f059a8" - integrity sha512-CE4uef6PyxtSG+7OnLklIr2BZZDgjO89ZXK47EKdY7jQy/BQD/9o+8SxPsgiBc+2NsDJH2I6P/nqoaJMOEat6g== +"@graphql-tools/apollo-engine-loader@^7.0.5": + version "7.2.19" + resolved "https://registry.yarnpkg.com/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.2.19.tgz#2fa0569f20fed313ec0c043b420cf832dbc3f76d" + integrity sha512-4wb32BZjSAsPYIXxqqhnF1lYrLxNIPx2M3gPWU9BSEJNGhe7noDxfXXoWoGC0vwpliX30eBdbGU4a6Ab9RSkwQ== dependencies: - "@graphql-tools/utils" "^7.0.0" - cross-fetch "3.0.6" - tslib "~2.0.1" + "@graphql-tools/utils" "8.6.13" + cross-undici-fetch "^0.4.0" + sync-fetch "0.4.1" + tslib "^2.4.0" -"@graphql-tools/batch-execute@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-7.0.0.tgz#e79d11bd5b39f29172f6ec2eafa71103c6a6c85b" - integrity sha512-+ywPfK6N2Ddna6oOa5Qb1Mv7EA8LOwRNOAPP9dL37FEhksJM9pYqPSceUcqMqg7S9b0+Cgr78s408rgvurV3/Q== +"@graphql-tools/batch-execute@8.4.10": + version "8.4.10" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.4.10.tgz#7f5573876a585b88106613a2c320013b09b80f25" + integrity sha512-rugHElhKYZgb6w3mBuNdgjMIo0LW5QbwIwJ1bc9VKWh51dCQmNwJS1Nx8qFWUjhmjVJWbvKWqYb6Z7wTGnOc3g== dependencies: - "@graphql-tools/utils" "^7.0.0" - dataloader "2.0.0" - is-promise "4.0.0" - tslib "~2.0.1" + "@graphql-tools/utils" "8.6.13" + dataloader "2.1.0" + tslib "^2.4.0" + value-or-promise "1.0.11" -"@graphql-tools/code-file-loader@^6", "@graphql-tools/code-file-loader@^6.0.0", "@graphql-tools/code-file-loader@~6.2.6": - version "6.2.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-6.2.6.tgz#f89ffb1a5ca48c67dcf2cff97e1a5d06eabc81c2" - integrity sha512-oDuMiXy1Rj1KszY7no+PFNzw2H25PVJKg9K/deK+IHL1631Q+VLK6/czBIw4TMEsbYhlKErgWDI+XBzK73VZSQ== +"@graphql-tools/batch-execute@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-7.1.2.tgz#35ba09a1e0f80f34f1ce111d23c40f039d4403a0" + integrity sha512-IuR2SB2MnC2ztA/XeTMTfWcA0Wy7ZH5u+nDkDNLAdX+AaSyDnsQS35sCmHqG0VOGTl7rzoyBWLCKGwSJplgtwg== dependencies: - "@graphql-tools/graphql-tag-pluck" "^6.2.6" - "@graphql-tools/utils" "^7.0.0" - tslib "~2.0.1" - -"@graphql-tools/delegate@^7.0.1", "@graphql-tools/delegate@^7.0.7": - version "7.0.8" - resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-7.0.8.tgz#72254c92d4254c4f8477a36f7e6c61b48265dcd5" - integrity sha512-pS1wci7ZxzdCITRrMI66UA+6/E0Z1Yczd3QxJBDb4Kp0nTGy1xy7enGa0+i55EmCvKvuwyx+tzXzwA1fNGRJzg== + "@graphql-tools/utils" "^7.7.0" + dataloader "2.0.0" + tslib "~2.2.0" + value-or-promise "1.0.6" + +"@graphql-tools/code-file-loader@^7.0.6", "@graphql-tools/code-file-loader@^7.2.14", "@graphql-tools/code-file-loader@^7.2.2": + version "7.2.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-7.2.18.tgz#c6633aa5065c50bb667599b4ad7ae1a6c5c72531" + integrity sha512-zHJ2SPuWqK2/rlyxsb4maQo2locqNsZX3Dp5QoiXhUEsrf5vHkEHlp68ldcoFSzveBhXvIAdNrQVgVhzBQ3q7Q== + dependencies: + "@graphql-tools/graphql-tag-pluck" "7.2.10" + "@graphql-tools/utils" "8.6.13" + globby "^11.0.3" + tslib "^2.4.0" + unixify "^1.0.0" + +"@graphql-tools/delegate@8.7.11": + version "8.7.11" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-8.7.11.tgz#89cdd049fae838f4a5f232e69f0e5e9ec0cbec16" + integrity sha512-Rm9ThQHPOz/78OsoB8pZF+8YJm7cHsFMbGa67Q2hLmEAf2xLmNKvsfKfnxYuLnfmpdRxdSmab/ecHZ0qW/DS5w== + dependencies: + "@graphql-tools/batch-execute" "8.4.10" + "@graphql-tools/schema" "8.3.14" + "@graphql-tools/utils" "8.6.13" + dataloader "2.1.0" + graphql-executor "0.0.23" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/delegate@^7.0.1", "@graphql-tools/delegate@^7.1.5": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-7.1.5.tgz#0b027819b7047eff29bacbd5032e34a3d64bd093" + integrity sha512-bQu+hDd37e+FZ0CQGEEczmRSfQRnnXeUxI/0miDV+NV/zCbEdIJj5tYFNrKT03W6wgdqx8U06d8L23LxvGri/g== dependencies: "@ardatan/aggregate-error" "0.0.6" - "@graphql-tools/batch-execute" "^7.0.0" - "@graphql-tools/schema" "^7.0.0" - "@graphql-tools/utils" "^7.1.6" + "@graphql-tools/batch-execute" "^7.1.2" + "@graphql-tools/schema" "^7.1.5" + "@graphql-tools/utils" "^7.7.1" dataloader "2.0.0" - is-promise "4.0.0" - tslib "~2.0.1" + tslib "~2.2.0" + value-or-promise "1.0.6" -"@graphql-tools/git-loader@^6", "@graphql-tools/git-loader@^6.0.0": - version "6.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/git-loader/-/git-loader-6.2.5.tgz#a4b3e8826964e1752a3d3a5a33a44b70b9694353" - integrity sha512-WOQDSzazyPZMZUvymHBv5oZ80/mS7tc8XUNy2GmU5My8YRny5zu4fEgP4vQeFcD1trG3uoHUaJPGF7Mmvp6Yhg== +"@graphql-tools/git-loader@^7.0.5", "@graphql-tools/git-loader@^7.1.2": + version "7.1.17" + resolved "https://registry.yarnpkg.com/@graphql-tools/git-loader/-/git-loader-7.1.17.tgz#fe8daefa514b6a1d05c8f49447f29f622d88c097" + integrity sha512-MTmH8kphIcXzNrsE4Y34tsk+mWrnq1l2zx6VbkssjcdJFLfLCU2/hU4Rxt7Rx96YCHHfdGzwsDJubQhs4RCf9w== dependencies: - "@graphql-tools/graphql-tag-pluck" "^6.2.6" - "@graphql-tools/utils" "^7.0.0" - tslib "~2.0.1" + "@graphql-tools/graphql-tag-pluck" "7.2.10" + "@graphql-tools/utils" "8.6.13" + is-glob "4.0.3" + micromatch "^4.0.4" + tslib "^2.4.0" + unixify "^1.0.0" -"@graphql-tools/github-loader@^6", "@graphql-tools/github-loader@^6.0.0": - version "6.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/github-loader/-/github-loader-6.2.5.tgz#460dff6f5bbaa26957a5ea3be4f452b89cc6a44b" - integrity sha512-DLuQmYeNNdPo8oWus8EePxWCfCAyUXPZ/p1PWqjrX/NGPyH2ZObdqtDAfRHztljt0F/qkBHbGHCEk2TKbRZTRw== +"@graphql-tools/github-loader@^7.0.5", "@graphql-tools/github-loader@^7.1.1": + version "7.2.23" + resolved "https://registry.yarnpkg.com/@graphql-tools/github-loader/-/github-loader-7.2.23.tgz#080e928f3e389f753c14fe0a3e04318f3c364ce8" + integrity sha512-725ovtuB+uTnNk7cvyItXt31T1GJpdzMN9zUj+NgK3FO9gLkx6mdJfW1Hzc27Fb8is39WaNI232Uf2FLLxuVlA== dependencies: - "@graphql-tools/graphql-tag-pluck" "^6.2.6" - "@graphql-tools/utils" "^7.0.0" - cross-fetch "3.0.6" - tslib "~2.0.1" + "@graphql-tools/graphql-tag-pluck" "7.2.10" + "@graphql-tools/utils" "8.6.13" + cross-undici-fetch "^0.4.0" + sync-fetch "0.4.1" + tslib "^2.4.0" -"@graphql-tools/graphql-file-loader@^6", "@graphql-tools/graphql-file-loader@^6.0.0", "@graphql-tools/graphql-file-loader@~6.2.6": - version "6.2.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.6.tgz#5b907d21b0f947df892ed837db74cd3f6d771c34" - integrity sha512-L+RdYl5C6+X0zdOTUotY0K5zwqvSGpqI/qcZpVvCDenoAcVTyaNLmnd/ViErwedhCaGqAAV0wI1nPtyKFPlMUg== +"@graphql-tools/graphql-file-loader@^6.0.0": + version "6.2.7" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.7.tgz#d3720f2c4f4bb90eb2a03a7869a780c61945e143" + integrity sha512-5k2SNz0W87tDcymhEMZMkd6/vs6QawDyjQXWtqkuLTBF3vxjxPD1I4dwHoxgWPIjjANhXybvulD7E+St/7s9TQ== dependencies: - "@graphql-tools/import" "^6.2.5" + "@graphql-tools/import" "^6.2.6" "@graphql-tools/utils" "^7.0.0" - tslib "~2.0.1" + tslib "~2.1.0" -"@graphql-tools/graphql-tag-pluck@^6.2.6", "@graphql-tools/graphql-tag-pluck@~6.3.0": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-6.3.0.tgz#b1c178fe6e8c4823ca611cf1392f530ad0490dd9" - integrity sha512-wdXE6iKTD/ePvhPaukhXm6M8FcsiR9rrwFvkYN96sx2UjDjXzU6vS1QUniNuwjRPaQuSe635vqfaUSN9JuNHvA== +"@graphql-tools/graphql-file-loader@^7.0.5", "@graphql-tools/graphql-file-loader@^7.3.2", "@graphql-tools/graphql-file-loader@^7.3.7": + version "7.3.15" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.3.15.tgz#f99072bc792d361fb3f3fcfcbd3e16ea98d8bbae" + integrity sha512-Sw9XadW3bxH3ACNXE8Tsjh+BVedRCJTuRn3NfO//zOYQZiC3HDTzq9MvnW1a00SmPCXg47rxQpq9L3bdLX0Ohg== dependencies: - "@babel/parser" "7.11.5" - "@babel/traverse" "7.12.1" - "@babel/types" "7.12.1" - "@graphql-tools/utils" "^7.0.0" - tslib "~2.0.1" - optionalDependencies: - vue-template-compiler "^2.6.12" + "@graphql-tools/import" "6.6.17" + "@graphql-tools/utils" "8.6.13" + globby "^11.0.3" + tslib "^2.4.0" + unixify "^1.0.0" -"@graphql-tools/import@^6.2.5": - version "6.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.2.5.tgz#5f279815229320128a07cad188c4860be18cb422" - integrity sha512-ZGXT5tDod7m+LO38fc+o0JzR1LstL0RF35HKEWoUdxRIVaaeYH9VMuan9Gn+9M9RDME3RnzEa9aGzf9ATj8bTA== +"@graphql-tools/graphql-tag-pluck@7.2.10", "@graphql-tools/graphql-tag-pluck@^7.2.6": + version "7.2.10" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.2.10.tgz#f9dfeac8a8369de6a70157388e6cc6d1d984825d" + integrity sha512-j2f0Wzqy69XerNlTTTpSF1weLZN2z8NRrqP0lW/J3bKK9IgOy5eNDzcUUGujcn+MvjkpmjRaD4VFuxN75S2ozQ== dependencies: + "@babel/parser" "^7.16.8" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + "@graphql-tools/utils" "8.6.13" + tslib "^2.4.0" + +"@graphql-tools/import@6.6.17": + version "6.6.17" + resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.6.17.tgz#fb5b5a75b8bd81e9abfd22b04894babf7c0f6ff3" + integrity sha512-rnKT2ZaFM+IbSFE0iOGG5sqdaDDv/XHHH43VIpV4ozryKoK9re3qrhEgfDOHaW47zMLGKrHLPCC/QGf0IpJquw== + dependencies: + "@graphql-tools/utils" "8.6.13" resolve-from "5.0.0" - tslib "~2.0.1" + tslib "^2.4.0" -"@graphql-tools/json-file-loader@^6", "@graphql-tools/json-file-loader@^6.0.0", "@graphql-tools/json-file-loader@~6.2.6": +"@graphql-tools/import@^6.2.6": + version "6.6.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.6.18.tgz#98d290daa77fff848f572482574126526355e88b" + integrity sha512-zZbR2o3PpdqtQmjquCkp9DD14Nxns/CljboQpUtFlzffUjj9UtVizhEPzluVELrlegeseTDcWd2781moZSUzMA== + dependencies: + "@graphql-tools/utils" "8.7.0" + resolve-from "5.0.0" + tslib "^2.4.0" + +"@graphql-tools/json-file-loader@^6.0.0": version "6.2.6" resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-6.2.6.tgz#830482cfd3721a0799cbf2fe5b09959d9332739a" integrity sha512-CnfwBSY5926zyb6fkDBHnlTblHnHI4hoBALFYXnrg0Ev4yWU8B04DZl/pBRUc459VNgO2x8/mxGIZj2hPJG1EA== @@ -2516,6 +2044,16 @@ "@graphql-tools/utils" "^7.0.0" tslib "~2.0.1" +"@graphql-tools/json-file-loader@^7.1.2", "@graphql-tools/json-file-loader@^7.3.2", "@graphql-tools/json-file-loader@^7.3.7": + version "7.3.15" + resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-7.3.15.tgz#362effdf46f9490651f7fabb5fc893d4b8d3e7ed" + integrity sha512-aPxIWBahYVPAVeGxzAsoEsLm+KVfxPcx/wIUZZX8+02YYmuICNT0TeSAk6Q6iuKMJCS7gtU5eYVdEM7qzC2EfA== + dependencies: + "@graphql-tools/utils" "8.6.13" + globby "^11.0.3" + tslib "^2.4.0" + unixify "^1.0.0" + "@graphql-tools/load@6.2.4": version "6.2.4" resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-6.2.4.tgz#a1a860bdc9d9e0bd93e1dffdbd2cf8839a521c41" @@ -2531,116 +2069,195 @@ unixify "1.0.0" valid-url "1.0.9" -"@graphql-tools/load@^6", "@graphql-tools/load@^6.0.0", "@graphql-tools/load@~6.2.5": - version "6.2.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-6.2.5.tgz#7dd0d34c8ce2cfb24f61c6beba2817d9afdd7f2b" - integrity sha512-TpDgp+id0hhD1iMhdFSgWgWumdI/IpFWwouJeaEhEEAEBkdvH4W9gbBiJBSbPQwMPRNWx8/AZtry0cYKLW4lHg== +"@graphql-tools/load@^6.0.0": + version "6.2.8" + resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-6.2.8.tgz#16900fb6e75e1d075cad8f7ea439b334feb0b96a" + integrity sha512-JpbyXOXd8fJXdBh2ta0Q4w8ia6uK5FHzrTNmcvYBvflFuWly2LDTk2abbSl81zKkzswQMEd2UIYghXELRg8eTA== dependencies: - "@graphql-tools/merge" "^6.2.5" - "@graphql-tools/utils" "^7.0.0" - globby "11.0.1" + "@graphql-tools/merge" "^6.2.12" + "@graphql-tools/utils" "^7.5.0" + globby "11.0.3" import-from "3.0.0" is-glob "4.0.1" - p-limit "3.0.2" - tslib "~2.0.1" + p-limit "3.1.0" + tslib "~2.2.0" unixify "1.0.0" valid-url "1.0.9" -"@graphql-tools/merge@^6", "@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.5": - version "6.2.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.6.tgz#f10b8958523687440536ecf166f2959d2f094d0f" - integrity sha512-G6x0QlIzFHoJ3dyF9a4gxmBtaEYJ+EoAAGqXHsE/drRr58K1jscQdfKZdF1wZWZgxkgakHqgt1+oFMeQg/O6ug== +"@graphql-tools/load@^7.3.0", "@graphql-tools/load@^7.4.1", "@graphql-tools/load@^7.5.5": + version "7.5.14" + resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-7.5.14.tgz#820bddc5b6f6172827cf43e1ee10e4317677cdc5" + integrity sha512-K7H4tKKGFliRyjbG92KCuv2fS2pHlRxkcNcDtuEQlA8dhthS9qGB14Ld4eHDuRq1RvHTS6mye5NE1alyY44K9g== dependencies: - "@graphql-tools/schema" "^7.0.0" - "@graphql-tools/utils" "^7.0.0" - tslib "~2.0.1" + "@graphql-tools/schema" "8.3.14" + "@graphql-tools/utils" "8.6.13" + p-limit "3.1.0" + tslib "^2.4.0" -"@graphql-tools/merge@^6.2.4": - version "6.2.7" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.7.tgz#c389bfa405d8d7562a05f794ede4254875e67f75" - integrity sha512-9acgDkkYeAHpuqhOa3E63NZPCX/iWo819Q320sCCMkydF1xgx0qCRYz/V03xPdpQETKRqBG2i2N2csneeEYYig== +"@graphql-tools/merge@8.2.14", "@graphql-tools/merge@^8.2.6": + version "8.2.14" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.2.14.tgz#44811e5453f5515d9537bd1b64f0f0cfe6313a45" + integrity sha512-od6lTF732nwPX91G79eiJf+dyRBHxCaKe7QL4IYeH4d1k+NYqx/ihYpFJNjDaqxmpHH92Hr+TxsP9SYRK3/QKg== dependencies: - "@graphql-tools/schema" "^7.0.0" - "@graphql-tools/utils" "^7.0.0" - tslib "~2.1.0" + "@graphql-tools/utils" "8.6.13" + tslib "^2.4.0" + +"@graphql-tools/merge@8.2.15": + version "8.2.15" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.2.15.tgz#6c41f26bca8cda6a6a7102ccc7f437cfe78ebb98" + integrity sha512-AXslz9ySCEKzTuK8Hl+TYEvfUWQ9tAm1oyIrut1PUEl+TQQMKATC5gCjfBw9PHFxi1ELSaa4lZdZ4bWK4sKfHQ== + dependencies: + "@graphql-tools/utils" "8.7.0" + tslib "^2.4.0" + +"@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.12", "@graphql-tools/merge@^6.2.4": + version "6.2.17" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.17.tgz#4dedf87d8435a5e1091d7cc8d4f371ed1e029f1f" + integrity sha512-G5YrOew39fZf16VIrc49q3c8dBqQDD0ax5LYPiNja00xsXDi0T9zsEWVt06ApjtSdSF6HDddlu5S12QjeN8Tow== + dependencies: + "@graphql-tools/schema" "^8.0.2" + "@graphql-tools/utils" "8.0.2" + tslib "~2.3.0" "@graphql-tools/optimize@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/optimize/-/optimize-1.0.1.tgz#9933fffc5a3c63f95102b1cb6076fb16ac7bb22d" - integrity sha512-cRlUNsbErYoBtzzS6zXahXeTBZGPVlPHXCpnEZ0XiK/KY/sQL96cyzak0fM/Gk6qEI9/l32MYEICjasiBQrl5w== + version "1.2.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/optimize/-/optimize-1.2.1.tgz#c1d26cb082877325f70911981cb703a0a805bda8" + integrity sha512-OAg1TYtYfeQMYlfsxNaY0FbEG4xsjdOHZw7/KFT1BdoCDtvl2NlYKoxh97mgZk2XmjqZULw/PS2E1MOk6IQapw== dependencies: - tslib "~2.0.1" + tslib "^2.4.0" -"@graphql-tools/prisma-loader@^6": - version "6.2.7" - resolved "https://registry.yarnpkg.com/@graphql-tools/prisma-loader/-/prisma-loader-6.2.7.tgz#0a9aa8f40c79a926f2d4f157dc282478bccafaca" - integrity sha512-o0QHl767uaLZVjb9NlupZjCzjfC5Zo79G6QLnK0Rbi0Ldk5Lf05HDZIfMhiyd9tsw73d0GQY7yIPvQJFE2S5Tw== +"@graphql-tools/prisma-loader@^7.0.6": + version "7.1.23" + resolved "https://registry.yarnpkg.com/@graphql-tools/prisma-loader/-/prisma-loader-7.1.23.tgz#f37dedd552dd7f7fa29c7c89f7dd439a5a89c6a5" + integrity sha512-xMAZIS/p7uQFyvmBQaRNQOVTOWsFciXefy+iz+XSe7jYoSREUc8FNdF9YCtOBD8xBnjJnl9h4L1ymrV8qt58rw== dependencies: - "@graphql-tools/url-loader" "^6.3.1" - "@graphql-tools/utils" "^7.0.0" - "@types/http-proxy-agent" "^2.0.2" - "@types/js-yaml" "^3.12.5" + "@graphql-tools/url-loader" "7.9.24" + "@graphql-tools/utils" "8.6.13" + "@types/js-yaml" "^4.0.0" "@types/json-stable-stringify" "^1.0.32" "@types/jsonwebtoken" "^8.5.0" - ajv "^6.12.6" - bluebird "^3.7.2" chalk "^4.1.0" - debug "^4.2.0" - dotenv "^8.2.0" - graphql-request "^3.3.0" - http-proxy-agent "^4.0.1" + debug "^4.3.1" + dotenv "^16.0.0" + graphql-request "^4.0.0" + http-proxy-agent "^5.0.0" https-proxy-agent "^5.0.0" isomorphic-fetch "^3.0.0" - js-yaml "^3.14.0" + js-yaml "^4.0.0" json-stable-stringify "^1.0.1" jsonwebtoken "^8.5.1" lodash "^4.17.20" replaceall "^0.1.6" scuid "^1.1.0" - tslib "~2.0.1" + tslib "^2.4.0" yaml-ast-parser "^0.0.43" -"@graphql-tools/relay-operation-optimizer@^6": - version "6.3.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.3.0.tgz#f8c7f6c8aa4a9cf50ab151fbc5db4f4282a79532" - integrity sha512-Or3UgRvkY9Fq1AAx7q38oPqFmTepLz7kp6wDHKyR0ceG7AvHv5En22R12mAeISInbhff4Rpwgf6cE8zHRu6bCw== +"@graphql-tools/relay-operation-optimizer@^6.3.7", "@graphql-tools/relay-operation-optimizer@^6.4.14": + version "6.4.14" + resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.4.14.tgz#812f32123a1351615a72b4e832852daac7bd64b3" + integrity sha512-vqch2M/sIUfMmlRJ4eCupiHlVPXWOPVpHX9yCZwRrpNg0Eaokyc57NSjJuKVV3KcvcJKf03qfMK2PxFbfDvN9A== dependencies: - "@graphql-tools/utils" "^7.1.0" - relay-compiler "10.1.0" - tslib "~2.0.1" + "@ardatan/relay-compiler" "12.0.0" + "@graphql-tools/utils" "8.6.13" + tslib "^2.4.0" -"@graphql-tools/schema@^7.0.0", "@graphql-tools/schema@^7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-7.1.2.tgz#5084eaef893719ad01329f77673d102e7710542e" - integrity sha512-GabNT51ErVHE2riDH4EQdRusUsI+nMElT8LdFHyuP53v8gwtleAj+LePQ9jif4NYUe/JQVqO8V28vPcHrA7gfQ== +"@graphql-tools/schema@8.3.14", "@graphql-tools/schema@^8.1.2", "@graphql-tools/schema@^8.3.1": + version "8.3.14" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.3.14.tgz#0aeab46daab70fb7505c950dc7e83a3da0eeb7ce" + integrity sha512-ntA4pKwyyPHFFKcIw17FfqGZAiTNZl0tHieQpPIkN5fPc4oHcXOfaj1vBjtIC/Qn6H7XBBu3l2kMA8FpobdxTQ== + dependencies: + "@graphql-tools/merge" "8.2.14" + "@graphql-tools/utils" "8.6.13" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/schema@^7.1.5": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-7.1.5.tgz#07b24e52b182e736a6b77c829fc48b84d89aa711" + integrity sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA== dependencies: "@graphql-tools/utils" "^7.1.2" - tslib "~2.0.1" + tslib "~2.2.0" + value-or-promise "1.0.6" -"@graphql-tools/url-loader@^6", "@graphql-tools/url-loader@^6.0.0", "@graphql-tools/url-loader@^6.3.1", "@graphql-tools/url-loader@~6.7.0": - version "6.7.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.7.1.tgz#ce4d2284b702a360d928e74e7f989d8579f0d9f6" - integrity sha512-7NJ1G5diJAuWYZszQf0mNwPipVMOjIIMteNkutdExBq4CgN0V1xa3/iC25CUrI7sZiq+D367zZNONmKf+3bA2Q== +"@graphql-tools/schema@^8.0.2": + version "8.4.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.4.0.tgz#a9c88bdbc2e0ac662e08b2b9abd3c431152e320c" + integrity sha512-1eNzmcYIdojSkLUyglJ11iqoums/U4/2XN9Aujja8val/M7yaQ7pUKScEiAwdffkH/tKqo3HLPNScXAyIvTNfg== + dependencies: + "@graphql-tools/merge" "8.2.15" + "@graphql-tools/utils" "8.7.0" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/url-loader@7.9.24", "@graphql-tools/url-loader@^7.0.11", "@graphql-tools/url-loader@^7.4.2", "@graphql-tools/url-loader@^7.9.7": + version "7.9.24" + resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-7.9.24.tgz#89b7c712537aa61b7d8e8da4244366c9bfbe5f0a" + integrity sha512-DpIP9EVZSyhSJgX3P2/ka7lzmpDLqOQ4hDkt1oCBcRDzkeyMOKl5XQAg5/X6AaIonhss+/el0ELqTVOHt9zDxQ== + dependencies: + "@graphql-tools/delegate" "8.7.11" + "@graphql-tools/utils" "8.6.13" + "@graphql-tools/wrap" "8.4.20" + "@n1ru4l/graphql-live-query" "^0.9.0" + "@types/ws" "^8.0.0" + cross-undici-fetch "^0.4.0" + dset "^3.1.0" + extract-files "^11.0.0" + graphql-ws "^5.4.1" + isomorphic-ws "^4.0.1" + meros "^1.1.4" + sync-fetch "^0.4.0" + tslib "^2.4.0" + value-or-promise "^1.0.11" + ws "^8.3.0" + +"@graphql-tools/url-loader@^6.0.0": + version "6.10.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz#dc741e4299e0e7ddf435eba50a1f713b3e763b33" + integrity sha512-DSDrbhQIv7fheQ60pfDpGD256ixUQIR6Hhf9Z5bRjVkXOCvO5XrkwoWLiU7iHL81GB1r0Ba31bf+sl+D4nyyfw== dependencies: "@graphql-tools/delegate" "^7.0.1" - "@graphql-tools/utils" "^7.1.5" + "@graphql-tools/utils" "^7.9.0" "@graphql-tools/wrap" "^7.0.4" - "@types/websocket" "1.0.1" - cross-fetch "3.0.6" - eventsource "1.0.7" + "@microsoft/fetch-event-source" "2.0.1" + "@types/websocket" "1.0.2" + abort-controller "3.0.0" + cross-fetch "3.1.4" extract-files "9.0.0" - graphql-upload "^11.0.0" - graphql-ws "3.1.0" + form-data "4.0.0" + graphql-ws "^4.4.1" is-promise "4.0.0" - isomorphic-form-data "2.0.0" isomorphic-ws "4.0.1" - sse-z "0.3.0" + lodash "4.17.21" + meros "1.1.4" + subscriptions-transport-ws "^0.9.18" sync-fetch "0.3.0" - tslib "~2.0.1" + tslib "~2.2.0" valid-url "1.0.9" - ws "7.4.1" + ws "7.4.5" -"@graphql-tools/utils@^6", "@graphql-tools/utils@^6.0.0", "@graphql-tools/utils@^6.2.4": +"@graphql-tools/utils@8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.0.2.tgz#795a8383cdfdc89855707d62491c576f439f3c51" + integrity sha512-gzkavMOgbhnwkHJYg32Adv6f+LxjbQmmbdD5Hty0+CWxvaiuJq+nU6tzb/7VSU4cwhbNLx/lGu2jbCPEW1McZQ== + dependencies: + tslib "~2.3.0" + +"@graphql-tools/utils@8.6.13", "@graphql-tools/utils@^8.1.1", "@graphql-tools/utils@^8.3.0", "@graphql-tools/utils@^8.5.2", "@graphql-tools/utils@^8.6.0", "@graphql-tools/utils@^8.6.5", "@graphql-tools/utils@^8.6.9": + version "8.6.13" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.6.13.tgz#2b4fb7f9f8a29b25eecd44551fb95974de32f969" + integrity sha512-FiVqrQzj4cgz0HcZ3CxUs8NtBGPZFpmsVyIgwmL6YCwIhjJQnT72h8G3/vk5zVfjfesht85YGp0inWWuoCKWzg== + dependencies: + tslib "^2.4.0" + +"@graphql-tools/utils@8.7.0": + version "8.7.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.7.0.tgz#b46aa632ea61c1d8a43bf3012d695de73a696b3b" + integrity sha512-71rJZJKJVOMsDlBGFq9gf1PaBbeW0kt8nZWmc50lhxYrCn0rzRY0auGrhhOWhdhZ5WsCWFxpnDurdF5VqB4Iig== + dependencies: + tslib "^2.4.0" + +"@graphql-tools/utils@^6.0.0", "@graphql-tools/utils@^6.2.4": version "6.2.4" resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-6.2.4.tgz#38a2314d2e5e229ad4f78cca44e1199e18d55856" integrity sha512-ybgZ9EIJE3JMOtTrTd2VcIpTXtDrn2q6eiYkeYMKRVh3K41+LZa6YnR2zKERTXqTWqhobROwLt4BZbw2O3Aeeg== @@ -2649,44 +2266,99 @@ camel-case "4.1.1" tslib "~2.0.1" -"@graphql-tools/utils@^7.0.0", "@graphql-tools/utils@^7.1.0", "@graphql-tools/utils@^7.1.2", "@graphql-tools/utils@^7.1.5", "@graphql-tools/utils@^7.1.6", "@graphql-tools/utils@^7.2.1": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-7.2.3.tgz#4bb2ae0bef62df1f342f2a769434fbb105dd0d84" - integrity sha512-9MvSKeo+8DM72706FvrUP8figQjRzSwBswWrXviyWyt3wSkk6MU2cURQKfMpc0I6nswZvkDSqYoQQ/6mazoXxA== +"@graphql-tools/utils@^7.0.0", "@graphql-tools/utils@^7.1.2", "@graphql-tools/utils@^7.5.0", "@graphql-tools/utils@^7.7.0", "@graphql-tools/utils@^7.7.1", "@graphql-tools/utils@^7.8.1", "@graphql-tools/utils@^7.9.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-7.10.0.tgz#07a4cb5d1bec1ff1dc1d47a935919ee6abd38699" + integrity sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w== dependencies: "@ardatan/aggregate-error" "0.0.6" camel-case "4.1.2" - tslib "~2.0.1" + tslib "~2.2.0" + +"@graphql-tools/wrap@8.4.20": + version "8.4.20" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-8.4.20.tgz#42d67467bbc96865092e96d6623a45f2747628ed" + integrity sha512-qzlrOg9ddaA+30OdG8NU/zDPV2sbJ4Rvool+Zf0nLVRqkAUP/1uxXTQBLgEJKO1xxTlhJ+27FCJ42lG6JG9ZrA== + dependencies: + "@graphql-tools/delegate" "8.7.11" + "@graphql-tools/schema" "8.3.14" + "@graphql-tools/utils" "8.6.13" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/wrap@^7.0.4": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-7.0.8.tgz#ad41e487135ca3ea1ae0ea04bb3f596177fb4f50" + integrity sha512-1NDUymworsOlb53Qfh7fonDi2STvqCtbeE68ntKY9K/Ju/be2ZNxrFSbrBHwnxWcN9PjISNnLcAyJ1L5tCUyhg== + dependencies: + "@graphql-tools/delegate" "^7.1.5" + "@graphql-tools/schema" "^7.1.5" + "@graphql-tools/utils" "^7.8.1" + tslib "~2.2.0" + value-or-promise "1.0.6" + +"@graphql-typed-document-node/core@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" + integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== + +"@graphql-yoga/common@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@graphql-yoga/common/-/common-2.0.0.tgz#b36563021b81bbe0a2b686ff82290a9ad792c997" + integrity sha512-nSENt7yANcnAIHdjTWOeTz4feXnGkgiShUU9MzukFbETWL7pwaK6fjgghUCDVuL2axm155Z3lAhG4sLA4MgvlQ== + dependencies: + "@envelop/core" "^2.0.0" + "@envelop/disable-introspection" "^3.0.0" + "@envelop/parser-cache" "^4.0.0" + "@envelop/validation-cache" "^4.0.0" + "@graphql-tools/schema" "^8.3.1" + "@graphql-tools/utils" "^8.6.0" + "@graphql-typed-document-node/core" "^3.1.1" + "@graphql-yoga/render-graphiql" "2.0.0" + "@graphql-yoga/subscription" "2.0.0" + chalk "4.1.2" + cross-undici-fetch "^0.1.25" + dset "^3.1.1" + tslib "^2.3.1" + +"@graphql-yoga/node@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@graphql-yoga/node/-/node-2.0.0.tgz#c643ceec04feb991c096df89ade8ddd14125fed2" + integrity sha512-fjKHT8UR1DcOgvUfrnVhM7Ggj5vnxVUwlUbkY7NZC8vZiXfVbA9UfLYUYl+hXFmOCDK+S19kszLp7rw0s0LdWg== + dependencies: + "@envelop/core" "^2.0.0" + "@graphql-tools/utils" "^8.6.0" + "@graphql-yoga/common" "2.0.0" + "@graphql-yoga/subscription" "2.0.0" + cross-undici-fetch "^0.1.25" + tslib "^2.3.1" + +"@graphql-yoga/render-graphiql@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@graphql-yoga/render-graphiql/-/render-graphiql-2.0.0.tgz#662df90bd4af0a996be6d9a743fabed6b0497e9d" + integrity sha512-GZuZPCVBpYI0MwaE6nBtrzMoSFyBtiWOUm7i9jbRxu5Sqxuj3Zc0zTaD7V0UQzuPZKzytmMWq2+nbWPIu5FWtg== -"@graphql-tools/utils@~7.2.0": - version "7.2.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-7.2.4.tgz#1164cf268988254f281b4cfbbc0e8f7ca24a8a41" - integrity sha512-EDSb98dTWX8FngvayWejip1DutOl0wGtNbXC7a3CZf5fiJS7bGHQ/8cSlMhe9XaHwpLJCbAk/Ijnp/dYbXk33w== +"@graphql-yoga/subscription@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@graphql-yoga/subscription/-/subscription-2.0.0.tgz#8c6d3d78b2938a554efced7fd6c80cfaa80f7b8f" + integrity sha512-HlG+gIddjIP3/BDrMZymdzmzDjNdYuSGMxx6+1JA83gAEVRDR4yOoT4QeNKYqRhLK9xca/Hxp1PfBpquSa244Q== dependencies: - "@ardatan/aggregate-error" "0.0.6" - camel-case "4.1.2" - tslib "~2.1.0" + "@repeaterjs/repeater" "^3.0.4" + tslib "^2.3.1" -"@graphql-tools/wrap@^7.0.4": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-7.0.5.tgz#8659a119abef11754f712b0c202e41a484951e0b" - integrity sha512-KCWBXsDfvG46GNUawRltJL4j9BMGoOG7oo3WEyCQP+SByWXiTe5cBF45SLDVQgdjljGNZhZ4Lq/7avIkF7/zDQ== +"@humanwhocodes/config-array@^0.9.2": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" + integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== dependencies: - "@graphql-tools/delegate" "^7.0.7" - "@graphql-tools/schema" "^7.1.2" - "@graphql-tools/utils" "^7.2.1" - is-promise "4.0.0" - tslib "~2.0.1" - -"@graphql-typed-document-node/core@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.0.tgz#0eee6373e11418bfe0b5638f654df7a4ca6a3950" - integrity sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg== + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" -"@graphql-typed-document-node/core@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" - integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@iarna/toml@^2.2.5": version "2.2.5" @@ -2709,10 +2381,53 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jridgewell/resolve-uri@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-1.0.0.tgz#3fdf5798f0b49e90155896f6291df186eac06c83" - integrity sha512-9oLAnygRMi8Q5QkYEU4XWK04B+nuoXoxjRvRxgjuChkLZFBja0YPSgdZ7dZtwhncLBcQe/I/E+fLuk5qxcYVJA== +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + +"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" "@kwsites/file-exists@^1.1.1": version "1.1.1" @@ -2726,6 +2441,23 @@ resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919" integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== +"@microsoft/fetch-event-source@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz#9ceecc94b49fbaa15666e38ae8587f64acce007d" + integrity sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA== + +"@n1ru4l/graphql-live-query@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@n1ru4l/graphql-live-query/-/graphql-live-query-0.9.0.tgz#defaebdd31f625bee49e6745934f36312532b2bc" + integrity sha512-BTpWy1e+FxN82RnLz4x1+JcEewVdfmUhV1C6/XYD5AjS7PQp9QFF7K8bCD6gzPTr2l+prvqOyVueQhFJxB1vfg== + +"@ngneat/until-destroy@^9.1.2": + version "9.2.0" + resolved "https://registry.yarnpkg.com/@ngneat/until-destroy/-/until-destroy-9.2.0.tgz#970c1c7397f95b18c922c22765691539a61003e1" + integrity sha512-VbnDFsdAI0QTjz1aD+nsn/GK9j4N26YJUdQZSdL9De6zBIz/s+UtG/DXis0qY/J/kboM5wJNUZEEsTRyoyv+CQ== + dependencies: + tslib "^2.3.0" + "@ngrx/component@^12.5.1": version "12.5.1" resolved "https://registry.yarnpkg.com/@ngrx/component/-/component-12.5.1.tgz#72935cab7b99ee16635c8e8e43c0eee41caf5f8f" @@ -2733,15 +2465,15 @@ dependencies: tslib "^2.0.0" -"@ngtools/webpack@13.1.4": - version "13.1.4" - resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-13.1.4.tgz#359c9078af281413cf9cabd0af06b3fca4ddbf7e" - integrity sha512-s8gzjG2nYHawFhlkHMkQWYrocHkBI1nF6T9K/oCSTIsq6kvTv//Ahno2VdBSgVq8uMnpv1TymvX0nFC4Dgn1HA== +"@ngtools/webpack@13.3.8": + version "13.3.8" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-13.3.8.tgz#3f9ce65145b21c5a7d735a2e2a9c2e62e2917eb7" + integrity sha512-meuXHb1zQ5lz7Uj7kGYTgjd9Tknsi/0jJxs+12nz06h0tifIyIoGU01YA3mUj4/bntIjfWif35KGYP+23bbAVw== "@ngx-formly/core@^5.10.32": - version "5.10.32" - resolved "https://registry.yarnpkg.com/@ngx-formly/core/-/core-5.10.32.tgz#3e89adebe239ead0f703ef5c603490868fd58b45" - integrity sha512-kk6IhpScqTbZvbJzlzIcSpJw6pr+iowiTA7IyTs7fWN6KqSrDg3BcgECXhBiT/t+/sE5kBLuKR7bFT539oKeiA== + version "5.12.5" + resolved "https://registry.yarnpkg.com/@ngx-formly/core/-/core-5.12.5.tgz#6d0bd0782792828db3c56059404e335c6f63c6b6" + integrity sha512-oD+rv2lWrosYTPdU14HG2RR3yKYty+P1ekxn5C7E0Nv6ydK66O5Zh4n8oHS/ptu6CrsymQAmRtLmNtSmL6pTQg== dependencies: tslib "^1.7.1" @@ -2753,43 +2485,51 @@ tslib "^1.9.0" "@ngx-formly/schematics@^5.10.30": - version "5.10.30" - resolved "https://registry.yarnpkg.com/@ngx-formly/schematics/-/schematics-5.10.30.tgz#76ded793d26af463a8d1fb5fd5b2c116608f4ac1" - integrity sha512-BYjJf5V8EiTtQ0JNSWpdViltyqn4jnQq7g+vmOP///xicOKExtwlFKHJZou6bbvyCj+4MQFKt5OuZ8XlW/38Ig== + version "5.12.5" + resolved "https://registry.yarnpkg.com/@ngx-formly/schematics/-/schematics-5.12.5.tgz#e6673d4cb90e0fa0842c7e07f6bbed898a8a7f2d" + integrity sha512-YFHD8Igfva7pp9Yd2hmtTwt4ALBRKQ5pVPmMZVxIg+QNAGg91pInxafzh9jpTWcVHncvRt/UzIjh3/bvctyvAA== dependencies: "@angular-devkit/core" ">=7.0.0" "@angular-devkit/schematics" ">=7.0.0" "@schematics/angular" ">=7.0.0" -"@nodelib/fs.scandir@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" - integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: - "@nodelib/fs.stat" "2.0.4" + "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" - integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" - integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodelib/fs.scandir" "2.1.4" + "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" "@npmcli/fs@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.0.tgz#bec1d1b89c170d40e1b73ad6c943b0b75e7d2951" - integrity sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" + integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== dependencies: "@gar/promisify" "^1.0.1" semver "^7.3.5" +"@npmcli/fs@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.0.tgz#f2a21c28386e299d1a9fae8051d35ad180e33109" + integrity sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ== + dependencies: + "@gar/promisify" "^1.1.3" + semver "^7.3.5" + "@npmcli/git@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" @@ -2820,10 +2560,18 @@ mkdirp "^1.0.4" rimraf "^3.0.2" +"@npmcli/move-file@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.0.tgz#417f585016081a0184cef3e38902cd917a9bbd02" + integrity sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + "@npmcli/node-gyp@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz#3cdc1f30e9736dbc417373ed803b42b1a0a29ede" - integrity sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" + integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== "@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": version "1.3.2" @@ -2842,10 +2590,66 @@ node-gyp "^8.2.0" read-package-json-fast "^2.0.1" -"@polka/url@^1.0.0-next.9": - version "1.0.0-next.11" - resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71" - integrity sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA== +"@nrwl/cli@*", "@nrwl/cli@14.3.5": + version "14.3.5" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-14.3.5.tgz#63610cc56bb55828891d9f93fcde25005620fda1" + integrity sha512-dNV2gxKndq8cgLGqRC58eSaGETAsD7RWDdVqf1SglsEExG6atgEyDaZe/NA7SIQCXIcg2c3zVb9sHqSlTVHdNQ== + dependencies: + nx "14.3.5" + +"@nrwl/devkit@13.1.3": + version "13.1.3" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-13.1.3.tgz#8b119587984371a4caf0b3601a7481e04bac65a3" + integrity sha512-TAAsZJvVc/obeH0rZKY6miVhyM2GHGb8qIWp9MAIdLlXf4VDcNC7rxwb5OrGVSwuTTjqGYBGPUx0yEogOOJthA== + dependencies: + "@nrwl/tao" "13.1.3" + ejs "^3.1.5" + ignore "^5.0.4" + rxjs "^6.5.4" + semver "7.3.4" + tslib "^2.0.0" + +"@nrwl/tao@13.1.3": + version "13.1.3" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-13.1.3.tgz#5a88029b0aa9dfd4bca0a86d3dde2b608c468b36" + integrity sha512-/IwJgSgCBD1SaF+n8RuXX2OxDAh8ut/+P8pMswjm8063ac30UlAHjQ4XTYyskLH8uoUmNi2hNaGgHUrkwt7tQA== + dependencies: + chalk "4.1.0" + enquirer "~2.3.6" + fs-extra "^9.1.0" + jsonc-parser "3.0.0" + nx "13.1.3" + rxjs "^6.5.4" + rxjs-for-await "0.0.2" + semver "7.3.4" + tmp "~0.2.1" + tslib "^2.0.0" + yargs-parser "20.0.0" + +"@nrwl/tao@14.3.5": + version "14.3.5" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-14.3.5.tgz#b0150aab6c15efbb3cfd4d89b0d9d481a7b116ab" + integrity sha512-rdXeXadbOWTRdJMxa6MIdl6Daji+pSGo0kvgBVqAAcb/XL/9Hyyq42SLA+pclp8b1FfIqBt4Mxhpz4qsid5VqQ== + dependencies: + nx "14.3.5" + +"@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" + +"@polka/url@^1.0.0-next.20": + version "1.0.0-next.21" + resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" + integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== + +"@repeaterjs/repeater@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.4.tgz#a04d63f4d1bf5540a41b01a921c9a7fddc3bd1ca" + integrity sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA== "@samverschueren/stream-to-observable@^0.3.0": version "0.3.1" @@ -2854,23 +2658,23 @@ dependencies: any-observable "^0.3.0" -"@schematics/angular@13.1.4": - version "13.1.4" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-13.1.4.tgz#8b8c9ad40403c485bae9adeb51649711651189d2" - integrity sha512-P1YsHn1LLAmdpB9X2TBuUgrvEW/KaoBbHr8ifYO8/uQEXyeiIF+So8h/dnegkYkdsr3OwQ2X/j3UF6/+HS0odg== +"@schematics/angular@13.3.8": + version "13.3.8" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-13.3.8.tgz#88daf0f4d3e2eac36e2f7933c54dd91bbea53ca9" + integrity sha512-VKRTTNYX5OsaJ6sWlCIuU71qihV3ysNNJ49wqLedOlWm1v0GMwoyGMCTJk9OZab1rpo/tYfLTcUlYqP3l6GVDQ== dependencies: - "@angular-devkit/core" "13.1.4" - "@angular-devkit/schematics" "13.1.4" + "@angular-devkit/core" "13.3.8" + "@angular-devkit/schematics" "13.3.8" jsonc-parser "3.0.0" "@schematics/angular@>=7.0.0": - version "11.0.5" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-11.0.5.tgz#149f908fd600e881ff87c5192d2673d0e3c37f38" - integrity sha512-7p2wweoJYhim8YUy3ih1SrPGqRsa6+aEFbYgo9v4zt7b3tOva8SvkbC2alayK74fclzQ7umqa6xAwvWhy8ORvg== + version "14.0.2" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-14.0.2.tgz#b669c59b8e054db14fbf0b44fc337f5f1f886a4e" + integrity sha512-DmLD0s4zUGuX+hjkIkW/aZi+JZZFZfhBxhumG9nftWPYT9/AjX3C2YZCarRWJ83jy/K3N9y4cnva0NVqKxTa3A== dependencies: - "@angular-devkit/core" "11.0.5" - "@angular-devkit/schematics" "11.0.5" - jsonc-parser "2.3.1" + "@angular-devkit/core" "14.0.2" + "@angular-devkit/schematics" "14.0.2" + jsonc-parser "3.0.0" "@sindresorhus/is@^0.14.0": version "0.14.0" @@ -2889,10 +2693,30 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@trysound/sax@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.1.1.tgz#3348564048e7a2d7398c935d466c0414ebb6a669" - integrity sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow== +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.10" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" + integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + dependencies: + "@types/node" "*" "@types/circular-json@^0.4.0": version "0.4.0" @@ -2900,9 +2724,24 @@ integrity sha512-7+kYB7x5a7nFWW1YPBh3KxhwKfiaI4PbZ1RvzBU91LZy7lWJO822CI+pqzSre/DZ7KsCuMKdHnLHHFu8AyXbQg== "@types/component-emitter@^1.2.10": - version "1.2.10" - resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.10.tgz#ef5b1589b9f16544642e473db5ea5639107ef3ea" - integrity sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg== + version "1.2.11" + resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.11.tgz#50d47d42b347253817a39709fef03ce66a108506" + integrity sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ== + +"@types/connect-history-api-fallback@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" + integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" "@types/cookie@^0.4.1": version "0.4.1" @@ -2914,7 +2753,7 @@ resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== -"@types/eslint-scope@^3.7.0": +"@types/eslint-scope@^3.7.3": version "3.7.3" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== @@ -2923,88 +2762,90 @@ "@types/estree" "*" "@types/eslint@*": - version "8.2.2" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.2.2.tgz#b64dbdb64b1957cfc8a698c68297fcf8983e94c7" - integrity sha512-nQxgB8/Sg+QKhnV8e0WzPpxjIGT3tuJDDzybkDi8ItE/IgTlHo07U0shaIjzhcvQxlq9SDRE42lsJ23uvEgJ2A== + version "8.4.3" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.3.tgz#5c92815a3838b1985c90034cd85f26f59d9d0ece" + integrity sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.50": - version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== +"@types/estree@*", "@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== -"@types/http-proxy-agent@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/http-proxy-agent/-/http-proxy-agent-2.0.2.tgz#942c1f35c7e1f0edd1b6ffae5d0f9051cfb32be1" - integrity sha512-2S6IuBRhqUnH1/AUx9k8KWtY3Esg4eqri946MnxTG5HwehF1S5mqLln8fcyMiuQkY72p2gH3W+rIPqp5li0LyQ== +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18": + version "4.17.29" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz#2a1795ea8e9e9c91b4a4bbe475034b20c1ec711c" + integrity sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q== dependencies: "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*": + version "4.17.13" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" + integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" -"@types/http-proxy@^1.17.5": - version "1.17.8" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.8.tgz#968c66903e7e42b483608030ee85800f22d03f55" - integrity sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA== +"@types/http-proxy@^1.17.8": + version "1.17.9" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a" + integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw== dependencies: "@types/node" "*" "@types/jasmine@~3.6.0": - version "3.6.2" - resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.6.2.tgz#02f64450016f7de70f145d698be311136d7c6374" - integrity sha512-AzfesNFLvOs6Q1mHzIsVJXSeUnqVh4ZHG8ngygKJfbkcSLwzrBVm/LKa+mR8KrOfnWtUL47112gde1MC0IXqpQ== - -"@types/js-yaml@^3.12.5": - version "3.12.5" - resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-3.12.5.tgz#136d5e6a57a931e1cce6f9d8126aa98a9c92a6bb" - integrity sha512-JCcp6J0GV66Y4ZMDAQCXot4xprYB+Zfd3meK9+INSJeVZwJmHAW30BBEEkPzXswMXuiyReUGOP3GxrADc9wPww== - -"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + version "3.6.11" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-3.6.11.tgz#4b1d77aa9dfc757407cb9e277216d8e83553f09d" + integrity sha512-S6pvzQDvMZHrkBz2Mcn/8Du7cpr76PlRJBAoHnSDNbulULsH5dp0Gns+WRyNX5LHejz/ljxK4/vIHK/caHt6SQ== -"@types/json-schema@^7.0.3": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== +"@types/js-yaml@^4.0.0": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" + integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== -"@types/json-schema@^7.0.5": - version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json-stable-stringify@^1.0.32": - version "1.0.32" - resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.0.32.tgz#121f6917c4389db3923640b2e68de5fa64dda88e" - integrity sha512-q9Q6+eUEGwQkv4Sbst3J4PNgDOvpuVuKj79Hl/qnmBMEIPzB5QoFRUtjcgcg2xNUZyYUGXBk5wYIBKHt0A+Mxw== + version "1.0.34" + resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz#c0fb25e4d957e0ee2e497c1f553d7f8bb668fd75" + integrity sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw== "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/jsonwebtoken@^8.5.0": - version "8.5.0" - resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz#2531d5e300803aa63279b232c014acf780c981c5" - integrity sha512-9bVao7LvyorRGZCw0VmH/dr7Og+NdjYSsKAxB43OQoComFbBgsEpoR9JW6+qSq/ogwVBg8GI2MfAlk4SYI4OLg== + version "8.5.8" + resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz#01b39711eb844777b7af1d1f2b4cf22fda1c0c44" + integrity sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A== dependencies: "@types/node" "*" -"@types/node@*": - version "14.14.31" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" - integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/node@>=10.0.0": - version "17.0.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.8.tgz#50d680c8a8a78fe30abe6906453b21ad8ab0ad7b" - integrity sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg== +"@types/node@*", "@types/node@>=10.0.0": + version "18.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" + integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== "@types/node@^12.11.1": - version "12.19.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.9.tgz#990ad687ad8b26ef6dcc34a4f69c33d40c95b679" - integrity sha512-yj0DOaQeUrk3nJ0bd3Y5PeDRJ6W0r+kilosLA+dzF3dola/o9hxhMSg2sFvVcA2UHS5JSOsZp4S0c1OEXc4m1Q== + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/parse-json@^4.0.0": version "4.0.0" @@ -3014,160 +2855,214 @@ "@types/q@^0.0.32": version "0.0.32" resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" - integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= + integrity sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug== "@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + version "1.5.5" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" + integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/retry@^0.12.0": - version "0.12.1" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065" - integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g== +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/selenium-webdriver@^3.0.0": - version "3.0.17" - resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz#50bea0c3c2acc31c959c5b1e747798b3b3d06d4b" - integrity sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw== + version "3.0.20" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.20.tgz#448771a0608ebf1c86cb5885914da6311e323c3a" + integrity sha512-6d8Q5fqS9DWOXEhMDiF6/2FjyHdmP/jSTAUyeQR7QwrFeNmYyzmvGxD5aLIHL445HjWgibs0eAig+KPnbaesXA== + +"@types/serve-index@^1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" + integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + dependencies: + "@types/express" "*" + +"@types/serve-static@*": + version "1.13.10" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" + integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + version "0.3.33" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" + integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== + dependencies: + "@types/node" "*" "@types/stacktrace-js@^0.0.33": version "0.0.33" resolved "https://registry.yarnpkg.com/@types/stacktrace-js/-/stacktrace-js-0.0.33.tgz#9b027370ca161b89798f308af77438802546cb39" integrity sha512-aqJ6QM9QThNL4dHBhwl1f9B0oDqiREkYLn9RldghUKsGeFWWGlCsqsRWxbh+hDvvmptMFqc4aIfFIGz9BBu8Qg== -"@types/websocket@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.1.tgz#039272c196c2c0e4868a0d8a1a27bbb86e9e9138" - integrity sha512-f5WLMpezwVxCLm1xQe/kdPpQIOmL0TXYx2O15VYfYzc7hTIdxiOoOvez+McSIw3b7z/1zGovew9YSL7+h4h7/Q== +"@types/websocket@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.2.tgz#d2855c6a312b7da73ed16ba6781815bf30c6187a" + integrity sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ== dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin-tslint@^4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-4.13.0.tgz#ecbf79f4b2f074641fa29e013f09a1bb2a20670b" - integrity sha512-r6n4irL74bOx4z2f0WxnwG6MY67EESvjvK/VMoIlDelW3Q6cwunCH8ug3l8hkPtgJ7iObmUjpAWKxyF4ZdvEcw== +"@types/ws@^8.0.0", "@types/ws@^8.2.2": + version "8.5.3" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" + integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== dependencies: - "@typescript-eslint/experimental-utils" "4.13.0" - lodash "^4.17.15" + "@types/node" "*" -"@typescript-eslint/eslint-plugin@^4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.13.0.tgz#5f580ea520fa46442deb82c038460c3dd3524bb6" - integrity sha512-ygqDUm+BUPvrr0jrXqoteMqmIaZ/bixYOc3A4BRwzEPTZPi6E+n44rzNZWaB0YvtukgP+aoj0i/fyx7FkM2p1w== +"@typescript-eslint/eslint-plugin-tslint@^4.13.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-4.33.0.tgz#c0f2a5a8a53a915d6c24983888013b7e78e75b44" + integrity sha512-o3ujMErtZJPgiNRETRJefo1bFNrloocOa5dMU49OW/G+Rq92IbXTY6FSF5MOwrdQK1X+VBEcA8y6PhUPWGlYqA== dependencies: - "@typescript-eslint/experimental-utils" "4.13.0" - "@typescript-eslint/scope-manager" "4.13.0" - debug "^4.1.1" - functional-red-black-tree "^1.0.1" - lodash "^4.17.15" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.13.0.tgz#9dc9ab375d65603b43d938a0786190a0c72be44e" - integrity sha512-/ZsuWmqagOzNkx30VWYV3MNB/Re/CGv/7EzlqZo5RegBN8tMuPaBgNK6vPBCQA8tcYrbsrTdbx3ixMRRKEEGVw== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.13.0" - "@typescript-eslint/types" "4.13.0" - "@typescript-eslint/typescript-estree" "4.13.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/experimental-utils@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.3.0.tgz#3f3c6c508e01b8050d51b016e7f7da0e3aefcb87" - integrity sha512-cmmIK8shn3mxmhpKfzMMywqiEheyfXLV/+yPDnOTvQX/ztngx7Lg/OD26J8gTZfkLKUmaEBxO2jYP3keV7h2OQ== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.3.0" - "@typescript-eslint/types" "4.3.0" - "@typescript-eslint/typescript-estree" "4.3.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.13.0.tgz#c413d640ea66120cfcc37f891e8cb3fd1c9d247d" - integrity sha512-KO0J5SRF08pMXzq9+abyHnaGQgUJZ3Z3ax+pmqz9vl81JxmTTOUfQmq7/4awVfq09b6C4owNlOgOwp61pYRBSg== - dependencies: - "@typescript-eslint/scope-manager" "4.13.0" - "@typescript-eslint/types" "4.13.0" - "@typescript-eslint/typescript-estree" "4.13.0" - debug "^4.1.1" + "@typescript-eslint/experimental-utils" "4.33.0" + lodash "^4.17.21" -"@typescript-eslint/scope-manager@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.13.0.tgz#5b45912a9aa26b29603d8fa28f5e09088b947141" - integrity sha512-UpK7YLG2JlTp/9G4CHe7GxOwd93RBf3aHO5L+pfjIrhtBvZjHKbMhBXTIQNkbz7HZ9XOe++yKrXutYm5KmjWgQ== +"@typescript-eslint/eslint-plugin@5.17.0": + version "5.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.17.0.tgz#704eb4e75039000531255672bf1c85ee85cf1d67" + integrity sha512-qVstvQilEd89HJk3qcbKt/zZrfBZ+9h2ynpAGlWjWiizA7m/MtLT9RoX6gjtpE500vfIg8jogAkDzdCxbsFASQ== dependencies: - "@typescript-eslint/types" "4.13.0" - "@typescript-eslint/visitor-keys" "4.13.0" + "@typescript-eslint/scope-manager" "5.17.0" + "@typescript-eslint/type-utils" "5.17.0" + "@typescript-eslint/utils" "5.17.0" + debug "^4.3.2" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.2.0" + semver "^7.3.5" + tsutils "^3.21.0" -"@typescript-eslint/scope-manager@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.3.0.tgz#c743227e087545968080d2362cfb1273842cb6a7" - integrity sha512-cTeyP5SCNE8QBRfc+Lgh4Xpzje46kNUhXYfc3pQWmJif92sjrFuHT9hH4rtOkDTo/si9Klw53yIr+djqGZS1ig== +"@typescript-eslint/experimental-utils@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" + integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== dependencies: - "@typescript-eslint/types" "4.3.0" - "@typescript-eslint/visitor-keys" "4.3.0" - -"@typescript-eslint/types@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.13.0.tgz#6a7c6015a59a08fbd70daa8c83dfff86250502f8" - integrity sha512-/+aPaq163oX+ObOG00M0t9tKkOgdv9lq0IQv/y4SqGkAXmhFmCfgsELV7kOCTb2vVU5VOmVwXBXJTDr353C1rQ== - -"@typescript-eslint/types@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.3.0.tgz#1f0b2d5e140543e2614f06d48fb3ae95193c6ddf" - integrity sha512-Cx9TpRvlRjOppGsU6Y6KcJnUDOelja2NNCX6AZwtVHRzaJkdytJWMuYiqi8mS35MRNA3cJSwDzXePfmhU6TANw== + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.33.0" + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/typescript-estree" "4.33.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/experimental-utils@5.17.0": + version "5.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.17.0.tgz#303ba1d766d715c3225a31845b54941889e52f6c" + integrity sha512-U4sM5z0/ymSYqQT6I7lz8l0ZZ9zrya5VIwrwAP5WOJVabVtVsIpTMxPQe+D3qLyePT+VlETUTO2nA1+PufPx9Q== + dependencies: + "@typescript-eslint/utils" "5.17.0" + +"@typescript-eslint/parser@5.17.0": + version "5.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.17.0.tgz#7def77d5bcd8458d12d52909118cf3f0a45f89d5" + integrity sha512-aRzW9Jg5Rlj2t2/crzhA2f23SIYFlF9mchGudyP0uiD6SenIxzKoLjwzHbafgHn39dNV/TV7xwQkLfFTZlJ4ig== + dependencies: + "@typescript-eslint/scope-manager" "5.17.0" + "@typescript-eslint/types" "5.17.0" + "@typescript-eslint/typescript-estree" "5.17.0" + debug "^4.3.2" + +"@typescript-eslint/scope-manager@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" + integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + +"@typescript-eslint/scope-manager@5.17.0": + version "5.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.17.0.tgz#4cea7d0e0bc0e79eb60cad431c89120987c3f952" + integrity sha512-062iCYQF/doQ9T2WWfJohQKKN1zmmXVfAcS3xaiialiw8ZUGy05Em6QVNYJGO34/sU1a7a+90U3dUNfqUDHr3w== + dependencies: + "@typescript-eslint/types" "5.17.0" + "@typescript-eslint/visitor-keys" "5.17.0" + +"@typescript-eslint/type-utils@5.17.0": + version "5.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.17.0.tgz#1c4549d68c89877662224aabb29fbbebf5fc9672" + integrity sha512-3hU0RynUIlEuqMJA7dragb0/75gZmwNwFf/QJokWzPehTZousP/MNifVSgjxNcDCkM5HI2K22TjQWUmmHUINSg== + dependencies: + "@typescript-eslint/utils" "5.17.0" + debug "^4.3.2" + tsutils "^3.21.0" + +"@typescript-eslint/types@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" + integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== + +"@typescript-eslint/types@5.17.0": + version "5.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.17.0.tgz#861ec9e669ffa2aa9b873dd4d28d9b1ce26d216f" + integrity sha512-AgQ4rWzmCxOZLioFEjlzOI3Ch8giDWx8aUDxyNw9iOeCvD3GEYAB7dxWGQy4T/rPVe8iPmu73jPHuaSqcjKvxw== + +"@typescript-eslint/typescript-estree@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" + integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== + dependencies: + "@typescript-eslint/types" "4.33.0" + "@typescript-eslint/visitor-keys" "4.33.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.13.0.tgz#cf6e2207c7d760f5dfd8d18051428fadfc37b45e" - integrity sha512-9A0/DFZZLlGXn5XA349dWQFwPZxcyYyCFX5X88nWs2uachRDwGeyPz46oTsm9ZJE66EALvEns1lvBwa4d9QxMg== +"@typescript-eslint/typescript-estree@5.17.0": + version "5.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.17.0.tgz#a7cba7dfc8f9cc2ac78c18584e684507df4f2488" + integrity sha512-X1gtjEcmM7Je+qJRhq7ZAAaNXYhTgqMkR10euC4Si6PIjb+kwEQHSxGazXUQXFyqfEXdkGf6JijUu5R0uceQzg== dependencies: - "@typescript-eslint/types" "4.13.0" - "@typescript-eslint/visitor-keys" "4.13.0" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" + "@typescript-eslint/types" "5.17.0" + "@typescript-eslint/visitor-keys" "5.17.0" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.3.0.tgz#0edc1068e6b2e4c7fdc54d61e329fce76241cee8" - integrity sha512-ZAI7xjkl+oFdLV/COEz2tAbQbR3XfgqHEGy0rlUXzfGQic6EBCR4s2+WS3cmTPG69aaZckEucBoTxW9PhzHxxw== +"@typescript-eslint/utils@5.17.0": + version "5.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.17.0.tgz#549a9e1d491c6ccd3624bc3c1b098f5cfb45f306" + integrity sha512-DVvndq1QoxQH+hFv+MUQHrrWZ7gQ5KcJzyjhzcqB1Y2Xes1UQQkTRPUfRpqhS8mhTWsSb2+iyvDW1Lef5DD7vA== dependencies: - "@typescript-eslint/types" "4.3.0" - "@typescript-eslint/visitor-keys" "4.3.0" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.17.0" + "@typescript-eslint/types" "5.17.0" + "@typescript-eslint/typescript-estree" "5.17.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@4.13.0": - version "4.13.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.13.0.tgz#9acb1772d3b3183182b6540d3734143dce9476fe" - integrity sha512-6RoxWK05PAibukE7jElqAtNMq+RWZyqJ6Q/GdIxaiUj2Ept8jh8+FUVlbq9WxMYxkmEOPvCE5cRSyupMpwW31g== +"@typescript-eslint/visitor-keys@4.33.0": + version "4.33.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" + integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== dependencies: - "@typescript-eslint/types" "4.13.0" + "@typescript-eslint/types" "4.33.0" eslint-visitor-keys "^2.0.0" -"@typescript-eslint/visitor-keys@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.3.0.tgz#0e5ab0a09552903edeae205982e8521e17635ae0" - integrity sha512-xZxkuR7XLM6RhvLkgv9yYlTcBHnTULzfnw4i6+z2TGBLy9yljAypQaZl9c3zFvy7PNI7fYWyvKYtohyF8au3cw== +"@typescript-eslint/visitor-keys@5.17.0": + version "5.17.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.17.0.tgz#52daae45c61b0211b4c81b53a71841911e479128" + integrity sha512-6K/zlc4OfCagUu7Am/BD5k8PSWQOgh34Nrv9Rxe2tBzlJ7uOeJ/h7ugCGDCeEZHT6k2CJBhbk9IsbkPI0uvUkA== dependencies: - "@typescript-eslint/types" "4.3.0" - eslint-visitor-keys "^2.0.0" + "@typescript-eslint/types" "5.17.0" + eslint-visitor-keys "^3.0.0" "@webassemblyjs/ast@1.11.1": version "1.11.1" @@ -3334,52 +3229,49 @@ integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +abort-controller@3.0.0, abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" acorn-import-assertions@^1.7.6: version "1.8.0" resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== -acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.0.2.tgz#d4632bfc63fd93d0f15fd05ea0e984ffd3f5a8c3" - integrity sha512-+bpA9MJsHdZ4bgfDcpk0ozQyhhVct7rzOmO0s1IIr0AGGgKBljss8n2zp11rRP2wid5VGeh04CgeKzgat5/25A== - -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.0.4: - version "8.0.5" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.5.tgz#a3bfb872a74a6a7f661bc81b9849d9cac12601b7" - integrity sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg== + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.4.1: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== +acorn@^8.0.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== adjust-sourcemap-loader@^4.0.0: version "4.0.0" @@ -3408,10 +3300,10 @@ agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" -agentkeepalive@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.4.tgz#d928028a4862cb11718e55227872e842a44c945b" - integrity sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ== +agentkeepalive@^4.1.3, agentkeepalive@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" + integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== dependencies: debug "^4.1.0" depd "^1.1.2" @@ -3444,52 +3336,57 @@ ajv-keywords@^5.0.0: dependencies: fast-deep-equal "^3.1.3" -ajv@6.12.6, ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.12.6: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== +ajv@8.11.0, ajv@^8.0.0, ajv@^8.8.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== dependencies: fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@8.8.2, ajv@^8.0.0, ajv@^8.8.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" - integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== +ajv@8.9.0: + version "8.9.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.9.0.tgz#738019146638824dea25edcf299dcba1b0e7eb18" + integrity sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" uri-js "^4.2.2" -ajv@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" - integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-colors@4.1.1, ansi-colors@^4.1.1: +ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - type-fest "^0.11.0" + type-fest "^0.21.3" ansi-html-community@^0.0.8: version "0.0.8" @@ -3499,22 +3396,17 @@ ansi-html-community@^0.0.8: ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== ansi-regex@^5.0.1: version "5.0.1" @@ -3529,7 +3421,7 @@ ansi-regex@^6.0.1: ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== ansi-styles@^3.2.1: version "3.2.1" @@ -3558,14 +3450,11 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apollo-angular@^2.1.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/apollo-angular/-/apollo-angular-2.6.0.tgz#3c8d5732c91aeabe6566fda8db0155a6a1ddca17" - integrity sha512-PxlOlYbJB39mKAIMX24twrrM+1qm+o7OIdvtiJJB4MSlDFdlKR6yCrZdxpvoHFRoK1vWl23g4GiLrf8bNyJuyQ== +apollo-angular@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/apollo-angular/-/apollo-angular-3.0.1.tgz#e2cea7502fbacda3337db92c2fac8878814ef9e0" + integrity sha512-gMUa+XdNXYtc4bwK/XFELnYptOKHAW6DYDlQUjxjWlrzqbmiHb49bFI/IT3EK5sR4sukCyYb8rbC4jfsztd/Qg== dependencies: - "@graphql-typed-document-node/core" "^3.1.0" - extract-files "^9.0.0" - semver "^7.0.0" tslib "^2.0.0" apollo-link-schema@^1.2.3: @@ -3606,10 +3495,10 @@ app-root-path@^3.0.0: resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== +are-we-there-yet@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" + integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== dependencies: delegates "^1.0.0" readable-stream "^3.6.0" @@ -3626,10 +3515,15 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + aria-query@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" - integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= + integrity sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw== dependencies: ast-types-flow "0.0.7" commander "^2.11.0" @@ -3642,36 +3536,31 @@ aria-query@^4.2.2: "@babel/runtime" "^7.10.2" "@babel/runtime-corejs3" "^7.10.2" -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== array-flatten@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== -array-includes@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" - integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== +array-includes@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - get-intrinsic "^1.0.1" - is-string "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + get-intrinsic "^1.1.1" + is-string "^1.0.7" array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== dependencies: array-uniq "^1.0.1" @@ -3688,58 +3577,55 @@ array-union@^3.0.1: array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== -array.prototype.flat@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" - integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== +array.prototype.flat@^1.2.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" - integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== +array.prototype.reduce@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" + integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.19.2" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== ast-types-flow@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== async@^2.6.2: version "2.6.4" @@ -3748,10 +3634,15 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" @@ -3769,28 +3660,26 @@ auto-bind@~4.0.0: integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== autoprefixer@^10.4.2: - version "10.4.2" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b" - integrity sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ== + version "10.4.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" + integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== dependencies: - browserslist "^4.19.1" - caniuse-lite "^1.0.30001297" - fraction.js "^4.1.2" + browserslist "^4.20.3" + caniuse-lite "^1.0.30001335" + fraction.js "^4.2.0" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" -available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== - dependencies: - array-filter "^1.0.0" +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: version "1.11.0" @@ -3809,13 +3698,13 @@ axobject-query@^2.2.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== -babel-loader@8.2.3: - version "8.2.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" - integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== +babel-loader@8.2.5: + version "8.2.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" + integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== dependencies: find-cache-dir "^3.3.1" - loader-utils "^1.4.0" + loader-utils "^2.0.0" make-dir "^3.1.0" schema-utils "^2.6.5" @@ -3838,38 +3727,38 @@ babel-plugin-istanbul@6.1.1: test-exclude "^6.0.0" babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd" - integrity sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA== + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz#0b571f4cf3d67f911512f5c04842a7b8e8263087" - integrity sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw== +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.0" - core-js-compat "^3.18.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be" - integrity sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg== + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: version "7.0.0-beta.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== -babel-preset-fbjs@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz#a6024764ea86c8e06a22d794ca8b69534d263541" - integrity sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw== +babel-preset-fbjs@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz#38a14e5a7a3b285a3f3a86552d650dca5cf6111c" + integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== dependencies: "@babel/plugin-proposal-class-properties" "^7.0.0" "@babel/plugin-proposal-object-rest-spread" "^7.0.0" @@ -3899,15 +3788,15 @@ babel-preset-fbjs@^3.3.0: "@babel/plugin-transform-template-literals" "^7.0.0" babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +backo2@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA== -base64-arraybuffer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.1.tgz#87bd13525626db4a9838e00a508c2b73efcf348c" - integrity sha512-vFIUq7FdLtjZMhATwDul5RZWv2jpXQ09Pd6jcVEOvIsqCWTRFD/ONHNfyOS8dA/Ippi5dsIgpyKWKZaAKZltbA== +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base64-js@^1.2.0, base64-js@^1.3.1: version "1.5.1" @@ -3922,12 +3811,12 @@ base64id@2.0.0, base64id@~2.0.0: batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" @@ -3966,47 +3855,28 @@ blocking-proxy@^1.0.0: dependencies: minimist "^1.2.0" -bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -body-parser@1.19.1, body-parser@^1.19.0: - version "1.19.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" - integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== +body-parser@1.20.0, body-parser@^1.19.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== dependencies: - bytes "3.1.1" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "1.8.1" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.9.6" - raw-body "2.4.2" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" type-is "~1.6.18" + unpipe "1.0.0" bonjour@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg== dependencies: array-flatten "^2.1.0" deep-equal "^1.0.1" @@ -4018,7 +3888,7 @@ bonjour@^3.5.0: boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== brace-expansion@^1.1.7: version "1.1.11" @@ -4028,34 +3898,29 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browserslist@^4.14.5, browserslist@^4.9.1: - version "4.16.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" - integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== - dependencies: - caniuse-lite "^1.0.30001181" - colorette "^1.2.1" - electron-to-chromium "^1.3.649" - escalade "^3.1.1" - node-releases "^1.1.70" - -browserslist@^4.17.5, browserslist@^4.19.1: - version "4.19.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" - integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== +browserslist@^4.14.5, browserslist@^4.19.1, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.20.4, browserslist@^4.9.1: + version "4.21.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.0.tgz#7ab19572361a140ecd1e023e2c1ed95edda0cefe" + integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA== dependencies: - caniuse-lite "^1.0.30001286" - electron-to-chromium "^1.4.17" - escalade "^3.1.1" - node-releases "^2.0.1" - picocolors "^1.0.0" + caniuse-lite "^1.0.30001358" + electron-to-chromium "^1.4.164" + node-releases "^2.0.5" + update-browserslist-db "^1.0.0" browserstack@^1.5.1: version "1.6.1" @@ -4074,19 +3939,19 @@ bser@2.1.1: buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-indexof@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== -buffer@^5.5.0, buffer@^5.7.0: +buffer@^5.5.0, buffer@^5.7.0, buffer@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -4097,41 +3962,36 @@ buffer@^5.5.0, buffer@^5.7.0: builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + integrity sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== -busboy@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b" - integrity sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw== +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== dependencies: - dicer "0.3.0" + streamsearch "^1.1.0" bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== -bytes@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" - integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== bytesish@^0.4.1: version "0.4.4" resolved "https://registry.yarnpkg.com/bytesish/-/bytesish-0.4.4.tgz#f3b535a0f1153747427aee27256748cff92347e6" integrity sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ== -cacache@15.3.0, cacache@^15.2.0: +cacache@15.3.0, cacache@^15.0.5, cacache@^15.2.0: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== @@ -4155,27 +4015,28 @@ cacache@15.3.0, cacache@^15.2.0: tar "^6.0.2" unique-filename "^1.1.1" -cacache@^15.0.5: - version "15.0.5" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" - integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== +cacache@^16.1.0: + version "16.1.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.1.tgz#4e79fb91d3efffe0630d5ad32db55cc1b870669c" + integrity sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg== dependencies: - "@npmcli/move-file" "^1.0.1" + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" chownr "^2.0.0" - fs-minipass "^2.0.0" - glob "^7.1.4" + fs-minipass "^2.1.0" + glob "^8.0.1" infer-owner "^1.0.4" - lru-cache "^6.0.0" - minipass "^3.1.1" + lru-cache "^7.7.1" + minipass "^3.1.6" minipass-collect "^1.0.2" minipass-flush "^1.0.5" - minipass-pipeline "^1.2.2" - mkdirp "^1.0.3" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" p-map "^4.0.0" promise-inflight "^1.0.1" rimraf "^3.0.2" - ssri "^8.0.0" - tar "^6.0.2" + ssri "^9.0.0" + tar "^6.1.11" unique-filename "^1.1.1" cacheable-request@^6.0.0: @@ -4202,26 +4063,26 @@ call-bind@^1.0.0, call-bind@^1.0.2: call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + integrity sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== dependencies: callsites "^2.0.0" caller-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== dependencies: caller-callsite "^2.0.0" callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== callsites@^3.0.0: version "3.1.0" @@ -4236,7 +4097,7 @@ camel-case@4.1.1: pascal-case "^3.1.1" tslib "^1.10.0" -camel-case@4.1.2, camel-case@^4.1.1, camel-case@^4.1.2: +camel-case@4.1.2, camel-case@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== @@ -4249,25 +4110,10 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001181: - version "1.0.30001191" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz#bacb432b6701f690c8c5f7c680166b9a9f0843d9" - integrity sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw== - -caniuse-lite@^1.0.30001286: - version "1.0.30001299" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001299.tgz#d753bf6444ed401eb503cbbe17aa3e1451b5a68c" - integrity sha512-iujN4+x7QzqA2NCSrS5VUy+4gLmRd4xv6vbBBsmfVqTx8bLAD8097euLqQgKxSVLvxjSDcvF1T/i9ocgnUFexw== - -caniuse-lite@^1.0.30001297, caniuse-lite@^1.0.30001299: - version "1.0.30001301" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz#ebc9086026534cab0dab99425d9c3b4425e5f450" - integrity sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA== - -canonical-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/canonical-path/-/canonical-path-1.0.0.tgz#fcb470c23958def85081856be7a86e904f180d1d" - integrity sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg== +caniuse-lite@^1.0.30001299, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001358: + version "1.0.30001358" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001358.tgz#473d35dabf5e448b463095cab7924e96ccfb8c00" + integrity sha512-hvp8PSRymk85R20bsDra7ZTCpSVGN/PAz9pSAjPSjKC+rNmnUk5vCRgJwiTT/O4feQ/yu/drvZYpKxxhbFuChw== capital-case@^1.0.4: version "1.0.4" @@ -4281,7 +4127,7 @@ capital-case@^1.0.4: caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== casual@^1.6.2: version "1.6.2" @@ -4300,7 +4146,7 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4. escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@4.1.0, chalk@^4.0.0, chalk@^4.1.0, chalk@~4.1.0: +chalk@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== @@ -4308,10 +4154,18 @@ chalk@4.1.0, chalk@^4.0.0, chalk@^4.1.0, chalk@~4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2, chalk@~4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -4327,31 +4181,23 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.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== +change-case-all@1.0.14: + version "1.0.14" + resolved "https://registry.yarnpkg.com/change-case-all/-/change-case-all-1.0.14.tgz#bac04da08ad143278d0ac3dda7eccd39280bfba1" + integrity sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA== dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" + change-case "^4.1.2" + is-lower-case "^2.0.2" + is-upper-case "^2.0.2" + lower-case "^2.0.2" + lower-case-first "^2.0.2" + sponge-case "^1.0.1" + swap-case "^2.0.2" + title-case "^3.0.3" + upper-case "^2.0.2" + upper-case-first "^2.0.2" -change-case-all@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/change-case-all/-/change-case-all-1.0.12.tgz#ae3e0faf5e610e8e25c5d5eaa4a6d5c2f1d68797" - integrity sha512-zdQus7R0lkprF99lrWUC5bFj6Nog4Xt4YCEjQ/vM4vbc6b5JHFBQMxRPAjfx+HJH8WxMzH0E+lQ8yQJLgmPCBg== - dependencies: - change-case "^4.1.1" - is-lower-case "^2.0.1" - is-upper-case "^2.0.1" - lower-case "^2.0.1" - lower-case-first "^2.0.1" - sponge-case "^1.0.0" - swap-case "^2.0.1" - title-case "^3.0.2" - upper-case "^2.0.1" - upper-case-first "^2.0.1" - -change-case@^4.1.1: +change-case@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== @@ -4374,10 +4220,10 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.4.3, chokidar@^3.5.1, chokidar@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.1, chokidar@^3.5.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" braces "~3.0.2" @@ -4395,22 +4241,20 @@ chownr@^2.0.0: integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -ci-info@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" - integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.0.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" + integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== + circular-dependency-plugin@5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz#39e836079db1d3cf2f988dc48c5188a44058b600" @@ -4426,29 +4270,29 @@ clean-stack@^2.0.0: resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== -cli-cursor@^2.0.0, cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -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.0.0, cli-spinners@^2.4.0, cli-spinners@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" - integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== +cli-cursor@^2.0.0, cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@2.6.1, cli-spinners@^2.0.0, cli-spinners@^2.4.0, cli-spinners@^2.5.0: + 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-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + integrity sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg== dependencies: slice-ansi "0.0.4" string-width "^1.0.1" @@ -4488,14 +4332,14 @@ clone-deep@^4.0.1: clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== dependencies: mimic-response "^1.0.0" clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== coa@^2.0.2: version "2.0.2" @@ -4509,12 +4353,12 @@ coa@^2.0.2: code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== codelyzer@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-6.0.1.tgz#c0e9668e847255b37c759e68fb2700b11e277d0f" - integrity sha512-cOyGQgMdhnRYtW2xrJUNrNYDjEgwQ+BrE2y93Bwz3h4DJ6vJRLfupemU5N3pbYsUlBHJf0u1j1UGk+NLW4d97g== + version "6.0.2" + resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-6.0.2.tgz#25d72eae641e8ff13ffd7d99b27c9c7ad5d7e135" + integrity sha512-v3+E0Ucu2xWJMOJ2fA/q9pDT/hlxHftHGPUay1/1cTgyPV5JTHFdO9hqo837Sx2s9vKBMTt5gO+lhF95PO6J+g== dependencies: "@angular/compiler" "9.0.0" "@angular/core" "9.0.0" @@ -4548,27 +4392,22 @@ color-convert@^2.0.1: color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-support@^1.1.2: +color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -colorette@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" - integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== - colorette@^2.0.10: - version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== colors@1.4.0: version "1.4.0" @@ -4576,11 +4415,11 @@ colors@1.4.0: integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== columnify@^1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" - integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= + version "1.6.0" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== dependencies: - strip-ansi "^3.0.0" + strip-ansi "^6.0.1" wcwidth "^1.0.0" combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: @@ -4605,25 +4444,25 @@ commander@^4.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== -commander@^7.1.0, commander@^7.2.0: +commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== -comment-parser@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.0.1.tgz#6f40ebc3ac5063cf59b5eb415bc689636134cc4a" - integrity sha512-korDJ16mBVZexVd485jz4AeAcAFP1UzeecfVgfBCBojLFjMEHEHOY9vgk3e9o1zRSP0EscavonLki4JZDCKmrg== +comment-parser@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.1.2.tgz#e5317d7a2ec22b470dcb54a29b25426c30bf39d8" + integrity sha512-AOdq0i8ghZudnYv8RUnHrhTgafUGs61Rdz9jemU5x2lnZwAWyOq7vySo626K59e1fVKH1xSRorJwPVRLSWOoAQ== -common-tags@1.8.0, common-tags@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" - integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== +common-tags@1.8.2, common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== component-emitter@~1.3.0: version "1.3.0" @@ -4653,7 +4492,7 @@ compression@^1.7.4: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== connect-history-api-fallback@^1.6.0: version "1.6.0" @@ -4670,21 +4509,12 @@ connect@^3.7.0: parseurl "~1.3.3" utils-merge "1.0.1" -console-control-strings@^1.0.0, console-control-strings@^1.1.0: +console-control-strings@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -constant-case@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.3.tgz#ac910a99caf3926ac5112f352e3af599d8c5fc0a" - integrity sha512-FXtsSnnrFYpzDmvwDGQW+l8XK3GV1coLyBN0eBz16ZUzGaZcT2ANVCJmLeuw2GQgxKHQIe9e0w2dzkSfaRlUmA== - dependencies: - no-case "^3.0.3" - tslib "^1.10.0" - upper-case "^2.0.1" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== -constant-case@^3.0.3, constant-case@^3.0.4: +constant-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== @@ -4693,18 +4523,6 @@ constant-case@^3.0.3, constant-case@^3.0.4: tslib "^2.0.3" upper-case "^2.0.2" -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - content-disposition@0.5.4: version "0.5.4" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" @@ -4718,38 +4536,38 @@ content-type@^1.0.4, content-type@~1.0.4: integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== convert-source-map@^1.5.1, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== dependencies: safe-buffer "~5.1.1" cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -cookie@0.4.1, cookie@~0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" - integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== +cookie@~0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== copy-anything@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87" - integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== dependencies: - is-what "^3.12.0" + is-what "^3.14.1" -copy-webpack-plugin@10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.0.0.tgz#f25a29ca2398a6ca31183b62e76adacb53b981d1" - integrity sha512-tuCVuFMBbRsb7IH0q1CUb50/Skv+7a6c7DJ+xi4fAbOzNLTYVMUTPnf8uGvKPtmqTvzYBrfEFo7YgP4TsUWmtg== +copy-webpack-plugin@10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-10.2.1.tgz#115a41f913070ac236a1b576066204cbf35341a1" + integrity sha512-nr81NhCAIpAWXGCK5thrKmfCQ6GDY0L5RN0U+BnIn/7Us55+UCex5ANNsNKmIVtDRnk0Ecf+/kzp9SUVrrBMLg== dependencies: fast-glob "^3.2.7" glob-parent "^6.0.1" @@ -4758,30 +4576,35 @@ copy-webpack-plugin@10.0.0: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.18.0, core-js-compat@^3.19.1: - version "3.20.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.2.tgz#d1ff6936c7330959b46b2e08b122a8b14e26140b" - integrity sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg== +core-js-compat@^3.20.2, core-js-compat@^3.21.0: + version "3.23.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.1.tgz#23d44d9f209086e60dabf9130cea7719af6e199b" + integrity sha512-KeYrEc8t6FJsKYB2qnDwRHWaC0cJNaqlHfCpMe5q3j/W1nje3moib/txNklddLPCtGb+etcBIyJ8zuMa/LN5/A== dependencies: - browserslist "^4.19.1" + browserslist "^4.20.4" semver "7.0.0" -core-js-pure@^3.0.0: - version "3.8.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.2.tgz#286f885c0dac1cdcd6d78397392abc25ddeca225" - integrity sha512-v6zfIQqL/pzTVAbZvYUozsxNfxcFb6Ks3ZfEbuneJl3FW9Jb8F6vLWB6f+qTmAu72msUdyb84V8d/yBFf7FNnw== +core-js-pure@^3.20.2: + version "3.23.2" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.2.tgz#efe5e486469c5ed2d088d76e973eb12e74a930e7" + integrity sha512-t6u7H4Ff/yZNk+zqTr74UjCcZ3k8ApBryeLLV4rYQd9aF3gqmjjGjjR44ENfeBMH8VVvSynIjAJ0mUuFhzQtrA== -core-js@3.19.3: - version "3.19.3" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.19.3.tgz#6df8142a996337503019ff3235a7022d7cdf4559" - integrity sha512-LeLBMgEGSsG7giquSzvgBrTS7V5UL6ks3eQlUSbN8dJStlLFiRzUm5iqsRyzUB8carhfKjkJ2vzKqE6z1Vga9g== +core-js@3.20.3: + version "3.20.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.3.tgz#c710d0a676e684522f3db4ee84e5e18a9d11d69a" + integrity sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== -cors@2.8.5, cors@~2.8.5: +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@~2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== @@ -4807,7 +4630,7 @@ cosmiconfig@6.0.0, cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -cosmiconfig@7.0.0, cosmiconfig@^7.0.0: +cosmiconfig@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== @@ -4818,6 +4641,17 @@ cosmiconfig@7.0.0, cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cosmiconfig@7.0.1, cosmiconfig@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + cosmiconfig@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" @@ -4861,13 +4695,27 @@ critters@0.0.16: postcss "^8.3.7" pretty-bytes "^5.3.0" -cross-fetch@3.0.6, cross-fetch@^3.0.4, cross-fetch@^3.0.6: +cross-fetch@3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== dependencies: node-fetch "2.6.1" +cross-fetch@3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" + integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ== + dependencies: + node-fetch "2.6.1" + +cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -4888,19 +4736,44 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +cross-undici-fetch@^0.1.25: + version "0.1.33" + resolved "https://registry.yarnpkg.com/cross-undici-fetch/-/cross-undici-fetch-0.1.33.tgz#17639a2ba78bce4fd332ccb44d7a039d66d072ac" + integrity sha512-2IljikrWuhEroSlidX0i/TXjL01IIQUigWC/9tq7U3C/GoQQBqc02xNIVTqoZG6nPn/P9C9YMH78A4aTLUticQ== + dependencies: + abort-controller "^3.0.0" + form-data-encoder "^1.7.1" + formdata-node "^4.3.1" + node-fetch "^2.6.7" + undici "^5.0.0" + web-streams-polyfill "^3.2.0" + +cross-undici-fetch@^0.4.0: + version "0.4.8" + resolved "https://registry.yarnpkg.com/cross-undici-fetch/-/cross-undici-fetch-0.4.8.tgz#941a6b15d186af3fcd95f68f81d8f542e4e9b62a" + integrity sha512-qQbw1GHZaW56ETnNL7nWn5wdsjnZsmPkPImTM3+ymUPwREkzihxgwqESaVF+X2IZ2hkZCxVOTfEOp28xtL/+pw== + dependencies: + abort-controller "^3.0.0" + busboy "^1.6.0" + form-data-encoder "^1.7.1" + formdata-node "^4.3.1" + node-fetch "^2.6.7" + undici "^5.1.0" + web-streams-polyfill "^3.2.0" + css-blank-pseudo@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.2.tgz#f8660f6a48b17888a9277e53f25cc5abec1f0169" - integrity sha512-hOb1LFjRR+8ocA071xUSmg5VslJ8NGo/I2qpUpdeAYyBVCgupS5O8SEVo4SxEMYyFBNodBkzG3T1iqW9HCXxew== + version "3.0.3" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== dependencies: - postcss-selector-parser "^6.0.8" + postcss-selector-parser "^6.0.9" css-has-pseudo@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.3.tgz#4824a34cb92dae7e09ea1d3fd19691b653412098" - integrity sha512-0gDYWEKaGacwxCqvQ3Ypg6wGdD1AztbMm5h1JsactG2hP2eiflj808QITmuWBpE7sjSEVrAlZhPTVd/nNMj/hQ== + version "3.0.4" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== dependencies: - postcss-selector-parser "^6.0.8" + postcss-selector-parser "^6.0.9" css-loader@6.5.1: version "6.5.1" @@ -4917,9 +4790,9 @@ css-loader@6.5.1: semver "^7.3.5" css-prefers-color-scheme@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.2.tgz#d5c03a980caab92d8beeee176a8795d331e0c727" - integrity sha512-gv0KQBEM+q/XdoKyznovq3KW7ocO7k+FhPP+hQR1MenJdu0uPGS6IZa9PzlbqBeS6XcZJNAoqoFxlAUW461CrA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== css-select-base-adapter@^0.1.1: version "0.1.1" @@ -4936,25 +4809,14 @@ css-select@^2.0.0: domutils "^1.7.0" nth-check "^1.0.2" -css-select@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-3.1.2.tgz#d52cbdc6fee379fba97fb0d3925abbd18af2d9d8" - integrity sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA== - dependencies: - boolbase "^1.0.0" - css-what "^4.0.0" - domhandler "^4.0.0" - domutils "^2.4.3" - nth-check "^2.0.0" - -css-select@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" - integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== +css-select@^4.1.3, css-select@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: boolbase "^1.0.0" - css-what "^5.1.0" - domhandler "^4.3.0" + css-what "^6.0.1" + domhandler "^4.3.1" domutils "^2.8.0" nth-check "^2.0.1" @@ -4974,10 +4836,10 @@ css-tree@1.0.0-alpha.37: mdn-data "2.0.4" source-map "^0.6.1" -css-tree@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" - integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: mdn-data "2.0.14" source-map "^0.6.1" @@ -4987,15 +4849,10 @@ css-what@^3.2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== -css-what@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233" - integrity sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A== - -css-what@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" - integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== css@^3.0.0: version "3.0.0" @@ -5009,7 +4866,7 @@ css@^3.0.0: cssauron@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8" - integrity sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg= + integrity sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw== dependencies: through X.X.X @@ -5033,17 +4890,17 @@ csso@^4.0.2, csso@^4.2.0: custom-event@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" - integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU= + integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg== damerau-levenshtein@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" - integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" @@ -5052,6 +4909,11 @@ dataloader@2.0.0: resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== +dataloader@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.1.0.tgz#c69c538235e85e7ac6c6c444bae8ecabf5de9df7" + integrity sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ== + date-fns@^1.27.2: version "1.30.1" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" @@ -5062,20 +4924,15 @@ date-fns@^2.16.1: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== -date-format@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.3.tgz#f63de5dc08dc02efd8ef32bf2a6918e486f35873" - integrity sha512-7P3FyqDcfeznLZp2b+OMitV9Sz2lUnsT87WaTat9nVwqsBkTzPG3lPLNwW3en6F4pHUiWzr6vb8CLhjdK9bcxQ== - -de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" - integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= +date-format@^4.0.10: + version "4.0.11" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.11.tgz#ae0d1e069d7f0687938fd06f98c12f3a6276e526" + integrity sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw== debounce@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" - integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== + version "1.2.1" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== debug@2.6.9, debug@^2.6.9: version "2.6.9" @@ -5084,41 +4941,41 @@ debug@2.6.9, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@4.3.3, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.3, debug@~4.3.1, debug@~4.3.2: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@4.3.3: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" -debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: +debug@^3.1.0, debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== dependencies: mimic-response "^1.0.0" @@ -5161,9 +5018,9 @@ deep-extend@^0.6.0: integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== default-gateway@^6.0.3: version "6.0.3" @@ -5175,7 +5032,7 @@ default-gateway@^6.0.3: defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== dependencies: clone "^1.0.2" @@ -5189,17 +5046,18 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== dependencies: - object-keys "^1.0.12" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" del@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - integrity sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag= + integrity sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ== dependencies: globby "^5.0.0" is-path-cwd "^1.0.0" @@ -5210,9 +5068,9 @@ del@^2.2.0: rimraf "^2.2.8" del@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" - integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== + version "6.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== dependencies: globby "^11.0.1" graceful-fs "^4.2.4" @@ -5226,24 +5084,24 @@ del@^6.0.0: delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== depd@^1.1.2, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -dependency-graph@0.9.0, dependency-graph@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.9.0.tgz#11aed7e203bc8b00f48356d92db27b265c445318" - integrity sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w== + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -dependency-graph@^0.11.0: +dependency-graph@0.11.0, dependency-graph@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== @@ -5251,34 +5109,27 @@ dependency-graph@^0.11.0: deprecated-decorator@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37" - integrity sha1-AJZjF7ehL+kvPMgx91g68ym4bDc= + integrity sha512-MHidOOnCHGlZDKsI21+mbIIhf4Fff+hhCTB7gtVg4uoIqjcrTZc5v6M+GS2zVI0sV7PqK415rb8XaOSQsQkHOw== -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== detect-indent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" - integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" - integrity sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw= - -dicer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.0.tgz#eacd98b3bfbf92e8ab5c2fdb71aaac44bb06b872" - integrity sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA== - dependencies: - streamsearch "0.1.2" + integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA== diff@^4.0.1: version "4.0.2" @@ -5295,12 +5146,12 @@ dir-glob@^3.0.1: dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + version "1.3.4" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" + integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== dependencies: ip "^1.1.0" safe-buffer "^5.0.1" @@ -5308,17 +5159,16 @@ dns-packet@^1.3.1: dns-txt@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ== dependencies: buffer-indexof "^1.0.0" -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" - isarray "^1.0.0" doctrine@^3.0.0: version "3.0.0" @@ -5330,7 +5180,7 @@ doctrine@^3.0.0: dom-serialize@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" - integrity sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs= + integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ== dependencies: custom-event "~1.0.0" ent "~2.2.0" @@ -5346,9 +5196,9 @@ dom-serializer@0: entities "^2.0.0" dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" domhandler "^4.2.0" @@ -5359,27 +5209,15 @@ domelementtype@1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" - integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== - -domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domhandler@^4.0.0, domhandler@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" - integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== - dependencies: - domelementtype "^2.2.0" +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== -domhandler@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" - integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== +domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" @@ -5391,15 +5229,6 @@ domutils@^1.7.0: dom-serializer "0" domelementtype "1" -domutils@^2.4.3: - version "2.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442" - integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -5409,7 +5238,7 @@ domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" -dot-case@^3.0.3, dot-case@^3.0.4: +dot-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== @@ -5417,15 +5246,25 @@ dot-case@^3.0.3, dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dotenv@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== +dotenv@^16.0.0: + version "16.0.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" + integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== + +dotenv@~10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +dset@^3.1.0, dset@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.2.tgz#89c436ca6450398396dc6538ea00abc0c54cd45a" + integrity sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q== duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + integrity sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA== duplexer@^0.1.2: version "0.1.2" @@ -5435,7 +5274,7 @@ duplexer@^0.1.2: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -5450,22 +5289,24 @@ ecdsa-sig-formatter@1.0.11: ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.3.649: - version "1.3.671" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.671.tgz#8feaed6eae42d279fa4611f58c42a5a1eb81b2a0" - integrity sha512-RTD97QkdrJKaKwRv9h/wGAaoR2lGxNXEcBXS31vjitgTPwTWAbLdS7cEsBK68eEQy7p6YyT8D5BxBEYHu2SuwQ== +ejs@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" -electron-to-chromium@^1.4.17: - version "1.4.43" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.43.tgz#665c0cd8d5e7cce0ba78d90a514c8c813ca3bdbe" - integrity sha512-PO3kEfcxPrti/4STbXvCkNIF4fgWvCKl2508e6UI7KomCDffpIfeBZLXsh5DK/XGsjUw3kwq6WEsi0MJTlGAdg== +electron-to-chromium@^1.4.164: + version "1.4.167" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.167.tgz#72424aebc85df12c5331d37b1bcfd1ae01322c55" + integrity sha512-lPHuHXBwpkr4RcfaZBKm6TKOWG/1N9mVggUpP4fY3l1JIUU2x4fkM8928smYdZ5lF+6KCTAxo1aK9JmqT+X71Q== elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= + integrity sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ== emoji-regex@^8.0.0: version "8.0.0" @@ -5480,33 +5321,31 @@ emojis-list@^3.0.0: encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -encoding@^0.1.12: +encoding@^0.1.12, encoding@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -engine.io-parser@~5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.2.tgz#69a2ec3ed431da021f0666712d07f106bcffa6ce" - integrity sha512-wuiO7qO/OEkPJSFueuATIXtrxF7/6GTbAO9QLv7nnbjwZ5tYhLm9zxvLwxstRs0dcT0KUlWTjtIOs1T86jt12g== - dependencies: - base64-arraybuffer "~1.0.1" +engine.io-parser@~5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.4.tgz#0b13f704fa9271b3ec4f33112410d8f3f41d0fc0" + integrity sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg== -engine.io@~6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.1.1.tgz#2e87680feedabe380e506594f5bfd34cde955d87" - integrity sha512-AyMc20q8JUUdvKd46+thc9o7yCZ6iC6MoBCChG5Z1XmFMpp+2+y/oKvwpZTUJB0KCjxScw1dV9c2h5pjiYBLuQ== +engine.io@~6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.2.0.tgz#003bec48f6815926f2b1b17873e576acd54f41d0" + integrity sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg== dependencies: "@types/cookie" "^0.4.1" "@types/cors" "^2.8.12" @@ -5516,18 +5355,18 @@ engine.io@~6.1.0: cookie "~0.4.1" cors "~2.8.5" debug "~4.3.1" - engine.io-parser "~5.0.0" + engine.io-parser "~5.0.3" ws "~8.2.3" -enhanced-resolve@^5.8.3: - version "5.8.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" - integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== +enhanced-resolve@^5.9.2: + version "5.9.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" + integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.5: +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== @@ -5537,7 +5376,7 @@ enquirer@^2.3.5: ent@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + integrity sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA== entities@^2.0.0: version "2.2.0" @@ -5545,9 +5384,9 @@ entities@^2.0.0: integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== env-paths@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" - integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== err-code@^2.0.2: version "2.0.3" @@ -5561,68 +5400,65 @@ errno@^0.1.1: dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -error-stack-parser@^2.0.1: +error-stack-parser@2.0.6, error-stack-parser@^2.0.1: version "2.0.6" resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== dependencies: stackframe "^1.1.1" -es-abstract@^1.17.2: - version "1.17.7" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" - integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: - version "1.18.0-next.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" - integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== +es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0, es-abstract@^1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-negative-zero "^2.0.1" - is-regex "^1.1.1" - object-inspect "^1.9.0" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.0" object-keys "^1.1.1" object.assign "^4.1.2" - string.prototype.trimend "^1.0.3" - string.prototype.trimstart "^1.0.3" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== es-get-iterator@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.1.tgz#b93ddd867af16d5118e00881396533c1c6647ad9" - integrity sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw== + version "1.1.2" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" + integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.1" + call-bind "^1.0.2" + get-intrinsic "^1.1.0" has-symbols "^1.0.1" - is-arguments "^1.0.4" - is-map "^2.0.1" - is-set "^2.0.1" + is-arguments "^1.1.0" + is-map "^2.0.2" + is-set "^2.0.2" is-string "^1.0.5" isarray "^2.0.5" @@ -5631,6 +5467,13 @@ es-module-lexer@^0.9.0: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -5643,7 +5486,7 @@ es-to-primitive@^1.2.1: es6-promise@^3.2.1: version "3.3.1" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" - integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM= + integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== es6-promise@^4.0.3: version "4.2.8" @@ -5653,128 +5496,134 @@ es6-promise@^4.0.3: es6-promisify@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== dependencies: es6-promise "^4.0.3" -esbuild-android-arm64@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.11.tgz#b8b34e35a5b43880664ac7a3fbc70243d7ed894f" - integrity sha512-6iHjgvMnC/SzDH8TefL+/3lgCjYWwAd1LixYfmz/TBPbDQlxcuSkX0yiQgcJB9k+ibZ54yjVXziIwGdlc+6WNw== - -esbuild-darwin-64@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.11.tgz#ba805de98c0412e50fcd0636451797da157b0625" - integrity sha512-olq84ikh6TiBcrs3FnM4eR5VPPlcJcdW8BnUz/lNoEWYifYQ+Po5DuYV1oz1CTFMw4k6bQIZl8T3yxL+ZT2uvQ== - -esbuild-darwin-arm64@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.11.tgz#4d3573e448af76ce33e16231f3d9f878542d6fe8" - integrity sha512-Jj0ieWLREPBYr/TZJrb2GFH8PVzDqiQWavo1pOFFShrcmHWDBDrlDxPzEZ67NF/Un3t6sNNmeI1TUS/fe1xARg== - -esbuild-freebsd-64@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.11.tgz#9294e6ab359ec93590ab097b0f2017de7c78ab4d" - integrity sha512-C5sT3/XIztxxz/zwDjPRHyzj/NJFOnakAanXuyfLDwhwupKPd76/PPHHyJx6Po6NI6PomgVp/zi6GRB8PfrOTA== - -esbuild-freebsd-arm64@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.11.tgz#ae3e0b09173350b66cf8321583c9a1c1fcb8bb55" - integrity sha512-y3Llu4wbs0bk4cwjsdAtVOesXb6JkdfZDLKMt+v1U3tOEPBdSu6w8796VTksJgPfqvpX22JmPLClls0h5p+L9w== - -esbuild-linux-32@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.11.tgz#ddadbc7038aa5a6b1675bb1503cf79a0cbf1229a" - integrity sha512-Cg3nVsxArjyLke9EuwictFF3Sva+UlDTwHIuIyx8qpxRYAOUTmxr2LzYrhHyTcGOleLGXUXYsnUVwKqnKAgkcg== - -esbuild-linux-64@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.11.tgz#d698e3ce3a231ddfeec6b5df8c546ae8883fcd88" - integrity sha512-oeR6dIrrojr8DKVrxtH3xl4eencmjsgI6kPkDCRIIFwv4p+K7ySviM85K66BN01oLjzthpUMvBVfWSJkBLeRbg== - -esbuild-linux-arm64@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.11.tgz#85faea9fa99ad355b5e3b283197a4dfd0a110fe7" - integrity sha512-+e6ZCgTFQYZlmg2OqLkg1jHLYtkNDksxWDBWNtI4XG4WxuOCUErLqfEt9qWjvzK3XBcCzHImrajkUjO+rRkbMg== - -esbuild-linux-arm@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.11.tgz#74cbcf0b8a22c8401bcbcd6ebd4cbf2baca8b7b4" - integrity sha512-vcwskfD9g0tojux/ZaTJptJQU3a7YgTYsptK1y6LQ/rJmw7U5QJvboNawqM98Ca3ToYEucfCRGbl66OTNtp6KQ== - -esbuild-linux-mips64le@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.11.tgz#490429211a3233f5cbbd8575b7758b897e42979a" - integrity sha512-Rrs99L+p54vepmXIb87xTG6ukrQv+CzrM8eoeR+r/OFL2Rg8RlyEtCeshXJ2+Q66MXZOgPJaokXJZb9snq28bw== - -esbuild-linux-ppc64le@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.11.tgz#fc79d60710213b5b98345f5b138d48245616827a" - integrity sha512-JyzziGAI0D30Vyzt0HDihp4s1IUtJ3ssV2zx9O/c+U/dhUHVP2TmlYjzCfCr2Q6mwXTeloDcLS4qkyvJtYptdQ== - -esbuild-linux-s390x@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.11.tgz#ca4b93556bbba6cc95b0644f2ee93c982165ba07" - integrity sha512-DoThrkzunZ1nfRGoDN6REwmo8ZZWHd2ztniPVIR5RMw/Il9wiWEYBahb8jnMzQaSOxBsGp0PbyJeVLTUatnlcw== - -esbuild-netbsd-64@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.11.tgz#edb340bc6653c88804cac2253e21b74258fce165" - integrity sha512-12luoRQz+6eihKYh1zjrw0CBa2aw3twIiHV/FAfjh2NEBDgJQOY4WCEUEN+Rgon7xmLh4XUxCQjnwrvf8zhACw== - -esbuild-openbsd-64@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.11.tgz#caeff5f946f79a60ce7bcf88871ca4c71d3476e8" - integrity sha512-l18TZDjmvwW6cDeR4fmizNoxndyDHamGOOAenwI4SOJbzlJmwfr0jUgjbaXCUuYVOA964siw+Ix+A+bhALWg8Q== - -esbuild-sunos-64@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.11.tgz#90ce7e1749c2958a53509b4bae7b8f7d98f276d6" - integrity sha512-bmYzDtwASBB8c+0/HVOAiE9diR7+8zLm/i3kEojUH2z0aIs6x/S4KiTuT5/0VKJ4zk69kXel1cNWlHBMkmavQg== - -esbuild-wasm@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.14.11.tgz#bd09f4c42969cddcae39007d284f8ef747aae85d" - integrity sha512-9e1R6hv0hiU+BkJI2edqUuWfXUbOP2Mox+Ijl/uY1vLLlSsunkrcADqD/4Rz+VCEDzw6ecscJM+uJqR2fRmEUg== - -esbuild-windows-32@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.11.tgz#d067f4ce15b29efba6336e6a23597120fafe49ec" - integrity sha512-J1Ys5hMid8QgdY00OBvIolXgCQn1ARhYtxPnG6ESWNTty3ashtc4+As5nTrsErnv8ZGUcWZe4WzTP/DmEVX1UQ== - -esbuild-windows-64@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.11.tgz#13e86dd37a6cd61a5276fa2d271342d0f74da864" - integrity sha512-h9FmMskMuGeN/9G9+LlHPAoiQk9jlKDUn9yA0MpiGzwLa82E7r1b1u+h2a+InprbSnSLxDq/7p5YGtYVO85Mlg== - -esbuild-windows-arm64@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.11.tgz#e8edfdf1d712085e6dc3fba18a0c225aaae32b75" - integrity sha512-dZp7Krv13KpwKklt9/1vBFBMqxEQIO6ri7Azf8C+ob4zOegpJmha2XY9VVWP/OyQ0OWk6cEeIzMJwInRZrzBUQ== - -esbuild@0.14.11: - version "0.14.11" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.11.tgz#ac4acb78907874832afb704c3afe58ad37715c27" - integrity sha512-xZvPtVj6yecnDeFb3KjjCM6i7B5TCAQZT77kkW/CpXTMnd6VLnRPKrUB1XHI1pSq6a4Zcy3BGueQ8VljqjDGCg== +esbuild-android-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.22.tgz#fb051169a63307d958aec85ad596cfc7d7770303" + integrity sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ== + +esbuild-darwin-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.22.tgz#615ea0a9de67b57a293a7128d7ac83ee307a856d" + integrity sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw== + +esbuild-darwin-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.22.tgz#82054dcfcecb15ccfd237093b8008e7745a99ad9" + integrity sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw== + +esbuild-freebsd-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.22.tgz#778a818c5b078d5cdd6bb6c0e0797217d196999b" + integrity sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A== + +esbuild-freebsd-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.22.tgz#18da93b9f3db2e036f72383bfe73b28b73bb332c" + integrity sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ== + +esbuild-linux-32@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.22.tgz#d0d5d9f5bb3536e17ac097e9512019c65b7c0234" + integrity sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg== + +esbuild-linux-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.22.tgz#2773d540971999ea7f38107ef92fca753f6a8c30" + integrity sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg== + +esbuild-linux-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.22.tgz#5d4480ce6d6bffab1dd76a23158f5a5ab33e7ba4" + integrity sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A== + +esbuild-linux-arm@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.22.tgz#c6391b3f7c8fa6d3b99a7e893ce0f45f3a921eef" + integrity sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g== + +esbuild-linux-mips64le@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.22.tgz#2c8dabac355c502e86c38f9f292b3517d8e181f3" + integrity sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ== + +esbuild-linux-ppc64le@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.22.tgz#69d71b2820d5c94306072dac6094bae38e77d1c0" + integrity sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng== + +esbuild-linux-riscv64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.22.tgz#c0ec0fc3a23624deebf657781550d2329cec4213" + integrity sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ== + +esbuild-linux-s390x@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.22.tgz#ec2af4572d63336cfb27f5a5c851fb1b6617dd91" + integrity sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw== + +esbuild-netbsd-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.22.tgz#0e283278e9fdbaa7f0930f93ee113d7759cd865e" + integrity sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA== + +esbuild-openbsd-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.22.tgz#2a73bba04e16d8ef278fbe2be85248e12a2f2cc2" + integrity sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA== + +esbuild-sunos-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.22.tgz#8fe03513b8b2e682a6d79d5e3ca5849651a3c1d8" + integrity sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g== + +esbuild-wasm@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.14.22.tgz#9671d1355473b6688d00fe8ef6fa50274eff5465" + integrity sha512-FOSAM29GN1fWusw0oLMv6JYhoheDIh5+atC72TkJKfIUMID6yISlicoQSd9gsNSFsNBvABvtE2jR4JB1j4FkFw== + +esbuild-windows-32@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.22.tgz#a75df61e3e49df292a1842be8e877a3153ee644f" + integrity sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg== + +esbuild-windows-64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.22.tgz#d06cf8bbe4945b8bf95a730d871e54a22f635941" + integrity sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw== + +esbuild-windows-arm64@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.22.tgz#f8b1b05c548073be8413a5ecb12d7c2f6e717227" + integrity sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg== + +esbuild@0.14.22: + version "0.14.22" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.22.tgz#2b55fde89d7aa5aaaad791816d58ff9dfc5ed085" + integrity sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA== optionalDependencies: - esbuild-android-arm64 "0.14.11" - esbuild-darwin-64 "0.14.11" - esbuild-darwin-arm64 "0.14.11" - esbuild-freebsd-64 "0.14.11" - esbuild-freebsd-arm64 "0.14.11" - esbuild-linux-32 "0.14.11" - esbuild-linux-64 "0.14.11" - esbuild-linux-arm "0.14.11" - esbuild-linux-arm64 "0.14.11" - esbuild-linux-mips64le "0.14.11" - esbuild-linux-ppc64le "0.14.11" - esbuild-linux-s390x "0.14.11" - esbuild-netbsd-64 "0.14.11" - esbuild-openbsd-64 "0.14.11" - esbuild-sunos-64 "0.14.11" - esbuild-windows-32 "0.14.11" - esbuild-windows-64 "0.14.11" - esbuild-windows-arm64 "0.14.11" + esbuild-android-arm64 "0.14.22" + esbuild-darwin-64 "0.14.22" + esbuild-darwin-arm64 "0.14.22" + esbuild-freebsd-64 "0.14.22" + esbuild-freebsd-arm64 "0.14.22" + esbuild-linux-32 "0.14.22" + esbuild-linux-64 "0.14.22" + esbuild-linux-arm "0.14.22" + esbuild-linux-arm64 "0.14.22" + esbuild-linux-mips64le "0.14.22" + esbuild-linux-ppc64le "0.14.22" + esbuild-linux-riscv64 "0.14.22" + esbuild-linux-s390x "0.14.22" + esbuild-netbsd-64 "0.14.22" + esbuild-openbsd-64 "0.14.22" + esbuild-sunos-64 "0.14.22" + esbuild-windows-32 "0.14.22" + esbuild-windows-64 "0.14.22" + esbuild-windows-arm64 "0.14.22" escalade@^3.0.2, escalade@^3.1.1: version "3.1.1" @@ -5784,54 +5633,59 @@ escalade@^3.0.2, escalade@^3.1.1: escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-import-resolver-node@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" - integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== +eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== dependencies: - debug "^2.6.9" - resolve "^1.13.1" + debug "^3.2.7" + resolve "^1.20.0" -eslint-module-utils@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" - integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== +eslint-module-utils@^2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== dependencies: - debug "^2.6.9" - pkg-dir "^2.0.0" + debug "^3.2.7" + find-up "^2.1.0" eslint-plugin-import@^2.22.1: - version "2.22.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" - integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== dependencies: - array-includes "^3.1.1" - array.prototype.flat "^1.2.3" - contains-path "^0.1.0" + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.4" - eslint-module-utils "^2.6.0" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.1" - read-pkg-up "^2.0.0" - resolve "^1.17.0" - tsconfig-paths "^3.9.0" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" eslint-plugin-jsdoc@^31.0.3: - version "31.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-31.0.3.tgz#23dd8bee22421af1dab0a00a91dfc3d47f644a76" - integrity sha512-O2HXyXyw2FYXWngFGeuCxhmClb4M1Y/w+bPcahO31P/Tw+vHZUU9wkPkSML2izznJ1dp3dnTG4on9bXDZDWfyQ== + version "31.6.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-31.6.1.tgz#98040c801500572fff71c984a097d89946f1e450" + integrity sha512-5hCV3u+1VSEUMyfdTl+dpWsioD7tqQr2ILQw+KbXrF42AVxCLO8gnNLR6zDCDjqGGpt79V1sgY0RRchCWuCigg== dependencies: - comment-parser "1.0.1" + comment-parser "1.1.2" debug "^4.3.1" jsdoctypeparser "^9.0.0" lodash "^4.17.20" @@ -5840,11 +5694,11 @@ eslint-plugin-jsdoc@^31.0.3: spdx-expression-parse "^3.0.1" eslint-plugin-prefer-arrow@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.2.tgz#0c6d25a6b94cb3e0110a23d129760af5860edb6e" - integrity sha512-C8YMhL+r8RMeMdYAw/rQtE6xNdMulj+zGWud/qIGnlmomiPRaLDGLMeskZ3alN6uMBojmooRimtdrXebLN4svQ== + 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== -eslint-scope@5.1.1, eslint-scope@^5.0.0, eslint-scope@^5.1.0, eslint-scope@^5.1.1: +eslint-scope@5.1.1, eslint-scope@^5.1.0, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -5852,74 +5706,80 @@ eslint-scope@5.1.1, eslint-scope@^5.0.0, eslint-scope@^5.1.0, eslint-scope@^5.1. esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^2.0.0, eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== dependencies: - eslint-visitor-keys "^1.1.0" + esrecurse "^4.3.0" + estraverse "^5.2.0" -eslint-visitor-keys@^1.1.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-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@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + 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.0.0, eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^7.20.0: - version "7.20.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.20.0.tgz#db07c4ca4eda2e2316e7aa57ac7fc91ec550bdc7" - integrity sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw== +eslint@^8.12.0: + version "8.17.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.17.0.tgz#1cfc4b6b6912f77d24b874ca1506b0fe09328c21" + integrity sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw== dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.3.0" + "@eslint/eslintrc" "^1.3.0" + "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" - debug "^4.0.1" + debug "^4.3.2" doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.2" esquery "^1.4.0" esutils "^2.0.2" - file-entry-cache "^6.0.0" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" + glob-parent "^6.0.1" + globals "^13.15.0" + ignore "^5.2.0" import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - js-yaml "^3.13.1" + js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.20" - minimatch "^3.0.4" + lodash.merge "^4.6.2" + minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" + regexpp "^3.2.0" + strip-ansi "^6.0.1" strip-json-comments "^3.1.0" - table "^6.0.4" text-table "^0.2.0" v8-compile-cache "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +espree@^9.3.2: + version "9.3.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" + integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + acorn "^8.7.1" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" esprima@^4.0.0: version "4.0.1" @@ -5946,9 +5806,9 @@ estraverse@^4.1.1: integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" @@ -5958,13 +5818,23 @@ esutils@^2.0.2: etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== eventemitter-asyncresource@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz#734ff2e44bf448e627f7748f905d6bdd57bdb65b" integrity sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ== +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -5975,13 +5845,6 @@ events@^3.2.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -eventsource@1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" - execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" @@ -6013,17 +5876,7 @@ execa@^5.0.0: exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -express-graphql@0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/express-graphql/-/express-graphql-0.11.0.tgz#48089f0d40074d7783c65ff86dd9cae95afea2ef" - integrity sha512-IMYmF2aIBKKfo8c+EENBNR8FAy91QHboxfaHe1omCyb49GJXsToUgcjjIF/PfWJdzn0Ofp6JJvcsODQJrqpz2g== - dependencies: - accepts "^1.3.7" - content-type "^1.0.4" - http-errors "1.8.0" - raw-body "^2.4.1" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== express-graphql@^0.12.0: version "0.12.0" @@ -6035,74 +5888,39 @@ express-graphql@^0.12.0: http-errors "1.8.0" raw-body "^2.4.1" -express@4.17.1, express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -express@^4.17.2: - version "4.17.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" - integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== +express@^4.17.1, express@^4.17.2: + version "4.18.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.1" + body-parser "1.20.0" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.1" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.9.6" + qs "6.10.3" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.17.2" - serve-static "1.14.2" + send "0.18.0" + serve-static "1.15.0" setprototypeof "1.2.0" - statuses "~1.5.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -6126,47 +5944,46 @@ extract-files@9.0.0, extract-files@^9.0.0: resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== +extract-files@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" + integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + integrity sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "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-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^3.1.1: - version "3.2.5" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" - integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== +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.0" + glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" + micromatch "^4.0.4" -fast-glob@^3.2.7: - version "3.2.10" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.10.tgz#2734f83baa7f43b7fd41e13bc34438f4ffe284ee" - integrity sha512-s9nFhFnvR63wls6/kM88kQqDhMu0AfdjqouE2l5GVQPbqLgyFjjU5ry/r2yKsJxpb9Py1EYNqieFrmMaX4v++A== +fast-glob@^3.1.1, fast-glob@^3.2.11, fast-glob@^3.2.7, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -6182,12 +5999,12 @@ fast-json-stable-stringify@2.1.0, fast-json-stable-stringify@^2.0.0: fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-safe-stringify@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" - integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fastparse@^1.1.2: version "1.1.2" @@ -6195,16 +6012,16 @@ fastparse@^1.1.2: integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== fastq@^1.6.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.1.tgz#8b8f2ac8bf3632d67afcd65dac248d5fdc45385e" - integrity sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA== + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: reusify "^1.0.4" faye-websocket@^0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" @@ -6221,17 +6038,17 @@ fbjs-css-vars@^1.0.0: integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== fbjs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.0.tgz#0907067fb3f57a78f45d95f1eacffcacd623c165" - integrity sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg== + version "3.0.4" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.4.tgz#e1871c6bd3083bac71ff2da868ad5067d37716c6" + integrity sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ== dependencies: - cross-fetch "^3.0.4" + cross-fetch "^3.1.5" fbjs-css-vars "^1.0.0" loose-envify "^1.0.0" object-assign "^4.1.0" promise "^7.1.1" setimmediate "^1.0.5" - ua-parser-js "^0.7.18" + ua-parser-js "^0.7.30" figlet@1.5.0: version "1.5.0" @@ -6248,7 +6065,7 @@ figures@3.2.0, figures@^3.0.0: figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + integrity sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== dependencies: escape-string-regexp "^1.0.5" object-assign "^4.1.0" @@ -6256,17 +6073,24 @@ figures@^1.7.0: figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" - integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" +filelist@^1.0.1: + 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" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -6275,11 +6099,11 @@ fill-range@^7.0.1: to-regex-range "^5.0.1" filter-obj@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-2.0.1.tgz#34d9f0536786f072df7aeac3a8bda1c6e767aec6" - integrity sha512-yDEp513p7+iLdFHWBVdZFnRiOYwg8ZqmpaAiZCMjzqsbo7tCS4Qm4ulXOht337NGzkukKa9u3W4wqQ9tQPm3Ug== + version "2.0.2" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-2.0.2.tgz#fff662368e505d69826abb113f0f6a98f56e9d5f" + integrity sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg== -finalhandler@1.1.2, finalhandler@~1.1.2: +finalhandler@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== @@ -6292,19 +6116,32 @@ finalhandler@1.1.2, finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== dependencies: commondir "^1.0.1" make-dir "^3.0.2" pkg-dir "^4.1.0" -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: locate-path "^2.0.0" @@ -6331,44 +6168,51 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" -flatted@^3.1.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" - integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== +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.2.4: +flatted@^3.1.0, flatted@^3.2.5: version "3.2.5" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== follow-redirects@^1.0.0: - version "1.14.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" - integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== + version "1.15.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" + integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== -form-data@^2.3.2: - version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== +form-data-encoder@^1.7.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.2.tgz#1f1ae3dccf58ed4690b86d87e4f57c654fbab040" + integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== + +form-data@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.6" + combined-stream "^1.0.8" mime-types "^2.1.12" form-data@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" - integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -6384,34 +6228,37 @@ form-data@~2.3.2: mime-types "^2.1.12" form-urlencoded@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/form-urlencoded/-/form-urlencoded-4.2.1.tgz#264d0b4524a87332e94f606237493fb5d26dcd84" - integrity sha512-0eFJroOH2qaqc/630d4YZpmsyKmh6sfq/1z3YMXvFab0O6teGnf8640C7gufikwbQJFaC6nPlG4d/GiYVN+Dcw== + version "4.5.1" + resolved "https://registry.yarnpkg.com/form-urlencoded/-/form-urlencoded-4.5.1.tgz#922da1f0f6846ba85e3d2977b808d9809cb60946" + integrity sha512-Rkd/RdMaprsMJEGzEbxolwacp78WupH7u369KEyIY3pEZ1fhL6HtyQ1FX+4HSfA1VVhET18UwCUcr5DVaDIaqg== + +formdata-node@^4.3.1: + version "4.3.3" + resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-4.3.3.tgz#21415225be66e2c87a917bfc0fedab30a119c23c" + integrity sha512-coTew7WODO2vF+XhpUdmYz4UBvlsiTMSNaFYZlrXIqYbFd4W7bMwnoALNLE6uvNgzTg2j1JDF0ZImEfF06VPAA== + dependencies: + node-domexception "1.0.0" + web-streams-polyfill "4.0.0-beta.1" forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fraction.js@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.2.tgz#13e420a92422b6cf244dff8690ed89401029fbe8" - integrity sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA== +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fs-capacitor@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-6.2.0.tgz#fa79ac6576629163cb84561995602d8999afb7f5" - integrity sha512-nKcE1UduoSKX27NSZlg879LdQc94OtbOsEmKMN2MBNudXREvijRKx2GEBsTMTfws+BrbkJoEuynbGSVRSpauvw== +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== fs-extra@9.0.1: version "9.0.1" @@ -6423,10 +6270,10 @@ fs-extra@9.0.1: jsonfile "^6.0.1" universalify "^1.0.0" -fs-extra@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.1.tgz#27de43b4320e833f6867cc044bfce29fdf0ef3b8" - integrity sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag== +fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -6441,6 +6288,16 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-minipass@^2.0.0, fs-minipass@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" @@ -6448,7 +6305,7 @@ fs-minipass@^2.0.0, fs-minipass@^2.1.0: dependencies: minipass "^3.0.0" -fs-monkey@1.0.3: +fs-monkey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== @@ -6456,7 +6313,7 @@ fs-monkey@1.0.3: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: version "2.3.2" @@ -6480,27 +6337,41 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== -gauge@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.0.tgz#afba07aa0374a93c6219603b1fb83eaa2264d8f8" - integrity sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw== +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== dependencies: - ansi-regex "^5.0.1" aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" has-unicode "^2.0.1" - signal-exit "^3.0.0" + signal-exit "^3.0.7" string-width "^4.2.3" strip-ansi "^6.0.1" - wide-align "^1.1.2" + wide-align "^1.1.5" -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: +gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -6510,14 +6381,14 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.1, get-intrinsic@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" - integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== +get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" + integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== dependencies: function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" + has-symbols "^1.0.3" get-package-type@^0.1.0: version "0.1.0" @@ -6543,14 +6414,22 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -6569,7 +6448,19 @@ 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.2.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7: +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@7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -6581,29 +6472,40 @@ glob@7.2.0, glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glo once "^1.3.0" path-is-absolute "^1.0.0" -glob@~7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^7.0.3, glob@^7.0.6, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7, glob@~7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" +glob@^8.0.1: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== +globals@^13.15.0: + version "13.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" + integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== dependencies: - type-fest "^0.8.1" + type-fest "^0.20.2" globby@11.0.1: version "11.0.1" @@ -6617,10 +6519,10 @@ globby@11.0.1: merge2 "^1.3.0" slash "^3.0.0" -globby@^11.0.1: - version "11.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" - integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== +globby@11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" + integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== dependencies: array-union "^2.1.0" dir-glob "^3.0.1" @@ -6629,22 +6531,34 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" +globby@^11.0.1, globby@^11.0.3, globby@^11.0.4: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + globby@^12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-12.0.2.tgz#53788b2adf235602ed4cabfea5c70a1139e1ab11" - integrity sha512-lAsmb/5Lww4r7MM9nCCliDZVIKbZTavrsunAsHLr9oHthrZP1qi7/gAnHOsUs9bLvEt2vKVJhHmxuL7QbDuPdQ== + version "12.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-12.2.0.tgz#2ab8046b4fba4ff6eede835b29f678f90e3d3c22" + integrity sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA== dependencies: array-union "^3.0.1" dir-glob "^3.0.1" fast-glob "^3.2.7" - ignore "^5.1.8" + ignore "^5.1.9" merge2 "^1.4.1" slash "^4.0.0" globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - integrity sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0= + integrity sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ== dependencies: array-union "^1.0.1" arrify "^1.0.0" @@ -6670,10 +6584,10 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== graphql-cli@^4.1.0: version "4.1.0" @@ -6703,74 +6617,89 @@ graphql-config@3.0.3: string-env-interpolation "1.0.1" tslib "^2.0.0" -graphql-config@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-3.2.0.tgz#3ec3a7e319792086b80e54db4b37372ad4a79a32" - integrity sha512-ygEKDeQNZKpm4137560n2oY3bGM0D5zyRsQVaJntKkufWdgPg6sb9/4J1zJW2y/yC1ortAbhNho09qmeJeLa9g== +graphql-config@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-4.3.0.tgz#b9bb7bf9c892a90e66ea937e8d7ed170eb1fd5e2" + integrity sha512-Uiu3X7+s5c056WyrvdZVz2vG1fhAipMlYmtiCU/4Z2mX79OXDr1SqIon2MprC/pExIWJfAQZCcjYDY76fPBUQg== dependencies: "@endemolshinegroup/cosmiconfig-typescript-loader" "3.0.2" - "@graphql-tools/graphql-file-loader" "^6.0.0" - "@graphql-tools/json-file-loader" "^6.0.0" - "@graphql-tools/load" "^6.0.0" - "@graphql-tools/merge" "^6.0.0" - "@graphql-tools/url-loader" "^6.0.0" - "@graphql-tools/utils" "^6.0.0" - cosmiconfig "6.0.0" + "@graphql-tools/graphql-file-loader" "^7.3.7" + "@graphql-tools/json-file-loader" "^7.3.7" + "@graphql-tools/load" "^7.5.5" + "@graphql-tools/merge" "^8.2.6" + "@graphql-tools/url-loader" "^7.9.7" + "@graphql-tools/utils" "^8.6.5" + cosmiconfig "7.0.1" cosmiconfig-toml-loader "1.0.0" - minimatch "3.0.4" + minimatch "4.2.1" string-env-interpolation "1.0.1" - tslib "^2.0.0" -graphql-depth-limit@1.1.0: +graphql-config@^4.1.0, graphql-config@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-4.3.1.tgz#636b539b1acc06fb48012d0e0f228014ccb0325f" + integrity sha512-czBWzJSGaLJfOHBLuUTZVRTjfgohPfvlaeN1B5nXBVptFARpiFuS7iI4FnRhCGwm6qt1h2j1g05nkg0OIGA6bg== + dependencies: + "@endemolshinegroup/cosmiconfig-typescript-loader" "3.0.2" + "@graphql-tools/graphql-file-loader" "^7.3.7" + "@graphql-tools/json-file-loader" "^7.3.7" + "@graphql-tools/load" "^7.5.5" + "@graphql-tools/merge" "^8.2.6" + "@graphql-tools/url-loader" "^7.9.7" + "@graphql-tools/utils" "^8.6.5" + cosmiconfig "7.0.1" + cosmiconfig-toml-loader "1.0.0" + minimatch "4.2.1" + string-env-interpolation "1.0.1" + +graphql-depth-limit@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/graphql-depth-limit/-/graphql-depth-limit-1.1.0.tgz#59fe6b2acea0ab30ee7344f4c75df39cc18244e8" integrity sha512-+3B2BaG8qQ8E18kzk9yiSdAa75i/hnnOwgSeAxVJctGQPvmeiLtqKOYF6HETCyRjiF7Xfsyal0HbLlxCQkgkrw== dependencies: arrify "^1.0.1" -graphql-mock@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/graphql-mock/-/graphql-mock-1.3.0.tgz#2f591e79b560ec0ba458a08cbf0e1ffa80d4604c" - integrity sha512-8qZHdgcz0E/DrKsIPZANp1x3K8TFBwFtx9noeF4ywOvcHkUMJCMIQVL8OqnRhjxTFUIyTc4gtJghArDYGHsCaQ== +graphql-executor@0.0.23: + version "0.0.23" + resolved "https://registry.yarnpkg.com/graphql-executor/-/graphql-executor-0.0.23.tgz#205c1764b39ee0fcf611553865770f37b45851a2" + integrity sha512-3Ivlyfjaw3BWmGtUSnMpP/a4dcXCp0mJtj0PiPG14OKUizaMKlSEX+LX2Qed0LrxwniIwvU6B4w/koVjEPyWJg== + +graphql-mock@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/graphql-mock/-/graphql-mock-2.0.0.tgz#c2340f095d72ce202a84bad131403e9740c17f37" + integrity sha512-s++gsMAv2A7W3a4KXEUfjwFL+qbY9NeLmfUj34vkx3aiduL6TIwXzDGR0/rDiGpRjOx0ieZWnKb7aZego9+3Ug== dependencies: apollo-link-schema "^1.2.3" fast-deep-equal "^2.0.1" graphql-tools "^4.0.5" -graphql-request@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-3.4.0.tgz#3a400cd5511eb3c064b1873afb059196bbea9c2b" - integrity sha512-acrTzidSlwAj8wBNO7Q/UQHS8T+z5qRGquCQRv9J1InwR01BBWV9ObnoE+JS5nCCEj8wSGS0yrDXVDoRiKZuOg== +graphql-request@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-4.3.0.tgz#b934e08fcae764aa2cdc697d3c821f046cb5dbf2" + integrity sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow== dependencies: - cross-fetch "^3.0.6" + cross-fetch "^3.1.5" extract-files "^9.0.0" form-data "^3.0.0" -graphql-schema-linter@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/graphql-schema-linter/-/graphql-schema-linter-2.0.1.tgz#fa76752fc9461721992b0e8e3c8660a29819759f" - integrity sha512-zCezfm0TRW+WhmI7WzVjZbaZrymij7gj4ipc3bqQFQnQLyzirUKKW365kIe7YWKOudnmNp9o1IYKFm1MM/R0zw== +graphql-schema-linter@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/graphql-schema-linter/-/graphql-schema-linter-3.0.0.tgz#8e88afa994a75a21a0f6e217449c0d33d08ce092" + integrity sha512-nXsyFvcqrD9/QWgimvJjvRBsUXHw8O7XoPLhpnGZd9eX6r2ZXsOBCGhTzF9ZrFtWosCBEfBGU2xpFUPe0qCHVg== dependencies: chalk "^2.0.1" columnify "^1.5.4" commander "^3.0.0" cosmiconfig "^5.2.1" glob "^7.1.2" - graphql "^15.0.0" graphql-subscriptions@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-1.1.0.tgz#5f2fa4233eda44cf7570526adfcf3c16937aef11" - integrity sha512-6WzlBFC0lWmXJbIVE8OgFgXIP4RJi3OQgTPa0DVMsDXdpRDjTsM1K9wfl5HSYX7R87QAGlvcv2Y4BIZa/ItonA== + version "1.2.1" + resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz#2142b2d729661ddf967b7388f7cf1dd4cf2e061d" + integrity sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g== dependencies: - iterall "^1.2.1" + iterall "^1.3.0" -graphql-tag@^2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.11.0.tgz#1deb53a01c46a7eb401d6cb59dec86fa1cccbffd" - integrity sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA== - -graphql-tag@^2.12.3: +graphql-tag@^2.11.0, graphql-tag@^2.12.6: version "2.12.6" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== @@ -6793,31 +6722,25 @@ graphql-type-json@^0.3.2: resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.3.2.tgz#f53a851dbfe07bd1c8157d24150064baab41e115" integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== -graphql-upload@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/graphql-upload/-/graphql-upload-11.0.0.tgz#24b245ff18f353bab6715e8a055db9fd73035e10" - integrity sha512-zsrDtu5gCbQFDWsNa5bMB4nf1LpKX9KDgh+f8oL1288ijV4RxeckhVozAjqjXAfRpxOHD1xOESsh6zq8SjdgjA== - dependencies: - busboy "^0.3.1" - fs-capacitor "^6.1.0" - http-errors "^1.7.3" - isobject "^4.0.0" - object-path "^0.11.4" +graphql-ws@^4.4.1: + version "4.9.0" + resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-4.9.0.tgz#5cfd8bb490b35e86583d8322f5d5d099c26e365c" + integrity sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag== -graphql-ws@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-3.1.0.tgz#cd09d385a21ab88af4c226da79c19351df9b27e8" - integrity sha512-zbex3FSiFz0iRgfkzDNWpOY/sYWoX+iZ5XUhakaDwOh99HSuk8rPt5suuxdXUVzEg5TGQ9rwzNaz/+mTPtS0yg== +graphql-ws@^5.4.1: + version "5.9.0" + resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.9.0.tgz#1fea3cca4582bbda15bc3a50bf30b539869b826f" + integrity sha512-CXv0l0nI1bgChwl4Rm+BqNOAKwL/C9T2N8RfmTkhQ38YLFdUXCi2WNW4oFp8BJP+t75nCLzjHHgR04sP1oF02w== graphql@15.3.0: version "15.3.0" resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.3.0.tgz#3ad2b0caab0d110e3be4a5a9b2aa281e362b5278" integrity sha512-GTCJtzJmkFLWRfFJuoo9RWWa/FfamUHgiFosxi/X1Ani4AVWbeyBenZTNX6dM+7WSbbFfTo/25eh0LLkwHMw2w== -graphql@^15.0.0, graphql@^15.4.0: - version "15.4.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.4.0.tgz#e459dea1150da5a106486ba7276518b5295a4347" - integrity sha512-EB3zgGchcabbsU9cFe1j+yxdzKQKAbGUWRb13DsrsMN1yyfmmIq+2+L5MqVWcDCE4V89R5AyUOi7sMOGxdsYtA== +graphql@16.4.0: + version "16.4.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.4.0.tgz#bb10b1b4683045dedcb67000eb4ad134a36c59e6" + integrity sha512-tYDNcRvKCcfHREZYje3v33NSrSD/ZpbWWdPtBtUUuXx9NCo/2QDxYzNqCnMvfsrnbwRpEHMovVrPu/ERoLrIRg== gzip-size@^6.0.0: version "6.0.0" @@ -6834,7 +6757,7 @@ handle-thing@^2.0.0: har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: version "5.1.5" @@ -6847,29 +6770,48 @@ har-validator@~5.1.3: has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: ansi-regex "^2.0.0" +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== has@^1.0.3: version "1.0.3" @@ -6892,11 +6834,6 @@ hdr-histogram-percentiles-obj@^3.0.0: resolved "https://registry.yarnpkg.com/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz#9409f4de0c2dda78e61de2d9d78b1e9f3cba283c" integrity sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw== -he@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - header-case@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" @@ -6912,18 +6849,6 @@ hoist-non-react-statics@^3.3.2: dependencies: react-is "^16.7.0" -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -hosted-git-info@^3.0.6: - version "3.0.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" - integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== - dependencies: - lru-cache "^6.0.0" - hosted-git-info@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" @@ -6934,7 +6859,7 @@ hosted-git-info@^4.0.1: hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== dependencies: inherits "^2.0.1" obuf "^1.0.0" @@ -6942,9 +6867,9 @@ hpack.js@^2.1.6: wbuf "^1.1.0" html-entities@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488" - integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ== + version "2.3.3" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== html-escaper@^2.0.0: version "2.0.2" @@ -6959,31 +6884,9 @@ http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@1.7.3, http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== -http-errors@1.8.0, http-errors@^1.7.3: +http-errors@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== @@ -6994,21 +6897,21 @@ http-errors@1.8.0, http-errors@^1.7.3: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: - depd "~1.1.2" + depd "2.0.0" inherits "2.0.4" setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" + statuses "2.0.1" toidentifier "1.0.1" http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== dependencies: depd "~1.1.2" inherits "2.0.3" @@ -7016,9 +6919,9 @@ http-errors@~1.6.2: statuses ">= 1.4.0 < 2" http-parser-js@>=0.5.1: - version "0.5.3" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" - integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + version "0.5.7" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.7.tgz#39bde369fb8a57235121bb69d05f079fa1b598f4" + integrity sha512-8gQM8ZcewlONQLnik2AKzS13euQhaZcu4rK5QBSYOszW0T1upLW9VA2MdWvTvMmRo42HjXp7igFmdROoBCCrfg== http-proxy-agent@^4.0.1: version "4.0.1" @@ -7029,12 +6932,21 @@ http-proxy-agent@^4.0.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== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + http-proxy-middleware@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz#7ef3417a479fb7666a571e09966c66a39bd2c15f" - integrity sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg== + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== dependencies: - "@types/http-proxy" "^1.17.5" + "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" is-glob "^4.0.1" is-plain-obj "^3.0.0" @@ -7052,18 +6964,18 @@ http-proxy@^1.18.1: http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" sshpk "^1.7.0" http2-client@^1.2.5: - version "1.3.3" - resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.3.tgz#90fc15d646cca86956b156d07c83947d57d659a9" - integrity sha512-nUxLymWQ9pzkzTmir24p2RtsgruLmhje7lH3hLX1IpwvyTg77fW+1brenPPP3USAR+rQ36p5sTA/x7sjCJVkAA== + version "1.3.5" + resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.5.tgz#20c9dc909e3cc98284dd20af2432c524086df181" + integrity sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA== -https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: +https-proxy-agent@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== @@ -7079,6 +6991,14 @@ https-proxy-agent@^2.2.1: agent-base "^4.3.0" debug "^3.1.0" +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + 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" @@ -7087,7 +7007,7 @@ human-signals@^2.1.0: humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: ms "^2.0.0" @@ -7098,10 +7018,10 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" - integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== +iconv-lite@^0.6.2, iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" @@ -7122,17 +7042,7 @@ ignore-walk@^4.0.1: dependencies: minimatch "^3.0.4" -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -ignore@^5.1.8: +ignore@5.2.0, ignore@^5.0.4, ignore@^5.1.4, ignore@^5.1.8, ignore@^5.1.9, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -7140,27 +7050,27 @@ ignore@^5.1.8: image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" - integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== immediate@~3.0.5: version "3.0.6" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== immutable@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" - integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + version "4.1.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" + integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== immutable@~3.7.6: version "3.7.6" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" - integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= + integrity sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw== import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== dependencies: caller-path "^2.0.0" resolve-from "^3.0.0" @@ -7180,26 +7090,26 @@ import-from@3.0.0: dependencies: resolve-from "^5.0.0" +import-from@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-4.0.0.tgz#2710b8d66817d232e16f4166e319248d3d5492e2" + integrity sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ== + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + integrity sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ== indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" @@ -7208,7 +7118,7 @@ infer-owner@^1.0.4: inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" @@ -7221,7 +7131,7 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i inherits@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== ini@2.0.0: version "2.0.0" @@ -7233,29 +7143,49 @@ ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -inquirer@7.3.3, inquirer@^7.3.3: +inquirer@7.3.3: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== dependencies: ansi-escapes "^4.2.1" - chalk "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +inquirer@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" + integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" cli-cursor "^3.1.0" cli-width "^3.0.0" external-editor "^3.0.3" figures "^3.0.0" - lodash "^4.17.19" + lodash "^4.17.21" mute-stream "0.0.8" + ora "^5.4.1" run-async "^2.4.0" - rxjs "^6.6.0" + rxjs "^7.2.0" string-width "^4.1.0" strip-ansi "^6.0.0" through "^2.3.6" -inquirer@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" - integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== +inquirer@^8.0.0: + version "8.2.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" + integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== dependencies: ansi-escapes "^4.2.1" chalk "^4.1.1" @@ -7267,15 +7197,32 @@ inquirer@8.2.0: mute-stream "0.0.8" ora "^5.4.1" run-async "^2.4.0" - rxjs "^7.2.0" + rxjs "^7.5.5" string-width "^4.1.0" strip-ansi "^6.0.0" through "^2.3.6" + wrap-ansi "^7.0.0" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + version "1.1.8" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== ipaddr.js@1.9.1: version "1.9.1" @@ -7295,22 +7242,25 @@ is-absolute@^1.0.0: is-relative "^1.0.0" is-windows "^1.0.1" -is-arguments@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" - integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== +is-arguments@^1.0.4, is-arguments@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-bigint@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.1.tgz#6923051dfcbc764278540b9ce0e6b3213aa5ebc2" - integrity sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" @@ -7320,16 +7270,17 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.0.tgz#e2aaad3a3a8fca34c28f6eee135b156ed2587ff0" - integrity sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" + has-tostringtag "^1.0.0" -is-callable@^1.1.4, is-callable@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" - integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== is-ci@^2.0.0: version "2.0.0" @@ -7338,36 +7289,26 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.1.0, is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - -is-core-module@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== +is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== dependencies: has "^1.0.3" is-date-object@^1.0.1, is-date-object@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== -is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== - -is-docker@^2.1.1: +is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== @@ -7375,19 +7316,19 @@ is-docker@^2.1.1: is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -7401,7 +7342,7 @@ is-glob@4.0.1: dependencies: is-extglob "^2.1.1" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: +is-glob@4.0.3, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -7416,29 +7357,31 @@ is-interactive@^1.0.0: is-lambda@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== -is-lower-case@^2.0.1: +is-lower-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-2.0.2.tgz#1c0884d3012c841556243483aa5d522f47396d2a" integrity sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ== dependencies: tslib "^2.0.3" -is-map@^2.0.1: +is-map@^2.0.1, is-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" - integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" is-number@^7.0.0: version "7.0.0" @@ -7455,7 +7398,7 @@ is-observable@^1.1.0: is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + integrity sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw== is-path-cwd@^2.2.0: version "2.2.0" @@ -7472,7 +7415,7 @@ is-path-in-cwd@^1.0.0: is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" - integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + integrity sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g== dependencies: path-is-inside "^1.0.1" @@ -7503,13 +7446,13 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-regex@^1.0.4, is-regex@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" - integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== +is-regex@^1.0.4, is-regex@^1.1.1, is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: call-bind "^1.0.2" - has-symbols "^1.0.1" + has-tostringtag "^1.0.0" is-relative@^1.0.0: version "1.0.0" @@ -7518,48 +7461,57 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-set@^2.0.1: +is-set@^2.0.1, is-set@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: - has-symbols "^1.0.1" + has-symbols "^1.0.2" -is-typed-array@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.4.tgz#1f66f34a283a3c94a4335434661ca53fff801120" - integrity sha512-ILaRgn4zaSrVNXNGtON6iFNotXW3hAPF3+0fB1usg2jFlWqo5fEDdmJkz0zBfoi7Dgskr8Khi2xZ8cXqZEfXNA== +is-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67" + integrity sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A== dependencies: - available-typed-arrays "^1.0.2" - call-bind "^1.0.0" - es-abstract "^1.18.0-next.1" - foreach "^2.0.5" - has-symbols "^1.0.1" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.20.0" + for-each "^0.3.3" + has-tostringtag "^1.0.0" is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unc-path@^1.0.0: version "1.0.0" @@ -7573,7 +7525,7 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-upper-case@^2.0.1: +is-upper-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-2.0.2.tgz#f1105ced1fe4de906a5f39553e7d3803fd804649" integrity sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ== @@ -7585,12 +7537,22 @@ is-weakmap@^2.0.1: resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + is-weakset@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" - integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" -is-what@^3.12.0: +is-what@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== @@ -7607,35 +7569,30 @@ is-wsl@^2.1.1, is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isbinaryfile@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" - integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== + version "4.0.10" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isobject@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" - integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== isomorphic-fetch@^3.0.0: version "3.0.0" @@ -7645,14 +7602,7 @@ isomorphic-fetch@^3.0.0: node-fetch "^2.6.1" whatwg-fetch "^3.4.1" -isomorphic-form-data@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isomorphic-form-data/-/isomorphic-form-data-2.0.0.tgz#9f6adf1c4c61ae3aefd8f110ab60fb9b143d6cec" - integrity sha512-TYgVnXWeESVmQSg4GLVbalmQ+B4NPi/H4eWxqALKj63KsUrcu301YDjBqaOw3h+cbak7Na4Xyps3BiptHtxTfg== - dependencies: - form-data "^2.3.2" - -isomorphic-ws@4.0.1: +isomorphic-ws@4.0.1, isomorphic-ws@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== @@ -7660,14 +7610,9 @@ isomorphic-ws@4.0.1: isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== -istanbul-lib-coverage@^3.2.0: +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== @@ -7683,9 +7628,9 @@ istanbul-lib-instrument@^4.0.3: semver "^6.3.0" istanbul-lib-instrument@^5.0.4: - version "5.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" - integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + version "5.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" + integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -7712,27 +7657,42 @@ istanbul-lib-source-maps@^4.0.1: source-map "^0.6.1" istanbul-reports@^3.0.5: - version "3.1.3" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.3.tgz#4bcae3103b94518117930d51283690960b50d3c2" - integrity sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg== + version "3.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" + integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -iterall@^1.1.3, iterall@^1.2.1: +iterall@^1.1.3, iterall@^1.2.1, iterall@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== -jasmine-core@^3.6.0, jasmine-core@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.6.0.tgz#491f3bb23941799c353ceb7a45b38a950ebc5a20" - integrity sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw== +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +jasmine-core@^3.6.0: + version "3.99.1" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.99.1.tgz#5bfa4b2d76618868bfac4c8ff08bb26fffa4120d" + integrity sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg== jasmine-core@~2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" - integrity sha1-vMl5rh+f0FcB5F5S5l06XWPxok4= + integrity sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ== + +jasmine-core@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.6.0.tgz#491f3bb23941799c353ceb7a45b38a950ebc5a20" + integrity sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw== jasmine-spec-reporter@~5.0.0: version "5.0.2" @@ -7744,7 +7704,7 @@ jasmine-spec-reporter@~5.0.0: jasmine@2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" - integrity sha1-awicChFXax8W3xG4AUbZHU6Lij4= + integrity sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw== dependencies: exit "^0.1.2" glob "^7.0.6" @@ -7753,12 +7713,12 @@ jasmine@2.8.0: jasminewd2@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" - integrity sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4= + integrity sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg== -jest-worker@^27.4.1: - version "27.4.6" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.6.tgz#5d2d93db419566cb680752ca0792780e71b3273e" - integrity sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw== +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -7777,7 +7737,14 @@ js-yaml@3.14.0: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.13.1, js-yaml@^3.14.0: +js-yaml@4.1.0, js-yaml@^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" + +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== @@ -7788,7 +7755,7 @@ js-yaml@^3.13.1, js-yaml@^3.14.0: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== jsdoctypeparser@^9.0.0: version "9.0.0" @@ -7803,12 +7770,12 @@ jsesc@^2.5.1: jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-buffer@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" @@ -7837,32 +7804,32 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + integrity sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg== dependencies: jsonify "~0.0.0" json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json-to-pretty-yaml@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz#f4cd0bd0a5e8fe1df25aaf5ba118b099fd992d5b" - integrity sha1-9M0L0KXo/h3yWq9boRiwmf2ZLVs= + integrity sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A== dependencies: remedial "^1.0.7" remove-trailing-spaces "^1.0.6" @@ -7874,17 +7841,10 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -jsonc-parser@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-2.3.1.tgz#59549150b133f2efacca48fe9ce1ec0659af2342" - integrity sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg== +json5@^2.1.2, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== jsonc-parser@3.0.0: version "3.0.0" @@ -7894,7 +7854,7 @@ jsonc-parser@3.0.0: jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" @@ -7910,12 +7870,12 @@ jsonfile@^6.0.1: jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + integrity sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA== jsonparse@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== jsonpath-plus@^4.0.0: version "4.0.0" @@ -7939,24 +7899,24 @@ jsonwebtoken@^8.5.1: semver "^5.6.0" jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: assert-plus "1.0.0" extsprintf "1.3.0" - json-schema "0.2.3" + json-schema "0.4.0" verror "1.10.0" jszip@^3.1.3: - version "3.5.0" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.5.0.tgz#b4fd1f368245346658e781fec9675802489e15f6" - integrity sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA== + version "3.10.0" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.0.tgz#faf3db2b4b8515425e34effcdbb086750a346061" + integrity sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q== dependencies: lie "~3.3.0" pako "~1.0.2" readable-stream "~2.3.6" - set-immediate-shim "~1.0.1" + setimmediate "^1.0.5" jwa@^1.4.1: version "1.4.1" @@ -7976,16 +7936,16 @@ jws@^3.2.2: safe-buffer "^5.0.1" karma-chrome-launcher@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz#805a586799a4d05f4e54f72a204979f3f3066738" - integrity sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg== + version "3.1.1" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz#baca9cc071b1562a1db241827257bfe5cab597ea" + integrity sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ== dependencies: which "^1.2.1" karma-coverage@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-2.1.0.tgz#843564578d9e1fb889ec141a582c019bb6db14db" - integrity sha512-uIejpnArNFQIovB6EPsKO/T4XofELdJWXcA2ADXztFlKhHbr0Ws6ba7wKTMVWsIhEs4iJxdhQkCQrkkhFJSZCw== + version "2.1.1" + resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-2.1.1.tgz#7434f8736841e08de3e6c302632e8d239634f388" + integrity sha512-oxeOSBVK/jdZsiX03LhHQkO4eISSQb5GbHi6Nsw3Mw7G4u6yUgacBAftnO7q+emPBLMsrNbz1pGIrj+Jb3z17A== dependencies: istanbul-lib-coverage "^3.2.0" istanbul-lib-instrument "^4.0.3" @@ -8000,9 +7960,9 @@ karma-jasmine-html-reporter@^1.7.0: integrity sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ== karma-jasmine@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-4.0.1.tgz#b99e073b6d99a5196fc4bffc121b89313b0abd82" - integrity sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw== + version "4.0.2" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-4.0.2.tgz#386db2a3e1acc0af5265c711f673f78f1e4938de" + integrity sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g== dependencies: jasmine-core "^3.6.0" @@ -8014,14 +7974,14 @@ karma-source-map-support@1.4.0: source-map-support "^0.5.5" karma@~6.3.16: - version "6.3.16" - resolved "https://registry.yarnpkg.com/karma/-/karma-6.3.16.tgz#76d1a705fd1cf864ee5ed85270b572641e0958ef" - integrity sha512-nEU50jLvDe5yvXqkEJRf8IuvddUkOY2x5Xc4WXHz6dxINgGDrgD2uqQWeVrJs4hbfNaotn+HQ1LZJ4yOXrL7xQ== + version "6.3.20" + resolved "https://registry.yarnpkg.com/karma/-/karma-6.3.20.tgz#12f5c3b0e68f204607cb0a3a78d4751b42ef61a8" + integrity sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw== dependencies: + "@colors/colors" "1.5.0" body-parser "^1.19.0" braces "^3.0.2" chokidar "^3.5.1" - colors "1.4.0" connect "^3.7.0" di "^0.0.1" dom-serialize "^2.2.1" @@ -8037,7 +7997,7 @@ karma@~6.3.16: qjobs "^1.2.0" range-parser "^1.2.1" rimraf "^3.0.2" - socket.io "^4.2.0" + socket.io "^4.4.1" source-map "^0.6.1" tmp "^0.2.1" ua-parser-js "^0.7.30" @@ -8067,12 +8027,7 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -klona@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" - integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== - -klona@^2.0.5: +klona@^2.0.4, klona@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== @@ -8116,10 +8071,10 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -license-webpack-plugin@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-4.0.0.tgz#11cf6ac96559f4a987cf55d3d2a33f295ae8f13b" - integrity sha512-b9iMrROrw2fTOJBZ57h0xJfT5/1Cxg4ucYbtpWoukv4Awb2TFPfDDFVHNM8w6SYQpVfB13a5tQJxgGamqwrsyw== +license-webpack-plugin@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz#1e18442ed20b754b82f1adeff42249b81d11aec6" + integrity sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw== dependencies: webpack-sources "^3.0.0" @@ -8131,14 +8086,14 @@ lie@~3.3.0: immediate "~3.0.5" lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== listr-silent-renderer@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + integrity sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA== listr-update-renderer@^0.5.0: version "0.5.0" @@ -8179,39 +8134,20 @@ listr@^0.14.3: p-map "^2.0.0" rxjs "^6.3.3" -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.0.tgz#bcecc51a7898bee7473d4bc6b845b23af8304d4f" integrity sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ== -loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" @@ -8220,7 +8156,7 @@ loader-utils@^2.0.0: locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -8235,84 +8171,87 @@ locate-path@^5.0.0: lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.get@^4: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= + integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== lodash.isboolean@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= + integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== lodash.isinteger@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= + integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== lodash.isnumber@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= + integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== lodash.isstring@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= + integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== lodash.kebabcase@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= + integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g== + +lodash.lowercase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz#46515aced4acb0b7093133333af068e4c3b14e9d" + integrity sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.once@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= + integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== lodash.snakecase@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" - integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= + integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= + integrity sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw== -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.20: +lodash@4.17.21, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@~4.17.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.0.0, log-symbols@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== - dependencies: - chalk "^4.0.0" - log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + integrity sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ== dependencies: chalk "^1.0.0" @@ -8323,7 +8262,7 @@ log-symbols@^2.2.0: dependencies: chalk "^2.0.1" -log-symbols@^4.1.0: +log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -8334,22 +8273,22 @@ log-symbols@^4.1.0: log-update@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + integrity sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== dependencies: ansi-escapes "^3.0.0" cli-cursor "^2.0.0" wrap-ansi "^3.0.1" log4js@^6.4.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.4.1.tgz#9d3a8bf2c31c1e213fe3fc398a6053f7a2bc53e8" - integrity sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg== + version "6.5.2" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.5.2.tgz#9ae371e5b3cb3a3a209c24686e5547f8670834e5" + integrity sha512-DXtpNtt+KDOMT7RHUDIur/WsSA3rntlUh9Zg4XCdV42wUuMmbFkl38+LZ92Z5QvQA7mD5kAVkLiBSEH/tvUB8A== dependencies: - date-format "^4.0.3" - debug "^4.3.3" - flatted "^3.2.4" + date-format "^4.0.10" + debug "^4.3.4" + flatted "^3.2.5" rfdc "^1.3.0" - streamroller "^3.0.2" + streamroller "^3.1.1" loose-envify@^1.0.0, loose-envify@^1.4.0: version "1.4.0" @@ -8358,21 +8297,14 @@ loose-envify@^1.0.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lower-case-first@^2.0.1: +lower-case-first@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-2.0.2.tgz#64c2324a2250bf7c37c5901e76a5b5309301160b" integrity sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg== dependencies: tslib "^2.0.3" -lower-case@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" - integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== - dependencies: - tslib "^1.10.0" - -lower-case@^2.0.1, lower-case@^2.0.2: +lower-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== @@ -8396,13 +8328,32 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -magic-string@0.25.7, magic-string@^0.25.0: +lru-cache@^7.7.1: + version "7.10.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.10.1.tgz#db577f42a94c168f676b638d15da8fb073448cab" + integrity sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A== + +magic-string@0.25.7: version "0.25.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== dependencies: sourcemap-codec "^1.4.4" +magic-string@0.26.1: + version "0.26.1" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.1.tgz#ba9b651354fa9512474199acecf9c6dbe93f97fd" + integrity sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg== + dependencies: + sourcemap-codec "^1.4.8" + +magic-string@^0.26.0: + version "0.26.2" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" + integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== + dependencies: + sourcemap-codec "^1.4.8" + make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -8423,7 +8374,29 @@ make-error@^1, make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: +make-fetch-happen@^10.0.1: + version "10.1.8" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz#3b6e93dd8d8fdb76c0d7bf32e617f37c3108435a" + integrity sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g== + dependencies: + agentkeepalive "^4.2.1" + cacache "^16.1.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-fetch "^2.0.3" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^9.0.0" + +make-fetch-happen@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== @@ -8455,7 +8428,7 @@ map-age-cleaner@^0.1.3: map-cache@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== mdn-data@2.0.14: version "2.0.14" @@ -8470,7 +8443,7 @@ mdn-data@2.0.4: media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== mem@^5.1.0: version "5.1.1" @@ -8482,16 +8455,28 @@ mem@^5.1.0: p-is-promise "^2.1.0" memfs@^3.2.2: - version "3.4.1" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305" - integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw== + version "3.4.7" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.7.tgz#e5252ad2242a724f938cb937e3c4f7ceb1f70e5a" + integrity sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw== dependencies: - fs-monkey "1.0.3" + fs-monkey "^1.0.3" + +memfs@^3.4.3: + version "3.4.6" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.6.tgz#74097983d27c82b973665885dc75f27a65174510" + integrity sha512-rH9mjopto6Wkr7RFuH9l9dk3qb2XGOcYKr7xMhaYqfzuJqOqhRrcFvfD7JMuPj6SLmPreh5+6eAuv36NFAU+Mw== + dependencies: + fs-monkey "^1.0.3" + +memoize-resolver@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/memoize-resolver/-/memoize-resolver-1.0.0.tgz#93f01b61909008eb9d9b521fc1db152cc1b47f06" + integrity sha512-mXfNXte0RSWl0rEIsQhXutfM2R2Oa7UyKDD7XoZMEbKeucTRms04y5y41U8gLqPzRx7ViN/QyYnTR2TX/5tawA== merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== merge-stream@^2.0.0: version "2.0.0" @@ -8503,74 +8488,52 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +meros@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/meros/-/meros-1.1.4.tgz#c17994d3133db8b23807f62bec7f0cb276cfd948" + integrity sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ== + +meros@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/meros/-/meros-1.2.0.tgz#096cdede2eb0b1610b219b1031b935260de1ad08" + integrity sha512-3QRZIS707pZQnijHdhbttXRWwrHhZJ/gzolneoxKVz9N/xmsvY/7Ls8lpnI9gxbgxjcHsAVEW3mgwiZCo6kkJQ== + mersenne-twister@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/mersenne-twister/-/mersenne-twister-1.1.0.tgz#f916618ee43d7179efcf641bec4531eb9670978a" - integrity sha1-+RZhjuQ9cXnvz2Qb7EUx65Zwl4o= + integrity sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA== methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-db@1.46.0, "mime-db@>= 1.43.0 < 2": - version "1.46.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" - integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -mime-db@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: - mime-db "1.44.0" + braces "^3.0.2" + picomatch "^2.3.1" -mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== - dependencies: - mime-db "1.51.0" +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@~2.1.17: - version "2.1.29" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" - integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: - mime-db "1.46.0" + mime-db "1.52.0" mime@1.6.0, mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.3.1, mime@^2.5.2: +mime@^2.5.2: version "2.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== @@ -8590,10 +8553,10 @@ mimic-response@^1.0.0, mimic-response@^1.0.1: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== -mini-css-extract-plugin@2.4.5: - version "2.4.5" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.5.tgz#191d6c170226037212c483af1180b4010b7b9eef" - integrity sha512-oEIhRucyn1JbT/1tU2BhnwO6ft1jjH1iCX9Gc59WFMg0n5773rQU0oyQ0zzeYFFuBfONaRbQJyGoPtuNseMxjA== +mini-css-extract-plugin@2.5.3: + version "2.5.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.3.tgz#c5c79f9b22ce9b4f164e9492267358dbe35376d9" + integrity sha512-YseMB8cs8U/KCaAGQoqYmfUuhhGW0a9p9XvWXrxVOkE3/IiISTLw4ALNt7JR5B2eYauFM+PQGSbXMDmVbR7Tfw== dependencies: schema-utils "^4.0.0" @@ -8602,14 +8565,42 @@ 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.4, minimatch@^3.0.4: +minimatch@3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5: +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@4.2.1, minimatch@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -8621,10 +8612,10 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.3.3.tgz#34c7cea038c817a8658461bf35174551dce17a0a" - integrity sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ== +minipass-fetch@^1.3.2, minipass-fetch@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" + integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== dependencies: minipass "^3.1.0" minipass-sized "^1.0.3" @@ -8632,6 +8623,17 @@ minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: optionalDependencies: encoding "^0.1.12" +minipass-fetch@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.0.tgz#ca1754a5f857a3be99a9271277246ac0b44c3ff8" + integrity sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -8661,14 +8663,14 @@ minipass-sized@^1.0.3: dependencies: minipass "^3.0.0" -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3, minipass@^3.1.6: + version "3.3.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.3.tgz#fd1f0e6c06449c10dadda72618b59c00f3d6378d" + integrity sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA== dependencies: yallist "^4.0.0" -minizlib@^2.0.0, minizlib@^2.1.1: +minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -8677,31 +8679,31 @@ minizlib@^2.0.0, minizlib@^2.1.1: yallist "^4.0.0" mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: - minimist "^1.2.5" + minimist "^1.2.6" -mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4: +mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== moment@^2.15.2: - version "2.29.2" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.2.tgz#00910c60b20843bcba52d37d58c628b47b1f20e4" - integrity sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg== + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + +mrmime@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" + integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw== ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: version "2.1.2" @@ -8716,7 +8718,7 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1: multicast-dns-service-types@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ== multicast-dns@^6.0.1: version "6.2.3" @@ -8731,39 +8733,39 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nanoid@^3.1.30: - version "3.1.32" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.32.tgz#8f96069e6239cc0a9ae8c0d3b41a3b4933a88c0a" - integrity sha512-F8mf7R3iT9bvThBoW4tGXhXFHCctyCiUUPrWF8WaTqa3h96d9QybkSeba43XVOOE3oiLfkVDe4bT8MeGmkrTxw== +nanoid@^3.1.30, nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== needle@^2.5.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.6.0.tgz#24dbb55f2509e2324b4a99d61f413982013ccdbe" - integrity sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg== + version "2.9.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" + integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== dependencies: debug "^3.2.6" iconv-lite "^0.4.4" sax "^1.2.4" -negotiator@0.6.2, negotiator@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +negotiator@0.6.3, negotiator@^0.6.2, negotiator@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -ng-zorro-antd@^13.0.1: - version "13.0.1" - resolved "https://registry.yarnpkg.com/ng-zorro-antd/-/ng-zorro-antd-13.0.1.tgz#9b6a98385ff87019f6893d93d5c7e4c37adaa007" - integrity sha512-ZoxzQ+VdkiUjbYeEIAvelLZPHFVfFiNE50Mkh2sCY5W/7R06DS/nVm+RRUgoy6gcZfBrpc757rDtrjrKDnkvaQ== +ng-zorro-antd@^13.3.0: + version "13.3.2" + resolved "https://registry.yarnpkg.com/ng-zorro-antd/-/ng-zorro-antd-13.3.2.tgz#04d79f884231afdfdb5759919c0fa202f431cc8f" + integrity sha512-bmpolaSevoZSVlP2nVpvi/CrFFu7hdaK/vz1k0R84db4AYOYFHcRwlAUBaWVKjWGaCHek+k1atC/pckXZqEgIA== dependencies: "@angular/cdk" "^13.0.1" "@ant-design/icons-angular" "^13.0.1" @@ -8771,23 +8773,23 @@ ng-zorro-antd@^13.0.1: tslib "^2.3.0" ngx-cookie-service@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/ngx-cookie-service/-/ngx-cookie-service-13.1.2.tgz#31dbd523e16765649661e36cb436d8f19bd9ea4b" - integrity sha512-CInzm1xjI51QA1gCJEnqfDFLnN7w/SzqM5+kGdpI+UiCeHKgYEXpKG1s7lFz4jbLDrL/jHKtrf92t7RGsm66Cg== + version "13.2.1" + resolved "https://registry.yarnpkg.com/ngx-cookie-service/-/ngx-cookie-service-13.2.1.tgz#4b62263b855c4d938f4f0be00ef0bff1c0b251be" + integrity sha512-whl7sYcSlAmPa12zoBfBeSn+9ENxRjKAzuwRPRTL6Oe/f9dtSui2lBmOgoPfSD1umiTV38JpJee9nu3WbGsgwg== dependencies: tslib "^2.0.0" ngx-json-viewer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/ngx-json-viewer/-/ngx-json-viewer-3.0.2.tgz#91e72fe41f80756181aa0d36b4bfaeac5df5b1b1" - integrity sha512-XBj0DgUDIBOeJuAczlFQIIMCaELJGoEbvjBWIXHIh2QebiB5lY6itslRkbE5TAgFn1bYK+2ToxqwspLgP4DDJg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/ngx-json-viewer/-/ngx-json-viewer-3.1.0.tgz#af8404b930f3a7850f96b7ad16ad2ab7bc541334" + integrity sha512-+m90gQ/5TJNusqUgRlXU4e7ZwAKfK5jUV/zvvZYv4uiO/yQDM37cKTQ+YPgK/bC3a+03xDssCSpi0y+DrgUUpg== dependencies: - tslib "^2.0.0" + tslib "^2.3.0" ngx-logger@^5.0.7: - version "5.0.7" - resolved "https://registry.yarnpkg.com/ngx-logger/-/ngx-logger-5.0.7.tgz#e77df90e5d34fae103f029ce9f933525a4f1bb70" - integrity sha512-K4D/zYb5yCcRpHOywMcasNodxTuJJW0FnQ49x/P38gRtA1mCdUbZWeXvdf4xuKkron3Xlz8cwfn+iEW2PRwC7g== + version "5.0.11" + resolved "https://registry.yarnpkg.com/ngx-logger/-/ngx-logger-5.0.11.tgz#cfbecfeb5c93424b74223405cec5dce63a8c8785" + integrity sha512-OP8qesmRPmu/FKGi0PYvxP4CSZMIzX+bN0UK6jtP3pOduqzCUlha91V57+tGY+lR1RNytdj2OjN2M1yfbiFtLQ== dependencies: tslib "^2.3.0" vlq "^1.0.0" @@ -8812,7 +8814,7 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -no-case@^3.0.3, no-case@^3.0.4: +no-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== @@ -8820,11 +8822,16 @@ no-case@^3.0.3, no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -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== +node-domexception@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + node-emoji@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" @@ -8839,20 +8846,27 @@ node-fetch-h2@^2.3.0: dependencies: http2-client "^1.2.5" -node-fetch@2.6.1, node-fetch@^2.6.1: +node-fetch@2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-fetch@2.6.7, node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1: + version "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: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" - integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== +node-gyp-build@^4.2.2, node-gyp-build@^4.3.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" + integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== node-gyp@^8.2.0: version "8.4.1" @@ -8873,24 +8887,19 @@ node-gyp@^8.2.0: node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-readfiles@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d" - integrity sha1-271K8SE04uY1wkXvk//Pb2BnOl0= + integrity sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA== dependencies: es6-promise "^3.2.1" -node-releases@^1.1.70: - version "1.1.70" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" - integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== - -node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== +node-releases@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" + integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== nopt@^5.0.0: version "5.0.0" @@ -8899,20 +8908,10 @@ nopt@^5.0.0: dependencies: abbrev "1" -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== dependencies: remove-trailing-separator "^1.0.1" @@ -8924,17 +8923,17 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== npm-bundled@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: npm-normalize-package-bin "^1.0.1" @@ -8950,7 +8949,7 @@ npm-normalize-package-bin@^1.0.1: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-package-arg@8.1.5, npm-package-arg@^8.1.2: +npm-package-arg@8.1.5, npm-package-arg@^8.0.1, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: version "8.1.5" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== @@ -8959,15 +8958,6 @@ npm-package-arg@8.1.5, npm-package-arg@^8.1.2: semver "^7.3.4" validate-npm-package-name "^3.0.0" -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" - integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== - dependencies: - hosted-git-info "^3.0.6" - semver "^7.0.0" - validate-npm-package-name "^3.0.0" - npm-packlist@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-3.0.0.tgz#0370df5cfc2fcc8f79b8f42b37798dd9ee32c2a9" @@ -8978,7 +8968,7 @@ npm-packlist@^3.0.0: npm-bundled "^1.1.1" npm-normalize-package-bin "^1.0.1" -npm-pick-manifest@6.1.1, npm-pick-manifest@^6.1.1: +npm-pick-manifest@6.1.1, npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== @@ -8986,33 +8976,24 @@ npm-pick-manifest@6.1.1, npm-pick-manifest@^6.1.1: npm-install-checks "^4.0.0" npm-normalize-package-bin "^1.0.1" npm-package-arg "^8.1.2" - semver "^7.3.4" - -npm-pick-manifest@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz#2befed87b0fce956790f62d32afb56d7539c022a" - integrity sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw== - dependencies: - npm-install-checks "^4.0.0" - npm-package-arg "^8.0.0" - semver "^7.0.0" + semver "^7.3.4" -npm-registry-fetch@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== +npm-registry-fetch@^12.0.0: + version "12.0.2" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-12.0.2.tgz#ae583bb3c902a60dae43675b5e33b5b1f6159f1e" + integrity sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA== dependencies: - make-fetch-happen "^9.0.1" - minipass "^3.1.3" - minipass-fetch "^1.3.0" + make-fetch-happen "^10.0.1" + minipass "^3.1.6" + minipass-fetch "^1.4.1" minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" + minizlib "^2.1.2" + npm-package-arg "^8.1.5" npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: path-key "^2.0.0" @@ -9024,13 +9005,13 @@ npm-run-path@^4.0.1: path-key "^3.0.0" npmlog@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.0.tgz#ba9ef39413c3d936ea91553db7be49c34ad0520c" - integrity sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q== + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== dependencies: - are-we-there-yet "^2.0.0" + are-we-there-yet "^3.0.0" console-control-strings "^1.1.0" - gauge "^4.0.0" + gauge "^4.0.3" set-blocking "^2.0.0" nth-check@^1.0.2: @@ -9040,17 +9021,10 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" -nth-check@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" - integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== - dependencies: - boolbase "^1.0.0" - nth-check@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" @@ -9062,7 +9036,50 @@ nullthrows@^1.1.1: number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + +nx@13.1.3: + version "13.1.3" + resolved "https://registry.yarnpkg.com/nx/-/nx-13.1.3.tgz#0b2db9b5bc87a47fb3a90014d2b2abb44f568851" + integrity sha512-clM0NQhQKYkqcNz2E3uYRMLwhp2L/9dBhJhQi9XBX4IAyA2gWAomhRIlLm5Xxg3g4h1xwSpP3eJ5t89VikY8Pw== + dependencies: + "@nrwl/cli" "*" + +nx@14.3.5: + version "14.3.5" + resolved "https://registry.yarnpkg.com/nx/-/nx-14.3.5.tgz#5bf0bec3275392388c83412f532a9bd6afdfe69f" + integrity sha512-EbuY7h4PsvGsSQSmSI0em2ViqxRTR/GVB8VVUZZmgqiJHv2BT+NC7VWjMhS3VGarBTGsRkwUbx7yGOdyHjBG/A== + dependencies: + "@nrwl/cli" "14.3.5" + "@nrwl/tao" "14.3.5" + "@parcel/watcher" "2.0.4" + chalk "4.1.0" + chokidar "^3.5.1" + 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 "^10.1.0" + glob "7.1.4" + ignore "^5.0.4" + js-yaml "4.1.0" + jsonc-parser "3.0.0" + minimatch "3.0.5" + npm-run-path "^4.0.1" + open "^8.4.0" + semver "7.3.4" + string-width "^4.2.3" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^3.9.0" + tslib "^2.3.0" + v8-compile-cache "2.3.0" + yargs "^17.4.0" + yargs-parser "21.0.1" oas-kit-common@^1.0.8: version "1.0.8" @@ -9071,42 +9088,42 @@ oas-kit-common@^1.0.8: dependencies: fast-safe-stringify "^2.0.7" -oas-linter@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.1.tgz#1a6d9117d146805b58e56df479861de0293b6e5b" - integrity sha512-e5G6bbq3Nrfxm+SDPR5AiZ6n2smVUmhLA1OgI2/Bl8e2ywfWsKw/yuqrwiXXiNHb1wdM/GyPMX6QjCGJODlaaA== +oas-linter@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.2.tgz#ab6a33736313490659035ca6802dc4b35d48aa1e" + integrity sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ== dependencies: "@exodus/schemasafe" "^1.0.0-rc.2" should "^13.2.1" yaml "^1.10.0" -oas-resolver@^2.5.3: - version "2.5.3" - resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.3.tgz#1e124aa4dcee6822166e06a3d392b07237f8e01b" - integrity sha512-y4gP5tabqP3YcNVHNAEJAlcqZ40Y9lxemzmXvt54evbrvuGiK5dEhuE33Rf+191TOwzlxMoIgbwMYeuOM7BwjA== +oas-resolver@^2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.6.tgz#10430569cb7daca56115c915e611ebc5515c561b" + integrity sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ== dependencies: node-fetch-h2 "^2.3.0" oas-kit-common "^1.0.8" - reftools "^1.1.7" + reftools "^1.1.9" yaml "^1.10.0" - yargs "^16.1.1" + yargs "^17.0.1" oas-schema-walker@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz#74c3cd47b70ff8e0b19adada14455b5d3ac38a22" integrity sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ== -oas-validator@^5.0.2, oas-validator@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-5.0.4.tgz#f3b094192a4637b94ce4a61c66657f4d7b523a3a" - integrity sha512-/v+5BbPXl7JuKf1bYhEGIfbJZR7zBf5QJNM2RAe1e0bsABsp35nAfeptZq0hb+9RMecGSFxmzhuvlOT0/KioiQ== +oas-validator@^5.0.2, oas-validator@^5.0.8: + version "5.0.8" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-5.0.8.tgz#387e90df7cafa2d3ffc83b5fb976052b87e73c28" + integrity sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw== dependencies: call-me-maybe "^1.0.1" oas-kit-common "^1.0.8" - oas-linter "^3.2.1" - oas-resolver "^2.5.3" + oas-linter "^3.2.2" + oas-resolver "^2.5.6" oas-schema-walker "^1.1.5" - reftools "^1.1.7" + reftools "^1.1.9" should "^13.2.1" yaml "^1.10.0" @@ -9118,14 +9135,19 @@ oauth-sign@~0.9.0: object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== -object-inspect@^1.8.0, object-inspect@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== +object-inspect@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" + integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== -object-is@^1.0.1: +object-inspect@^1.12.0, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-is@^1.0.1, object-is@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== @@ -9133,25 +9155,12 @@ object-is@^1.0.1: call-bind "^1.0.2" define-properties "^1.1.3" -object-is@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" - integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -object-keys@^1.0.12, object-keys@^1.1.1: +object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-path@^0.11.4: - version "0.11.8" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.8.tgz#ed002c02bbdd0070b78a27455e8ae01fc14d4742" - integrity sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA== - -object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: +object.assign@^4.1.0, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -9162,33 +9171,40 @@ object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: object-keys "^1.1.1" object.getownpropertydescriptors@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" - integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== + version "2.1.4" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" + integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== dependencies: + array.prototype.reduce "^1.0.4" call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" + define-properties "^1.1.4" + es-abstract "^1.20.1" -object.values@^1.1.0, object.values@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" - integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== +object.values@^1.1.0, object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - has "^1.0.3" + es-abstract "^1.19.1" obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== dependencies: ee-first "1.1.1" @@ -9200,14 +9216,14 @@ on-headers@~1.0.2: once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== dependencies: mimic-fn "^1.0.0" @@ -9226,7 +9242,16 @@ open@7.3.0: is-docker "^2.0.0" is-wsl "^2.1.1" -open@8.4.0, open@^8.0.9: +open@8.2.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" + integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +open@8.4.0, open@^8.0.9, open@^8.4.0: version "8.4.0" resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== @@ -9311,7 +9336,7 @@ ora@5.1.0: strip-ansi "^6.0.0" wcwidth "^1.0.1" -ora@5.4.1, ora@^5.4.1: +ora@5.4.1, ora@^5.1.0, ora@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== @@ -9326,31 +9351,10 @@ ora@5.4.1, ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" -ora@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" - integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== - dependencies: - bl "^4.0.3" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - log-symbols "^4.0.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== p-any@^2.1.0: version "2.1.0" @@ -9367,19 +9371,19 @@ p-cancelable@^1.0.0: integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== p-cancelable@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" - integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-is-promise@^2.1.0: version "2.1.0" @@ -9393,6 +9397,13 @@ p-limit@3.0.2: dependencies: p-try "^2.0.0" +p-limit@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -9410,7 +9421,7 @@ p-limit@^2.2.0: p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" @@ -9434,11 +9445,11 @@ p-map@^4.0.0: aggregate-error "^3.0.0" p-retry@^4.5.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.1.tgz#8fcddd5cdf7a67a0911a9cf2ef0e5df7f602316c" - integrity sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA== + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: - "@types/retry" "^0.12.0" + "@types/retry" "0.12.0" retry "^0.13.1" p-some@^4.0.0: @@ -9452,7 +9463,7 @@ p-some@^4.0.0: p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== p-try@^2.0.0: version "2.2.0" @@ -9469,10 +9480,10 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" -pacote@12.0.2: - version "12.0.2" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-12.0.2.tgz#14ae30a81fe62ec4fc18c071150e6763e932527c" - integrity sha512-Ar3mhjcxhMzk+OVZ8pbnXdb0l8+pimvlsqBGRNkble2NVgyqOGE3yrCGi/lAYq7E7NRDMz89R1Wx5HIMCGgeYg== +pacote@12.0.3: + version "12.0.3" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-12.0.3.tgz#b6f25868deb810e7e0ddf001be88da2bcaca57c7" + integrity sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow== dependencies: "@npmcli/git" "^2.1.0" "@npmcli/installed-package-contents" "^1.0.6" @@ -9487,7 +9498,7 @@ pacote@12.0.2: npm-package-arg "^8.0.1" npm-packlist "^3.0.0" npm-pick-manifest "^6.0.0" - npm-registry-fetch "^11.0.0" + npm-registry-fetch "^12.0.0" promise-retry "^2.0.1" read-package-json-fast "^2.0.1" rimraf "^3.0.2" @@ -9499,14 +9510,6 @@ pako@^1.0.3, pako@~1.0.2: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -param-case@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" - integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== - dependencies: - dot-case "^3.0.3" - tslib "^1.10.0" - param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -9525,7 +9528,7 @@ parent-module@^1.0.0: parse-filepath@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" - integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= + integrity sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q== dependencies: is-absolute "^1.0.0" map-cache "^0.2.0" @@ -9536,17 +9539,10 @@ parse-github-url@1.0.2: resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" @@ -9603,14 +9599,6 @@ parseurl@~1.3.2, parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -pascal-case@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" - integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== - dependencies: - no-case "^3.0.3" - tslib "^1.10.0" - pascal-case@^3.1.1, pascal-case@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" @@ -9656,7 +9644,7 @@ path-case@^3.0.4: path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" @@ -9666,24 +9654,24 @@ path-exists@^4.0.0: path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6, path-parse@^1.0.7: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -9691,26 +9679,19 @@ path-parse@^1.0.6, path-parse@^1.0.7: path-root-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + integrity sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ== path-root@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + integrity sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg== dependencies: path-root-regex "^0.1.0" path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== path-type@^4.0.0: version "4.0.0" @@ -9720,24 +9701,14 @@ path-type@^4.0.0: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -picomatch@^2.2.3: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -9745,7 +9716,7 @@ picomatch@^2.2.3: pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pify@^4.0.1: version "4.0.1" @@ -9755,19 +9726,19 @@ pify@^4.0.1: pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== -piscina@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/piscina/-/piscina-3.1.0.tgz#2333636865b6cb69c5a370bbc499a98cabcf3e04" - integrity sha512-KTW4sjsCD34MHrUbx9eAAbuUSpVj407hQSgk/6Epkg0pbRBmv4a3UX7Sr8wxm9xYqQLnsN4mFOjqGDzHAdgKQg== +piscina@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/piscina/-/piscina-3.2.0.tgz#f5a1dde0c05567775690cccefe59d9223924d154" + integrity sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA== dependencies: eventemitter-asyncresource "^1.0.0" hdr-histogram-js "^2.0.1" @@ -9775,13 +9746,6 @@ piscina@3.1.0: optionalDependencies: nice-napi "^1.0.2" -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - pkg-dir@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -9804,86 +9768,89 @@ portfinder@^1.0.28: mkdirp "^0.5.5" postcss-attribute-case-insensitive@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.0.tgz#39cbf6babf3ded1e4abf37d09d6eda21c644105c" - integrity sha512-b4g9eagFGq9T5SWX4+USfVyjIb3liPnjhHHRMP7FMB2kFVpYyfEscV0wP3eaXhKlcHKUut8lt5BGoeylWA/dBQ== + version "5.0.1" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.1.tgz#86d323c77ab8896ed90500071c2c8329fba64fda" + integrity sha512-wrt2VndqSLJpyBRNz9OmJcgnhI9MaongeWgapdBuUMu2a/KNJ8SENesG4SdiTnQwGO9b1VKbTWYAfCPeokLqZQ== dependencies: - postcss-selector-parser "^6.0.2" + postcss-selector-parser "^6.0.10" postcss-color-functional-notation@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.1.tgz#a25e9e1855e14d04319222a689f120b3240d39e0" - integrity sha512-62OBIXCjRXpQZcFOYIXwXBlpAVWrYk8ek1rcjvMING4Q2cf0ipyN9qT+BhHA6HmftGSEnFQu2qgKO3gMscl3Rw== + version "4.2.3" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.3.tgz#23c9d73c76113b75473edcf66f443c6f1872bd0f" + integrity sha512-5fbr6FzFzjwHXKsVnkmEYrJYG8VNNzvD1tAXaPPWR97S6rhKI5uh2yOfV5TAzhDkZoq4h+chxEplFDc8GeyFtw== dependencies: postcss-value-parser "^4.2.0" postcss-color-hex-alpha@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.2.tgz#7a248b006dd47bd83063f662352d31fd982f74ec" - integrity sha512-gyx8RgqSmGVK156NAdKcsfkY3KPGHhKqvHTL3hhveFrBBToguKFzhyiuk3cljH6L4fJ0Kv+JENuPXs1Wij27Zw== + version "8.0.4" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" + integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== dependencies: postcss-value-parser "^4.2.0" postcss-color-rebeccapurple@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.0.2.tgz#5d397039424a58a9ca628762eb0b88a61a66e079" - integrity sha512-SFc3MaocHaQ6k3oZaFwH8io6MdypkUtEy/eXzXEB1vEQlO3S3oDc/FSZA8AsS04Z25RirQhlDlHLh3dn7XewWw== + version "7.1.0" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.0.tgz#a2fe1d7be13d21ea01dc7c2363b637cc83a9eb6e" + integrity sha512-1jtE5AKnZcKq4pjOrltFHcbEM2/IvtbD1OdhZ/wqds18//bh0UmQkffcCkzDJU+/vGodfIsVQeKn+45CJvX9Bw== dependencies: postcss-value-parser "^4.2.0" postcss-custom-media@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.0.tgz#1be6aff8be7dc9bf1fe014bde3b71b92bb4552f1" - integrity sha512-FvO2GzMUaTN0t1fBULDeIvxr5IvbDXcIatt6pnJghc736nqNgsGao5NT+5+WVLAQiTt6Cb3YUms0jiPaXhL//g== + version "8.0.2" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" + integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== + dependencies: + postcss-value-parser "^4.2.0" postcss-custom-properties@^12.1.2: - version "12.1.3" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.3.tgz#8e37651c7188e72e6762eeae8db39755e84d3a64" - integrity sha512-rtu3otIeY532PnEuuBrIIe+N+pcdbX/7JMZfrcL09wc78YayrHw5E8UkDfvnlOhEUrI4ptCuzXQfj+Or6spbGA== + version "12.1.8" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz#aa003e1885c5bd28e2e32496cd597e389ca889e4" + integrity sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA== dependencies: postcss-value-parser "^4.2.0" postcss-custom-selectors@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.0.tgz#022839e41fbf71c47ae6e316cb0e6213012df5ef" - integrity sha512-/1iyBhz/W8jUepjGyu7V1OPcGbc636snN1yXEQCinb6Bwt7KxsiU7/bLQlp8GwAXzCh7cobBU5odNn/2zQWR8Q== + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" + integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== dependencies: postcss-selector-parser "^6.0.4" postcss-dir-pseudo-class@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.3.tgz#febfe305e75267913a53bf5094c7679f5cfa9b55" - integrity sha512-qiPm+CNAlgXiMf0J5IbBBEXA9l/Q5HGsNGkL3znIwT2ZFRLGY9U2fTUpa4lqCUXQOxaLimpacHeQC80BD2qbDw== + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.4.tgz#9afe49ea631f0cb36fa0076e7c2feb4e7e3f049c" + integrity sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw== dependencies: - postcss-selector-parser "^6.0.8" + postcss-selector-parser "^6.0.9" postcss-double-position-gradients@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.0.4.tgz#2484b9785ef3ba81b0f03a279c52ec58fc5344c2" - integrity sha512-qz+s5vhKJlsHw8HjSs+HVk2QGFdRyC68KGRQGX3i+GcnUjhWhXQEmCXW6siOJkZ1giu0ddPwSO6I6JdVVVPoog== + version "3.1.1" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.1.tgz#a12cfdb7d11fa1a99ccecc747f0c19718fb37152" + integrity sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ== dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" postcss-env-function@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.4.tgz#4e85359ca4fcdde4ec4b73752a41de818dbe91cc" - integrity sha512-0ltahRTPtXSIlEZFv7zIvdEib7HN0ZbUQxrxIKn8KbiRyhALo854I/CggU5lyZe6ZBvSTJ6Al2vkZecI2OhneQ== + version "4.0.6" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" + integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== dependencies: postcss-value-parser "^4.2.0" postcss-focus-visible@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.3.tgz#14635b71a6b9140f488f11f26cbc9965a13f6843" - integrity sha512-ozOsg+L1U8S+rxSHnJJiET6dNLyADcPHhEarhhtCI9DBLGOPG/2i4ddVoFch9LzrBgb8uDaaRI4nuid2OM82ZA== + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== dependencies: - postcss-selector-parser "^6.0.8" + postcss-selector-parser "^6.0.9" postcss-focus-within@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.3.tgz#0b0bf425f14a646bbfd973b463e2d20d85a3a841" - integrity sha512-fk9y2uFS6/Kpp7/A9Hz9Z4rlFQ8+tzgBcQCXAFSrXFGAbKx+4ZZOmmfHuYjCOMegPWoz0pnC6fNzi8j7Xyqp5Q== + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== dependencies: - postcss-selector-parser "^6.0.8" + postcss-selector-parser "^6.0.9" postcss-font-variant@^5.0.0: version "5.0.0" @@ -9891,14 +9858,14 @@ postcss-font-variant@^5.0.0: integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== postcss-gap-properties@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.2.tgz#562fbf43a6a721565b3ca0e01008690991d2f726" - integrity sha512-EaMy/pbxtQnKDsnbEjdqlkCkROTQZzolcLKgIE+3b7EuJfJydH55cZeHfm+MtIezXRqhR80VKgaztO/vHq94Fw== + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.3.tgz#6401bb2f67d9cf255d677042928a70a915e6ba60" + integrity sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ== postcss-image-set-function@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.4.tgz#ce91579ab2c1386d412ff5cd5e733c474b1f75ee" - integrity sha512-BlEo9gSTj66lXjRNByvkMK9dEdEGFXRfGjKRi9fo8s0/P3oEk74cAoonl/utiM50E2OPVb/XSu+lWvdW4KtE/Q== + version "4.0.6" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.6.tgz#bcff2794efae778c09441498f40e0c77374870a9" + integrity sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A== dependencies: postcss-value-parser "^4.2.0" @@ -9917,10 +9884,11 @@ postcss-initial@^4.0.1: integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== postcss-lab-function@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.0.3.tgz#633745b324afbcd5881da85fe2cef58b17487536" - integrity sha512-MH4tymWmefdZQ7uVG/4icfLjAQmH6o2NRYyVh2mKoB4RXJp9PjsyhZwhH4ouaCQHvg+qJVj3RzeAR1EQpIlXZA== + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.0.tgz#e054e662c6480202f5760887ec1ae0d153357123" + integrity sha512-Zb1EO9DGYfa3CP8LhINHCcTTCTLI+R3t7AX2mKsDzdgVQ/GkCpHOTgOr6HBHslP7XDdVbqgHW5vvRPMdVANQ8w== dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" postcss-loader@6.2.1: @@ -9933,9 +9901,9 @@ postcss-loader@6.2.1: semver "^7.3.5" postcss-logical@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.3.tgz#9934e0fb16af70adbd94217b24d2f315ceb5c2f0" - integrity sha512-P5NcHWYrif0vK8rgOy/T87vg0WRIj3HSknrvp1wzDbiBeoDPVmiVRmkown2eSQdpPveat/MC1ess5uhzZFVnqQ== + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== postcss-media-minmax@^5.0.0: version "5.0.0" @@ -9971,16 +9939,17 @@ postcss-modules-values@^4.0.0: icss-utils "^5.0.0" postcss-nesting@^10.1.2: - version "10.1.2" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.1.2.tgz#2e5f811b3d75602ea18a95dd445bde5297145141" - integrity sha512-dJGmgmsvpzKoVMtDMQQG/T6FSqs6kDtUDirIfl4KnjMCiY9/ETX8jdKyCd20swSRAbUYkaBKV20pxkzxoOXLqQ== + version "10.1.9" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.1.9.tgz#2aef4e68f222857dc36c0f77a69bf4a900a7e304" + integrity sha512-WlnqQecNMT7eizBpWwAnQOIk7Zr0A+OZJccEwQoTwmcIsZCVdcjT1LjXj1hBk6zR3BDLZQYsb5KZj2HquZgvTw== dependencies: - postcss-selector-parser "^6.0.8" + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" postcss-overflow-shorthand@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.2.tgz#b4e9c89728cd1e4918173dfb95936b75f78d4148" - integrity sha512-odBMVt6PTX7jOE9UNvmnLrFzA9pXS44Jd5shFGGtSHY80QCuJF+14McSy0iavZggRZ9Oj//C9vOKQmexvyEJMg== + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.3.tgz#ebcfc0483a15bbf1b27fdd9b3c10125372f4cbc2" + integrity sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg== postcss-page-break@^3.0.4: version "3.0.4" @@ -9988,9 +9957,9 @@ postcss-page-break@^3.0.4: integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== postcss-place@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.3.tgz#ca8040dfd937c7769a233a3bd6e66e139cf89e62" - integrity sha512-tDQ3m+GYoOar+KoQgj+pwPAvGHAp/Sby6vrFiyrELrMKQJ4AejL0NcS0mm296OKKYA2SRg9ism/hlT/OLhBrdQ== + version "7.0.4" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.4.tgz#eb026650b7f769ae57ca4f938c1addd6be2f62c9" + integrity sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg== dependencies: postcss-value-parser "^4.2.0" @@ -10034,11 +10003,11 @@ postcss-preset-env@7.2.3: postcss-selector-not "^5.0.0" postcss-pseudo-class-any-link@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.0.2.tgz#6284c2f970715c78fe992d2fac1130e9991585c9" - integrity sha512-CG35J1COUH7OOBgpw5O+0koOLUd5N4vUGKUqSAuIe4GiuLHWU96Pqp+UPC8QITTd12zYAFx76pV7qWT/0Aj/TA== + version "7.1.5" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.5.tgz#1233b054004c386c681c553af35f68ec03fffaa6" + integrity sha512-nSGKGScwFTaaV8Cyi27W9FegX3l3b7tmNxujxmykI/j3++cBAiq8fTUAU3ZK0s2aneN2T8cTUvKdNedzp3JIEA== dependencies: - postcss-selector-parser "^6.0.8" + postcss-selector-parser "^6.0.10" postcss-replace-overflow-wrap@^4.0.0: version "4.0.0" @@ -10052,52 +10021,20 @@ postcss-selector-not@^5.0.0: dependencies: balanced-match "^1.0.0" -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" - integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - util-deprecate "^1.0.2" - -postcss-selector-parser@^6.0.8: - version "6.0.9" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" - integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.9: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" - integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== - -postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@8.4.4: - version "8.4.4" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.4.tgz#d53d4ec6a75fd62557a66bb41978bf47ff0c2869" - integrity sha512-joU6fBsN6EIer28Lj6GDFoC/5yOZzLCfn0zHAn/MYXI7aPt4m4hK5KC5ovEZXy+lnCjmYIbQWngvju2ddyEr8Q== - dependencies: - nanoid "^3.1.30" - picocolors "^1.0.0" - source-map-js "^1.0.1" - -postcss@^7.0.35: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.2.15, postcss@^8.3.7: +postcss@8.4.5: version "8.4.5" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== @@ -10106,6 +10043,15 @@ postcss@^8.2.15, postcss@^8.3.7: picocolors "^1.0.0" source-map-js "^1.0.1" +postcss@^8.2.14, postcss@^8.2.15, postcss@^8.3.7: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -10114,14 +10060,7 @@ prelude-ls@^1.2.1: prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -prettier-linter-helpers@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== prettier@^1.19.1: version "1.19.1" @@ -10129,9 +10068,9 @@ prettier@^1.19.1: integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== prettier@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" - integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== pretty-bytes@^5.3.0: version "5.6.0" @@ -10143,15 +10082,10 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== promise-retry@^2.0.1: version "2.0.1" @@ -10168,22 +10102,22 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prompts@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== +prompts@~2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" - sisteransi "^1.0.4" + sisteransi "^1.0.5" prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" object-assign "^4.1.1" - react-is "^16.8.1" + react-is "^16.13.1" protractor@~7.0.0: version "7.0.0" @@ -10206,14 +10140,6 @@ protractor@~7.0.0: webdriver-manager "^12.1.7" yargs "^15.3.1" -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -10225,7 +10151,7 @@ proxy-addr@~2.0.7: prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== psl@^1.1.28: version "1.8.0" @@ -10240,11 +10166,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" @@ -10253,47 +10174,34 @@ punycode@^2.1.0, punycode@^2.1.1: q@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" - integrity sha1-VXBbzZPF82c1MMLCy8DCs63cKG4= + integrity sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg== q@^1.1.2, q@^1.4.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== qjobs@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@6.9.6: - version "6.9.6" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" - integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== +qs@6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== queue-microtask@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" - integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== randombytes@^2.1.0: version "2.1.0" @@ -10307,37 +10215,17 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -raw-body@2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" - integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== - dependencies: - bytes "3.1.1" - http-errors "1.8.1" - iconv-lite "0.4.24" - unpipe "1.0.0" - -raw-body@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" - integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== +raw-body@2.5.1, raw-body@^2.4.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: - bytes "3.1.0" - http-errors "1.7.3" + bytes "3.1.2" + http-errors "2.0.0" iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.8: +rc@1.2.8, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -10347,7 +10235,7 @@ rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -10355,35 +10243,18 @@ react-is@^16.7.0, react-is@^16.8.1: read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" - integrity sha1-5mTvMRYRZsl1HNvo28+GtftY93Q= + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== dependencies: pify "^2.3.0" read-package-json-fast@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz#2dcb24d9e8dd50fb322042c8c35a954e6cc7ac9e" - integrity sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ== + version "2.0.3" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== dependencies: json-parse-even-better-errors "^2.3.0" npm-normalize-package-bin "^1.0.1" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - readable-stream@^2.0.1, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -10397,7 +10268,7 @@ readable-stream@^2.0.1, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -10418,37 +10289,32 @@ reflect-metadata@^0.1.2: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== -reftools@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.7.tgz#7cb7d7c448d296717f541e878ffac67bdbd7c4ad" - integrity sha512-I+KZFkQvZjMZqVWxRezTC/kQ2kLhGRZ7C+4ARbgmb5WJbvFUlbrZ/6qlz6mb+cGcPNYib+xqL8kZlxCsSZ7Hew== +reftools@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.9.tgz#e16e19f662ccd4648605312c06d34e5da3a2b77e" + integrity sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== dependencies: - regenerate "^1.4.0" + regenerate "^1.4.2" -regenerate@^1.4.0: +regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@0.13.9: +regenerator-runtime@0.13.9, regenerator-runtime@^0.13.4: version "0.13.9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== dependencies: "@babel/runtime" "^7.8.4" @@ -10457,30 +10323,31 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" - integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0, regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== dependencies: call-bind "^1.0.2" define-properties "^1.1.3" + functions-have-names "^1.2.2" -regexpp@^3.0.0, regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" - integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" regextras@^0.7.1: version "0.7.1" @@ -10488,11 +10355,11 @@ regextras@^0.7.1: integrity sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w== registry-auth-token@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" - integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== + version "4.2.2" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.2.tgz#f02d49c3668884612ca031419491a13539e21fac" + integrity sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg== dependencies: - rc "^1.2.8" + rc "1.2.8" registry-url@^5.0.0: version "5.1.0" @@ -10501,47 +10368,26 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" -regjsgen@^0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== -regjsparser@^0.6.4: - version "0.6.7" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.7.tgz#c00164e1e6713c2e3ee641f1701c4b7aa0a7f86c" - integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ== +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== dependencies: jsesc "~0.5.0" -relay-compiler@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/relay-compiler/-/relay-compiler-10.1.0.tgz#fb4672cdbe9b54869a3a79759edd8c2d91609cbe" - integrity sha512-HPqc3N3tNgEgUH5+lTr5lnLbgnsZMt+MRiyS0uAVNhuPY2It0X1ZJG+9qdA3L9IqKFUNwVn6zTO7RArjMZbARQ== - dependencies: - "@babel/core" "^7.0.0" - "@babel/generator" "^7.5.0" - "@babel/parser" "^7.0.0" - "@babel/runtime" "^7.0.0" - "@babel/traverse" "^7.0.0" - "@babel/types" "^7.0.0" - babel-preset-fbjs "^3.3.0" - chalk "^4.0.0" - fb-watchman "^2.0.0" - fbjs "^3.0.0" - glob "^7.1.1" - immutable "~3.7.6" - nullthrows "^1.1.1" - relay-runtime "10.1.0" - signedsource "^1.0.0" - yargs "^15.3.1" - -relay-runtime@10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-10.1.0.tgz#4753bf36e95e8d862cef33608e3d98b4ed730d16" - integrity sha512-bxznLnQ1ST6APN/cFi7l0FpjbZVchWQjjhj9mAuJBuUqNNCh9uV+UTRhpQF7Q8ycsPp19LHTpVyGhYb0ustuRQ== +relay-runtime@12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-12.0.0.tgz#1e039282bdb5e0c1b9a7dc7f6b9a09d4f4ff8237" + integrity sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug== dependencies: "@babel/runtime" "^7.0.0" fbjs "^3.0.0" + invariant "^2.2.4" remedial@^1.0.7: version "1.0.8" @@ -10551,7 +10397,7 @@ remedial@^1.0.7: remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== remove-trailing-spaces@^1.0.6: version "1.0.8" @@ -10561,9 +10407,9 @@ remove-trailing-spaces@^1.0.6: replaceall@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/replaceall/-/replaceall-0.1.6.tgz#81d81ac7aeb72d7f5c4942adf2697a3220688d8e" - integrity sha1-gdgax663LX9cSUKt8ml6MiBojY4= + integrity sha512-sL26E4+8Kec7bwpRjHlQvbNZcpnGroT3PA7ywsgH6GjzxAg4IGNlNalLoRC/JmTed7cMhyDbi44pWw1kMhDxlw== -request@2.88.2, request@^2.87.0, request@^2.88.0, request@^2.88.2: +request@2.88.2, request@^2.87.0, request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -10592,7 +10438,7 @@ request@2.88.2, request@^2.87.0, request@^2.88.0, request@^2.88.2: require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" @@ -10607,7 +10453,7 @@ require-main-filename@^2.0.0: requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== resolve-from@5.0.0, resolve-from@^5.0.0: version "5.0.0" @@ -10617,60 +10463,53 @@ resolve-from@5.0.0, resolve-from@^5.0.0: resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-url-loader@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" - integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== +resolve-url-loader@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz#ee3142fb1f1e0d9db9524d539cfa166e9314f795" + integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== dependencies: adjust-sourcemap-loader "^4.0.0" convert-source-map "^1.7.0" loader-utils "^2.0.0" - postcss "^7.0.35" + postcss "^8.2.14" source-map "0.6.1" -resolve@1.20.0, resolve@^1.1.7, resolve@^1.3.2: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== +resolve@1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.14.2: - version "1.21.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" - integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== +resolve@^1.1.7, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.3.2: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: - is-core-module "^2.8.0" + is-core-module "^2.9.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== dependencies: lowercase-keys "^1.0.0" restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -10686,7 +10525,7 @@ restore-cursor@^3.1.0: retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== retry@^0.13.1: version "0.13.1" @@ -10729,18 +10568,37 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rxjs-debug@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rxjs-debug/-/rxjs-debug-1.3.0.tgz#2af654e8301dd7712ce92863f2901b5d33666bc4" + integrity sha512-wVk4L5BqZXEkGzfJtvtUS+2gGMFj0+Pjx3MJ/yWJttUvfJTwdv6mcQXcY0PPFNIOYrZclY8+OjAADYG72qhm0g== + dependencies: + tslib "^2.0.0" + +rxjs-etc@^10.6.2: + version "10.6.2" + resolved "https://registry.yarnpkg.com/rxjs-etc/-/rxjs-etc-10.6.2.tgz#c52e0867cb6702c53e12550c263c3ceab439b90d" + integrity sha512-OmXhrTsEqcIT4PX1TSf+iRsah3sjMEQ27z7aXCc96xwiKr18RWhvtxUyGnvKMBwF8AavwLXELAMKA8ImgKXeoA== + dependencies: + memoize-resolver "~1.0.0" + +rxjs-for-await@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/rxjs-for-await/-/rxjs-for-await-0.0.2.tgz#26598a1d6167147cc192172970e7eed4e620384b" + integrity sha512-IJ8R/ZCFMHOcDIqoABs82jal00VrZx8Xkgfe7TOKoaRPAW5nH/VFlG23bXpeGdrmtqI9UobFPgUKgCuFc7Lncw== + rxjs-report-usage@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/rxjs-report-usage/-/rxjs-report-usage-1.0.5.tgz#8de220b385f3f65a163e75cfcc2566b1545c9b3d" - integrity sha512-jZeg+TTkvP8kAv0tIQj3WOuIhYLi+Ig9mG8DCc+nJHQ1ObJr8IaeNPbJmXDRfHvH3MKQMBzboY4RbQ6jWt6cIg== + version "1.0.6" + resolved "https://registry.yarnpkg.com/rxjs-report-usage/-/rxjs-report-usage-1.0.6.tgz#6e06034d9e1592e8a45bee877631638e4bac2576" + integrity sha512-omv1DIv5z1kV+zDAEjaDjWSkx8w5TbFp5NZoPwUipwzYVcor/4So9ZU3bUyQ1c8lxY5Q0Es/ztWW7PGjY7to0Q== dependencies: - "@babel/parser" "~7.10.3" - "@babel/traverse" "~7.10.3" - "@babel/types" "~7.10.3" + "@babel/parser" "^7.10.3" + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" bent "~7.3.6" chalk "~4.1.0" - glob "~7.1.6" - prompts "~2.3.2" + glob "~7.2.0" + prompts "~2.4.2" rxjs-spy@^7.5.3: version "7.5.3" @@ -10754,24 +10612,17 @@ rxjs-spy@^7.5.3: rxjs-report-usage "^1.0.4" stacktrace-gps "^3.0.2" -rxjs@6.6.3, rxjs@^6.3.3, rxjs@^6.5.3, rxjs@^6.6.0: - version "6.6.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" - integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== - dependencies: - tslib "^1.9.0" - -rxjs@6.6.7, rxjs@~6.6.6: +rxjs@6.6.7, rxjs@^6.3.3, rxjs@^6.5.3, rxjs@^6.5.4, rxjs@^6.6.0: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: tslib "^1.9.0" -rxjs@^7.2.0: - version "7.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.2.tgz#11e4a3a1dfad85dbf7fb6e33cbba17668497490b" - integrity sha512-PwDt186XaL3QN5qXj/H9DGyHhP3/RYYgZZwqBv9Tv8rsAaiwFH1IsJJlcgD37J7UW5a6O67qX0KWKS3/pu0m4w== +rxjs@^7.2.0, rxjs@^7.5.5: + version "7.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" + integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== dependencies: tslib "^2.1.0" @@ -10798,13 +10649,14 @@ sass-loader@12.4.0: klona "^2.0.4" neo-async "^2.6.2" -sass@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.44.0.tgz#619aa0a2275c097f9af5e6b8fe8a95e3056430fb" - integrity sha512-0hLREbHFXGQqls/K8X+koeP+ogFRPF4ZqetVB19b7Cst9Er8cOR0rc6RU7MaI4W1JmUShd1BPgPoeqmmgMMYFw== +sass@1.49.9: + version "1.49.9" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.9.tgz#b15a189ecb0ca9e24634bae5d1ebc191809712f9" + integrity sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" saucelabs@^1.5.0: version "1.5.0" @@ -10854,7 +10706,7 @@ scuid@^1.1.0: select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: version "3.6.0" @@ -10866,86 +10718,74 @@ selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: tmp "0.0.30" xml2js "^0.4.17" -selfsigned@^1.10.11: - version "1.10.14" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.14.tgz#ee51d84d9dcecc61e07e4aba34f229ab525c1574" - integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA== +selfsigned@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.0.1.tgz#8b2df7fa56bf014d19b6007655fff209c0ef0a56" + integrity sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ== dependencies: - node-forge "^0.10.0" + node-forge "^1" semver-dsl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0" - integrity sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA= + integrity sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng== dependencies: semver "^5.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.5, semver@^7.0.0, semver@^7.3.5: +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.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" +semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== +semver@^7.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -send@0.17.2: - version "0.17.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" - integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "1.8.1" + http-errors "2.0.0" mime "1.6.0" ms "2.1.3" - on-finished "~2.3.0" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" sentence-case@^3.0.4: version "3.0.4" @@ -10966,7 +10806,7 @@ serialize-javascript@^6.0.0: serve-index@^1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== dependencies: accepts "~1.3.4" batch "0.6.1" @@ -10976,51 +10816,31 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -serve-static@1.14.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" - integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.2" + send "0.18.0" set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-immediate-shim@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -11036,7 +10856,7 @@ shallow-clone@^3.0.0: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" @@ -11050,7 +10870,7 @@ shebang-command@^2.0.0: shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" @@ -11067,7 +10887,7 @@ should-equal@^2.0.0: should-format@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" - integrity sha1-m/yPdPo5IFxT04w01xcwPidxJPE= + integrity sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q== dependencies: should-type "^1.3.0" should-type-adaptors "^1.0.1" @@ -11083,7 +10903,7 @@ should-type-adaptors@^1.0.1: should-type@^1.3.0, should-type@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" - integrity sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM= + integrity sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ== should-util@^1.0.0: version "1.0.1" @@ -11101,7 +10921,7 @@ should@^13.2.1: should-type-adaptors "^1.0.1" should-util "^1.0.0" -side-channel@^1.0.3: +side-channel@^1.0.3, side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== @@ -11110,20 +10930,15 @@ side-channel@^1.0.3: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -signal-exit@^3.0.3: - version "3.0.6" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" - integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== signedsource@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" - integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= + integrity sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww== simple-git@2.21.0: version "2.21.0" @@ -11135,15 +10950,15 @@ simple-git@2.21.0: debug "^4.1.1" sirv@^1.0.7: - version "1.0.11" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.11.tgz#81c19a29202048507d6ec0d8ba8910fda52eb5a4" - integrity sha512-SR36i3/LSWja7AJNRBz4fF/Xjpn7lQFI30tZ434dIy+bitLYSP+ZEenHg36i23V2SGEz+kqjksg0uOGZ5LPiqg== + version "1.0.19" + resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" + integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== dependencies: - "@polka/url" "^1.0.0-next.9" - mime "^2.3.1" + "@polka/url" "^1.0.0-next.20" + mrmime "^1.0.0" totalist "^1.0.0" -sisteransi@^1.0.4: +sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== @@ -11166,21 +10981,12 @@ slash@^4.0.0: slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" + integrity sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw== -smart-buffer@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" - integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== snake-case@^3.0.4: version "3.0.4" @@ -11190,10 +10996,10 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" -socket.io-adapter@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz#4d6111e4d42e9f7646e365b4f578269821f13486" - integrity sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ== +socket.io-adapter@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz#b50a4a9ecdd00c34d4c8c808224daa1a786152a6" + integrity sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg== socket.io-parser@~4.0.4: version "4.0.4" @@ -11204,62 +11010,66 @@ socket.io-parser@~4.0.4: component-emitter "~1.3.0" debug "~4.3.1" -socket.io@^4.2.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.4.1.tgz#cd6de29e277a161d176832bb24f64ee045c56ab8" - integrity sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg== +socket.io@^4.4.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.1.tgz#aa7e73f8a6ce20ee3c54b2446d321bbb6b1a9029" + integrity sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ== dependencies: accepts "~1.3.4" base64id "~2.0.0" debug "~4.3.2" - engine.io "~6.1.0" - socket.io-adapter "~2.3.3" + engine.io "~6.2.0" + socket.io-adapter "~2.4.0" socket.io-parser "~4.0.4" sockjs@^0.3.21: - version "0.3.21" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" - integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" - uuid "^3.4.0" + uuid "^8.3.2" websocket-driver "^0.7.4" socks-proxy-agent@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" - integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== + version "6.2.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz#2687a31f9d7185e38d530bef1944fe1f1496d6ce" + integrity sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ== dependencies: agent-base "^6.0.2" - debug "^4.3.1" - socks "^2.6.1" + debug "^4.3.3" + socks "^2.6.2" -socks@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" - integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== dependencies: - ip "^1.1.5" - smart-buffer "^4.1.0" + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" -source-map-js@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" - integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== +socks@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" + integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== + dependencies: + ip "^1.1.5" + smart-buffer "^4.2.0" -source-map-js@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf" - integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.0.tgz#f2a04ee2808ad01c774dea6b7d2639839f3b3049" - integrity sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw== +source-map-loader@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.1.tgz#9ae5edc7c2d42570934be4c95d1ccc6352eba52d" + integrity sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA== dependencies: abab "^2.0.5" - iconv-lite "^0.6.2" - source-map-js "^0.6.2" + iconv-lite "^0.6.3" + source-map-js "^1.0.1" source-map-resolve@^0.6.0: version "0.6.0" @@ -11269,7 +11079,7 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@0.5.21, source-map-support@~0.5.20: +source-map-support@0.5.21, source-map-support@^0.5.17, source-map-support@^0.5.5, source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -11277,14 +11087,6 @@ source-map-support@0.5.21, source-map-support@~0.5.20: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.17, source-map-support@^0.5.5, source-map-support@^0.5.6: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-support@~0.4.0: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" @@ -11295,14 +11097,14 @@ source-map-support@~0.4.0: source-map@0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" - integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= + integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA== source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@0.7.3, source-map@^0.7.3, source-map@~0.7.2: +source-map@0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -11310,27 +11112,24 @@ source-map@0.7.3, source-map@^0.7.3, source-map@~0.7.2: source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.7.3, source-map@~0.7.2: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== -sourcemap-codec@1.4.8, sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: +sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - spdx-exceptions@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== -spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: +spdx-expression-parse@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== @@ -11339,9 +11138,9 @@ spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + version "3.0.11" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== spdy-transport@^3.0.0: version "3.0.0" @@ -11366,7 +11165,7 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -sponge-case@^1.0.0: +sponge-case@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sponge-case/-/sponge-case-1.0.1.tgz#260833b86453883d974f84854cdb63aecc5aef4c" integrity sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA== @@ -11381,17 +11180,12 @@ sprintf-js@^1.1.2: sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sse-z@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/sse-z/-/sse-z-0.3.0.tgz#e215db7c303d6c4a4199d80cb63811cc28fa55b9" - integrity sha512-jfcXynl9oAOS9YJ7iqS2JMUEHOlvrRAD+54CENiWnc4xsuVLQVSgmwf7cwOTcBd/uq3XkQKBGojgvEtVXcJ/8w== + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -11410,49 +11204,61 @@ ssri@^8.0.0, ssri@^8.0.1: dependencies: minipass "^3.1.1" +ssri@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== -stackframe@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" - integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== +stackframe@^1.1.1, stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== stacktrace-gps@^3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.0.4.tgz#7688dc2fc09ffb3a13165ebe0dbcaf41bcf0c69a" - integrity sha512-qIr8x41yZVSldqdqe6jciXEaSCKw1U8XTXpjDuy0ki/apyTn/r3w9hDAAQOhZdxvsC93H+WwwEu5cq5VemzYeg== + version "3.1.2" + resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz#0c40b24a9b119b20da4525c398795338966a2fb0" + integrity sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ== dependencies: source-map "0.5.6" - stackframe "^1.1.1" + stackframe "^1.3.4" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -std-env@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.2.1.tgz#2ffa0fdc9e2263e0004c1211966e960948a40f6b" - integrity sha512-IjYQUinA3lg5re/YMlwlfhqNRTzMZMqE+pezevdcTaHceqx8ngEi1alX9nNCk9Sc81fy1fLDeQoaCzeiW1yBOQ== +std-env@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.3.0.tgz#66d4a4a4d5224242ed8e43f5d65cfa9095216eee" + integrity sha512-4qT5B45+Kjef2Z6pE0BkskzsH0GO7GrND0wGlTM1ioUe3v0dGYx9ZJH0Aro/YyA8fqQ5EyIKDRjZojJYMFTflw== dependencies: - ci-info "^1.6.0" + ci-info "^3.0.0" -streamroller@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.0.2.tgz#30418d0eee3d6c93ec897f892ed098e3a81e68b7" - integrity sha512-ur6y5S5dopOaRXBuRIZ1u6GC5bcEXHRZKgfBjfCglMhmIf+roVCECjvkEYzNQOXIN2/JPnkMPW/8B3CZoKaEPA== +streamroller@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.1.tgz#679aae10a4703acdf2740755307df0a05ad752e6" + integrity sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ== dependencies: - date-format "^4.0.3" - debug "^4.1.1" - fs-extra "^10.0.0" + date-format "^4.0.10" + debug "^4.3.4" + fs-extra "^10.1.0" -streamsearch@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" - integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== string-env-interpolation@1.0.1, string-env-interpolation@^1.0.1: version "1.0.1" @@ -11462,13 +11268,13 @@ string-env-interpolation@1.0.1, string-env-interpolation@^1.0.1: string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -11485,30 +11291,23 @@ string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" - integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" -string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" - integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" string_decoder@^1.1.1: version "1.3.0" @@ -11527,14 +11326,14 @@ string_decoder@~1.1.1: strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== dependencies: ansi-regex "^3.0.0" @@ -11545,14 +11344,7 @@ strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^6.0.1: +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -11569,19 +11361,19 @@ strip-ansi@^7.0.0: strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -11589,7 +11381,7 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== stylus-loader@6.2.0: version "6.2.0" @@ -11600,24 +11392,33 @@ stylus-loader@6.2.0: klona "^2.0.4" normalize-path "^3.0.0" -stylus@0.55.0: - version "0.55.0" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.55.0.tgz#bd404a36dd93fa87744a9dd2d2b1b8450345e5fc" - integrity sha512-MuzIIVRSbc8XxHH7FjkvWqkIcr1BvoMZoR/oFuAJDlh7VSaNJzrB4uJ38GRQa+mWjLXODAMzeDe0xi9GYbGwnw== +stylus@0.56.0: + version "0.56.0" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.56.0.tgz#13fc85c48082db483c90d2530942fe8b0be988eb" + integrity sha512-Ev3fOb4bUElwWu4F9P9WjnnaSpc8XB9OFHSFZSKMFL1CE1oM+oFXWEgAqPmmZIyhBihuqIQlFsVTypiiS9RxeA== dependencies: css "^3.0.0" - debug "~3.1.0" + debug "^4.3.2" glob "^7.1.6" - mkdirp "~1.0.4" safer-buffer "^2.1.2" sax "~1.2.4" - semver "^6.3.0" source-map "^0.7.3" +subscriptions-transport-ws@^0.9.18: + version "0.9.19" + resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz#10ca32f7e291d5ee8eb728b9c02e43c52606cdcf" + integrity sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw== + dependencies: + backo2 "^1.0.2" + eventemitter3 "^3.1.0" + iterall "^1.2.1" + symbol-observable "^1.0.4" + ws "^5.2.0 || ^6.0.0 || ^7.0.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== supports-color@^5.3.0: version "5.5.0" @@ -11646,14 +11447,15 @@ supports-preserve-symlinks-flag@^1.0.0: integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== svg-to-ts@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/svg-to-ts/-/svg-to-ts-6.0.0.tgz#3973b47a626ac23a51c9f5160aa0f7439751f704" - integrity sha512-QdznpIJfuTjP//zY007BhOYAe4ZOII1XviNgmvhgfEnl6MxTyLJWL20JgECvjGJHD+F8DqKOnt7YU7UmUFD6LQ== + version "6.0.2" + resolved "https://registry.yarnpkg.com/svg-to-ts/-/svg-to-ts-6.0.2.tgz#c2c4bb484482d43b6c4244c38add4af732fe4e71" + integrity sha512-zLmLYJ+6yyhxVT+QIJ1kT36Yr9Huf/wwAqPPVKxr/2RXcuWFNrJCdarhQo0szuIz0AtKT4hdI9rVnQljkkVZ2Q== dependencies: chalk "^3.0.0" commander "^4.0.1" cosmiconfig "^6.0.0" glob "^7.1.6" + graceful-fs "^4.2.6" lodash.camelcase "^4.3.0" lodash.kebabcase "^4.1.1" lodash.snakecase "^4.1.1" @@ -11682,36 +11484,36 @@ svgo@^1.3.2: util.promisify "~1.0.0" svgo@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.3.0.tgz#6b3af81d0cbd1e19c83f5f63cec2cb98c70b5373" - integrity sha512-fz4IKjNO6HDPgIQxu4IxwtubtbSfGEAJUq/IXyTPIkGhWck/faiiwfkvsB8LnBkKLvSoyNNIY6d13lZprJMc9Q== + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== dependencies: - "@trysound/sax" "0.1.1" - chalk "^4.1.0" - commander "^7.1.0" - css-select "^3.1.2" - css-tree "^1.1.2" + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" csso "^4.2.0" + picocolors "^1.0.0" stable "^0.1.8" swagger2openapi@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-7.0.4.tgz#63f20ecc6a57a8dde33c92cc4aeb8dc34671e1b0" - integrity sha512-MGzJU44XSXHKxvtx/NbBnP3z5s1KzN5xhqIBERoZEKfRiZ56lNUo5TGOv0dJ8n7JGeheCeU0CydfvbSOh+DaXg== + version "7.0.8" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-7.0.8.tgz#12c88d5de776cb1cbba758994930f40ad0afac59" + integrity sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g== dependencies: call-me-maybe "^1.0.1" node-fetch "^2.6.1" node-fetch-h2 "^2.3.0" node-readfiles "^0.2.0" oas-kit-common "^1.0.8" - oas-resolver "^2.5.3" + oas-resolver "^2.5.6" oas-schema-walker "^1.1.5" - oas-validator "^5.0.4" - reftools "^1.1.7" + oas-validator "^5.0.8" + reftools "^1.1.9" yaml "^1.10.0" - yargs "^16.1.1" + yargs "^17.0.1" -swap-case@^2.0.1: +swap-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-2.0.2.tgz#671aedb3c9c137e2985ef51c51f9e98445bf70d9" integrity sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw== @@ -11723,7 +11525,7 @@ symbol-observable@4.0.0, symbol-observable@^4.0.0: resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== -symbol-observable@^1.1.0: +symbol-observable@^1.0.4, symbol-observable@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== @@ -11736,25 +11538,29 @@ sync-fetch@0.3.0: buffer "^5.7.0" node-fetch "^2.6.1" -table@^6.0.4: - version "6.0.7" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" - integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== +sync-fetch@0.4.1, sync-fetch@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/sync-fetch/-/sync-fetch-0.4.1.tgz#87b8684eef2fa25c96c4683ae308473a4e5c571f" + integrity sha512-JDtyFEvnKUzt1CxRtzzsGgkBanEv8XRmLyJo0F0nGkpCR8EjYmpOJJXz8GA/SWtlPU0nAYh0+CNMNnFworGyOA== dependencies: - ajv "^7.0.2" - lodash "^4.17.20" - slice-ansi "^4.0.0" - string-width "^4.2.0" + buffer "^5.7.1" + node-fetch "^2.6.1" -tapable@^2.1.1: +tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tapable@^2.2.0: +tar-stream@~2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" - integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" tar@6.0.5: version "6.0.5" @@ -11768,19 +11574,7 @@ tar@6.0.5: mkdirp "^1.0.3" yallist "^4.0.0" -tar@^6.0.2, tar@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" - integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -tar@^6.1.2: +tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -11793,25 +11587,36 @@ tar@^6.1.2: yallist "^4.0.0" terser-webpack-plugin@^5.1.3: - version "5.3.0" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz#21641326486ecf91d8054161c816e464435bae9f" - integrity sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ== + version "5.3.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90" + integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ== dependencies: - jest-worker "^27.4.1" + "@jridgewell/trace-mapping" "^0.3.7" + jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.0" - source-map "^0.6.1" terser "^5.7.2" -terser@5.10.0, terser@^5.7.2: - version "5.10.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" - integrity sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA== +terser@5.11.0: + version "5.11.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.11.0.tgz#2da5506c02e12cd8799947f30ce9c5b760be000f" + integrity sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A== dependencies: + acorn "^8.5.0" commander "^2.20.0" source-map "~0.7.2" source-map-support "~0.5.20" +terser@^5.7.2: + version "5.14.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.1.tgz#7c95eec36436cb11cf1902cc79ac564741d19eca" + integrity sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -11824,19 +11629,24 @@ test-exclude@^6.0.0: text-table@0.2.0, text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== through@X.X.X, through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== thunky@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -title-case@^3.0.2: +tiny-lru@7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/tiny-lru/-/tiny-lru-7.0.6.tgz#b0c3cdede1e5882aa2d1ae21cb2ceccf2a331f24" + integrity sha512-zNYO0Kvgn5rXzWpL0y3RS09sMK67eGaQj9805jlK9G6pSadfriTczzLHFXa/xcW4mIRfmlB9HyQ/+SgL0V1uow== + +title-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/title-case/-/title-case-3.0.3.tgz#bc689b46f02e411f1d1e1d081f7c3deca0489982" integrity sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA== @@ -11846,11 +11656,11 @@ title-case@^3.0.2: tmp@0.0.30: version "0.0.30" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" - integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= + integrity sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w== dependencies: os-tmpdir "~1.0.1" -tmp@0.2.1, tmp@^0.2.1: +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== @@ -11867,7 +11677,7 @@ tmp@^0.0.33: to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-readable-stream@^1.0.0: version "1.0.0" @@ -11904,6 +11714,11 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + tree-kill@1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" @@ -11914,6 +11729,13 @@ ts-enum-util@^4.0.2: resolved "https://registry.yarnpkg.com/ts-enum-util/-/ts-enum-util-4.0.2.tgz#2587a6fa8e8629f3715009e5090d52df9456f7e2" integrity sha512-BB5qjvHYgYgOB/CaoA1Cy/B2QNnZ+nVBrJ15VV/AXGWx+AO83k5wgeLOJvkSLoKKavvH/M8Wj4ZbgROjsuYwzw== +ts-invariant@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.10.3.tgz#3e048ff96e91459ffca01304dbc7f61c1f642f6c" + integrity sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ== + dependencies: + tslib "^2.1.0" + ts-invariant@^0.4.0: version "0.4.4" resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" @@ -11921,17 +11743,10 @@ ts-invariant@^0.4.0: dependencies: tslib "^1.9.3" -ts-invariant@^0.9.4: - version "0.9.4" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.9.4.tgz#42ac6c791aade267dd9dc65276549df5c5d71cac" - integrity sha512-63jtX/ZSwnUNi/WhXjnK8kz4cHHpYS60AnmA6ixz17l7E12a5puCWFlNpkne5Rl0J8TBPVHpGjsj4fxs8ObVLQ== - dependencies: - tslib "^2.1.0" - ts-log@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.3.tgz#4da5640fe25a9fb52642cd32391c886721318efb" - integrity sha512-XvB+OdKSJ708Dmf9ore4Uf/q62AYDTzFcAdxc8KNML1mmAWywRFVt/dn1KYJH8Agt5UJNujfM3znU5PxgAzA2w== + version "2.2.4" + resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.4.tgz#d672cf904b33735eaba67a7395c93d45fba475b3" + integrity sha512-DEQrfv6l7IvN2jlzc/VTdZJYsWUnQNCsueYjMkC/iXoEoi5fNan6MjeDqkvhfzbmHgdz9UxDUluX3V5HdjTydQ== ts-node@^9: version "9.1.1" @@ -11956,14 +11771,14 @@ ts-node@~8.3.0: source-map-support "^0.5.6" yn "^3.0.0" -tsconfig-paths@^3.9.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" - integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== +tsconfig-paths@^3.14.1, tsconfig-paths@^3.9.0: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== dependencies: "@types/json5" "^0.0.29" json5 "^1.0.1" - minimist "^1.2.0" + minimist "^1.2.6" strip-bom "^3.0.0" tslib@2.0.2: @@ -11971,7 +11786,7 @@ tslib@2.0.2: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.2.tgz#462295631185db44b21b1ea3615b63cd1c038242" integrity sha512-wAH28hcEKwna96/UacuWaVspVLkg4x1aDM9JlzqaQTOFczCktkVAb5fmXChgandR1EraDPs2w8P+ozM+oafwxg== -tslib@2.3.1, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1: +tslib@2.3.1, tslib@~2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -11981,7 +11796,12 @@ tslib@^1.10.0, tslib@^1.13.0, tslib@^1.7.1, tslib@^1.8.1, tslib@^1.9.0, tslib@^1 resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@~2.0.1: +tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tslib@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== @@ -11991,6 +11811,11 @@ tslib@~2.1.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +tslib@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + tslint@~6.1.0: version "6.1.3" resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" @@ -12017,24 +11842,24 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" -tsutils@^3.17.1: - version "3.19.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.19.1.tgz#d8566e0c51c82f32f9c25a4d367cd62409a547a9" - integrity sha512-GEdoBf5XI324lu7ycad7s6laADfnAqCw6wLGI+knxvw9vsIYBaJfYdmeCEG3FMMUiSm3OGgNb+m6utsWf5h9Vw== +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -12043,22 +11868,22 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== type-fest@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.17, type-is@~1.6.18: +type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -12067,57 +11892,67 @@ type-is@~1.6.17, type-is@~1.6.18: mime-types "~2.1.24" typed-assert@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.8.tgz#4bf9f1ce7f3f974d09c3afd7c68d12e1391a233c" - integrity sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g== + version "1.0.9" + resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.9.tgz#8af9d4f93432c4970ec717e3006f33f135b06213" + integrity sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg== typescript@^3.7.2: - version "3.9.9" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674" - integrity sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w== + version "3.9.10" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== typescript@~4.5.5: version "4.5.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== -ua-parser-js@^0.7.18, ua-parser-js@^0.7.30: +ua-parser-js@^0.7.30: version "0.7.31" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== +undici@^5.0.0, undici@^5.1.0: + version "5.5.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.5.1.tgz#baaf25844a99eaa0b22e1ef8d205bffe587c8f43" + integrity sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw== -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== unique-filename@^1.1.1: version "1.1.1" @@ -12148,38 +11983,39 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unixify@1.0.0: +unixify@1.0.0, unixify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" - integrity sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA= + integrity sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg== dependencies: normalize-path "^2.1.1" unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unquote@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== + +update-browserslist-db@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" + integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" -upper-case-first@^2.0.1, upper-case-first@^2.0.2: +upper-case-first@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== dependencies: tslib "^2.0.3" -upper-case@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.1.tgz#6214d05e235dc817822464ccbae85822b3d8665f" - integrity sha512-laAsbea9SY5osxrv7S99vH9xAaJKrw5Qpdh4ENRLcaxipjKsiaBwiAsxfa8X5mObKNTQPsupSq0J/VIxsSJe3A== - dependencies: - tslib "^1.10.0" - -upper-case@^2.0.1, upper-case@^2.0.2: +upper-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== @@ -12196,30 +12032,14 @@ uri-js@^4.2.2: url-parse-lax@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== dependencies: prepend-http "^2.0.0" -url-parse@^1.4.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util.promisify@~1.0.0: version "1.0.1" @@ -12234,52 +12054,54 @@ util.promisify@~1.0.0: utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@8.3.2: +uuid@8.3.2, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^3.1.0, uuid@^3.3.2, uuid@^3.4.0: +uuid@^3.1.0, uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-compile-cache@^2.0.3: - version "2.2.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" - integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== +v8-compile-cache@2.3.0, v8-compile-cache@^2.0.3: + 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== valid-url@1.0.9, valid-url@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" - integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" + integrity sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA== validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== dependencies: builtins "^1.0.3" +value-or-promise@1.0.11, value-or-promise@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140" + integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg== + +value-or-promise@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.6.tgz#218aa4794aa2ee24dcf48a29aba4413ed584747f" + integrity sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg== + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -12293,7 +12115,7 @@ vlq@^1.0.0: void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" - integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== vscode-jsonrpc@6.0.0: version "6.0.0" @@ -12325,18 +12147,10 @@ vscode-uri@3.0.3: resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.3.tgz#a95c1ce2e6f41b7549f86279d19f47951e4f4d84" integrity sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA== -vue-template-compiler@^2.6.12: - version "2.6.12" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz#947ed7196744c8a5285ebe1233fe960437fcc57e" - integrity sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg== - dependencies: - de-indent "^1.0.2" - he "^1.1.0" - watchpack@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" - integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -12351,10 +12165,20 @@ wbuf@^1.1.0, wbuf@^1.7.3: wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" +web-streams-polyfill@4.0.0-beta.1: + version "4.0.0-beta.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz#3b19b9817374b7cee06d374ba7eeb3aeb80e8c95" + integrity sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ== + +web-streams-polyfill@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + webdriver-js-extender@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz#57d7a93c00db4cc8d556e4d3db4b5db0a80c3bb7" @@ -12364,9 +12188,9 @@ webdriver-js-extender@2.1.0: selenium-webdriver "^3.0.1" webdriver-manager@^12.1.7: - version "12.1.7" - resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.1.7.tgz#ed4eaee8f906b33c146e869b55e850553a1b1162" - integrity sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA== + version "12.1.8" + resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.1.8.tgz#5e70e73eaaf53a0767d5745270addafbc5905fd4" + integrity sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg== dependencies: adm-zip "^0.4.9" chalk "^1.1.1" @@ -12380,6 +12204,11 @@ webdriver-manager@^12.1.7: semver "^5.3.0" xml2js "^0.4.17" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + webpack-bundle-analyzer@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5" @@ -12395,10 +12224,10 @@ webpack-bundle-analyzer@^4.5.0: sirv "^1.0.7" ws "^7.3.1" -webpack-dev-middleware@5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.2.2.tgz#eb5193faa5479ca1086b9f7bed68b89c731bff62" - integrity sha512-DjZyYrsHhkikAFNvSNKrpnziXukU1EChFAh9j4LAm6ndPLPW8cN0KhM7T+RAiOqsQ6ABfQ8hoKIs9IWMTjov+w== +webpack-dev-middleware@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz#8fc02dba6e72e1d373eca361623d84610f27be7c" + integrity sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg== dependencies: colorette "^2.0.10" memfs "^3.2.2" @@ -12406,22 +12235,27 @@ webpack-dev-middleware@5.2.2: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-middleware@^5.2.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz#8fc02dba6e72e1d373eca361623d84610f27be7c" - integrity sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg== +webpack-dev-middleware@^5.3.0: + version "5.3.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== dependencies: colorette "^2.0.10" - memfs "^3.2.2" + memfs "^3.4.3" mime-types "^2.1.31" range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz#e8648601c440172d9b6f248d28db98bed335315a" - integrity sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg== +webpack-dev-server@4.7.3: + version "4.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz#4e995b141ff51fa499906eebc7906f6925d0beaa" + integrity sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q== dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/serve-index" "^1.9.1" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.2.2" ansi-html-community "^0.0.8" bonjour "^3.5.0" chokidar "^3.5.2" @@ -12439,13 +12273,12 @@ webpack-dev-server@4.6.0: p-retry "^4.5.0" portfinder "^1.0.28" schema-utils "^4.0.0" - selfsigned "^1.10.11" + selfsigned "^2.0.0" serve-index "^1.9.1" sockjs "^0.3.21" spdy "^4.0.2" strip-ansi "^7.0.0" - url "^0.11.0" - webpack-dev-middleware "^5.2.1" + webpack-dev-middleware "^5.3.0" ws "^8.1.0" webpack-merge@5.8.0: @@ -12456,25 +12289,25 @@ webpack-merge@5.8.0: clone-deep "^4.0.1" wildcard "^2.0.0" -webpack-sources@^3.0.0, webpack-sources@^3.2.2: +webpack-sources@^3.0.0, webpack-sources@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack-subresource-integrity@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-5.0.0.tgz#8268b9cc1a229a8f8129ca9eeb59cde52185b6b1" - integrity sha512-x9514FpLRydO+UAQ8DY4aLtCjxmdLkuQVcDFN1kGzuusREYJ1B0rzk/iIlWiL6dnvrhEGFj2+UsdxDkP8Z4UKg== +webpack-subresource-integrity@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz#8b7606b033c6ccac14e684267cb7fb1f5c2a132a" + integrity sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q== dependencies: typed-assert "^1.0.8" -webpack@5.65.0: - version "5.65.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.65.0.tgz#ed2891d9145ba1f0d318e4ea4f89c3fa18e6f9be" - integrity sha512-Q5or2o6EKs7+oKmJo7LaqZaMOlDWQse9Tm5l1WAfU/ujLGN5Pb0SqGeVkN/4bpPmEqEP5RnVhiqsOtWtUVwGRw== +webpack@5.70.0: + version "5.70.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" + integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== dependencies: - "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.50" + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" @@ -12482,12 +12315,12 @@ webpack@5.65.0: acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.8.3" + enhanced-resolve "^5.9.2" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" json-parse-better-errors "^1.0.2" loader-runner "^4.2.0" mime-types "^2.1.27" @@ -12496,7 +12329,7 @@ webpack@5.65.0: tapable "^2.1.1" terser-webpack-plugin "^5.1.3" watchpack "^2.3.1" - webpack-sources "^3.2.2" + webpack-sources "^3.2.3" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" @@ -12513,11 +12346,19 @@ websocket-extensions@>=0.1.1: integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== whatwg-fetch@^3.4.1: - version "3.5.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz#605a2cd0a7146e5db141e29d1c62ab84c0c4c868" - integrity sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A== + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" -which-boxed-primitive@^1.0.1: +which-boxed-primitive@^1.0.1, which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== @@ -12541,20 +12382,19 @@ which-collection@^1.0.1: which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== which-typed-array@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" - integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== + version "1.1.8" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f" + integrity sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw== dependencies: - available-typed-arrays "^1.0.2" - call-bind "^1.0.0" - es-abstract "^1.18.0-next.1" - foreach "^2.0.5" - function-bind "^1.1.1" - has-symbols "^1.0.1" - is-typed-array "^1.1.3" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.20.0" + for-each "^0.3.3" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.9" which@^1.2.1, which@^1.2.9: version "1.3.1" @@ -12570,7 +12410,7 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wide-align@^1.1.2: +wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== @@ -12590,7 +12430,7 @@ word-wrap@^1.2.3: wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + integrity sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" @@ -12616,22 +12456,22 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@7.4.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb" - integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ== +ws@7.4.5: + version "7.4.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" + integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== -ws@^7.3.1: - version "7.4.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd" - integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== +"ws@^5.2.0 || ^6.0.0 || ^7.0.0", ws@^7.3.1: + version "7.5.8" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.8.tgz#ac2729881ab9e7cbaf8787fe3469a48c5c7f636a" + integrity sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw== -ws@^8.1.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.0.tgz#f05e982a0a88c604080e8581576e2a063802bed6" - integrity sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ== +ws@^8.1.0, ws@^8.3.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.0.tgz#8e71c75e2f6348dbf8d78005107297056cb77769" + integrity sha512-JDAgSYQ1ksuwqfChJusw1LSJ8BizJ2e/vVu5Lxjq3YvNJNlROv1ui4i+c/kUUrPheBvQl4c5UbERhTwKa6QBJQ== ws@~8.2.3: version "8.2.3" @@ -12659,19 +12499,19 @@ xstate-angular@^0.0.2: tslib "^2.0.0" xstate@^4.30.3: - version "4.30.3" - resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.30.3.tgz#e1b81bad0bb669b4411294961f286a338d52d8f0" - integrity sha512-ccFjxRKvLq5Fap9+Cc2barHjdEqcDMLZOnHKhslGPgOknM/GKku744Hixm7PzBfQolKQqi/oLQcYm6C5GCULyg== + version "4.32.1" + resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.32.1.tgz#1a09c808a66072938861a3b4acc5b38460244b70" + integrity sha512-QYUd+3GkXZ8i6qdixnOn28bL3EvA++LONYL/EMWwKlFSh/hiLndJ8YTnz77FDs+JUXcwU7NZJg7qoezoRHc4GQ== y18n@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" - integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== -y18n@^5.0.1, y18n@^5.0.2, y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== +y18n@^5.0.1, y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^4.0.0: version "4.0.0" @@ -12684,9 +12524,19 @@ yaml-ast-parser@^0.0.43: integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== yaml@^1.10.0, yaml@^1.7.2: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" - integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@20.0.0: + version "20.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.0.0.tgz#c65a1daaa977ad63cebdd52159147b789a4e19a9" + integrity sha512-8eblPHTL7ZWRkyjIZJjnGf+TijiKJSwA24svzLRVvtgoi/RZiKa9fFQTrlx0OKLnyHSdt/enrdadji6WFfESVA== + +yargs-parser@21.0.1, yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== yargs-parser@^18.1.2: version "18.1.3" @@ -12697,14 +12547,9 @@ yargs-parser@^18.1.2: decamelize "^1.2.0" yargs-parser@^20.0.0, yargs-parser@^20.2.2: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@^21.0.0: - version "21.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.0.tgz#a485d3966be4317426dd56bdb6a30131b281dc55" - integrity sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA== + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs@16.0.3: version "16.0.3" @@ -12719,17 +12564,17 @@ yargs@16.0.3: y18n "^5.0.1" yargs-parser "^20.0.0" -yargs@16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.1.0.tgz#fc333fe4791660eace5a894b39d42f851cd48f2a" - integrity sha512-upWFJOmDdHN0syLuESuvXDmrRcWd1QafJolHskzaw79uZa7/x53gxQKiR07W59GWY1tFhhU/Th9DrtSfpS782g== +yargs@17.2.1: + version "17.2.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.2.1.tgz#e2c95b9796a0e1f7f3bf4427863b42e0418191ea" + integrity sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q== dependencies: cliui "^7.0.2" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" string-width "^4.2.0" - y18n "^5.0.2" + y18n "^5.0.5" yargs-parser "^20.2.2" yargs@^15.3.1: @@ -12762,10 +12607,10 @@ yargs@^16.1.1: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.2.1: - version "17.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.1.tgz#da56b28f32e2fd45aefb402ed9c26f42be4c07b9" - integrity sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA== +yargs@^17.0.0, yargs@^17.0.1, yargs@^17.2.1, yargs@^17.4.0: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== dependencies: cliui "^7.0.2" escalade "^3.1.1" @@ -12780,6 +12625,11 @@ yn@3.1.1, yn@^3.0.0: resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + zen-observable-ts@^0.8.21: version "0.8.21" resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" @@ -12788,10 +12638,10 @@ zen-observable-ts@^0.8.21: tslib "^1.9.3" zen-observable "^0.8.0" -zen-observable-ts@^1.2.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.3.tgz#c2f5ccebe812faf0cfcde547e6004f65b1a6d769" - integrity sha512-hc/TGiPkAWpByykMwDcem3SdUgA4We+0Qb36bItSuJC9xD0XVBZoFHYoadAomDSNf64CG8Ydj0Qb8Od8BUWz5g== +zen-observable-ts@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" + integrity sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg== dependencies: zen-observable "0.8.15" @@ -12806,8 +12656,8 @@ zone.js@~0.10.3: integrity sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg== zone.js@~0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.11.4.tgz#0f70dcf6aba80f698af5735cbb257969396e8025" - integrity sha512-DDh2Ab+A/B+9mJyajPjHFPWfYU1H+pdun4wnnk0OcQTNjem1XQSZ2CDW+rfZEUDjv5M19SBqAkjZi0x5wuB5Qw== + version "0.11.6" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.11.6.tgz#c7cacfc298fe24bb585329ca04a44d9e2e840e74" + integrity sha512-umJqFtKyZlPli669gB1gOrRE9hxUUGkZr7mo878z+NEBJZZixJkKeVYfnoLa7g25SseUDc92OZrMKKHySyJrFg== dependencies: - tslib "^2.0.0" + tslib "^2.3.0" diff --git a/server/Gemfile b/server/Gemfile index d094da8da..5b1f4cf91 100644 --- a/server/Gemfile +++ b/server/Gemfile @@ -34,7 +34,7 @@ gem 'oj', '~> 3.13.10' # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.4.4', require: false -gem 'diffy', '~> 3.4.0' +gem 'diffy', '~> 3.4.1' gem 'htmlentities', '~>4.3.4' gem 'active_storage_validations', '~> 0.9.2' diff --git a/server/Gemfile.lock b/server/Gemfile.lock index 38d26fac5..13008e0ed 100644 --- a/server/Gemfile.lock +++ b/server/Gemfile.lock @@ -127,7 +127,7 @@ GEM connection_pool (2.2.5) crass (1.0.6) diff-lcs (1.5.0) - diffy (3.4.0) + diffy (3.4.1) docile (1.4.0) e2mmap (0.1.0) ed25519 (1.3.0) @@ -209,7 +209,7 @@ GEM listen (3.7.1) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - loofah (2.17.0) + loofah (2.18.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) mail (2.7.1) @@ -228,7 +228,9 @@ GEM net-ssh (>= 2.6.5, < 7.0.0) net-ssh (6.1.0) nio4r (2.5.8) - nokogiri (1.13.6-x86_64-darwin) + nokogiri (1.13.8-arm64-darwin) + racc (~> 1.4) + nokogiri (1.13.8-x86_64-darwin) racc (~> 1.4) nokogiri (1.13.6-x86_64-linux) racc (~> 1.4) @@ -305,7 +307,7 @@ GEM rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) - rails-html-sanitizer (1.4.2) + rails-html-sanitizer (1.4.3) loofah (~> 2.3) railties (6.1.5.1) actionpack (= 6.1.5.1) @@ -440,6 +442,7 @@ GEM zeitwerk (2.5.4) PLATFORMS + arm64-darwin-21 x86_64-darwin-18 x86_64-darwin-19 x86_64-darwin-20 @@ -458,7 +461,7 @@ DEPENDENCIES capistrano-rails (~> 1.6.1) capistrano-rbenv (~> 2.2.0) capybara (>= 3.26) - diffy (~> 3.4.0) + diffy (~> 3.4.1) ed25519 elasticsearch (< 7.14) graphiql-rails (~> 1.8.0) @@ -503,4 +506,4 @@ RUBY VERSION ruby 3.0.0p0 BUNDLED WITH - 2.2.3 + 2.2.33 diff --git a/server/app/graphql/mutations/submit_assertion.rb b/server/app/graphql/mutations/submit_assertion.rb index d9d4c9861..54a70c416 100644 --- a/server/app/graphql/mutations/submit_assertion.rb +++ b/server/app/graphql/mutations/submit_assertion.rb @@ -22,7 +22,7 @@ def ready?(organization_id: nil, fields:, **kwargs) .check_input_for_errors(assertion_input_object: fields) if input_errors.any? - raise GraphQL::ExecutionError, input_errors.join(', ') + raise GraphQL::ExecutionError, input_errors.join('|') end return true diff --git a/server/app/graphql/mutations/submit_evidence_item.rb b/server/app/graphql/mutations/submit_evidence_item.rb index e68d93b0c..1d2ef9223 100644 --- a/server/app/graphql/mutations/submit_evidence_item.rb +++ b/server/app/graphql/mutations/submit_evidence_item.rb @@ -21,7 +21,7 @@ def ready?(organization_id: nil, fields:, **kwargs) input_errors = InputAdaptors::EvidenceItemInputAdaptor.check_input_for_errors(evidence_input_object: fields) if input_errors.any? - raise GraphQL::ExecutionError, input_errors.join(', ') + raise GraphQL::ExecutionError, input_errors.join('|') end return true diff --git a/server/app/graphql/mutations/suggest_assertion_revision.rb b/server/app/graphql/mutations/suggest_assertion_revision.rb index 2a45e4817..45f4d9526 100644 --- a/server/app/graphql/mutations/suggest_assertion_revision.rb +++ b/server/app/graphql/mutations/suggest_assertion_revision.rb @@ -43,7 +43,7 @@ def ready?(organization_id: nil, id:, fields:, **kwargs) .check_input_for_errors(assertion_input_object: fields) if input_errors.any? - raise GraphQL::ExecutionError, input_errors.join(', ') + raise GraphQL::ExecutionError, input_errors.join('|') end return true diff --git a/server/app/graphql/mutations/suggest_evidence_item_revision.rb b/server/app/graphql/mutations/suggest_evidence_item_revision.rb index 1731eb134..eb51e1b45 100644 --- a/server/app/graphql/mutations/suggest_evidence_item_revision.rb +++ b/server/app/graphql/mutations/suggest_evidence_item_revision.rb @@ -42,7 +42,7 @@ def ready?(organization_id: nil, id:, fields:, **kwargs) input_errors = InputAdaptors::EvidenceItemInputAdaptor.check_input_for_errors(evidence_input_object: fields) if input_errors.any? - raise GraphQL::ExecutionError, input_errors.join(', ') + raise GraphQL::ExecutionError, input_errors.join('|') end return true diff --git a/server/app/graphql/mutations/suggest_source.rb b/server/app/graphql/mutations/suggest_source.rb index a875401f7..d514a0240 100644 --- a/server/app/graphql/mutations/suggest_source.rb +++ b/server/app/graphql/mutations/suggest_source.rb @@ -48,7 +48,7 @@ def ready?(organization_id: nil, source_id:, variant_id: nil, gene_id: nil, dise end if errors.any? - raise GraphQL::ExecutionError, errors.join(', ') + raise GraphQL::ExecutionError, errors.join('|') end return true diff --git a/server/app/graphql/types/assertion_clinical_significance_type.rb b/server/app/graphql/types/assertion_clinical_significance_type.rb index b7cff0c8c..590f418d8 100644 --- a/server/app/graphql/types/assertion_clinical_significance_type.rb +++ b/server/app/graphql/types/assertion_clinical_significance_type.rb @@ -14,5 +14,7 @@ class AssertionClinicalSignificanceType < Types::BaseEnum value 'BENIGN', value: 'Benign' value 'LIKELY_BENIGN', value: 'Likely Benign' value 'UNCERTAIN_SIGNIFICANCE', value: 'Uncertain Significance' + value 'ONCOGENIC', value: 'Oncogenic' + value 'LIKELY_ONCOGENIC', value: 'Likely Oncogenic' end end diff --git a/server/app/graphql/types/assertion_type_type.rb b/server/app/graphql/types/assertion_type_type.rb index 5d479a9e3..e67350510 100644 --- a/server/app/graphql/types/assertion_type_type.rb +++ b/server/app/graphql/types/assertion_type_type.rb @@ -4,5 +4,6 @@ class AssertionTypeType < Types::BaseEnum value 'PROGNOSTIC', value: 'Prognostic' value 'PREDICTIVE', value: 'Predictive' value 'PREDISPOSING', value: 'Predisposing' + value 'ONCOGENIC', value: 'Oncogenic' end end diff --git a/server/app/graphql/types/entities/assertion_type.rb b/server/app/graphql/types/entities/assertion_type.rb index 8b0a4530c..3bd32c2c1 100644 --- a/server/app/graphql/types/entities/assertion_type.rb +++ b/server/app/graphql/types/entities/assertion_type.rb @@ -29,6 +29,7 @@ class AssertionType < Types::BaseObject field :nccn_guideline, Types::Entities::NccnGuidelineType, null: true field :nccn_guideline_version, String, null: true field :acmg_codes, [Types::Entities::AcmgCodeType], null: false + field :clingen_codes, [Types::Entities::ClingenCodeType], null: false field :amp_level, Types::AmpLevelType, null: true field :submission_event, Types::Entities::EventType, null: false field :acceptance_event, Types::Entities::EventType, null: true @@ -52,6 +53,10 @@ def acmg_codes Loaders::AssociationLoader.for(Assertion, :acmg_codes).load(object) end + def clingen_codes + Loaders::AssociationLoader.for(Assertion, :clingen_codes).load(object) + end + def variant Loaders::RecordLoader.for(Variant).load(object.variant_id) end diff --git a/server/app/graphql/types/entities/clingen_code_type.rb b/server/app/graphql/types/entities/clingen_code_type.rb new file mode 100644 index 000000000..450dc7891 --- /dev/null +++ b/server/app/graphql/types/entities/clingen_code_type.rb @@ -0,0 +1,7 @@ +module Types::Entities + class ClingenCodeType < Types::BaseObject + field :id, Int, null: false + field :code, String, null: false + field :description, String, null: false + end +end diff --git a/server/app/graphql/types/evidence_clinical_significance_type.rb b/server/app/graphql/types/evidence_clinical_significance_type.rb index 8ac9a11cf..6d82c3bcc 100644 --- a/server/app/graphql/types/evidence_clinical_significance_type.rb +++ b/server/app/graphql/types/evidence_clinical_significance_type.rb @@ -20,5 +20,8 @@ class EvidenceClinicalSignificanceType < Types::BaseEnum value 'NEOMORPHIC', value: 'Neomorphic' value 'UNKNOWN', value: 'Unknown' value 'DOMINANT_NEGATIVE', value: 'Dominant Negative' + value 'PREDISPOSITION', value: 'Predisposition' + value 'PROTECTIVENESS', value: 'Protectiveness' + value 'ONCOGENICITY', value: 'Oncogenicity' end end diff --git a/server/app/graphql/types/queries/typeahead_queries.rb b/server/app/graphql/types/queries/typeahead_queries.rb index bdabc0d09..f068e3868 100644 --- a/server/app/graphql/types/queries/typeahead_queries.rb +++ b/server/app/graphql/types/queries/typeahead_queries.rb @@ -47,6 +47,11 @@ def self.included(klass) argument :query_term, GraphQL::Types::String, required: true end + klass.field :clingen_codes_typeahead, [Types::Entities::ClingenCodeType], null: false do + description "Retrieve Clingen Code options as a typeahead" + argument :query_term, GraphQL::Types::String, required: true + end + klass.field :nccn_guidelines_typeahead, [Types::Entities::NccnGuidelineType], null: false do description "Retrieve NCCN Guideline options as a typeahead" argument :query_term, GraphQL::Types::String, required: true @@ -136,6 +141,13 @@ def acmg_codes_typeahead(query_term:) .limit(20) end + def clingen_codes_typeahead(query_term:) + ClingenCode.where('code ILIKE ?', "#{query_term}%") + .or(ClingenCode.where('description ILIKE ?', "%#{query_term}%")) + .order(:code) + .limit(20) + end + def nccn_guidelines_typeahead(query_term:) NccnGuideline.where('name ILIKE ?', "%#{query_term}%") .order(:name) diff --git a/server/app/graphql/types/revisions/assertion_fields.rb b/server/app/graphql/types/revisions/assertion_fields.rb index 0a34f5ccc..ed26e81e4 100644 --- a/server/app/graphql/types/revisions/assertion_fields.rb +++ b/server/app/graphql/types/revisions/assertion_fields.rb @@ -35,6 +35,8 @@ class AssertionFields < Types::BaseInputObject description: 'The version of the NCCN Guideline specified' argument :acmg_code_ids, [Int], required: true, description: 'List of CIViC IDs for the ACMG/AMP codes associated with this Assertion' + argument :clingen_code_ids, [Int], required: true, + description: 'List of CIViC IDs for the ClinGen/CGC/VICC codes associated with this Assertion' argument :fda_companion_test, Types::NullableValueInputType.for(GraphQL::Types::Boolean), required: true, description: 'Is an FDA companion test available that pertains to this Assertion.' argument :fda_regulatory_approval, Types::NullableValueInputType.for(GraphQL::Types::Boolean), required: true, diff --git a/server/app/models/acmg_code.rb b/server/app/models/acmg_code.rb index e38fbcd16..a9d5b1174 100644 --- a/server/app/models/acmg_code.rb +++ b/server/app/models/acmg_code.rb @@ -2,7 +2,7 @@ class AcmgCode < ActiveRecord::Base has_and_belongs_to_many :assertions def display_name - name + code end def name diff --git a/server/app/models/actions/suggest_assertion_revision.rb b/server/app/models/actions/suggest_assertion_revision.rb index 9bcc16bd3..469565ea3 100644 --- a/server/app/models/actions/suggest_assertion_revision.rb +++ b/server/app/models/actions/suggest_assertion_revision.rb @@ -17,6 +17,7 @@ def editable_fields :evidence_item_ids, :nccn_guideline_id, :acmg_code_ids, + :clingen_code_ids, :fda_companion_test, :fda_regulatory_approval, ] diff --git a/server/app/models/assertion.rb b/server/app/models/assertion.rb index bd64733dc..86a4972c8 100644 --- a/server/app/models/assertion.rb +++ b/server/app/models/assertion.rb @@ -14,11 +14,12 @@ class Assertion < ActiveRecord::Base belongs_to :disease belongs_to :nccn_guideline, optional: true has_and_belongs_to_many :acmg_codes + has_and_belongs_to_many :clingen_codes has_and_belongs_to_many :phenotypes has_many :comment_mentions, foreign_key: :comment_id, class_name: 'EntityMention' enum amp_level: Constants::AMP_LEVELS - enum evidence_type: Constants::ASSERTION_TYPES + enum evidence_type: Constants::ASSERTION_TYPES, _suffix: true enum evidence_direction: Constants::EVIDENCE_DIRECTIONS, _suffix: true enum clinical_significance: Constants::CLINICAL_SIGNIFICANCES enum drug_interaction_type: Constants::DRUG_INTERACTION_TYPES diff --git a/server/app/models/clingen_code.rb b/server/app/models/clingen_code.rb new file mode 100644 index 000000000..19e745bc5 --- /dev/null +++ b/server/app/models/clingen_code.rb @@ -0,0 +1,11 @@ +class ClingenCode < ApplicationRecord + has_and_belongs_to_many :assertions + + def display_name + code + end + + def name + code + end +end diff --git a/server/app/models/constants.rb b/server/app/models/constants.rb index c9c173eb0..cca5b2c17 100644 --- a/server/app/models/constants.rb +++ b/server/app/models/constants.rb @@ -12,7 +12,7 @@ module Constants GA_TRACKING_ID='UA-83153043-1' EVIDENCE_TYPES = [:Diagnostic, :Prognostic, :Predictive, :Predisposing, :Functional, :Oncogenic] - ASSERTION_TYPES = [:Diagnostic, :Prognostic, :Predictive, :Predisposing] + ASSERTION_TYPES = [:Diagnostic, :Prognostic, :Predictive, :Predisposing, :Oncogenic] EVIDENCE_LEVELS = [:A, :B, :C, :D, :E] @@ -43,6 +43,11 @@ module Constants 'Neomorphic', 'Unknown', 'Dominant Negative', + 'Oncogenic', + 'Likely Oncogenic', + 'Predisposition', + 'Protectiveness', + 'Oncogenicity' ] DRUG_INTERACTION_TYPES = ['Combination', 'Sequential', 'Substitutes'] diff --git a/server/app/models/evidence_item.rb b/server/app/models/evidence_item.rb index f2ff61669..93d52943b 100644 --- a/server/app/models/evidence_item.rb +++ b/server/app/models/evidence_item.rb @@ -15,7 +15,7 @@ class EvidenceItem < ActiveRecord::Base has_and_belongs_to_many :assertions has_many :comment_mentions, foreign_key: :comment_id, class_name: 'EntityMention' - enum evidence_type: Constants::EVIDENCE_TYPES + enum evidence_type: Constants::EVIDENCE_TYPES, _suffix: true enum evidence_level: Constants::EVIDENCE_LEVELS enum evidence_direction: Constants::EVIDENCE_DIRECTIONS, _suffix: true #TODO make this an enum: diff --git a/server/app/models/input_adaptors/assertion_input_adaptor.rb b/server/app/models/input_adaptors/assertion_input_adaptor.rb index 57e2ec259..8605dd34f 100644 --- a/server/app/models/input_adaptors/assertion_input_adaptor.rb +++ b/server/app/models/input_adaptors/assertion_input_adaptor.rb @@ -25,6 +25,7 @@ def perform nccn_guideline_id: input.nccn_guideline_id, nccn_guideline_version: input.nccn_guideline_version, acmg_code_ids: input.acmg_code_ids, + clingen_code_ids: input.clingen_code_ids, fda_companion_test: input.fda_companion_test, fda_regulatory_approval: input.fda_regulatory_approval ) @@ -44,9 +45,21 @@ def self.check_input_for_errors(assertion_input_object:) errors << "Provided drug ids: #{fields.drug_ids.join(', ')} but only #{existing_drug_ids.join(', ')} exist." end - existing_eids = EvidenceItem.where(id: fields.evidence_item_ids).pluck(:id) + existing_eids = EvidenceItem.where(id: fields.evidence_item_ids) if existing_eids.size != fields.evidence_item_ids.size - errors << "Provided evidence item ids: #{fields.evidence_item_ids.join(', ')} but only #{existing_eids.join(', ')} exist." + errors << "Provided evidence item ids: #{fields.evidence_item_ids.join(', ')} but only #{existing_eids.map(&:id).join(', ')} exist." + end + + invalid_eid = false + existing_eids.each do |eid| + unless eid.valid? + invalid_eid = true + errors << "EID#{eid.id} Invalid: #{eid.errors.values.join(", ")}" + end + end + + if invalid_eid + errors << "Please revise Evidence Items to put them in a valid state before including them in an Assertion." end if fields.disease_id && !Disease.where(id: fields.disease_id).exists? @@ -62,6 +75,11 @@ def self.check_input_for_errors(assertion_input_object:) errors << "Provided ACMG code ids: #{fields.acmg_code_ids.join(', ')} but only #{existing_acmg_ids.join(', ')} exist." end + existing_clingen_ids = ClingenCode.where(id: fields.clingen_code_ids).pluck(:id) + if existing_clingen_ids.size != fields.clingen_code_ids.size + errors << "Provided ClinGen code ids: #{fields.clingen_code_ids.join(', ')} but only #{existing_clingen_ids.join(', ')} exist." + end + if !Variant.where(id: fields.variant_id).exists? errors << "Provided variant id: #{fields.variant_id} is not found." end diff --git a/server/app/validators/assertion_validator.rb b/server/app/validators/assertion_validator.rb index 3785f7008..1b13a2f97 100644 --- a/server/app/validators/assertion_validator.rb +++ b/server/app/validators/assertion_validator.rb @@ -39,6 +39,10 @@ def validate(record) record.errors.add :acmg_code_ids, "Assertions of type #{record.evidence_type} may not have ACMG codes attached." end + if !validator[:clingen_codes] && record.clingen_code_ids.size > 0 + record.errors.add :acmg_code_ids, "Assertions of type #{record.evidence_type} may not have ClinGen/CGC/VICC codes attached." + end + if !validator[:amp_level] && record.amp_level.present? record.errors.add :amp_level, "Assertions of type #{record.evidence_type} may not have an AMP/ASCO/CAP level attached." end @@ -70,6 +74,7 @@ def valid_types drug: true, acmg_codes: false, amp_level: true, + clingen_codes: false, allow_regulatory_approval: true, }, 'Diagnostic' => { @@ -79,6 +84,7 @@ def valid_types drug: false, acmg_codes: false, amp_level: true, + clingen_codes: false, allow_regulatory_approval: false, }, 'Prognostic' => { @@ -88,6 +94,7 @@ def valid_types drug: false, acmg_codes: false, amp_level: true, + clingen_codes: false, allow_regulatory_approval: false, }, 'Predisposing' => { @@ -97,6 +104,17 @@ def valid_types drug: false, acmg_codes: true, amp_level: false, + clingen_codes: false, + allow_regulatory_approval: false, + }, + 'Oncogenic' => { + clinical_significance: ['Oncogenic', 'Likely Oncogenic', 'Uncertain Significance', 'Likely Benign', 'Benign'], + evidence_direction: ['Supports', 'Does Not Support'], + disease: true, + drug: false, + acmg_codes: false, + amp_level: false, + clingen_codes: true, allow_regulatory_approval: false, }, } diff --git a/server/app/validators/evidence_item_validator.rb b/server/app/validators/evidence_item_validator.rb index 26ced028c..a5f3eaf98 100644 --- a/server/app/validators/evidence_item_validator.rb +++ b/server/app/validators/evidence_item_validator.rb @@ -57,14 +57,14 @@ def valid_types drug: false }, 'Predisposing' => { - clinical_significance: ['N/A'], - evidence_direction: ['N/A'], + clinical_significance: ['Predisposition', 'Protectiveness'], + evidence_direction: ['Supports', 'Does Not Support'], disease: true, drug: false }, 'Oncogenic' => { - clinical_significance: ['N/A'], - evidence_direction: ['N/A'], + clinical_significance: ['Oncogenicity', 'Protectiveness'], + evidence_direction: ['Supports', 'Does Not Support'], disease: true, drug: false }, diff --git a/server/db/migrate/20220706235555_add_clingen_codes.rb b/server/db/migrate/20220706235555_add_clingen_codes.rb new file mode 100644 index 000000000..9816e8d05 --- /dev/null +++ b/server/db/migrate/20220706235555_add_clingen_codes.rb @@ -0,0 +1,43 @@ +class AddClingenCodes < ActiveRecord::Migration[6.1] + def change + create_table :clingen_codes do |t| + t.text :code + t.text :description + end + add_index :clingen_codes, :code + add_index :clingen_codes, :description + + create_join_table :assertions, :clingen_codes do |t| + t.timestamps + end + add_index :assertions_clingen_codes, [:clingen_code_id, :assertion_id], name: 'idx_clingencodes_assertions' + add_index :assertions_clingen_codes, :assertion_id + add_foreign_key :assertions_clingen_codes, :clingen_codes + add_foreign_key :assertions_clingen_codes, :assertions + + + codes = [ + ['OVS1','Null variant in a tumor suppressor gene'], + ['OS1', 'Same amino acid change as a previously established oncogenic variant'], + ['OS2', 'In vitro or in vivo functional studies, supportive of an oncogenic effect'], + ['OS3', 'In cancerhotspots.org with at least 50 samples with same amino acid position, and the same amino acid change count in at least 10 samples.'], + ['OM1', 'Located in a critical and well-established part of a functional domain'], + ['OM2', 'In-frame deletions/insertions in a known oncogene or tumor suppressor or stop-loss in tumor suppressor'], + ['OM3', 'Missense variant at an amino acid residue where different missense variant determined oncogenic'], + ['OM4', 'In cancerhotspots.org with less than 50 samples with same amino acid position, and the same amino acid change count in at least 10 samples'], + ['OP1', 'computational evidence support an oncogenic effect of a variant'], + ['OP2', 'Somatic variant in a gene in a malignancy with a single genetic etiology.'], + ['OP3', 'Located in cancerhotspots.org and the amino acid change count is below 10'], + ['OP4', 'Absent from controls (or extremely low frequency) in gnomAD'], + ['SBVS1', 'Minor allele frequency is >5% in gnomAD in any of 5 of general populations'], + ['SBS1', 'Minor allele frequency is >1% in gnomAD in any of 5 of general populations'], + ['SBS2', 'In vitro or in vivo functional studies, supportive of no oncogenic effect'], + ['SBP1', 'computational evidence does not support an oncogenic effect of a variant'], + ['SBP2', 'A synonymous variant for which splicing prediction algorithms predict no effect'], + ] + + codes.each do |(code, desc)| + ClingenCode.create!(code: code, description: desc) + end + end +end diff --git a/server/db/schema.rb b/server/db/schema.rb index 27e388112..2852833ff 100644 --- a/server/db/schema.rb +++ b/server/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_05_11_200531) do +ActiveRecord::Schema.define(version: 2022_07_06_235555) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -106,6 +106,15 @@ t.index ["variant_origin"], name: "index_assertions_on_variant_origin" end + create_table "assertions_clingen_codes", id: false, force: :cascade do |t| + t.bigint "assertion_id", null: false + t.bigint "clingen_code_id", null: false + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["assertion_id"], name: "index_assertions_clingen_codes_on_assertion_id" + t.index ["clingen_code_id", "assertion_id"], name: "idx_clingencodes_assertions" + end + create_table "assertions_drugs", id: false, force: :cascade do |t| t.integer "assertion_id", null: false t.integer "drug_id", null: false @@ -208,6 +217,13 @@ t.index ["name"], name: "index_badges_on_name" end + create_table "clingen_codes", force: :cascade do |t| + t.text "code" + t.text "description" + t.index ["code"], name: "index_clingen_codes_on_code" + t.index ["description"], name: "index_clingen_codes_on_description" + end + create_table "clinical_trials", id: :serial, force: :cascade do |t| t.text "nct_id" t.text "name" @@ -812,6 +828,8 @@ add_foreign_key "active_storage_attachments", "active_storage_blobs", column: "blob_id" add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id" add_foreign_key "assertions", "nccn_guidelines" + add_foreign_key "assertions_clingen_codes", "assertions" + add_foreign_key "assertions_clingen_codes", "clingen_codes" add_foreign_key "assertions_drugs", "assertions" add_foreign_key "assertions_drugs", "drugs" add_foreign_key "assertions_evidence_items", "assertions" @@ -968,6 +986,73 @@ SQL add_index "gene_browse_table_rows", ["id"], name: "index_gene_browse_table_rows_on_id", unique: true +<<<<<<< HEAD +======= + create_view "disease_browse_table_rows", materialized: true, sql_definition: <<-SQL + SELECT diseases.id, + diseases.name, + diseases.display_name, + diseases.doid, + array_agg(DISTINCT genes.name) AS gene_names, + count(DISTINCT evidence_items.id) AS evidence_item_count, + count(DISTINCT variants.id) AS variant_count, + count(DISTINCT assertions.id) AS assertion_count, + count(DISTINCT genes.id) AS gene_count + FROM (((((diseases + JOIN evidence_items ON ((diseases.id = evidence_items.disease_id))) + LEFT JOIN assertions_evidence_items ON ((assertions_evidence_items.evidence_item_id = evidence_items.id))) + LEFT JOIN assertions ON ((assertions_evidence_items.assertion_id = assertions.id))) + JOIN variants ON ((variants.id = evidence_items.variant_id))) + JOIN genes ON ((genes.id = variants.gene_id))) + WHERE ((evidence_items.status)::text <> 'rejected'::text) + GROUP BY diseases.id, diseases.name, diseases.doid; + SQL + add_index "disease_browse_table_rows", ["id"], name: "index_disease_browse_table_rows_on_id", unique: true + + create_view "evidence_items_by_statuses", sql_definition: <<-SQL + SELECT mp.id AS molecular_profile_id, + sum( + CASE + WHEN ((ei.status)::text = 'accepted'::text) THEN 1 + ELSE 0 + END) AS accepted_count, + sum( + CASE + WHEN ((ei.status)::text = 'rejected'::text) THEN 1 + ELSE 0 + END) AS rejected_count, + sum( + CASE + WHEN ((ei.status)::text = 'submitted'::text) THEN 1 + ELSE 0 + END) AS submitted_count + FROM (molecular_profiles mp + JOIN evidence_items ei ON (((mp.id = ei.molecular_profile_id) AND (ei.deleted = false)))) + GROUP BY mp.id; + SQL + create_view "source_browse_table_rows", materialized: true, sql_definition: <<-SQL + SELECT sources.id, + sources.source_type, + sources.citation_id, + array_agg(DISTINCT concat(authors.last_name, ', ', authors.fore_name)) FILTER (WHERE ((authors.fore_name <> ''::text) OR (authors.last_name <> ''::text))) AS authors, + sources.publication_year, + sources.journal, + sources.title, + sources.description, + count(DISTINCT evidence_items.id) AS evidence_item_count, + count(DISTINCT source_suggestions.id) AS source_suggestion_count + FROM ((((sources + LEFT JOIN authors_sources ON ((sources.id = authors_sources.source_id))) + LEFT JOIN authors ON ((authors.id = authors_sources.author_id))) + LEFT JOIN evidence_items ON ((evidence_items.source_id = sources.id))) + LEFT JOIN source_suggestions ON ((source_suggestions.source_id = sources.id))) + WHERE (((evidence_items.status)::text <> 'rejected'::text) OR ((source_suggestions.status = 'new'::text) OR (source_suggestions.status IS NULL))) + GROUP BY sources.id, sources.source_type, sources.publication_year, sources.journal, sources.title + HAVING ((count(DISTINCT evidence_items.id) > 0) OR (count(DISTINCT evidence_items.id) > 0)); + SQL + add_index "source_browse_table_rows", ["id"], name: "index_source_browse_table_rows_on_id", unique: true + +>>>>>>> 80308ef8 (oncogenic type and significance icons now have different names) create_view "variant_browse_table_rows", materialized: true, sql_definition: <<-SQL SELECT outer_variants.id, outer_variants.name,