From 367606c987bd52766a7c5c8de834098fb3a167dc Mon Sep 17 00:00:00 2001 From: Kimberley Chong <97123241+KimberleyChong@users.noreply.github.com> Date: Tue, 25 Apr 2023 15:42:26 -0400 Subject: [PATCH 001/128] My Notebooks Page - SEAB-5114 (#1756) * add my notebooks page and update notebooks collections * missing = * fix data-cy attribute * update routerlink pipe, register modals, etc * update data-cy attributes * remove unused import * use entryTypeMetadata for routerlink pipe * add entryTypeMetadata to mock objects, add EntryTypeMetadataStubService * unused import --- cypress/e2e/group1/hostedWorkflows.ts | 2 +- cypress/e2e/group2/myworkflows.ts | 6 +- cypress/e2e/group2/notebooks.ts | 22 ++++ cypress/e2e/group3/mytools.ts | 2 +- cypress/e2e/smokeTests/sharedTests/zenodo.ts | 2 +- cypress/support/commands.ts | 4 +- src/app/app.component.html | 2 +- src/app/app.component.ts | 6 +- src/app/app.routing.ts | 6 + .../register-tool.component.html | 2 +- src/app/entry/router-link.pipe.spec.ts | 37 +++--- src/app/entry/router-link.pipe.ts | 45 +++++-- src/app/home-page/home-page.module.ts | 4 - .../entry-box/entry-box.component.spec.ts | 4 - .../change-username.component.html | 8 +- .../change-username.component.ts | 4 +- src/app/my-notebooks/my-notebooks.module.ts | 8 ++ src/app/my-notebooks/my-notebooks.routing.ts | 13 ++ src/app/my-services/my-services.module.ts | 4 +- src/app/my-sidebar/my-sidebar.component.html | 22 +++- src/app/my-sidebar/my-sidebar.component.ts | 5 +- .../mytools/my-tool/my-tool.component.html | 6 +- src/app/mytools/mytools.module.ts | 4 +- .../myworkflows/my-bio-workflows.service.ts | 16 --- .../myworkflows/my-services.service.spec.ts | 26 ---- src/app/myworkflows/my-services.service.ts | 21 ---- .../my-workflow/my-workflow.component.html | 113 ++++++++---------- .../my-workflow/my-workflow.component.spec.ts | 4 - .../my-workflow/my-workflow.component.ts | 2 + src/app/myworkflows/myworkflows.module.ts | 4 +- .../myworkflows/myworkflows.service.spec.ts | 4 - src/app/myworkflows/myworkflows.service.ts | 96 +++++++++++---- .../sidebar-accordion.component.html | 24 ++-- .../collection/collection.component.html | 16 +-- .../collection/collection.component.ts | 2 + src/app/organizations/collections.module.ts | 2 + ...red-workflow-services-notebooks.module.ts} | 14 ++- src/app/shared/helpers.ts | 1 + src/app/shared/modules/my-sidebar.module.ts | 3 +- src/app/shared/user/user.query.ts | 1 + .../starredentries.component.html | 13 +- .../starredentries.component.scss | 5 - src/app/test/openapi-mocked-objects.ts | 66 +++++++++- src/app/test/service-stubs.ts | 69 +++++++++++ .../register-github-app-modal.component.html | 34 ++++++ .../register-github-app-modal.component.ts | 58 +++++++++ .../register-workflow-modal.component.html | 4 +- .../register-workflow-modal.component.ts | 6 +- src/app/workflow/workflow.component.html | 2 +- src/app/workflows/list/list.component.html | 2 +- src/assets/svg/my-nav/notebooks.svg | 3 + src/assets/svg/sub-nav/notebook.svg | 11 +- 52 files changed, 562 insertions(+), 278 deletions(-) create mode 100644 src/app/my-notebooks/my-notebooks.module.ts create mode 100644 src/app/my-notebooks/my-notebooks.routing.ts delete mode 100644 src/app/myworkflows/my-bio-workflows.service.ts delete mode 100644 src/app/myworkflows/my-services.service.spec.ts delete mode 100644 src/app/myworkflows/my-services.service.ts rename src/app/{shared-workflow-services/shared-workflow-services.module.ts => shared-workflow-services-notebooks/shared-workflow-services-notebooks.module.ts} (81%) create mode 100644 src/app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component.html create mode 100644 src/app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component.ts create mode 100644 src/assets/svg/my-nav/notebooks.svg diff --git a/cypress/e2e/group1/hostedWorkflows.ts b/cypress/e2e/group1/hostedWorkflows.ts index 221a146700..7f10bfb183 100644 --- a/cypress/e2e/group1/hostedWorkflows.ts +++ b/cypress/e2e/group1/hostedWorkflows.ts @@ -145,7 +145,7 @@ describe('Dockstore hosted workflows', () => { cy.contains('/Dockstore.wdl').should('be.visible'); }); it('Create a new hosted workflow', () => { - cy.get('#registerWorkflowButton').should('be.visible').should('be.enabled').click(); + cy.get('[data-cy=register-workflow-button]').should('be.visible').should('be.enabled').click(); cy.get('#3-register-workflow-option').should('be.visible').click(); cy.contains('button', 'Next').click(); cy.get('#hostedWorkflowRepository').type(NEW_WORKFLOW_NAME); diff --git a/cypress/e2e/group2/myworkflows.ts b/cypress/e2e/group2/myworkflows.ts index 3b2ccffb18..a764486f75 100644 --- a/cypress/e2e/group2/myworkflows.ts +++ b/cypress/e2e/group2/myworkflows.ts @@ -408,7 +408,7 @@ describe('Dockstore my workflows', () => { }); cy.visit('/my-workflows'); - cy.get('#registerWorkflowButton').should('be.visible').should('be.enabled').click(); + cy.get('[data-cy=register-workflow-button]').should('be.visible').should('be.enabled').click(); // TODO: Fix this. When 'Next' is clicked too fast, the next step is empty cy.wait(1000); cy.get('#1-register-workflow-option').click(); @@ -433,7 +433,7 @@ describe('Dockstore my workflows', () => { describe('Test register workflow form validation', () => { it('It should have 3 separate descriptor path validation patterns', () => { cy.visit('/my-workflows'); - cy.get('#registerWorkflowButton').should('be.visible').should('be.enabled').click(); + cy.get('[data-cy=register-workflow-button]').should('be.visible').should('be.enabled').click(); // TODO: Fix this. When 'Next' is clicked too fast, the next step is empty cy.wait(1000); cy.get('#2-register-workflow-option').click(); @@ -542,6 +542,6 @@ describe('Should handle no workflows correctly', () => { }); it('My workflows should prompt to register a workflow', () => { cy.visit('/my-workflows'); - cy.contains('Register Workflow'); + cy.contains('Register a Workflow'); }); }); diff --git a/cypress/e2e/group2/notebooks.ts b/cypress/e2e/group2/notebooks.ts index 0e815de13f..523a40c6f1 100644 --- a/cypress/e2e/group2/notebooks.ts +++ b/cypress/e2e/group2/notebooks.ts @@ -91,4 +91,26 @@ describe('Dockstore notebooks', () => { cy.get('app-source-file-tabs').contains('/notebook.ipynb'); cy.get('app-source-file-tabs').contains('"nbformat"'); }); + + it('should have my-notebooks page', () => { + cy.visit('/my-notebooks/' + name); + // Check the labels on the tabs. + cy.get('.mat-tab-list').contains('Info'); + cy.get('.mat-tab-list').contains('Code'); + cy.get('.mat-tab-list').contains('Versions'); + cy.get('.mat-tab-list').contains('Files'); + // Should initially display the Info tab. + // Check for some key information. + cy.contains(name); + cy.contains(/Notebook/i); + cy.contains(/Format/i); + cy.contains(/Jupyter/i); + cy.contains(/Programming Language/i); + cy.contains(/Python/i); + cy.contains(/Export as ZIP/i); + cy.contains(/Author One/i); + cy.contains(/Author Two/i); + // Check for view public page button + cy.get('[data-cy=viewPublicWorkflowButton]').should('be.visible').click(); + }); }); diff --git a/cypress/e2e/group3/mytools.ts b/cypress/e2e/group3/mytools.ts index 621880523f..874824efeb 100644 --- a/cypress/e2e/group3/mytools.ts +++ b/cypress/e2e/group3/mytools.ts @@ -534,6 +534,6 @@ describe('Should handle no tools correctly', () => { }); it('My tools should prompt to register a tool', () => { cy.visit('/my-tools'); - cy.contains('Add Tool'); + cy.contains('Register a Tool'); }); }); diff --git a/cypress/e2e/smokeTests/sharedTests/zenodo.ts b/cypress/e2e/smokeTests/sharedTests/zenodo.ts index 135cc0e553..1cda904567 100644 --- a/cypress/e2e/smokeTests/sharedTests/zenodo.ts +++ b/cypress/e2e/smokeTests/sharedTests/zenodo.ts @@ -73,7 +73,7 @@ describe('Create Zenodo DOI for workflow version', () => { if (workflowName !== zenodoWorkflow) { // Create the Zenodo test hosted workflow - cy.get('[id=registerWorkflowButton]').click(); + cy.get('[data-cy=registerWorkflowButton]').click(); // Select the Use CWL, WDL or Nextflow from GitHub, Bitbucket, etc.' option to create a hosted workflow cy.contains('Create and save CWL, WDL, or Nextflow on Dockstore.org').click(); cy.contains('button', 'Next').click(); diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index de72b22d04..6c9875cd9e 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -195,7 +195,7 @@ export function testNoGithubEntriesText(entryType: string, repository: string) { .contains('.mat-tab-label-content', 'Published') .click(); if (entryType === 'tool') { - cy.get('[data-cy=no-published-apptool-message]').should('contain', 'No published ' + entryType + 's'); + cy.get('[data-cy=no-published-appTool-message]').should('contain', 'No published ' + entryType + 's'); } else { cy.get('[data-cy=no-published-' + entryType + '-message]').should('contain', 'No published ' + entryType + 's'); } @@ -210,7 +210,7 @@ export function testNoGithubEntriesText(entryType: string, repository: string) { .contains('.mat-tab-label-content', 'Unpublished') .click(); if (entryType === 'tool') { - cy.get('[data-cy=no-unpublished-apptool-message]').should('contain', 'No unpublished ' + entryType + 's'); + cy.get('[data-cy=no-unpublished-appTool-message]').should('contain', 'No unpublished ' + entryType + 's'); } else { cy.get('[data-cy=no-unpublished-' + entryType + '-message]').should('contain', 'No unpublished ' + entryType + 's'); } diff --git a/src/app/app.component.html b/src/app/app.component.html index d5c11dc947..6421acc14e 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -14,7 +14,7 @@
-
+
diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 42671e7d5a..dd1603bdcb 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -24,7 +24,7 @@ export class AppComponent implements OnInit, OnDestroy { public displayLoggedInTOSBanner$: Observable; public currentTOSVersion: User.TosversionEnum = currentTOSVersion; public currentPrivacyPolicyVersion: User.PrivacyPolicyVersionEnum = currentPrivacyPolicyVersion; - public usernameChangeRequired: boolean = false; + public isUsernameChangeRequired$: Observable; constructor( private router: Router, @@ -46,10 +46,8 @@ export class AppComponent implements OnInit, OnDestroy { this.dismissedLatestTOS$ = this.tosBannerQuery.dismissedLatestTOS$; this.dismissedLatestPrivacyPolicy$ = this.tosBannerQuery.dismissedLatestPrivacyPolicy$; this.displayLoggedInTOSBanner$ = this.tosBannerQuery.displayLoggedInTOSBanner$; + this.isUsernameChangeRequired$ = this.userQuery.isUsernameChangeRequired$; this.userQuery.user$.pipe().subscribe((user) => { - if (user) { - this.usernameChangeRequired = user.usernameChangeRequired; - } if (user && (user.privacyPolicyVersion !== this.currentPrivacyPolicyVersion || user.tosversion !== this.currentTOSVersion)) { this.tosBannerService.setDisplayLoggedInTOSBanner(true); } else { diff --git a/src/app/app.routing.ts b/src/app/app.routing.ts index bf3f413446..cf2371cc18 100644 --- a/src/app/app.routing.ts +++ b/src/app/app.routing.ts @@ -106,6 +106,12 @@ const APP_ROUTES: Routes = [ canActivate: [AuthGuard], data: { title: 'Dockstore | My Services' }, }, + { + path: 'my-notebooks', + loadChildren: () => import('app/my-notebooks/my-notebooks.module').then((m) => m.MyNotebooksModule), + canActivate: [AuthGuard], + data: { title: 'Dockstore | My Notebooks' }, + }, { path: 'githubCallback', component: GithubCallbackComponent }, { path: 'aliases', diff --git a/src/app/container/register-tool/register-tool.component.html b/src/app/container/register-tool/register-tool.component.html index 029480fc85..8e0724fc75 100644 --- a/src/app/container/register-tool/register-tool.component.html +++ b/src/app/container/register-tool/register-tool.component.html @@ -70,7 +70,7 @@

Register Tool

{ - it('create an instance', () => { - const pipe = new RouterLinkPipe(); + beforeEach(() => + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule], + providers: [{ provide: EntryTypeMetadataService, useClass: EntryTypeMetadataStubService }], + }) + ); + + it('should be created', inject([EntryTypeMetadataService], (entryTypeMetadataService: EntryTypeMetadataService) => { + const pipe = new RouterLinkPipe(entryTypeMetadataService); expect(pipe).toBeTruthy(); - }); - it('generates the right router links', () => { - const pipe = new RouterLinkPipe(); - expect(pipe.transform(null, null)).toBeNull(); - expect(pipe.transform(EntryType.Service, null)).toBeNull(); - expect(pipe.transform(null, sampleWorkflow1)).toBeNull(); + })); - expect(pipe.transform(EntryType.AppTool, sampleWorkflow1)).toEqual('/containers/github.com/updatedOrganization/updatedWorkflowPath'); - expect(pipe.transform(EntryType.Service, sampleWorkflow1)).toEqual('/services/github.com/updatedOrganization/updatedWorkflowPath'); - expect(pipe.transform(EntryType.BioWorkflow, sampleWorkflow1)).toEqual('/workflows/github.com/updatedOrganization/updatedWorkflowPath'); - }); + it('generates the right router links', inject([EntryTypeMetadataService], (entryTypeMetadataService: EntryTypeMetadataService) => { + const pipe = new RouterLinkPipe(entryTypeMetadataService); + expect(pipe.transform(null)).toBeNull(); + expect(pipe.transform(sampleWorkflow1)).toEqual('/workflows/github.com/updatedOrganization/updatedWorkflowPath'); + expect(pipe.transform(sampleTool1)).toEqual('/containers/quay.io/sampleNamespace/sampleName'); + expect(pipe.transform(sampleCollectionEntry1)).toEqual('/containers/quay.io/pancancer/pcawg-dkfz-workflow'); + expect(pipe.transform(sampleCollectionEntry2)).toEqual('/notebooks/github.com/david4096/simple-notebook/simplers:version'); + })); }); diff --git a/src/app/entry/router-link.pipe.ts b/src/app/entry/router-link.pipe.ts index 270f7e69e2..e5bcf68345 100644 --- a/src/app/entry/router-link.pipe.ts +++ b/src/app/entry/router-link.pipe.ts @@ -1,25 +1,44 @@ import { Pipe, PipeTransform } from '@angular/core'; -import { EntryType } from '../shared/enum/entry-type'; -import { Workflow } from '../shared/openapi'; +import { CollectionEntry, Workflow, DockstoreTool, EntryType } from '../shared/openapi'; +import { EntryTypeMetadataService } from './type-metadata/entry-type-metadata.service'; @Pipe({ name: 'routerLink', }) export class RouterLinkPipe implements PipeTransform { - transform(entryType: EntryType, workflow: Workflow): string | null { - if (!workflow || !entryType) { + constructor(private entryTypeMetadataService: EntryTypeMetadataService) {} + + /** + * Returns the complete path for a workflow, tool, or collection entry + * To be used for routerLink navigation + * + * @param entry + * @returns string | null + */ + transform(entry: DockstoreTool | Workflow | CollectionEntry): string | null { + if (!entry) { return null; } - switch (entryType) { - case EntryType.BioWorkflow: - return '/workflows/' + workflow.full_workflow_path; - case EntryType.Service: - return '/services/' + workflow.full_workflow_path; - case EntryType.AppTool: - return '/containers/' + workflow.full_workflow_path; - case EntryType.Notebook: - return '/notebooks/' + workflow.full_workflow_path; + + if ((entry as Workflow).full_workflow_path) { + const workflow = entry as Workflow; + return '/' + workflow.entryTypeMetadata.sitePath + '/' + workflow.full_workflow_path; + } + if ((entry as DockstoreTool).tool_path) { + const tool = entry as DockstoreTool; + return '/' + tool.entryTypeMetadata.sitePath + '/' + tool.tool_path; } + if ((entry as CollectionEntry).entryPath) { + const collectionEntry = entry as CollectionEntry; + const entryTypeMetadata = this.entryTypeMetadataService.get(collectionEntry.entryType.toUpperCase() as EntryType); + + if (collectionEntry.versionName) { + return '/' + entryTypeMetadata.sitePath + '/' + collectionEntry.entryPath + ':' + collectionEntry.versionName; + } else { + return '/' + entryTypeMetadata.sitePath + '/' + collectionEntry.entryPath; + } + } + return null; } } diff --git a/src/app/home-page/home-page.module.ts b/src/app/home-page/home-page.module.ts index f5cbc2dbd0..b778e00011 100644 --- a/src/app/home-page/home-page.module.ts +++ b/src/app/home-page/home-page.module.ts @@ -22,8 +22,6 @@ import { MySidebarModule } from '../shared/modules/my-sidebar.module'; import { EntryBoxComponent } from './widget/entry-box/entry-box.component'; import { MytoolsService } from 'app/mytools/mytools.service'; import { MyWorkflowsService } from 'app/myworkflows/myworkflows.service'; -import { MyServicesService } from 'app/myworkflows/my-services.service'; -import { MyBioWorkflowsService } from 'app/myworkflows/my-bio-workflows.service'; import { MyEntriesStateService } from 'app/shared/state/my-entries.service'; import { MyEntriesStore } from 'app/shared/state/my-entries.store'; import { MyEntriesQuery } from 'app/shared/state/my-entries.query'; @@ -75,8 +73,6 @@ import { PreviewWarningModule } from '../shared/modules/preview-warning.module'; providers: [ MytoolsService, MyWorkflowsService, - MyServicesService, - MyBioWorkflowsService, MyEntriesStateService, MyEntriesStore, MyEntriesQuery, diff --git a/src/app/home-page/widget/entry-box/entry-box.component.spec.ts b/src/app/home-page/widget/entry-box/entry-box.component.spec.ts index c4275bed16..d63236c481 100644 --- a/src/app/home-page/widget/entry-box/entry-box.component.spec.ts +++ b/src/app/home-page/widget/entry-box/entry-box.component.spec.ts @@ -8,8 +8,6 @@ import { MatSnackBarModule } from '@angular/material/snack-bar'; import { RouterTestingModule } from '@angular/router/testing'; import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { RegisterToolService } from 'app/container/register-tool/register-tool.service'; -import { MyBioWorkflowsService } from 'app/myworkflows/my-bio-workflows.service'; -import { MyServicesService } from 'app/myworkflows/my-services.service'; import { MyWorkflowsService } from 'app/myworkflows/myworkflows.service'; import { DescriptorLanguageService } from 'app/shared/entry/descriptor-language.service'; import { MyEntriesQuery } from 'app/shared/state/my-entries.query'; @@ -55,8 +53,6 @@ describe('EntryBoxComponent', () => { { provide: WorkflowsService, useClass: WorkflowsStubService }, { provide: UrlResolverService, useClass: UrlResolverStubService }, { provide: UsersService, useClass: UsersStubService }, - MyServicesService, - MyBioWorkflowsService, MyWorkflowsService, MyEntriesStateService, MyEntriesStore, diff --git a/src/app/loginComponents/accounts/internal/change-username/change-username.component.html b/src/app/loginComponents/accounts/internal/change-username/change-username.component.html index 0cb69a0361..f39446619c 100644 --- a/src/app/loginComponents/accounts/internal/change-username/change-username.component.html +++ b/src/app/loginComponents/accounts/internal/change-username/change-username.component.html @@ -37,7 +37,13 @@

Edit Dockstore Username

workflows or tools.
- + warning
Warning: Your username contains one or more banned words. Some operations on Dockstore will be blocked until you change diff --git a/src/app/loginComponents/accounts/internal/change-username/change-username.component.ts b/src/app/loginComponents/accounts/internal/change-username/change-username.component.ts index 357d800d9f..ec5861a2a1 100644 --- a/src/app/loginComponents/accounts/internal/change-username/change-username.component.ts +++ b/src/app/loginComponents/accounts/internal/change-username/change-username.component.ts @@ -34,7 +34,7 @@ export class ChangeUsernameComponent implements OnInit { username: string; user: User; usernameTaken = false; - usernameChangeRequired: boolean = false; + isUsernameChangeRequired$: Observable; checkingIfValid = false; canChangeUsername$: Observable; showEmailWarning = false; @@ -53,9 +53,9 @@ export class ChangeUsernameComponent implements OnInit { this.user = user; this.username = user.username; this.showEmailWarning = this.user.username.includes('@'); - this.usernameChangeRequired = this.user.usernameChangeRequired; } }); + this.isUsernameChangeRequired$ = this.userQuery.isUsernameChangeRequired$; this.canChangeUsername$ = this.userQuery.canChangeUsername$; this.enableDisableFormControl(); this.usernameFormControl.valueChanges.pipe(debounceTime(formInputDebounceTime), takeUntil(this.ngUnsubscribe)).subscribe((value) => { diff --git a/src/app/my-notebooks/my-notebooks.module.ts b/src/app/my-notebooks/my-notebooks.module.ts new file mode 100644 index 0000000000..6ca991e898 --- /dev/null +++ b/src/app/my-notebooks/my-notebooks.module.ts @@ -0,0 +1,8 @@ +import { NgModule } from '@angular/core'; +import { SharedWorkflowServicesNotebooksModule } from '../shared-workflow-services-notebooks/shared-workflow-services-notebooks.module'; +import { MyNotebooksRoutes } from './my-notebooks.routing'; + +@NgModule({ + imports: [MyNotebooksRoutes, SharedWorkflowServicesNotebooksModule], +}) +export class MyNotebooksModule {} diff --git a/src/app/my-notebooks/my-notebooks.routing.ts b/src/app/my-notebooks/my-notebooks.routing.ts new file mode 100644 index 0000000000..401fff4d06 --- /dev/null +++ b/src/app/my-notebooks/my-notebooks.routing.ts @@ -0,0 +1,13 @@ +import { RouterModule, Routes } from '@angular/router'; +import { MyWorkflowComponent } from '../myworkflows/my-workflow/my-workflow.component'; +import { EntryType } from '../shared/enum/entry-type'; + +const routes: Routes = [ + { + path: '**', + component: MyWorkflowComponent, + data: { title: 'Dockstore | My Notebooks', entryType: EntryType.Notebook }, + }, +]; + +export const MyNotebooksRoutes = RouterModule.forChild(routes); diff --git a/src/app/my-services/my-services.module.ts b/src/app/my-services/my-services.module.ts index 3a6bec25c9..36ccc0c66b 100644 --- a/src/app/my-services/my-services.module.ts +++ b/src/app/my-services/my-services.module.ts @@ -1,8 +1,8 @@ import { NgModule } from '@angular/core'; -import { SharedWorkflowServicesModule } from '../shared-workflow-services/shared-workflow-services.module'; +import { SharedWorkflowServicesNotebooksModule } from '../shared-workflow-services-notebooks/shared-workflow-services-notebooks.module'; import { MyServicesRoutes } from './my-services.routing'; @NgModule({ - imports: [MyServicesRoutes, SharedWorkflowServicesModule], + imports: [MyServicesRoutes, SharedWorkflowServicesNotebooksModule], }) export class MyServicesModule {} diff --git a/src/app/my-sidebar/my-sidebar.component.html b/src/app/my-sidebar/my-sidebar.component.html index ede24a963c..93a4793af5 100644 --- a/src/app/my-sidebar/my-sidebar.component.html +++ b/src/app/my-sidebar/my-sidebar.component.html @@ -43,13 +43,23 @@
- - - +
+ -
--> +
+
+ + +
+ +
+
diff --git a/src/app/mytools/mytools.module.ts b/src/app/mytools/mytools.module.ts index 6d6f54b621..59bb759b12 100644 --- a/src/app/mytools/mytools.module.ts +++ b/src/app/mytools/mytools.module.ts @@ -30,7 +30,7 @@ import { MyToolsComponent } from './mytools.component'; import { mytoolsRouting } from './mytools.routing'; import { MytoolsService } from './mytools.service'; import { SidebarAccordionComponent } from './sidebar-accordion/sidebar-accordion.component'; -import { SharedWorkflowServicesModule } from '../shared-workflow-services/shared-workflow-services.module'; +import { SharedWorkflowServicesNotebooksModule } from '../shared-workflow-services-notebooks/shared-workflow-services-notebooks.module'; import { IsAppToolPipe } from '../search/is-app-tool.pipe'; import { WorkflowModule } from '../shared/modules/workflow.module'; import { MySidebarModule } from '../shared/modules/my-sidebar.module'; @@ -47,7 +47,7 @@ import { MySidebarModule } from '../shared/modules/my-sidebar.module'; PipeModule, MyEntriesModule, RefreshWizardModule, - SharedWorkflowServicesModule, + SharedWorkflowServicesNotebooksModule, WorkflowModule, MySidebarModule, ], diff --git a/src/app/myworkflows/my-bio-workflows.service.ts b/src/app/myworkflows/my-bio-workflows.service.ts deleted file mode 100644 index 565f4c39fc..0000000000 --- a/src/app/myworkflows/my-bio-workflows.service.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Location } from '@angular/common'; -import { Injectable } from '@angular/core'; -import { BioWorkflow } from 'app/shared/swagger/model/bioWorkflow'; -import { WorkflowService } from '../shared/state/workflow.service'; -import { Workflow, WorkflowsService } from '../shared/swagger'; - -@Injectable() -export class MyBioWorkflowsService { - constructor(private workflowsService: WorkflowsService, private workflowService: WorkflowService, private location: Location) {} - selectEntry(id: number, includesValidation: string) { - this.workflowsService.getWorkflow(id, includesValidation).subscribe((result: Workflow) => { - this.location.go('/my-workflows/' + result.full_workflow_path); - this.workflowService.setWorkflow(result); - }); - } -} diff --git a/src/app/myworkflows/my-services.service.spec.ts b/src/app/myworkflows/my-services.service.spec.ts deleted file mode 100644 index 26c247aa71..0000000000 --- a/src/app/myworkflows/my-services.service.spec.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { inject, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; -import { CustomMaterialModule } from 'app/shared/modules/material.module'; -import { MyEntriesModule } from 'app/shared/modules/my-entries.module'; -import { WorkflowService } from '../shared/state/workflow.service'; -import { WorkflowsService } from '../shared/swagger'; -import { WorkflowsStubService, WorkflowStubService } from '../test/service-stubs'; -import { MyServicesService } from './my-services.service'; - -describe('Service: MyServices', () => { - beforeEach(() => { - TestBed.configureTestingModule({ - providers: [ - MyServicesService, - { provide: WorkflowService, useClass: WorkflowStubService }, - { provide: WorkflowsService, useClass: WorkflowsStubService }, - ], - imports: [HttpClientTestingModule, RouterTestingModule, CustomMaterialModule, MyEntriesModule], - }); - }); - - it('should be truthy', inject([MyServicesService], (service: MyServicesService) => { - expect(service).toBeTruthy(); - })); -}); diff --git a/src/app/myworkflows/my-services.service.ts b/src/app/myworkflows/my-services.service.ts deleted file mode 100644 index e935469d9f..0000000000 --- a/src/app/myworkflows/my-services.service.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Location } from '@angular/common'; -import { Injectable } from '@angular/core'; -import { WorkflowService } from 'app/shared/state/workflow.service'; -import { Workflow, WorkflowsService } from 'app/shared/swagger'; -import { UserQuery } from 'app/shared/user/user.query'; - -@Injectable() -export class MyServicesService { - constructor( - private workflowsService: WorkflowsService, - private workflowService: WorkflowService, - private location: Location, - protected userQuery: UserQuery - ) {} - selectEntry(id: number, includesValidation: string) { - this.workflowsService.getWorkflow(id, includesValidation).subscribe((service: Workflow) => { - this.location.go('/my-services/' + service.full_workflow_path); - this.workflowService.setWorkflow(service); - }); - } -} diff --git a/src/app/myworkflows/my-workflow/my-workflow.component.html b/src/app/myworkflows/my-workflow/my-workflow.component.html index bf38911ac3..96550c3df1 100644 --- a/src/app/myworkflows/my-workflow/my-workflow.component.html +++ b/src/app/myworkflows/my-workflow/my-workflow.component.html @@ -26,7 +26,7 @@ chevron_{{ showSidebar ? 'left' : 'right' }} {{ myEntryPageTitle$ | async | titlecase }} - PREVIEW + PREVIEW
@@ -49,60 +49,46 @@ matTooltipPosition="after" [matTooltip]="(hasSourceControlToken$ | async) ? '' : 'Requires source control token'" > - + + + - - - - - - -
- Register a service - Add a Service - - +

You have not registered any {{ entryType$ | async }}s

your authorized organizations. - +

Shared with me

@@ -148,17 +134,19 @@

Shared with me

info - There are currently no {{ entryType$ | async }}s registered under this account. To add your first - {{ entryType$ | async }}, do one of the following: + There are currently no {{ entryType$ | async }}s registered under this account. To add your first {{ entryType$ | async + }}, do one of the following:

    -
  • - Press the 'Manage on GitHub' button and follow the GitHub apps web interface to create services from your GitHub - repositories. -
  • - Press the 'Register {{ entryType$ | async | titlecase }}' button to manually add a {{ entryType$ | async }} using the - registration wizard. + Press the 'Register a {{ entryType$ | async | titlecase }}' button + to manually add a {{ entryType$ | async }} using the registration wizard. + and follow the GitHub apps web interface to create {{ entryType$ | async }}s from your GitHub + repositories.
  • @@ -194,6 +182,9 @@

    Shared with me

+
+ +
diff --git a/src/app/myworkflows/my-workflow/my-workflow.component.spec.ts b/src/app/myworkflows/my-workflow/my-workflow.component.spec.ts index 9cb45db5f5..d1622266d8 100644 --- a/src/app/myworkflows/my-workflow/my-workflow.component.spec.ts +++ b/src/app/myworkflows/my-workflow/my-workflow.component.spec.ts @@ -48,8 +48,6 @@ import { WorkflowStubService, } from '../../test/service-stubs'; import { RegisterWorkflowModalService } from '../../workflow/register-workflow-modal/register-workflow-modal.service'; -import { MyBioWorkflowsService } from '../my-bio-workflows.service'; -import { MyServicesService } from '../my-services.service'; import { MyWorkflowsService } from '../myworkflows.service'; import { MyWorkflowComponent } from './my-workflow.component'; import { DescriptorLanguageService } from '../../shared/entry/descriptor-language.service'; @@ -76,8 +74,6 @@ describe('MyWorkflowsComponent', () => { { provide: RefreshService, useClass: RefreshStubService }, { provide: RegisterWorkflowModalService, useClass: RegisterWorkflowModalStubService }, MyWorkflowsService, - MyBioWorkflowsService, - MyServicesService, TokenQuery, { provide: AccountsService, useClass: AccountsStubService }, { provide: WorkflowsService, useClass: WorkflowsStubService }, diff --git a/src/app/myworkflows/my-workflow/my-workflow.component.ts b/src/app/myworkflows/my-workflow/my-workflow.component.ts index 54a688828f..b72de548b6 100644 --- a/src/app/myworkflows/my-workflow/my-workflow.component.ts +++ b/src/app/myworkflows/my-workflow/my-workflow.component.ts @@ -42,6 +42,7 @@ import { UrlResolverService } from '../../shared/url-resolver.service'; import { UserQuery } from '../../shared/user/user.query'; import { RegisterWorkflowModalService } from '../../workflow/register-workflow-modal/register-workflow-modal.service'; import { MyWorkflowsService } from '../myworkflows.service'; +import { Dockstore } from '../../shared/dockstore.model'; /** * How the workflow selection works: @@ -65,6 +66,7 @@ import { MyWorkflowsService } from '../myworkflows.service'; styleUrls: ['../../shared/styles/my-entry.component.scss'], }) export class MyWorkflowComponent extends MyEntry implements OnInit { + Dockstore = Dockstore; faGithub = faGithub; workflow: Service | BioWorkflow; workflows: Array; diff --git a/src/app/myworkflows/myworkflows.module.ts b/src/app/myworkflows/myworkflows.module.ts index e588120da3..8d4dc55248 100644 --- a/src/app/myworkflows/myworkflows.module.ts +++ b/src/app/myworkflows/myworkflows.module.ts @@ -14,11 +14,11 @@ * limitations under the License. */ import { NgModule } from '@angular/core'; -import { SharedWorkflowServicesModule } from '../shared-workflow-services/shared-workflow-services.module'; +import { SharedWorkflowServicesNotebooksModule } from '../shared-workflow-services-notebooks/shared-workflow-services-notebooks.module'; import { myworkflowRouting } from './myworkflows.routing'; import { GitHubAppsLogsModule } from './sidebar-accordion/github-apps-logs/github-apps-logs.module'; @NgModule({ - imports: [SharedWorkflowServicesModule, myworkflowRouting, GitHubAppsLogsModule], + imports: [SharedWorkflowServicesNotebooksModule, myworkflowRouting, GitHubAppsLogsModule], }) export class MyWorkflowsModule {} diff --git a/src/app/myworkflows/myworkflows.service.spec.ts b/src/app/myworkflows/myworkflows.service.spec.ts index aa5b0054ad..d54785debf 100644 --- a/src/app/myworkflows/myworkflows.service.spec.ts +++ b/src/app/myworkflows/myworkflows.service.spec.ts @@ -23,8 +23,6 @@ import { UsersService, WorkflowsService } from 'app/shared/swagger'; import { UrlResolverService } from 'app/shared/url-resolver.service'; import { UrlResolverStubService, UsersStubService, WorkflowsStubService, WorkflowStubService } from 'app/test/service-stubs'; import { Workflow } from './../shared/swagger/model/workflow'; -import { MyBioWorkflowsService } from './my-bio-workflows.service'; -import { MyServicesService } from './my-services.service'; import { OrgWorkflowObject } from './my-workflow/my-workflow.component'; import { MyWorkflowsService } from './myworkflows.service'; @@ -141,8 +139,6 @@ describe('MyWorkflowsService', () => { imports: [CustomMaterialModule, RouterTestingModule, MyEntriesModule], providers: [ MyWorkflowsService, - MyBioWorkflowsService, - MyServicesService, { provide: UrlResolverService, useClass: UrlResolverStubService }, { provide: WorkflowService, useClass: WorkflowStubService }, { provide: UsersService, useClass: UsersStubService }, diff --git a/src/app/myworkflows/myworkflows.service.ts b/src/app/myworkflows/myworkflows.service.ts index 97f0d82144..b2d4872980 100644 --- a/src/app/myworkflows/myworkflows.service.ts +++ b/src/app/myworkflows/myworkflows.service.ts @@ -19,7 +19,7 @@ import { Injectable } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { transaction } from '@datorama/akita'; import { AlertService } from 'app/shared/alert/state/alert.service'; -import { includesAuthors, includesValidation } from 'app/shared/constants'; +import { includesAuthors, includesValidation, bootstrap4mediumModalSize } from 'app/shared/constants'; import { EntryType } from 'app/shared/enum/entry-type'; import { MyEntriesService } from 'app/shared/myentries.service'; import { SessionQuery } from 'app/shared/session/session.query'; @@ -29,11 +29,11 @@ import { BioWorkflow, DockstoreTool, SharedWorkflows, UsersService, Workflow, Wo import { UrlResolverService } from 'app/shared/url-resolver.service'; import { UserQuery } from 'app/shared/user/user.query'; import { RegisterWorkflowModalComponent } from 'app/workflow/register-workflow-modal/register-workflow-modal.component'; +import { RegisterGithubAppModalComponent } from 'app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component'; import { forkJoin, Observable, of as observableOf } from 'rxjs'; -import { catchError, finalize, take } from 'rxjs/operators'; -import { MyBioWorkflowsService } from './my-bio-workflows.service'; -import { MyServicesService } from './my-services.service'; +import { catchError, finalize } from 'rxjs/operators'; import { OrgWorkflowObject } from './my-workflow/my-workflow.component'; +import { Location } from '@angular/common'; @Injectable() export class MyWorkflowsService extends MyEntriesService> { @@ -44,10 +44,9 @@ export class MyWorkflowsService extends MyEntriesService) => { - this.workflowService.setWorkflows(services); - this.workflowService.setSharedWorkflows([]); + this.setupEntries(services, EntryType.Service); this.alertService.simpleSuccess(); - this.selectEntry(this.recomputeWhatEntryToSelect([...(services || []), ...[]]), EntryType.Service); }, (error) => { - this.workflowService.setWorkflows([]); - this.workflowService.setSharedWorkflows([]); + this.setupEntries([], null); + this.alertService.detailedSnackBarError(error); + } + ); + } + + getMyNotebooks(id: number): void { + this.alertService.start('Fetching notebooks'); + this.myEntriesStateService.setRefreshingMyEntries(true); + this.usersService + .userNotebooks(id) + .pipe( + finalize(() => { + this.myEntriesStateService.setRefreshingMyEntries(false); + }) + ) + .subscribe( + (notebooks: Array) => { + this.setupEntries(notebooks, EntryType.Notebook); + this.alertService.simpleSuccess(); + }, + (error) => { + this.setupEntries([], null); this.alertService.detailedSnackBarError(error); } ); } + /** + * Used to setup non-workflow entries ie. Services and Notebooks + * + * @param myEntries + * @param entryType + */ + setupEntries(myEntries: Array, entryType: EntryType) { + this.workflowService.setWorkflows(myEntries); + this.workflowService.setSharedWorkflows([]); + this.selectEntry(this.recomputeWhatEntryToSelect([...(myEntries || []), ...[]]), entryType); + } + /** * Very strange function that gets both the user's workflows and the user's shared workflows * If one of them errors, the other should still continue executing. This is done by catching it. @@ -111,7 +142,7 @@ export class MyWorkflowsService extends MyEntriesService { + this.location.go('/my-' + entryType + 's/' + result.full_workflow_path); + this.workflowService.setWorkflow(result); + }); } } @@ -203,7 +233,8 @@ export class MyWorkflowsService extends MyEntriesService { if (reloadEntries) { const user = this.userQuery.getValue().user; @@ -213,11 +244,30 @@ export class MyWorkflowsService extends MyEntriesService window.open(link)); + if (entryType === EntryType.Service || entryType === EntryType.Notebook) { + // Open GitHub app registration modal + this.openRegisterGithubAppModal(entryType); } } + /** + * Modal that navigates user to GitHub page that allows them to add our GitHub app to their repo + * Used by Register Service and Register Notebook buttons + * + * @param entryType + */ + openRegisterGithubAppModal(entryType: EntryType) { + const dialogRef = this.matDialog.open(RegisterGithubAppModalComponent, { width: bootstrap4mediumModalSize, data: entryType }); + dialogRef.afterClosed().subscribe((reloadEntries) => { + if (reloadEntries) { + const user = this.userQuery.getValue().user; + if (user) { + this.getMyEntries(user.id, entryType); + } + } + }); + } + createNewOrgEntryObject(workflow: Workflow): OrgWorkflowObject { return { sourceControl: workflow.sourceControl, diff --git a/src/app/myworkflows/sidebar-accordion/sidebar-accordion.component.html b/src/app/myworkflows/sidebar-accordion/sidebar-accordion.component.html index 4883ab1424..1a0228627c 100644 --- a/src/app/myworkflows/sidebar-accordion/sidebar-accordion.component.html +++ b/src/app/myworkflows/sidebar-accordion/sidebar-accordion.component.html @@ -60,14 +60,8 @@ -

- No published tools. -

-

- No published services. -

-

- No published workflows. +

+ No published {{ pageEntryType === EntryType.AppTool ? 'tool' : pageEntryType }}s.

@@ -91,14 +85,8 @@ -

- No unpublished tools. -

-

- No unpublished services. -

-

- No unpublished workflows. +

+ No unpublished {{ pageEntryType === EntryType.AppTool ? 'tool' : pageEntryType }}s.

@@ -106,7 +94,9 @@
+
+ +
info This collection is part of an organization that is pending approval by a Dockstore curator. @@ -101,18 +104,11 @@

Workflows, Notebooks, and ToolsWorkflows and Tools

- - + +
- workflow icon - tool icon + {{ entry.entryType }}s icon
{{ entry.entryPath + (entry.versionName ? ':' + entry.versionName : '') }}
diff --git a/src/app/organizations/collection/collection.component.ts b/src/app/organizations/collection/collection.component.ts index 8214be4a6e..b1fbfcbb21 100644 --- a/src/app/organizations/collection/collection.component.ts +++ b/src/app/organizations/collection/collection.component.ts @@ -17,6 +17,7 @@ import { UpdateOrganizationOrCollectionDescriptionComponent } from '../organizat import { CollectionsQuery } from '../state/collections.query'; import { CollectionsService } from '../state/collections.service'; import { OrganizationQuery } from '../state/organization.query'; +import { EntryType } from 'app/shared/enum/entry-type'; @Component({ selector: 'app-collection-entry-confirm-remove', @@ -50,6 +51,7 @@ export interface EntryDialogData { styleUrls: ['./collection.component.scss', '../organization/organization.component.scss'], }) export class CollectionComponent implements OnInit { + entryType = EntryType; WorkflowMode = Workflow.ModeEnum; DescriptorType = ToolDescriptor.TypeEnum; collection$: Observable; diff --git a/src/app/organizations/collections.module.ts b/src/app/organizations/collections.module.ts index d1df95a373..e15f113700 100644 --- a/src/app/organizations/collections.module.ts +++ b/src/app/organizations/collections.module.ts @@ -16,6 +16,7 @@ import { CollectionsComponent } from './collections/collections.component'; import { CreateCollectionModule } from './collections/create-collection.module'; import { RemoveCollectionDialogComponent } from './collections/remove-collection/remove-collection.component'; import { UpdateOrganizationDescriptionModule } from './organization/update-organization-description.module'; +import { PreviewWarningModule } from '../shared/modules/preview-warning.module'; @NgModule({ imports: [ @@ -32,6 +33,7 @@ import { UpdateOrganizationDescriptionModule } from './organization/update-organ CategoryButtonModule, ImgFallbackModule, PipeModule, + PreviewWarningModule, ], declarations: [CollectionsComponent, CollectionComponent, CollectionRemoveEntryDialogComponent, RemoveCollectionDialogComponent], exports: [CollectionsComponent, CollectionComponent], diff --git a/src/app/shared-workflow-services/shared-workflow-services.module.ts b/src/app/shared-workflow-services-notebooks/shared-workflow-services-notebooks.module.ts similarity index 81% rename from src/app/shared-workflow-services/shared-workflow-services.module.ts rename to src/app/shared-workflow-services-notebooks/shared-workflow-services-notebooks.module.ts index e7333c5d2d..6b30492880 100644 --- a/src/app/shared-workflow-services/shared-workflow-services.module.ts +++ b/src/app/shared-workflow-services-notebooks/shared-workflow-services-notebooks.module.ts @@ -18,8 +18,6 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; -import { MyBioWorkflowsService } from 'app/myworkflows/my-bio-workflows.service'; -import { MyServicesService } from 'app/myworkflows/my-services.service'; import { MyWorkflowsService } from 'app/myworkflows/myworkflows.service'; import { EntryWizardModule } from 'app/shared/entry-wizard.module'; import { MyEntriesModule } from 'app/shared/modules/my-entries.module'; @@ -32,11 +30,14 @@ import { WorkflowModule } from '../shared/modules/workflow.module'; import { PipeModule } from '../shared/pipe/pipe.module'; import { RefreshWorkflowOrganizationComponent } from '../workflow/refresh-workflow-organization/refresh-workflow-organization.component'; import { RegisterWorkflowModalComponent } from '../workflow/register-workflow-modal/register-workflow-modal.component'; +import { RegisterGithubAppModalComponent } from 'app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component'; +import { PreviewWarningModule } from 'app/shared/modules/preview-warning.module'; const DECLARATIONS: any[] = [ MyWorkflowComponent, RefreshWorkflowOrganizationComponent, RegisterWorkflowModalComponent, + RegisterGithubAppModalComponent, SidebarAccordionComponent, ]; const IMPORTS = [ @@ -50,19 +51,20 @@ const IMPORTS = [ RouterModule, MyEntriesModule, EntryWizardModule, + PreviewWarningModule, ]; /** - * This is a shared module between the My Workflows page and the My Services page. + * This is a shared module between the My Workflows page, My Services page, and My Notebooks page. * It shares modules and components * * @export - * @class SharedWorkflowServicesModule + * @class SharedWorkflowServicesNotebooksModule */ @NgModule({ declarations: DECLARATIONS, imports: IMPORTS, - providers: [MyWorkflowsService, MyBioWorkflowsService, MyServicesService], + providers: [MyWorkflowsService], exports: [DECLARATIONS.concat(IMPORTS), SidebarAccordionComponent], }) -export class SharedWorkflowServicesModule {} +export class SharedWorkflowServicesNotebooksModule {} diff --git a/src/app/shared/helpers.ts b/src/app/shared/helpers.ts index 1d208acf5e..2d0a413e46 100644 --- a/src/app/shared/helpers.ts +++ b/src/app/shared/helpers.ts @@ -6,6 +6,7 @@ export function toExtendSite(url: string): boolean { url.startsWith('/my-workflows') || url.startsWith('/my-tools') || url.startsWith('/my-services') || + url.startsWith('/my-notebooks') || url.startsWith('/starred') || url.startsWith('/accounts') || url.startsWith('/dashboard') diff --git a/src/app/shared/modules/my-sidebar.module.ts b/src/app/shared/modules/my-sidebar.module.ts index a2ff6f4704..2f1bc4695c 100644 --- a/src/app/shared/modules/my-sidebar.module.ts +++ b/src/app/shared/modules/my-sidebar.module.ts @@ -15,13 +15,14 @@ */ import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; import { MySidebarComponent } from '../../my-sidebar/my-sidebar.component'; import { CustomMaterialModule } from 'app/shared/modules/material.module'; import { RouterModule } from '@angular/router'; @NgModule({ declarations: [MySidebarComponent], - imports: [CustomMaterialModule, RouterModule], + imports: [CommonModule, CustomMaterialModule, RouterModule], providers: [], exports: [MySidebarComponent], }) diff --git a/src/app/shared/user/user.query.ts b/src/app/shared/user/user.query.ts index 986fd2f3b3..76f5d840ad 100644 --- a/src/app/shared/user/user.query.ts +++ b/src/app/shared/user/user.query.ts @@ -18,6 +18,7 @@ export class UserQuery extends Query { canChangeUsername$: Observable = this.select((state) => state.extendedUserData ? state.extendedUserData.canChangeUsername : false ); + isUsernameChangeRequired$: Observable = this.select((state) => (state.user ? state.user.usernameChangeRequired : null)); username$: Observable = this.select((state) => (state.user ? state.user.username : null)); constructor(protected store: UserStore) { super(store); diff --git a/src/app/starredentries/starredentries.component.html b/src/app/starredentries/starredentries.component.html index 85cd3a1ac9..0cbfeb5aff 100644 --- a/src/app/starredentries/starredentries.component.html +++ b/src/app/starredentries/starredentries.component.html @@ -113,13 +113,12 @@
- +
- +
@@ -176,10 +175,10 @@

- +

diff --git a/src/app/starredentries/starredentries.component.scss b/src/app/starredentries/starredentries.component.scss index 0ec205473b..af8054cb38 100644 --- a/src/app/starredentries/starredentries.component.scss +++ b/src/app/starredentries/starredentries.component.scss @@ -1,8 +1,3 @@ -.entryType-icons { - align-self: center; - justify-content: center; -} - .starred-header { margin-left: 30px; margin-right: 30px; diff --git a/src/app/test/openapi-mocked-objects.ts b/src/app/test/openapi-mocked-objects.ts index 3e42f0ac38..2476ca5b86 100644 --- a/src/app/test/openapi-mocked-objects.ts +++ b/src/app/test/openapi-mocked-objects.ts @@ -1,4 +1,4 @@ -import { Workflow } from '../shared/openapi'; +import { Workflow, DockstoreTool, CollectionEntry } from '../shared/openapi'; export const sampleWorkflow1: Workflow = { type: 'whatever', @@ -13,4 +13,68 @@ export const sampleWorkflow1: Workflow = { sourceControl: 'github.com', source_control_provider: 'GITHUB', full_workflow_path: 'github.com/updatedOrganization/updatedWorkflowPath', + entryTypeMetadata: { + searchEntryType: 'workflows', + searchSupported: true, + sitePath: 'workflows', + term: 'workflow', + termPlural: 'workflows', + trsPrefix: '#workflow/', + trsSupported: true, + type: 'WORKFLOW', + }, +}; + +export const sampleTool1: DockstoreTool = { + id: 1, + default_cwl_path: 'sampleDefaultCWLPath', + default_dockerfile_path: 'sampleDefaultDockerfilePath', + default_wdl_path: 'sampleDefaultWDLPath', + gitUrl: 'sampleGitUrl', + mode: DockstoreTool.ModeEnum.MANUALIMAGEPATH, + name: 'sampleName', + namespace: 'sampleNamespace', + private_access: false, + registry_string: 'quay.io', + registry: DockstoreTool.RegistryEnum.QUAYIO, + toolname: 'sampleToolname', + defaultCWLTestParameterFile: 'sampleDefaultCWLTestParameterFile', + defaultWDLTestParameterFile: 'sampleDefaultWDLTestParameterFile', + tool_path: 'quay.io/sampleNamespace/sampleName', + entryTypeMetadata: { + searchEntryType: 'tools', + searchSupported: true, + sitePath: 'containers', + term: 'tool', + termPlural: 'tools', + trsPrefix: '', + trsSupported: true, + type: 'TOOL', + }, +}; + +// Tool Collection entry +export const sampleCollectionEntry1: CollectionEntry = { + categories: [], + dbUpdateDate: 1648777051404, + descriptorTypes: ['CWL'], + entryPath: 'quay.io/pancancer/pcawg-dkfz-workflow', + entryType: 'tool', + id: 188, + labels: ['variant-caller', 'pcawg'], + verified: true, + versionName: null, +}; + +// Notebook Collection entry with version +export const sampleCollectionEntry2: CollectionEntry = { + categories: [], + dbUpdateDate: 1681400016194, + descriptorTypes: ['jupyter'], + entryPath: 'github.com/david4096/simple-notebook/simplers', + entryType: 'notebook', + id: 21113, + labels: ['book'], + verified: false, + versionName: 'version', }; diff --git a/src/app/test/service-stubs.ts b/src/app/test/service-stubs.ts index 4086eb8bdb..18b337c74a 100644 --- a/src/app/test/service-stubs.ts +++ b/src/app/test/service-stubs.ts @@ -14,6 +14,7 @@ * limitations under the License. */ import { EntryType } from 'app/shared/enum/entry-type'; +import { EntryType as newEntryType, EntryTypeMetadata } from 'app/shared/openapi'; import { BehaviorSubject, EMPTY, Observable, of as observableOf } from 'rxjs'; import { SearchFields } from '../search/state/search.service'; import { TagEditorMode } from '../shared/enum/tagEditorMode.enum'; @@ -915,3 +916,71 @@ export class VersionModalStubService { export class OrgLogoStubService { setDefault(img: any) {} } + +export class EntryTypeMetadataStubService { + get(type: newEntryType): EntryTypeMetadata { + switch (type) { + case newEntryType.WORKFLOW: { + return { + searchEntryType: 'workflows', + searchSupported: true, + sitePath: 'workflows', + term: 'workflow', + termPlural: 'workflows', + trsPrefix: '#workflow/', + trsSupported: true, + type: 'WORKFLOW', + }; + } + case newEntryType.TOOL: { + return { + searchEntryType: 'tools', + searchSupported: true, + sitePath: 'containers', + term: 'tool', + termPlural: 'tools', + trsPrefix: '', + trsSupported: true, + type: 'TOOL', + }; + } + case newEntryType.SERVICE: { + return { + searchEntryType: '', + searchSupported: false, + sitePath: 'services', + term: 'service', + termPlural: 'services', + trsPrefix: '#service/', + trsSupported: true, + type: 'SERVICE', + }; + } + case newEntryType.APPTOOL: { + return { + searchEntryType: 'tools', + searchSupported: true, + sitePath: 'containers', + term: 'tool', + termPlural: 'tools', + trsPrefix: '', + trsSupported: true, + type: 'APPTOOL', + }; + } + case newEntryType.NOTEBOOK: { + return { + searchEntryType: '', + searchSupported: false, + sitePath: 'notebooks', + term: 'notebook', + termPlural: 'notebooks', + trsPrefix: '#notebook/', + trsSupported: true, + type: 'NOTEBOOK', + }; + } + } + return null; + } +} diff --git a/src/app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component.html b/src/app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component.html new file mode 100644 index 0000000000..b3efd1818f --- /dev/null +++ b/src/app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component.html @@ -0,0 +1,34 @@ +

Register {{ entryType | titlecase }}

+
+ +
+

+ Navigate to GitHub to install our GitHub app on your repositories/organizations. See our + + documentation open_in_new + + for how to use GitHub Apps to automatically sync your {{ entryType }} with GitHub. A .dockstore.yml file is required. +

+ + diff --git a/src/app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component.ts b/src/app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component.ts new file mode 100644 index 0000000000..04a00ae46b --- /dev/null +++ b/src/app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component.ts @@ -0,0 +1,58 @@ +/* + * Copyright 2023 OICR, UCSC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Component, Inject, OnInit } from '@angular/core'; +import { SessionQuery } from 'app/shared/session/session.query'; +import { UserQuery } from 'app/shared/user/user.query'; +import { Observable } from 'rxjs'; +import { AlertQuery } from '../../../shared/alert/state/alert.query'; +import { Dockstore } from '../../../shared/dockstore.model'; +import { RegisterWorkflowModalService } from '../register-workflow-modal.service'; +import { MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { EntryType } from 'app/shared/enum/entry-type'; + +@Component({ + selector: 'app-register-github-app-modal', + templateUrl: './register-github-app-modal.component.html', + styleUrls: ['../register-workflow-modal.component.scss'], +}) +export class RegisterGithubAppModalComponent implements OnInit { + public EntryType = EntryType; + public isRefreshing$: Observable; + public gitHubAppInstallationLink$: Observable; + public isUsernameChangeRequired$: Observable; + public username$: Observable; + Dockstore = Dockstore; + + constructor( + @Inject(MAT_DIALOG_DATA) public entryType: string, + private registerWorkflowModalService: RegisterWorkflowModalService, + private alertQuery: AlertQuery, + protected sessionQuery: SessionQuery, + private userQuery: UserQuery + ) {} + + ngOnInit() { + this.username$ = this.userQuery.username$; + this.isUsernameChangeRequired$ = this.userQuery.isUsernameChangeRequired$; + this.isRefreshing$ = this.alertQuery.showInfo$; + this.gitHubAppInstallationLink$ = this.sessionQuery.gitHubAppInstallationLink$; + } + + clearWorkflowRegisterError(): void { + this.registerWorkflowModalService.clearWorkflowRegisterError(); + } +} diff --git a/src/app/workflow/register-workflow-modal/register-workflow-modal.component.html b/src/app/workflow/register-workflow-modal/register-workflow-modal.component.html index 723c63ca86..bc996b916f 100644 --- a/src/app/workflow/register-workflow-modal/register-workflow-modal.component.html +++ b/src/app/workflow/register-workflow-modal/register-workflow-modal.component.html @@ -66,9 +66,9 @@

Register Workflow

add Manage Dockstore installations on GitHub diff --git a/src/app/workflow/register-workflow-modal/register-workflow-modal.component.ts b/src/app/workflow/register-workflow-modal/register-workflow-modal.component.ts index dbfccd8ce7..f4113acdd8 100644 --- a/src/app/workflow/register-workflow-modal/register-workflow-modal.component.ts +++ b/src/app/workflow/register-workflow-modal/register-workflow-modal.component.ts @@ -21,7 +21,7 @@ import { DescriptorLanguageService } from 'app/shared/entry/descriptor-language. import { SessionQuery } from 'app/shared/session/session.query'; import { UserQuery } from 'app/shared/user/user.query'; import { Observable, Subject } from 'rxjs'; -import { debounceTime, map, takeUntil } from 'rxjs/operators'; +import { debounceTime, takeUntil } from 'rxjs/operators'; import { AlertQuery } from '../../shared/alert/state/alert.query'; import { formInputDebounceTime } from '../../shared/constants'; import { Dockstore } from '../../shared/dockstore.model'; @@ -61,7 +61,7 @@ export class RegisterWorkflowModalComponent implements OnInit, AfterViewChecked, public Tooltip = Tooltip; public workflowPathPlaceholder: string; public gitHubAppInstallationLink$: Observable; - public usernameChangeRequired$: Observable; + public isUsernameChangeRequired$: Observable; public hostedWorkflow = { repository: '', descriptorType: Workflow.DescriptorTypeEnum.CWL, @@ -120,7 +120,7 @@ export class RegisterWorkflowModalComponent implements OnInit, AfterViewChecked, ngOnInit() { this.username$ = this.userQuery.username$; - this.usernameChangeRequired$ = this.userQuery.user$.pipe(map((user) => user.usernameChangeRequired)); + this.isUsernameChangeRequired$ = this.userQuery.isUsernameChangeRequired$; this.isRefreshing$ = this.alertQuery.showInfo$; this.gitHubAppInstallationLink$ = this.sessionQuery.gitHubAppInstallationLink$; this.registerWorkflowModalService.workflow.pipe(takeUntil(this.ngUnsubscribe)).subscribe((workflow: Service | BioWorkflow) => { diff --git a/src/app/workflow/workflow.component.html b/src/app/workflow/workflow.component.html index a6532353f2..b7c63779dc 100644 --- a/src/app/workflow/workflow.component.html +++ b/src/app/workflow/workflow.component.html @@ -104,7 +104,7 @@

Last update to this workflow version: {{ versionAgoMessage || 'n/a' }}Last update to this {{ entryType }} version: {{ versionAgoMessage || 'n/a' }}
Name - {{ + {{ workflow?.organization + '/' + workflow?.repository + (workflow?.workflowName ? '/' + workflow?.workflowName : '') }} diff --git a/src/assets/svg/my-nav/notebooks.svg b/src/assets/svg/my-nav/notebooks.svg new file mode 100644 index 0000000000..4619172929 --- /dev/null +++ b/src/assets/svg/my-nav/notebooks.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/svg/sub-nav/notebook.svg b/src/assets/svg/sub-nav/notebook.svg index 1b591f25b3..4a183d249e 100644 --- a/src/assets/svg/sub-nav/notebook.svg +++ b/src/assets/svg/sub-nav/notebook.svg @@ -1 +1,10 @@ - + + + + + + + + + + From 75066ec277b4eb0730f33c727ca86d97714853d2 Mon Sep 17 00:00:00 2001 From: Denis Yuen Date: Thu, 27 Apr 2023 17:33:02 -0400 Subject: [PATCH 002/128] merge fix --- cypress/e2e/group2/notebooks.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/e2e/group2/notebooks.ts b/cypress/e2e/group2/notebooks.ts index 845c737320..85887d66fa 100644 --- a/cypress/e2e/group2/notebooks.ts +++ b/cypress/e2e/group2/notebooks.ts @@ -99,7 +99,7 @@ describe('Dockstore notebooks', () => { cy.visit('/my-notebooks/' + name); // Check the labels on the tabs. cy.get('.mat-tab-list').contains('Info'); - cy.get('.mat-tab-list').contains('Code'); + cy.get('.mat-tab-list').contains('Preview'); cy.get('.mat-tab-list').contains('Versions'); cy.get('.mat-tab-list').contains('Files'); // Should initially display the Info tab. From ccea277f4bf7cbecfc0624d8d3558e7751d8ba40 Mon Sep 17 00:00:00 2001 From: Kimberley Chong <97123241+KimberleyChong@users.noreply.github.com> Date: Tue, 2 May 2023 10:20:08 -0400 Subject: [PATCH 003/128] fix some code smells (#1765) --- cypress/e2e/group2/sharedWorkflows.ts | 1 - src/app/container/container.component.html | 2 +- .../list/published-tools.datasource.spec.ts | 4 ++-- .../collection-entry-confirm-remove.html | 2 +- .../collection/collection.component.ts | 2 +- .../remove-collection.component.html | 2 +- .../state/extended-workflow.service.spec.ts | 9 +++++++-- .../source-file-tabs.component.ts | 2 +- .../starredentries.component.ts | 4 +--- .../workflow/versions/versions.component.ts | 3 +-- src/styles.scss | 20 +++++++------------ 11 files changed, 23 insertions(+), 28 deletions(-) diff --git a/cypress/e2e/group2/sharedWorkflows.ts b/cypress/e2e/group2/sharedWorkflows.ts index cdee10b1a1..66704964a2 100644 --- a/cypress/e2e/group2/sharedWorkflows.ts +++ b/cypress/e2e/group2/sharedWorkflows.ts @@ -15,7 +15,6 @@ */ import { cancelMatMenu, - clickFirstActionsButtonPublic, clickFirstActionsButtonPrivate, goToTab, goToUnexpandedSidebarEntry, diff --git a/src/app/container/container.component.html b/src/app/container/container.component.html index 6f181d6287..3dccd5cc85 100644 --- a/src/app/container/container.component.html +++ b/src/app/container/container.component.html @@ -399,7 +399,7 @@

diff --git a/src/app/containers/list/published-tools.datasource.spec.ts b/src/app/containers/list/published-tools.datasource.spec.ts index 1a244c0fbc..f617b59ab4 100644 --- a/src/app/containers/list/published-tools.datasource.spec.ts +++ b/src/app/containers/list/published-tools.datasource.spec.ts @@ -19,8 +19,8 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { inject, TestBed } from '@angular/core/testing'; import { ImageProviderService } from '../../shared/image-provider.service'; import { ProviderService } from '../../shared/provider.service'; -import { ContainersService, MetadataService } from '../../shared/swagger'; -import { ContainersStubService, MetadataStubService } from './../../test/service-stubs'; +import { ContainersService } from '../../shared/swagger'; +import { ContainersStubService } from './../../test/service-stubs'; import { PublishedToolsDataSource } from './published-tools.datasource'; describe('Service: PublishedToolsDataSource', () => { diff --git a/src/app/organizations/collection/collection-entry-confirm-remove.html b/src/app/organizations/collection/collection-entry-confirm-remove.html index c011095aa4..343667a566 100644 --- a/src/app/organizations/collection/collection-entry-confirm-remove.html +++ b/src/app/organizations/collection/collection-entry-confirm-remove.html @@ -6,7 +6,7 @@

Remove Entry

{{data.collectionName}}?

-
+
-
+
diff --git a/src/app/shared/state/extended-workflow.service.spec.ts b/src/app/shared/state/extended-workflow.service.spec.ts index 4ae658f3de..16705aacf0 100644 --- a/src/app/shared/state/extended-workflow.service.spec.ts +++ b/src/app/shared/state/extended-workflow.service.spec.ts @@ -16,8 +16,13 @@ import { inject, TestBed } from '@angular/core/testing'; import { sampleWorkflow1 } from '../../test/mocked-objects'; -import { DateStubService, DockstoreStubService, ImageProviderStubService, ProviderStubService } from '../../test/service-stubs'; -import { WorkflowStubService } from '../../test/service-stubs'; +import { + DateStubService, + DockstoreStubService, + ImageProviderStubService, + ProviderStubService, + WorkflowStubService, +} from '../../test/service-stubs'; import { DateService } from '../date.service'; import { DockstoreService } from '../dockstore.service'; import { ImageProviderService } from '../image-provider.service'; diff --git a/src/app/source-file-tabs/source-file-tabs.component.ts b/src/app/source-file-tabs/source-file-tabs.component.ts index e3daf481d6..ae633b4d9e 100644 --- a/src/app/source-file-tabs/source-file-tabs.component.ts +++ b/src/app/source-file-tabs/source-file-tabs.component.ts @@ -10,7 +10,7 @@ import { SourceFile, ToolDescriptor, WorkflowVersion } from 'app/shared/openapi' import { Observable } from 'rxjs'; import { finalize } from 'rxjs/operators'; import { WorkflowQuery } from '../shared/state/workflow.query'; -import { BioWorkflow, Notebook, Service, Tag } from '../shared/swagger'; +import { BioWorkflow, Notebook, Service } from '../shared/swagger'; import { SourceFileTabsService } from './source-file-tabs.service'; @Component({ diff --git a/src/app/starredentries/starredentries.component.ts b/src/app/starredentries/starredentries.component.ts index 2ff8d4d768..cf73abcd17 100644 --- a/src/app/starredentries/starredentries.component.ts +++ b/src/app/starredentries/starredentries.component.ts @@ -9,10 +9,9 @@ import { MatTabChangeEvent } from '@angular/material/tabs'; import { UntypedFormControl } from '@angular/forms'; import { ExtendedDockstoreTool } from 'app/shared/models/ExtendedDockstoreTool'; import { ExtendedWorkflow } from 'app/shared/models/ExtendedWorkflow'; -// import { DockstoreService } from 'app/shared/dockstore.service'; import { OrgLogoService } from '../shared/org-logo.service'; import { EntryType } from '../shared/enum/entry-type'; -import { ActivatedRoute, Params } from '@angular/router'; +import { ActivatedRoute } from '@angular/router'; import { Location } from '@angular/common'; import { Dockstore } from 'app/shared/dockstore.model'; @@ -45,7 +44,6 @@ export class StarredEntriesComponent extends Base implements OnInit { private imageProviderService: ImageProviderService, private providerService: ProviderService, private usersService: UsersService, - // private dockstoreService: DockstoreService private orgLogoService: OrgLogoService, private activatedRoute: ActivatedRoute, private location: Location diff --git a/src/app/workflow/versions/versions.component.ts b/src/app/workflow/versions/versions.component.ts index 8f66e8ee17..a7ae3e700c 100644 --- a/src/app/workflow/versions/versions.component.ts +++ b/src/app/workflow/versions/versions.component.ts @@ -22,9 +22,8 @@ import { AlertService } from '../../shared/alert/state/alert.service'; import { DateService } from '../../shared/date.service'; import { Dockstore } from '../../shared/dockstore.model'; import { DockstoreService } from '../../shared/dockstore.service'; -import { EntryType } from '../../shared/openapi'; +import { EntryType, VersionVerifiedPlatform } from '../../shared/openapi'; import { ExtendedWorkflow } from '../../shared/models/ExtendedWorkflow'; -import { VersionVerifiedPlatform } from '../../shared/openapi'; import { SessionQuery } from '../../shared/session/session.query'; import { ExtendedWorkflowQuery } from '../../shared/state/extended-workflow.query'; import { Workflow } from '../../shared/swagger/model/workflow'; diff --git a/src/styles.scss b/src/styles.scss index efda1115b4..802036df83 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -474,9 +474,6 @@ table a { table { border-collapse: collapse; -} - -table { border: 1px solid mat.get-color-from-palette($dockstore-app-gray, 7); } @@ -700,6 +697,13 @@ div.tabs > div > div { text-align: left; padding: 25px; line-height: 2; + background-color: #ffffff; + z-index: -2; + left: 0; + top: 30px; + bottom: 0; + right: 0; + overflow: auto; } div.tabs > div:not(:target) { @@ -718,16 +722,6 @@ div.tabs > div:hover > a { color: #fff; } -div.tabs > div > div { - background-color: #ffffff; - z-index: -2; - left: 0; - top: 30px; - bottom: 0; - right: 0; - overflow: auto; -} - div.tabs > div:not(:target) > div { position: absolute; } From 06add5707f02874017102779c6d4b1982efb5f99 Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Thu, 4 May 2023 10:03:13 -0700 Subject: [PATCH 004/128] add notebooks support to search https://ucsc-cgl.atlassian.net/browse/SEAB-5118 --- .../e2e/immutableDatabaseTests/notebooks.ts | 2 + .../e2e/immutableDatabaseTests/searchTable.ts | 26 +++ cypress/fixtures/searchTableResponse.json | 64 +++++ src/app/search/query-builder.service.ts | 15 +- src/app/search/search-entry-table.ts | 12 +- .../search-notebook-table.component.html | 80 +++++++ .../search-notebook-table.component.scss | 11 + .../search-notebook-table.component.spec.ts | 42 ++++ .../search-notebook-table.component.ts | 45 ++++ .../search-results.component.html | 34 +++ .../search-results.component.ts | 15 +- src/app/search/search.component.spec.ts | 2 + src/app/search/search.component.ts | 46 ++-- src/app/search/search.module.ts | 2 + src/app/search/state/search.query.ts | 21 +- src/app/search/state/search.service.spec.ts | 2 +- src/app/search/state/search.service.ts | 220 ++++++++++-------- src/app/search/state/search.store.ts | 4 + src/app/shared/tool-lister.ts | 1 - src/app/test/service-stubs.ts | 5 + src/app/workflows/list/list.component.html | 8 +- src/app/workflows/list/list.component.ts | 9 +- 22 files changed, 534 insertions(+), 132 deletions(-) create mode 100644 src/app/search/search-notebook-table/search-notebook-table.component.html create mode 100644 src/app/search/search-notebook-table/search-notebook-table.component.scss create mode 100644 src/app/search/search-notebook-table/search-notebook-table.component.spec.ts create mode 100644 src/app/search/search-notebook-table/search-notebook-table.component.ts diff --git a/cypress/e2e/immutableDatabaseTests/notebooks.ts b/cypress/e2e/immutableDatabaseTests/notebooks.ts index 5e350cb2e0..58d5f6dc92 100644 --- a/cypress/e2e/immutableDatabaseTests/notebooks.ts +++ b/cypress/e2e/immutableDatabaseTests/notebooks.ts @@ -23,6 +23,8 @@ describe('Notebooks Pages', () => { cy.url().should('contain', 'notebooks'); cy.get('[data-cy=header]').contains('h3', 'Notebooks'); cy.contains('Search notebooks'); + cy.contains('Format'); + cy.contains('Language'); }); it('should star notebook', () => { diff --git a/cypress/e2e/immutableDatabaseTests/searchTable.ts b/cypress/e2e/immutableDatabaseTests/searchTable.ts index 60c0242993..fa2e9a61ad 100644 --- a/cypress/e2e/immutableDatabaseTests/searchTable.ts +++ b/cypress/e2e/immutableDatabaseTests/searchTable.ts @@ -432,3 +432,29 @@ describe('search table items per page', () => { cy.get('[data-cy=share_button').should('be.visible').click(); }); }); + +// make sure that search table and tabs have been adjusted for notebooks +describe('check search table and tabs for notebooks', () => { + setTokenUserViewPort(); + beforeEach(() => { + cy.fixture('searchTableResponse').then((json) => { + cy.intercept('POST', '*' + ga4ghExtendedPath + '/tools/entry/_search', { + body: json, + }); + }); + }); + it('should contain notebooks-related information', () => { + cy.visit('/search?notebooks'); + // Check that Notebooks tab exists + cy.get('.mat-tab-label').contains('Notebooks'); + // Select notebooks tab + goToTab('Notebooks'); + cy.url().should('contain', 'notebooks'); + // Check that the notebooks variations are in the table header + cy.get('.mat-header-cell').contains('Language'); + cy.get('.mat-header-cell').contains('Format'); + // Check that the notebooks variations are in the table body + cy.get('.mat-cell').contains('jupyter', { matchCase: false }); + cy.get('.mat-cell').contains('python', { matchCase: false }); + }); +}); diff --git a/cypress/fixtures/searchTableResponse.json b/cypress/fixtures/searchTableResponse.json index 65d532ea3a..21c4f2975b 100644 --- a/cypress/fixtures/searchTableResponse.json +++ b/cypress/fixtures/searchTableResponse.json @@ -326,6 +326,70 @@ "defaultVersion": null, "all_authors": [{"name": null, "email": null, "role": null, "affiliation": null}] } + }, + { + "_index": "notebooks", + "_type": "_doc", + "_id": "61", + "_score": 1.0, + "_source": { + "aliases": {}, + "is_published": true, + "last_modified_date": null, + "isChecker": false, + "checker_id": null, + "repository": "n", + "source_control_provider": "GITHUB", + "descriptorType": "jupyter", + "descriptorTypeSubclass": "Python", + "full_workflow_path": "github.com/A/n", + "mode": "FULL", + "lastUpdated": 1520374057688, + "path": "github.com/A/n", + "starredUsers": [ + { + "id": 5 + } + ], + "workflowVersions": [ + { + "doiURL": null, + "verifiedSource": null, + "versionEditor": null, + "verified": false, + "referenceType": "UNSET", + "commitID": null, + "id": 63, + "doiStatus": "NOT_REQUESTED" + }, + { + "doiURL": null, + "verifiedSource": null, + "versionEditor": null, + "verified": false, + "referenceType": "UNSET", + "commitID": null, + "id": 64, + "doiStatus": "NOT_REQUESTED" + } + ], + "sourceControl": "github.com", + "has_checker": false, + "id": 11, + "last_modified": null, + "email": null, + "dbUpdateDate": null, + "author": null, + "defaultTestParameterFilePath": null, + "workflowName": null, + "workflow_path": "/notebook.ipynb", + "dbCreateDate": null, + "parent_id": null, + "organization": "A", + "gitUrl": "git@github.com:A/n.git", + "defaultVersion": null, + "all_authors": [{"name": null, "email": null, "role": null, "affiliation": null}] + } } ] } diff --git a/src/app/search/query-builder.service.ts b/src/app/search/query-builder.service.ts index 93a2a2ad28..3fcf95db50 100644 --- a/src/app/search/query-builder.service.ts +++ b/src/app/search/query-builder.service.ts @@ -49,6 +49,7 @@ export class QueryBuilderService { searchTerm: boolean, bucketStubs: any, filters: any, + exclusiveFilters: any, sortModeMap: any, index: 'workflows' | 'tools' | 'notebooks' ): string { @@ -58,7 +59,7 @@ export class QueryBuilderService { sidebarBody = this.excludeContent(sidebarBody); sidebarBody = sidebarBody.query('match', '_index', index); sidebarBody = this.appendQuery(sidebarBody, values, advancedSearchObject, searchTerm); - sidebarBody = this.appendAggregations(count, sidebarBody, bucketStubs, filters, sortModeMap); + sidebarBody = this.appendAggregations(count, sidebarBody, bucketStubs, filters, exclusiveFilters, sortModeMap); const builtSideBarBody = sidebarBody.build(); const sideBarQuery = JSON.stringify(builtSideBarBody); return sideBarQuery; @@ -73,6 +74,7 @@ export class QueryBuilderService { return body.rawOption('_source', [ 'all_authors', 'descriptorType', + 'descriptorTypeSubclass', 'full_workflow_path', 'gitUrl', 'name', @@ -104,13 +106,14 @@ export class QueryBuilderService { advancedSearchObject: AdvancedSearchObject, searchTerm: boolean, filters: any, + exclusiveFilters: any, index: 'tools' | 'workflows' | 'notebooks' ): string { let tableBody = bodybuilder().size(query_size); tableBody = this.sourceOptions(tableBody); tableBody = tableBody.query('match', '_index', index); tableBody = this.appendQuery(tableBody, values, advancedSearchObject, searchTerm); - tableBody = this.appendFilter(tableBody, null, filters); + tableBody = this.appendFilter(tableBody, null, filters, exclusiveFilters); // most popular results should be returned first tableBody = tableBody.sort('stars_count', 'desc'); const builtTableBody = tableBody.build(); @@ -138,10 +141,10 @@ export class QueryBuilderService { * @returns the new body builder object with filter applied * @memberof SearchComponent */ - appendFilter(body: any, aggKey: string, filters: any): any { + appendFilter(body: any, aggKey: string, filters: any, exclusiveFilters: any): any { filters.forEach((value: Set, key: string) => { value.forEach((insideFilter) => { - const isExclusiveFilter = this.searchService.exclusiveFilters.includes(key); + const isExclusiveFilter = exclusiveFilters.includes(key); if (aggKey === key && !isExclusiveFilter) { // Return some garbage filter because we've decided to append a filter, there's no turning back // return body; // <--- this does not work @@ -242,13 +245,13 @@ export class QueryBuilderService { * @returns {*} the new body builder object * @memberof SearchComponent */ - appendAggregations(count: number, body: any, bucketStubs: any, filters: any, sortModeMap: any): any { + appendAggregations(count: number, body: any, bucketStubs: any, filters: any, exclusiveFilters: any, sortModeMap: any): any { // go through buckets bucketStubs.forEach((key) => { const order = this.searchService.parseOrderBy(key, sortModeMap); if (count > 0) { body = body.agg('filter', key, key, (a) => { - return this.appendFilter(a, key, filters).aggregation('terms', key, key, { size: this.shard_size, order }); + return this.appendFilter(a, key, filters, exclusiveFilters).aggregation('terms', key, key, { size: this.shard_size, order }); }); } else { body = body.agg('terms', key, key, { size: this.shard_size, order }); diff --git a/src/app/search/search-entry-table.ts b/src/app/search/search-entry-table.ts index 57b9142b1c..8a0836449e 100644 --- a/src/app/search/search-entry-table.ts +++ b/src/app/search/search-entry-table.ts @@ -21,7 +21,7 @@ import { combineLatest, Observable, Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { Base } from '../shared/base'; import { DateService } from '../shared/date.service'; -import { AppTool, DockstoreTool, Workflow } from '../shared/swagger'; +import { AppTool, DockstoreTool, Workflow, Notebook } from '../shared/swagger'; import { SearchQuery } from './state/search.query'; import { SearchService } from './state/search.service'; @@ -34,9 +34,9 @@ export abstract class SearchEntryTable extends Base implements OnInit { protected ngUnsubscribe: Subject<{}> = new Subject(); public readonly displayedColumns = ['name', 'verified', 'all_authors', 'descriptorType', 'projectLinks', 'starredUsers']; - abstract readonly entryType: 'tool' | 'workflow'; - abstract dataSource: MatTableDataSource; - abstract privateNgOnInit(): Observable<(DockstoreTool | Workflow)[]>; + abstract readonly entryType: 'tool' | 'workflow' | 'notebook'; + abstract dataSource: MatTableDataSource; + abstract privateNgOnInit(): Observable<(DockstoreTool | Workflow | Notebook)[]>; constructor(protected dateService: DateService, protected searchQuery: SearchQuery, protected searchService: SearchService) { super(); @@ -55,8 +55,8 @@ export abstract class SearchEntryTable extends Base implements OnInit { // Must set data after paginator, just a material datatables thing. this.dataSource.data = entries || []; }); - this.dataSource.sortData = (data: DockstoreTool[] | AppTool[] | Workflow[], sort: MatSort) => { - return data.slice().sort((a: Workflow | AppTool | DockstoreTool, b: Workflow | AppTool | DockstoreTool) => { + this.dataSource.sortData = (data: DockstoreTool[] | AppTool[] | Workflow[] | Notebook[], sort: MatSort) => { + return data.slice().sort((a: Workflow | AppTool | DockstoreTool | Notebook, b: Workflow | AppTool | DockstoreTool | Notebook) => { return this.searchService.compareAttributes(a, b, sort.active, sort.direction, this.entryType); }); }; diff --git a/src/app/search/search-notebook-table/search-notebook-table.component.html b/src/app/search/search-notebook-table/search-notebook-table.component.html new file mode 100644 index 0000000000..c938baa0bc --- /dev/null +++ b/src/app/search/search-notebook-table/search-notebook-table.component.html @@ -0,0 +1,80 @@ +
+
+ +
+ + + Name + + + + + + Author + + + + Format + +
+ {{ notebook?.descriptorType | descriptorLanguage }} +
+
+
+ + Language + +
+ {{ notebook?.descriptorTypeSubclass }} +
+
+
+ + Links + + + + + + + + Stars + {{ !notebook?.starredUsers || notebook?.starredUsers.length === 0 ? '' : notebook?.starredUsers?.length }} + star_rate + + + + +
+ +
diff --git a/src/app/search/search-notebook-table/search-notebook-table.component.scss b/src/app/search/search-notebook-table/search-notebook-table.component.scss new file mode 100644 index 0000000000..db11452167 --- /dev/null +++ b/src/app/search/search-notebook-table/search-notebook-table.component.scss @@ -0,0 +1,11 @@ +.mat-column-descriptorType { + max-width: 90px; +} + +.mat-column-projectLinks { + max-width: 80px; +} + +td.mat-cell { + border-bottom-style: none; +} diff --git a/src/app/search/search-notebook-table/search-notebook-table.component.spec.ts b/src/app/search/search-notebook-table/search-notebook-table.component.spec.ts new file mode 100644 index 0000000000..8e3dbf3de7 --- /dev/null +++ b/src/app/search/search-notebook-table/search-notebook-table.component.spec.ts @@ -0,0 +1,42 @@ +/* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */ +import { NO_ERRORS_SCHEMA } from '@angular/core'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; + +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; +import { DateService } from '../../shared/date.service'; +import { DockstoreService } from '../../shared/dockstore.service'; +import { CustomMaterialModule } from '../../shared/modules/material.module'; +import { DockstoreStubService, SearchStubService } from '../../test/service-stubs'; +import { SearchService } from '../state/search.service'; +import { SearchNotebookTableComponent } from './search-notebook-table.component'; + +describe('SearchNotebookTableComponent', () => { + let component: SearchNotebookTableComponent; + let fixture: ComponentFixture; + + beforeEach( + waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [SearchNotebookTableComponent], + schemas: [NO_ERRORS_SCHEMA], + imports: [CustomMaterialModule, BrowserAnimationsModule, RouterTestingModule], + providers: [ + { provide: DockstoreService, useClass: DockstoreStubService }, + DateService, + { provide: SearchService, useClass: SearchStubService }, + ], + }).compileComponents(); + }) + ); + + beforeEach(() => { + fixture = TestBed.createComponent(SearchNotebookTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/search/search-notebook-table/search-notebook-table.component.ts b/src/app/search/search-notebook-table/search-notebook-table.component.ts new file mode 100644 index 0000000000..d9d7e995c1 --- /dev/null +++ b/src/app/search/search-notebook-table/search-notebook-table.component.ts @@ -0,0 +1,45 @@ +/* + * Copyright 2023 OICR, UCSC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Component, OnInit } from '@angular/core'; +import { MatTableDataSource } from '@angular/material/table'; +import { Observable } from 'rxjs'; +import { DateService } from '../../shared/date.service'; +import { Notebook } from '../../shared/swagger'; +import { SearchEntryTable } from '../search-entry-table'; +import { SearchQuery } from '../state/search.query'; +import { SearchService } from '../state/search.service'; + +/** + * this component refers to search page not notebook listing search + */ + +@Component({ + selector: 'app-search-notebook-table', + templateUrl: './search-notebook-table.component.html', + styleUrls: ['../../shared/styles/entry-table.scss', './search-notebook-table.component.scss'], +}) +export class SearchNotebookTableComponent extends SearchEntryTable implements OnInit { + public readonly displayedColumns = ['name', 'all_authors', 'descriptorType', 'descriptorTypeSubclass', 'projectLinks', 'starredUsers']; + readonly entryType = 'notebook'; + public dataSource: MatTableDataSource; + constructor(dateService: DateService, searchQuery: SearchQuery, searchService: SearchService) { + super(dateService, searchQuery, searchService); + } + + privateNgOnInit(): Observable> { + return this.searchQuery.notebooks$; + } +} diff --git a/src/app/search/search-results/search-results.component.html b/src/app/search/search-results/search-results.component.html index bb00aded64..5c8d951e00 100644 --- a/src/app/search/search-results/search-results.component.html +++ b/src/app/search/search-results/search-results.component.html @@ -80,3 +80,37 @@
+ +
+
+
+
+ +

A Notebook is a document containing code and text that can be interactively edited and run

+
+
+ +
+ + +
+
+
+
+ +
+
diff --git a/src/app/search/search-results/search-results.component.ts b/src/app/search/search-results/search-results.component.ts index c320c28236..77cdbb7b3d 100644 --- a/src/app/search/search-results/search-results.component.ts +++ b/src/app/search/search-results/search-results.component.ts @@ -33,12 +33,15 @@ export class SearchResultsComponent extends Base implements OnInit { faMinus = faMinus; public noToolHits$: Observable; public noWorkflowHits$: Observable; + public noNotebookHits$: Observable; public showWorkflowTagCloud$: Observable; public showToolTagCloud$: Observable; + public showNotebookTagCloud$: Observable; public selectedIndex$: Observable; public selectedTab: number; toolTagCloudData: Array; workflowTagCloudData: Array; + notebookTagCloudData: Array; options: CloudOptions = { width: 500, height: 200, @@ -54,13 +57,16 @@ export class SearchResultsComponent extends Base implements OnInit { super(); this.noWorkflowHits$ = this.searchQuery.noWorkflowHits$; this.noToolHits$ = this.searchQuery.noToolHits$; + this.noNotebookHits$ = this.searchQuery.noNotebookHits$; this.showToolTagCloud$ = this.searchQuery.showToolTagCloud$; this.showWorkflowTagCloud$ = this.searchQuery.showWorkflowTagCloud$; + this.showNotebookTagCloud$ = this.searchQuery.showNotebookTagCloud$; } ngOnInit() { this.createTagCloud('tool'); this.createTagCloud('workflow'); + this.createTagCloud('notebook'); } createTagCloud(type: string) { @@ -68,7 +74,7 @@ export class SearchResultsComponent extends Base implements OnInit { this.createToolTagCloud(toolQuery, type); } - clickTagCloudBtn(type: 'tool' | 'workflow') { + clickTagCloudBtn(type: 'tool' | 'workflow' | 'notebook') { this.searchService.setShowTagCloud(type); } @@ -95,11 +101,16 @@ export class SearchResultsComponent extends Base implements OnInit { this.toolTagCloudData = new Array(); } this.toolTagCloudData.push(theTag); - } else { + } else if (type === 'workflow') { if (!this.workflowTagCloudData) { this.workflowTagCloudData = new Array(); } this.workflowTagCloudData.push(theTag); + } else { + if (!this.notebookTagCloudData) { + this.notebookTagCloudData = new Array(); + } + this.notebookTagCloudData.push(theTag); } count--; }); diff --git a/src/app/search/search.component.spec.ts b/src/app/search/search.component.spec.ts index 2e053d9f8f..f58ad5f3cf 100644 --- a/src/app/search/search.component.spec.ts +++ b/src/app/search/search.component.spec.ts @@ -88,8 +88,10 @@ describe('SearchComponent', () => { shortUrl: null, workflowhit: null, toolhit: null, + notebookhit: null, showToolTagCloud: false, showWorkflowTagCloud: false, + showNotebookTagCloud: false, searchText: '', filterKeys: [], autocompleteTerms: [], diff --git a/src/app/search/search.component.ts b/src/app/search/search.component.ts index de538703ad..e5f59eaaa5 100644 --- a/src/app/search/search.component.ts +++ b/src/app/search/search.component.ts @@ -132,6 +132,7 @@ export class SearchComponent implements OnInit, OnDestroy { public toolTips: Map; private entryOrder: Map; private expandedPanels: Map; + private exclusiveFilters: Array; public basicSearchText$: Observable; private advancedSearchOptions = ['ANDSplitFilter', 'ANDNoSplitFilter', 'ORFilter', 'NOTFilter', 'searchMode']; public filterKeys$: Observable>; @@ -161,16 +162,24 @@ export class SearchComponent implements OnInit, OnDestroy { this.filterKeys$ = this.searchQuery.filterKeys$; this.suggestTerm$ = this.searchQuery.suggestTerm$; this.selectedIndex$ = this.searchQuery.savedTabIndex$; - // Initialize mappings - this.bucketStubs = this.searchService.initializeCommonBucketStubs(); - this.friendlyNames = this.searchService.initializeFriendlyNames(); - this.entryOrder = this.searchService.initializeEntryOrder(); - this.toolTips = this.searchService.initializeToolTips(); - this.expandedPanels = this.searchService.initializeExpandedPanels(); - + this.initializeMappings(0); this.clearFacetSearches(); } + private tabIndex: number | null = null; + + initializeMappings(newTabIndex: number) { + if (newTabIndex !== this.tabIndex) { + this.tabIndex = newTabIndex; + this.bucketStubs = this.searchService.initializeCommonBucketStubs(newTabIndex); + this.friendlyNames = this.searchService.initializeFriendlyNames(newTabIndex); + this.entryOrder = this.searchService.initializeEntryOrder(newTabIndex); + this.toolTips = this.searchService.initializeToolTips(newTabIndex); + this.expandedPanels = this.searchService.initializeExpandedPanels(newTabIndex); + this.exclusiveFilters = this.searchService.initializeExclusiveFilters(newTabIndex); + } + } + getKeys(bucketMap: Map): Array { return Array.from(bucketMap.keys()); } @@ -430,10 +439,11 @@ export class SearchComponent implements OnInit, OnDestroy { * Update Functions * =============================================== */ - // Called from one place which is only when the URL has parsed and query non-result state has been set updateQuery() { - const tabIndex = SearchService.convertTabIndexToEntryType(this.searchQuery.getValue().currentTabIndex); + const tabIndex = this.searchQuery.getValue().currentTabIndex; + const entryType = SearchService.convertTabIndexToEntryType(tabIndex); + this.initializeMappings(tabIndex); // Separating into 2 queries otherwise the queries interfere with each other (filter applied before aggregation) // The first query handles the aggregation and is used to update the sidebar buckets // The second query updates the result table @@ -445,8 +455,9 @@ export class SearchComponent implements OnInit, OnDestroy { this.searchTerm, this.bucketStubs, this.filters, + this.exclusiveFilters, this.sortModeMap, - tabIndex + entryType ); const tableQuery = this.queryBuilderService.getResultQuery( this.query_size, @@ -454,7 +465,8 @@ export class SearchComponent implements OnInit, OnDestroy { advancedSearchObject, this.searchTerm, this.filters, - tabIndex + this.exclusiveFilters, + entryType ); this.resetEntryOrder(); this.resetPageIndex(); @@ -487,9 +499,9 @@ export class SearchComponent implements OnInit, OnDestroy { this.extendedGA4GHService.toolsIndexSearch(value).subscribe( (hits: any) => { this.hits = hits.hits.hits; - const filteredHits: [Array, Array] = this.searchService.filterEntry(this.hits, this.query_size); + const filteredHits: [Array, Array, Array] = this.searchService.filterEntry(this.hits, this.query_size); const searchText = this.searchQuery.getValue().searchText; - this.searchService.setHits(filteredHits[0], filteredHits[1]); + this.searchService.setHits(filteredHits[0], filteredHits[1], filteredHits[2]); if (searchText.length > 0 && hits) { this.searchTerm = true; } @@ -520,8 +532,8 @@ export class SearchComponent implements OnInit, OnDestroy { const toolHits = results[0].hits.hits; const workflowHits = results[1].hits.hits; this.hits = toolHits.concat(workflowHits); - const filteredHits: [Array, Array] = this.searchService.filterEntry(this.hits, this.query_size); - this.searchService.setHits(filteredHits[0], filteredHits[1]); + const filteredHits: [Array, Array, Array] = this.searchService.filterEntry(this.hits, this.query_size); + this.searchService.setHits(filteredHits[0], filteredHits[1], filteredHits[2]); }); } @@ -538,7 +550,7 @@ export class SearchComponent implements OnInit, OnDestroy { resetEntryOrder() { this.entryOrder.clear(); - this.entryOrder = this.searchService.initializeEntryOrder(); + this.entryOrder = this.searchService.initializeEntryOrder(this.tabIndex); this.orderedBuckets.clear(); } @@ -548,7 +560,7 @@ export class SearchComponent implements OnInit, OnDestroy { resetExpansionPanels() { this.clearExpandedPanelsState(); - this.expandedPanels = this.searchService.initializeExpandedPanels(); + this.expandedPanels = this.searchService.initializeExpandedPanels(this.tabIndex); } /**=============================================== diff --git a/src/app/search/search.module.ts b/src/app/search/search.module.ts index 89e9c1a717..f9fe5406da 100644 --- a/src/app/search/search.module.ts +++ b/src/app/search/search.module.ts @@ -36,6 +36,7 @@ import { QueryBuilderService } from './query-builder.service'; import { SearchResultsComponent } from './search-results/search-results.component'; import { SearchToolTableComponent } from './search-tool-table/search-tool-table.component'; import { SearchWorkflowTableComponent } from './search-workflow-table/search-workflow-table.component'; +import { SearchNotebookTableComponent } from './search-notebook-table/search-notebook-table.component'; import { SearchComponent } from './search.component'; import { searchRouting } from './search.routing'; import { SearchService } from './state/search.service'; @@ -49,6 +50,7 @@ import { SearchAuthorsHtmlPipe } from './search-authors-html.pipe'; SearchResultsComponent, SearchToolTableComponent, SearchWorkflowTableComponent, + SearchNotebookTableComponent, BasicSearchComponent, IsAppToolPipe, ], diff --git a/src/app/search/state/search.query.ts b/src/app/search/state/search.query.ts index 1b2e2f631d..e46e4d1132 100644 --- a/src/app/search/state/search.query.ts +++ b/src/app/search/state/search.query.ts @@ -3,13 +3,14 @@ import { ActivatedRoute } from '@angular/router'; import { Query } from '@datorama/akita'; import { combineLatest, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { AppTool, DockstoreTool, Workflow } from '../../shared/swagger'; +import { AppTool, DockstoreTool, Workflow, Notebook } from '../../shared/swagger'; import { SearchState, SearchStore } from './search.store'; @Injectable({ providedIn: 'root' }) export class SearchQuery extends Query { public workflowhit$: Observable = this.select((state) => state.workflowhit); public toolhit$: Observable = this.select((state) => state.toolhit); + public notebookhit$: Observable = this.select((state) => state.notebookhit); public shortUrl$: Observable = this.select((state) => state.shortUrl); public workflows$: Observable> = this.workflowhit$.pipe( map((elasticSearchResults: Array) => @@ -21,13 +22,20 @@ export class SearchQuery extends Query { elasticSearchResults ? elasticSearchResults.map((elasticSearchResult) => elasticSearchResult._source) : null ) ); + public notebooks$: Observable> = this.notebookhit$.pipe( + map((elasticSearchResults: Array) => + elasticSearchResults ? elasticSearchResults.map((elasticSearchResult) => elasticSearchResult._source) : null + ) + ); public savedTabIndex$: Observable = this.select((state) => state.currentTabIndex); public noToolHits$: Observable = this.tools$.pipe(map((tools: Array) => this.haveNoHits(tools))); public noWorkflowHits$: Observable = this.workflows$.pipe(map((workflows: Array) => this.haveNoHits(workflows))); + public noNotebookHits$: Observable = this.notebooks$.pipe(map((notebooks: Array) => this.haveNoHits(notebooks))); public searchText$: Observable = this.select((state) => state.searchText); public basicSearchText$: Observable = this.searchText$.pipe(map((searchText) => this.joinComma(searchText))); public showToolTagCloud$: Observable = this.select((state) => state.showToolTagCloud); public showWorkflowTagCloud$: Observable = this.select((state) => state.showWorkflowTagCloud); + public showNotebookTagCloud$: Observable = this.select((state) => state.showNotebookTagCloud); public filterKeys$: Observable> = this.select((state) => state.filterKeys); public autoCompleteTerms$: Observable> = this.select((state) => state.autocompleteTerms); public hasAutoCompleteTerms$: Observable = this.autoCompleteTerms$.pipe(map((terms) => terms.length > 0)); @@ -36,12 +44,17 @@ export class SearchQuery extends Query { public suggestTerm$: Observable = this.select((state) => state.suggestTerm); public pageSize$: Observable = this.select((state) => state.pageSize); public pageIndex$: Observable = this.select((state) => state.pageIndex); - public noBasicSearchHits$: Observable = combineLatest([this.noToolHits$, this.noWorkflowHits$, this.searchText$]).pipe( - map(([noToolHits, noWorkflowHits, searchText]) => { + public noBasicSearchHits$: Observable = combineLatest([ + this.noToolHits$, + this.noWorkflowHits$, + this.noNotebookHits$, + this.searchText$, + ]).pipe( + map(([noToolHits, noWorkflowHits, noNotebookHits, searchText]) => { if (!searchText) { return false; } else { - return noToolHits && noWorkflowHits; + return noToolHits && noWorkflowHits && noNotebookHits; } }) ); diff --git a/src/app/search/state/search.service.spec.ts b/src/app/search/state/search.service.spec.ts index a6075bc819..29ecc8aa7f 100644 --- a/src/app/search/state/search.service.spec.ts +++ b/src/app/search/state/search.service.spec.ts @@ -109,7 +109,7 @@ describe('SearchService', () => { url: null, }, ]); - const filtered: [Array, Array] = service.filterEntry(elasticSearchResponse, 201); + const filtered: [Array, Array, Array] = service.filterEntry(elasticSearchResponse, 201); const tools = filtered[0]; const workflows = filtered[1]; const toolsSource = tools[0]._source; diff --git a/src/app/search/state/search.service.ts b/src/app/search/state/search.service.ts index 63481273f1..f75e030407 100644 --- a/src/app/search/state/search.service.ts +++ b/src/app/search/state/search.service.ts @@ -83,80 +83,87 @@ export class SearchService { * is displayed second, etc. * @private */ - private orderedFacetInfos: Array = [ - { friendlyName: 'Category', esName: 'categories.name.keyword', initiallyExpanded: true }, - { friendlyName: 'Language', esName: 'descriptorType', initiallyExpanded: true }, - { - friendlyName: 'Language Versions', - esName: 'descriptor_type_versions.keyword', - tooltip: 'Indicates that the tool or workflow contains at least one version that is written with the workflow language version', - initiallyExpanded: false, - }, - { - friendlyName: 'Engine Versions', - esName: 'engine_versions.keyword', - tooltip: 'The workflow engine versions required to run a workflow or tool', - initiallyExpanded: false, - }, - { friendlyName: 'Author', esName: 'all_authors.name.keyword', initiallyExpanded: true }, - { friendlyName: 'Registry', esName: 'registry', initiallyExpanded: true }, - { friendlyName: 'Source Control', esName: 'source_control_provider.keyword', initiallyExpanded: true }, - { friendlyName: 'Namespace', esName: 'namespace', initiallyExpanded: true }, - { friendlyName: 'Organization', esName: 'organization', initiallyExpanded: true }, - { friendlyName: 'Labels', esName: 'labels.value.keyword', initiallyExpanded: false }, - { - friendlyName: 'Private Access', - esName: 'private_access', - tooltip: "A private tool requires authentication to view on Docker's registry website and to pull the Docker image.", - initiallyExpanded: false, - exclusive: true, - }, - { - friendlyName: 'Verified Source', - esName: SearchFields.VERIFIED_SOURCE, - tooltip: 'Indicates which party performed the verification process on a tool or workflow.', - initiallyExpanded: false, - }, - { - friendlyName: 'Verified Platforms', - esName: 'verified_platforms.keyword', - tooltip: 'Indicates which platform a tool or workflow (at least one version) was successfully run on.', - initiallyExpanded: false, - }, - { friendlyName: 'Input File Formats', esName: 'input_file_formats.value.keyword', initiallyExpanded: false }, - { friendlyName: 'Output File Formats', esName: 'output_file_formats.value.keyword', initiallyExpanded: false }, - { - friendlyName: 'Verified', - esName: 'verified', - tooltip: 'Indicates that at least one version of a tool or workflow has been successfully run by our team or an outside party.', - initiallyExpanded: true, - exclusive: true, - }, - { - friendlyName: 'Has Checker Workflow', - esName: 'has_checker', - tooltip: - 'Checker workflows are additional workflows you can associate with a tool or workflow to ensure ' + - 'that, when given some inputs, it produces the expected outputs on a different platform other than the one it was developed on.', - initiallyExpanded: false, - exclusive: true, - }, - { - friendlyName: 'Open Data', - esName: 'openData', - tooltip: - 'Indicates whether an entry can be run with no additional access permissions, potentially via an included test parameter file referencing open data.', - initiallyExpanded: false, - exclusive: true, - }, - ]; - /** - * These are the terms which use "must" filters - * Example: Results returned can be private or public but never both - * @memberof SearchService - */ - public exclusiveFilters = this.orderedFacetInfos.filter((facetInfo) => facetInfo.exclusive).map((facetInfo) => facetInfo.esName); + private getOrderedFacetInfos(tabIndex: number): Array { + return [ + { friendlyName: 'Category', esName: 'categories.name.keyword', initiallyExpanded: true }, + { + friendlyName: tabIndex === SearchService.NOTEBOOKS_TAB_INDEX ? 'Format' : 'Language', + esName: 'descriptorType', + initiallyExpanded: true, + }, + { + friendlyName: 'Language Versions', + esName: 'descriptor_type_versions.keyword', + tooltip: 'Indicates that the tool or workflow contains at least one version that is written with the workflow language version', + initiallyExpanded: false, + }, + ...(tabIndex === SearchService.NOTEBOOKS_TAB_INDEX + ? [{ friendlyName: 'Language', esName: 'descriptorTypeSubclass', initiallyExpanded: true }] + : []), + { + friendlyName: 'Engine Versions', + esName: 'engine_versions.keyword', + tooltip: 'The workflow engine versions required to run a workflow or tool', + initiallyExpanded: false, + }, + { friendlyName: 'Author', esName: 'all_authors.name.keyword', initiallyExpanded: true }, + { friendlyName: 'Registry', esName: 'registry', initiallyExpanded: true }, + { friendlyName: 'Source Control', esName: 'source_control_provider.keyword', initiallyExpanded: true }, + { friendlyName: 'Namespace', esName: 'namespace', initiallyExpanded: true }, + { friendlyName: 'Organization', esName: 'organization', initiallyExpanded: true }, + { friendlyName: 'Labels', esName: 'labels.value.keyword', initiallyExpanded: false }, + { + friendlyName: 'Private Access', + esName: 'private_access', + tooltip: "A private tool requires authentication to view on Docker's registry website and to pull the Docker image.", + initiallyExpanded: false, + exclusive: true, + }, + { + friendlyName: 'Verified Source', + esName: SearchFields.VERIFIED_SOURCE, + tooltip: 'Indicates which party performed the verification process on a tool or workflow.', + initiallyExpanded: false, + }, + { + friendlyName: 'Verified Platforms', + esName: 'verified_platforms.keyword', + tooltip: 'Indicates which platform a tool or workflow (at least one version) was successfully run on.', + initiallyExpanded: false, + }, + { friendlyName: 'Input File Formats', esName: 'input_file_formats.value.keyword', initiallyExpanded: false }, + { friendlyName: 'Output File Formats', esName: 'output_file_formats.value.keyword', initiallyExpanded: false }, + { + friendlyName: 'Verified', + esName: 'verified', + tooltip: 'Indicates that at least one version of a tool or workflow has been successfully run by our team or an outside party.', + initiallyExpanded: true, + exclusive: true, + }, + ...(tabIndex !== SearchService.NOTEBOOKS_TAB_INDEX + ? [ + { + friendlyName: 'Has Checker Workflow', + esName: 'has_checker', + tooltip: + 'Checker workflows are additional workflows you can associate with a tool or workflow to ensure ' + + 'that, when given some inputs, it produces the expected outputs on a different platform other than the one it was developed on.', + initiallyExpanded: false, + exclusive: true, + }, + ] + : []), + { + friendlyName: 'Open Data', + esName: 'openData', + tooltip: + 'Indicates whether an entry can be run with no additional access permissions, potentially via an included test parameter file referencing open data.', + initiallyExpanded: false, + exclusive: true, + }, + ]; + } constructor( private searchStore: SearchStore, @@ -212,7 +219,7 @@ export class SearchService { // For sorting workflows by name, sort full_workflow_path if (entryType === 'tool' && attribute === 'name') { attribute = 'tool_path'; - } else if (entryType === 'workflow' && attribute === 'name') { + } else if ((entryType === 'workflow' || entryType == 'notebook') && attribute === 'name') { attribute = 'full_workflow_path'; } let aVal = a[attribute]; @@ -296,7 +303,7 @@ export class SearchService { this.setSearchText(suggestTerm); } - setShowTagCloud(entryType: 'tool' | 'workflow') { + setShowTagCloud(entryType: 'tool' | 'workflow' | 'notebook') { if (entryType === 'tool') { const showTagCloud: boolean = this.searchQuery.getValue().showToolTagCloud; this.searchStore.update((state) => { @@ -305,7 +312,7 @@ export class SearchService { showToolTagCloud: !showTagCloud, }; }); - } else { + } else if (entryType === 'workflow') { const showTagCloud: boolean = this.searchQuery.getValue().showWorkflowTagCloud; this.searchStore.update((state) => { return { @@ -313,6 +320,14 @@ export class SearchService { showWorkflowTagCloud: !showTagCloud, }; }); + } else { + const showTagCloud: boolean = this.searchQuery.getValue().showNotebookTagCloud; + this.searchStore.update((state) => { + return { + ...state, + showNotebookTagCloud: !showTagCloud, + }; + }); } } @@ -323,9 +338,10 @@ export class SearchService { * @param {number} query_size * @memberof SearchService */ - filterEntry(hits: Array, query_size: number): [Array, Array] { + filterEntry(hits: Array, query_size: number): [Array, Array, Array] { const workflowHits = []; const toolHits = []; + const notebookHits = []; hits.forEach((hit) => { hit['_source'] = this.providerService.setUpProvider(hit['_source']); if (workflowHits.length + toolHits.length < query_size - 1) { @@ -334,18 +350,21 @@ export class SearchService { toolHits.push(hit); } else if (hit['_index'] === 'workflows') { workflowHits.push(hit); + } else if (hit['_index'] === 'notebooks') { + notebookHits.push(hit); } } }); - return [toolHits, workflowHits]; + return [toolHits, workflowHits, notebookHits]; } - setHits(toolHits: Array, workflowHits: Array) { + setHits(toolHits: Array, workflowHits: Array, notebookHits: Array) { this.searchStore.update((state) => { return { ...state, toolhit: toolHits, workflowhit: workflowHits, + notebookhit: notebookHits, }; }); } @@ -600,33 +619,50 @@ export class SearchService { } // Initialization Functions - initializeCommonBucketStubs() { - return new Map(this.orderedFacetInfos.map((facetInfo) => [facetInfo.friendlyName, facetInfo.esName])); + initializeCommonBucketStubs(tabIndex: number) { + return new Map(this.getOrderedFacetInfos(tabIndex).map((facetInfo) => [facetInfo.friendlyName, facetInfo.esName])); } - initializeFriendlyNames() { - return new Map(this.orderedFacetInfos.map((facetInfo) => [facetInfo.esName, facetInfo.friendlyName])); + initializeFriendlyNames(tabIndex: number) { + return new Map(this.getOrderedFacetInfos(tabIndex).map((facetInfo) => [facetInfo.esName, facetInfo.friendlyName])); } - initializeToolTips() { + initializeToolTips(tabIndex: number) { return new Map( - this.orderedFacetInfos.filter((facetInfo) => facetInfo.tooltip).map((facetInfo) => [facetInfo.esName, facetInfo.tooltip]) + this.getOrderedFacetInfos(tabIndex) + .filter((facetInfo) => facetInfo.tooltip) + .map((facetInfo) => [facetInfo.esName, facetInfo.tooltip]) ); } - initializeEntryOrder() { - return new Map(this.orderedFacetInfos.map((facetInfo) => [facetInfo.esName, new SubBucket()])); + initializeEntryOrder(tabIndex: number) { + return new Map(this.getOrderedFacetInfos(tabIndex).map((facetInfo) => [facetInfo.esName, new SubBucket()])); } /** * Initialize expanded panels to default state or restore previous state from local storage */ - initializeExpandedPanels() { - if (localStorage.getItem(this.expandedPanelsStorageKey)) { - return new Map(JSON.parse(localStorage.getItem(this.expandedPanelsStorageKey))); - } else { - return new Map(this.orderedFacetInfos.map((facetInfo) => [facetInfo.esName, facetInfo.initiallyExpanded])); + initializeExpandedPanels(tabIndex: number) { + // Use the "canned" facet information to determine which panels should be expanded + const expandedPanels = new Map(this.getOrderedFacetInfos(tabIndex).map((facetInfo) => [facetInfo.esName, facetInfo.initiallyExpanded])); + // Override with any stored values + const storedValue = localStorage.getItem(this.expandedPanelsStorageKey); + if (storedValue) { + const storedMap = new Map(JSON.parse(storedValue)); + storedMap.forEach((expanded: boolean, key: string) => expandedPanels.set(key, expanded)); } + return expandedPanels; + } + + /** + * Generate a list of terms which use "must" filters + * Example: Results returned can be private or public but never both + * @memberof SearchService + */ + initializeExclusiveFilters(tabIndex: number): Array { + return this.getOrderedFacetInfos(tabIndex) + .filter((facetInfo) => facetInfo.exclusive) + .map((facetInfo) => facetInfo.esName); } // Functions called from HTML diff --git a/src/app/search/state/search.store.ts b/src/app/search/state/search.store.ts index 89b1c2ec2b..48894ff729 100644 --- a/src/app/search/state/search.store.ts +++ b/src/app/search/state/search.store.ts @@ -21,8 +21,10 @@ export interface SearchState { shortUrl: string; workflowhit: any; toolhit: any; + notebookhit: any; showToolTagCloud: boolean; showWorkflowTagCloud: boolean; + showNotebookTagCloud: boolean; searchText: string; filterKeys: Array; autocompleteTerms: Array; @@ -39,8 +41,10 @@ export function createInitialState(): SearchState { shortUrl: null, workflowhit: null, toolhit: null, + notebookhit: null, showToolTagCloud: false, showWorkflowTagCloud: false, + showNotebookTagCloud: false, searchText: '', filterKeys: [], autocompleteTerms: [], diff --git a/src/app/shared/tool-lister.ts b/src/app/shared/tool-lister.ts index a152b54d70..b5eb20abde 100644 --- a/src/app/shared/tool-lister.ts +++ b/src/app/shared/tool-lister.ts @@ -49,7 +49,6 @@ export abstract class ToolLister implements AfterViewInit, OnDestroy { } abstract type: 'tool' | 'workflow'; - abstract displayedColumns: Array; public dataSource: PublishedWorkflowsDataSource | PublishedToolsDataSource; @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator; @ViewChild(MatSort, { static: true }) sort: MatSort; diff --git a/src/app/test/service-stubs.ts b/src/app/test/service-stubs.ts index 158055ca58..d724d1f1cb 100644 --- a/src/app/test/service-stubs.ts +++ b/src/app/test/service-stubs.ts @@ -311,6 +311,11 @@ export class SearchStubService { ], ]); } + + initializeExclusiveFilters() { + return new Map([]); + } + handleLink(linkArray: Array) {} } diff --git a/src/app/workflows/list/list.component.html b/src/app/workflows/list/list.component.html index 1d1f1c8287..8576fc2263 100644 --- a/src/app/workflows/list/list.component.html +++ b/src/app/workflows/list/list.component.html @@ -57,6 +57,10 @@ Format {{ workflow?.descriptorType | uppercase }} + + Language + {{ workflow?.descriptorTypeSubclass }} + Links @@ -65,8 +69,8 @@ - - + +
diff --git a/src/app/workflows/list/list.component.ts b/src/app/workflows/list/list.component.ts index c7191b9b23..7fe788e223 100644 --- a/src/app/workflows/list/list.component.ts +++ b/src/app/workflows/list/list.component.ts @@ -35,7 +35,14 @@ import { PublishedWorkflowsDataSource } from './published-workflows.datasource'; export class ListWorkflowsComponent extends ToolLister implements OnInit { @Input() previewMode: boolean; - public displayedColumns = ['repository', 'verified', 'author', 'descriptorType', 'projectLinks', 'stars']; + public workflowColumns = ['repository', 'verified', 'author', 'descriptorType', 'projectLinks', 'stars']; + public notebookColumns = ['repository', 'author', 'descriptorType', 'descriptorTypeSubclass', 'projectLinks', 'stars']; + public typeToDisplayedColumns = { + workflow: this.workflowColumns, + service: this.workflowColumns, + appTool: this.workflowColumns, + notebook: this.notebookColumns, + }; public entryType$: Observable; public entryTypeDisplayName$: Observable; type: 'tool' | 'workflow' = 'workflow'; From 1eda8260679f0d78458c3a73a1547080836205c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 May 2023 13:53:35 -0400 Subject: [PATCH 005/128] Bump engine.io and socket.io (#1768) * Bump engine.io and socket.io Bumps [engine.io](https://github.com/socketio/engine.io) and [socket.io](https://github.com/socketio/socket.io). These dependencies needed to be updated together. Updates `engine.io` from 6.2.1 to 6.4.2 - [Release notes](https://github.com/socketio/engine.io/releases) - [Changelog](https://github.com/socketio/engine.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/engine.io/compare/6.2.1...6.4.2) Updates `socket.io` from 4.5.4 to 4.6.1 - [Release notes](https://github.com/socketio/socket.io/releases) - [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io/compare/4.5.4...4.6.1) --- updated-dependencies: - dependency-name: engine.io dependency-type: indirect - dependency-name: socket.io dependency-type: indirect ... Signed-off-by: dependabot[bot] * Update license file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- THIRD-PARTY-LICENSES.csv | 11 ++-- package-lock.json | 110 ++++++++++++++++----------------------- 2 files changed, 49 insertions(+), 72 deletions(-) diff --git a/THIRD-PARTY-LICENSES.csv b/THIRD-PARTY-LICENSES.csv index 4868a6186d..b39a25757d 100644 --- a/THIRD-PARTY-LICENSES.csv +++ b/THIRD-PARTY-LICENSES.csv @@ -529,8 +529,8 @@ "encodeurl@1.0.2","MIT","https://github.com/pillarjs/encodeurl" "encoding@0.1.13","MIT","https://github.com/andris9/encoding" "end-of-stream@1.4.4","MIT","https://github.com/mafintosh/end-of-stream" -"engine.io-parser@5.0.4","MIT","https://github.com/socketio/engine.io-parser" -"engine.io@6.2.1","MIT","https://github.com/socketio/engine.io" +"engine.io-parser@5.0.6","MIT","https://github.com/socketio/engine.io-parser" +"engine.io@6.4.2","MIT","https://github.com/socketio/engine.io" "enhanced-resolve@5.10.0","MIT","https://github.com/webpack/enhanced-resolve" "enquirer@2.3.6","MIT","https://github.com/enquirer/enquirer" "ent@2.2.0","MIT","https://github.com/substack/node-ent" @@ -1094,9 +1094,9 @@ "slice-ansi@4.0.0","MIT","https://github.com/chalk/slice-ansi" "slide@1.1.6","ISC","https://github.com/isaacs/slide-flow-control" "smart-buffer@4.2.0","MIT","https://github.com/JoshGlazebrook/smart-buffer" -"socket.io-adapter@2.4.0","MIT","https://github.com/socketio/socket.io-adapter" +"socket.io-adapter@2.5.2","MIT","https://github.com/socketio/socket.io-adapter" "socket.io-parser@4.2.1","MIT","https://github.com/socketio/socket.io-parser" -"socket.io@4.5.4","MIT","https://github.com/socketio/socket.io" +"socket.io@4.6.1","MIT","https://github.com/socketio/socket.io" "sockjs@0.3.24","MIT","https://github.com/sockjs/sockjs-node" "socks-proxy-agent@4.0.2","MIT","https://github.com/TooTallNate/node-socks-proxy-agent" "socks-proxy-agent@7.0.0","MIT","https://github.com/TooTallNate/node-socks-proxy-agent" @@ -1231,8 +1231,7 @@ "wrap-ansi@7.0.0","MIT","https://github.com/chalk/wrap-ansi" "wrappy@1.0.2","ISC","https://github.com/npm/wrappy" "ws@7.5.9","MIT","https://github.com/websockets/ws" -"ws@8.10.0","MIT","https://github.com/websockets/ws" -"ws@8.2.3","MIT","https://github.com/websockets/ws" +"ws@8.11.0","MIT","https://github.com/websockets/ws" "xtend@4.0.2","MIT","https://github.com/Raynos/xtend" "y18n@4.0.3","ISC","https://github.com/yargs/y18n" "y18n@5.0.8","ISC","https://github.com/yargs/y18n" diff --git a/package-lock.json b/package-lock.json index d63a01e4ca..964fb6ebd2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8070,9 +8070,9 @@ } }, "node_modules/engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", + "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -8084,16 +8084,16 @@ "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" + "ws": "~8.11.0" }, "engines": { "node": ">=10.0.0" } }, "node_modules/engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", + "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", "dev": true, "engines": { "node": ">=10.0.0" @@ -15908,16 +15908,16 @@ } }, "node_modules/socket.io": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", - "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", + "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", "dev": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.2.1", - "socket.io-adapter": "~2.4.0", + "engine.io": "~6.4.1", + "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.1" }, "engines": { @@ -15925,10 +15925,13 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "dev": true, + "dependencies": { + "ws": "~8.11.0" + } }, "node_modules/socket.io-parser": { "version": "4.2.1", @@ -17384,27 +17387,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", - "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/webpack-merge": { "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", @@ -17600,9 +17582,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -23560,9 +23542,9 @@ } }, "engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", + "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", "dev": true, "requires": { "@types/cookie": "^0.4.1", @@ -23574,13 +23556,13 @@ "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" + "ws": "~8.11.0" } }, "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", + "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", "dev": true }, "enhanced-resolve": { @@ -29367,24 +29349,27 @@ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, "socket.io": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", - "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", + "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", "debug": "~4.3.2", - "engine.io": "~6.2.1", - "socket.io-adapter": "~2.4.0", + "engine.io": "~6.4.1", + "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.1" } }, "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "dev": true, + "requires": { + "ws": "~8.11.0" + } }, "socket.io-parser": { "version": "4.2.1", @@ -30496,13 +30481,6 @@ "ajv-formats": "^2.1.1", "ajv-keywords": "^5.0.0" } - }, - "ws": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", - "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", - "dev": true, - "requires": {} } } }, @@ -30637,9 +30615,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "requires": {} }, From b551eb927f11a241dcfacfc36c1cf3bb7d6c6ab9 Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Thu, 4 May 2023 11:44:10 -0700 Subject: [PATCH 006/128] fix mathjax notebooks font url https://ucsc-cgl.atlassian.net/browse/SEAB-5435 --- .circleci/config.yml | 2 +- src/app/notebook/mathjax-config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ffab15c3c6..ef7c52e0de 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -386,7 +386,7 @@ jobs: # TODO: https://gui.dockstore.org/${CIRCLE_TAG:-$CIRCLE_BRANCH}-$(echo $CIRCLE_SHA1 | cut -c -7) can probably be made into a bash/circle-ci variable. - run: name: Swap for CDN paths - command: bash -i -c "find src \( -iname '*.html' -o -iname '*.ts' -o -iname '*.json' \) -exec sed -i 's~\(\.\./\)\+assets/~https://gui\.dockstore\.org/${CIRCLE_TAG:-$CIRCLE_BRANCH}-$(echo $CIRCLE_SHA1 | cut -c -7)/assets/~g' {} +" + command: bash -i -c "find src \( -iname '*.html' -o -iname '*.ts' -o -iname '*.js' -o -iname '*.json' \) -exec sed -i 's~\(\.\./\)\+assets/~https://gui\.dockstore\.org/${CIRCLE_TAG:-$CIRCLE_BRANCH}-$(echo $CIRCLE_SHA1 | cut -c -7)/assets/~g' {} +" - run: name: Build command: NODE_OPTIONS="--max-old-space-size=1610" bash -i -c 'npm run build.prod -- --deploy-url https://gui.dockstore.org/${CIRCLE_TAG:-$CIRCLE_BRANCH}-$(echo $CIRCLE_SHA1 | cut -c -7)/' diff --git a/src/app/notebook/mathjax-config.js b/src/app/notebook/mathjax-config.js index 057e3d52be..85222171f3 100644 --- a/src/app/notebook/mathjax-config.js +++ b/src/app/notebook/mathjax-config.js @@ -8,7 +8,7 @@ window.MathJax = { processEscapes: true, }, chtml: { - fontURL: '/assets/fonts/mathjax', + fontURL: '../../../../assets/fonts/mathjax', }, options: { // values adapted from https://docs.mathjax.org/en/latest/options/safe.html From 148f4d4b67fd29528ab6ddf49f4e3f494510aa87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 5 May 2023 13:49:27 -0400 Subject: [PATCH 007/128] Bump json5 from 2.2.1 to 2.2.3 (#1674) * Bump json5 from 2.2.1 to 2.2.3 Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] * Update license file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- THIRD-PARTY-LICENSES.csv | 2 +- package-lock.json | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/THIRD-PARTY-LICENSES.csv b/THIRD-PARTY-LICENSES.csv index b39a25757d..6fbffe0bd9 100644 --- a/THIRD-PARTY-LICENSES.csv +++ b/THIRD-PARTY-LICENSES.csv @@ -754,7 +754,7 @@ "json-schema@0.4.0","(AFL-2.1 OR BSD-3-Clause)","https://github.com/kriszyp/json-schema" "json-stable-stringify-without-jsonify@1.0.1","MIT","https://github.com/samn/json-stable-stringify" "json-stringify-safe@5.0.1","ISC","https://github.com/isaacs/json-stringify-safe" -"json5@2.2.1","MIT","https://github.com/json5/json5" +"json5@2.2.3","MIT","https://github.com/json5/json5" "jsonc-parser@3.1.0","MIT","https://github.com/microsoft/node-jsonc-parser" "jsonfile@6.1.0","MIT","https://github.com/jprichardson/node-jsonfile" "jsonparse@1.3.1","MIT","https://github.com/creationix/jsonparse" diff --git a/package-lock.json b/package-lock.json index 964fb6ebd2..12893943f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11092,9 +11092,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -25760,9 +25760,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "jsonc-parser": { From 81008d575b7550ef03d1d00f704d468fbcb3d389 Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Fri, 12 May 2023 08:48:24 -0700 Subject: [PATCH 008/128] make all "launch with' tooltips appear to the left https://ucsc-cgl.atlassian.net/browse/SEAB-5511 --- .../launch-third-party.component.html | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/app/workflow/launch-third-party/launch-third-party.component.html b/src/app/workflow/launch-third-party/launch-third-party.component.html index 50b0c0b408..fc5230ce20 100644 --- a/src/app/workflow/launch-third-party/launch-third-party.component.html +++ b/src/app/workflow/launch-third-party/launch-third-party.component.html @@ -37,11 +37,13 @@ [className]="'partner-launch'" [disabled]="(hasContent$ | async) === false" [matTooltip]="(hasContent$ | async) ? '' : 'The WDL workflow has no content.'" + matTooltipPosition="left" >
@@ -226,6 +241,7 @@ mat-button class="launch-with-button private-btn" [matTooltip]="(hasContent$ | async) ? 'Export this workflow to Nextflow Tower' : 'The Nextflow workflow has no content.'" + matTooltipPosition="left" target="_blank" rel="noopener" [attr.href]=" From 1ff633033c3be1fa552f7fe393579471d605ddd6 Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Fri, 12 May 2023 08:50:52 -0700 Subject: [PATCH 009/128] display Jupyter notebooks with nbformat < 4 https://ucsc-cgl.atlassian.net/browse/SEAB-5438 --- src/app/notebook/notebook.component.spec.ts | 8 +++++ src/app/notebook/notebook.component.ts | 33 +++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/app/notebook/notebook.component.spec.ts b/src/app/notebook/notebook.component.spec.ts index cf482d6312..20895ac358 100644 --- a/src/app/notebook/notebook.component.spec.ts +++ b/src/app/notebook/notebook.component.spec.ts @@ -184,4 +184,12 @@ describe('NotebookComponent', () => { expect(element.querySelector('.output img').getAttribute('height')).toBe('480'); confirmSuccess(); }); + + it('should do a reasonable job of displaying a format 3 notebook', () => { + const cell = '{"cell_type": "code", "input": "some input", "outputs": [{"output_type": "display_data", "html": "

some html

"}]}'; + const notebook = `{"nbformat": 3, "worksheets": [{ "cells": [${cell}] }]}`; + format(notebook); + expect(element.querySelector('.source').textContent).toContain('some input'); + expect(element.querySelector('.output').textContent).toContain('some html'); + }); }); diff --git a/src/app/notebook/notebook.component.ts b/src/app/notebook/notebook.component.ts index 74f0652514..3525f91962 100644 --- a/src/app/notebook/notebook.component.ts +++ b/src/app/notebook/notebook.component.ts @@ -62,9 +62,11 @@ export class NotebookComponent implements OnChanges { try { // Parse the JSON content of the notebook file. const json = JSON.parse(sourceFile.content); + // Find the cells and, if necessary, convert them to a representation that approximates nbformat 4. + const cells = json?.nbformat < 4 ? this.cellsToNbformat4(json?.worksheets[0]?.cells) : json?.cells; // If the `cells` property is an array, filter spam and "pass" the cells to the template. - if (this.isArray(json?.cells)) { - this.cells = this.filterSpam(json.cells); + if (this.isArray(cells)) { + this.cells = this.filterSpam(cells); this.error = false; return; } @@ -101,4 +103,31 @@ export class NotebookComponent implements OnChanges { isArray(value: any): boolean { return Array.isArray(value); } + + cellsToNbformat4(cells: Cell[]): Cell[] { + if (this.isArray(cells)) { + cells.forEach((cell) => this.cellToNbFormat4(cell)); + } + return cells; + } + + cellToNbFormat4(cell: Cell): void { + if (cell.cell_type === 'code') { + // Handle some field name changes: 'input' -> 'source', 'prompt_number' -> 'execution_count' + cell.source ??= cell['input']; + cell.execution_count ??= cell['prompt_number']; + // Convert each output. + if (this.isArray(cell.outputs)) { + cell.outputs.forEach( + (output) => + // Map the old representation of rich outputs to a "mime bundle'. + (output.data ??= { + 'text/plain': output['text'], + 'text/html': output['html'], + 'image/png': output['png'], + }) + ); + } + } + } } From dbf206707d61ff2980967e6236d691b984c8f52d Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Thu, 18 May 2023 13:56:33 -0700 Subject: [PATCH 010/128] improve Colab and add MyBinder notebook launch https://ucsc-cgl.atlassian.net/browse/SEAB-5121 --- .circleci/config.yml | 2 +- package.json | 6 +-- src/app/configuration.service.ts | 2 + src/app/shared/dockstore.model.ts | 2 + src/app/test/mocked-objects.ts | 1 + .../launch-third-party.component.html | 53 ++++++++++++++++--- .../launch-third-party.component.ts | 45 +++++++++++++++- 7 files changed, 97 insertions(+), 14 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ef7c52e0de..a91a813b39 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -578,7 +578,7 @@ commands: name: Install java command: | sudo apt update -y - sudo apt install openjdk-17-jdk -yq + sudo apt install openjdk-17-jre -yq - run: name: Install npm command: | diff --git a/package.json b/package.json index e3894a74ef..30031d16d5 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,10 @@ "version": "2.10.0", "license": "Apache License 2.0", "config": { - "webservice_version": "1.13.0", + "webservice_version": "1.15.0", "use_circle": true, - "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/9739/workflows/67d0d5f8-1ba7-491d-9496-745b999b9e26/jobs/32375/artifacts", - "circle_build_id": "32375", + "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/9891/workflows/f59191af-06ea-49ae-aefa-cdce0011cb7f/jobs/33457/artifacts", + "circle_build_id": "33457", "base_branch": "develop" }, "scripts": { diff --git a/src/app/configuration.service.ts b/src/app/configuration.service.ts index b9faeeaee9..590c86790e 100644 --- a/src/app/configuration.service.ts +++ b/src/app/configuration.service.ts @@ -45,6 +45,8 @@ export class ConfigurationService { Dockstore.BD_CATALYST_SEVEN_BRIDGES_IMPORT_URL = config.bdCatalystSevenBridgesImportUrl; Dockstore.BD_CATALYST_TERRA_IMPORT_URL = config.bdCatalystTerraImportUrl; Dockstore.ELWAZI_IMPORT_URL = config.elwaziImportUrl; + Dockstore.COLAB_IMPORT_URL = config.colabImportUrl; + Dockstore.MYBINDER_IMPORT_URL = config.mybinderImportUrl; Dockstore.GITHUB_CLIENT_ID = config.githubClientId; Dockstore.GITHUB_AUTH_URL = config.gitHubAuthUrl; diff --git a/src/app/shared/dockstore.model.ts b/src/app/shared/dockstore.model.ts index da1f8d68cc..61ab8b5cd0 100644 --- a/src/app/shared/dockstore.model.ts +++ b/src/app/shared/dockstore.model.ts @@ -43,6 +43,8 @@ export class Dockstore { static CAVATICA_IMPORT_URL = 'https://cavatica.sbgenomics.com/integration/trs/import'; static NEXTFLOW_TOWER_IMPORT_URL = 'https://tower.nf/launch'; static ELWAZI_IMPORT_URL = 'https://elwazi.terra.bio/#import-tool/dockstore'; + static COLAB_IMPORT_URL = 'https://colab.research.google.com/github/'; + static MYBINDER_IMPORT_URL = 'https://mybinder.org/v2/gh/'; static GITHUB_CLIENT_ID = 'will be filled in by configuration.service'; static GITHUB_AUTH_URL = 'https://github.com/login/oauth/authorize'; diff --git a/src/app/test/mocked-objects.ts b/src/app/test/mocked-objects.ts index 8eb1573f12..8be00815a4 100644 --- a/src/app/test/mocked-objects.ts +++ b/src/app/test/mocked-objects.ts @@ -140,6 +140,7 @@ export const sampleWorkflowVersion: WorkflowVersion = { id: 1, reference: '', name: 'master', + workflow_path: '/abc.wdl', }; export const sampleToolVersion: Tag = { diff --git a/src/app/workflow/launch-third-party/launch-third-party.component.html b/src/app/workflow/launch-third-party/launch-third-party.component.html index fc5230ce20..cea59307a9 100644 --- a/src/app/workflow/launch-third-party/launch-third-party.component.html +++ b/src/app/workflow/launch-third-party/launch-third-party.component.html @@ -263,14 +263,51 @@
diff --git a/src/app/workflow/launch-third-party/launch-third-party.component.ts b/src/app/workflow/launch-third-party/launch-third-party.component.ts index 83755cf570..7fc554c227 100644 --- a/src/app/workflow/launch-third-party/launch-third-party.component.ts +++ b/src/app/workflow/launch-third-party/launch-third-party.component.ts @@ -148,6 +148,27 @@ export class LaunchThirdPartyComponent extends Base implements OnChanges, OnInit * The workflow path encoded for use as a query parameter value. */ workflowPathAsQueryValue: string; + + /** + * The workflow organization, URL encoded. + */ + workflowOrganizationAsQueryValue: string; + + /** + * The workflow repository, URL encoded. + */ + workflowRepositoryAsQueryValue: string; + + /** + * The name of the selected version, URL encoded. + */ + selectedVersionNameAsQueryValue: string; + + /** + * The workflow path of the selected version, in absolute form, URL encoded. + */ + selectedVersionWorkflowPathAsQueryValue: string; + partner = CloudInstance.PartnerEnum; cloudInstances: Array; usersCloudInstances: Array; @@ -194,6 +215,14 @@ export class LaunchThirdPartyComponent extends Base implements OnChanges, OnInit map(([hasContent, hasHttpImports]) => this.sevenBridgesTooltip(hasContent, hasHttpImports, 'Cavatica')) ); + colabTooltip$: Observable = combineLatest([this.hasContent$]).pipe( + map(([hasContent]) => (hasContent ? 'Run this notebook in Google Colaboratory' : 'The notebook has no content.')) + ); + + mybinderTooltip$: Observable = combineLatest([this.hasContent$]).pipe( + map(([hasContent]) => (hasContent ? 'Run this notebook at mybinder.org' : 'The notebook has no content.')) + ); + constructor( private workflowsService: WorkflowsService, private descriptorTypeCompatService: DescriptorTypeCompatService, @@ -253,11 +282,23 @@ export class LaunchThirdPartyComponent extends Base implements OnChanges, OnInit this.trsUrl = this.trsUrlAsQueryValue = this.workflowPathAsQueryValue = null; if (this.workflow && this.selectedVersion) { this.trsUrl = this.descriptorsService.trsUrl(this.workflow.full_workflow_path, this.selectedVersion.name); - this.trsUrlAsQueryValue = new HttpUrlEncodingCodec().encodeValue(this.trsUrl); - this.workflowPathAsQueryValue = new HttpUrlEncodingCodec().encodeValue(this.workflow.full_workflow_path); + this.trsUrlAsQueryValue = this.encode(this.trsUrl); + this.workflowPathAsQueryValue = this.encode(this.workflow.full_workflow_path); + this.workflowOrganizationAsQueryValue = this.encode(this.workflow.organization); + this.workflowRepositoryAsQueryValue = this.encode(this.workflow.repository); + this.selectedVersionNameAsQueryValue = this.encode(this.selectedVersion.name); + this.selectedVersionWorkflowPathAsQueryValue = this.encode(this.prependIfNotPrefix('/', this.selectedVersion.workflow_path)); } } + private encode(value: string): string { + return new HttpUrlEncodingCodec().encodeValue(value); + } + + private prependIfNotPrefix(prefix: string, value: string): string { + return value.startsWith(prefix) ? value : prefix + value; + } + private sevenBridgesTooltip(hasContent: boolean, hasHttpImports, platform: string): string { if (!hasContent) { return 'The CWL has no content.'; From 5d44e63e8abb67e17562346531a3d522acccbb58 Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Fri, 19 May 2023 12:52:16 -0700 Subject: [PATCH 011/128] tint notebook stderr stream output red https://ucsc-cgl.atlassian.net/browse/SEAB-5445 --- src/app/notebook/notebook-stream-output.component.html | 2 +- src/app/notebook/notebook-stream-output.component.ts | 7 +++++++ src/notebooks.scss | 5 +++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/app/notebook/notebook-stream-output.component.html b/src/app/notebook/notebook-stream-output.component.html index 3b193d1a0d..2572065233 100644 --- a/src/app/notebook/notebook-stream-output.component.html +++ b/src/app/notebook/notebook-stream-output.component.html @@ -1,3 +1,3 @@ -
{{ text }}
+
{{ text }}
diff --git a/src/app/notebook/notebook-stream-output.component.ts b/src/app/notebook/notebook-stream-output.component.ts index 0fa3b44f1c..e69a9351dc 100644 --- a/src/app/notebook/notebook-stream-output.component.ts +++ b/src/app/notebook/notebook-stream-output.component.ts @@ -9,10 +9,17 @@ import { Output } from './notebook-types'; export class NotebookStreamOutputComponent implements OnChanges { @Input() output: Output; text: string; + name: string; constructor() {} ngOnChanges(): void { this.text = join(this.output?.text); + const name = join(this.output?.name); + if (name === 'stderr' || name === 'stdout') { + this.name = name; + } else { + this.name = undefined; + } } } diff --git a/src/notebooks.scss b/src/notebooks.scss index 278d5171f1..60e206b5e6 100644 --- a/src/notebooks.scss +++ b/src/notebooks.scss @@ -92,6 +92,11 @@ color: inherit; } + .output pre.stderr { + padding: 0 0.5em; + background-color: #fff0e8; + } + // These rules target the html generated by the Prism syntax highlighter. // This particular style was derived from a css file from the Prism distribution. .source { From f144f81adfce52b4ab00dfb11bc31b334bb6555c Mon Sep 17 00:00:00 2001 From: Nayeon Hyun <61166764+hyunnaye@users.noreply.github.com> Date: Tue, 23 May 2023 10:23:18 -0400 Subject: [PATCH 012/128] SEAB-5126: created integration test for snapshotting notebooks (#1782) * created integration test for snapshotting notebooks * oops * java build fix * removed wait --- cypress/e2e/group2/myworkflows.ts | 18 ++---------------- cypress/e2e/group2/notebooks.ts | 8 +++++++- cypress/support/commands.ts | 16 ++++++++++++++++ 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/cypress/e2e/group2/myworkflows.ts b/cypress/e2e/group2/myworkflows.ts index a764486f75..8695ca289e 100644 --- a/cypress/e2e/group2/myworkflows.ts +++ b/cypress/e2e/group2/myworkflows.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { Repository } from '../../../src/app/shared/openapi/model/repository'; -import { goToTab, isActiveTab, resetDB, setTokenUserViewPort, setTokenUserViewPortCurator } from '../../support/commands'; +import { goToTab, isActiveTab, resetDB, setTokenUserViewPort, setTokenUserViewPortCurator, snapshot } from '../../support/commands'; describe('Dockstore my workflows', () => { resetDB(); @@ -213,21 +213,7 @@ describe('Dockstore my workflows', () => { it('Should be able to snapshot', () => { gotoVersionsAndClickActions(); - cy.get('[data-cy=dockstore-snapshot-locked]').should('have.length', 0); - // The buttons should be present - cy.get('[data-cy=dockstore-request-doi-button]').its('length').should('be.gt', 0); - cy.get('[data-cy=dockstore-snapshot]').its('length').should('be.gt', 0); - - cy.get('[data-cy=dockstore-snapshot-unlocked]').its('length').should('be.gt', 0); - - cy.get('[data-cy=dockstore-snapshot]').first().click(); - - cy.get('[data-cy=snapshot-button]').click(); - - cy.wait(250); - cy.get('[data-cy=dockstore-snapshot-locked]').should('have.length', 1); - cy.get('td').contains('Actions').click(); - cy.get('[data-cy=dockstore-snapshot]').should('be.disabled'); + snapshot(); }); it('Request DOI should require linked account', () => { diff --git a/cypress/e2e/group2/notebooks.ts b/cypress/e2e/group2/notebooks.ts index 85887d66fa..1339060d67 100644 --- a/cypress/e2e/group2/notebooks.ts +++ b/cypress/e2e/group2/notebooks.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { goToTab, insertNotebooks, resetDB, setTokenUserViewPort } from '../../support/commands'; +import { goToTab, insertNotebooks, resetDB, setTokenUserViewPort, snapshot } from '../../support/commands'; describe('Dockstore notebooks', () => { resetDB(); @@ -126,6 +126,12 @@ describe('Dockstore notebooks', () => { cy.get('.markdown').contains('\\frac{123}{x}').should('not.exist'); }); + it('should be able to snapshot', () => { + cy.visit('/my-notebooks/' + name); + goToTab('Versions'); + cy.get('td').contains('Actions').click(); + snapshot(); + }); it('should have Preview tab with highlighted syntax', () => { substituteNotebookContent(['{ "cell_type": "code", "source": [ "import xyz;" ] }']); cy.visit('/notebooks/' + name); diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 6c9875cd9e..8dc6169cfb 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -228,3 +228,19 @@ export function addToCollection(path: string, organizationName: string, collecti cy.get('mat-option').contains(collectionDisplayName).click(); cy.get('[data-cy=addEntryToCollectionButton]').should('not.be.disabled').click(); } +export function snapshot() { + cy.get('[data-cy=dockstore-snapshot-locked]').should('have.length', 0); + // The buttons should be present + cy.get('[data-cy=dockstore-request-doi-button]').its('length').should('be.gt', 0); + cy.get('[data-cy=dockstore-snapshot]').its('length').should('be.gt', 0); + + cy.get('[data-cy=dockstore-snapshot-unlocked]').its('length').should('be.gt', 0); + + cy.get('[data-cy=dockstore-snapshot]').first().click(); + + cy.get('[data-cy=snapshot-button]').click(); + + cy.get('[data-cy=dockstore-snapshot-locked]').should('have.length', 1); + cy.get('td').contains('Actions').click(); + cy.get('[data-cy=dockstore-snapshot]').should('be.disabled'); +} From 79fffb31e06ebe618033e6d245c1e5c93879831d Mon Sep 17 00:00:00 2001 From: Nayeon Hyun <61166764+hyunnaye@users.noreply.github.com> Date: Wed, 24 May 2023 10:11:07 -0400 Subject: [PATCH 013/128] SEAB-5437: show notebooks in dashboard (#1783) * show notebooks in dashboard * merge * integration test fix * fixed typos * pr review changes * data-cy error fix * data-cy error fix * removed code --- cypress/e2e/group1/dashboard.ts | 27 +++++++++++++++++-- package.json | 4 +-- .../widget/entry-box/entry-box.component.html | 6 +++-- .../widget/entry-box/entry-box.component.ts | 7 +---- src/materialColorScheme.scss | 2 ++ src/styles.scss | 6 +++++ 6 files changed, 40 insertions(+), 12 deletions(-) diff --git a/cypress/e2e/group1/dashboard.ts b/cypress/e2e/group1/dashboard.ts index d21549f41a..5ba33ca2ab 100644 --- a/cypress/e2e/group1/dashboard.ts +++ b/cypress/e2e/group1/dashboard.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { resetDB, setTokenUserViewPort, verifyGithubLinkDashboard } from '../../support/commands'; +import { insertNotebooks, resetDB, setTokenUserViewPort, verifyGithubLinkDashboard } from '../../support/commands'; describe('Dockstore dashboard', () => { resetDB(); @@ -38,11 +38,23 @@ describe('Dockstore dashboard', () => { cy.contains('Services'); cy.contains('You have not registered any services.'); cy.get('[data-cy=no-entry-register-modal]').contains('service'); - cy.get('[data-cy=help-link') + cy.get('[data-cy=help-link]') .contains('Learn more about services') .should('have.attr', 'href') .and('include', 'getting-started-with-services'); }); + + it('no notebooks display correctly', () => { + cy.visit('/dashboard?notebooks'); + cy.contains('Notebooks'); + cy.contains('You have not registered any notebooks.'); + cy.get('[data-cy=no-entry-register-modal]').contains('notebook'); + cy.get('[data-cy=help-link]') + .contains('Learn more about notebooks') + .should('have.attr', 'href') + .and('include', 'getting-started/notebooks'); + }); + it('Registering new tool through Github redirects correctly', () => { verifyGithubLinkDashboard('Tool'); }); @@ -50,3 +62,14 @@ describe('Dockstore dashboard', () => { verifyGithubLinkDashboard('Workflow'); }); }); + +describe('should display added notebook correctly', () => { + setTokenUserViewPort(); + insertNotebooks(); + it('notebooks display correctly', () => { + cy.visit('/dashboard?notebooks'); + cy.contains('Notebooks'); + cy.get('[data-cy=dashboard-notebook-count-bubble]').contains(1); + cy.get('[data-cy=dashboard-entry-links]').contains('simple-notebook'); + }); +}); diff --git a/package.json b/package.json index 30031d16d5..efce1a3278 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "config": { "webservice_version": "1.15.0", "use_circle": true, - "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/9891/workflows/f59191af-06ea-49ae-aefa-cdce0011cb7f/jobs/33457/artifacts", - "circle_build_id": "33457", + "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/9905/workflows/869643df-1a9f-4ef9-b69d-d6e83d28b03b/jobs/33569/artifacts", + "circle_build_id": "33569", "base_branch": "develop" }, "scripts": { diff --git a/src/app/home-page/widget/entry-box/entry-box.component.html b/src/app/home-page/widget/entry-box/entry-box.component.html index 376e9c75e9..32e4926d97 100644 --- a/src/app/home-page/widget/entry-box/entry-box.component.html +++ b/src/app/home-page/widget/entry-box/entry-box.component.html @@ -20,7 +20,9 @@
{{ entryTypeLowerCase | titlecase }}s - {{ totalEntries }} + {{ + totalEntries + }} PREVIEW @@ -58,7 +60,7 @@
Recent Activity
- + {{ entry.prettyPath }}
{{ entry.lastUpdateDate | date: 'MMM d, yyyy' }}
diff --git a/src/app/home-page/widget/entry-box/entry-box.component.ts b/src/app/home-page/widget/entry-box/entry-box.component.ts index 8612da79ca..d067d4ab65 100644 --- a/src/app/home-page/widget/entry-box/entry-box.component.ts +++ b/src/app/home-page/widget/entry-box/entry-box.component.ts @@ -83,14 +83,9 @@ export class EntryBoxComponent extends Base implements OnInit { this.helpLink = Dockstore.DOCUMENTATION_URL + '/getting-started/notebooks/notebooks.html'; this.allEntriesLink = '/my-notebooks/'; this.entryTypeParam = 'NOTEBOOKS'; - // Not loading entries for Notebooks - remove when supported - this.isLoading = false; } - // Do not get Notebook entries, unsupported - remove when suported - if (this.entryType !== NewEntryType.NOTEBOOK) { - this.getMyEntries(); - } + this.getMyEntries(); } getMyEntries() { diff --git a/src/materialColorScheme.scss b/src/materialColorScheme.scss index dc085477b9..490626b68c 100644 --- a/src/materialColorScheme.scss +++ b/src/materialColorScheme.scss @@ -197,6 +197,8 @@ $workflow-selection-color: #d2fbf0; $service-color: #ff6c44; $service-selection-color: #ffdbcf; +$notebook-selection-color: #dde1f2; + $org-selection-color: #dde1f2; // Color used to indicate success in general (of an operation, verified badge, etc). diff --git a/src/styles.scss b/src/styles.scss index 802036df83..0be97462d4 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -894,6 +894,12 @@ app-workflow-sidebar-accordion background: $workflow-selection-color !important; } +// Set the background to the color associated with notebooks (purple). +// Used to set the background color in bubbles. +.notebook-background { + background: $notebook-selection-color !important; +} + // Set the background to the color associated with services (orange). // Used to set the background color in bubbles. .service-background { From 246adc1c61184b7b0af0ee9dbbe6d244e16ba132 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 May 2023 11:42:49 -0400 Subject: [PATCH 014/128] Bump socket.io-parser from 4.2.1 to 4.2.3 (#1786) * Bump socket.io-parser from 4.2.1 to 4.2.3 Bumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.2.1 to 4.2.3. - [Release notes](https://github.com/socketio/socket.io-parser/releases) - [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io-parser/compare/4.2.1...4.2.3) --- updated-dependencies: - dependency-name: socket.io-parser dependency-type: indirect ... Signed-off-by: dependabot[bot] * Update license file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- THIRD-PARTY-LICENSES.csv | 2 +- package-lock.json | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/THIRD-PARTY-LICENSES.csv b/THIRD-PARTY-LICENSES.csv index 6fbffe0bd9..19165bdecf 100644 --- a/THIRD-PARTY-LICENSES.csv +++ b/THIRD-PARTY-LICENSES.csv @@ -1095,7 +1095,7 @@ "slide@1.1.6","ISC","https://github.com/isaacs/slide-flow-control" "smart-buffer@4.2.0","MIT","https://github.com/JoshGlazebrook/smart-buffer" "socket.io-adapter@2.5.2","MIT","https://github.com/socketio/socket.io-adapter" -"socket.io-parser@4.2.1","MIT","https://github.com/socketio/socket.io-parser" +"socket.io-parser@4.2.3","MIT","https://github.com/socketio/socket.io-parser" "socket.io@4.6.1","MIT","https://github.com/socketio/socket.io" "sockjs@0.3.24","MIT","https://github.com/sockjs/sockjs-node" "socks-proxy-agent@4.0.2","MIT","https://github.com/TooTallNate/node-socks-proxy-agent" diff --git a/package-lock.json b/package-lock.json index 12893943f3..c8dcb0e47f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15934,9 +15934,9 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.3.tgz", + "integrity": "sha512-JMafRntWVO2DCJimKsRTh/wnqVvO4hrfwOqtO7f+uzwsQMuxO6VwImtYxaQ+ieoyshWOTJyV0fA21lccEXRPpQ==", "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", @@ -29372,9 +29372,9 @@ } }, "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.3.tgz", + "integrity": "sha512-JMafRntWVO2DCJimKsRTh/wnqVvO4hrfwOqtO7f+uzwsQMuxO6VwImtYxaQ+ieoyshWOTJyV0fA21lccEXRPpQ==", "dev": true, "requires": { "@socket.io/component-emitter": "~3.1.0", From 7d361a548e7b3561c593541992966d884690b2f8 Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Thu, 25 May 2023 08:06:32 -0700 Subject: [PATCH 015/128] add rudimentary smoke tests for notebooks https://ucsc-cgl.atlassian.net/browse/SEAB-5530 --- .../smokeTests/sharedTests/basic-enduser.ts | 102 ++++++++++++++++-- package.json | 4 +- scripts/run-webservice-script.sh | 2 +- 3 files changed, 96 insertions(+), 12 deletions(-) diff --git a/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts b/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts index 0b8b6ee75f..20cc0ff29f 100644 --- a/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts +++ b/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts @@ -2,17 +2,30 @@ import { ga4ghPath } from '../../../../src/app/shared/constants'; import { goToTab } from '../../../support/commands'; import { ToolDescriptor } from '../../../../src/app/shared/swagger/model/toolDescriptor'; -// Test an entry, these should be ambiguous between tools and workflows. +// Test an entry, these should be ambiguous between tools, workflows, and notebooks. describe('run stochastic smoke test', () => { testEntry('Tools'); testEntry('Workflows'); + testEntry('Notebooks'); }); function testEntry(tab: string) { - beforeEach('get random entry on first page', () => { - cy.visit('/search'); + function goToRandomEntry() { + // Notebooks search is not functional in staging or prod in 1.14. + // TODO after 1.15 release: remove the following code path + if (tab === 'Notebooks' && isStagingOrProd()) { + cy.visit('/notebooks'); + cy.get('[data-cy=entry-link]') + .eq(0) + .then((el) => { + cy.log(el.prop('href')); // log the href in case a test fails + cy.visit(el.prop('href')); + }); + return; + } + cy.visit('/search' + (tab === 'Notebooks' ? '?notebooks' : '')); cy.get('[data-cy=workflowColumn] a'); goToTab(tab); - const linkName = tab === 'Workflows' ? 'workflowColumn' : 'toolNames'; + const linkName = getLinkName(tab); // select a random entry on the first page and navigate to it let chosen_index = 0; cy.get('[data-cy=' + linkName + ']') @@ -26,12 +39,12 @@ function testEntry(tab: string) { cy.visit(el.prop('href')); }); }); - }); + } it('check info tab', () => { - // test export to zip button + goToRandomEntry(); goToTab('Info'); - + // test export to zip button cy.get('[data-cy=downloadZip]').within(() => { cy.get('a').then((el) => { cy.request(el.prop('href')).its('status').should('eq', 200); @@ -40,18 +53,38 @@ function testEntry(tab: string) { }); it('check files tab', () => { + goToRandomEntry(); goToTab('Files'); cy.url().should('contain', '?tab=files'); - cy.contains('Descriptor Files'); + cy.contains(tab === 'Notebooks' ? 'Notebook Files' : 'Descriptor Files'); }); it('check versions tab', () => { + goToRandomEntry(); goToTab('Versions'); cy.url().should('contain', '?tab=versions'); cy.get('[data-cy=versionRow]').should('have.length.of.at.least', 1); }); } +function getLinkName(tab: string): string { + switch (tab) { + case 'Tools': + return 'toolNames'; + case 'Workflows': + return 'workflowColumn'; + case 'Notebooks': + return 'notebookColumn'; + default: + throw new Error('unknown tab'); + } +} + +function isStagingOrProd() { + const baseUrl = Cypress.config('baseUrl'); + return baseUrl === 'https://staging.dockstore.org' || baseUrl === 'https://dockstore.org'; +} + const organizations = [['Broad Institute']]; describe('Check organizations page', () => { it('has multiple organizations and org with content', () => { @@ -179,11 +212,18 @@ const workflowVersionTuples = [ 'Galaxy', ], ]; -// This test shouldn't be run for smoke tests as it depends on 'real' entries +const notebookVersionTuples = [ + // TODO when we add notebooks that will persist in the prod database, detail a few here +]; + +// These tests shouldn't be run for smoke tests as it depends on 'real' entries if (Cypress.config('baseUrl') !== 'http://localhost:4200') { describe('Monitor workflows', () => { workflowVersionTuples.forEach((t) => testWorkflow(t[0], t[1], t[2], t[3], t[4])); }); + describe('Monitor notebooks', () => { + notebookVersionTuples.forEach((t) => testNotebook(t[0], t[1], t[2], t[3], t[4], t[5])); + }); } function testWorkflow(url: string, version1: string, version2: string, trsUrl: string, type: string) { @@ -282,6 +322,50 @@ function testWorkflow(url: string, version1: string, version2: string, trsUrl: s }); } +function testNotebook(url: string, version1: string, version2: string, trsUrl: string, path: string, type: string) { + it('notebook tabs work for ' + url, () => { + cy.visit('/notebooks/' + url + ':' + version1); + + goToTab('Info'); + cy.url().should('contain', '?tab=info'); + cy.contains('mat-card-header', 'Notebook Information'); + + goToTab('Preview'); + cy.url().should('contain', '?tab=preview'); + + goToTab('Versions'); + cy.url().should('contain', '?tab=versions'); + + // check that clicking on a different version goes to that version's url + if (version1 !== version2) { + cy.contains('[data-cy=versionName]', version2).click(); + cy.url().should('contain', url + ':' + version2); + } + + goToTab('Files'); + cy.url().should('contain', '?tab=files'); + + // Check the "Launch with" buttons. + // Notebooks "Launch with" is not fully functional in staging or prod in 1.14. + // TODO after 1.15 release: make the following code execute in all cases. + if (!isStagingOrProd()) { + let launchWithTuples: any[] = []; + if (type === 'Jupyter') { + launchWithTuples = [ + ['colabLaunchWith', 'blob/' + version2 + path], + ['mybinderLaunchWith', version2 + '?labpath=' + path], + ]; + } + launchWithTuples.forEach((t) => { + cy.get('[data-cy=' + t[0] + ']').should(($el) => { + // @ts-ignore + expect($el.attr('href')).to.contain(t[1]); + }); + }); + } + }); +} + // TODO: uncomment after tooltester logs are fixed // describe('Test existence of Logs', () => { // it('Find Logs in Workflows', () => { diff --git a/package.json b/package.json index ea409de2e6..be9ef54ae7 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "config": { "webservice_version": "1.15.0", "use_circle": true, - "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/9912/workflows/6645ef57-f01a-4d65-8b0e-36d3dbd95081/jobs/33626/artifacts", - "circle_build_id": "33626", + "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/9918/workflows/b8714bc1-49a2-424d-8b14-527bc3d4a4e3/jobs/33676/artifacts", + "circle_build_id": "33676", "base_branch": "develop" }, "scripts": { diff --git a/scripts/run-webservice-script.sh b/scripts/run-webservice-script.sh index a587a55aee..bd93202ae5 100755 --- a/scripts/run-webservice-script.sh +++ b/scripts/run-webservice-script.sh @@ -16,4 +16,4 @@ psql -h localhost -c "create user dockstore with password 'dockstore' createdb;" psql -h localhost -c "ALTER USER dockstore WITH superuser;" -U postgres psql -h localhost -c 'create database webservice_test with owner = dockstore;' -U postgres psql -h localhost -f test/${DB_DUMP:-db_dump.sql} webservice_test -U postgres -java -jar dockstore-webservice.jar db migrate -i 1.5.0,1.6.0,1.7.0,add_service_1.7.0,1.8.0,1.9.0,1.10.0,alter_test_user_1.10.2,1.11.0,1.12.0,1.13.0,1.14.0 test/web.yml +java -jar dockstore-webservice.jar db migrate -i 1.5.0,1.6.0,1.7.0,add_service_1.7.0,1.8.0,1.9.0,1.10.0,alter_test_user_1.10.2,1.11.0,1.12.0,1.13.0,1.14.0,add_notebook_1.14.0 test/web.yml From dc77aa3f7b02c8002d5e9e6b4ff20446fcce9963 Mon Sep 17 00:00:00 2001 From: Ying Yang <68610185+y-ng@users.noreply.github.com> Date: Thu, 25 May 2023 17:31:21 -0400 Subject: [PATCH 016/128] SEAB-5479: add period (#1779) --- src/app/about/about.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/about/about.component.html b/src/app/about/about.component.html index a18d70c400..6b84932254 100644 --- a/src/app/about/about.component.html +++ b/src/app/about/about.component.html @@ -108,7 +108,7 @@

You can register your workflows and tools on Dockstore in three ways:

target="_blank" rel="noopener noreferrer" >github apps). You are responsible for ensuring that your descriptors point at valid Docker images + >). You are responsible for ensuring that your descriptors point at valid Docker images.
  • You can use our hosted workflows service to store tools and workflows directly on dockstore.org in order to quickly get From e208c633aadb0adc59c651703dba7b330ebc958a Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Fri, 26 May 2023 15:47:04 -0700 Subject: [PATCH 017/128] add colab and mybinder notebooks "launch with" icons https://ucsc-cgl.atlassian.net/browse/SEAB-5545 --- .../launch-third-party.component.html | 4 ++-- src/assets/images/thirdparty/binder.svg | 13 +++++++++++++ src/assets/images/thirdparty/colab.svg | 7 +++++++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 src/assets/images/thirdparty/binder.svg create mode 100644 src/assets/images/thirdparty/colab.svg diff --git a/src/app/workflow/launch-third-party/launch-third-party.component.html b/src/app/workflow/launch-third-party/launch-third-party.component.html index cea59307a9..f97d7df95a 100644 --- a/src/app/workflow/launch-third-party/launch-third-party.component.html +++ b/src/app/workflow/launch-third-party/launch-third-party.component.html @@ -283,7 +283,7 @@ " [disabled]="(hasContent$ | async) === false" data-cy="colabLaunchWith" - >Google ColabGoogle Colab iconGoogle Colab mybinder.orgBinder iconmybinder.org
  • diff --git a/src/assets/images/thirdparty/binder.svg b/src/assets/images/thirdparty/binder.svg new file mode 100644 index 0000000000..2e82ba6b0a --- /dev/null +++ b/src/assets/images/thirdparty/binder.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/src/assets/images/thirdparty/colab.svg b/src/assets/images/thirdparty/colab.svg new file mode 100644 index 0000000000..accb455e02 --- /dev/null +++ b/src/assets/images/thirdparty/colab.svg @@ -0,0 +1,7 @@ + + + + + + + From 5fc1ed6a35e8be101189fca3cd0f127689355099 Mon Sep 17 00:00:00 2001 From: Denis Yuen Date: Mon, 29 May 2023 10:30:02 -0400 Subject: [PATCH 018/128] more stub fix (#1790) * more stub fix * duplicates --- src/app/workflow/info-tab/info-tab.component.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/app/workflow/info-tab/info-tab.component.ts b/src/app/workflow/info-tab/info-tab.component.ts index c966c50269..a9edfbff58 100644 --- a/src/app/workflow/info-tab/info-tab.component.ts +++ b/src/app/workflow/info-tab/info-tab.component.ts @@ -133,8 +133,13 @@ export class InfoTabComponent extends EntryTab implements OnInit, OnChanges { this.authors = [...this.selectedVersion.authors, ...orcidAuthors]; }); } else { - this.isValidVersion = false; + this.currentVersion = null; + this.publicAccessibleTestParameterFile = null; this.trsLink = null; + this.sourceCodeFile = null; + this.isValidVersion = null; + this.downloadZipLink = null; + this.authors = null; } } From b4fa97593823f76c828c086659e9b5f7a0e91309 Mon Sep 17 00:00:00 2001 From: Kathy Tran Date: Thu, 1 Jun 2023 09:24:47 -0400 Subject: [PATCH 019/128] Determine base branch dynamically (#1791) https://ucsc-cgl.atlassian.net/browse/SEAB-5531 - This PR moves the audit and accessibility tests from CircleCI to GitHub actions to take advantage of GitHub actions' support for workflows triggered by pull requests --- .circleci/config.yml | 405 ++++++----------------- .github/workflows/accessibility_test.yml | 131 ++++++++ .github/workflows/npm_audit_test.yml | 26 ++ package.json | 3 +- scripts/npm-audit-comparison.sh | 9 +- scripts/run-pa11y-ci.sh | 10 +- 6 files changed, 270 insertions(+), 314 deletions(-) create mode 100644 .github/workflows/accessibility_test.yml create mode 100644 .github/workflows/npm_audit_test.yml diff --git a/.circleci/config.yml b/.circleci/config.yml index a91a813b39..49e455ec86 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -30,29 +30,6 @@ executors: - network.host: 127.0.0.1 - http.port: 9200 - discovery.type: single-node - accessibility_test_exec: - docker: - - image: cimg/base:stable-20.04 - auth: - username: dockstoretestuser - password: $DOCKERHUB_PASSWORD - - image: cimg/postgres:13.3 - command: postgres -c max_connections=200 -c jit=off - auth: - username: dockstoretestuser - password: $DOCKERHUB_PASSWORD - environment: - POSTGRES_USER: postgres - POSTGRES_DB: postgres - POSTGRES_PASSWORD: postgres - POSTGRES_HOST_AUTH_METHOD: trust - - image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1 - environment: - - xpack.security.enabled: false - - transport.host: localhost - - network.host: 127.0.0.1 - - http.port: 9200 - - discovery.type: single-node jobs: # Specify the webpage url (https://dev.dockstore.net or https://staging.dockstore.org or https://dockstore.org) @@ -69,7 +46,6 @@ jobs: password: $DOCKERHUB_PASSWORD steps: - setup_nightly_tests - - install_cypress_dependencies - run: name: Run remote verification test against << parameters.stack >> (no auth) command: bash -i -c 'npm run test-<< parameters.stack >>-no-auth' @@ -104,7 +80,6 @@ jobs: password: $DOCKERHUB_PASSWORD steps: - setup_nightly_tests - - install_cypress_dependencies - run: name: Run remote verification test against << parameters.stack >> (with auth) command: bash -i -c 'npm run test-<< parameters.stack >>-auth' @@ -124,34 +99,6 @@ jobs: event: pass template: basic_success_1 - audit: - working_directory: ~/repo - docker: - - image: cimg/base:stable-20.04 - auth: - username: dockstoretestuser - password: $DOCKERHUB_PASSWORD - steps: - - checkout - - browser-tools/install-chrome - - browser-tools/install-chromedriver - - run: - name: Checkout merge commit (PRs only) - command: | - if [[ -n "${CIRCLE_PULL_REQUEST}" ]] - then - git fetch origin +refs/pull/${CIRCLE_PULL_REQUEST##*/}/merge: - git checkout -qf FETCH_HEAD - fi - - install_container_dependencies - - run: - name: Run npm audit - # Run npm audit on current branch and compare it with the results of running npm audit on the base branch that is set in the package.json. If there are more - # high or critical findings in the current branch, then the test fails. If the same number of findings are found, then check that the vulnerabilities are the same. - # If they are are different, then the test fails. - command: | - bash -i -c "npm run compare-audits" - lint_license_unit_test_coverage: working_directory: ~/repo docker: @@ -161,27 +108,10 @@ jobs: password: $DOCKERHUB_PASSWORD steps: - checkout - - browser-tools/install-chrome - - browser-tools/install-chromedriver - - run: - name: Checkout merge commit (PRs only) - command: | - if [[ -n "${CIRCLE_PULL_REQUEST}" ]] - then - git fetch origin +refs/pull/${CIRCLE_PULL_REQUEST##*/}/merge: - git checkout -qf FETCH_HEAD - fi + - install_browser_tools + - checkout_merge_commit - install_container_dependencies - - restore_cache: - key: dep-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "./package-lock.json" }} - - run: - name: Install dependencies - #Only run 'npm ci' if node_modules was not restored from cache - command: | - if [ ! -d "./node_modules" ] - then - bash -i -c 'npm ci' - fi + - install_ui_dependencies - save_cache: key: dep-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "./package-lock.json" }} paths: @@ -202,9 +132,7 @@ jobs: command: | bash -i -c 'npm run circle-ci-license-test-file' bash scripts/detect-package-json-changes.sh - - run: - name: Build - command: NODE_OPTIONS="--max-old-space-size=1610" bash -i -c 'npm run build.prod' + - build_ui - run: name: Install codecov command: bash -i -c 'npm i --no-save codecov' @@ -218,140 +146,31 @@ jobs: root: . paths: - . - integration_test_1: - executor: integration_test_exec - working_directory: ~/repo - steps: - - setup_integration_test - - restore_cache: - key: cypress-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "./package-lock.json" }} - - run: - name: Test - command: bash -i -c 'npx cypress run --record --config numTestsKeptInMemory=1 --reporter junit --spec cypress/e2e/group1/**/*' - no_output_timeout: 30m - environment: - MOCHA_FILE: integration-tests/test-results/junit/test-results-[hash].xml - when: always - - upload_artifacts - integration_test_2: - executor: integration_test_exec - working_directory: ~/repo - steps: - - setup_integration_test - - restore_cache: - key: cypress-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "./package-lock.json" }} - - run: - name: Test - command: bash -i -c 'npx cypress run --record --config numTestsKeptInMemory=1 --reporter junit --spec cypress/e2e/group2/**/*' - no_output_timeout: 30m - environment: - MOCHA_FILE: integration-tests/test-results/junit/test-results-[hash].xml - when: always - - upload_artifacts - integration_test_3: - executor: integration_test_exec - working_directory: ~/repo - steps: - - setup_integration_test - - restore_cache: - key: cypress-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "./package-lock.json" }} - - run: - name: Test - command: bash -i -c 'npx cypress run --record --config numTestsKeptInMemory=1 --reporter junit --spec cypress/e2e/group3/**/*' - no_output_timeout: 30m - environment: - MOCHA_FILE: integration-tests/test-results/junit/test-results-[hash].xml - when: always - - upload_artifacts - integration_test_4: + + # Reusable job to run integration tests. Specify the integration test folder name (examples: group1, group2, etc.) + integration_test: + parameters: + integration_test_name: + description: The name of the folder containing the integration tests to run + type: string executor: integration_test_exec working_directory: ~/repo steps: - setup_integration_test - - restore_cache: - key: cypress-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "./package-lock.json" }} - run: name: Test - command: bash -i -c 'npx cypress run --record --config numTestsKeptInMemory=1 --reporter junit --spec cypress/e2e/immutableDatabaseTests/**/*' + command: bash -i -c 'npx cypress run --record --config numTestsKeptInMemory=1 --reporter junit --spec cypress/e2e/<< parameters.integration_test_name >>/**/*' no_output_timeout: 30m environment: MOCHA_FILE: integration-tests/test-results/junit/test-results-[hash].xml when: always - upload_artifacts - accessibility_test: - resource_class: medium+ - executor: accessibility_test_exec - working_directory: ~/repo - parameters: - db_dump: - type: string - default: "db_dump.sql" - steps: - - checkout - - install_container_dependencies - - prepare_accessibility_test - - run: - name: Run accesibility test on current branch - command: bash -i -c "npm run accessibility-test -- -R" - - persist_to_workspace: - root: . - paths: - - accessibility-results - - store_artifacts: - path: accessibility-results - - accessibility_test_base: - resource_class: medium+ - executor: accessibility_test_exec - working_directory: ~/repo - steps: - - checkout - - checkout: - path: accessibility - - install_container_dependencies - - run: - name: Checkout base branch - command: bash -i -c "npm run accessibility-test -- -C" - - prepare_accessibility_test - - run: - name: Run accesibility test on base branch - command: bash -i -c "npm run accessibility-test -- -RB" - working_directory: accessibility - - persist_to_workspace: - root: accessibility - paths: - - accessibility-results - - store_artifacts: - path: accessibility/accessibility-results - - compare_accessibility_results: - working_directory: ~/repo - docker: - - image: cimg/base:stable-20.04 - auth: - username: dockstoretestuser - password: $DOCKERHUB_PASSWORD - steps: - - checkout - - run: - name: Install npm - command: | - wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash - bash -i -c 'nvm install' - - get_workspace - - store_artifacts: - path: accessibility-results - - run: - name: Compare accessibility results - command: bash -i -c "npm run accessibility-test -- -A" local_smoke_tests: executor: integration_test_exec working_directory: ~/repo steps: - setup_smoke_tests - - restore_cache: - key: cypress-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "./package-lock.json" }} - run: name: Run local smoke tests (no auth) command: bash -i -c 'npm run test-local-no-auth' @@ -416,9 +235,7 @@ jobs: - run: name: set webservice to develop command: bash -i -c 'npm config set dockstore-ui2:webservice_version develop' - - run: - name: Build - command: NODE_OPTIONS="--max-old-space-size=1610" bash -i -c 'npm run build.prod' + - build_ui parameters: run_nightly_auth: @@ -438,19 +255,15 @@ workflows: - << pipeline.parameters.run_nightly_no_auth >> jobs: # Add the tags filter to all jobs so they will run before upload_to_s3 - - audit: - filters: - tags: - only: /.*/ - context: - - dockerhub - lint_license_unit_test_coverage: filters: tags: only: /.*/ context: - dockerhub - - integration_test_1: + - integration_test: + name: integration_test_1 + integration_test_name: group1 filters: tags: only: /.*/ @@ -458,7 +271,9 @@ workflows: - lint_license_unit_test_coverage context: - dockerhub - - integration_test_2: + - integration_test: + name: integration_test_2 + integration_test_name: group2 filters: tags: only: /.*/ @@ -466,7 +281,9 @@ workflows: - lint_license_unit_test_coverage context: - dockerhub - - integration_test_3: + - integration_test: + name: integration_test_3 + integration_test_name: group3 filters: tags: only: /.*/ @@ -474,7 +291,9 @@ workflows: - lint_license_unit_test_coverage context: - dockerhub - - integration_test_4: + - integration_test: + name: integration_test_4 + integration_test_name: immutableDatabaseTests filters: tags: only: /.*/ @@ -482,21 +301,6 @@ workflows: - lint_license_unit_test_coverage context: - dockerhub - - accessibility_test: - filters: - tags: - only: /.*/ - - accessibility_test_base: - filters: - tags: - only: /.*/ - - compare_accessibility_results: - filters: - tags: - only: /.*/ - requires: - - accessibility_test_base - - accessibility_test - local_smoke_tests: filters: tags: @@ -508,7 +312,6 @@ workflows: # Upload builds for tags and branches to s3. - upload_to_s3: requires: - - audit - lint_license_unit_test_coverage filters: tags: @@ -584,50 +387,6 @@ commands: command: | wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash bash -i -c 'nvm install' - prepare_accessibility_test: - parameters: - db_dump: - type: string - default: "db_dump.sql" - steps: - - browser-tools/install-chrome - - browser-tools/install-chromedriver - - restore_cache: - key: dep-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "./package-lock.json" }} - - run: - name: Install dependencies - command: bash -i -c 'npm ci' - - run: - name: Build - command: NODE_OPTIONS="--max-old-space-size=1610" bash -i -c 'npm run build.prod' - no_output_timeout: 30m - - run: - name: Install postgresql client - command: sudo apt install -y postgresql-client || true - - run: - name: Prepare webservice - command: bash -i -c 'DB_DUMP=<< parameters.db_dump >> npm run webservice' - environment: - PAGER: cat # prevent psql commands using less https://stackoverflow.com/questions/53055044/rails-rake-dbstructureload-times-out-on-circleci-2-0 - - run: - name: Install nginx - command: sudo apt install -y nginx || true - - run: - name: Prepapre nginx config - command: sed "s%REPLACEME%`pwd`%" .circleci/nginx.conf.tmpl > .circleci/nginx.conf - - run: - name: Run nginx - command: sudo nginx -c `pwd`/.circleci/nginx.conf - background: true - - run: - name: Run webservice - command: java -jar dockstore-webservice.jar server test/web.yml 1>/dev/null - background: true - - run: mkdir -p integration-tests/test-results/junit - - run: - name: Wait for services - command: bash scripts/wait-for.sh - get_workspace: steps: - attach_workspace: @@ -653,14 +412,77 @@ commands: type: string default: "db_dump.sql" steps: - - browser-tools/install-chrome - - browser-tools/install-chromedriver + - install_browser_tools - get_workspace - install_container_dependencies + - install_cypress_dependencies + - run_services: + db_dump: << parameters.db_dump >> + - run: mkdir -p integration-tests/test-results/junit + - restore_cypress_cache + setup_nightly_tests: + steps: + - checkout + - install_browser_tools + - install_container_dependencies + - install_cypress_dependencies + - restore_cypress_cache + - install_ui_dependencies + - run: + name: Create test results directory + command: mkdir -p nightly-test-results/junit + - run: + name: Prebuild + command: bash -i -c 'npm run prebuild.prod' + setup_smoke_tests: + steps: + - setup_integration_test: + db_dump: "smoke_test_db.sql" + - run: + name: Index ES + command: | + curl -X POST "localhost:4200/api/api/ga4gh/v2/extended/tools/index" -H "accept: text/plain" -H "Authorization: Bearer fake-admin-token" + requires: + - setup_integration_test + upload_nightly_artifacts: + steps: + - store_test_results: + path: nightly-test-results/ + - store_artifacts: + path: nightly-test-results/ + - store_artifacts: + path: cypress/videos + - store_artifacts: + path: cypress/screenshots + install_ui_dependencies: + steps: + - restore_dep_cache + - run: + name: Install dependencies + #Only run 'npm ci' if node_modules was not restored from cache + command: | + if [ ! -d "./node_modules" ] + then + bash -i -c 'npm ci' + fi + install_browser_tools: + steps: + - browser-tools/install-chrome + - browser-tools/install-chromedriver + build_ui: + steps: + - run: + name: Build + command: NODE_OPTIONS="--max-old-space-size=1610" bash -i -c 'npm run build.prod' + run_services: + parameters: + db_dump: + type: string + default: "db_dump.sql" + steps: - run: name: Install postgresql client command: sudo apt install -y postgresql-client || true - - install_cypress_dependencies - run: name: Prepare webservice command: bash -i -c 'DB_DUMP=<< parameters.db_dump >> npm run webservice' @@ -680,47 +502,24 @@ commands: name: Run webservice command: java -jar dockstore-webservice.jar server test/web.yml 1>/dev/null background: true - - run: mkdir -p integration-tests/test-results/junit - run: name: Wait for services command: bash scripts/wait-for.sh - setup_nightly_tests: + restore_cypress_cache: steps: - - checkout - - browser-tools/install-chrome - - browser-tools/install-chromedriver - - install_container_dependencies - restore_cache: key: cypress-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "./package-lock.json" }} + restore_dep_cache: + steps: + - restore_cache: + key: dep-cache-{{ .Environment.CACHE_VERSION }}-{{ checksum "./package-lock.json" }} + checkout_merge_commit: + steps: - run: - name: Install dependencies - #Only run 'npm ci' if node_modules was not restored from cache + name: Checkout merge commit (PRs only) command: | - if [ ! -d "./node_modules" ] + if [[ -n "${CIRCLE_PULL_REQUEST}" ]] then - bash -i -c 'npm ci' + git fetch origin +refs/pull/${CIRCLE_PULL_REQUEST##*/}/merge: + git checkout -qf FETCH_HEAD fi - mkdir -p nightly-test-results/junit - - run: - name: Prebuild - command: bash -i -c 'npm run prebuild.prod' - setup_smoke_tests: - steps: - - setup_integration_test: - db_dump: "smoke_test_db.sql" - - run: - name: Index ES - command: | - curl -X POST "localhost:4200/api/api/ga4gh/v2/extended/tools/index" -H "accept: text/plain" -H "Authorization: Bearer fake-admin-token" - requires: - - setup_integration_test - upload_nightly_artifacts: - steps: - - store_test_results: - path: nightly-test-results/ - - store_artifacts: - path: nightly-test-results/ - - store_artifacts: - path: cypress/videos - - store_artifacts: - path: cypress/screenshots diff --git a/.github/workflows/accessibility_test.yml b/.github/workflows/accessibility_test.yml new file mode 100644 index 0000000000..5285131445 --- /dev/null +++ b/.github/workflows/accessibility_test.yml @@ -0,0 +1,131 @@ +name: Accessibility test + +on: pull_request + +jobs: + run-accessibility-test: + strategy: + matrix: + # Run against the current branch (represented by '', which will use the default ref when using the checkout action) and the base branch + branch: [ '', '${{ github.base_ref }}' ] + + # Uses if/else expression evaluation workaround from https://github.com/actions/runner/issues/409#issuecomment-752775072 + # 'matrix.branch == github.base_ref' is the condition, 'base' is the true value and 'current' is the false value + name: Accessibility test (${{ matrix.branch == github.base_ref && 'base' || 'current' }} branch) + + runs-on: ubuntu-20.04 + services: + postgres: + image: postgres:13.3 + env: + POSTGRES_USER: postgres + POSTGRES_DB: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_HOST_AUTH_METHOD: trust + ports: + # Maps tcp port 5432 on service container to the host + - 5432:5432 + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1 + env: + xpack.security.enabled: false + transport.host: localhost + network.host: 127.0.0.1 + http.port: 9200 + discovery.type: single-node + + steps: + - name: Checkout branch + uses: actions/checkout@v3 + with: + ref: ${{ matrix.branch }} + + - name: Install browser + uses: browser-actions/setup-chrome@v1 + + - name: Set up JDK + uses: actions/setup-java@v3 + with: + java-version: '17.0.4+8' + distribution: 'adopt' + + - name: Install npm + uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + + - name: Cache dependencies + id: cache-dependencies + uses: actions/cache@v3 + env: + cache-version: version1 + with: + path: ./node_modules + key: dep-cache-${{ env.cache-version }}-${{ hashFiles('**/package-lock.json') }} + + - if: ${{ steps.cache-dependencies.outputs.cache-hit != 'true' }} + name: Install dependencies if cache miss + run: npm ci + + - name: Build + run: NODE_OPTIONS="--max-old-space-size=1610" npm run build.prod + + # Run the services + - name: Install postgresql client + run: sudo apt install -y postgresql-client || true + + - name: Prepare webservice + run: DB_DUMP="db_dump.sql" npm run webservice + + - name: Install nginx + run: sudo apt install -y nginx || true + + - name: Prepare nginx config + run: sed "s%REPLACEME%`pwd`%" .circleci/nginx.conf.tmpl > .circleci/nginx.conf + + - name: Run nginx + run: sudo nginx -c `pwd`/.circleci/nginx.conf & + + - name: Run webservice + run: java -jar dockstore-webservice.jar server test/web.yml 1>/dev/null & + + - name: Wait for services + run: bash scripts/wait-for.sh + + - name: Run accessibility test + run: | + if [[ "${{ matrix.branch }}" == "$GITHUB_BASE_REF" ]]; then + echo "Running accessibility test for base branch" + npm run accessibility-test -- -RB + else + echo "Running accessibility test for current branch" + npm run accessibility-test -- -R + fi + + - name: Save accessibility results + uses: actions/upload-artifact@v3 + with: + name: accessibility-results + path: accessibility-results/ + + compare_accessibility_results: + needs: run-accessibility-test + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + + - name: Install npm + uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + + - name: Download accessibility results + uses: actions/download-artifact@v3 + with: + name: accessibility-results + # Download to this directory because this is the directory that the accessibility script looks at for the results + path: accessibility-results + + - name: Compare accessibility results + run: npm run accessibility-test -- -A + \ No newline at end of file diff --git a/.github/workflows/npm_audit_test.yml b/.github/workflows/npm_audit_test.yml new file mode 100644 index 0000000000..b4367cebff --- /dev/null +++ b/.github/workflows/npm_audit_test.yml @@ -0,0 +1,26 @@ +name: npm audit test + +on: pull_request + +jobs: + npm-audit-test: + name: npm audit test + runs-on: ubuntu-20.04 + steps: + - name: Checkout branch + uses: actions/checkout@v3 + with: + # Fetches all history for all branches and tags + # Needed because the audit script checks out the base branch + fetch-depth: 0 + + - name: Install npm + uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + + - name: Run npm audit + # Run npm audit on current branch and compare it with the results of running npm audit on the base branch that is set in the built-in $GITHUB_BASE_REF environment variable. + # If there are more high or critical findings in the current branch, then the test fails. If the same number of findings are found, then check that the vulnerabilities are the same. + # If they are are different, then the test fails. + run: npm run compare-audits -- $GITHUB_BASE_REF diff --git a/package.json b/package.json index be9ef54ae7..3bf13818fc 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,7 @@ "webservice_version": "1.15.0", "use_circle": true, "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/9918/workflows/b8714bc1-49a2-424d-8b14-527bc3d4a4e3/jobs/33676/artifacts", - "circle_build_id": "33676", - "base_branch": "develop" + "circle_build_id": "33676" }, "scripts": { "ng": "npx ng", diff --git a/scripts/npm-audit-comparison.sh b/scripts/npm-audit-comparison.sh index 3b96f13c00..02afd3cef2 100755 --- a/scripts/npm-audit-comparison.sh +++ b/scripts/npm-audit-comparison.sh @@ -4,6 +4,13 @@ set -o pipefail set -o nounset set -o xtrace +if [[ -z ${1} ]]; then + echo "Usage: $0 " + exit 1 +fi + +BASE_BRANCH="${1}" + # Run npm audit on current branch and compare it with the results of running npm audit on the base branch that is set in the package.json. If there are more # high or critical findings in the current branch, then the test fails. If the same number of findings are found, then check that the vulnerabilities are the same. # If they are are different, then the test fails. @@ -22,7 +29,7 @@ echo $HIGH_VULN > compare-num-vulnerabilities.txt echo $CRITICAL_VULN >> compare-num-vulnerabilities.txt # Save high and critical vulns from the base branch (e.g. develop, hotfix/1.11.2) -git checkout "$npm_package_config_base_branch" +git checkout "${BASE_BRANCH}" npm ci npm audit | grep -E "(High)" -B3 -A10 > base-branch-high-vulnerabilities.txt || true npm audit | grep -E "(Critical)" -B3 -A10 > base-branch-critical-vulnerabilities.txt || true diff --git a/scripts/run-pa11y-ci.sh b/scripts/run-pa11y-ci.sh index e490e83a24..47e303e2a0 100755 --- a/scripts/run-pa11y-ci.sh +++ b/scripts/run-pa11y-ci.sh @@ -3,7 +3,7 @@ set -o errexit set -o pipefail set -o nounset -#set -o xtrace +set -o xtrace # Run pa11y-ci shows any accessibility issues related to the UI. # NOTE: This script will not be useful if you are running it locally, @@ -20,7 +20,6 @@ usage() { echo "" echo "-H, Display help command" echo "-B, Do all commands on base branch (if this option is not given all commands are done on current branch)" - echo "-C, Checkouts the code from the base branch (note: the option -B is not required to do this)" echo "-R, Runs pa11y-ci on branch (requires webservice to be running) and outputs results in a form that can be analysed" echo "-A, Determines if current branch has more accessibility issues then base branch, requires the results from option -R to be available" } @@ -30,7 +29,7 @@ RUN_ACCESSIBILITY_TEST="false" COMPARE_RESULTS="false" no_args="true" -while getopts 'HBCRA' OPTION; do +while getopts 'HBRA' OPTION; do case "$OPTION" in H) usage @@ -39,11 +38,6 @@ while getopts 'HBCRA' OPTION; do B) RESULT_FILE="$BASE_BRANCH_RESULT_FILE_NAME" ;; - C) - git checkout "$npm_package_config_base_branch" - echo "The base branch has been checked out, all other flags (if any) have been ignored" - exit 0 - ;; R) RUN_ACCESSIBILITY_TEST="true" if [ "$COMPARE_RESULTS" == "true" ] From 36277b681e3a362d0f97e3386b00d7df6a86b018 Mon Sep 17 00:00:00 2001 From: Charles Overbeck Date: Fri, 2 Jun 2023 09:16:50 -0700 Subject: [PATCH 020/128] Display correct message for no stargazers (#1792) #5535 The "organization" property doesn't exist, so it's undefined, not null, which caused it to display the text "organization". Also got rid of an any. --- src/app/stargazers/stargazers.component.html | 2 +- src/app/stargazers/stargazers.component.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/app/stargazers/stargazers.component.html b/src/app/stargazers/stargazers.component.html index abd2a97ab8..723d4eb64f 100644 --- a/src/app/stargazers/stargazers.component.html +++ b/src/app/stargazers/stargazers.component.html @@ -20,7 +20,7 @@ warning - There are no stargazers for this {{ organization !== null ? 'organization' : 'entry' }}. + There are no stargazers for this entry.
    diff --git a/src/app/stargazers/stargazers.component.ts b/src/app/stargazers/stargazers.component.ts index 25f0cfbf8b..47eee4937e 100644 --- a/src/app/stargazers/stargazers.component.ts +++ b/src/app/stargazers/stargazers.component.ts @@ -19,6 +19,7 @@ import { takeUntil } from 'rxjs/operators'; import { Base } from '../shared/base'; import { altAvatarImg } from '../shared/constants'; import { StarentryService } from '../shared/starentry.service'; +import { User } from '../shared/swagger'; import { UserService } from '../shared/user/user.service'; import { StarringService } from '../starring/starring.service'; @@ -28,7 +29,7 @@ import { StarringService } from '../starring/starring.service'; styleUrls: ['./stargazers.component.css'], }) export class StargazersComponent extends Base implements OnInit { - starGazers: any; + starGazers: User[]; public altAvatarImg = altAvatarImg; constructor(private starringService: StarringService, private userService: UserService, private starentryService: StarentryService) { From d213713df4558b1bf5a707aa9c72e7f9fa8a0424 Mon Sep 17 00:00:00 2001 From: Nayeon Hyun <61166764+hyunnaye@users.noreply.github.com> Date: Thu, 8 Jun 2023 10:30:20 -0400 Subject: [PATCH 021/128] SEAB-5387: added services integration and notebooks count bubble in collections (#1776) --- cypress/e2e/group2/organizations.ts | 21 +++++++++++++++++-- cypress/support/commands.ts | 10 +++++++++ package.json | 4 ++-- .../collection/collection.component.html | 11 ++++++---- .../collection/collection.component.ts | 19 +++++++++++++++++ .../collections/collections.component.html | 14 +++++++++++++ .../collections/collections.component.ts | 4 +++- .../state/create-collection.service.ts | 3 ++- src/app/organizations/organization.module.ts | 2 ++ .../organization/organization.component.html | 1 + .../organization/organization.component.ts | 3 +++ .../organizations/state/collections.query.ts | 2 +- .../state/collections.service.ts | 4 ++-- .../organizations/state/collections.store.ts | 2 +- 14 files changed, 86 insertions(+), 14 deletions(-) diff --git a/cypress/e2e/group2/organizations.ts b/cypress/e2e/group2/organizations.ts index 3daf9c6a14..45acfd9959 100644 --- a/cypress/e2e/group2/organizations.ts +++ b/cypress/e2e/group2/organizations.ts @@ -18,17 +18,17 @@ import { approvePotatoOrganization, createPotatoMembership, rejectPotatoMembership, - resetDB, setTokenUserViewPort, addToCollection, insertNotebooks, + resetDBWithService, } from '../../support/commands'; import { TokenUser } from '../../../src/app/shared/swagger'; import { TokenSource } from '../../../src/app/shared/enum/token-source.enum'; const imageURL = 'https://superduperfakepotatourl.com/potato.png'; describe('Dockstore Organizations', () => { - resetDB(); + resetDBWithService(); setTokenUserViewPort(); function typeInInput(fieldName: string, text: string) { @@ -298,11 +298,24 @@ describe('Dockstore Organizations', () => { cy.get('img[src*="default-org-logo"]').should('be.visible'); } }); + it('Should be able to add a service to collection', () => { + const servicePath = '/services/github.com/garyluu/another-test-service'; + addToCollection(servicePath, 'Potatoe', 'veryFakeCollectionName'); + cy.get('[data-cy=collectionLink]').should('contain', 'veryFakeCollectionName'); + cy.visit('/organizations/Potatoe'); + cy.get('[data-cy=collections-services-count-bubble]').should('be.visible'); + cy.visit('/organizations/Potatoe/collections/veryFakeCollectionName'); + cy.contains('github.com/garyluu/another-test-service'); + }); insertNotebooks(); it('Should be able to add notebook to collection', () => { const notebookPath = '/notebooks/github.com/dockstore-testing/simple-notebook'; addToCollection(notebookPath, 'Potatoe', 'veryFakeCollectionName'); cy.get('[data-cy=collectionLink]').should('contain', 'veryFakeCollectionName'); + cy.visit('/organizations/Potatoe?notebooks'); + cy.get('[data-cy=collections-notebooks-count-bubble]').should('be.visible'); + cy.visit('/organizations/Potatoe/collections/veryFakeCollectionName?notebooks'); + cy.contains('github.com/dockstore-testing/simple-notebook'); }); it('Should be able to remove collection', () => { @@ -315,6 +328,10 @@ describe('Dockstore Organizations', () => { cy.get('[data-cy=accept-remove-collection]').click(); cy.visit('/organizations/Potatoe/collections/veryFakeCollectionName'); cy.contains('veryFakeCollectionName').should('not.exist'); + cy.visit('/organizations/Potatoe'); + cy.get('[data-cy=collections-services-count-bubble]').should('not.exist'); + cy.visit('/organizations/Potatoe?notebooks'); + cy.get('[data-cy=collections-notebooks-count-bubble]').should('not.exist'); }); }); diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 8995a17e16..078ade7f48 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -66,6 +66,16 @@ export function resetDB() { }); } +export function resetDBWithService() { + before(() => { + cy.exec('java -jar dockstore-webservice.jar db drop-all --confirm-delete-everything test/web.yml'); + cy.exec(psqlInvocation + ' -h localhost webservice_test -U dockstore < test/db_dump.sql'); + cy.exec( + 'java -jar dockstore-webservice.jar db migrate -i 1.5.0,1.6.0,1.7.0,add_service_1.7.0,1.8.0,1.9.0,1.10.0,alter_test_user_1.10.2,1.11.0,1.12.0,1.13.0,1.14.0 test/web.yml' + ); + }); +} + export function addBeforeSqlFromFile(fileName: string) { before(() => { cy.exec(psqlInvocation + ' -h localhost webservice_test -U dockstore < ' + fileName); diff --git a/package.json b/package.json index 3bf13818fc..2fe9fd19f7 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "config": { "webservice_version": "1.15.0", "use_circle": true, - "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/9918/workflows/b8714bc1-49a2-424d-8b14-527bc3d4a4e3/jobs/33676/artifacts", - "circle_build_id": "33676" + "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/9967/workflows/e03b3b8b-aec8-4316-9918-995add989dd1/jobs/34030/artifacts", + "circle_build_id": "34030" }, "scripts": { "ng": "npx ng", diff --git a/src/app/organizations/collection/collection.component.html b/src/app/organizations/collection/collection.component.html index 124b1cdef7..73bcbbcb47 100644 --- a/src/app/organizations/collection/collection.component.html +++ b/src/app/organizations/collection/collection.component.html @@ -32,7 +32,7 @@
    - +
    info This collection is part of an organization that is pending approval by a Dockstore curator. @@ -93,15 +93,18 @@

    - + info This collection has no associated entries. To add an entry, navigate to the public page of the tool or workflow you want to add and select `Add to collection`
    -

    Workflows, Notebooks, and Tools

    -

    Workflows and Tools

    +

    Workflows, Notebooks, Services, and Tools

    +

    Workflows, Services, and Tools

    diff --git a/src/app/organizations/collection/collection.component.ts b/src/app/organizations/collection/collection.component.ts index 3f7936059d..14e7daa8de 100644 --- a/src/app/organizations/collection/collection.component.ts +++ b/src/app/organizations/collection/collection.component.ts @@ -6,6 +6,7 @@ import { Dockstore } from '../../shared/dockstore.model'; import { TagEditorMode } from '../../shared/enum/tagEditorMode.enum'; import { OrgLogoService } from '../../shared/org-logo.service'; import { Collection, Organization } from '../../shared/swagger'; +import { Collection as OpenAPICollection, OrganizationsService } from '../../shared/openapi'; import { ToolDescriptor } from '../../shared/swagger/model/toolDescriptor'; import { Workflow } from '../../shared/swagger/model/workflow'; import { UserQuery } from '../../shared/user/user.query'; @@ -18,6 +19,8 @@ import { CollectionsQuery } from '../state/collections.query'; import { CollectionsService } from '../state/collections.service'; import { OrganizationQuery } from '../state/organization.query'; import { EntryType } from 'app/shared/enum/entry-type'; +import { HttpErrorResponse } from '@angular/common/http'; +import { AlertService } from '../../shared/alert/state/alert.service'; @Component({ selector: 'app-collection-entry-confirm-remove', @@ -55,6 +58,7 @@ export class CollectionComponent implements OnInit { WorkflowMode = Workflow.ModeEnum; DescriptorType = ToolDescriptor.TypeEnum; collection$: Observable; + openAPICollection: OpenAPICollection; loadingCollection$: Observable; organization$: Observable; @@ -65,12 +69,15 @@ export class CollectionComponent implements OnInit { isAdmin$: Observable; isCurator$: Observable; + constructor( private collectionsQuery: CollectionsQuery, private organizationQuery: OrganizationQuery, + private organizationsService: OrganizationsService, private collectionsService: CollectionsService, public dialog: MatDialog, private activatedRoute: ActivatedRoute, + private alertService: AlertService, private userQuery: UserQuery, public orgLogoService: OrgLogoService ) {} @@ -87,6 +94,18 @@ export class CollectionComponent implements OnInit { this.collectionsService.updateCollectionFromName(organizationName, collectionName); this.isAdmin$ = this.userQuery.isAdmin$; this.isCurator$ = this.userQuery.isCurator$; + this.organizationsService.getCollectionByName(organizationName, collectionName).subscribe( + (openAPICollection) => { + this.openAPICollection = openAPICollection; + }, + (error: HttpErrorResponse) => { + this.alertService.detailedError(error); + } + ); + } + + checkHasOnlyNotebooks(collection: Collection): boolean { + return collection.entries.length === this.openAPICollection.notebooksLength; } /** diff --git a/src/app/organizations/collections/collections.component.html b/src/app/organizations/collections/collections.component.html index e6c97cf2b2..8571ae57d0 100644 --- a/src/app/organizations/collections/collections.component.html +++ b/src/app/organizations/collections/collections.component.html @@ -64,6 +64,20 @@

    {{ collection.value.displayName }}

    Tools Tool + + {{ collection.value.servicesLength }} + Services + Service + + + {{ collection.value.notebooksLength }} + Notebooks + Notebook +
    {{ myEntryPageTitle$ | async | titlecase }} - PREVIEW + PREVIEW
    @@ -182,9 +182,6 @@

    Shared with me

    -
    - -
    diff --git a/src/app/organizations/collection/collection.component.html b/src/app/organizations/collection/collection.component.html index 73bcbbcb47..b14eb38444 100644 --- a/src/app/organizations/collection/collection.component.html +++ b/src/app/organizations/collection/collection.component.html @@ -31,9 +31,6 @@
    -
    - -
    info This collection is part of an organization that is pending approval by a Dockstore curator. @@ -93,21 +90,16 @@

    - + info This collection has no associated entries. To add an entry, navigate to the public page of the tool or workflow you want to add and select `Add to collection`
    -

    Workflows, Notebooks, Services, and Tools

    -

    Workflows, Services, and Tools

    - +

    Workflows, Notebooks, Services, and Tools

    - +
    diff --git a/src/app/organizations/collections/collections.component.html b/src/app/organizations/collections/collections.component.html index 8571ae57d0..fb8bef8140 100644 --- a/src/app/organizations/collections/collections.component.html +++ b/src/app/organizations/collections/collections.component.html @@ -69,11 +69,7 @@

    {{ collection.value.displayName }}

    Services Service - + {{ collection.value.notebooksLength }} Notebooks Notebook diff --git a/src/app/organizations/organization/organization.component.html b/src/app/organizations/organization/organization.component.html index 60c89349d3..0f6e4dafeb 100644 --- a/src/app/organizations/organization/organization.component.html +++ b/src/app/organizations/organization/organization.component.html @@ -54,7 +54,6 @@
    accounts page. -
    diff --git a/src/app/search/search.component.html b/src/app/search/search.component.html index 41bfb7834e..e62630d702 100644 --- a/src/app/search/search.component.html +++ b/src/app/search/search.component.html @@ -46,7 +46,7 @@
    - + notebook icon Notebooks @@ -322,10 +322,6 @@ {{ query_size - 1 }} results are shown. We recommend that you narrow your search to find more relevant results.

    -
    diff --git a/src/app/shared/dockstore.model.ts b/src/app/shared/dockstore.model.ts index fc420aaad3..b2f94836ff 100644 --- a/src/app/shared/dockstore.model.ts +++ b/src/app/shared/dockstore.model.ts @@ -104,7 +104,6 @@ export class Dockstore { enableLaunchWithGalaxy: true, enableMultiCloudLaunchWithDNAstack: false, enableOrcidExport: true, - enableNotebooks: false, enableMetrics: false, }; } diff --git a/src/app/shared/feature.service.spec.ts b/src/app/shared/feature.service.spec.ts index cdc6652b54..092da69f59 100644 --- a/src/app/shared/feature.service.spec.ts +++ b/src/app/shared/feature.service.spec.ts @@ -15,20 +15,11 @@ describe('FeatureService', () => { expect(service).toBeTruthy(); }); it('should set feature flag correctly', () => { - service.updateFeatureFlags('?notebooks'); - expect(Dockstore.FEATURES.enableNotebooks).toBeTrue(); service.updateFeatureFlags('?metrics'); expect(Dockstore.FEATURES.enableMetrics).toBeTrue(); - // We're ignoring the value - service.updateFeatureFlags('?irrelevantKey¬ebooks'); - expect(Dockstore.FEATURES.enableNotebooks).toBeTrue(); - service.updateFeatureFlags('?notebooks=false'); - expect(Dockstore.FEATURES.enableNotebooks).toBeTrue(); service.updateFeatureFlags(null); - expect(Dockstore.FEATURES.enableNotebooks).toBeFalse(); expect(Dockstore.FEATURES.enableMetrics).toBeFalse(); service.updateFeatureFlags(''); - expect(Dockstore.FEATURES.enableNotebooks).toBeFalse(); expect(Dockstore.FEATURES.enableMetrics).toBeFalse(); }); }); diff --git a/src/app/shared/feature.service.ts b/src/app/shared/feature.service.ts index 9abae52eb6..459b1c4f7d 100644 --- a/src/app/shared/feature.service.ts +++ b/src/app/shared/feature.service.ts @@ -7,9 +7,6 @@ import { Dockstore } from './dockstore.model'; export class FeatureService { updateFeatureFlags(queryParams: string) { const urlSearchParams = new URLSearchParams(queryParams); - const gitHubAppCallBackToNotebooks = urlSearchParams.has('state') && urlSearchParams.get('state').includes('notebooks'); - const notebooks = urlSearchParams.has('notebooks') || gitHubAppCallBackToNotebooks; - Dockstore.FEATURES.enableNotebooks = notebooks; const gitHubAppCallBackToMetrics = urlSearchParams.has('state') && urlSearchParams.get('state').includes('metrics'); const metrics = urlSearchParams.has('metrics') || gitHubAppCallBackToMetrics; Dockstore.FEATURES.enableMetrics = metrics; diff --git a/src/app/sitemap/sitemap.component.html b/src/app/sitemap/sitemap.component.html index a0904f6e7d..7e4ab9db6e 100644 --- a/src/app/sitemap/sitemap.component.html +++ b/src/app/sitemap/sitemap.component.html @@ -8,7 +8,6 @@

    Sitemap

    -

    Tools and Workflows

    @@ -23,9 +22,8 @@

    Tools and Workflows

    Services
    PREVIEW
    -
  • +
  • Notebooks -
    PREVIEW
  • App Tools diff --git a/src/app/starredentries/starredentries.component.html b/src/app/starredentries/starredentries.component.html index a25eb5043e..8f4bc07d5a 100644 --- a/src/app/starredentries/starredentries.component.html +++ b/src/app/starredentries/starredentries.component.html @@ -84,14 +84,12 @@
  • - -
    +
    notebook logo Notebooks {{ starredNotebooks?.length }} - PREVIEW
    diff --git a/src/app/starredentries/starredentries.component.ts b/src/app/starredentries/starredentries.component.ts index cf73abcd17..ae96d449fb 100644 --- a/src/app/starredentries/starredentries.component.ts +++ b/src/app/starredentries/starredentries.component.ts @@ -35,9 +35,7 @@ export class StarredEntriesComponent extends Base implements OnInit { currentTab = 'workflows'; selected = new UntypedFormControl(); // TODO: Add 'services' to validTabs when implemented - validTabs = ['workflows', 'tools', 'organizations']; - // TODO: Remove validTabsWithNotebooks and simply include 'notebooks' in validTabs when notebooks Feature Flag is removed - validTabsWithNotebooks = ['workflows', 'tools', 'notebooks', 'organizations']; + validTabs = ['workflows', 'tools', 'notebooks', 'organizations']; constructor( private userQuery: UserQuery, @@ -103,11 +101,6 @@ export class StarredEntriesComponent extends Base implements OnInit { // Runs on first page load public setupTab(tabName: string) { - // If notebooks Feature Flag enabled, update validTabs to include the notebooks tab - // Remove check once feature flag removed - if (Dockstore.FEATURES.enableNotebooks) { - this.validTabs = this.validTabsWithNotebooks; - } const tabIndex = this.validTabs.indexOf(tabName); if (tabIndex >= 0) { this.currentTab = tabName; diff --git a/src/app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component.html b/src/app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component.html index b3efd1818f..36eca7c370 100644 --- a/src/app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component.html +++ b/src/app/workflow/register-workflow-modal/register-github-app-modal/register-github-app-modal.component.html @@ -1,7 +1,4 @@

    Register {{ entryType | titlecase }}

    -
    - -

    Navigate to GitHub to install our GitHub app on your repositories/organizations. See our diff --git a/src/app/workflows/workflows.component.html b/src/app/workflows/workflows.component.html index 6561b96fa9..4842ce48f9 100644 --- a/src/app/workflows/workflows.component.html +++ b/src/app/workflows/workflows.component.html @@ -42,8 +42,5 @@

    From c38d6c01a6e7411173dc1c62d1d18e804b7339dd Mon Sep 17 00:00:00 2001 From: Charles Overbeck Date: Wed, 14 Jun 2023 13:21:30 -0700 Subject: [PATCH 025/128] Use OpenAPI instead of Swagger in the UI (#1796) #5538 Some followup required due to a blocking issue, see #5550 Ran into a weird compilation error with Cypress, see See https://github.com/cypress-io/cypress/issues/19066#issuecomment-1144152738 --- THIRD-PARTY-LICENSES.csv | 228 +- cypress.config.ts | 2 +- cypress/e2e/group1/hostedWorkflows.ts | 1 + cypress/e2e/group2/organizations.ts | 3 +- cypress/e2e/group2/usernameChangeRequired.ts | 2 +- cypress/e2e/group3/githubAppTools.ts | 2 +- .../smokeTests/sharedTests/basic-enduser.ts | 4 +- cypress/plugins/index.js | 22 - cypress/plugins/index.ts | 29 + cypress/support/e2e.ts | 2 +- package-lock.json | 8020 ++++++++++++++++- package.json | 2 + src/app/about/about.component.ts | 2 +- src/app/aliases/aliases.component.ts | 2 +- src/app/aliases/state/aliases.service.ts | 2 +- src/app/aliases/state/aliases.store.ts | 2 +- src/app/app.module.ts | 4 +- src/app/configuration.service.ts | 2 +- .../container/add-tag/add-tag.component.ts | 12 +- src/app/container/container.component.ts | 10 +- .../descriptors/descriptors.component.spec.ts | 2 +- .../descriptors/descriptors.component.ts | 4 +- .../dockerfile/dockerfile.component.spec.ts | 2 +- .../dockerfile/dockerfile.component.ts | 4 +- src/app/container/email.service.spec.ts | 2 +- src/app/container/email.service.ts | 2 +- src/app/container/files/files.component.ts | 4 +- .../container/info-tab/info-tab.component.ts | 6 +- .../container/info-tab/info-tab.service.ts | 4 +- src/app/container/launch/launch.component.ts | 8 +- .../container/launch/tool-launch.service.ts | 2 +- .../paramfiles/paramfiles.component.ts | 4 +- .../paramfiles/paramfiles.service.spec.ts | 10 +- .../paramfiles/paramfiles.service.ts | 14 +- ...efresh-tool-organization.component.spec.ts | 4 +- .../refresh-tool-organization.component.ts | 4 +- .../register-tool/register-tool.service.ts | 14 +- .../container/state/refresh-wizard.service.ts | 2 +- .../tool-file-editor.component.spec.ts | 2 +- .../tool-file-editor.component.ts | 6 +- .../version-modal.component.spec.ts | 4 +- .../version-modal/version-modal.component.ts | 14 +- .../version-modal/version-modal.service.ts | 2 +- .../container/versions/versions.component.ts | 4 +- src/app/container/view/view.component.ts | 16 +- src/app/container/view/view.service.ts | 4 +- src/app/containers/list/list.component.ts | 2 +- .../list/published-tools.datasource.spec.ts | 2 +- .../list/published-tools.datasource.ts | 2 +- src/app/descriptor-languages/CWL.ts | 2 +- src/app/descriptor-languages/Galaxy.ts | 4 +- src/app/descriptor-languages/Jupyter.ts | 4 +- src/app/descriptor-languages/Nextflow.ts | 4 +- src/app/descriptor-languages/Service.ts | 4 +- src/app/descriptor-languages/Snakemake.ts | 2 +- src/app/descriptor-languages/WDL.ts | 2 +- .../current-collections.component.ts | 2 +- src/app/entry/extendedDescriptorLanguage.ts | 8 +- .../entry/state/current-collections.query.ts | 2 +- .../state/current-collections.service.ts | 2 +- .../entry/state/current-collections.store.ts | 2 +- src/app/file-tree/file-tree.component.spec.ts | 2 +- src/app/file-tree/file-tree.component.ts | 2 +- .../home-logged-out/home.component.ts | 2 +- .../entry-box/entry-box.component.spec.ts | 2 +- .../news-notifications.component.ts | 2 +- .../account-sidebar.component.spec.ts | 2 +- .../account-sidebar.component.ts | 4 +- .../controls/controls.component.spec.ts | 2 +- .../accounts/controls/controls.component.ts | 2 +- .../delete-account-dialog.component.spec.ts | 2 +- .../delete-account-dialog.component.ts | 2 +- .../accounts/external/accounts.component.ts | 2 +- .../external/getTokenUsername.pipe.spec.ts | 2 +- .../external/getTokenUsername.pipe.ts | 2 +- .../change-username.component.spec.ts | 2 +- .../change-username.component.ts | 4 +- .../downloadcliclient.component.spec.ts | 2 +- .../downloadcliclient.component.ts | 2 +- .../onboarding/onboarding.component.ts | 2 +- .../requests/requests.component.ts | 2 +- .../loginComponents/state/requests.query.ts | 2 +- .../loginComponents/state/requests.service.ts | 2 +- .../loginComponents/state/requests.store.ts | 2 +- src/app/mytools/my-tool/my-tool.component.ts | 4 +- src/app/mytools/mytools.service.spec.ts | 20 +- src/app/mytools/mytools.service.ts | 2 +- .../sidebar-accordion.component.ts | 4 +- .../my-workflow/my-workflow.component.spec.ts | 8 +- .../my-workflow/my-workflow.component.ts | 8 +- .../myworkflows/myworkflows.service.spec.ts | 22 +- src/app/myworkflows/myworkflows.service.ts | 2 +- .../sidebar-accordion.component.ts | 4 +- src/app/navbar/navbar.component.ts | 4 +- .../sitewide-notifications.component.ts | 2 +- .../state/notifications.query.ts | 2 +- .../state/notifications.service.ts | 4 +- .../state/notifications.store.ts | 2 +- .../add-entry/add-entry.component.ts | 2 +- .../collection/collection.component.ts | 8 +- .../collection/state/add-entry.query.ts | 2 +- .../collection/state/add-entry.service.ts | 4 +- .../collection/state/add-entry.store.ts | 2 +- .../state/create-collection.service.spec.ts | 2 +- .../state/create-collection.service.ts | 3 +- .../organizations/events/events.component.ts | 2 +- .../organization-members.component.ts | 6 +- .../organization-stargazers.component.ts | 2 +- .../organization-starring.component.ts | 2 +- .../organization-starring.service.spec.ts | 2 +- .../organization-starring.service.ts | 2 +- .../organization/organization.component.ts | 2 +- ...update-organization-description.service.ts | 2 +- .../organizations/organizations.component.ts | 2 +- .../register-organization.component.ts | 2 +- src/app/organizations/state/events.query.ts | 2 +- src/app/organizations/state/events.service.ts | 2 +- src/app/organizations/state/events.store.ts | 2 +- .../state/organization-members.query.ts | 2 +- .../state/organization-members.service.ts | 2 +- .../state/organization-members.store.ts | 2 +- .../state/organization.service.ts | 2 +- .../organizations/state/organization.store.ts | 2 +- .../state/organizations.query.spec.ts | 11 +- .../state/organizations.query.ts | 2 +- .../state/organizations.service.ts | 2 +- .../state/organizations.store.ts | 2 +- .../register-organization.service.spec.ts | 2 +- .../state/register-organization.service.ts | 4 +- .../upsert-organization-member.service.ts | 2 +- .../upsert-organization-member.component.ts | 2 +- src/app/search/is-app-tool.pipe.ts | 2 +- src/app/search/map-friendly-values.pipe.ts | 2 +- src/app/search/search-entry-table.ts | 2 +- .../search-notebook-table.component.ts | 2 +- .../search-tool-table.component.ts | 2 +- .../search-workflow-table.component.ts | 2 +- src/app/search/state/search.query.ts | 2 +- src/app/search/state/search.service.spec.ts | 7 +- src/app/search/state/search.service.ts | 2 +- .../available-logs.component.ts | 2 +- src/app/shared/bioschema.service.spec.ts | 13 +- src/app/shared/bioschema.service.ts | 8 +- .../code-editor-list.component.ts | 6 +- .../code-editor-list.service.spec.ts | 2 +- .../code-editor-list.service.ts | 2 +- src/app/shared/container.service.spec.ts | 2 +- src/app/shared/container.service.ts | 2 +- .../descriptor-type-compat.service.spec.ts | 2 +- .../shared/descriptor-type-compat.service.ts | 2 +- src/app/shared/descriptor.service.spec.ts | 4 +- src/app/shared/descriptor.service.ts | 2 +- src/app/shared/dockstore.service.spec.ts | 4 +- src/app/shared/dockstore.service.ts | 2 +- .../entry-actions/entry-actions.component.ts | 2 +- .../entry-actions.service.spec.ts | 2 +- .../entry-actions/entry-actions.service.ts | 4 +- .../entry-actions/tool-actions.component.ts | 2 +- .../workflow-actions.component.ts | 4 +- src/app/shared/entry.ts | 6 +- .../shared/entry/descriptor-language.pipe.ts | 2 +- .../entry/descriptor-language.service.spec.ts | 2 +- .../entry/descriptor-language.service.ts | 8 +- ...nfo-tab-checker-workflow-path.component.ts | 2 +- .../shared/entry/public-file-download.pipe.ts | 4 +- .../register-checker-workflow.component.ts | 8 +- .../register-checker-workflow.service.spec.ts | 2 +- .../register-checker-workflow.service.ts | 15 +- src/app/shared/entry/select-tab.pipe.ts | 2 +- .../verified-by/verified-by.component.ts | 2 +- .../verified-display.component.ts | 2 +- .../extended-dockstoreTool.service.ts | 2 +- src/app/shared/extended-tools.service.ts | 2 +- src/app/shared/extended-workflows.service.ts | 2 +- src/app/shared/file-editing.ts | 2 +- src/app/shared/file.service.spec.ts | 2 +- src/app/shared/file.service.ts | 2 +- .../shared/ga4gh-files/ga4gh-files.model.ts | 2 +- .../shared/ga4gh-files/ga4gh-files.query.ts | 2 +- src/app/shared/image-provider.service.spec.ts | 6 +- src/app/shared/image-provider.service.ts | 2 +- src/app/shared/launch.service.ts | 2 +- src/app/shared/list.service.ts | 6 +- .../shared/models/ExtendedDockstoreTool.ts | 2 +- src/app/shared/models/ExtendedWorkflow.ts | 2 +- src/app/shared/my-entry.ts | 2 +- src/app/shared/myentries.service.ts | 2 +- src/app/shared/org-schema.service.spec.ts | 3 +- src/app/shared/org-schema.service.ts | 2 +- src/app/shared/provider.service.spec.ts | 2 +- src/app/shared/refresh.service.spec.ts | 6 +- src/app/shared/refresh.service.ts | 10 +- .../shared/selectors/entry-file-selector.ts | 2 +- src/app/shared/star-organization.service.ts | 2 +- src/app/shared/starring.ts | 2 +- .../shared/state/checker-workflow.query.ts | 2 +- .../state/checker-workflow.service.spec.ts | 4 +- .../shared/state/checker-workflow.service.ts | 10 +- .../shared/state/checker-workflow.store.ts | 2 +- src/app/shared/state/entry-wizard.service.ts | 2 +- .../shared/state/extended-workflow.service.ts | 8 +- src/app/shared/state/token.query.ts | 2 +- src/app/shared/state/token.service.ts | 4 +- src/app/shared/state/token.store.ts | 2 +- src/app/shared/state/workflow.query.ts | 6 +- src/app/shared/state/workflow.service.ts | 8 +- src/app/shared/state/workflow.store.ts | 6 +- src/app/shared/tool-lister.ts | 2 +- src/app/shared/tool/tool.query.ts | 2 +- src/app/shared/tool/tool.service.ts | 2 +- src/app/shared/tool/tool.store.ts | 2 +- src/app/shared/url-resolver.service.spec.ts | 2 +- src/app/shared/url-resolver.service.ts | 2 +- src/app/shared/user/user.query.ts | 2 +- src/app/shared/user/user.service.ts | 2 +- src/app/shared/user/user.store.ts | 2 +- src/app/shared/versions.ts | 6 +- src/app/shared/view.ts | 2 +- .../source-file-tabs.component.spec.ts | 3 +- .../source-file-tabs.component.ts | 2 +- .../source-file-tabs.service.spec.ts | 2 +- .../source-file-tabs.service.ts | 2 +- src/app/stargazers/stargazers.component.ts | 2 +- .../starredentries.component.spec.ts | 2 +- .../starredentries.component.ts | 4 +- src/app/starring/starring.component.ts | 2 +- src/app/starring/starring.service.spec.ts | 6 +- src/app/starring/starring.service.ts | 12 +- src/app/test/mocked-objects.ts | 35 +- src/app/test/service-stubs.ts | 53 +- src/app/user-page/user-page.component.ts | 4 +- .../dag/cwl-viewer/cwl-viewer.component.ts | 2 +- src/app/workflow/dag/dag.component.spec.ts | 2 +- src/app/workflow/dag/dag.component.ts | 6 +- .../workflow/dag/state/dag.service.spec.ts | 2 +- src/app/workflow/dag/state/dag.service.ts | 2 +- .../wdl-viewer/state/wdl-viewer.service.ts | 2 +- .../dag/wdl-viewer/wdl-viewer.component.ts | 2 +- .../dag/wdl-viewer/wdl-viewer.service.spec.ts | 2 +- .../executions/executions-tab.component.ts | 2 +- src/app/workflow/files/state/files.query.ts | 2 +- src/app/workflow/files/state/files.service.ts | 2 +- src/app/workflow/files/state/files.store.ts | 2 +- .../workflow/info-tab/info-tab.component.ts | 6 +- .../info-tab/info-tab.service.spec.ts | 2 +- src/app/workflow/info-tab/info-tab.service.ts | 8 +- .../launch-third-party.component.spec.ts | 2 +- .../launch-third-party.component.ts | 10 +- .../state/descriptors-query.ts | 2 +- .../state/descriptors-store.ts | 2 +- .../state/descriptors.service.ts | 2 +- src/app/workflow/launch/launch.component.ts | 8 +- .../launch/workflow-launch.service.spec.ts | 2 +- .../launch/workflow-launch.service.ts | 2 +- .../permissions/permissions.component.spec.ts | 2 +- .../permissions/permissions.component.ts | 4 +- ...sh-workflow-organization.component.spec.ts | 2 +- ...refresh-workflow-organization.component.ts | 6 +- .../register-workflow-modal.component.ts | 2 +- .../register-workflow-modal.service.spec.ts | 8 +- .../register-workflow-modal.service.ts | 6 +- .../snaphot-exporter-modal.component.ts | 2 +- .../snapshot-exporter-modal.service.ts | 2 +- .../tool-tab/tool-tab.component.spec.ts | 2 +- .../workflow/tool-tab/tool-tab.component.ts | 10 +- .../tool-tab/tool-tab.service.spec.ts | 2 +- src/app/workflow/tool-tab/tool-tab.service.ts | 2 +- .../version-modal/version-modal.component.ts | 12 +- .../version-modal.service.spec.ts | 9 +- .../version-modal/version-modal.service.ts | 15 +- .../versions/versions.component.spec.ts | 2 +- .../workflow/versions/versions.component.ts | 4 +- src/app/workflow/view/view.component.spec.ts | 6 +- src/app/workflow/view/view.component.ts | 23 +- src/app/workflow/view/view.service.ts | 5 +- .../workflow-file-editor.component.spec.ts | 4 +- .../workflow-file-editor.component.ts | 8 +- src/app/workflow/workflow.component.ts | 16 +- src/app/workflows/list/list.component.ts | 2 +- .../published-workflows.datasource.spec.ts | 2 +- .../list/published-workflows.datasource.ts | 2 +- 281 files changed, 8461 insertions(+), 967 deletions(-) delete mode 100644 cypress/plugins/index.js create mode 100644 cypress/plugins/index.ts diff --git a/THIRD-PARTY-LICENSES.csv b/THIRD-PARTY-LICENSES.csv index 19165bdecf..a7cfdbcded 100644 --- a/THIRD-PARTY-LICENSES.csv +++ b/THIRD-PARTY-LICENSES.csv @@ -40,6 +40,7 @@ "@babel/generator@7.18.12","MIT","https://github.com/babel/babel" "@babel/generator@7.20.0","MIT","https://github.com/babel/babel" "@babel/helper-annotate-as-pure@7.18.6","MIT","https://github.com/babel/babel" +"@babel/helper-annotate-as-pure@7.22.5","MIT","https://github.com/babel/babel" "@babel/helper-builder-binary-assignment-operator-visitor@7.18.9","MIT","https://github.com/babel/babel" "@babel/helper-compilation-targets@7.20.0","MIT","https://github.com/babel/babel" "@babel/helper-create-class-features-plugin@7.19.0","MIT","https://github.com/babel/babel" @@ -50,18 +51,18 @@ "@babel/helper-function-name@7.19.0","MIT","https://github.com/babel/babel" "@babel/helper-hoist-variables@7.18.6","MIT","https://github.com/babel/babel" "@babel/helper-member-expression-to-functions@7.18.9","MIT","https://github.com/babel/babel" -"@babel/helper-module-imports@7.18.6","MIT","https://github.com/babel/babel" +"@babel/helper-module-imports@7.22.5","MIT","https://github.com/babel/babel" "@babel/helper-module-transforms@7.19.6","MIT","https://github.com/babel/babel" "@babel/helper-optimise-call-expression@7.18.6","MIT","https://github.com/babel/babel" -"@babel/helper-plugin-utils@7.19.0","MIT","https://github.com/babel/babel" +"@babel/helper-plugin-utils@7.22.5","MIT","https://github.com/babel/babel" "@babel/helper-remap-async-to-generator@7.18.9","MIT","https://github.com/babel/babel" "@babel/helper-replace-supers@7.19.1","MIT","https://github.com/babel/babel" "@babel/helper-simple-access@7.19.4","MIT","https://github.com/babel/babel" "@babel/helper-skip-transparent-expression-wrappers@7.20.0","MIT","https://github.com/babel/babel" "@babel/helper-split-export-declaration@7.18.6","MIT","https://github.com/babel/babel" -"@babel/helper-string-parser@7.19.4","MIT","https://github.com/babel/babel" -"@babel/helper-validator-identifier@7.19.1","MIT","https://github.com/babel/babel" -"@babel/helper-validator-option@7.18.6","MIT","https://github.com/babel/babel" +"@babel/helper-string-parser@7.22.5","MIT","https://github.com/babel/babel" +"@babel/helper-validator-identifier@7.22.5","MIT","https://github.com/babel/babel" +"@babel/helper-validator-option@7.22.5","MIT","https://github.com/babel/babel" "@babel/helper-wrap-function@7.19.0","MIT","https://github.com/babel/babel" "@babel/helpers@7.20.0","MIT","https://github.com/babel/babel" "@babel/highlight@7.18.6","MIT","https://github.com/babel/babel" @@ -90,6 +91,7 @@ "@babel/plugin-syntax-export-namespace-from@7.8.3","MIT","https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-export-namespace-from" "@babel/plugin-syntax-import-assertions@7.20.0","MIT","https://github.com/babel/babel" "@babel/plugin-syntax-json-strings@7.8.3","MIT","https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-json-strings" +"@babel/plugin-syntax-jsx@7.22.5","MIT","https://github.com/babel/babel" "@babel/plugin-syntax-logical-assignment-operators@7.10.4","MIT","https://github.com/babel/babel" "@babel/plugin-syntax-nullish-coalescing-operator@7.8.3","MIT","https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator" "@babel/plugin-syntax-numeric-separator@7.10.4","MIT","https://github.com/babel/babel" @@ -121,6 +123,10 @@ "@babel/plugin-transform-object-super@7.18.6","MIT","https://github.com/babel/babel" "@babel/plugin-transform-parameters@7.18.8","MIT","https://github.com/babel/babel" "@babel/plugin-transform-property-literals@7.18.6","MIT","https://github.com/babel/babel" +"@babel/plugin-transform-react-display-name@7.22.5","MIT","https://github.com/babel/babel" +"@babel/plugin-transform-react-jsx-development@7.22.5","MIT","https://github.com/babel/babel" +"@babel/plugin-transform-react-jsx@7.22.5","MIT","https://github.com/babel/babel" +"@babel/plugin-transform-react-pure-annotations@7.22.5","MIT","https://github.com/babel/babel" "@babel/plugin-transform-regenerator@7.18.6","MIT","https://github.com/babel/babel" "@babel/plugin-transform-reserved-words@7.18.6","MIT","https://github.com/babel/babel" "@babel/plugin-transform-runtime@7.18.10","MIT","https://github.com/babel/babel" @@ -133,10 +139,11 @@ "@babel/plugin-transform-unicode-regex@7.18.6","MIT","https://github.com/babel/babel" "@babel/preset-env@7.18.10","MIT","https://github.com/babel/babel" "@babel/preset-modules@0.1.5","MIT","https://github.com/babel/preset-modules" +"@babel/preset-react@7.22.5","MIT","https://github.com/babel/babel" "@babel/runtime@7.18.9","MIT","https://github.com/babel/babel" "@babel/template@7.18.10","MIT","https://github.com/babel/babel" "@babel/traverse@7.20.0","MIT","https://github.com/babel/babel" -"@babel/types@7.20.0","MIT","https://github.com/babel/babel" +"@babel/types@7.22.5","MIT","https://github.com/babel/babel" "@braintree/sanitize-url@6.0.2","MIT","https://github.com/braintree/sanitize-url" "@cspotcode/source-map-support@0.8.1","MIT","https://github.com/cspotcode/node-source-map-support" "@csstools/postcss-cascade-layers@1.1.1","CC0-1.0","https://github.com/csstools/postcss-plugins" @@ -155,6 +162,8 @@ "@csstools/postcss-unset-value@1.0.2","CC0-1.0","https://github.com/csstools/postcss-plugins" "@csstools/selector-specificity@2.0.2","CC0-1.0","https://github.com/csstools/postcss-plugins" "@cypress/request@2.88.10","Apache-2.0","https://github.com/cypress-io/request" +"@cypress/webpack-batteries-included-preprocessor@2.4.1","MIT","https://github.com/cypress-io/cypress" +"@cypress/webpack-preprocessor@5.17.1","MIT","https://github.com/cypress-io/cypress" "@cypress/xvfb@1.2.4","MIT","https://github.com/cypress-io/xvfb" "@datorama/akita-ngdevtools@6.0.1","Apache-2.0","https://github.com/datorama/akita" "@datorama/akita@6.2.4","Apache-2.0","https://github.com/datorama/akita" @@ -219,6 +228,7 @@ "@types/jasmine@3.10.3","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" "@types/jquery@3.5.13","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" "@types/json-schema@7.0.9","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" +"@types/json5@0.0.29","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" "@types/marked@4.0.7","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" "@types/mime@3.0.1","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" "@types/node@14.18.10","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" @@ -232,6 +242,8 @@ "@types/sinonjs__fake-timers@8.1.1","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" "@types/sizzle@2.3.3","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" "@types/sockjs@0.3.33","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" +"@types/strip-bom@3.0.0","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" +"@types/strip-json-comments@0.0.30","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" "@types/ws@8.5.3","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" "@types/yauzl@2.9.2","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" "@typescript-eslint/eslint-plugin@5.3.0","MIT","https://github.com/typescript-eslint/typescript-eslint" @@ -253,20 +265,38 @@ "@typescript-eslint/visitor-keys@5.3.0","MIT","https://github.com/typescript-eslint/typescript-eslint" "@typescript-eslint/visitor-keys@5.37.0","MIT","https://github.com/typescript-eslint/typescript-eslint" "@webassemblyjs/ast@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/ast@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" "@webassemblyjs/floating-point-hex-parser@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/floating-point-hex-parser@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" "@webassemblyjs/helper-api-error@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/helper-api-error@1.9.0","MIT","" "@webassemblyjs/helper-buffer@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/helper-buffer@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/helper-code-frame@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/helper-fsm@1.9.0","ISC","" +"@webassemblyjs/helper-module-context@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" "@webassemblyjs/helper-numbers@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" "@webassemblyjs/helper-wasm-bytecode@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/helper-wasm-bytecode@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" "@webassemblyjs/helper-wasm-section@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/helper-wasm-section@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" "@webassemblyjs/ieee754@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/ieee754@1.9.0","MIT","" "@webassemblyjs/leb128@1.11.1","Apache-2.0","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/leb128@1.9.0","MIT","" "@webassemblyjs/utf8@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/utf8@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" "@webassemblyjs/wasm-edit@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/wasm-edit@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" "@webassemblyjs/wasm-gen@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/wasm-gen@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" "@webassemblyjs/wasm-opt@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/wasm-opt@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" "@webassemblyjs/wasm-parser@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/wasm-parser@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/wast-parser@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" "@webassemblyjs/wast-printer@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" +"@webassemblyjs/wast-printer@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" "@xtuc/ieee754@1.2.0","BSD-3-Clause","https://github.com/feross/ieee754" "@xtuc/long@4.2.2","Apache-2.0","https://github.com/dcodeIO/long.js" "@yarnpkg/lockfile@1.1.0","BSD-2-Clause","https://github.com/yarnpkg/yarn/blob/master/packages/lockfile" @@ -279,6 +309,7 @@ "acorn-import-assertions@1.8.0","MIT","https://github.com/xtuc/acorn-import-assertions" "acorn-jsx@5.3.2","MIT","https://github.com/acornjs/acorn-jsx" "acorn-walk@8.2.0","MIT","https://github.com/acornjs/acorn" +"acorn@6.4.2","MIT","https://github.com/acornjs/acorn" "acorn@8.8.1","MIT","https://github.com/acornjs/acorn" "adjust-sourcemap-loader@4.0.0","MIT","https://github.com/bholloway/adjust-sourcemap-loader" "agent-base@4.2.1","MIT","https://github.com/TooTallNate/node-agent-base" @@ -287,6 +318,7 @@ "agentkeepalive@3.5.2","MIT","https://github.com/node-modules/agentkeepalive" "agentkeepalive@4.2.1","MIT","https://github.com/node-modules/agentkeepalive" "aggregate-error@3.1.0","MIT","https://github.com/sindresorhus/aggregate-error" +"ajv-errors@1.0.1","MIT","https://github.com/epoberezkin/ajv-errors" "ajv-formats@2.1.1","MIT","https://github.com/ajv-validator/ajv-formats" "ajv-keywords@3.5.2","MIT","https://github.com/epoberezkin/ajv-keywords" "ajv-keywords@5.1.0","MIT","https://github.com/epoberezkin/ajv-keywords" @@ -300,6 +332,7 @@ "ansi-regex@5.0.1","MIT","https://github.com/chalk/ansi-regex" "ansi-styles@3.2.1","MIT","https://github.com/chalk/ansi-styles" "ansi-styles@4.3.0","MIT","https://github.com/chalk/ansi-styles" +"anymatch@2.0.0","ISC","https://github.com/micromatch/anymatch" "anymatch@3.1.2","ISC","https://github.com/micromatch/anymatch" "aproba@1.2.0","ISC","https://github.com/iarna/aproba" "aproba@2.0.0","ISC","https://github.com/iarna/aproba" @@ -310,26 +343,36 @@ "argparse@2.0.1","Python-2.0","https://github.com/nodeca/argparse" "aria-query@5.0.0","Apache-2.0","https://github.com/A11yance/aria-query" "aria-query@5.0.2","Apache-2.0","https://github.com/A11yance/aria-query" +"arr-diff@4.0.0","MIT","https://github.com/jonschlinkert/arr-diff" +"arr-flatten@1.1.0","MIT","https://github.com/jonschlinkert/arr-flatten" +"arr-union@3.1.0","MIT","https://github.com/jonschlinkert/arr-union" "array-find-index@1.0.2","MIT","https://github.com/sindresorhus/array-find-index" "array-flatten@1.1.1","MIT","https://github.com/blakeembrey/array-flatten" "array-flatten@2.1.2","MIT","https://github.com/blakeembrey/array-flatten" "array-union@1.0.2","MIT","https://github.com/sindresorhus/array-union" "array-union@2.1.0","MIT","https://github.com/sindresorhus/array-union" "array-uniq@1.0.3","MIT","https://github.com/sindresorhus/array-uniq" +"array-unique@0.3.2","MIT","https://github.com/jonschlinkert/array-unique" "asap@2.0.6","MIT","https://github.com/kriskowal/asap" +"asn1.js@5.4.1","MIT","https://github.com/indutny/asn1.js" "asn1@0.2.6","MIT","https://github.com/joyent/node-asn1" "assert-plus@1.0.0","MIT","https://github.com/mcavage/node-assert-plus" +"assert@1.5.0","MIT","https://github.com/browserify/commonjs-assert" +"assign-symbols@1.0.0","MIT","https://github.com/jonschlinkert/assign-symbols" "astral-regex@2.0.0","MIT","https://github.com/kevva/astral-regex" +"async-each@1.0.6","MIT","https://github.com/paulmillr/async-each" "async@2.6.4","MIT","https://github.com/caolan/async" "async@3.2.3","MIT","https://github.com/caolan/async" "asynckit@0.4.0","MIT","https://github.com/alexindigo/asynckit" "at-least-node@1.0.0","ISC","https://github.com/RyanZim/at-least-node" +"atob@2.1.2","(MIT OR Apache-2.0)","git://git.coolaj86.com/coolaj86/atob.js" "autoprefixer@10.4.13","MIT","https://github.com/postcss/autoprefixer" "aws-sign2@0.7.0","Apache-2.0","https://github.com/mikeal/aws-sign" "aws4@1.11.0","MIT","https://github.com/mhart/aws4" "axe-core@4.4.3","MPL-2.0","https://github.com/dequelabs/axe-core" "axobject-query@3.0.1","Apache-2.0","https://github.com/A11yance/axobject-query" "babel-loader@8.2.5","MIT","https://github.com/babel/babel-loader" +"babel-plugin-add-module-exports@1.0.4","MIT","https://github.com/59naga/babel-plugin-add-module-exports" "babel-plugin-istanbul@6.1.1","BSD-3-Clause","https://github.com/istanbuljs/babel-plugin-istanbul" "babel-plugin-polyfill-corejs2@0.3.3","MIT","https://github.com/babel/babel-polyfills" "babel-plugin-polyfill-corejs3@0.5.3","MIT","https://github.com/babel/babel-polyfills" @@ -337,14 +380,19 @@ "balanced-match@1.0.2","MIT","https://github.com/juliangruber/balanced-match" "base64-js@1.5.1","MIT","https://github.com/beatgammit/base64-js" "base64id@2.0.0","MIT","https://github.com/faeldt/base64id" +"base@0.11.2","MIT","https://github.com/node-base/base" "batch@0.6.1","MIT","https://github.com/visionmedia/batch" "bcrypt-pbkdf@1.0.2","BSD-3-Clause","https://github.com/joyent/node-bcrypt-pbkdf" "bfj@7.0.2","MIT","git+https://gitlab.com/philbooth/bfj" "big.js@5.2.2","MIT","https://github.com/MikeMcl/big.js" +"binary-extensions@1.13.1","MIT","https://github.com/sindresorhus/binary-extensions" "binary-extensions@2.2.0","MIT","https://github.com/sindresorhus/binary-extensions" "bl@4.1.0","MIT","https://github.com/rvagg/bl" "blob-util@2.0.2","Apache-2.0","https://github.com/nolanlawson/blob-util" +"bluebird@3.7.1","MIT","https://github.com/petkaantonov/bluebird" "bluebird@3.7.2","MIT","https://github.com/petkaantonov/bluebird" +"bn.js@4.12.0","MIT","https://github.com/indutny/bn.js" +"bn.js@5.2.1","MIT","https://github.com/indutny/bn.js" "body-parser@1.20.1","MIT","https://github.com/expressjs/body-parser" "bodybuilder@2.4.0","MIT","https://github.com/danpaz/bodybuilder" "bonjour-service@1.0.14","MIT","https://github.com/onlxltd/bonjour-service" @@ -352,17 +400,29 @@ "bootstrap@3.4.1","MIT","https://github.com/twbs/bootstrap" "brace-expansion@1.1.11","MIT","https://github.com/juliangruber/brace-expansion" "brace-expansion@2.0.1","MIT","https://github.com/juliangruber/brace-expansion" +"braces@2.3.2","MIT","https://github.com/micromatch/braces" "braces@3.0.2","MIT","https://github.com/micromatch/braces" +"brorand@1.1.0","MIT","https://github.com/indutny/brorand" +"browserify-aes@1.2.0","MIT","https://github.com/crypto-browserify/browserify-aes" +"browserify-cipher@1.0.1","MIT","https://github.com/crypto-browserify/browserify-cipher" +"browserify-des@1.0.2","MIT","https://github.com/crypto-browserify/browserify-des" +"browserify-rsa@4.1.0","MIT","https://github.com/crypto-browserify/browserify-rsa" +"browserify-sign@4.2.1","ISC","https://github.com/crypto-browserify/browserify-sign" +"browserify-zlib@0.2.0","MIT","https://github.com/devongovett/browserify-zlib" "browserslist@4.21.4","MIT","https://github.com/browserslist/browserslist" "buffer-crc32@0.2.13","MIT","https://github.com/brianloveswords/buffer-crc32" "buffer-from@1.1.2","MIT","https://github.com/LinusU/buffer-from" +"buffer-xor@1.0.3","MIT","https://github.com/crypto-browserify/buffer-xor" +"buffer@4.9.2","MIT","https://github.com/feross/buffer" "buffer@5.7.1","MIT","https://github.com/feross/buffer" +"builtin-status-codes@3.0.0","MIT","https://github.com/bendrucker/builtin-status-codes" "builtins@1.0.3","MIT","https://github.com/juliangruber/builtins" "builtins@5.0.1","MIT","https://github.com/juliangruber/builtins" "bytes@3.0.0","MIT","https://github.com/visionmedia/bytes.js" "bytes@3.1.2","MIT","https://github.com/visionmedia/bytes.js" "cacache@12.0.4","ISC","https://github.com/npm/cacache" "cacache@16.1.2","ISC","https://github.com/npm/cacache" +"cache-base@1.0.1","MIT","https://github.com/jonschlinkert/cache-base" "cachedir@2.3.0","MIT","https://github.com/LinusU/node-cachedir" "call-bind@1.0.2","MIT","https://github.com/ljharb/call-bind" "callsites@3.1.0","MIT","https://github.com/sindresorhus/callsites" @@ -376,11 +436,14 @@ "check-types@11.1.2","MIT","git+https://gitlab.com/philbooth/check-types.js" "cheerio-select@2.1.0","BSD-2-Clause","https://github.com/cheeriojs/cheerio-select" "cheerio@1.0.0-rc.12","MIT","https://github.com/cheeriojs/cheerio" +"chokidar@2.1.8","MIT","https://github.com/paulmillr/chokidar" "chokidar@3.5.3","MIT","https://github.com/paulmillr/chokidar" "chownr@1.1.4","ISC","https://github.com/isaacs/chownr" "chownr@2.0.0","ISC","https://github.com/isaacs/chownr" "chrome-trace-event@1.0.3","MIT","https://github.com/samccone/chrome-trace-event" "ci-info@3.3.0","MIT","https://github.com/watson/ci-info" +"cipher-base@1.0.4","MIT","https://github.com/crypto-browserify/cipher-base" +"class-utils@0.3.6","MIT","https://github.com/jonschlinkert/class-utils" "clean-stack@2.2.0","MIT","https://github.com/sindresorhus/clean-stack" "cli-cursor@3.1.0","MIT","https://github.com/sindresorhus/cli-cursor" "cli-spinners@2.6.1","MIT","https://github.com/sindresorhus/cli-spinners" @@ -391,6 +454,9 @@ "cliui@7.0.4","ISC","https://github.com/yargs/cliui" "clone-deep@4.0.1","MIT","https://github.com/jonschlinkert/clone-deep" "clone@1.0.4","MIT","https://github.com/pvorb/node-clone" +"coffee-loader@0.9.0","MIT","https://github.com/webpack-contrib/coffee-loader" +"coffeescript@1.12.7","MIT","https://github.com/jashkenas/coffeescript" +"collection-visit@1.0.0","MIT","https://github.com/jonschlinkert/collection-visit" "color-convert@1.9.3","MIT","https://github.com/Qix-/color-convert" "color-convert@2.0.1","MIT","https://github.com/Qix-/color-convert" "color-name@1.1.3","MIT","https://github.com/dfcreative/color-name" @@ -409,13 +475,16 @@ "commander@8.3.0","MIT","https://github.com/tj/commander.js" "common-tags@1.8.2","MIT","https://github.com/zspecza/common-tags" "commondir@1.0.1","MIT","https://github.com/substack/node-commondir" +"component-emitter@1.3.0","MIT","https://github.com/component/emitter" "compressible@2.0.18","MIT","https://github.com/jshttp/compressible" "compression@1.7.4","MIT","https://github.com/expressjs/compression" "concat-map@0.0.1","MIT","https://github.com/substack/node-concat-map" "concat-stream@1.6.2","MIT","https://github.com/maxogden/concat-stream" "connect-history-api-fallback@2.0.0","MIT","https://github.com/bripkens/connect-history-api-fallback" "connect@3.7.0","MIT","https://github.com/senchalabs/connect" +"console-browserify@1.2.0","MIT","https://github.com/browserify/console-browserify" "console-control-strings@1.1.0","ISC","https://github.com/iarna/console-control-strings" +"constants-browserify@1.0.0","MIT","https://github.com/juliangruber/constants-browserify" "content-disposition@0.5.4","MIT","https://github.com/jshttp/content-disposition" "content-type@1.0.4","MIT","https://github.com/jshttp/content-type" "convert-source-map@1.8.0","MIT","https://github.com/thlorenz/convert-source-map" @@ -424,14 +493,19 @@ "cookie@0.5.0","MIT","https://github.com/jshttp/cookie" "copy-anything@2.0.6","MIT","https://github.com/mesqueeb/copy-anything" "copy-concurrently@1.0.5","ISC","https://github.com/npm/copy-concurrently" +"copy-descriptor@0.1.1","MIT","https://github.com/jonschlinkert/copy-descriptor" "copy-webpack-plugin@11.0.0","MIT","https://github.com/webpack-contrib/copy-webpack-plugin" "core-js-compat@3.26.0","MIT","https://github.com/zloirock/core-js" "core-util-is@1.0.2","MIT","https://github.com/isaacs/core-util-is" "cors@2.8.5","MIT","https://github.com/expressjs/cors" "cosmiconfig@7.0.1","MIT","https://github.com/davidtheclark/cosmiconfig" +"create-ecdh@4.0.4","MIT","https://github.com/crypto-browserify/createECDH" +"create-hash@1.2.0","MIT","https://github.com/crypto-browserify/createHash" +"create-hmac@1.1.7","MIT","https://github.com/crypto-browserify/createHmac" "create-require@1.1.1","MIT","https://github.com/nuxt-contrib/create-require" "critters@0.0.16","Apache-2.0","https://github.com/GoogleChromeLabs/critters" "cross-spawn@7.0.3","MIT","https://github.com/moxystudio/node-cross-spawn" +"crypto-browserify@3.12.0","MIT","https://github.com/crypto-browserify/crypto-browserify" "css-blank-pseudo@3.0.3","CC0-1.0","https://github.com/csstools/postcss-plugins" "css-has-pseudo@3.0.4","CC0-1.0","https://github.com/csstools/postcss-plugins" "css-loader@6.7.1","MIT","https://github.com/webpack-contrib/css-loader" @@ -489,10 +563,14 @@ "debug@3.2.7","MIT","https://github.com/visionmedia/debug" "debug@4.3.4","MIT","https://github.com/debug-js/debug" "debuglog@1.0.1","MIT","https://github.com/sam-github/node-debuglog" +"decode-uri-component@0.2.2","MIT","https://github.com/SamVerschueren/decode-uri-component" "deep-is@0.1.4","MIT","https://github.com/thlorenz/deep-is" "default-gateway@6.0.3","BSD-2-Clause","https://github.com/silverwind/default-gateway" "defaults@1.0.3","MIT","https://github.com/tmpvar/defaults" "define-lazy-prop@2.0.0","MIT","https://github.com/sindresorhus/define-lazy-prop" +"define-property@0.2.5","MIT","https://github.com/jonschlinkert/define-property" +"define-property@1.0.0","MIT","https://github.com/jonschlinkert/define-property" +"define-property@2.0.2","MIT","https://github.com/jonschlinkert/define-property" "delaunator@5.0.0","ISC","https://github.com/mapbox/delaunator" "delayed-stream@1.0.0","MIT","https://github.com/felixge/node-delayed-stream" "delegate@3.2.0","MIT","https://github.com/zenorocha/delegate" @@ -500,12 +578,14 @@ "depd@1.1.2","MIT","https://github.com/dougwilson/nodejs-depd" "depd@2.0.0","MIT","https://github.com/dougwilson/nodejs-depd" "dependency-graph@0.11.0","MIT","https://github.com/jriecken/dependency-graph" +"des.js@1.1.0","MIT","https://github.com/indutny/des.js" "destroy@1.2.0","MIT","https://github.com/stream-utils/destroy" "detect-node@2.1.0","MIT","https://github.com/iliakan/detect-node" "devtools-protocol@0.0.869402","BSD-3-Clause","https://github.com/ChromeDevTools/devtools-protocol" "dezalgo@1.0.3","ISC","https://github.com/npm/dezalgo" "di@0.0.1","MIT","https://github.com/vojtajina/node-di" "diff@4.0.2","BSD-3-Clause","https://github.com/kpdecker/jsdiff" +"diffie-hellman@5.0.3","MIT","https://github.com/crypto-browserify/diffie-hellman" "dir-glob@3.0.1","MIT","https://github.com/kevva/dir-glob" "dns-equal@1.0.0","MIT","https://github.com/watson/dns-equal" "dns-packet@5.4.0","MIT","https://github.com/mafintosh/dns-packet" @@ -513,6 +593,7 @@ "dom-serialize@2.2.1","MIT","https://github.com/webmodules/dom-serialize" "dom-serializer@1.3.2","MIT","https://github.com/cheeriojs/dom-renderer" "dom-serializer@2.0.0","MIT","https://github.com/cheeriojs/dom-serializer" +"domain-browser@1.2.0","MIT","https://github.com/bevry/domain-browser" "domelementtype@2.3.0","BSD-2-Clause","https://github.com/fb55/domelementtype" "domhandler@4.3.0","BSD-2-Clause","https://github.com/fb55/domhandler" "domhandler@5.0.3","BSD-2-Clause","https://github.com/fb55/domhandler" @@ -523,6 +604,7 @@ "ecc-jsbn@0.1.2","MIT","https://github.com/quartzjer/ecc-jsbn" "ee-first@1.1.1","MIT","https://github.com/jonathanong/ee-first" "electron-to-chromium@1.4.284","ISC","https://github.com/kilian/electron-to-chromium" +"elliptic@6.5.4","MIT","https://github.com/indutny/elliptic" "emoji-regex@8.0.0","MIT","https://github.com/mathiasbynens/emoji-regex" "emoji-toolkit@6.6.0","MIT","https://github.com/joypixels/emoji-toolkit" "emojis-list@3.0.0","MIT","https://github.com/kikobeats/emojis-list" @@ -531,6 +613,7 @@ "end-of-stream@1.4.4","MIT","https://github.com/mafintosh/end-of-stream" "engine.io-parser@5.0.6","MIT","https://github.com/socketio/engine.io-parser" "engine.io@6.4.2","MIT","https://github.com/socketio/engine.io" +"enhanced-resolve@4.5.0","MIT","https://github.com/webpack/enhanced-resolve" "enhanced-resolve@5.10.0","MIT","https://github.com/webpack/enhanced-resolve" "enquirer@2.3.6","MIT","https://github.com/enquirer/enquirer" "ent@2.2.0","MIT","https://github.com/substack/node-ent" @@ -552,6 +635,7 @@ "escape-html@1.0.3","MIT","https://github.com/component/escape-html" "escape-string-regexp@1.0.5","MIT","https://github.com/sindresorhus/escape-string-regexp" "escape-string-regexp@4.0.0","MIT","https://github.com/sindresorhus/escape-string-regexp" +"eslint-scope@4.0.3","BSD-2-Clause","https://github.com/eslint/eslint-scope" "eslint-scope@5.1.1","BSD-2-Clause","https://github.com/eslint/eslint-scope" "eslint-scope@7.1.0","BSD-2-Clause","https://github.com/eslint/eslint-scope" "eslint-utils@3.0.0","MIT","https://github.com/mysticatea/eslint-utils" @@ -570,12 +654,17 @@ "eventemitter2@6.4.7","MIT","https://github.com/hij1nx/EventEmitter2" "eventemitter3@4.0.7","MIT","https://github.com/primus/eventemitter3" "events@3.3.0","MIT","https://github.com/Gozala/events" +"evp_bytestokey@1.0.3","MIT","https://github.com/crypto-browserify/EVP_BytesToKey" "execa@4.1.0","MIT","https://github.com/sindresorhus/execa" "execa@5.1.1","MIT","https://github.com/sindresorhus/execa" "executable@4.1.1","MIT","https://github.com/kevva/executable" +"expand-brackets@2.1.4","MIT","https://github.com/jonschlinkert/expand-brackets" "express@4.18.2","MIT","https://github.com/expressjs/express" +"extend-shallow@2.0.1","MIT","https://github.com/jonschlinkert/extend-shallow" +"extend-shallow@3.0.2","MIT","https://github.com/jonschlinkert/extend-shallow" "extend@3.0.2","MIT","https://github.com/justmoon/node-extend" "external-editor@3.1.0","MIT","https://github.com/mrkmg/node-external-editor" +"extglob@2.0.4","MIT","https://github.com/micromatch/extglob" "extract-zip@2.0.1","BSD-2-Clause","https://github.com/maxogden/extract-zip" "extsprintf@1.3.0","MIT","https://github.com/davepacheco/node-extsprintf" "fast-deep-equal@3.1.3","MIT","https://github.com/epoberezkin/fast-deep-equal" @@ -591,19 +680,24 @@ "file-entry-cache@6.0.1","MIT","https://github.com/royriojas/file-entry-cache" "file-saver@2.0.5","MIT","https://github.com/eligrey/FileSaver.js" "file-url@3.0.0","MIT","https://github.com/sindresorhus/file-url" +"fill-range@4.0.0","MIT","https://github.com/jonschlinkert/fill-range" "fill-range@7.0.1","MIT","https://github.com/jonschlinkert/fill-range" "finalhandler@1.1.2","MIT","https://github.com/pillarjs/finalhandler" "finalhandler@1.2.0","MIT","https://github.com/pillarjs/finalhandler" +"find-cache-dir@2.1.0","MIT","https://github.com/avajs/find-cache-dir" "find-cache-dir@3.3.2","MIT","https://github.com/avajs/find-cache-dir" +"find-up@3.0.0","MIT","https://github.com/sindresorhus/find-up" "find-up@4.1.0","MIT","https://github.com/sindresorhus/find-up" "flat-cache@3.0.4","MIT","https://github.com/royriojas/flat-cache" "flatted@3.2.5","ISC","https://github.com/WebReflection/flatted" "flush-write-stream@1.1.1","MIT","https://github.com/mafintosh/flush-write-stream" "follow-redirects@1.14.8","MIT","https://github.com/follow-redirects/follow-redirects" +"for-in@1.0.2","MIT","https://github.com/jonschlinkert/for-in" "forever-agent@0.6.1","Apache-2.0","https://github.com/mikeal/forever-agent" "form-data@2.3.3","MIT","https://github.com/form-data/form-data" "forwarded@0.2.0","MIT","https://github.com/jshttp/forwarded" "fraction.js@4.2.0","MIT","https://github.com/infusion/Fraction.js" +"fragment-cache@0.2.1","MIT","https://github.com/jonschlinkert/fragment-cache" "fresh@0.5.2","MIT","https://github.com/jshttp/fresh" "from2@2.3.0","MIT","https://github.com/hughsk/from2" "fs-constants@1.0.0","MIT","https://github.com/mafintosh/fs-constants" @@ -626,8 +720,10 @@ "get-stream@4.1.0","MIT","https://github.com/sindresorhus/get-stream" "get-stream@5.2.0","MIT","https://github.com/sindresorhus/get-stream" "get-stream@6.0.1","MIT","https://github.com/sindresorhus/get-stream" +"get-value@2.0.6","MIT","https://github.com/jonschlinkert/get-value" "getos@3.2.1","MIT","https://github.com/retrohacker/getos" "getpass@0.1.7","MIT","https://github.com/arekinath/node-getpass" +"glob-parent@3.1.0","ISC","https://github.com/es128/glob-parent" "glob-parent@5.1.2","ISC","https://github.com/gulpjs/glob-parent" "glob-parent@6.0.2","ISC","https://github.com/gulpjs/glob-parent" "glob-to-regexp@0.4.1","BSD-2-Clause","https://github.com/fitzgen/glob-to-regexp" @@ -647,10 +743,17 @@ "has-flag@4.0.0","MIT","https://github.com/sindresorhus/has-flag" "has-symbols@1.0.3","MIT","https://github.com/inspect-js/has-symbols" "has-unicode@2.0.1","ISC","https://github.com/iarna/has-unicode" +"has-value@0.3.1","MIT","https://github.com/jonschlinkert/has-value" +"has-value@1.0.0","MIT","https://github.com/jonschlinkert/has-value" +"has-values@0.1.4","MIT","https://github.com/jonschlinkert/has-values" +"has-values@1.0.0","MIT","https://github.com/jonschlinkert/has-values" "has@1.0.3","MIT","https://github.com/tarruda/has" +"hash-base@3.1.0","MIT","https://github.com/crypto-browserify/hash-base" +"hash.js@1.1.7","MIT","https://github.com/indutny/hash.js" "hdr-histogram-js@2.0.3","BSD*","https://github.com/HdrHistogram/HdrHistogramJS" "hdr-histogram-percentiles-obj@3.0.0","MIT","https://github.com/GlenTiki/hdr-histogram-percentiles-obj" "heap@0.2.7","MIT","https://github.com/qiao/heap.js" +"hmac-drbg@1.0.1","MIT","https://github.com/indutny/hmac-drbg" "hogan.js@3.0.2","Apache-2.0","https://github.com/twitter/hogan.js" "hoopy@0.1.4","MIT","git+https://gitlab.com/philbooth/hoopy" "hosted-git-info@2.8.9","ISC","https://github.com/npm/hosted-git-info" @@ -671,6 +774,7 @@ "http-proxy-middleware@2.0.6","MIT","https://github.com/chimurai/http-proxy-middleware" "http-proxy@1.18.1","MIT","https://github.com/http-party/node-http-proxy" "http-signature@1.3.6","MIT","https://github.com/joyent/node-http-signature" +"https-browserify@1.0.0","MIT","https://github.com/substack/https-browserify" "https-proxy-agent@2.2.4","MIT","https://github.com/TooTallNate/node-https-proxy-agent" "https-proxy-agent@5.0.1","MIT","https://github.com/TooTallNate/node-https-proxy-agent" "human-signals@1.1.1","Apache-2.0","https://github.com/ehmicky/human-signals" @@ -693,6 +797,7 @@ "indent-string@4.0.0","MIT","https://github.com/sindresorhus/indent-string" "infer-owner@1.0.4","ISC","https://github.com/npm/infer-owner" "inflight@1.0.6","ISC","https://github.com/npm/inflight" +"inherits@2.0.1","ISC","https://github.com/isaacs/inherits" "inherits@2.0.3","ISC","https://github.com/isaacs/inherits" "inherits@2.0.4","ISC","https://github.com/isaacs/inherits" "ini@1.3.5","ISC","https://github.com/isaacs/ini" @@ -704,17 +809,29 @@ "ip@2.0.0","MIT","https://github.com/indutny/node-ip" "ipaddr.js@1.9.1","MIT","https://github.com/whitequark/ipaddr.js" "ipaddr.js@2.0.1","MIT","https://github.com/whitequark/ipaddr.js" +"is-accessor-descriptor@0.1.6","MIT","https://github.com/jonschlinkert/is-accessor-descriptor" +"is-accessor-descriptor@1.0.0","MIT","https://github.com/jonschlinkert/is-accessor-descriptor" "is-arrayish@0.2.1","MIT","https://github.com/qix-/node-is-arrayish" +"is-binary-path@1.0.1","MIT","https://github.com/sindresorhus/is-binary-path" "is-binary-path@2.1.0","MIT","https://github.com/sindresorhus/is-binary-path" +"is-buffer@1.1.6","MIT","https://github.com/feross/is-buffer" "is-ci@3.0.1","MIT","https://github.com/watson/is-ci" "is-core-module@2.11.0","MIT","https://github.com/inspect-js/is-core-module" +"is-data-descriptor@0.1.4","MIT","https://github.com/jonschlinkert/is-data-descriptor" +"is-data-descriptor@1.0.0","MIT","https://github.com/jonschlinkert/is-data-descriptor" +"is-descriptor@0.1.6","MIT","https://github.com/jonschlinkert/is-descriptor" +"is-descriptor@1.0.2","MIT","https://github.com/jonschlinkert/is-descriptor" "is-docker@2.2.1","MIT","https://github.com/sindresorhus/is-docker" +"is-extendable@0.1.1","MIT","https://github.com/jonschlinkert/is-extendable" +"is-extendable@1.0.1","MIT","https://github.com/jonschlinkert/is-extendable" "is-extglob@2.1.1","MIT","https://github.com/jonschlinkert/is-extglob" "is-fullwidth-code-point@3.0.0","MIT","https://github.com/sindresorhus/is-fullwidth-code-point" +"is-glob@3.1.0","MIT","https://github.com/jonschlinkert/is-glob" "is-glob@4.0.3","MIT","https://github.com/micromatch/is-glob" "is-installed-globally@0.4.0","MIT","https://github.com/sindresorhus/is-installed-globally" "is-interactive@1.0.0","MIT","https://github.com/sindresorhus/is-interactive" "is-lambda@1.0.1","MIT","https://github.com/watson/is-lambda" +"is-number@3.0.0","MIT","https://github.com/jonschlinkert/is-number" "is-number@7.0.0","MIT","https://github.com/jonschlinkert/is-number" "is-obj@1.0.1","MIT","https://github.com/sindresorhus/is-obj" "is-path-inside@3.0.3","MIT","https://github.com/sindresorhus/is-path-inside" @@ -725,11 +842,14 @@ "is-typedarray@1.0.0","MIT","https://github.com/hughsk/is-typedarray" "is-unicode-supported@0.1.0","MIT","https://github.com/sindresorhus/is-unicode-supported" "is-what@3.14.1","MIT","https://github.com/mesqueeb/is-what" +"is-windows@1.0.2","MIT","https://github.com/jonschlinkert/is-windows" +"is-wsl@1.1.0","MIT","https://github.com/sindresorhus/is-wsl" "is-wsl@2.2.0","MIT","https://github.com/sindresorhus/is-wsl" "is@3.3.0","MIT","https://github.com/enricomarino/is" "isarray@1.0.0","MIT","https://github.com/juliangruber/isarray" "isbinaryfile@4.0.8","MIT","https://github.com/gjtorikian/isBinaryFile" "isexe@2.0.0","ISC","https://github.com/isaacs/isexe" +"isobject@2.1.0","MIT","https://github.com/jonschlinkert/isobject" "isobject@3.0.1","MIT","https://github.com/jonschlinkert/isobject" "isstream@0.1.2","MIT","https://github.com/rvagg/isstream" "istanbul-lib-coverage@3.2.0","BSD-3-Clause","https://github.com/istanbuljs/istanbuljs" @@ -754,6 +874,7 @@ "json-schema@0.4.0","(AFL-2.1 OR BSD-3-Clause)","https://github.com/kriszyp/json-schema" "json-stable-stringify-without-jsonify@1.0.1","MIT","https://github.com/samn/json-stable-stringify" "json-stringify-safe@5.0.1","ISC","https://github.com/isaacs/json-stringify-safe" +"json5@1.0.2","MIT","https://github.com/json5/json5" "json5@2.2.3","MIT","https://github.com/json5/json5" "jsonc-parser@3.1.0","MIT","https://github.com/microsoft/node-jsonc-parser" "jsonfile@6.1.0","MIT","https://github.com/jprichardson/node-jsonfile" @@ -767,6 +888,9 @@ "karma@6.3.16","MIT","https://github.com/karma-runner/karma" "katex@0.16.4","MIT","https://github.com/KaTeX/KaTeX" "khroma@2.0.0","MIT*","https://github.com/fabiospampinato/khroma" +"kind-of@3.2.2","MIT","https://github.com/jonschlinkert/kind-of" +"kind-of@4.0.0","MIT","https://github.com/jonschlinkert/kind-of" +"kind-of@5.1.0","MIT","https://github.com/jonschlinkert/kind-of" "kind-of@6.0.3","MIT","https://github.com/jonschlinkert/kind-of" "kleur@4.1.5","MIT","https://github.com/lukeed/kleur" "klona@2.0.5","MIT","https://github.com/lukeed/klona" @@ -779,9 +903,12 @@ "lines-and-columns@1.2.4","MIT","https://github.com/eventualbuddha/lines-and-columns" "lint-staged@11.2.6","MIT","https://github.com/okonet/lint-staged" "listr2@3.14.0","MIT","https://github.com/cenk1cenk2/listr2" +"loader-runner@2.4.0","MIT","https://github.com/webpack/loader-runner" "loader-runner@4.3.0","MIT","https://github.com/webpack/loader-runner" +"loader-utils@1.4.2","MIT","https://github.com/webpack/loader-utils" "loader-utils@2.0.4","MIT","https://github.com/webpack/loader-utils" "loader-utils@3.2.0","MIT","https://github.com/webpack/loader-utils" +"locate-path@3.0.0","MIT","https://github.com/sindresorhus/locate-path" "locate-path@5.0.0","MIT","https://github.com/sindresorhus/locate-path" "lodash-es@4.17.21","MIT","https://github.com/lodash/lodash" "lodash.debounce@4.0.8","MIT","https://github.com/lodash/lodash" @@ -804,17 +931,24 @@ "make-error@1.3.6","ISC","https://github.com/JsCommunity/make-error" "make-fetch-happen@10.2.1","ISC","https://github.com/npm/make-fetch-happen" "make-fetch-happen@5.0.2","ISC","https://github.com/zkat/make-fetch-happen" +"map-cache@0.2.2","MIT","https://github.com/jonschlinkert/map-cache" +"map-visit@1.0.0","MIT","https://github.com/jonschlinkert/map-visit" "marked@4.2.3","MIT","https://github.com/markedjs/marked" "material-design-icons-iconfont@6.1.1","Apache-2.0","https://github.com/jossef/material-design-icons-iconfont" "mathjax@3.2.2","Apache-2.0","https://github.com/mathjax/MathJax" +"md5.js@1.3.5","MIT","https://github.com/crypto-browserify/md5.js" "media-typer@0.3.0","MIT","https://github.com/jshttp/media-typer" "memfs@3.4.7","Unlicense","https://github.com/streamich/memfs" +"memory-fs@0.4.1","MIT","https://github.com/webpack/memory-fs" +"memory-fs@0.5.0","MIT","https://github.com/webpack/memory-fs" "merge-descriptors@1.0.1","MIT","https://github.com/component/merge-descriptors" "merge-stream@2.0.0","MIT","https://github.com/grncdr/merge-stream" "merge2@1.4.1","MIT","https://github.com/teambition/merge2" "mermaid@9.3.0","MIT","https://github.com/mermaid-js/mermaid" "methods@1.1.2","MIT","https://github.com/jshttp/methods" +"micromatch@3.1.10","MIT","https://github.com/micromatch/micromatch" "micromatch@4.0.4","MIT","https://github.com/micromatch/micromatch" +"miller-rabin@4.0.1","MIT","https://github.com/indutny/miller-rabin" "mime-db@1.51.0","MIT","https://github.com/jshttp/mime-db" "mime-types@2.1.34","MIT","https://github.com/jshttp/mime-types" "mime@1.6.0","MIT","https://github.com/broofa/node-mime" @@ -822,6 +956,7 @@ "mimic-fn@2.1.0","MIT","https://github.com/sindresorhus/mimic-fn" "mini-css-extract-plugin@2.6.1","MIT","https://github.com/webpack-contrib/mini-css-extract-plugin" "minimalistic-assert@1.0.1","ISC","https://github.com/calvinmetcalf/minimalistic-assert" +"minimalistic-crypto-utils@1.0.1","MIT","https://github.com/indutny/minimalistic-crypto-utils" "minimatch@3.1.2","ISC","https://github.com/isaacs/minimatch" "minimatch@5.1.0","ISC","https://github.com/isaacs/minimatch" "minimist@1.2.6","MIT","https://github.com/substack/minimist" @@ -836,9 +971,11 @@ "minizlib@1.3.3","MIT","https://github.com/isaacs/minizlib" "minizlib@2.1.2","MIT","https://github.com/isaacs/minizlib" "mississippi@3.0.0","BSD-2-Clause","https://github.com/maxogden/mississippi" +"mixin-deep@1.3.2","MIT","https://github.com/jonschlinkert/mixin-deep" "mkdirp-classic@0.5.3","MIT","https://github.com/mafintosh/mkdirp-classic" "mkdirp@0.3.0","MIT*","https://github.com/substack/node-mkdirp" "mkdirp@0.5.5","MIT","https://github.com/substack/node-mkdirp" +"mkdirp@0.5.6","MIT","https://github.com/substack/node-mkdirp" "mkdirp@1.0.4","MIT","https://github.com/isaacs/node-mkdirp" "moment-mini@2.29.4","MIT","https://github.com/ksloan/moment-mini" "move-concurrently@1.0.1","ISC","https://github.com/npm/move-concurrently" @@ -848,6 +985,7 @@ "multicast-dns@7.2.5","MIT","https://github.com/mafintosh/multicast-dns" "mute-stream@0.0.8","ISC","https://github.com/isaacs/mute-stream" "nanoid@3.3.4","MIT","https://github.com/ai/nanoid" +"nanomatch@1.2.13","MIT","https://github.com/micromatch/nanomatch" "natural-compare@1.4.0","MIT","https://github.com/litejs/natural-compare-lite" "needle@3.1.0","MIT","https://github.com/tomas/needle" "negotiator@0.6.3","MIT","https://github.com/jshttp/negotiator" @@ -863,6 +1001,7 @@ "node-forge@1.3.1","(BSD-3-Clause OR GPL-2.0)","https://github.com/digitalbazaar/forge" "node-gyp-build@4.3.0","MIT","https://github.com/prebuild/node-gyp-build" "node-gyp@9.3.0","MIT","https://github.com/nodejs/node-gyp" +"node-libs-browser@2.2.1","MIT","https://github.com/webpack/node-libs-browser" "node-releases@2.0.6","MIT","https://github.com/chicoxyzzy/node-releases" "node.extend@2.0.2","(MIT OR GPL-2.0)","https://github.com/dreamerslab/node.extend" "non-layered-tidy-tree-layout@2.0.2","MIT","https://github.com/stetrevor/non-layered-tidy-tree-layout" @@ -871,6 +1010,7 @@ "nopt@6.0.0","ISC","https://github.com/npm/nopt" "normalize-package-data@2.5.0","BSD-2-Clause","https://github.com/npm/normalize-package-data" "normalize-package-data@4.0.1","BSD-2-Clause","https://github.com/npm/normalize-package-data" +"normalize-path@2.1.1","MIT","https://github.com/jonschlinkert/normalize-path" "normalize-path@3.0.0","MIT","https://github.com/jonschlinkert/normalize-path" "normalize-range@0.1.2","MIT","https://github.com/jamestalmage/normalize-range" "npm-bundled@1.1.2","ISC","https://github.com/npm/npm-bundled" @@ -890,7 +1030,10 @@ "npmlog@6.0.2","ISC","https://github.com/npm/npmlog" "nth-check@2.0.1","BSD-2-Clause","https://github.com/fb55/nth-check" "object-assign@4.1.1","MIT","https://github.com/sindresorhus/object-assign" +"object-copy@0.1.0","MIT","https://github.com/jonschlinkert/object-copy" "object-inspect@1.12.2","MIT","https://github.com/inspect-js/object-inspect" +"object-visit@1.0.1","MIT","https://github.com/jonschlinkert/object-visit" +"object.pick@1.3.0","MIT","https://github.com/jonschlinkert/object.pick" "obuf@1.1.2","MIT","https://github.com/indutny/offset-buffer" "on-finished@2.3.0","MIT","https://github.com/jshttp/on-finished" "on-finished@2.4.1","MIT","https://github.com/jshttp/on-finished" @@ -900,11 +1043,13 @@ "open@8.4.0","MIT","https://github.com/sindresorhus/open" "optionator@0.9.1","MIT","https://github.com/gkz/optionator" "ora@5.4.1","MIT","https://github.com/sindresorhus/ora" +"os-browserify@0.3.0","MIT","https://github.com/CoderPuppy/os-browserify" "os-homedir@1.0.2","MIT","https://github.com/sindresorhus/os-homedir" "os-tmpdir@1.0.2","MIT","https://github.com/sindresorhus/os-tmpdir" "osenv@0.1.5","ISC","https://github.com/npm/osenv" "ospath@1.2.2","MIT","https://github.com/jprichardson/ospath" "p-limit@2.3.0","MIT","https://github.com/sindresorhus/p-limit" +"p-locate@3.0.0","MIT","https://github.com/sindresorhus/p-locate" "p-locate@4.1.0","MIT","https://github.com/sindresorhus/p-locate" "p-map@4.0.0","MIT","https://github.com/sindresorhus/p-map" "p-retry@4.6.2","MIT","https://github.com/sindresorhus/p-retry" @@ -917,6 +1062,7 @@ "pako@1.0.11","(MIT AND Zlib)","https://github.com/nodeca/pako" "parallel-transform@1.2.0","MIT","https://github.com/mafintosh/parallel-transform" "parent-module@1.0.1","MIT","https://github.com/sindresorhus/parent-module" +"parse-asn1@5.1.6","ISC","https://github.com/crypto-browserify/parse-asn1" "parse-json@5.2.0","MIT","https://github.com/sindresorhus/parse-json" "parse-node-version@1.0.1","MIT","https://github.com/gulpjs/parse-node-version" "parse5-html-rewriting-stream@6.0.1","MIT","https://github.com/inikulin/parse5" @@ -927,12 +1073,17 @@ "parse5@6.0.1","MIT","https://github.com/inikulin/parse5" "parse5@7.0.0","MIT","https://github.com/inikulin/parse5" "parseurl@1.3.3","MIT","https://github.com/pillarjs/parseurl" +"pascalcase@0.1.1","MIT","https://github.com/jonschlinkert/pascalcase" +"path-browserify@0.0.1","MIT","https://github.com/substack/path-browserify" +"path-dirname@1.0.2","MIT","https://github.com/es128/path-dirname" +"path-exists@3.0.0","MIT","https://github.com/sindresorhus/path-exists" "path-exists@4.0.0","MIT","https://github.com/sindresorhus/path-exists" "path-is-absolute@1.0.1","MIT","https://github.com/sindresorhus/path-is-absolute" "path-key@3.1.1","MIT","https://github.com/sindresorhus/path-key" "path-parse@1.0.7","MIT","https://github.com/jbgutierrez/path-parse" "path-to-regexp@0.1.7","MIT","https://github.com/component/path-to-regexp" "path-type@4.0.0","MIT","https://github.com/sindresorhus/path-type" +"pbkdf2@3.1.2","MIT","https://github.com/crypto-browserify/pbkdf2" "pend@1.2.0","MIT","https://github.com/andrewrk/node-pend" "performance-now@2.1.0","MIT","https://github.com/braveg1rl/performance-now" "picocolors@1.0.0","ISC","https://github.com/alexeyraspopov/picocolors" @@ -942,8 +1093,11 @@ "pinkie-promise@2.0.1","MIT","https://github.com/floatdrop/pinkie-promise" "pinkie@2.0.4","MIT","https://github.com/floatdrop/pinkie" "piscina@3.2.0","MIT","https://github.com/piscinajs/piscina" +"pkg-dir@3.0.0","MIT","https://github.com/sindresorhus/pkg-dir" "pkg-dir@4.2.0","MIT","https://github.com/sindresorhus/pkg-dir" "please-upgrade-node@3.2.0","MIT","https://github.com/typicode/please-upgrade-node" +"pnp-webpack-plugin@1.7.0","MIT","https://github.com/arcanis/pnp-webpack-plugin" +"posix-character-classes@0.1.1","MIT","https://github.com/jonschlinkert/posix-character-classes" "postcss-attribute-case-insensitive@5.0.2","MIT","https://github.com/csstools/postcss-plugins" "postcss-clamp@4.1.0","MIT","https://github.com/polemius/postcss-clamp" "postcss-color-functional-notation@4.2.4","CC0-1.0","https://github.com/csstools/postcss-plugins" @@ -989,6 +1143,7 @@ "prismjs@1.29.0","MIT","https://github.com/PrismJS/prism" "proc-log@2.0.1","ISC","https://github.com/npm/proc-log" "process-nextick-args@2.0.1","MIT","https://github.com/calvinmetcalf/process-nextick-args" +"process@0.11.10","MIT","https://github.com/shtylman/node-process" "progress@2.0.3","MIT","https://github.com/visionmedia/node-progress" "promise-inflight@1.0.1","ISC","https://github.com/iarna/promise-inflight" "promise-retry@1.1.1","MIT","https://github.com/IndigoUnited/node-promise-retry" @@ -1000,16 +1155,21 @@ "proxy-from-env@1.1.0","MIT","https://github.com/Rob--W/proxy-from-env" "prr@1.0.1","MIT","https://github.com/rvagg/prr" "psl@1.8.0","MIT","https://github.com/lupomontero/psl" +"public-encrypt@4.0.3","MIT","https://github.com/crypto-browserify/publicEncrypt" "pump@2.0.1","MIT","https://github.com/mafintosh/pump" "pump@3.0.0","MIT","https://github.com/mafintosh/pump" "pumpify@1.5.1","MIT","https://github.com/mafintosh/pumpify" +"punycode@1.4.1","MIT","https://github.com/bestiejs/punycode.js" "punycode@2.1.1","MIT","https://github.com/bestiejs/punycode.js" "puppeteer@9.1.1","Apache-2.0","https://github.com/puppeteer/puppeteer" "qjobs@1.2.0","MIT","https://github.com/franck34/qjobs" "qs@6.11.0","BSD-3-Clause","https://github.com/ljharb/qs" +"qs@6.11.2","BSD-3-Clause","https://github.com/ljharb/qs" "qs@6.5.3","BSD-3-Clause","https://github.com/ljharb/qs" +"querystring-es3@0.2.1","MIT","https://github.com/mike-spainhower/querystring" "queue-microtask@1.2.3","MIT","https://github.com/feross/queue-microtask" "randombytes@2.1.0","MIT","https://github.com/crypto-browserify/randombytes" +"randomfill@1.0.4","MIT","https://github.com/crypto-browserify/randomfill" "range-parser@1.2.1","MIT","https://github.com/jshttp/range-parser" "raw-body@2.5.1","MIT","https://github.com/stream-utils/raw-body" "read-cache@1.0.0","MIT","https://github.com/TrySound/read-cache" @@ -1018,19 +1178,25 @@ "read-package-json@2.1.2","ISC","https://github.com/npm/read-package-json" "read-package-json@5.0.2","ISC","https://github.com/npm/read-package-json" "readable-stream@2.3.7","MIT","https://github.com/nodejs/readable-stream" +"readable-stream@2.3.8","MIT","https://github.com/nodejs/readable-stream" "readable-stream@3.6.0","MIT","https://github.com/nodejs/readable-stream" "readdir-scoped-modules@1.1.0","ISC","https://github.com/npm/readdir-scoped-modules" +"readdirp@2.2.1","MIT","https://github.com/paulmillr/readdirp" "readdirp@3.6.0","MIT","https://github.com/paulmillr/readdirp" "reflect-metadata@0.1.13","Apache-2.0","https://github.com/rbuckton/reflect-metadata" "regenerate-unicode-properties@10.1.0","MIT","https://github.com/mathiasbynens/regenerate-unicode-properties" "regenerate@1.4.2","MIT","https://github.com/mathiasbynens/regenerate" "regenerator-runtime@0.13.9","MIT","https://github.com/facebook/regenerator/tree/master/packages/runtime" "regenerator-transform@0.15.0","MIT","https://github.com/facebook/regenerator/tree/master/packages/transform" +"regex-not@1.0.2","MIT","https://github.com/jonschlinkert/regex-not" "regex-parser@2.2.11","MIT","https://github.com/IonicaBizau/regex-parser.js" "regexpp@3.2.0","MIT","https://github.com/mysticatea/regexpp" "regexpu-core@5.2.1","MIT","https://github.com/mathiasbynens/regexpu-core" "regjsgen@0.7.1","MIT","https://github.com/bnjmnt4n/regjsgen" "regjsparser@0.9.1","BSD-2-Clause","https://github.com/jviereck/regjsparser" +"remove-trailing-separator@1.1.0","ISC","https://github.com/darsain/remove-trailing-separator" +"repeat-element@1.1.4","MIT","https://github.com/jonschlinkert/repeat-element" +"repeat-string@1.6.1","MIT","https://github.com/jonschlinkert/repeat-string" "request-progress@3.0.0","MIT","https://github.com/IndigoUnited/node-request-progress" "require-directory@2.1.1","MIT","https://github.com/troygoode/node-require-directory" "require-from-string@2.0.2","MIT","https://github.com/floatdrop/require-from-string" @@ -1038,8 +1204,10 @@ "resolve-from@4.0.0","MIT","https://github.com/sindresorhus/resolve-from" "resolve-from@5.0.0","MIT","https://github.com/sindresorhus/resolve-from" "resolve-url-loader@5.0.0","MIT","https://github.com/bholloway/resolve-url-loader" +"resolve-url@0.2.1","MIT","https://github.com/lydell/resolve-url" "resolve@1.22.1","MIT","https://github.com/browserify/resolve" "restore-cursor@3.1.0","MIT","https://github.com/sindresorhus/restore-cursor" +"ret@0.1.15","MIT","https://github.com/fent/ret.js" "retry@0.10.1","MIT","https://github.com/tim-kos/node-retry" "retry@0.12.0","MIT","https://github.com/tim-kos/node-retry" "retry@0.13.1","MIT","https://github.com/tim-kos/node-retry" @@ -1047,6 +1215,7 @@ "rfdc@1.3.0","MIT","https://github.com/davidmarkclements/rfdc" "rimraf@2.7.1","ISC","https://github.com/isaacs/rimraf" "rimraf@3.0.2","ISC","https://github.com/isaacs/rimraf" +"ripemd160@2.0.2","MIT","https://github.com/crypto-browserify/ripemd160" "robust-predicates@3.0.1","Unlicense","https://github.com/mourner/robust-predicates" "run-async@2.4.1","MIT","https://github.com/SBoudrias/run-async" "run-parallel@1.2.0","MIT","https://github.com/feross/run-parallel" @@ -1058,10 +1227,12 @@ "rxjs@7.5.7","Apache-2.0","https://github.com/reactivex/rxjs" "safe-buffer@5.1.2","MIT","https://github.com/feross/safe-buffer" "safe-buffer@5.2.1","MIT","https://github.com/feross/safe-buffer" +"safe-regex@1.1.0","MIT","https://github.com/substack/safe-regex" "safer-buffer@2.1.2","MIT","https://github.com/ChALkeR/safer-buffer" "sass-loader@13.0.2","MIT","https://github.com/webpack-contrib/sass-loader" "sass@1.54.4","MIT","https://github.com/sass/dart-sass" "sax@1.2.4","ISC","https://github.com/isaacs/sax-js" +"schema-utils@1.0.0","MIT","https://github.com/webpack-contrib/schema-utils" "schema-utils@2.7.1","MIT","https://github.com/webpack/schema-utils" "schema-utils@3.1.1","MIT","https://github.com/webpack/schema-utils" "schema-utils@4.0.0","MIT","https://github.com/webpack/schema-utils" @@ -1077,12 +1248,16 @@ "semver@7.3.7","ISC","https://github.com/npm/node-semver" "semver@7.3.8","ISC","https://github.com/npm/node-semver" "send@0.18.0","MIT","https://github.com/pillarjs/send" +"serialize-javascript@4.0.0","BSD-3-Clause","https://github.com/yahoo/serialize-javascript" "serialize-javascript@6.0.0","BSD-3-Clause","https://github.com/yahoo/serialize-javascript" "serve-index@1.9.1","MIT","https://github.com/expressjs/serve-index" "serve-static@1.15.0","MIT","https://github.com/expressjs/serve-static" "set-blocking@2.0.0","ISC","https://github.com/yargs/set-blocking" +"set-value@2.0.1","MIT","https://github.com/jonschlinkert/set-value" +"setimmediate@1.0.5","MIT","https://github.com/YuzuJS/setImmediate" "setprototypeof@1.1.0","ISC","https://github.com/wesleytodd/setprototypeof" "setprototypeof@1.2.0","ISC","https://github.com/wesleytodd/setprototypeof" +"sha.js@2.4.11","(MIT AND BSD-3-Clause)","https://github.com/crypto-browserify/sha.js" "shallow-clone@3.0.1","MIT","https://github.com/jonschlinkert/shallow-clone" "shebang-command@2.0.0","MIT","https://github.com/kevva/shebang-command" "shebang-regex@3.0.0","MIT","https://github.com/sindresorhus/shebang-regex" @@ -1094,6 +1269,9 @@ "slice-ansi@4.0.0","MIT","https://github.com/chalk/slice-ansi" "slide@1.1.6","ISC","https://github.com/isaacs/slide-flow-control" "smart-buffer@4.2.0","MIT","https://github.com/JoshGlazebrook/smart-buffer" +"snapdragon-node@2.1.1","MIT","https://github.com/jonschlinkert/snapdragon-node" +"snapdragon-util@3.0.1","MIT","https://github.com/jonschlinkert/snapdragon-util" +"snapdragon@0.8.2","MIT","https://github.com/jonschlinkert/snapdragon" "socket.io-adapter@2.5.2","MIT","https://github.com/socketio/socket.io-adapter" "socket.io-parser@4.2.3","MIT","https://github.com/socketio/socket.io-parser" "socket.io@4.6.1","MIT","https://github.com/socketio/socket.io" @@ -1102,9 +1280,13 @@ "socks-proxy-agent@7.0.0","MIT","https://github.com/TooTallNate/node-socks-proxy-agent" "socks@2.3.3","MIT","https://github.com/JoshGlazebrook/socks" "socks@2.7.1","MIT","https://github.com/JoshGlazebrook/socks" +"source-list-map@2.0.1","MIT","https://github.com/webpack/source-list-map" "source-map-js@1.0.2","BSD-3-Clause","https://github.com/7rulnik/source-map-js" "source-map-loader@4.0.0","MIT","https://github.com/webpack-contrib/source-map-loader" +"source-map-resolve@0.5.3","MIT","https://github.com/lydell/source-map-resolve" "source-map-support@0.5.21","MIT","https://github.com/evanw/node-source-map-support" +"source-map-url@0.4.1","MIT","https://github.com/lydell/source-map-url" +"source-map@0.5.7","BSD-3-Clause","https://github.com/mozilla/source-map" "source-map@0.6.1","BSD-3-Clause","https://github.com/mozilla/source-map" "source-map@0.7.3","BSD-3-Clause","https://github.com/mozilla/source-map" "source-map@0.7.4","BSD-3-Clause","https://github.com/mozilla/source-map" @@ -1118,13 +1300,17 @@ "spdx-satisfies@4.0.1","MIT","https://github.com/kemitchell/spdx-satisfies.js" "spdy-transport@3.0.0","MIT","https://github.com/spdy-http2/spdy-transport" "spdy@4.0.2","MIT","https://github.com/indutny/node-spdy" +"split-string@3.1.0","MIT","https://github.com/jonschlinkert/split-string" "sprintf-js@1.0.3","BSD-3-Clause","https://github.com/alexei/sprintf.js" "sshpk@1.17.0","MIT","https://github.com/joyent/node-sshpk" "ssri@6.0.2","ISC","https://github.com/zkat/ssri" "ssri@9.0.1","ISC","https://github.com/npm/ssri" +"static-extend@0.1.2","MIT","https://github.com/jonschlinkert/static-extend" "statuses@1.5.0","MIT","https://github.com/jshttp/statuses" "statuses@2.0.1","MIT","https://github.com/jshttp/statuses" +"stream-browserify@2.0.2","MIT","https://github.com/browserify/stream-browserify" "stream-each@1.2.3","MIT","https://github.com/mafintosh/stream-each" +"stream-http@2.8.3","MIT","https://github.com/jhiesey/stream-http" "stream-shift@1.0.1","MIT","https://github.com/mafintosh/stream-shift" "streamroller@3.0.2","MIT","https://github.com/nomiddlename/streamroller" "string-argv@0.3.1","MIT","https://github.com/mccormicka/string-argv" @@ -1133,7 +1319,9 @@ "string_decoder@1.3.0","MIT","https://github.com/nodejs/string_decoder" "stringify-object@3.3.0","BSD-2-Clause","https://github.com/yeoman/stringify-object" "strip-ansi@6.0.1","MIT","https://github.com/chalk/strip-ansi" +"strip-bom@3.0.0","MIT","https://github.com/sindresorhus/strip-bom" "strip-final-newline@2.0.0","MIT","https://github.com/sindresorhus/strip-final-newline" +"strip-json-comments@2.0.1","MIT","https://github.com/sindresorhus/strip-json-comments" "strip-json-comments@3.1.1","MIT","https://github.com/sindresorhus/strip-json-comments" "stylis@4.1.3","MIT","https://github.com/thysultan/stylis.js" "stylus-loader@7.0.0","MIT","https://github.com/webpack-contrib/stylus-loader" @@ -1143,12 +1331,15 @@ "supports-color@8.1.1","MIT","https://github.com/chalk/supports-color" "supports-preserve-symlinks-flag@1.0.0","MIT","https://github.com/inspect-js/node-supports-preserve-symlinks-flag" "symbol-observable@4.0.0","MIT","https://github.com/blesh/symbol-observable" +"tapable@1.1.3","MIT","https://github.com/webpack/tapable" "tapable@2.2.1","MIT","https://github.com/webpack/tapable" "tar-fs@2.1.1","MIT","https://github.com/mafintosh/tar-fs" "tar-stream@2.2.0","MIT","https://github.com/mafintosh/tar-stream" "tar@4.4.19","ISC","https://github.com/npm/node-tar" "tar@6.1.11","ISC","https://github.com/npm/node-tar" +"terser-webpack-plugin@1.4.5","MIT","https://github.com/webpack-contrib/terser-webpack-plugin" "terser-webpack-plugin@5.3.6","MIT","https://github.com/webpack-contrib/terser-webpack-plugin" +"terser@4.8.1","BSD-2-Clause","https://github.com/terser/terser" "terser@5.14.2","BSD-2-Clause","https://github.com/terser/terser" "test-exclude@6.0.0","ISC","https://github.com/istanbuljs/test-exclude" "text-table@0.2.0","MIT","https://github.com/substack/text-table" @@ -1156,22 +1347,33 @@ "through2@2.0.5","MIT","https://github.com/rvagg/through2" "through@2.3.8","MIT","https://github.com/dominictarr/through" "thunky@1.1.0","MIT","https://github.com/mafintosh/thunky" +"timers-browserify@2.0.12","MIT","https://github.com/jryans/timers-browserify" "tiny-emitter@2.1.0","MIT","https://github.com/scottcorgan/tiny-emitter" "tmp@0.0.33","MIT","https://github.com/raszi/node-tmp" "tmp@0.2.1","MIT","https://github.com/raszi/node-tmp" +"to-arraybuffer@1.0.1","MIT","https://github.com/jhiesey/to-arraybuffer" "to-fast-properties@2.0.0","MIT","https://github.com/sindresorhus/to-fast-properties" +"to-object-path@0.3.0","MIT","https://github.com/jonschlinkert/to-object-path" +"to-regex-range@2.1.1","MIT","https://github.com/micromatch/to-regex-range" "to-regex-range@5.0.1","MIT","https://github.com/micromatch/to-regex-range" +"to-regex@3.0.2","MIT","https://github.com/jonschlinkert/to-regex" "toidentifier@1.0.1","MIT","https://github.com/component/toidentifier" "tough-cookie@2.5.0","BSD-3-Clause","https://github.com/salesforce/tough-cookie" "tr46@0.0.3","MIT","https://github.com/Sebmaster/tr46.js" "tree-kill@1.2.2","MIT","https://github.com/pkrumins/node-tree-kill" "treeify@1.1.0","MIT","https://github.com/notatestuser/treeify" "tryer@1.0.1","MIT","git+https://gitlab.com/philbooth/tryer" +"ts-loader@8.4.0","MIT","https://github.com/TypeStrong/ts-loader" "ts-md5@1.2.11","MIT","https://github.com/cotag/ts-md5" "ts-node@10.9.1","MIT","https://github.com/TypeStrong/ts-node" +"ts-pnp@1.2.0","MIT","https://github.com/arcanis/ts-pnp" +"tsconfig-paths-webpack-plugin@3.5.2","MIT","https://github.com/dividab/tsconfig-paths-webpack-plugin" +"tsconfig-paths@3.14.2","MIT","https://github.com/dividab/tsconfig-paths" +"tsconfig@7.0.0","MIT","https://github.com/TypeStrong/tsconfig" "tslib@1.14.1","0BSD","https://github.com/Microsoft/tslib" "tslib@2.4.0","0BSD","https://github.com/Microsoft/tslib" "tsutils@3.21.0","MIT","https://github.com/ajafff/tsutils" +"tty-browserify@0.0.0","MIT","https://github.com/substack/tty-browserify" "tunnel-agent@0.6.0","Apache-2.0","https://github.com/mikeal/tunnel-agent" "tweetnacl@0.14.5","Unlicense","https://github.com/dchest/tweetnacl-js" "type-check@0.4.0","MIT","https://github.com/gkz/type-check" @@ -1188,15 +1390,23 @@ "unicode-match-property-ecmascript@2.0.0","MIT","https://github.com/mathiasbynens/unicode-match-property-ecmascript" "unicode-match-property-value-ecmascript@2.0.0","MIT","https://github.com/mathiasbynens/unicode-match-property-value-ecmascript" "unicode-property-aliases-ecmascript@2.1.0","MIT","https://github.com/mathiasbynens/unicode-property-aliases-ecmascript" +"union-value@1.0.1","MIT","https://github.com/jonschlinkert/union-value" "unique-filename@1.1.1","ISC","https://github.com/iarna/unique-filename" "unique-slug@2.0.2","ISC","https://github.com/iarna/unique-slug" "universalify@2.0.0","MIT","https://github.com/RyanZim/universalify" "unpipe@1.0.0","MIT","https://github.com/stream-utils/unpipe" +"unset-value@1.0.0","MIT","https://github.com/jonschlinkert/unset-value" "untildify@4.0.0","MIT","https://github.com/sindresorhus/untildify" +"upath@1.2.0","MIT","https://github.com/anodynos/upath" "update-browserslist-db@1.0.10","MIT","https://github.com/browserslist/update-db" "uri-js@4.4.1","BSD-2-Clause","https://github.com/garycourt/uri-js" +"urix@0.1.0","MIT","https://github.com/lydell/urix" +"url@0.11.1","MIT","https://github.com/defunctzombie/node-url" +"use@3.1.1","MIT","https://github.com/jonschlinkert/use" "util-deprecate@1.0.2","MIT","https://github.com/TooTallNate/util-deprecate" "util-extend@1.0.3","MIT","https://github.com/isaacs/util-extend" +"util@0.10.3","MIT","https://github.com/defunctzombie/node-util" +"util@0.11.1","MIT","https://github.com/defunctzombie/node-util" "utils-merge@1.0.1","MIT","https://github.com/jaredhanson/utils-merge" "uuid@8.3.2","MIT","https://github.com/uuidjs/uuid" "uuid@9.0.0","MIT","https://github.com/uuidjs/uuid" @@ -1207,7 +1417,10 @@ "validate-npm-package-name@4.0.0","ISC","https://github.com/npm/validate-npm-package-name" "vary@1.1.2","MIT","https://github.com/jshttp/vary" "verror@1.10.0","MIT","https://github.com/davepacheco/node-verror" +"vm-browserify@1.1.2","MIT","https://github.com/substack/vm-browserify" "void-elements@2.0.1","MIT","https://github.com/hemanth/void-elements" +"watchpack-chokidar2@2.0.1","MIT","https://github.com/webpack/watchpack" +"watchpack@1.7.5","MIT","https://github.com/webpack/watchpack" "watchpack@2.4.0","MIT","https://github.com/webpack/watchpack" "wbuf@1.7.3","MIT","https://github.com/indutny/wbuf" "wcwidth@1.0.1","MIT","https://github.com/timoxley/wcwidth" @@ -1215,8 +1428,10 @@ "webpack-dev-middleware@5.3.3","MIT","https://github.com/webpack/webpack-dev-middleware" "webpack-dev-server@4.11.0","MIT","https://github.com/webpack/webpack-dev-server" "webpack-merge@5.8.0","MIT","https://github.com/survivejs/webpack-merge" +"webpack-sources@1.4.3","MIT","https://github.com/webpack/webpack-sources" "webpack-sources@3.2.3","MIT","https://github.com/webpack/webpack-sources" "webpack-subresource-integrity@5.1.0","MIT","https://github.com/waysact/webpack-subresource-integrity" +"webpack@4.46.0","MIT","https://github.com/webpack/webpack" "webpack@5.74.0","MIT","https://github.com/webpack/webpack" "websocket-driver@0.7.4","Apache-2.0","https://github.com/faye/websocket-driver-node" "websocket-extensions@0.1.4","Apache-2.0","https://github.com/faye/websocket-extensions-node" @@ -1227,6 +1442,7 @@ "wildcard@2.0.0","MIT","https://github.com/DamonOehlman/wildcard" "word-wrap@1.2.3","MIT","https://github.com/jonschlinkert/word-wrap" "wordwrap@1.0.0","MIT","https://github.com/substack/node-wordwrap" +"worker-farm@1.7.0","MIT","https://github.com/rvagg/node-worker-farm" "wrap-ansi@6.2.0","MIT","https://github.com/chalk/wrap-ansi" "wrap-ansi@7.0.0","MIT","https://github.com/chalk/wrap-ansi" "wrappy@1.0.2","ISC","https://github.com/npm/wrappy" diff --git a/cypress.config.ts b/cypress.config.ts index ffd1ca97f2..c9cea186bd 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -15,7 +15,7 @@ export default defineConfig({ // We've imported your old cypress plugins here. // You may want to clean this up later by importing these. setupNodeEvents(on, config) { - return require('./cypress/plugins/index.js')(on, config) + return require('./cypress/plugins/index.ts')(on, config) }, baseUrl: 'http://localhost:4200', specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}', diff --git a/cypress/e2e/group1/hostedWorkflows.ts b/cypress/e2e/group1/hostedWorkflows.ts index 7f10bfb183..78681e9adb 100644 --- a/cypress/e2e/group1/hostedWorkflows.ts +++ b/cypress/e2e/group1/hostedWorkflows.ts @@ -147,6 +147,7 @@ describe('Dockstore hosted workflows', () => { it('Create a new hosted workflow', () => { cy.get('[data-cy=register-workflow-button]').should('be.visible').should('be.enabled').click(); cy.get('#3-register-workflow-option').should('be.visible').click(); + cy.wait(250); // It's flaky without this, not clear why, perhaps the debounce time? cy.contains('button', 'Next').click(); cy.get('#hostedWorkflowRepository').type(NEW_WORKFLOW_NAME); cy.contains('button', 'Register Workflow').click(); diff --git a/cypress/e2e/group2/organizations.ts b/cypress/e2e/group2/organizations.ts index 3fb655bb0b..6ac088b544 100644 --- a/cypress/e2e/group2/organizations.ts +++ b/cypress/e2e/group2/organizations.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { TokenUser } from '../../../src/app/shared/openapi'; import { approvePotatoMembership, approvePotatoOrganization, @@ -23,7 +24,6 @@ import { insertNotebooks, resetDBWithService, } from '../../support/commands'; -import { TokenUser } from '../../../src/app/shared/swagger'; import { TokenSource } from '../../../src/app/shared/enum/token-source.enum'; const imageURL = 'https://superduperfakepotatourl.com/potato.png'; @@ -155,6 +155,7 @@ describe('Dockstore Organizations', () => { typeInInput('Display Name', 'fakeCollectionName'); typeInInput('Topic', 'fake collection topic'); cy.get('#createOrUpdateCollectionButton').should('be.visible').should('not.be.disabled').click(); + cy.wait(2000); cy.contains('fakeCollectionName'); cy.contains('fake collection topic'); diff --git a/cypress/e2e/group2/usernameChangeRequired.ts b/cypress/e2e/group2/usernameChangeRequired.ts index 82278be3f8..dc905a54cf 100644 --- a/cypress/e2e/group2/usernameChangeRequired.ts +++ b/cypress/e2e/group2/usernameChangeRequired.ts @@ -1,5 +1,5 @@ +import { ExtendedUserData, User } from '../../../src/app/shared/openapi'; import { resetDB, setTokenUserViewPort } from '../../support/commands'; -import { ExtendedUserData, User } from '../../../src/app/shared/swagger'; describe('Testing user with invalid username', () => { resetDB(); diff --git a/cypress/e2e/group3/githubAppTools.ts b/cypress/e2e/group3/githubAppTools.ts index a1708402f9..5bd468f758 100644 --- a/cypress/e2e/group3/githubAppTools.ts +++ b/cypress/e2e/group3/githubAppTools.ts @@ -1,4 +1,4 @@ -import { LambdaEvent } from '../../../src/app/shared/swagger'; +import { LambdaEvent } from '../../../src/app/shared/openapi'; import { goToTab, insertAppTools, isActiveTab, resetDB, setTokenUserViewPort } from '../../support/commands'; describe('GitHub App Tools', () => { diff --git a/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts b/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts index be7d23691f..72e077ffb3 100644 --- a/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts +++ b/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts @@ -1,6 +1,6 @@ import { ga4ghPath } from '../../../../src/app/shared/constants'; +import { ToolDescriptor } from '../../../../src/app/shared/openapi'; import { goToTab } from '../../../support/commands'; -import { ToolDescriptor } from '../../../../src/app/shared/swagger/model/toolDescriptor'; // Test an entry, these should be ambiguous between tools, workflows, and notebooks. describe('run stochastic smoke test', () => { @@ -212,7 +212,7 @@ const workflowVersionTuples = [ 'Galaxy', ], ]; -const notebookVersionTuples = [ +const notebookVersionTuples: string[][] = [ // TODO when we add notebooks that will persist in the prod database, detail a few here ]; diff --git a/cypress/plugins/index.js b/cypress/plugins/index.js deleted file mode 100644 index 8229063adc..0000000000 --- a/cypress/plugins/index.js +++ /dev/null @@ -1,22 +0,0 @@ -/// -// *********************************************************** -// This example plugins/index.js can be used to load plugins -// -// You can change the location of this file or turn off loading -// the plugins file with the 'pluginsFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/plugins-guide -// *********************************************************** - -// This function is called when a project is opened or re-opened (e.g. due to -// the project's config changing) - -/** - * @type {Cypress.PluginConfig} - */ -// eslint-disable-next-line no-unused-vars -module.exports = (on, config) => { - // `on` is used to hook into various events Cypress emits - // `config` is the resolved Cypress config -}; diff --git a/cypress/plugins/index.ts b/cypress/plugins/index.ts new file mode 100644 index 0000000000..4e21de12f0 --- /dev/null +++ b/cypress/plugins/index.ts @@ -0,0 +1,29 @@ +module.exports = (on, config) => { + const webpackPreprocessor = require('@cypress/webpack-batteries-included-preprocessor'); + const webpackOptions = webpackPreprocessor.defaultOptions.webpackOptions; + + webpackOptions.module.rules.unshift({ + test: /[/\\]@angular[/\\].+\.m?js$/, + resolve: { + fullySpecified: false, + }, + use: { + loader: 'babel-loader', + options: { + plugins: ['@angular/compiler-cli/linker/babel'], + compact: false, + cacheDirectory: true, + }, + }, + }); + + on( + 'file:preprocessor', + webpackPreprocessor({ + webpackOptions: webpackOptions, + typescript: require.resolve('typescript'), + }) + ); + + return config; +}; diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts index 4ccf3fb835..0a4cda49b8 100644 --- a/cypress/support/e2e.ts +++ b/cypress/support/e2e.ts @@ -14,7 +14,7 @@ * limitations under the License. */ // *********************************************************** -// This example support/index.js is processed and +// This example support/index.ts is processed and // loaded automatically before your other test files. // // This is a great place to put global configuration and diff --git a/package-lock.json b/package-lock.json index c8dcb0e47f..b2762c4e4e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -61,6 +61,8 @@ "@angular/cli": "^14.2.6", "@angular/compiler-cli": "^14.2.7", "@angular/language-service": "^14.2.7", + "@cypress/webpack-batteries-included-preprocessor": "^2.4.1", + "@cypress/webpack-preprocessor": "^5.17.1", "@datorama/akita-ngdevtools": "^6.0.0", "@types/cytoscape": "^3.14.15", "@types/elasticsearch": "^5.0.37", @@ -1191,12 +1193,12 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1234,9 +1236,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1313,27 +1315,27 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1765,6 +1767,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -2235,6 +2252,95 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", + "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", @@ -2516,6 +2622,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-react": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.5.tgz", + "integrity": "sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.5", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/runtime": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", @@ -2592,13 +2718,13 @@ } }, "node_modules/@babel/types": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", - "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2942,199 +3068,976 @@ "node": ">= 6" } }, - "node_modules/@cypress/xvfb": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", - "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, - "dependencies": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" - } - }, - "node_modules/@cypress/xvfb/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@datorama/akita": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@datorama/akita/-/akita-6.2.4.tgz", - "integrity": "sha512-bSaYvLn+OEfLIaqDd4Ur5fWy2L0TJyWPZU3SIbhDaCPN52M0upnk2GNPqIUyGLQem9LCzpwkIGW9mvafgEv93w==", - "dependencies": { - "schematics-utilities": "^2.0.3" + "node_modules/@cypress/webpack-batteries-included-preprocessor": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@cypress/webpack-batteries-included-preprocessor/-/webpack-batteries-included-preprocessor-2.4.1.tgz", + "integrity": "sha512-As6vP+a/BC5cOINyi7s1XfIcgBlXrXwIqriLi3OSoWQXm9BONpM24tGJjFIXZ2KHWTCyAzjFMig8ifc/VWUm/g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.1", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/preset-react": "^7.10.4", + "@babel/runtime": "^7.11.2", + "babel-loader": "^8.1.0", + "babel-plugin-add-module-exports": "^1.0.2", + "coffee-loader": "^0.9.0", + "coffeescript": "^1.12.7", + "pnp-webpack-plugin": "^1.7.0", + "ts-loader": "8.4.0", + "tsconfig-package": "npm:tsconfig@^7.0.0", + "tsconfig-paths-webpack-plugin": "^3.3.0", + "webpack": "^4.44.2" }, "peerDependencies": { - "rxjs": "*", - "tslib": "^2.0.0" + "@cypress/webpack-preprocessor": "^5.4.4" } }, - "node_modules/@datorama/akita-ngdevtools": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@datorama/akita-ngdevtools/-/akita-ngdevtools-6.0.1.tgz", - "integrity": "sha512-jEsFTHQNJwLv+bSayHyGzI6zW3tVPUpx3yrWHKQGTc2cMsbhcjuId+o/Q6VkyMzM4vew3Itasz5XrrZTooakIw==", + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "dependencies": { - "rxjs": "6.6.7" - }, - "peerDependencies": { - "@angular/common": ">= 8.0.0", - "@angular/core": ">= 8.0.0", - "@datorama/akita": ">= 6.0.0", - "tslib": "^2.0.0" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, - "engines": { - "node": ">=10.0.0" + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", - "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", - "cpu": [ - "loong64" - ], + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", - "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.2.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@xtuc/long": "4.2.2" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.12.1", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", - "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, - "engines": { - "node": ">= 4" + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/@fortawesome/angular-fontawesome": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.11.1.tgz", - "integrity": "sha512-Ngzm5MVxk76ZhYpPTNOI/mpYNz9bzwfBXC5L9mktLgOONjBuYBPVt+bH8lny8hNtDk0ppZzXsMN6CO7hckdfnw==", + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, "dependencies": { - "tslib": "^2.4.0" - }, - "peerDependencies": { - "@angular/core": "^14.0.0", - "@fortawesome/fontawesome-svg-core": "~1.2.27 || ~1.3.0-beta2 || ^6.1.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" } }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.3.0.tgz", - "integrity": "sha512-CA3MAZBTxVsF6SkfkHXDerkhcQs0QPofy43eFdbWJJkZiq3SfiaH1msOkac59rQaqto5EqWnASboY1dBuKen5w==", - "deprecated": "Please upgrade to 6.1.0. https://fontawesome.com/docs/changelog/", - "hasInstallScript": true, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=6" + "node": ">=0.4.0" } }, - "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.0.tgz", - "integrity": "sha512-Cf2mAAeMWFMzpLC7Y9H1I4o3wEU+XovVJhTiNG8ZNgSQj53yl7OCJaS80K4YjrABWZzbAHVaoHE1dVJ27AAYXw==", - "hasInstallScript": true, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.2.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/@fortawesome/fontawesome-svg-core/node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.0.tgz", - "integrity": "sha512-rBevIsj2nclStJ7AxTdfsa3ovHb1H+qApwrxcTVo+NNdeJiB9V75hsKfrkG5AwNcRUNxrPPiScGYCNmLMoh8pg==", - "hasInstallScript": true, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/@fortawesome/free-brands-svg-icons": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.0.0.tgz", - "integrity": "sha512-BIhsy2YeGuk8+KQwpqmyayQDWo1lvGMHsMIE+z5ApPRgV7T+zGhmNzYVoBT4IrJMC6ep5WpGrxoHX+IvNxHnkw==", - "hasInstallScript": true, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/@cypress/webpack-batteries-included-preprocessor/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@cypress/webpack-preprocessor": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.17.1.tgz", + "integrity": "sha512-FE/e8ikPc8z4EVopJCaior3RGy0jd2q9Xcp5NtiwNG4XnLfEnUFTZlAGwXe75sEh4fNMPrBJW1KIz77PX5vGAw==", + "dev": true, + "dependencies": { + "bluebird": "3.7.1", + "debug": "^4.3.4", + "lodash": "^4.17.20" + }, + "peerDependencies": { + "@babel/core": "^7.0.1", + "@babel/preset-env": "^7.0.0", + "babel-loader": "^8.0.2 || ^9", + "webpack": "^4 || ^5" + } + }, + "node_modules/@cypress/webpack-preprocessor/node_modules/bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", + "dev": true + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@datorama/akita": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@datorama/akita/-/akita-6.2.4.tgz", + "integrity": "sha512-bSaYvLn+OEfLIaqDd4Ur5fWy2L0TJyWPZU3SIbhDaCPN52M0upnk2GNPqIUyGLQem9LCzpwkIGW9mvafgEv93w==", + "dependencies": { + "schematics-utilities": "^2.0.3" + }, + "peerDependencies": { + "rxjs": "*", + "tslib": "^2.0.0" + } + }, + "node_modules/@datorama/akita-ngdevtools": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@datorama/akita-ngdevtools/-/akita-ngdevtools-6.0.1.tgz", + "integrity": "sha512-jEsFTHQNJwLv+bSayHyGzI6zW3tVPUpx3yrWHKQGTc2cMsbhcjuId+o/Q6VkyMzM4vew3Itasz5XrrZTooakIw==", + "dev": true, + "dependencies": { + "rxjs": "6.6.7" + }, + "peerDependencies": { + "@angular/common": ">= 8.0.0", + "@angular/core": ">= 8.0.0", + "@datorama/akita": ">= 6.0.0", + "tslib": "^2.0.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz", + "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.2.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.12.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz", + "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@fortawesome/angular-fontawesome": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@fortawesome/angular-fontawesome/-/angular-fontawesome-0.11.1.tgz", + "integrity": "sha512-Ngzm5MVxk76ZhYpPTNOI/mpYNz9bzwfBXC5L9mktLgOONjBuYBPVt+bH8lny8hNtDk0ppZzXsMN6CO7hckdfnw==", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@angular/core": "^14.0.0", + "@fortawesome/fontawesome-svg-core": "~1.2.27 || ~1.3.0-beta2 || ^6.1.0" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.3.0.tgz", + "integrity": "sha512-CA3MAZBTxVsF6SkfkHXDerkhcQs0QPofy43eFdbWJJkZiq3SfiaH1msOkac59rQaqto5EqWnASboY1dBuKen5w==", + "deprecated": "Please upgrade to 6.1.0. https://fontawesome.com/docs/changelog/", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.0.tgz", + "integrity": "sha512-Cf2mAAeMWFMzpLC7Y9H1I4o3wEU+XovVJhTiNG8ZNgSQj53yl7OCJaS80K4YjrABWZzbAHVaoHE1dVJ27AAYXw==", + "hasInstallScript": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core/node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.0.tgz", + "integrity": "sha512-rBevIsj2nclStJ7AxTdfsa3ovHb1H+qApwrxcTVo+NNdeJiB9V75hsKfrkG5AwNcRUNxrPPiScGYCNmLMoh8pg==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-brands-svg-icons": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.0.0.tgz", + "integrity": "sha512-BIhsy2YeGuk8+KQwpqmyayQDWo1lvGMHsMIE+z5ApPRgV7T+zGhmNzYVoBT4IrJMC6ep5WpGrxoHX+IvNxHnkw==", + "hasInstallScript": true, "dependencies": { "@fortawesome/fontawesome-common-types": "^0.3.0" }, @@ -4190,6 +5093,12 @@ "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "node_modules/@types/marked": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.7.tgz", @@ -4271,6 +5180,18 @@ "@types/node": "*" } }, + "node_modules/@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", + "dev": true + }, + "node_modules/@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, "node_modules/@types/ws": { "version": "8.5.3", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", @@ -4687,6 +5608,75 @@ "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "dependencies": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-code-frame/node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-module-context/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-module-context/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", @@ -4795,6 +5785,49 @@ "@webassemblyjs/utf8": "1.11.1" } }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "node_modules/@webassemblyjs/wast-parser/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", @@ -4978,6 +6011,15 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" + } + }, "node_modules/ajv-formats": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", @@ -5158,17 +6200,44 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-query": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz", + "integrity": "sha512-eigU3vhqSO+Z8BKDnVLN/ompjhf3pYzecKXz8+whRy+9gZu8n1TCGfwzQUUPnqdHl9ax1Hr9031orZ+UOEYr7Q==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/aria-query": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz", - "integrity": "sha512-eigU3vhqSO+Z8BKDnVLN/ompjhf3pYzecKXz8+whRy+9gZu8n1TCGfwzQUUPnqdHl9ax1Hr9031orZ+UOEYr7Q==", + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", "dev": true, "engines": { - "node": ">=6.0" + "node": ">=0.10.0" } }, "node_modules/array-find-index": { @@ -5204,6 +6273,15 @@ "node": ">=0.10.0" } }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -5219,6 +6297,34 @@ "safer-buffer": "~2.1.0" } }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -5228,6 +6334,30 @@ "node": ">=0.8" } }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -5243,6 +6373,19 @@ "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", "dev": true }, + "node_modules/async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "optional": true + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -5258,6 +6401,18 @@ "node": ">= 4.0.0" } }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, "node_modules/autoprefixer": { "version": "10.4.13", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", @@ -5357,6 +6512,12 @@ "node": ">=8.9.0" } }, + "node_modules/babel-plugin-add-module-exports": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", + "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==", + "dev": true + }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -5426,6 +6587,36 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -5503,6 +6694,16 @@ "node": ">=8" } }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -5525,6 +6726,12 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, "node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -5655,6 +6862,105 @@ "node": ">=8" } }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, "node_modules/browserslist": { "version": "4.21.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", @@ -5721,6 +7027,18 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, "node_modules/builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -5813,6 +7131,26 @@ "node": ">=10" } }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", @@ -6104,64 +7442,172 @@ "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", "dev": true, "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", + "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=0.10.0" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true, "engines": { - "node": ">=6.0" + "node": ">=0.10.0" } }, - "node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -6279,6 +7725,70 @@ "node": ">=6" } }, + "node_modules/coffee-loader": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/coffee-loader/-/coffee-loader-0.9.0.tgz", + "integrity": "sha512-VSoQ5kWr6Yfjn4RDpVbba2XMs3XG1ZXtLakPRt8dNfUcNU9h+1pocpdUUEd7NK9rLDwrju4yonhxrL8aMr5tww==", + "dev": true, + "dependencies": { + "loader-utils": "^1.0.2" + }, + "peerDependencies": { + "coffeescript": ">= 1.8.x" + } + }, + "node_modules/coffee-loader/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/coffee-loader/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/coffeescript": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", + "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==", + "dev": true, + "bin": { + "cake": "bin/cake", + "coffee": "bin/coffee" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -6354,6 +7864,12 @@ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -6488,12 +8004,24 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -6611,6 +8139,15 @@ "rimraf": "bin.js" } }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/copy-webpack-plugin": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", @@ -6778,6 +8315,49 @@ "node": ">=10" } }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -6888,6 +8468,28 @@ "node": ">= 8" } }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, "node_modules/css-blank-pseudo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", @@ -7671,6 +9273,15 @@ "node": "*" } }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -7751,6 +9362,19 @@ "node": ">=8" } }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/delaunator": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", @@ -7797,6 +9421,16 @@ "node": ">= 0.6.0" } }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -7844,6 +9478,23 @@ "node": ">=0.3.1" } }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -7912,6 +9563,16 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -8013,6 +9674,27 @@ "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -8171,7 +9853,6 @@ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, - "optional": true, "dependencies": { "prr": "~1.0.1" }, @@ -8976,50 +10657,197 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { - "node": ">=0.8.x" + "node": ">=0.10.0" } }, - "node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "dependencies": { - "pify": "^2.2.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, "node_modules/express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -9181,6 +11009,19 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -9207,6 +11048,58 @@ "node": ">=0.6.0" } }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -9336,6 +11229,13 @@ "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "node_modules/file-url": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", @@ -9490,6 +11390,15 @@ } } }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -9535,6 +11444,18 @@ "url": "https://www.patreon.com/infusion" } }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -9763,6 +11684,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/getos": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", @@ -9927,6 +11857,113 @@ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "node_modules/hdr-histogram-js": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", @@ -9949,6 +11986,17 @@ "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/hogan.js": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", @@ -10266,6 +12314,12 @@ "node": ">=0.10" } }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -10627,6 +12681,18 @@ "node": "*" } }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -10645,6 +12711,12 @@ "node": ">=8" } }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, "node_modules/is-ci": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", @@ -10668,6 +12740,32 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -10683,6 +12781,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -10840,6 +12950,15 @@ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -12109,7 +14228,28 @@ "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", "dev": true, "engines": { - "node": ">=12" + "node": ">=12" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/marked": { @@ -12133,6 +14273,17 @@ "resolved": "https://registry.npmjs.org/mathjax/-/mathjax-3.2.2.tgz", "integrity": "sha512-Bt+SSVU8eBG27zChVewOicYs7Xsdt40qm4+UpHyX7k0/O9NliPc+x77k1/FEsPsjKPZGJvtRZM1vO+geW0OhGw==" }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -12154,6 +14305,40 @@ "node": ">= 4.0.0" } }, + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/memory-fs/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/memory-fs/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -12222,6 +14407,25 @@ "node": ">=8.6" } }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -12342,6 +14546,12 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -12478,6 +14688,19 @@ "node": ">=4.0.0" } }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -12565,6 +14788,13 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, "node_modules/nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -12577,6 +14807,28 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -12820,6 +15072,78 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", @@ -13120,6 +15444,91 @@ "node": ">=0.10.0" } }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -13129,6 +15538,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -13306,6 +15739,12 @@ "node": ">=8" } }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -13688,6 +16127,19 @@ "node": ">=6" } }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -13776,6 +16228,28 @@ "node": ">= 0.8" } }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true, + "optional": true + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -13822,6 +16296,22 @@ "node": ">=8" } }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -13917,6 +16407,27 @@ "semver-compare": "^1.0.0" } }, + "node_modules/pnp-webpack-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", + "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==", + "dev": true, + "dependencies": { + "ts-pnp": "^1.1.6" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/postcss": { "version": "8.4.16", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", @@ -14661,6 +17172,15 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -14746,8 +17266,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true + "dev": true }, "node_modules/psl": { "version": "1.8.0", @@ -14755,6 +17274,26 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -14861,6 +17400,15 @@ "node": ">=0.6" } }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -14890,6 +17438,16 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -15051,6 +17609,19 @@ "@babel/runtime": "^7.8.4" } }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/regex-parser": { "version": "2.2.11", "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", @@ -15104,13 +17675,38 @@ "regjsparser": "bin/parser" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true, + "optional": true + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "engines": { + "node": ">=0.10" } }, "node_modules/request-progress": { @@ -15171,6 +17767,13 @@ "node": ">=8" } }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, "node_modules/resolve-url-loader": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", @@ -15223,6 +17826,15 @@ "node": ">=8" } }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -15263,6 +17875,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "node_modules/robust-predicates": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", @@ -15339,6 +17961,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -15774,12 +18405,67 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -15907,6 +18593,203 @@ "npm": ">= 3.0.0" } }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/socket.io": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", @@ -15991,6 +18874,12 @@ "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", "dev": true }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, "node_modules/source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -16041,6 +18930,20 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -16060,6 +18963,13 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", @@ -16151,6 +19061,18 @@ "wbuf": "^1.7.3" } }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -16182,16 +19104,112 @@ "node": ">=0.10.0" } }, - "node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "dependencies": { - "minipass": "^3.1.1" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/statuses": { @@ -16203,6 +19221,40 @@ "node": ">= 0.6" } }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-browserify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -16212,6 +19264,43 @@ "stream-shift": "^1.0.0" } }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-http/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", @@ -16323,6 +19412,15 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -16629,6 +19727,18 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", @@ -16646,79 +19756,288 @@ "node": ">=8.17.0" } }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, "engines": { - "node": ">=4" + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/treeify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "dev": true + }, + "node_modules/ts-loader": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.4.0.tgz", + "integrity": "sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^2.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "*" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-loader/node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/ts-loader/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" }, "engines": { - "node": ">=8.0" + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "node_modules/ts-loader/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "engines": { - "node": ">=0.6" + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "node_modules/ts-loader/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" + "safe-buffer": "~5.1.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "bin": { - "tree-kill": "cli.js" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/treeify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", - "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", + "node_modules/ts-loader/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true, "engines": { - "node": ">=0.6" + "node": ">=6" } }, - "node_modules/tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, "node_modules/ts-md5": { "version": "1.2.11", "resolved": "https://registry.npmjs.org/ts-md5/-/ts-md5-1.2.11.tgz", @@ -16767,6 +20086,147 @@ } } }, + "node_modules/ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tsconfig-package": { + "name": "tsconfig", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "dependencies": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + } + }, + "node_modules/tsconfig-package/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz", + "integrity": "sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^3.9.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", @@ -16793,6 +20253,12 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -16941,6 +20407,30 @@ "node": ">=4" } }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -16975,6 +20465,54 @@ "node": ">= 0.8" } }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -16984,6 +20522,17 @@ "node": ">=8" } }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -17000,22 +20549,78 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", + "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/url/node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" }, - "bin": { - "browserslist-lint": "cli.js" + "engines": { + "node": ">=0.6" }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, "dependencies": { - "punycode": "^2.1.0" + "inherits": "2.0.3" } }, "node_modules/util-deprecate": { @@ -17029,6 +20634,12 @@ "integrity": "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=", "dev": true }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -17098,6 +20709,12 @@ "extsprintf": "^1.2.0" } }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, "node_modules/void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", @@ -17120,6 +20737,310 @@ "node": ">=10.13.0" } }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "optional": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "optional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/watchpack-chokidar2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "optional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wbuf": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", @@ -17526,6 +21447,15 @@ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, + "node_modules/worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "dependencies": { + "errno": "~0.1.7" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -18434,12 +22364,12 @@ } }, "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-module-transforms": { @@ -18468,9 +22398,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true }, "@babel/helper-remap-async-to-generator": { @@ -18526,21 +22456,21 @@ } }, "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", "dev": true }, "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", "dev": true }, "@babel/helper-wrap-function": { @@ -18825,6 +22755,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -19124,7 +23063,70 @@ "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz", + "integrity": "sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz", + "integrity": "sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + } + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz", + "integrity": "sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + } } }, "@babel/plugin-transform-regenerator": { @@ -19337,6 +23339,20 @@ "esutils": "^2.0.2" } }, + "@babel/preset-react": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.22.5.tgz", + "integrity": "sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-transform-react-display-name": "^7.22.5", + "@babel/plugin-transform-react-jsx": "^7.22.5", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.22.5" + } + }, "@babel/runtime": { "version": "7.18.9", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", @@ -19400,13 +23416,13 @@ } }, "@babel/types": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", - "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", + "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", "to-fast-properties": "^2.0.0" } }, @@ -19558,44 +23574,696 @@ "postcss-value-parser": "^4.2.0" } }, - "@csstools/postcss-unset-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", - "dev": true, - "requires": {} - }, - "@csstools/selector-specificity": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", - "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", - "dev": true, - "requires": {} - }, - "@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "dev": true, + "requires": {} + }, + "@csstools/selector-specificity": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", + "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "dev": true, + "requires": {} + }, + "@cypress/request": { + "version": "2.88.10", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", + "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "http-signature": "~1.3.6", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + } + }, + "@cypress/webpack-batteries-included-preprocessor": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@cypress/webpack-batteries-included-preprocessor/-/webpack-batteries-included-preprocessor-2.4.1.tgz", + "integrity": "sha512-As6vP+a/BC5cOINyi7s1XfIcgBlXrXwIqriLi3OSoWQXm9BONpM24tGJjFIXZ2KHWTCyAzjFMig8ifc/VWUm/g==", + "dev": true, + "requires": { + "@babel/core": "^7.11.1", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", + "@babel/plugin-transform-runtime": "^7.11.0", + "@babel/preset-env": "^7.11.0", + "@babel/preset-react": "^7.10.4", + "@babel/runtime": "^7.11.2", + "babel-loader": "^8.1.0", + "babel-plugin-add-module-exports": "^1.0.2", + "coffee-loader": "^0.9.0", + "coffeescript": "^1.12.7", + "pnp-webpack-plugin": "^1.7.0", + "ts-loader": "8.4.0", + "tsconfig-package": "npm:tsconfig@^7.0.0", + "tsconfig-paths-webpack-plugin": "^3.3.0", + "webpack": "^4.44.2" + }, + "dependencies": { + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "webpack": { + "version": "4.46.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", + "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "@cypress/webpack-preprocessor": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@cypress/webpack-preprocessor/-/webpack-preprocessor-5.17.1.tgz", + "integrity": "sha512-FE/e8ikPc8z4EVopJCaior3RGy0jd2q9Xcp5NtiwNG4XnLfEnUFTZlAGwXe75sEh4fNMPrBJW1KIz77PX5vGAw==", "dev": true, "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "http-signature": "~1.3.6", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" + "bluebird": "3.7.1", + "debug": "^4.3.4", + "lodash": "^4.17.20" + }, + "dependencies": { + "bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", + "dev": true + } } }, "@cypress/xvfb": { @@ -20629,6 +25297,12 @@ "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "@types/marked": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.7.tgz", @@ -20710,6 +25384,18 @@ "@types/node": "*" } }, + "@types/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==", + "dev": true + }, + "@types/strip-json-comments": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz", + "integrity": "sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==", + "dev": true + }, "@types/ws": { "version": "8.5.3", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", @@ -20960,6 +25646,79 @@ "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + }, + "dependencies": { + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + } + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + }, + "dependencies": { + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + } + } + }, "@webassemblyjs/helper-numbers": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", @@ -21068,6 +25827,51 @@ "@webassemblyjs/utf8": "1.11.1" } }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + }, + "dependencies": { + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + } + } + }, "@webassemblyjs/wast-printer": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", @@ -21218,6 +26022,13 @@ "uri-js": "^4.2.2" } }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true, + "requires": {} + }, "ajv-formats": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", @@ -21351,6 +26162,24 @@ "integrity": "sha512-eigU3vhqSO+Z8BKDnVLN/ompjhf3pYzecKXz8+whRy+9gZu8n1TCGfwzQUUPnqdHl9ax1Hr9031orZ+UOEYr7Q==", "dev": true }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -21375,6 +26204,12 @@ "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -21390,12 +26225,65 @@ "safer-buffer": "~2.1.0" } }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -21408,6 +26296,13 @@ "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", "dev": true }, + "async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "dev": true, + "optional": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -21420,6 +26315,12 @@ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, "autoprefixer": { "version": "10.4.13", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", @@ -21483,6 +26384,12 @@ } } }, + "babel-plugin-add-module-exports": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz", + "integrity": "sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg==", + "dev": true + }, "babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -21539,6 +26446,32 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -21590,6 +26523,16 @@ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -21612,6 +26555,12 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, "body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -21722,6 +26671,93 @@ "fill-range": "^7.0.1" } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, "browserslist": { "version": "4.21.4", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", @@ -21755,6 +26791,18 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -21831,6 +26879,23 @@ } } }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, "cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", @@ -22079,6 +27144,96 @@ "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", "dev": true }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -22164,6 +27319,53 @@ "shallow-clone": "^3.0.0" } }, + "coffee-loader": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/coffee-loader/-/coffee-loader-0.9.0.tgz", + "integrity": "sha512-VSoQ5kWr6Yfjn4RDpVbba2XMs3XG1ZXtLakPRt8dNfUcNU9h+1pocpdUUEd7NK9rLDwrju4yonhxrL8aMr5tww==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "coffeescript": { + "version": "1.12.7", + "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.12.7.tgz", + "integrity": "sha512-pLXHFxQMPklVoEekowk8b3erNynC+DVJzChxS/LCBBgR6/8AJkHivkm//zbowcfc7BTCAjryuhx6gPqPRfsFoA==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -22224,6 +27426,12 @@ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "dev": true }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -22346,12 +27554,24 @@ "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", "dev": true }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -22441,6 +27661,12 @@ } } }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, "copy-webpack-plugin": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", @@ -22561,6 +27787,51 @@ "yaml": "^1.10.0" } }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -22649,6 +27920,25 @@ "which": "^2.0.1" } }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, "css-blank-pseudo": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", @@ -23210,6 +28500,12 @@ "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", "dev": true }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -23271,6 +28567,16 @@ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, "delaunator": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", @@ -23308,6 +28614,16 @@ "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true }, + "des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -23348,6 +28664,25 @@ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -23404,6 +28739,12 @@ "entities": "^2.0.0" } }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, "domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -23492,6 +28833,29 @@ "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -23619,7 +28983,6 @@ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, - "optional": true, "requires": { "prr": "~1.0.1" } @@ -24127,6 +29490,16 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -24153,6 +29526,119 @@ "pify": "^2.2.0" } }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, "express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -24278,6 +29764,16 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -24300,6 +29796,48 @@ } } }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, "extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -24403,6 +29941,13 @@ "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "file-url": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", @@ -24526,6 +30071,12 @@ "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", "dev": true }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -24555,6 +30106,15 @@ "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", "dev": true }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -24750,6 +30310,12 @@ "pump": "^3.0.0" } }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, "getos": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", @@ -24878,6 +30444,87 @@ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "hdr-histogram-js": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", @@ -24900,6 +30547,17 @@ "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "hogan.js": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", @@ -25148,6 +30806,12 @@ "sshpk": "^1.14.1" } }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -25412,6 +31076,15 @@ "integrity": "sha512-nW24QBoPcFGGHJGUwnfpI7Yc5CdqWNdsyHQszVE/z2pKHXzh7FZ5GWhJqSyaQ9wMkQnsTx+kAI8bHlCX4tKdbg==", "dev": true }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -25427,6 +31100,12 @@ "binary-extensions": "^2.0.0" } }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, "is-ci": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", @@ -25444,12 +31123,41 @@ "has": "^1.0.3" } }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, "is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -25556,6 +31264,12 @@ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -26531,6 +32245,21 @@ } } }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, "marked": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.3.tgz", @@ -26546,6 +32275,17 @@ "resolved": "https://registry.npmjs.org/mathjax/-/mathjax-3.2.2.tgz", "integrity": "sha512-Bt+SSVU8eBG27zChVewOicYs7Xsdt40qm4+UpHyX7k0/O9NliPc+x77k1/FEsPsjKPZGJvtRZM1vO+geW0OhGw==" }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -26561,6 +32301,42 @@ "fs-monkey": "^1.0.3" } }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -26619,6 +32395,24 @@ "picomatch": "^2.2.3" } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -26702,6 +32496,12 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -26809,6 +32609,16 @@ "through2": "^2.0.0" } }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -26883,12 +32693,38 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, "nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -27054,18 +32890,92 @@ "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", "dev": true, "requires": { - "abbrev": "^1.0.0" + "abbrev": "^1.0.0" + } + } + } + }, + "node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "dev": true, + "optional": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" } } } }, - "node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true, - "optional": true - }, "node-releases": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", @@ -27309,12 +33219,98 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -27446,6 +33442,12 @@ } } }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -27754,6 +33756,19 @@ "callsites": "^3.0.0" } }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -27836,6 +33851,25 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true, + "optional": true + }, "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -27870,6 +33904,19 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -27945,6 +33992,21 @@ "semver-compare": "^1.0.0" } }, + "pnp-webpack-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", + "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, "postcss": { "version": "8.4.16", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", @@ -28371,6 +34433,12 @@ "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", "dev": true }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -28443,8 +34511,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "optional": true + "dev": true }, "psl": { "version": "1.8.0", @@ -28452,6 +34519,28 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -28534,6 +34623,12 @@ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -28549,6 +34644,16 @@ "safe-buffer": "^5.1.0" } }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -28689,6 +34794,16 @@ "@babel/runtime": "^7.8.4" } }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, "regex-parser": { "version": "2.2.11", "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", @@ -28738,6 +34853,25 @@ } } }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true, + "optional": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, "request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", @@ -28781,6 +34915,12 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, "resolve-url-loader": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", @@ -28823,6 +34963,12 @@ "signal-exit": "^3.0.2" } }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -28850,6 +34996,16 @@ "glob": "^7.1.3" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "robust-predicates": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", @@ -28910,6 +35066,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -29247,12 +35412,57 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -29348,6 +35558,168 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "socket.io": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", @@ -29421,6 +35793,12 @@ "socks": "^2.6.2" } }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, "source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -29454,6 +35832,19 @@ } } }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, "source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -29472,6 +35863,12 @@ } } }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, "sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", @@ -29560,6 +35957,15 @@ "wbuf": "^1.7.3" } }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -29592,12 +35998,126 @@ "minipass": "^3.1.1" } }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -29607,6 +36127,45 @@ "stream-shift": "^1.0.0" } }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", @@ -29690,6 +36249,12 @@ "ansi-regex": "^5.0.1" } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -29917,6 +36482,15 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, "tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", @@ -29931,12 +36505,50 @@ "rimraf": "^3.0.0" } }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -29986,6 +36598,132 @@ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", "dev": true }, + "ts-loader": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.4.0.tgz", + "integrity": "sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^2.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + } + } + }, "ts-md5": { "version": "1.2.11", "resolved": "https://registry.npmjs.org/ts-md5/-/ts-md5-1.2.11.tgz", @@ -30012,6 +36750,117 @@ "yn": "3.1.1" } }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true + }, + "tsconfig-package": { + "version": "npm:tsconfig@7.0.0", + "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-7.0.0.tgz", + "integrity": "sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==", + "dev": true, + "requires": { + "@types/strip-bom": "^3.0.0", + "@types/strip-json-comments": "0.0.30", + "strip-bom": "^3.0.0", + "strip-json-comments": "^2.0.0" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + } + } + }, + "tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.5.2.tgz", + "integrity": "sha512-EhnfjHbzm5IYI9YPNVIxx1moxMI4bpHD2e0zTXeDNQcwjjRaGepP7IhTHJkyDBG0CAOoxRfe7jCG630Ou+C6Pw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^3.9.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", @@ -30034,6 +36883,12 @@ } } }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -30135,6 +36990,26 @@ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -30163,12 +37038,59 @@ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, "untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true + }, "update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", @@ -30187,6 +37109,62 @@ "punycode": "^2.1.0" } }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "url": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", + "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", + "dev": true, + "requires": { + "punycode": "^1.4.1", + "qs": "^6.11.0" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + } + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -30255,6 +37233,12 @@ "extsprintf": "^1.2.0" } }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, "void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", @@ -30271,6 +37255,269 @@ "graceful-fs": "^4.1.2" } }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "optional": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "optional": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "optional": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, "wbuf": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", @@ -30572,6 +37819,15 @@ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/package.json b/package.json index 2fe9fd19f7..a621b71c50 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,8 @@ "@angular/cli": "^14.2.6", "@angular/compiler-cli": "^14.2.7", "@angular/language-service": "^14.2.7", + "@cypress/webpack-batteries-included-preprocessor": "^2.4.1", + "@cypress/webpack-preprocessor": "^5.17.1", "@datorama/akita-ngdevtools": "^6.0.0", "@types/cytoscape": "^3.14.15", "@types/elasticsearch": "^5.0.37", diff --git a/src/app/about/about.component.ts b/src/app/about/about.component.ts index d7ed85c9fa..0e1f9cbf96 100644 --- a/src/app/about/about.component.ts +++ b/src/app/about/about.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'; -import { OrganizationsService } from 'app/shared/swagger'; +import { OrganizationsService } from 'app/shared/openapi'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { Funder, FundingComponent } from '../funding/funding.component'; diff --git a/src/app/aliases/aliases.component.ts b/src/app/aliases/aliases.component.ts index 2155a7bf3e..01bc78b51f 100644 --- a/src/app/aliases/aliases.component.ts +++ b/src/app/aliases/aliases.component.ts @@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; import { Base } from '../shared/base'; -import { Collection, DockstoreTool, Organization, Workflow, WorkflowVersionPathInfo } from '../shared/swagger'; +import { Collection, DockstoreTool, Organization, Workflow, WorkflowVersionPathInfo } from '../shared/openapi'; import { ActivatedRoute, Router } from '../test'; import { AliasesQuery } from './state/aliases.query'; import { AliasesService } from './state/aliases.service'; diff --git a/src/app/aliases/state/aliases.service.ts b/src/app/aliases/state/aliases.service.ts index a6cafbc2b2..112e7e4f4b 100644 --- a/src/app/aliases/state/aliases.service.ts +++ b/src/app/aliases/state/aliases.service.ts @@ -11,7 +11,7 @@ import { Workflow, WorkflowsService, WorkflowVersionPathInfo, -} from '../../shared/swagger'; +} from '../../shared/openapi'; import { AliasesStore } from './aliases.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/aliases/state/aliases.store.ts b/src/app/aliases/state/aliases.store.ts index 76d4d403a6..bcd7a21d87 100644 --- a/src/app/aliases/state/aliases.store.ts +++ b/src/app/aliases/state/aliases.store.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { Store, StoreConfig } from '@datorama/akita'; -import { Collection, DockstoreTool, Organization, Workflow, WorkflowVersionPathInfo } from '../../shared/swagger'; +import { Collection, DockstoreTool, Organization, Workflow, WorkflowVersionPathInfo } from '../../shared/openapi'; export interface AliasesState { organization: Organization | null; diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 3edec7032f..2f325c8e88 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -99,8 +99,7 @@ import { PipeModule } from './shared/pipe/pipe.module'; import { ProviderService } from './shared/provider.service'; import { RefreshService } from './shared/refresh.service'; import { ApiModule } from './shared/swagger/api.module'; -import { GA4GHService } from './shared/swagger/api/gA4GH.service'; -import { Configuration } from './shared/swagger/configuration'; +import { Configuration } from './shared/openapi/configuration'; import { TrackLoginService } from './shared/track-login.service'; import { TwitterService } from './shared/twitter.service'; import { UrlResolverService } from './shared/url-resolver.service'; @@ -230,7 +229,6 @@ export function initializerFactory( RefreshService, PagenumberService, TwitterService, - GA4GHService, GA4GHV20Service, DescriptorLanguageService, UrlResolverService, diff --git a/src/app/configuration.service.ts b/src/app/configuration.service.ts index 590c86790e..98fde39235 100644 --- a/src/app/configuration.service.ts +++ b/src/app/configuration.service.ts @@ -4,7 +4,7 @@ import { IOauth2Options } from 'ng2-ui-auth/lib/config-interfaces'; import { AuthConfig } from './shared/auth.model'; import { Dockstore } from './shared/dockstore.model'; import { FeatureService } from './shared/feature.service'; -import { Config, MetadataService } from './shared/swagger'; +import { Config, MetadataService } from './shared/openapi'; @Injectable({ providedIn: 'root', diff --git a/src/app/container/add-tag/add-tag.component.ts b/src/app/container/add-tag/add-tag.component.ts index d5b292512f..d18e8cb72c 100644 --- a/src/app/container/add-tag/add-tag.component.ts +++ b/src/app/container/add-tag/add-tag.component.ts @@ -23,10 +23,10 @@ import { AlertService } from '../../shared/alert/state/alert.service'; import { Base } from '../../shared/base'; import { formInputDebounceTime } from '../../shared/constants'; import { ContainerService } from '../../shared/container.service'; -import { ContainersService, DockstoreTool, SourceFile } from '../../shared/swagger'; -import { ContainertagsService } from '../../shared/swagger/api/containertags.service'; -import { Tag } from '../../shared/swagger/model/tag'; -import { ToolDescriptor } from '../../shared/swagger/model/toolDescriptor'; +import { ContainersService, DockstoreTool, SourceFile } from '../../shared/openapi'; +import { ContainertagsService } from '../../shared/openapi/api/containertags.service'; +import { Tag } from '../../shared/openapi/model/tag'; +import { ToolDescriptor } from '../../shared/openapi/model/toolDescriptor'; import { ToolQuery } from '../../shared/tool/tool.query'; import { formErrors, validationDescriptorPatterns, validationMessages } from '../../shared/validationMessages.model'; @@ -162,16 +162,16 @@ export class AddTagComponent extends Base implements OnInit, AfterViewChecked { const addCWL: Observable = this.containersService.addTestParameterFiles( id, toAddCWLTestParameterFiles, - 'CWL', tagName, + 'CWL', null ); // Using the string 'WDL' because this parameter only accepts 'CWL' or 'WDL' and not 'NFL' const addWDL: Observable = this.containersService.addTestParameterFiles( id, toAddWDLTestParameterFiles, - 'WDL', tagName, + 'WDL', null ); forkJoin([addCWL, addWDL]).subscribe( diff --git a/src/app/container/container.component.ts b/src/app/container/container.component.ts index 48c12129dd..3b48b465bb 100644 --- a/src/app/container/container.component.ts +++ b/src/app/container/container.component.ts @@ -39,18 +39,18 @@ import { EntriesService } from '../shared/openapi'; import { ProviderService } from '../shared/provider.service'; import { SessionQuery } from '../shared/session/session.query'; import { SessionService } from '../shared/session/session.service'; -import { Tag } from '../shared/swagger/model/tag'; -import { WorkflowVersion } from '../shared/swagger/model/workflowVersion'; +import { Tag } from '../shared/openapi/model/tag'; +import { WorkflowVersion } from '../shared/openapi/model/workflowVersion'; import { ToolQuery } from '../shared/tool/tool.query'; import { ToolService } from '../shared/tool/tool.service'; import { TrackLoginService } from '../shared/track-login.service'; import { ExtendedDockstoreTool } from './../shared/models/ExtendedDockstoreTool'; -import { ContainersService } from './../shared/swagger/api/containers.service'; -import { DockstoreTool } from './../shared/swagger/model/dockstoreTool'; +import { ContainersService } from './../shared/openapi/api/containers.service'; +import { DockstoreTool } from './../shared/openapi/model/dockstoreTool'; import { UrlResolverService } from './../shared/url-resolver.service'; import { AddTagComponent } from './add-tag/add-tag.component'; import { EmailService } from './email.service'; -import { Workflow } from '../shared/swagger'; +import { Workflow } from '../shared/openapi'; import { EntryCategoriesService } from '../categories/state/entry-categories.service'; @Component({ diff --git a/src/app/container/descriptors/descriptors.component.spec.ts b/src/app/container/descriptors/descriptors.component.spec.ts index a218546294..69c008c27b 100644 --- a/src/app/container/descriptors/descriptors.component.spec.ts +++ b/src/app/container/descriptors/descriptors.component.spec.ts @@ -23,7 +23,7 @@ import { ContainerService } from '../../shared/container.service'; import { DescriptorService } from '../../shared/descriptor.service'; import { FileService } from '../../shared/file.service'; import { EntriesService, GA4GHV20Service } from '../../shared/openapi'; -import { ContainersService } from '../../shared/swagger'; +import { ContainersService } from '../../shared/openapi'; import { sampleToolVersion } from '../../test/mocked-objects'; import { DescriptorsComponent } from './descriptors.component'; import { DescriptorLanguageService } from '../../shared/entry/descriptor-language.service'; diff --git a/src/app/container/descriptors/descriptors.component.ts b/src/app/container/descriptors/descriptors.component.ts index 89db06c338..65ccb7b4e1 100644 --- a/src/app/container/descriptors/descriptors.component.ts +++ b/src/app/container/descriptors/descriptors.component.ts @@ -22,8 +22,8 @@ import { GA4GHFilesQuery } from '../../shared/ga4gh-files/ga4gh-files.query'; import { GA4GHFilesService } from '../../shared/ga4gh-files/ga4gh-files.service'; import { EntriesService, GA4GHV20Service } from '../../shared/openapi'; import { EntryFileSelector } from '../../shared/selectors/entry-file-selector'; -import { SourceFile, ToolDescriptor, ToolFile } from '../../shared/swagger'; -import { Tag } from '../../shared/swagger/model/tag'; +import { SourceFile, ToolDescriptor, ToolFile } from '../../shared/openapi'; +import { Tag } from '../../shared/openapi/model/tag'; import { ToolQuery } from '../../shared/tool/tool.query'; import { FilesQuery } from '../../workflow/files/state/files.query'; import { FilesService } from '../../workflow/files/state/files.service'; diff --git a/src/app/container/dockerfile/dockerfile.component.spec.ts b/src/app/container/dockerfile/dockerfile.component.spec.ts index 3f227ee756..ca349ba7fd 100644 --- a/src/app/container/dockerfile/dockerfile.component.spec.ts +++ b/src/app/container/dockerfile/dockerfile.component.spec.ts @@ -16,7 +16,7 @@ import { NO_ERRORS_SCHEMA } from '@angular/core'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { ContainersService } from '../../shared/swagger'; +import { ContainersService } from '../../shared/openapi'; import { ContainerService } from './../../shared/container.service'; import { FileService } from './../../shared/file.service'; import { ContainersStubService, ContainerStubService, FileStubService } from './../../test/service-stubs'; diff --git a/src/app/container/dockerfile/dockerfile.component.ts b/src/app/container/dockerfile/dockerfile.component.ts index 178af880ba..e0b74ce4db 100644 --- a/src/app/container/dockerfile/dockerfile.component.ts +++ b/src/app/container/dockerfile/dockerfile.component.ts @@ -18,8 +18,8 @@ import { Observable } from 'rxjs'; import { finalize, first } from 'rxjs/operators'; import { FileService } from '../../shared/file.service'; -import { ContainersService } from '../../shared/swagger'; -import { Tag } from '../../shared/swagger/model/tag'; +import { ContainersService } from '../../shared/openapi'; +import { Tag } from '../../shared/openapi/model/tag'; import { ToolQuery } from '../../shared/tool/tool.query'; @Component({ diff --git a/src/app/container/email.service.spec.ts b/src/app/container/email.service.spec.ts index 593d5b2c2b..c991701e17 100644 --- a/src/app/container/email.service.spec.ts +++ b/src/app/container/email.service.spec.ts @@ -3,7 +3,7 @@ import { inject, TestBed } from '@angular/core/testing'; import { sampleTool1 } from '../test/mocked-objects'; import { DockstoreService } from './../shared/dockstore.service'; import { ExtendedDockstoreTool } from './../shared/models/ExtendedDockstoreTool'; -import { DockstoreTool } from './../shared/swagger/model/dockstoreTool'; +import { DockstoreTool } from './../shared/openapi/model/dockstoreTool'; import { EmailService } from './email.service'; describe('Service: Email', () => { diff --git a/src/app/container/email.service.ts b/src/app/container/email.service.ts index 2275db31cd..5b432cbbff 100644 --- a/src/app/container/email.service.ts +++ b/src/app/container/email.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { DockstoreTool } from '../shared/swagger/model/dockstoreTool'; +import { DockstoreTool } from '../shared/openapi/model/dockstoreTool'; import { DockstoreService } from './../shared/dockstore.service'; import { ExtendedDockstoreTool } from './../shared/models/ExtendedDockstoreTool'; diff --git a/src/app/container/files/files.component.ts b/src/app/container/files/files.component.ts index 4a4bd219d7..6b6120a02d 100644 --- a/src/app/container/files/files.component.ts +++ b/src/app/container/files/files.component.ts @@ -17,8 +17,8 @@ import { Component, Input, OnChanges } from '@angular/core'; import { Files } from '../../shared/files'; import { GA4GHFilesService } from '../../shared/ga4gh-files/ga4gh-files.service'; -import { SourceFile } from '../../shared/swagger'; -import { Tag } from '../../shared/swagger/model/tag'; +import { SourceFile } from '../../shared/openapi'; +import { Tag } from '../../shared/openapi/model/tag'; @Component({ selector: 'app-files-container', diff --git a/src/app/container/info-tab/info-tab.component.ts b/src/app/container/info-tab/info-tab.component.ts index 348db6f64c..f27a839a14 100644 --- a/src/app/container/info-tab/info-tab.component.ts +++ b/src/app/container/info-tab/info-tab.component.ts @@ -22,9 +22,9 @@ import { Dockstore } from '../../shared/dockstore.model'; import { ExtendedToolsService } from '../../shared/extended-tools.service'; import { ExtendedDockstoreTool } from '../../shared/models/ExtendedDockstoreTool'; import { SessionQuery } from '../../shared/session/session.query'; -import { ToolDescriptor, ToolVersion, WorkflowVersion } from '../../shared/swagger'; -import { DockstoreTool } from '../../shared/swagger/model/dockstoreTool'; -import { Tag } from '../../shared/swagger/model/tag'; +import { ToolDescriptor, ToolVersion, WorkflowVersion } from '../../shared/openapi'; +import { DockstoreTool } from '../../shared/openapi/model/dockstoreTool'; +import { Tag } from '../../shared/openapi/model/tag'; import { exampleDescriptorPatterns, validationDescriptorPatterns } from '../../shared/validationMessages.model'; import { InfoTabService } from './info-tab.service'; import { Author } from 'app/shared/openapi'; diff --git a/src/app/container/info-tab/info-tab.service.ts b/src/app/container/info-tab/info-tab.service.ts index 2102725f96..7673ea7540 100644 --- a/src/app/container/info-tab/info-tab.service.ts +++ b/src/app/container/info-tab/info-tab.service.ts @@ -21,8 +21,8 @@ import { Base } from '../../shared/base'; import { ContainerService } from '../../shared/container.service'; import { ExtendedDockstoreToolQuery } from '../../shared/extended-dockstoreTool/extended-dockstoreTool.query'; import { ExtendedDockstoreTool } from '../../shared/models/ExtendedDockstoreTool'; -import { ContainersService } from '../../shared/swagger/api/containers.service'; -import { DockstoreTool } from '../../shared/swagger/model/dockstoreTool'; +import { ContainersService } from '../../shared/openapi/api/containers.service'; +import { DockstoreTool } from '../../shared/openapi/model/dockstoreTool'; @Injectable() export class InfoTabService extends Base { diff --git a/src/app/container/launch/launch.component.ts b/src/app/container/launch/launch.component.ts index 974bd5bb98..6850039f52 100644 --- a/src/app/container/launch/launch.component.ts +++ b/src/app/container/launch/launch.component.ts @@ -17,12 +17,12 @@ import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/cor import { Base } from 'app/shared/base'; import { BehaviorSubject, combineLatest, Observable } from 'rxjs'; import { debounceTime, takeUntil } from 'rxjs/operators'; -import { SourceFile, ToolDescriptor } from '../../shared/swagger'; -import { DockstoreTool } from '../../shared/swagger/model/dockstoreTool'; -import { Workflow } from '../../shared/swagger/model/workflow'; +import { SourceFile, ToolDescriptor } from '../../shared/openapi'; +import { DockstoreTool } from '../../shared/openapi/model/dockstoreTool'; +import { Workflow } from '../../shared/openapi/model/workflow'; import { ToolQuery } from '../../shared/tool/tool.query'; import { DescriptorLanguageService } from './../../shared/entry/descriptor-language.service'; -import { Tag } from './../../shared/swagger/model/tag'; +import { Tag } from './../../shared/openapi/model/tag'; import { ToolLaunchService } from './tool-launch.service'; import DescriptorTypeEnum = Workflow.DescriptorTypeEnum; diff --git a/src/app/container/launch/tool-launch.service.ts b/src/app/container/launch/tool-launch.service.ts index ec9db55951..1510b1cd77 100644 --- a/src/app/container/launch/tool-launch.service.ts +++ b/src/app/container/launch/tool-launch.service.ts @@ -15,7 +15,7 @@ */ import { Injectable } from '@angular/core'; import { DescriptorTypeCompatService } from '../../shared/descriptor-type-compat.service'; -import { ToolDescriptor } from '../../shared/swagger'; +import { ToolDescriptor } from '../../shared/openapi'; import { ga4ghPath } from './../../shared/constants'; import { Dockstore } from './../../shared/dockstore.model'; import { LaunchService } from './../../shared/launch.service'; diff --git a/src/app/container/paramfiles/paramfiles.component.ts b/src/app/container/paramfiles/paramfiles.component.ts index 53d4708660..a31c0678d5 100644 --- a/src/app/container/paramfiles/paramfiles.component.ts +++ b/src/app/container/paramfiles/paramfiles.component.ts @@ -21,8 +21,8 @@ import { GA4GHFilesQuery } from '../../shared/ga4gh-files/ga4gh-files.query'; import { GA4GHFilesService } from '../../shared/ga4gh-files/ga4gh-files.service'; import { EntriesService, GA4GHV20Service } from '../../shared/openapi'; import { EntryFileSelector } from '../../shared/selectors/entry-file-selector'; -import { SourceFile, ToolDescriptor, ToolFile } from '../../shared/swagger'; -import { Tag } from '../../shared/swagger/model/tag'; +import { SourceFile, ToolDescriptor, ToolFile } from '../../shared/openapi'; +import { Tag } from '../../shared/openapi/model/tag'; import { ToolQuery } from '../../shared/tool/tool.query'; import { FilesQuery } from '../../workflow/files/state/files.query'; import { FilesService } from '../../workflow/files/state/files.service'; diff --git a/src/app/container/paramfiles/paramfiles.service.spec.ts b/src/app/container/paramfiles/paramfiles.service.spec.ts index b62145a51a..69fd25db32 100644 --- a/src/app/container/paramfiles/paramfiles.service.spec.ts +++ b/src/app/container/paramfiles/paramfiles.service.spec.ts @@ -16,11 +16,11 @@ import { RefreshService } from './../../shared/refresh.service'; */ import { inject, TestBed } from '@angular/core/testing'; -import { ToolDescriptor } from './../../shared/swagger'; -import { ContainersService } from './../../shared/swagger/api/containers.service'; -import { WorkflowsService } from './../../shared/swagger/api/workflows.service'; -import { SourceFile } from './../../shared/swagger/model/sourceFile'; -import { Tag } from './../../shared/swagger/model/tag'; +import { ToolDescriptor } from './../../shared/openapi'; +import { ContainersService } from './../../shared/openapi/api/containers.service'; +import { WorkflowsService } from './../../shared/openapi/api/workflows.service'; +import { SourceFile } from './../../shared/openapi/model/sourceFile'; +import { Tag } from './../../shared/openapi/model/tag'; import { ContainersStubService, RefreshStubService, WorkflowsStubService } from './../../test/service-stubs'; import { ParamfilesService } from './paramfiles.service'; import { DescriptorLanguageService } from '../../shared/entry/descriptor-language.service'; diff --git a/src/app/container/paramfiles/paramfiles.service.ts b/src/app/container/paramfiles/paramfiles.service.ts index a5727518da..9755972adf 100644 --- a/src/app/container/paramfiles/paramfiles.service.ts +++ b/src/app/container/paramfiles/paramfiles.service.ts @@ -15,11 +15,11 @@ */ import { Injectable } from '@angular/core'; -import { SourceFile, ToolDescriptor, Validation } from '../../shared/swagger'; -import { ContainersService } from './../../shared/swagger/api/containers.service'; -import { WorkflowsService } from './../../shared/swagger/api/workflows.service'; -import { Tag } from './../../shared/swagger/model/tag'; -import { WorkflowVersion } from './../../shared/swagger/model/workflowVersion'; +import { SourceFile, ToolDescriptor, Validation } from '../../shared/openapi'; +import { ContainersService } from './../../shared/openapi/api/containers.service'; +import { WorkflowsService } from './../../shared/openapi/api/workflows.service'; +import { Tag } from './../../shared/openapi/model/tag'; +import { WorkflowVersion } from './../../shared/openapi/model/workflowVersion'; import { DescriptorLanguageService } from '../../shared/entry/descriptor-language.service'; import { extendedDescriptorLanguages } from '../../entry/extendedDescriptorLanguage'; @@ -38,10 +38,10 @@ export class ParamfilesService { getFiles(id: number, type: string, versionName?: string, descriptor?: ToolDescriptor.TypeEnum) { if (type === 'workflows') { - return this.workflowsService.getTestParameterFiles(id, versionName); + return this.workflowsService.getTestParameterFiles1(id, versionName); } else { if (descriptor === 'CWL' || descriptor === 'WDL') { - return this.containersService.getTestParameterFiles(id, descriptor, versionName); + return this.containersService.getTestParameterFiles(id, versionName, descriptor); } } } diff --git a/src/app/container/refresh-tool-organization/refresh-tool-organization.component.spec.ts b/src/app/container/refresh-tool-organization/refresh-tool-organization.component.spec.ts index 7fbca8089a..eada81a62c 100644 --- a/src/app/container/refresh-tool-organization/refresh-tool-organization.component.spec.ts +++ b/src/app/container/refresh-tool-organization/refresh-tool-organization.component.spec.ts @@ -6,9 +6,9 @@ import { MatTooltipModule } from '@angular/material/tooltip'; import { ExtendedDockstoreToolService } from 'app/shared/extended-dockstoreTool/extended-dockstoreTool.service'; import { ProviderService } from 'app/shared/provider.service'; -import { ContainersService } from 'app/shared/swagger'; +import { ContainersService } from 'app/shared/openapi'; import { RefreshService } from '../../shared/refresh.service'; -import { UsersService } from './../../shared/swagger/api/users.service'; +import { UsersService } from './../../shared/openapi/api/users.service'; import { ContainersStubService, ExtendedDockstoreToolStubService, diff --git a/src/app/container/refresh-tool-organization/refresh-tool-organization.component.ts b/src/app/container/refresh-tool-organization/refresh-tool-organization.component.ts index adb8ceb7c1..7fe32a8463 100644 --- a/src/app/container/refresh-tool-organization/refresh-tool-organization.component.ts +++ b/src/app/container/refresh-tool-organization/refresh-tool-organization.component.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { Component, Input, OnInit } from '@angular/core'; -import { ContainersService } from 'app/shared/swagger'; +import { ContainersService } from 'app/shared/openapi'; import { ToolQuery } from 'app/shared/tool/tool.query'; import { ToolService } from 'app/shared/tool/tool.service'; import { EMPTY, from } from 'rxjs'; @@ -23,7 +23,7 @@ import { OrgToolObject } from '../../mytools/my-tool/my-tool.component'; import { AlertQuery } from '../../shared/alert/state/alert.query'; import { AlertService } from '../../shared/alert/state/alert.service'; import { RefreshOrganizationComponent } from '../../shared/refresh-organization/refresh-organization.component'; -import { DockstoreTool } from '../../shared/swagger/model/dockstoreTool'; +import { DockstoreTool } from '../../shared/openapi/model/dockstoreTool'; import { UserQuery } from '../../shared/user/user.query'; @Component({ diff --git a/src/app/container/register-tool/register-tool.service.ts b/src/app/container/register-tool/register-tool.service.ts index 469a37a042..c6a291fb14 100644 --- a/src/app/container/register-tool/register-tool.service.ts +++ b/src/app/container/register-tool/register-tool.service.ts @@ -21,11 +21,11 @@ import { BehaviorSubject } from 'rxjs'; import { finalize } from 'rxjs/operators'; import { AlertService } from '../../shared/alert/state/alert.service'; import { ContainerService } from '../../shared/container.service'; -import { SourceControlBean } from '../../shared/swagger'; -import { ContainersService } from '../../shared/swagger/api/containers.service'; -import { HostedService } from '../../shared/swagger/api/hosted.service'; -import { MetadataService } from '../../shared/swagger/api/metadata.service'; -import { DockstoreTool } from '../../shared/swagger/model/dockstoreTool'; +import { SourceControlBean } from '../../shared/openapi'; +import { ContainersService } from '../../shared/openapi/api/containers.service'; +import { HostedService } from '../../shared/openapi/api/hosted.service'; +import { MetadataService } from '../../shared/openapi/api/metadata.service'; +import { DockstoreTool } from '../../shared/openapi/model/dockstoreTool'; import { ToolQuery } from '../../shared/tool/tool.query'; import { Tool } from './tool'; @@ -134,10 +134,10 @@ export class RegisterToolService { registerHostedTool(hostedTool: any): void { const splitPath = hostedTool.path.split('/'); const namespace = splitPath[0]; - const name = splitPath.slice(1, splitPath.length).join("/"); + const name = splitPath.slice(1, splitPath.length).join('/'); this.alertService.start('Registering tool'); this.hostedService - .createHostedTool(name, hostedTool.registry, undefined, namespace, hostedTool.entryName ? hostedTool.entryName : undefined) + .createHostedTool(hostedTool.registry, name, undefined, namespace, hostedTool.entryName ? hostedTool.entryName : undefined) .subscribe( (result: DockstoreTool) => { this.alertService.detailedSuccess(); diff --git a/src/app/container/state/refresh-wizard.service.ts b/src/app/container/state/refresh-wizard.service.ts index 92207fbbf4..ed60e344de 100644 --- a/src/app/container/state/refresh-wizard.service.ts +++ b/src/app/container/state/refresh-wizard.service.ts @@ -7,7 +7,7 @@ import { TokenSource } from 'app/shared/enum/token-source.enum'; import { UsersService } from 'app/shared/openapi'; import { SessionQuery } from 'app/shared/session/session.query'; import { SessionService } from 'app/shared/session/session.service'; -import { UsersService as SwaggerUsersService } from 'app/shared/swagger'; +import { UsersService as SwaggerUsersService } from 'app/shared/openapi'; import { UserQuery } from 'app/shared/user/user.query'; import { finalize } from 'rxjs/operators'; import { RefreshWizardQuery } from './refresh-wizard.query'; diff --git a/src/app/container/tool-file-editor/tool-file-editor.component.spec.ts b/src/app/container/tool-file-editor/tool-file-editor.component.spec.ts index 3ef71d178d..89d5d56d2f 100644 --- a/src/app/container/tool-file-editor/tool-file-editor.component.spec.ts +++ b/src/app/container/tool-file-editor/tool-file-editor.component.spec.ts @@ -24,7 +24,7 @@ import { PrivateFilePathPipe } from './../../shared/entry/private-file-path.pipe import { PublicFileDownloadPipe } from './../../shared/entry/public-file-download.pipe'; import { FileService } from './../../shared/file.service'; import { RefreshService } from './../../shared/refresh.service'; -import { HostedService } from './../../shared/swagger/api/hosted.service'; +import { HostedService } from './../../shared/openapi/api/hosted.service'; import { ContainerStubService, HostedStubService, RefreshStubService, WorkflowStubService } from './../../test/service-stubs'; import { ToolFileEditorComponent } from './tool-file-editor.component'; diff --git a/src/app/container/tool-file-editor/tool-file-editor.component.ts b/src/app/container/tool-file-editor/tool-file-editor.component.ts index 0cc4c7ede9..01fe47cbe3 100644 --- a/src/app/container/tool-file-editor/tool-file-editor.component.ts +++ b/src/app/container/tool-file-editor/tool-file-editor.component.ts @@ -17,10 +17,10 @@ import { Component, Input } from '@angular/core'; import { AlertService } from '../../shared/alert/state/alert.service'; import { FileEditing } from '../../shared/file-editing'; import { ContainertagsService, SourceFile } from '../../shared/openapi'; -import { DockstoreTool, ToolDescriptor } from '../../shared/swagger'; +import { DockstoreTool, ToolDescriptor } from '../../shared/openapi'; import { ContainerService } from './../../shared/container.service'; -import { HostedService } from './../../shared/swagger/api/hosted.service'; -import { Tag } from './../../shared/swagger/model/tag'; +import { HostedService } from './../../shared/openapi/api/hosted.service'; +import { Tag } from './../../shared/openapi/model/tag'; @Component({ selector: 'app-tool-file-editor', diff --git a/src/app/container/version-modal/version-modal.component.spec.ts b/src/app/container/version-modal/version-modal.component.spec.ts index 0795aeb3e8..b9c7793d52 100644 --- a/src/app/container/version-modal/version-modal.component.spec.ts +++ b/src/app/container/version-modal/version-modal.component.spec.ts @@ -8,8 +8,8 @@ import { MatSnackBarModule } from '@angular/material/snack-bar'; import { ListContainersService } from '../../containers/list/list.service'; import { ContainerService } from '../../shared/container.service'; import { DateService } from '../../shared/date.service'; -import { ContainersService } from '../../shared/swagger'; -import { ContainertagsService } from '../../shared/swagger/api/containertags.service'; +import { ContainersService } from '../../shared/openapi'; +import { ContainertagsService } from '../../shared/openapi'; import { sampleTag, sampleTool1 } from '../../test/mocked-objects'; import { ContainersStubService, diff --git a/src/app/container/version-modal/version-modal.component.ts b/src/app/container/version-modal/version-modal.component.ts index 34faa302d1..cd636845ef 100644 --- a/src/app/container/version-modal/version-modal.component.ts +++ b/src/app/container/version-modal/version-modal.component.ts @@ -26,11 +26,11 @@ import { ContainerService } from '../../shared/container.service'; import { DateService } from '../../shared/date.service'; import { TagEditorMode } from '../../shared/enum/tagEditorMode.enum'; import { SessionQuery } from '../../shared/session/session.query'; -import { ContainersService } from '../../shared/swagger/api/containers.service'; -import { ContainertagsService } from '../../shared/swagger/api/containertags.service'; -import { DockstoreTool } from '../../shared/swagger/model/dockstoreTool'; -import { Tag } from '../../shared/swagger/model/tag'; -import { ToolDescriptor } from '../../shared/swagger/model/toolDescriptor'; +import { ContainersService } from '../../shared/openapi/api/containers.service'; +import { ContainertagsService } from '../../shared/openapi/api/containertags.service'; +import { DockstoreTool } from '../../shared/openapi/model/dockstoreTool'; +import { Tag } from '../../shared/openapi/model/tag'; +import { ToolDescriptor } from '../../shared/openapi/model/toolDescriptor'; import { ToolQuery } from '../../shared/tool/tool.query'; import { formErrors, validationDescriptorPatterns, validationMessages } from '../../shared/validationMessages.model'; import { ParamfilesService } from '../paramfiles/paramfiles.service'; @@ -143,7 +143,7 @@ export class VersionModalComponent extends Base implements OnInit, AfterViewChec const newCWL = this.unsavedCWLTestParameterFilePaths.filter((x) => !this.savedCWLTestParameterFilePaths.includes(x)); if (newCWL && newCWL.length > 0) { // Using the string 'CWL' because this parameter only accepts 'CWL' or 'WDL' and not 'NFL' - this.containersService.addTestParameterFiles(id, newCWL, 'CWL', tagName, null).subscribe( + this.containersService.addTestParameterFiles(id, newCWL, tagName, 'CWL', null).subscribe( (response) => {}, (err) => this.alertService.detailedError(err) ); @@ -159,7 +159,7 @@ export class VersionModalComponent extends Base implements OnInit, AfterViewChec const newWDL = this.unsavedWDLTestParameterFilePaths.filter((x) => !this.savedWDLTestParameterFilePaths.includes(x)); if (newWDL && newWDL.length > 0) { // Using the string 'WDL' because this parameter only accepts 'CWL' or 'WDL' and not 'NFL' - this.containersService.addTestParameterFiles(id, newWDL, 'WDL', tagName, null).subscribe( + this.containersService.addTestParameterFiles(id, newWDL, tagName, 'WDL', null).subscribe( (response) => {}, (err) => this.alertService.detailedError(err) ); diff --git a/src/app/container/version-modal/version-modal.service.ts b/src/app/container/version-modal/version-modal.service.ts index a583cfcb66..c1a61fe4b0 100644 --- a/src/app/container/version-modal/version-modal.service.ts +++ b/src/app/container/version-modal/version-modal.service.ts @@ -18,7 +18,7 @@ import { Injectable } from '@angular/core'; import { BehaviorSubject, Subject } from 'rxjs'; import { TagEditorMode } from '../../shared/enum/tagEditorMode.enum'; -import { Tag } from '../../shared/swagger'; +import { Tag } from '../../shared/openapi'; @Injectable() export class VersionModalService { diff --git a/src/app/container/versions/versions.component.ts b/src/app/container/versions/versions.component.ts index 07de05cf43..3ddc28999f 100644 --- a/src/app/container/versions/versions.component.ts +++ b/src/app/container/versions/versions.component.ts @@ -26,8 +26,8 @@ import { ExtendedDockstoreToolQuery } from '../../shared/extended-dockstoreTool/ import { ExtendedDockstoreTool } from '../../shared/models/ExtendedDockstoreTool'; import { VersionVerifiedPlatform } from '../../shared/openapi'; import { SessionQuery } from '../../shared/session/session.query'; -import { Tag } from '../../shared/swagger'; -import { DockstoreTool } from '../../shared/swagger/model/dockstoreTool'; +import { Tag } from '../../shared/openapi'; +import { DockstoreTool } from '../../shared/openapi/model/dockstoreTool'; import { Versions } from '../../shared/versions'; @Component({ diff --git a/src/app/container/view/view.component.ts b/src/app/container/view/view.component.ts index f870941be6..f1d1414c48 100644 --- a/src/app/container/view/view.component.ts +++ b/src/app/container/view/view.component.ts @@ -25,9 +25,9 @@ import { ContainerService } from '../../shared/container.service'; import { DateService } from '../../shared/date.service'; import { TagEditorMode } from '../../shared/enum/tagEditorMode.enum'; import { SessionQuery } from '../../shared/session/session.query'; -import { ContainertagsService } from '../../shared/swagger/api/containertags.service'; -import { HostedService } from '../../shared/swagger/api/hosted.service'; -import { DockstoreTool } from '../../shared/swagger/model/dockstoreTool'; +import { ContainertagsService } from '../../shared/openapi/api/containertags.service'; +import { HostedService } from '../../shared/openapi/api/hosted.service'; +import { DockstoreTool } from '../../shared/openapi/model/dockstoreTool'; import { ToolQuery } from '../../shared/tool/tool.query'; import { View } from '../../shared/view'; import { VersionModalComponent } from '../version-modal/version-modal.component'; @@ -75,12 +75,10 @@ export class ViewContainerComponent extends View implements OnInit { this.containertagsService.deleteTags(this.tool.id, this.version.id).subscribe( () => { this.alertService.simpleSuccess(); - this.containertagsService.getTagsByPath(this.tool.id).subscribe( - (response) => { - this.tool.workflowVersions = response; - this.containerService.setTool(this.tool); - } - ); + this.containertagsService.getTagsByPath(this.tool.id).subscribe((response) => { + this.tool.workflowVersions = response; + this.containerService.setTool(this.tool); + }); }, (error: HttpErrorResponse) => { this.alertService.detailedError(error); diff --git a/src/app/container/view/view.service.ts b/src/app/container/view/view.service.ts index b6dd113aca..183603fae2 100644 --- a/src/app/container/view/view.service.ts +++ b/src/app/container/view/view.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { AlertService } from 'app/shared/alert/state/alert.service'; import { ContainerService } from 'app/shared/container.service'; -import { ContainersService } from 'app/shared/swagger'; +import { ContainersService } from 'app/shared/openapi'; import { ToolQuery } from 'app/shared/tool/tool.query'; @Injectable({ @@ -18,7 +18,7 @@ export class ViewService { const toolId = this.toolQuery.getActive().id; const message = 'Updating default tool version'; this.alertService.start(message); - this.containersService.updateToolDefaultVersion(toolId, newDefaultVersion).subscribe( + this.containersService.updateDefaultVersion(toolId, newDefaultVersion).subscribe( (response) => { this.alertService.detailedSuccess(); this.containerService.replaceTool(response); diff --git a/src/app/containers/list/list.component.ts b/src/app/containers/list/list.component.ts index f13c8777af..e8f8c3fbc3 100644 --- a/src/app/containers/list/list.component.ts +++ b/src/app/containers/list/list.component.ts @@ -22,7 +22,7 @@ import { ImageProviderService } from '../../shared/image-provider.service'; import { ProviderService } from '../../shared/provider.service'; import { PaginatorQuery } from '../../shared/state/paginator.query'; import { PaginatorService } from '../../shared/state/paginator.service'; -import { ContainersService, DockstoreTool } from '../../shared/swagger'; +import { ContainersService, DockstoreTool } from '../../shared/openapi'; import { ToolLister } from '../../shared/tool-lister'; import { PublishedToolsDataSource } from './published-tools.datasource'; diff --git a/src/app/containers/list/published-tools.datasource.spec.ts b/src/app/containers/list/published-tools.datasource.spec.ts index f617b59ab4..eb8f1c3159 100644 --- a/src/app/containers/list/published-tools.datasource.spec.ts +++ b/src/app/containers/list/published-tools.datasource.spec.ts @@ -19,7 +19,7 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { inject, TestBed } from '@angular/core/testing'; import { ImageProviderService } from '../../shared/image-provider.service'; import { ProviderService } from '../../shared/provider.service'; -import { ContainersService } from '../../shared/swagger'; +import { ContainersService } from '../../shared/openapi'; import { ContainersStubService } from './../../test/service-stubs'; import { PublishedToolsDataSource } from './published-tools.datasource'; diff --git a/src/app/containers/list/published-tools.datasource.ts b/src/app/containers/list/published-tools.datasource.ts index a671adb425..5be419e92d 100644 --- a/src/app/containers/list/published-tools.datasource.ts +++ b/src/app/containers/list/published-tools.datasource.ts @@ -23,7 +23,7 @@ import { EntryType } from 'app/shared/enum/entry-type'; import { ImageProviderService } from '../../shared/image-provider.service'; import { ExtendedDockstoreTool } from '../../shared/models/ExtendedDockstoreTool'; import { ProviderService } from '../../shared/provider.service'; -import { ContainersService, DockstoreTool } from '../../shared/swagger'; +import { ContainersService, DockstoreTool } from '../../shared/openapi'; @Injectable() export class PublishedToolsDataSource implements DataSource { diff --git a/src/app/descriptor-languages/CWL.ts b/src/app/descriptor-languages/CWL.ts index cb265cf921..882de7e6d3 100644 --- a/src/app/descriptor-languages/CWL.ts +++ b/src/app/descriptor-languages/CWL.ts @@ -1,5 +1,5 @@ import { ExtendedDescriptorLanguageBean } from 'app/entry/extendedDescriptorLanguage'; -import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/swagger'; +import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/openapi'; export const extendedCWL: ExtendedDescriptorLanguageBean = { descriptorLanguageEnum: 'CWL', diff --git a/src/app/descriptor-languages/Galaxy.ts b/src/app/descriptor-languages/Galaxy.ts index ccd3383196..30ed242d46 100644 --- a/src/app/descriptor-languages/Galaxy.ts +++ b/src/app/descriptor-languages/Galaxy.ts @@ -1,8 +1,8 @@ import { ExtendedDescriptorLanguageBean } from 'app/entry/extendedDescriptorLanguage'; -import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/swagger'; +import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/openapi'; export const extendedGalaxy: ExtendedDescriptorLanguageBean = { - descriptorLanguageEnum: 'GXFORMAT2', + descriptorLanguageEnum: 'gxformat2', value: 'gxformat2', shortFriendlyName: 'Galaxy', friendlyName: 'Galaxy Workflow Format', diff --git a/src/app/descriptor-languages/Jupyter.ts b/src/app/descriptor-languages/Jupyter.ts index 98cba3d739..2841b182df 100644 --- a/src/app/descriptor-languages/Jupyter.ts +++ b/src/app/descriptor-languages/Jupyter.ts @@ -1,11 +1,11 @@ import { ExtendedDescriptorLanguageBean } from 'app/entry/extendedDescriptorLanguage'; -import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/swagger'; +import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/openapi'; import { Dockstore } from '../shared/dockstore.model'; const JUPYTER_DOCUMENTATION_URL = Dockstore.DOCUMENTATION_URL + '/getting-started/notebooks/notebooks.html'; export const extendedJupyter: ExtendedDescriptorLanguageBean = { - descriptorLanguageEnum: 'JUPYTER', + descriptorLanguageEnum: 'jupyter', value: 'jupyter', shortFriendlyName: 'Jupyter', friendlyName: 'Jupyter notebook', diff --git a/src/app/descriptor-languages/Nextflow.ts b/src/app/descriptor-languages/Nextflow.ts index 3a361f2c89..c40e73e591 100644 --- a/src/app/descriptor-languages/Nextflow.ts +++ b/src/app/descriptor-languages/Nextflow.ts @@ -1,8 +1,8 @@ import { ExtendedDescriptorLanguageBean } from 'app/entry/extendedDescriptorLanguage'; -import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/swagger'; +import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/openapi'; export const extendedNFL: ExtendedDescriptorLanguageBean = { - descriptorLanguageEnum: 'NEXTFLOW', + descriptorLanguageEnum: 'NFL', value: 'NFL', shortFriendlyName: 'Nextflow', friendlyName: 'Nextflow', diff --git a/src/app/descriptor-languages/Service.ts b/src/app/descriptor-languages/Service.ts index efdb71b9d7..3b135e1547 100644 --- a/src/app/descriptor-languages/Service.ts +++ b/src/app/descriptor-languages/Service.ts @@ -1,11 +1,11 @@ import { ExtendedDescriptorLanguageBean } from 'app/entry/extendedDescriptorLanguage'; -import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/swagger'; +import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/openapi'; import { Dockstore } from '../shared/dockstore.model'; const SERVICE_DOCUMENTATION_URL = Dockstore.DOCUMENTATION_URL + '/getting-started/getting-started-with-services.html'; export const extendedService: ExtendedDescriptorLanguageBean = { - descriptorLanguageEnum: 'SERVICE', + descriptorLanguageEnum: 'service', value: 'service', shortFriendlyName: 'Service', friendlyName: 'generic placeholder for services', diff --git a/src/app/descriptor-languages/Snakemake.ts b/src/app/descriptor-languages/Snakemake.ts index 572d5f86d6..3ea99ba7ec 100644 --- a/src/app/descriptor-languages/Snakemake.ts +++ b/src/app/descriptor-languages/Snakemake.ts @@ -1,5 +1,5 @@ import { ExtendedDescriptorLanguageBean } from 'app/entry/extendedDescriptorLanguage'; -import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/swagger'; +import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/openapi'; export const extendedSMK: ExtendedDescriptorLanguageBean = { descriptorLanguageEnum: 'SMK', diff --git a/src/app/descriptor-languages/WDL.ts b/src/app/descriptor-languages/WDL.ts index 265efa9590..ed3f0b1ffb 100644 --- a/src/app/descriptor-languages/WDL.ts +++ b/src/app/descriptor-languages/WDL.ts @@ -1,5 +1,5 @@ import { ExtendedDescriptorLanguageBean } from 'app/entry/extendedDescriptorLanguage'; -import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/swagger'; +import { SourceFile, ToolDescriptor, Workflow } from 'app/shared/openapi'; export const extendedWDL: ExtendedDescriptorLanguageBean = { descriptorLanguageEnum: 'WDL', diff --git a/src/app/entry/current-collections/current-collections.component.ts b/src/app/entry/current-collections/current-collections.component.ts index 41a1443da8..5d6e42f257 100644 --- a/src/app/entry/current-collections/current-collections.component.ts +++ b/src/app/entry/current-collections/current-collections.component.ts @@ -3,7 +3,7 @@ import { MatDialog } from '@angular/material/dialog'; import { ID } from '@datorama/akita'; import { Observable } from 'rxjs'; import { AddEntryComponent } from '../../organizations/collection/add-entry/add-entry.component'; -import { CollectionOrganization } from '../../shared/swagger'; +import { CollectionOrganization } from '../../shared/openapi'; import { TrackLoginService } from '../../shared/track-login.service'; import { CurrentCollectionsQuery } from '../state/current-collections.query'; import { CurrentCollectionsService } from '../state/current-collections.service'; diff --git a/src/app/entry/extendedDescriptorLanguage.ts b/src/app/entry/extendedDescriptorLanguage.ts index dbf0c4979d..20fa559ec1 100644 --- a/src/app/entry/extendedDescriptorLanguage.ts +++ b/src/app/entry/extendedDescriptorLanguage.ts @@ -2,10 +2,11 @@ import { extendedGalaxy } from 'app/descriptor-languages/Galaxy'; import { extendedNFL } from 'app/descriptor-languages/Nextflow'; import { extendedService } from 'app/descriptor-languages/Service'; import { extendedWDL } from 'app/descriptor-languages/WDL'; -import { DescriptorLanguageBean, SourceFile, ToolDescriptor, Workflow } from 'app/shared/swagger'; +import { DescriptorLanguageBean, LanguageParsingRequest, SourceFile, ToolDescriptor, Workflow } from 'app/shared/openapi'; import { extendedCWL } from '../descriptor-languages/CWL'; import { extendedSMK } from '../descriptor-languages/Snakemake'; import { extendedJupyter } from '../descriptor-languages/Jupyter'; +import DescriptorLanguageEnum = LanguageParsingRequest.DescriptorLanguageEnum; /** * The idea is that this file serves as a collection of language plugins. @@ -15,9 +16,6 @@ import { extendedJupyter } from '../descriptor-languages/Jupyter'; * TODO: Use the value property to map the DescriptorLanguageBean to this */ export interface ExtendedDescriptorLanguageBean extends DescriptorLanguageBean { - // There's supposed to be a DescriptorLanguage enum in the openapi.yaml, this is to replace it. - // If a new language is added to the DescriptorLanguage.java, then its toString() value should be added here - // For some reason the OpenAPI yaml shows DescriptorLanguage with uppercase and lowercase names, but the generated API uses all uppercase which still works descriptorLanguageEnum: DescriptorLanguageEnum; shortFriendlyName: string; defaultDescriptorPath: string; @@ -72,6 +70,4 @@ export const extendedDescriptorLanguages: ExtendedDescriptorLanguageBean[] = [ extendedJupyter, ]; -export type DescriptorLanguageEnum = 'SMK' | 'CWL' | 'WDL' | 'GXFORMAT2' | 'SWL' | 'NEXTFLOW' | 'SERVICE' | 'JUPYTER'; - export type PlainTRSDescriptorLanguageEnum = 'PLAIN_SMK' | 'PLAIN_CWL' | 'PLAIN_WDL' | 'PLAIN_GALAXY' | 'PLAIN_NFL' | 'PLAIN_JUPYTER'; diff --git a/src/app/entry/state/current-collections.query.ts b/src/app/entry/state/current-collections.query.ts index 1f08a8180b..48ef5918d8 100644 --- a/src/app/entry/state/current-collections.query.ts +++ b/src/app/entry/state/current-collections.query.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { QueryEntity } from '@datorama/akita'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { CollectionOrganization } from '../../shared/swagger'; +import { CollectionOrganization } from '../../shared/openapi'; import { CurrentCollectionsState, CurrentCollectionsStore } from './current-collections.store'; @Injectable({ diff --git a/src/app/entry/state/current-collections.service.ts b/src/app/entry/state/current-collections.service.ts index 1f5bf03f83..bd85b7ff06 100644 --- a/src/app/entry/state/current-collections.service.ts +++ b/src/app/entry/state/current-collections.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { ID, transaction } from '@datorama/akita'; -import { CollectionOrganization, EntriesService } from '../../shared/swagger'; +import { CollectionOrganization, EntriesService } from '../../shared/openapi'; import { CurrentCollectionsStore } from './current-collections.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/entry/state/current-collections.store.ts b/src/app/entry/state/current-collections.store.ts index 822616803f..d0c0154e4f 100644 --- a/src/app/entry/state/current-collections.store.ts +++ b/src/app/entry/state/current-collections.store.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { EntityState, EntityStore, StoreConfig } from '@datorama/akita'; -import { CollectionOrganization } from '../../shared/swagger'; +import { CollectionOrganization } from '../../shared/openapi'; export interface CurrentCollectionsState extends EntityState {} diff --git a/src/app/file-tree/file-tree.component.spec.ts b/src/app/file-tree/file-tree.component.spec.ts index 7f79bf24b1..f8e96508e4 100644 --- a/src/app/file-tree/file-tree.component.spec.ts +++ b/src/app/file-tree/file-tree.component.spec.ts @@ -4,7 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { MatIconModule } from '@angular/material/icon'; import { MatTreeModule } from '@angular/material/tree'; -import { SourceFile } from 'app/shared/swagger'; +import { SourceFile } from 'app/shared/openapi'; import { DescriptorLanguageService } from '../shared/entry/descriptor-language.service'; import { SourceFileTabsService } from '../source-file-tabs/source-file-tabs.service'; import { DescriptorLanguageStubService, SourceFileTabsStubService } from '../test/service-stubs'; diff --git a/src/app/file-tree/file-tree.component.ts b/src/app/file-tree/file-tree.component.ts index cb46f4529e..5802f266f9 100644 --- a/src/app/file-tree/file-tree.component.ts +++ b/src/app/file-tree/file-tree.component.ts @@ -2,7 +2,7 @@ import { Component, Inject } from '@angular/core'; import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree'; import { FlatTreeControl } from '@angular/cdk/tree'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; -import { SourceFile } from 'app/shared/swagger'; +import { SourceFile } from 'app/shared/openapi'; import { ToolDescriptor } from '../shared/openapi'; /** File node data with possible child nodes. */ diff --git a/src/app/home-page/home-logged-out/home.component.ts b/src/app/home-page/home-logged-out/home.component.ts index 6557e00775..c344177851 100644 --- a/src/app/home-page/home-logged-out/home.component.ts +++ b/src/app/home-page/home-logged-out/home.component.ts @@ -21,7 +21,7 @@ import { Base } from 'app/shared/base'; import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { Dockstore } from '../../shared/dockstore.model'; -import { User } from '../../shared/swagger/model/user'; +import { User } from '../../shared/openapi/model/user'; import { TwitterService } from '../../shared/twitter.service'; import { UserQuery } from '../../shared/user/user.query'; import { Category } from '../../shared/openapi'; diff --git a/src/app/home-page/widget/entry-box/entry-box.component.spec.ts b/src/app/home-page/widget/entry-box/entry-box.component.spec.ts index d63236c481..72dfe0d8f4 100644 --- a/src/app/home-page/widget/entry-box/entry-box.component.spec.ts +++ b/src/app/home-page/widget/entry-box/entry-box.component.spec.ts @@ -14,7 +14,7 @@ import { MyEntriesQuery } from 'app/shared/state/my-entries.query'; import { MyEntriesStateService } from 'app/shared/state/my-entries.service'; import { MyEntriesStore } from 'app/shared/state/my-entries.store'; import { WorkflowService } from 'app/shared/state/workflow.service'; -import { UsersService, WorkflowsService } from 'app/shared/swagger'; +import { UsersService, WorkflowsService } from 'app/shared/openapi'; import { UrlResolverService } from 'app/shared/url-resolver.service'; import { RegisterToolStubService, diff --git a/src/app/home-page/widget/news-updates/news-notifications.component.ts b/src/app/home-page/widget/news-updates/news-notifications.component.ts index 2b088df452..49da060f53 100644 --- a/src/app/home-page/widget/news-updates/news-notifications.component.ts +++ b/src/app/home-page/widget/news-updates/news-notifications.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; import { NotificationsService } from '../../../notifications/state/notifications.service'; -import { Notification } from '../../../shared/swagger'; +import { Notification } from '../../../shared/openapi'; @Component({ selector: 'app-news-notifications', diff --git a/src/app/loginComponents/accounts/account-sidebar/account-sidebar.component.spec.ts b/src/app/loginComponents/accounts/account-sidebar/account-sidebar.component.spec.ts index 2b0f4c4d1e..f49ca7c40b 100644 --- a/src/app/loginComponents/accounts/account-sidebar/account-sidebar.component.spec.ts +++ b/src/app/loginComponents/accounts/account-sidebar/account-sidebar.component.spec.ts @@ -5,7 +5,7 @@ import { CustomMaterialModule } from 'app/shared/modules/material.module'; import { FlexLayoutModule } from '@angular/flex-layout'; import { CommonModule } from '@angular/common'; import { MatTableModule } from '@angular/material/table'; -import { UsersService } from '../../../shared/swagger/api/users.service'; +import { UsersService } from '../../../shared/openapi/api/users.service'; import { UserService } from '../../../shared/user/user.service'; import { UsersStubService, UserStubService } from '../../../test/service-stubs'; import { GravatarService } from '../../../gravatar/gravatar.service'; diff --git a/src/app/loginComponents/accounts/account-sidebar/account-sidebar.component.ts b/src/app/loginComponents/accounts/account-sidebar/account-sidebar.component.ts index b54011a181..898b895a82 100644 --- a/src/app/loginComponents/accounts/account-sidebar/account-sidebar.component.ts +++ b/src/app/loginComponents/accounts/account-sidebar/account-sidebar.component.ts @@ -4,8 +4,8 @@ import { AlertQuery } from '../../../shared/alert/state/alert.query'; import { AlertService } from '../../../shared/alert/state/alert.service'; import { TokenSource } from '../../../shared/enum/token-source.enum'; import { TokenQuery } from '../../../shared/state/token.query'; -import { Profile, User } from '../../../shared/swagger'; -import { UsersService } from '../../../shared/swagger/api/users.service'; +import { Profile, User } from '../../../shared/openapi'; +import { UsersService } from '../../../shared/openapi/api/users.service'; import { UserQuery } from '../../../shared/user/user.query'; import { UserService } from '../../../shared/user/user.service'; import { MatDialog } from '@angular/material/dialog'; diff --git a/src/app/loginComponents/accounts/controls/controls.component.spec.ts b/src/app/loginComponents/accounts/controls/controls.component.spec.ts index cb9de1794a..3c9f0303a0 100644 --- a/src/app/loginComponents/accounts/controls/controls.component.spec.ts +++ b/src/app/loginComponents/accounts/controls/controls.component.spec.ts @@ -4,7 +4,7 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { CustomMaterialModule } from '../../../shared/modules/material.module'; import { RefreshService } from '../../../shared/refresh.service'; -import { UsersService } from '../../../shared/swagger'; +import { UsersService } from '../../../shared/openapi'; import { UserService } from '../../../shared/user/user.service'; import { RefreshStubService, UsersStubService, UserStubService } from '../../../test/service-stubs'; import { ChangeUsernameComponent } from '../internal/change-username/change-username.component'; diff --git a/src/app/loginComponents/accounts/controls/controls.component.ts b/src/app/loginComponents/accounts/controls/controls.component.ts index c2a7a125bd..24265ce5d0 100644 --- a/src/app/loginComponents/accounts/controls/controls.component.ts +++ b/src/app/loginComponents/accounts/controls/controls.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { Observable } from 'rxjs'; -import { UsersService } from '../../../shared/swagger'; +import { UsersService } from '../../../shared/openapi'; import { UserQuery } from '../../../shared/user/user.query'; import { UserService } from '../../../shared/user/user.service'; import { DeleteAccountDialogComponent } from './delete-account-dialog/delete-account-dialog.component'; diff --git a/src/app/loginComponents/accounts/controls/delete-account-dialog/delete-account-dialog.component.spec.ts b/src/app/loginComponents/accounts/controls/delete-account-dialog/delete-account-dialog.component.spec.ts index 50f005d637..9e84c19427 100644 --- a/src/app/loginComponents/accounts/controls/delete-account-dialog/delete-account-dialog.component.spec.ts +++ b/src/app/loginComponents/accounts/controls/delete-account-dialog/delete-account-dialog.component.spec.ts @@ -5,7 +5,7 @@ import { MatDialogRef } from '@angular/material/dialog'; import { NO_ERRORS_SCHEMA } from '@angular/core'; import { LogoutService } from '../../../../shared/logout.service'; import { CustomMaterialModule } from '../../../../shared/modules/material.module'; -import { UsersService } from '../../../../shared/swagger'; +import { UsersService } from '../../../../shared/openapi'; import { LogoutStubService, UsersStubService } from '../../../../test/service-stubs'; import { DeleteAccountDialogComponent } from './delete-account-dialog.component'; diff --git a/src/app/loginComponents/accounts/controls/delete-account-dialog/delete-account-dialog.component.ts b/src/app/loginComponents/accounts/controls/delete-account-dialog/delete-account-dialog.component.ts index 5ddf38abb3..3088c29cdb 100644 --- a/src/app/loginComponents/accounts/controls/delete-account-dialog/delete-account-dialog.component.ts +++ b/src/app/loginComponents/accounts/controls/delete-account-dialog/delete-account-dialog.component.ts @@ -7,7 +7,7 @@ import { Subject } from 'rxjs'; import { finalize, takeUntil } from 'rxjs/operators'; import { LogoutService } from '../../../../shared/logout.service'; -import { UsersService } from '../../../../shared/swagger'; +import { UsersService } from '../../../../shared/openapi'; import { UserQuery } from '../../../../shared/user/user.query'; @Component({ diff --git a/src/app/loginComponents/accounts/external/accounts.component.ts b/src/app/loginComponents/accounts/external/accounts.component.ts index de5bfdd7b8..16e15843c2 100644 --- a/src/app/loginComponents/accounts/external/accounts.component.ts +++ b/src/app/loginComponents/accounts/external/accounts.component.ts @@ -26,7 +26,7 @@ import { TokenService } from '../../../shared/state/token.service'; import { TrackLoginService } from '../../../shared/track-login.service'; import { UserQuery } from '../../../shared/user/user.query'; import { UserService } from '../../../shared/user/user.service'; -import { TokenUser } from './../../../shared/swagger/model/tokenUser'; +import { TokenUser } from './../../../shared/openapi/model/tokenUser'; import { AccountsService } from './accounts.service'; import { LogoutService } from '../../../shared/logout.service'; import { RevokeTokenDialogComponent } from './revoke-token-dialog/revoke-token-dialog.component'; diff --git a/src/app/loginComponents/accounts/external/getTokenUsername.pipe.spec.ts b/src/app/loginComponents/accounts/external/getTokenUsername.pipe.spec.ts index 17d20f39ac..739903f0ce 100644 --- a/src/app/loginComponents/accounts/external/getTokenUsername.pipe.spec.ts +++ b/src/app/loginComponents/accounts/external/getTokenUsername.pipe.spec.ts @@ -1,6 +1,6 @@ /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */ import { bitbucketToken, gitHubToken, gitLabToken, quayToken } from '../../../../app/test/mocked-objects'; -import { TokenUser } from '../../../shared/swagger'; +import { TokenUser } from '../../../shared/openapi'; import { GetTokenUsernamePipe } from './getTokenUsername.pipe'; describe('Pipe: GetTokenUsername', () => { diff --git a/src/app/loginComponents/accounts/external/getTokenUsername.pipe.ts b/src/app/loginComponents/accounts/external/getTokenUsername.pipe.ts index 64e35bf817..002bc34766 100644 --- a/src/app/loginComponents/accounts/external/getTokenUsername.pipe.ts +++ b/src/app/loginComponents/accounts/external/getTokenUsername.pipe.ts @@ -1,6 +1,6 @@ import { Pipe, PipeTransform } from '@angular/core'; -import { TokenUser } from './../../../shared/swagger/model/tokenUser'; +import { TokenUser } from './../../../shared/openapi/model/tokenUser'; @Pipe({ name: 'getTokenUsername', diff --git a/src/app/loginComponents/accounts/internal/change-username/change-username.component.spec.ts b/src/app/loginComponents/accounts/internal/change-username/change-username.component.spec.ts index 02cea8f739..608d89f163 100644 --- a/src/app/loginComponents/accounts/internal/change-username/change-username.component.spec.ts +++ b/src/app/loginComponents/accounts/internal/change-username/change-username.component.spec.ts @@ -10,7 +10,7 @@ import { MatTooltipModule } from '@angular/material/tooltip'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { RefreshService } from '../../../../shared/refresh.service'; -import { UsersService } from '../../../../shared/swagger/api/users.service'; +import { UsersService } from '../../../../shared/openapi/api/users.service'; import { UserService } from '../../../../shared/user/user.service'; import { RefreshStubService, UsersStubService, UserStubService } from '../../../../test/service-stubs'; import { ChangeUsernameComponent } from './change-username.component'; diff --git a/src/app/loginComponents/accounts/internal/change-username/change-username.component.ts b/src/app/loginComponents/accounts/internal/change-username/change-username.component.ts index ec5861a2a1..50733798c5 100644 --- a/src/app/loginComponents/accounts/internal/change-username/change-username.component.ts +++ b/src/app/loginComponents/accounts/internal/change-username/change-username.component.ts @@ -19,10 +19,10 @@ import { Observable, Subject } from 'rxjs'; import { debounceTime, finalize, takeUntil } from 'rxjs/operators'; import { formInputDebounceTime } from '../../../../shared/constants'; import { MyErrorStateMatcher } from '../../../../shared/error-state-matcher'; -import { User } from '../../../../shared/swagger/model/user'; +import { User } from '../../../../shared/openapi/model/user'; import { UserQuery } from '../../../../shared/user/user.query'; import { UserService } from '../../../../shared/user/user.service'; -import { UsersService } from './../../../../shared/swagger/api/users.service'; +import { UsersService } from './../../../../shared/openapi/api/users.service'; @Component({ selector: 'app-change-username', diff --git a/src/app/loginComponents/onboarding/downloadcliclient/downloadcliclient.component.spec.ts b/src/app/loginComponents/onboarding/downloadcliclient/downloadcliclient.component.spec.ts index e5ddb8bd0a..8eeaf1c6f5 100644 --- a/src/app/loginComponents/onboarding/downloadcliclient/downloadcliclient.component.spec.ts +++ b/src/app/loginComponents/onboarding/downloadcliclient/downloadcliclient.component.spec.ts @@ -8,7 +8,7 @@ import { MatIconModule } from '@angular/material/icon'; import { MatTabsModule } from '@angular/material/tabs'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { MarkdownModule } from 'ngx-markdown'; -import { MetadataService } from '../../../shared/swagger'; +import { MetadataService } from '../../../shared/openapi'; import { GA4GHV20Service } from './../../../shared/openapi'; import { ServiceInfoService } from '../../../service-info/service-info.service'; import { RouterLinkStubDirective, RouterOutletStubComponent } from './../../../test/router-stubs'; diff --git a/src/app/loginComponents/onboarding/downloadcliclient/downloadcliclient.component.ts b/src/app/loginComponents/onboarding/downloadcliclient/downloadcliclient.component.ts index 9c274b2dac..030771366a 100644 --- a/src/app/loginComponents/onboarding/downloadcliclient/downloadcliclient.component.ts +++ b/src/app/loginComponents/onboarding/downloadcliclient/downloadcliclient.component.ts @@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core'; import { AuthService } from 'ng2-ui-auth'; import { Dockstore } from '../../../shared/dockstore.model'; -import { MetadataService } from '../../../shared/swagger'; +import { MetadataService } from '../../../shared/openapi'; import { ServiceInfoService } from '../../../service-info/service-info.service'; import { TRSService } from 'app/shared/openapi'; import { AlertService } from './../../../shared/alert/state/alert.service'; diff --git a/src/app/loginComponents/onboarding/onboarding.component.ts b/src/app/loginComponents/onboarding/onboarding.component.ts index edc5578f18..edca9ef82f 100644 --- a/src/app/loginComponents/onboarding/onboarding.component.ts +++ b/src/app/loginComponents/onboarding/onboarding.component.ts @@ -3,7 +3,7 @@ import { combineLatest, Subject } from 'rxjs'; import { distinctUntilChanged, takeUntil } from 'rxjs/operators'; import { Dockstore } from '../../shared/dockstore.model'; import { TokenQuery } from '../../shared/state/token.query'; -import { ExtendedUserData, User } from '../../shared/swagger'; +import { ExtendedUserData, User } from '../../shared/openapi'; import { UserQuery } from '../../shared/user/user.query'; @Component({ diff --git a/src/app/loginComponents/requests/requests.component.ts b/src/app/loginComponents/requests/requests.component.ts index 17e962e5ce..08ea194b7e 100644 --- a/src/app/loginComponents/requests/requests.component.ts +++ b/src/app/loginComponents/requests/requests.component.ts @@ -6,7 +6,7 @@ import { ConfirmationDialogData } from '../../confirmation-dialog/confirmation-d import { ConfirmationDialogService } from '../../confirmation-dialog/confirmation-dialog.service'; import { Base } from '../../shared/base'; import { bootstrap4mediumModalSize } from '../../shared/constants'; -import { Organization, OrganizationUser } from '../../shared/swagger'; +import { Organization, OrganizationUser } from '../../shared/openapi'; import { UserQuery } from '../../shared/user/user.query'; import { RequestsQuery } from '../state/requests.query'; import { RequestsService } from '../state/requests.service'; diff --git a/src/app/loginComponents/state/requests.query.ts b/src/app/loginComponents/state/requests.query.ts index 37a4b3ba2c..82dc5df15c 100644 --- a/src/app/loginComponents/state/requests.query.ts +++ b/src/app/loginComponents/state/requests.query.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { QueryEntity } from '@datorama/akita'; import { Observable } from 'rxjs'; -import { Organization, OrganizationUser } from '../../shared/swagger'; +import { Organization, OrganizationUser } from '../../shared/openapi'; import { Request } from './request.model'; import { RequestsState, RequestsStore } from './requests.store'; diff --git a/src/app/loginComponents/state/requests.service.ts b/src/app/loginComponents/state/requests.service.ts index dfa6f4a2cf..c684bf018e 100644 --- a/src/app/loginComponents/state/requests.service.ts +++ b/src/app/loginComponents/state/requests.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { finalize } from 'rxjs/operators'; import { AlertService } from '../../shared/alert/state/alert.service'; import { OrganizationsService as openapiOrganizationsService } from '../../shared/openapi'; -import { Organization, OrganizationsService, OrganizationUser, User, UsersService } from '../../shared/swagger'; +import { Organization, OrganizationsService, OrganizationUser, User, UsersService } from '../../shared/openapi'; import { RequestsState, RequestsStore } from './requests.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/loginComponents/state/requests.store.ts b/src/app/loginComponents/state/requests.store.ts index e0ae966f37..7ddbe3614c 100644 --- a/src/app/loginComponents/state/requests.store.ts +++ b/src/app/loginComponents/state/requests.store.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { EntityState, EntityStore, StoreConfig } from '@datorama/akita'; -import { Organization, OrganizationUser } from '../../shared/swagger'; +import { Organization, OrganizationUser } from '../../shared/openapi'; import { Request } from './request.model'; export interface RequestsState extends EntityState { diff --git a/src/app/mytools/my-tool/my-tool.component.ts b/src/app/mytools/my-tool/my-tool.component.ts index ed8637fad9..7de964b48d 100644 --- a/src/app/mytools/my-tool/my-tool.component.ts +++ b/src/app/mytools/my-tool/my-tool.component.ts @@ -38,8 +38,8 @@ import { TokenQuery } from '../../shared/state/token.query'; import { TokenService } from '../../shared/state/token.service'; import { WorkflowQuery } from '../../shared/state/workflow.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { AppTool, DockstoreTool, Workflow } from '../../shared/swagger'; -import { Configuration } from '../../shared/swagger/configuration'; +import { AppTool, DockstoreTool, Workflow } from '../../shared/openapi'; +import { Configuration } from '../../shared/openapi/configuration'; import { ToolQuery } from '../../shared/tool/tool.query'; import { UrlResolverService } from '../../shared/url-resolver.service'; import { UserQuery } from '../../shared/user/user.query'; diff --git a/src/app/mytools/mytools.service.spec.ts b/src/app/mytools/mytools.service.spec.ts index 162a369327..a44cde1f35 100644 --- a/src/app/mytools/mytools.service.spec.ts +++ b/src/app/mytools/mytools.service.spec.ts @@ -22,7 +22,7 @@ import { CustomMaterialModule } from 'app/shared/modules/material.module'; import { MyEntriesModule } from 'app/shared/modules/my-entries.module'; import { UrlResolverService } from 'app/shared/url-resolver.service'; import { ContainerStubService, WorkflowsStubService } from 'app/test/service-stubs'; -import { DockstoreTool, Workflow, WorkflowsService } from '../shared/swagger'; +import { DockstoreTool, Workflow, WorkflowsService } from '../shared/openapi'; import { OrgToolObject } from './my-tool/my-tool.component'; import { MytoolsService } from './mytools.service'; import { DateService } from '../shared/date.service'; @@ -135,6 +135,7 @@ describe('MytoolsService', () => { }; const gitHubAppTool1: Workflow = { + type: '', defaultTestParameterFilePath: '', descriptorType: null, gitUrl: '', @@ -146,9 +147,10 @@ describe('MytoolsService', () => { path: 'github.com/cc/aa', full_workflow_path: 'github.com/cc/aa', source_control_provider: 'GITHUB', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const gitHubAppTool2: Workflow = { + type: '', defaultTestParameterFilePath: '', descriptorType: null, gitUrl: '', @@ -160,10 +162,11 @@ describe('MytoolsService', () => { path: 'github.com/cc/bb', full_workflow_path: 'github.com/cc/bb', source_control_provider: 'GITHUB', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const gitHubAppTool3: Workflow = { + type: '', defaultTestParameterFilePath: '', descriptorType: null, gitUrl: '', @@ -175,9 +178,10 @@ describe('MytoolsService', () => { path: 'github.com/bb/cc', full_workflow_path: 'github.com/bb/cc', source_control_provider: 'GITHUB', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const gitHubAppTool4: Workflow = { + type: '', defaultTestParameterFilePath: '', descriptorType: null, gitUrl: '', @@ -189,9 +193,10 @@ describe('MytoolsService', () => { path: 'github.com/bb/dd', full_workflow_path: 'github.com/bb/dd', source_control_provider: 'GITHUB', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const gitHubAppTool5: Workflow = { + type: '', defaultTestParameterFilePath: '', descriptorType: null, gitUrl: '', @@ -203,9 +208,10 @@ describe('MytoolsService', () => { path: 'github.com/aa/ee', full_workflow_path: 'github.com/aa/ee', source_control_provider: 'GITHUB', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const gitHubAppTool6: Workflow = { + type: '', defaultTestParameterFilePath: '', descriptorType: null, gitUrl: '', @@ -217,7 +223,7 @@ describe('MytoolsService', () => { path: 'github.com/aa/ee', full_workflow_path: 'github.com/aa/ee', source_control_provider: 'GITHUB', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const tools: DockstoreTool[] = [tool1, tool2, tool4, tool3, tool5, tool6]; diff --git a/src/app/mytools/mytools.service.ts b/src/app/mytools/mytools.service.ts index 5dcbd42298..edf9c4a77e 100644 --- a/src/app/mytools/mytools.service.ts +++ b/src/app/mytools/mytools.service.ts @@ -22,7 +22,7 @@ import { includesAuthors, includesValidation } from 'app/shared/constants'; import { ContainerService } from 'app/shared/container.service'; import { EntryType } from 'app/shared/enum/entry-type'; import { MyEntriesStateService } from 'app/shared/state/my-entries.service'; -import { AppTool, ContainersService, DockstoreTool, UsersService, Workflow, WorkflowsService } from 'app/shared/swagger'; +import { AppTool, ContainersService, DockstoreTool, UsersService, Workflow, WorkflowsService } from 'app/shared/openapi'; import { UrlResolverService } from 'app/shared/url-resolver.service'; import { forkJoin } from 'rxjs'; import { finalize } from 'rxjs/operators'; diff --git a/src/app/mytools/sidebar-accordion/sidebar-accordion.component.ts b/src/app/mytools/sidebar-accordion/sidebar-accordion.component.ts index e7ac98aa51..0838171fc1 100644 --- a/src/app/mytools/sidebar-accordion/sidebar-accordion.component.ts +++ b/src/app/mytools/sidebar-accordion/sidebar-accordion.component.ts @@ -1,10 +1,10 @@ import { Component, Input, OnInit, OnChanges, SimpleChanges } from '@angular/core'; -import { DockstoreTool } from 'app/shared/swagger'; +import { DockstoreTool } from 'app/shared/openapi'; import { Observable } from 'rxjs'; import { ToolQuery } from '../../shared/tool/tool.query'; import { OrgToolObject } from '../my-tool/my-tool.component'; import { KeyValue } from '@angular/common'; -import { MetadataService } from '../../shared/swagger/api/metadata.service'; +import { MetadataService } from '../../shared/openapi/api/metadata.service'; import { WorkflowQuery } from 'app/shared/state/workflow.query'; interface GroupEntriesByRegistry { diff --git a/src/app/myworkflows/my-workflow/my-workflow.component.spec.ts b/src/app/myworkflows/my-workflow/my-workflow.component.spec.ts index d1622266d8..60af420a49 100644 --- a/src/app/myworkflows/my-workflow/my-workflow.component.spec.ts +++ b/src/app/myworkflows/my-workflow/my-workflow.component.spec.ts @@ -27,9 +27,9 @@ import { MyEntriesModule } from '../../shared/modules/my-entries.module'; import { RefreshService } from '../../shared/refresh.service'; import { TokenQuery } from '../../shared/state/token.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { UsersService } from '../../shared/swagger/api/users.service'; -import { WorkflowsService } from '../../shared/swagger/api/workflows.service'; -import { Configuration } from '../../shared/swagger/configuration'; +import { UsersService } from '../../shared/openapi/api/users.service'; +import { WorkflowsService } from '../../shared/openapi/api/workflows.service'; +import { Configuration } from '../../shared/openapi/configuration'; import { UrlResolverService } from '../../shared/url-resolver.service'; import { UserQuery } from '../../shared/user/user.query'; import { RouterLinkStubDirective } from '../../test'; @@ -51,7 +51,7 @@ import { RegisterWorkflowModalService } from '../../workflow/register-workflow-m import { MyWorkflowsService } from '../myworkflows.service'; import { MyWorkflowComponent } from './my-workflow.component'; import { DescriptorLanguageService } from '../../shared/entry/descriptor-language.service'; -import { MetadataService } from '../../shared/swagger'; +import { MetadataService } from '../../shared/openapi'; describe('MyWorkflowsComponent', () => { let component: MyWorkflowComponent; diff --git a/src/app/myworkflows/my-workflow/my-workflow.component.ts b/src/app/myworkflows/my-workflow/my-workflow.component.ts index b72de548b6..aa9fda32ea 100644 --- a/src/app/myworkflows/my-workflow/my-workflow.component.ts +++ b/src/app/myworkflows/my-workflow/my-workflow.component.ts @@ -24,8 +24,8 @@ import { SessionService } from 'app/shared/session/session.service'; import { MyEntriesQuery } from 'app/shared/state/my-entries.query'; import { MyEntriesStateService } from 'app/shared/state/my-entries.service'; import { TokenService } from 'app/shared/state/token.service'; -import { BioWorkflow } from 'app/shared/swagger/model/bioWorkflow'; -import { Service } from 'app/shared/swagger/model/service'; +import { BioWorkflow } from 'app/shared/openapi/model/bioWorkflow'; +import { Service } from 'app/shared/openapi/model/service'; import { UserService } from 'app/shared/user/user.service'; import { AuthService } from 'ng2-ui-auth'; import { combineLatest, Observable } from 'rxjs'; @@ -36,8 +36,8 @@ import { MyEntry, OrgEntryObject } from '../../shared/my-entry'; import { TokenQuery } from '../../shared/state/token.query'; import { WorkflowQuery } from '../../shared/state/workflow.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { DockstoreTool, Workflow } from '../../shared/swagger'; -import { Configuration } from '../../shared/swagger/configuration'; +import { DockstoreTool, Workflow } from '../../shared/openapi'; +import { Configuration } from '../../shared/openapi/configuration'; import { UrlResolverService } from '../../shared/url-resolver.service'; import { UserQuery } from '../../shared/user/user.query'; import { RegisterWorkflowModalService } from '../../workflow/register-workflow-modal/register-workflow-modal.service'; diff --git a/src/app/myworkflows/myworkflows.service.spec.ts b/src/app/myworkflows/myworkflows.service.spec.ts index d54785debf..b752cc9278 100644 --- a/src/app/myworkflows/myworkflows.service.spec.ts +++ b/src/app/myworkflows/myworkflows.service.spec.ts @@ -19,15 +19,16 @@ import { RouterTestingModule } from '@angular/router/testing'; import { CustomMaterialModule } from 'app/shared/modules/material.module'; import { MyEntriesModule } from 'app/shared/modules/my-entries.module'; import { WorkflowService } from 'app/shared/state/workflow.service'; -import { UsersService, WorkflowsService } from 'app/shared/swagger'; +import { UsersService, WorkflowsService } from 'app/shared/openapi'; import { UrlResolverService } from 'app/shared/url-resolver.service'; import { UrlResolverStubService, UsersStubService, WorkflowsStubService, WorkflowStubService } from 'app/test/service-stubs'; -import { Workflow } from './../shared/swagger/model/workflow'; +import { Workflow } from './../shared/openapi/model/workflow'; import { OrgWorkflowObject } from './my-workflow/my-workflow.component'; import { MyWorkflowsService } from './myworkflows.service'; describe('MyWorkflowsService', () => { const tool1: Workflow = { + type: '', defaultTestParameterFilePath: '', descriptorType: null, gitUrl: '', @@ -39,9 +40,10 @@ describe('MyWorkflowsService', () => { path: 'github.com/cc/aa', full_workflow_path: 'github.com/cc/aa', source_control_provider: 'GITHUB', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const tool2: Workflow = { + type: '', defaultTestParameterFilePath: '', descriptorType: null, gitUrl: '', @@ -53,9 +55,10 @@ describe('MyWorkflowsService', () => { path: 'github.com/cc/bb', full_workflow_path: 'github.com/cc/bb', source_control_provider: 'GITHUB', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const tool3: Workflow = { + type: '', defaultTestParameterFilePath: '', descriptorType: null, gitUrl: '', @@ -67,9 +70,10 @@ describe('MyWorkflowsService', () => { path: 'github.com/bb/cc', full_workflow_path: 'github.com/bb/cc', source_control_provider: 'GITHUB', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const tool4: Workflow = { + type: '', defaultTestParameterFilePath: '', descriptorType: null, gitUrl: '', @@ -81,9 +85,10 @@ describe('MyWorkflowsService', () => { path: 'github.com/bb/dd', full_workflow_path: 'github.com/bb/dd', source_control_provider: 'GITHUB', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const tool5: Workflow = { + type: '', defaultTestParameterFilePath: '', descriptorType: null, gitUrl: '', @@ -95,9 +100,10 @@ describe('MyWorkflowsService', () => { path: 'github.com/aa/ee', full_workflow_path: 'github.com/aa/ee', source_control_provider: 'GITHUB', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const tool6: Workflow = { + type: '', defaultTestParameterFilePath: '', descriptorType: null, gitUrl: '', @@ -109,7 +115,7 @@ describe('MyWorkflowsService', () => { path: 'github.com/aa/ee', full_workflow_path: 'github.com/aa/ee', source_control_provider: 'GITHUB', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const tools: Workflow[] = [tool1, tool2, tool4, tool3, tool5, tool6]; const expectedResult1: OrgWorkflowObject = { diff --git a/src/app/myworkflows/myworkflows.service.ts b/src/app/myworkflows/myworkflows.service.ts index b2d4872980..afbe4d6c2d 100644 --- a/src/app/myworkflows/myworkflows.service.ts +++ b/src/app/myworkflows/myworkflows.service.ts @@ -25,7 +25,7 @@ import { MyEntriesService } from 'app/shared/myentries.service'; import { SessionQuery } from 'app/shared/session/session.query'; import { MyEntriesStateService } from 'app/shared/state/my-entries.service'; import { WorkflowService } from 'app/shared/state/workflow.service'; -import { BioWorkflow, DockstoreTool, SharedWorkflows, UsersService, Workflow, WorkflowsService } from 'app/shared/swagger'; +import { BioWorkflow, DockstoreTool, SharedWorkflows, UsersService, Workflow, WorkflowsService } from 'app/shared/openapi'; import { UrlResolverService } from 'app/shared/url-resolver.service'; import { UserQuery } from 'app/shared/user/user.query'; import { RegisterWorkflowModalComponent } from 'app/workflow/register-workflow-modal/register-workflow-modal.component'; diff --git a/src/app/myworkflows/sidebar-accordion/sidebar-accordion.component.ts b/src/app/myworkflows/sidebar-accordion/sidebar-accordion.component.ts index 03c5606f30..8dfa522252 100644 --- a/src/app/myworkflows/sidebar-accordion/sidebar-accordion.component.ts +++ b/src/app/myworkflows/sidebar-accordion/sidebar-accordion.component.ts @@ -20,13 +20,13 @@ import { AlertQuery } from 'app/shared/alert/state/alert.query'; import { bootstrap4largeModalSize } from 'app/shared/constants'; import { EntryType } from 'app/shared/enum/entry-type'; import { SessionQuery } from 'app/shared/session/session.query'; -import { Workflow } from 'app/shared/swagger'; +import { Workflow } from 'app/shared/openapi'; import { Observable } from 'rxjs'; import { WorkflowQuery } from '../../shared/state/workflow.query'; import { OrgWorkflowObject } from '../my-workflow/my-workflow.component'; import { GithubAppsLogsComponent } from './github-apps-logs/github-apps-logs.component'; import { KeyValue } from '@angular/common'; -import { MetadataService } from '../../shared/swagger/api/metadata.service'; +import { MetadataService } from '../../shared/openapi/api/metadata.service'; interface GroupEntriesBySource { groupEntryInfo: OrgWorkflowObject[]; diff --git a/src/app/navbar/navbar.component.ts b/src/app/navbar/navbar.component.ts index 8003ff5f2c..70af820893 100644 --- a/src/app/navbar/navbar.component.ts +++ b/src/app/navbar/navbar.component.ts @@ -25,9 +25,9 @@ import { UserQuery } from '../shared/user/user.query'; import { LogoutService } from './../shared/logout.service'; import { PageInfo } from './../shared/models/PageInfo'; import { PagenumberService } from './../shared/pagenumber.service'; -import { User } from './../shared/swagger/model/user'; +import { User } from './../shared/openapi/model/user'; import { TrackLoginService } from './../shared/track-login.service'; -import { Organization, OrganizationUser } from '../shared/swagger'; +import { Organization, OrganizationUser } from '../shared/openapi'; import { RequestsQuery } from '../loginComponents/state/requests.query'; import { RequestsService } from '../loginComponents/state/requests.service'; diff --git a/src/app/notifications/sitewide-notifications.component.ts b/src/app/notifications/sitewide-notifications.component.ts index b556fed8a1..a3f559f87a 100644 --- a/src/app/notifications/sitewide-notifications.component.ts +++ b/src/app/notifications/sitewide-notifications.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; -import { Notification } from '../shared/swagger/model/notification'; +import { Notification } from '../shared/openapi/model/notification'; import { NotificationsService } from './state/notifications.service'; @Component({ diff --git a/src/app/notifications/state/notifications.query.ts b/src/app/notifications/state/notifications.query.ts index 7414a01740..b0faf82c1f 100644 --- a/src/app/notifications/state/notifications.query.ts +++ b/src/app/notifications/state/notifications.query.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { Order, QueryEntity } from '@datorama/akita'; import { Observable } from 'rxjs'; -import { Notification } from '../../shared/swagger/model/notification'; +import { Notification } from '../../shared/openapi/model/notification'; import { NotificationsState, NotificationsStore } from './notifications.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/notifications/state/notifications.service.ts b/src/app/notifications/state/notifications.service.ts index 1642dcd952..699337af69 100644 --- a/src/app/notifications/state/notifications.service.ts +++ b/src/app/notifications/state/notifications.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { ID, Order } from '@datorama/akita'; -import { CurationService } from '../../shared/swagger/api/curation.service'; -import { Notification } from '../../shared/swagger/model/notification'; +import { CurationService } from '../../shared/openapi/api/curation.service'; +import { Notification } from '../../shared/openapi/model/notification'; import { NotificationsStore } from './notifications.store'; import { NotificationsQuery } from '../../notifications/state/notifications.query'; import { Observable } from 'rxjs'; diff --git a/src/app/notifications/state/notifications.store.ts b/src/app/notifications/state/notifications.store.ts index 4f5394df18..0d2bf0c970 100644 --- a/src/app/notifications/state/notifications.store.ts +++ b/src/app/notifications/state/notifications.store.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { EntityState, EntityStore, StoreConfig } from '@datorama/akita'; -import { Notification } from '../../shared/swagger/model/notification'; +import { Notification } from '../../shared/openapi/model/notification'; export interface NotificationsState extends EntityState {} diff --git a/src/app/organizations/collection/add-entry/add-entry.component.ts b/src/app/organizations/collection/add-entry/add-entry.component.ts index 0adeb87425..b4f89af2e8 100644 --- a/src/app/organizations/collection/add-entry/add-entry.component.ts +++ b/src/app/organizations/collection/add-entry/add-entry.component.ts @@ -1,7 +1,7 @@ import { Component, Inject, OnInit } from '@angular/core'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { Observable } from 'rxjs'; -import { Collection, OrganizationUser } from '../../../shared/swagger'; +import { Collection, OrganizationUser } from '../../../shared/openapi'; import { AddEntryQuery } from '../state/add-entry.query'; import { AddEntryService } from '../state/add-entry.service'; diff --git a/src/app/organizations/collection/collection.component.ts b/src/app/organizations/collection/collection.component.ts index 14e7daa8de..e13a26aa92 100644 --- a/src/app/organizations/collection/collection.component.ts +++ b/src/app/organizations/collection/collection.component.ts @@ -5,10 +5,10 @@ import { bootstrap4mediumModalSize } from '../../shared/constants'; import { Dockstore } from '../../shared/dockstore.model'; import { TagEditorMode } from '../../shared/enum/tagEditorMode.enum'; import { OrgLogoService } from '../../shared/org-logo.service'; -import { Collection, Organization } from '../../shared/swagger'; -import { Collection as OpenAPICollection, OrganizationsService } from '../../shared/openapi'; -import { ToolDescriptor } from '../../shared/swagger/model/toolDescriptor'; -import { Workflow } from '../../shared/swagger/model/workflow'; +import { Collection as OpenAPICollection, Organization, OrganizationsService } from '../../shared/openapi'; +import { ToolDescriptor } from '../../shared/openapi/model/toolDescriptor'; +import { Workflow } from '../../shared/openapi/model/workflow'; +import { Collection } from '../../shared/swagger'; import { UserQuery } from '../../shared/user/user.query'; import { ActivatedRoute } from '../../test'; import { CreateCollectionComponent } from '../collections/create-collection/create-collection.component'; diff --git a/src/app/organizations/collection/state/add-entry.query.ts b/src/app/organizations/collection/state/add-entry.query.ts index 4d0d8d71d7..6e107a19f8 100644 --- a/src/app/organizations/collection/state/add-entry.query.ts +++ b/src/app/organizations/collection/state/add-entry.query.ts @@ -3,7 +3,7 @@ import { Query } from '@datorama/akita'; import { combineLatest, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { CurrentCollectionsQuery } from '../../../entry/state/current-collections.query'; -import { Collection, OrganizationUser } from '../../../shared/swagger'; +import { Collection, OrganizationUser } from '../../../shared/openapi'; import { AddEntryState, AddEntryStore } from './add-entry.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/organizations/collection/state/add-entry.service.ts b/src/app/organizations/collection/state/add-entry.service.ts index e381a5a5f3..d5990efca1 100644 --- a/src/app/organizations/collection/state/add-entry.service.ts +++ b/src/app/organizations/collection/state/add-entry.service.ts @@ -3,7 +3,7 @@ import { Injectable } from '@angular/core'; import { finalize } from 'rxjs/operators'; import { CurrentCollectionsService } from '../../../entry/state/current-collections.service'; import { AlertService } from '../../../shared/alert/state/alert.service'; -import { Collection, OrganizationsService, OrganizationUser, UsersService } from '../../../shared/swagger'; +import { Collection, OrganizationsService, OrganizationUser, UsersService } from '../../../shared/openapi'; import { AddEntryState, AddEntryStore } from './add-entry.store'; import { EntryCategoriesService } from '../../../categories/state/entry-categories.service'; @@ -67,7 +67,7 @@ export class AddEntryService { updateCollections(orgId: number): void { this.beforeCall(); this.organizationsService - .getCollectionsFromOrganization(orgId) + .getCollectionsFromOrganization(orgId, '') .pipe(finalize(() => this.addEntryStore.setLoading(false))) .subscribe( (collections: Array) => { diff --git a/src/app/organizations/collection/state/add-entry.store.ts b/src/app/organizations/collection/state/add-entry.store.ts index 776dd3db47..269271c9f9 100644 --- a/src/app/organizations/collection/state/add-entry.store.ts +++ b/src/app/organizations/collection/state/add-entry.store.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { Store, StoreConfig } from '@datorama/akita'; -import { Collection, OrganizationUser } from '../../../shared/swagger'; +import { Collection, OrganizationUser } from '../../../shared/openapi'; export interface AddEntryState { memberships: Array; diff --git a/src/app/organizations/collections/state/create-collection.service.spec.ts b/src/app/organizations/collections/state/create-collection.service.spec.ts index 7f79537a36..519923976f 100644 --- a/src/app/organizations/collections/state/create-collection.service.spec.ts +++ b/src/app/organizations/collections/state/create-collection.service.spec.ts @@ -20,7 +20,7 @@ import { MatDialog, MatDialogModule } from '@angular/material/dialog'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { of as observableOf, throwError } from 'rxjs'; -import { OrganizationsService } from '../../../shared/swagger'; +import { OrganizationsService } from '../../../shared/openapi'; import { CollectionsService } from '../../state/collections.service'; import { OrganizationQuery } from '../../state/organization.query'; import { CreateCollectionService } from './create-collection.service'; diff --git a/src/app/organizations/collections/state/create-collection.service.ts b/src/app/organizations/collections/state/create-collection.service.ts index 739181bc24..7e2f52ff7a 100644 --- a/src/app/organizations/collections/state/create-collection.service.ts +++ b/src/app/organizations/collections/state/create-collection.service.ts @@ -6,8 +6,7 @@ import { NgFormsManager } from '@ngneat/forms-manager'; import { finalize } from 'rxjs/operators'; import { AlertService } from '../../../shared/alert/state/alert.service'; import { TagEditorMode } from '../../../shared/enum/tagEditorMode.enum'; -import { OrganizationsService } from '../../../shared/swagger'; -import { Collection } from '../../../shared/openapi'; +import { Collection, OrganizationsService } from '../../../shared/openapi'; import { CollectionsService } from '../../state/collections.service'; import { OrganizationQuery } from '../../state/organization.query'; import { CreateCollectionStore } from './create-collection.store'; diff --git a/src/app/organizations/events/events.component.ts b/src/app/organizations/events/events.component.ts index c40eadf760..d544691695 100644 --- a/src/app/organizations/events/events.component.ts +++ b/src/app/organizations/events/events.component.ts @@ -1,6 +1,6 @@ import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core'; import { Observable } from 'rxjs'; -import { Event } from '../../shared/swagger'; +import { Event } from '../../shared/openapi'; import { EventsQuery } from '../state/events.query'; import { EventsService } from '../state/events.service'; diff --git a/src/app/organizations/organization-members/organization-members.component.ts b/src/app/organizations/organization-members/organization-members.component.ts index 32e100ca01..d9a8a77ff0 100644 --- a/src/app/organizations/organization-members/organization-members.component.ts +++ b/src/app/organizations/organization-members/organization-members.component.ts @@ -23,7 +23,7 @@ import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { AlertService } from '../../shared/alert/state/alert.service'; import { TagEditorMode } from '../../shared/enum/tagEditorMode.enum'; -import { OrganizationUser } from '../../shared/swagger'; +import { OrganizationUser } from '../../shared/openapi'; import { UserQuery } from '../../shared/user/user.query'; import { OrganizationMembersQuery } from '../state/organization-members.query'; import { OrganizationMembersService } from '../state/organization-members.service'; @@ -96,7 +96,7 @@ export class OrganizationMembersComponent extends Base implements OnInit { username: organizationUser.user.username, role: organizationUser.role, title: 'Resend Invitation', - descriptionPrefix: `Resend an invitation to the user ${organizationUser.user.username} + descriptionPrefix: `Resend an invitation to the user ${organizationUser.user.username} who rejected the invitation to the organization ${organizationUser.organization.displayName}. You may optionally edit the role.`, confirmationButtonText: 'Resend Invitation', }; @@ -146,7 +146,7 @@ export class OrganizationMembersComponent extends Base implements OnInit { title: 'Delete Invitation', message: `The member has a ${organizationUser.status.toLowerCase()} invitation to the organization ${ organizationUser.organization.displayName - }. + }. Are you sure you want to delete the invitation to the member ${organizationUser.user.username}?`, cancelButtonText: 'Cancel', confirmationButtonText: 'Delete Invitation', diff --git a/src/app/organizations/organization/organization-stargazers/organization-stargazers.component.ts b/src/app/organizations/organization/organization-stargazers/organization-stargazers.component.ts index 7d2d636f0e..aa519a5ca7 100644 --- a/src/app/organizations/organization/organization-stargazers/organization-stargazers.component.ts +++ b/src/app/organizations/organization/organization-stargazers/organization-stargazers.component.ts @@ -18,7 +18,7 @@ import { takeUntil } from 'rxjs/operators'; import { Base } from '../../../shared/base'; import { StarOrganizationService } from '../../../shared/star-organization.service'; -import { User } from '../../../shared/swagger'; +import { User } from '../../../shared/openapi'; import { UserService } from '../../../shared/user/user.service'; import { OrganizationStarringService } from '../organization-starring/organization-starring.service'; diff --git a/src/app/organizations/organization/organization-starring/organization-starring.component.ts b/src/app/organizations/organization/organization-starring/organization-starring.component.ts index d26074eff0..6632dc27de 100644 --- a/src/app/organizations/organization/organization-starring/organization-starring.component.ts +++ b/src/app/organizations/organization/organization-starring/organization-starring.component.ts @@ -21,7 +21,7 @@ import { AlertService } from '../../../shared/alert/state/alert.service'; import { Base } from '../../../shared/base'; import { StarOrganizationService } from '../../../shared/star-organization.service'; import { isStarredByUser } from '../../../shared/starring'; -import { Organization, User } from '../../../shared/swagger'; +import { Organization, User } from '../../../shared/openapi'; import { TrackLoginService } from '../../../shared/track-login.service'; import { UserQuery } from '../../../shared/user/user.query'; import { OrganizationStarringService } from './organization-starring.service'; diff --git a/src/app/organizations/organization/organization-starring/organization-starring.service.spec.ts b/src/app/organizations/organization/organization-starring/organization-starring.service.spec.ts index 390478ff4a..599d9713c8 100644 --- a/src/app/organizations/organization/organization-starring/organization-starring.service.spec.ts +++ b/src/app/organizations/organization/organization-starring/organization-starring.service.spec.ts @@ -1,7 +1,7 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { inject, TestBed } from '@angular/core/testing'; import { RequestsService } from '../../../loginComponents/state/requests.service'; -import { OrganizationsService, UsersService } from '../../../shared/swagger'; +import { OrganizationsService, UsersService } from '../../../shared/openapi'; import { OrganizationsStubService, UsersStubService } from '../../../test/service-stubs'; import { OrganizationStarringService } from './organization-starring.service'; diff --git a/src/app/organizations/organization/organization-starring/organization-starring.service.ts b/src/app/organizations/organization/organization-starring/organization-starring.service.ts index f02f5ac36a..be26ff49fa 100644 --- a/src/app/organizations/organization/organization-starring/organization-starring.service.ts +++ b/src/app/organizations/organization/organization-starring/organization-starring.service.ts @@ -17,7 +17,7 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { Organization, User, OrganizationsService, UsersService, StarRequest } from '../../../shared/swagger'; +import { Organization, User, OrganizationsService, UsersService, StarRequest } from '../../../shared/openapi'; @Injectable() export class OrganizationStarringService { diff --git a/src/app/organizations/organization/organization.component.ts b/src/app/organizations/organization/organization.component.ts index 589f828df9..6cb2a7d984 100644 --- a/src/app/organizations/organization/organization.component.ts +++ b/src/app/organizations/organization/organization.component.ts @@ -20,7 +20,7 @@ import { map } from 'rxjs/operators'; import { TagEditorMode } from '../../shared/enum/tagEditorMode.enum'; import { OrgLogoService } from '../../shared/org-logo.service'; import { OrganizationSchema, OrgSchemaService } from '../../shared/org-schema.service'; -import { Organization } from '../../shared/swagger'; +import { Organization } from '../../shared/openapi'; import { UserQuery } from '../../shared/user/user.query'; import { ActivatedRoute } from '../../test'; import { RegisterOrganizationComponent } from '../registerOrganization/register-organization.component'; diff --git a/src/app/organizations/organization/state/update-organization-description.service.ts b/src/app/organizations/organization/state/update-organization-description.service.ts index 4e3e24fbe3..4a78616447 100644 --- a/src/app/organizations/organization/state/update-organization-description.service.ts +++ b/src/app/organizations/organization/state/update-organization-description.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; import { finalize } from 'rxjs/operators'; -import { Organization, OrganizationsService } from '../../../shared/swagger'; +import { Organization, OrganizationsService } from '../../../shared/openapi'; import { CollectionsService } from '../../state/collections.service'; import { OrganizationQuery } from '../../state/organization.query'; import { OrganizationService } from '../../state/organization.service'; diff --git a/src/app/organizations/organizations/organizations.component.ts b/src/app/organizations/organizations/organizations.component.ts index 308eb683f8..9bb0a2d50f 100644 --- a/src/app/organizations/organizations/organizations.component.ts +++ b/src/app/organizations/organizations/organizations.component.ts @@ -22,7 +22,7 @@ import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators'; import { AlertQuery } from '../../shared/alert/state/alert.query'; import { Base } from '../../shared/base'; import { formInputDebounceTime } from '../../shared/constants'; -import { Organization } from '../../shared/swagger'; +import { Organization } from '../../shared/openapi'; import { TrackLoginService } from '../../shared/track-login.service'; import { OrganizationsQuery } from '../state/organizations.query'; import { OrganizationsStateService } from '../state/organizations.service'; diff --git a/src/app/organizations/registerOrganization/register-organization.component.ts b/src/app/organizations/registerOrganization/register-organization.component.ts index be09cfb276..3db581e07e 100644 --- a/src/app/organizations/registerOrganization/register-organization.component.ts +++ b/src/app/organizations/registerOrganization/register-organization.component.ts @@ -17,7 +17,7 @@ import { Component, Inject, OnDestroy, OnInit } from '@angular/core'; import { AbstractControl, UntypedFormGroup } from '@angular/forms'; import { MAT_DIALOG_DATA } from '@angular/material/dialog'; import { NgFormsManager } from '@ngneat/forms-manager'; -import { Organization } from 'app/shared/swagger'; +import { Organization } from 'app/shared/openapi'; import { TagEditorMode } from '../../shared/enum/tagEditorMode.enum'; import { FormsState, RegisterOrganizationService } from '../state/register-organization.service'; diff --git a/src/app/organizations/state/events.query.ts b/src/app/organizations/state/events.query.ts index 1700294b9d..2873d6169a 100644 --- a/src/app/organizations/state/events.query.ts +++ b/src/app/organizations/state/events.query.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { QueryEntity } from '@datorama/akita'; import { Observable } from 'rxjs'; -import { Event } from '../../shared/swagger'; +import { Event } from '../../shared/openapi'; import { EventsState, EventsStore } from './events.store'; @Injectable({ diff --git a/src/app/organizations/state/events.service.ts b/src/app/organizations/state/events.service.ts index 1ef3537286..4bc8bb3ee3 100644 --- a/src/app/organizations/state/events.service.ts +++ b/src/app/organizations/state/events.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { finalize } from 'rxjs/operators'; -import { Event, OrganizationsService } from '../../shared/swagger'; +import { Event, OrganizationsService } from '../../shared/openapi'; import { EventsStore } from './events.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/organizations/state/events.store.ts b/src/app/organizations/state/events.store.ts index 110c270173..3f9ad85236 100644 --- a/src/app/organizations/state/events.store.ts +++ b/src/app/organizations/state/events.store.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { EntityState, EntityStore, StoreConfig } from '@datorama/akita'; -import { Event } from '../../shared/swagger'; +import { Event } from '../../shared/openapi'; export interface EventsState extends EntityState {} diff --git a/src/app/organizations/state/organization-members.query.ts b/src/app/organizations/state/organization-members.query.ts index 18708f3767..f0f50468cc 100644 --- a/src/app/organizations/state/organization-members.query.ts +++ b/src/app/organizations/state/organization-members.query.ts @@ -3,7 +3,7 @@ import { QueryEntity } from '@datorama/akita'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { OrganizationUser } from '../../shared/swagger'; +import { OrganizationUser } from '../../shared/openapi'; import { OrganizationMembersState, OrganizationMembersStore } from './organization-members.store'; @Injectable({ diff --git a/src/app/organizations/state/organization-members.service.ts b/src/app/organizations/state/organization-members.service.ts index 070381e1a8..5c93a5ac94 100644 --- a/src/app/organizations/state/organization-members.service.ts +++ b/src/app/organizations/state/organization-members.service.ts @@ -4,7 +4,7 @@ import { MatSnackBar } from '@angular/material/snack-bar'; import { ID, transaction } from '@datorama/akita'; import { finalize } from 'rxjs/operators'; import { AlertService } from '../../shared/alert/state/alert.service'; -import { OrganizationsService, OrganizationUser } from '../../shared/swagger'; +import { OrganizationsService, OrganizationUser } from '../../shared/openapi'; import { UserQuery } from '../../shared/user/user.query'; import { OrganizationMembersStore } from './organization-members.store'; import { OrganizationStore } from './organization.store'; diff --git a/src/app/organizations/state/organization-members.store.ts b/src/app/organizations/state/organization-members.store.ts index 18b7408226..d52bf05888 100644 --- a/src/app/organizations/state/organization-members.store.ts +++ b/src/app/organizations/state/organization-members.store.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { EntityState, EntityStore, StoreConfig } from '@datorama/akita'; -import { OrganizationUser } from '../../shared/swagger'; +import { OrganizationUser } from '../../shared/openapi'; export interface OrganizationMembersState extends EntityState {} diff --git a/src/app/organizations/state/organization.service.ts b/src/app/organizations/state/organization.service.ts index 6129b529be..c8b4be009a 100644 --- a/src/app/organizations/state/organization.service.ts +++ b/src/app/organizations/state/organization.service.ts @@ -16,7 +16,7 @@ import { Injectable } from '@angular/core'; import { transaction } from '@datorama/akita'; import { finalize } from 'rxjs/operators'; -import { Organization, OrganizationsService } from '../../shared/swagger'; +import { Organization, OrganizationsService } from '../../shared/openapi'; import { OrganizationMembersService } from './organization-members.service'; import { OrganizationStore } from './organization.store'; import { Router } from '@angular/router'; diff --git a/src/app/organizations/state/organization.store.ts b/src/app/organizations/state/organization.store.ts index 0d5c21e0a2..cfac18c191 100644 --- a/src/app/organizations/state/organization.store.ts +++ b/src/app/organizations/state/organization.store.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { Store, StoreConfig } from '@datorama/akita'; -import { Organization } from '../../shared/swagger'; +import { Organization } from '../../shared/openapi'; export interface OrganizationState { organization: Organization; diff --git a/src/app/organizations/state/organizations.query.spec.ts b/src/app/organizations/state/organizations.query.spec.ts index 8eebca2077..d176145bfe 100644 --- a/src/app/organizations/state/organizations.query.spec.ts +++ b/src/app/organizations/state/organizations.query.spec.ts @@ -1,4 +1,4 @@ -import { Organization } from '../../shared/swagger'; +import { Organization } from '../../shared/openapi'; import { OrganizationsQuery } from './organizations.query'; import { OrganizationsStore } from './organizations.store'; @@ -17,7 +17,6 @@ describe('OrganizationsQuery', () => { const potatoOrganization: Organization = { name: 'potato', status: Organization.StatusEnum.APPROVED, - users: [], topic: 'someTopic', displayName: 'someDisplayName', email: 'someEmail', @@ -27,21 +26,19 @@ describe('OrganizationsQuery', () => { avatarUrl: 'someAvatarUrl', }; - const beefOrganization: Organization = { name: 'beef', status: Organization.StatusEnum.APPROVED, users: [], topic: 'nothing relevent' }; + const beefOrganization: Organization = { name: 'beef', status: Organization.StatusEnum.APPROVED, topic: 'nothing relevent' }; const chickenOrganization: Organization = { name: 'chicken', status: Organization.StatusEnum.APPROVED, - users: [], topic: 'nothing relevent', }; - const porkOrganization: Organization = { name: 'pork', status: Organization.StatusEnum.APPROVED, users: [], topic: 'nothing relevent' }; + const porkOrganization: Organization = { name: 'pork', status: Organization.StatusEnum.APPROVED, topic: 'nothing relevent' }; const muttonOrganization: Organization = { name: 'mutton', status: Organization.StatusEnum.APPROVED, - users: [], topic: 'nothing relevent', }; - const duckOrganization: Organization = { name: 'duck', status: Organization.StatusEnum.APPROVED, users: [], topic: 'nothing relevent' }; + const duckOrganization: Organization = { name: 'duck', status: Organization.StatusEnum.APPROVED, topic: 'nothing relevent' }; const exampleOrganizations: Array = [ potatoOrganization, beefOrganization, diff --git a/src/app/organizations/state/organizations.query.ts b/src/app/organizations/state/organizations.query.ts index 5213a957a1..181f0ca009 100644 --- a/src/app/organizations/state/organizations.query.ts +++ b/src/app/organizations/state/organizations.query.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { Query } from '@datorama/akita'; import { combineLatest, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { Organization } from '../../shared/swagger'; +import { Organization } from '../../shared/openapi'; import { OrganizationsState, OrganizationsStore } from './organizations.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/organizations/state/organizations.service.ts b/src/app/organizations/state/organizations.service.ts index 6c0af1828b..77f0b83da7 100644 --- a/src/app/organizations/state/organizations.service.ts +++ b/src/app/organizations/state/organizations.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { finalize } from 'rxjs/operators'; import { AlertService } from '../../shared/alert/state/alert.service'; -import { Organization, OrganizationsService } from '../../shared/swagger'; +import { Organization, OrganizationsService } from '../../shared/openapi'; import { OrganizationsState, OrganizationsStore } from './organizations.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/organizations/state/organizations.store.ts b/src/app/organizations/state/organizations.store.ts index 432c5ba5d3..230989a1bf 100644 --- a/src/app/organizations/state/organizations.store.ts +++ b/src/app/organizations/state/organizations.store.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { Store, StoreConfig } from '@datorama/akita'; -import { Organization } from '../../shared/swagger'; +import { Organization } from '../../shared/openapi'; export interface OrganizationsState { organizations: Array; diff --git a/src/app/organizations/state/register-organization.service.spec.ts b/src/app/organizations/state/register-organization.service.spec.ts index 0aa4a288b1..cb2ac684b0 100644 --- a/src/app/organizations/state/register-organization.service.spec.ts +++ b/src/app/organizations/state/register-organization.service.spec.ts @@ -7,7 +7,7 @@ import { RouterTestingModule } from '@angular/router/testing'; import { of as observableOf, throwError } from 'rxjs'; import { UntypedFormBuilder } from '@angular/forms'; -import { OrganizationsService } from '../../shared/swagger'; +import { OrganizationsService } from '../../shared/openapi'; import { RegisterOrganizationService } from './register-organization.service'; let organizationsServiceSpy: jasmine.SpyObj; diff --git a/src/app/organizations/state/register-organization.service.ts b/src/app/organizations/state/register-organization.service.ts index ea8893d96a..2c32fb2fd5 100644 --- a/src/app/organizations/state/register-organization.service.ts +++ b/src/app/organizations/state/register-organization.service.ts @@ -7,7 +7,7 @@ import { NgFormsManager } from '@ngneat/forms-manager'; import { AlertService } from '../../shared/alert/state/alert.service'; import { TagEditorMode } from '../../shared/enum/tagEditorMode.enum'; -import { Organization, OrganizationsService } from '../../shared/swagger'; +import { Organization, OrganizationsService } from '../../shared/openapi'; import { OrganizationService } from './organization.service'; // This is recorded into the Akita state @@ -164,7 +164,6 @@ export class RegisterOrganizationService { email: organizationFormState.contactEmail, status: Organization.StatusEnum.PENDING, avatarUrl: organizationFormState.avatarUrl || null, - users: [], }; this.alertService.start('Adding organization'); this.organizationsService.createOrganization(newOrganization).subscribe( @@ -217,7 +216,6 @@ export class RegisterOrganizationService { status: Organization.StatusEnum.PENDING, avatarUrl: organizationFormState.avatarUrl || null, description: organizationDescription, - users: [], }; this.alertService.start('Updating organization'); this.organizationsService.updateOrganization(organizationId, editedOrganization).subscribe( diff --git a/src/app/organizations/state/upsert-organization-member.service.ts b/src/app/organizations/state/upsert-organization-member.service.ts index b2b81f241c..47fc9ee241 100644 --- a/src/app/organizations/state/upsert-organization-member.service.ts +++ b/src/app/organizations/state/upsert-organization-member.service.ts @@ -6,7 +6,7 @@ import { NgFormsManager } from '@ngneat/forms-manager'; import { finalize } from 'rxjs/operators'; import { AlertService } from '../../shared/alert/state/alert.service'; import { TagEditorMode } from '../../shared/enum/tagEditorMode.enum'; -import { OrganizationsService, OrganizationUser } from '../../shared/swagger'; +import { OrganizationsService, OrganizationUser } from '../../shared/openapi'; import { OrganizationMembersService } from './organization-members.service'; import { OrganizationQuery } from './organization.query'; import { UpsertOrganizationMemberStore } from './upsert-organization-member.store'; diff --git a/src/app/organizations/upsert-organization-member/upsert-organization-member.component.ts b/src/app/organizations/upsert-organization-member/upsert-organization-member.component.ts index e3bcfa6ef8..619af48383 100644 --- a/src/app/organizations/upsert-organization-member/upsert-organization-member.component.ts +++ b/src/app/organizations/upsert-organization-member/upsert-organization-member.component.ts @@ -3,7 +3,7 @@ import { AbstractControl, UntypedFormGroup } from '@angular/forms'; import { MAT_DIALOG_DATA } from '@angular/material/dialog'; import { NgFormsManager } from '@ngneat/forms-manager'; import { TagEditorMode } from '../../shared/enum/tagEditorMode.enum'; -import { OrganizationUser } from '../../shared/swagger'; +import { OrganizationUser } from '../../shared/openapi'; import { FormsState, UpsertOrganizationMemberService } from '../state/upsert-organization-member.service'; export interface UpsertOrganizationMemberComponentData { diff --git a/src/app/search/is-app-tool.pipe.ts b/src/app/search/is-app-tool.pipe.ts index dcf4baefa0..f55d3060d5 100644 --- a/src/app/search/is-app-tool.pipe.ts +++ b/src/app/search/is-app-tool.pipe.ts @@ -1,5 +1,5 @@ import { Pipe, PipeTransform } from '@angular/core'; -import { AppTool, DockstoreTool } from '../shared/swagger'; +import { AppTool, DockstoreTool } from '../shared/openapi'; @Pipe({ name: 'isAppTool', diff --git a/src/app/search/map-friendly-values.pipe.ts b/src/app/search/map-friendly-values.pipe.ts index 8d0010f51c..417055c22e 100644 --- a/src/app/search/map-friendly-values.pipe.ts +++ b/src/app/search/map-friendly-values.pipe.ts @@ -16,7 +16,7 @@ import { Pipe, PipeTransform } from '@angular/core'; import { DescriptorLanguageService } from 'app/shared/entry/descriptor-language.service'; import { DockstoreTool } from 'app/shared/openapi'; -import { ToolFile, Workflow } from 'app/shared/swagger'; +import { ToolFile, Workflow } from 'app/shared/openapi'; @Pipe({ name: 'mapFriendlyValue', diff --git a/src/app/search/search-entry-table.ts b/src/app/search/search-entry-table.ts index 8a0836449e..2d6001637a 100644 --- a/src/app/search/search-entry-table.ts +++ b/src/app/search/search-entry-table.ts @@ -21,7 +21,7 @@ import { combineLatest, Observable, Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { Base } from '../shared/base'; import { DateService } from '../shared/date.service'; -import { AppTool, DockstoreTool, Workflow, Notebook } from '../shared/swagger'; +import { AppTool, DockstoreTool, Workflow, Notebook } from '../shared/openapi'; import { SearchQuery } from './state/search.query'; import { SearchService } from './state/search.service'; diff --git a/src/app/search/search-notebook-table/search-notebook-table.component.ts b/src/app/search/search-notebook-table/search-notebook-table.component.ts index d9d7e995c1..14e49494cd 100644 --- a/src/app/search/search-notebook-table/search-notebook-table.component.ts +++ b/src/app/search/search-notebook-table/search-notebook-table.component.ts @@ -17,7 +17,7 @@ import { Component, OnInit } from '@angular/core'; import { MatTableDataSource } from '@angular/material/table'; import { Observable } from 'rxjs'; import { DateService } from '../../shared/date.service'; -import { Notebook } from '../../shared/swagger'; +import { Notebook } from '../../shared/openapi'; import { SearchEntryTable } from '../search-entry-table'; import { SearchQuery } from '../state/search.query'; import { SearchService } from '../state/search.service'; diff --git a/src/app/search/search-tool-table/search-tool-table.component.ts b/src/app/search/search-tool-table/search-tool-table.component.ts index 0edf087bcb..4f116d3c70 100644 --- a/src/app/search/search-tool-table/search-tool-table.component.ts +++ b/src/app/search/search-tool-table/search-tool-table.component.ts @@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core'; import { MatTableDataSource } from '@angular/material/table'; import { Observable } from 'rxjs'; import { DateService } from '../../shared/date.service'; -import { AppTool, DockstoreTool } from '../../shared/swagger'; +import { AppTool, DockstoreTool } from '../../shared/openapi'; import { SearchEntryTable } from '../search-entry-table'; import { SearchQuery } from '../state/search.query'; import { SearchService } from '../state/search.service'; diff --git a/src/app/search/search-workflow-table/search-workflow-table.component.ts b/src/app/search/search-workflow-table/search-workflow-table.component.ts index 1d4733ddca..9888843960 100644 --- a/src/app/search/search-workflow-table/search-workflow-table.component.ts +++ b/src/app/search/search-workflow-table/search-workflow-table.component.ts @@ -17,7 +17,7 @@ import { Component, OnInit } from '@angular/core'; import { MatTableDataSource } from '@angular/material/table'; import { Observable } from 'rxjs'; import { DateService } from '../../shared/date.service'; -import { Workflow } from '../../shared/swagger'; +import { Workflow } from '../../shared/openapi'; import { SearchEntryTable } from '../search-entry-table'; import { SearchQuery } from '../state/search.query'; import { SearchService } from '../state/search.service'; diff --git a/src/app/search/state/search.query.ts b/src/app/search/state/search.query.ts index e46e4d1132..feefbd22a0 100644 --- a/src/app/search/state/search.query.ts +++ b/src/app/search/state/search.query.ts @@ -3,7 +3,7 @@ import { ActivatedRoute } from '@angular/router'; import { Query } from '@datorama/akita'; import { combineLatest, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { AppTool, DockstoreTool, Workflow, Notebook } from '../../shared/swagger'; +import { AppTool, DockstoreTool, Workflow, Notebook } from '../../shared/openapi'; import { SearchState, SearchStore } from './search.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/search/state/search.service.spec.ts b/src/app/search/state/search.service.spec.ts index 29ecc8aa7f..bba7d2e6f2 100644 --- a/src/app/search/state/search.service.spec.ts +++ b/src/app/search/state/search.service.spec.ts @@ -20,7 +20,7 @@ import { RouterTestingModule } from '@angular/router/testing'; import { first } from 'rxjs/operators'; import { ImageProviderService } from '../../shared/image-provider.service'; import { ProviderService } from '../../shared/provider.service'; -import { Workflow } from '../../shared/swagger'; +import { Workflow } from '../../shared/openapi'; import { elasticSearchResponse } from '../../test/mocked-objects'; import { ProviderStubService } from '../../test/service-stubs'; import { Hit, SearchService } from './search.service'; @@ -122,16 +122,17 @@ describe('SearchService', () => { )); it('should sort workflows correctly', inject([SearchService], (service: SearchService) => { const a: Workflow = { + type: '', author: 'a', gitUrl: 'https://giturl', mode: Workflow.ModeEnum.FULL, organization: '', repository: '', - sourceControl: '', + sourceControl: null, descriptorType: Workflow.DescriptorTypeEnum.CWL, workflow_path: '', defaultTestParameterFilePath: '', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, full_workflow_path: 'abc', }; diff --git a/src/app/search/state/search.service.ts b/src/app/search/state/search.service.ts index f75e030407..c3b3951a5e 100644 --- a/src/app/search/state/search.service.ts +++ b/src/app/search/state/search.service.ts @@ -28,7 +28,7 @@ import { ImageProviderService } from '../../shared/image-provider.service'; import { SubBucket } from '../../shared/models/SubBucket'; import { ExtendedGA4GHService } from '../../shared/openapi/api/extendedGA4GH.service'; import { ProviderService } from '../../shared/provider.service'; -import { DockstoreTool, Workflow } from '../../shared/swagger'; +import { DockstoreTool, Workflow } from '../../shared/openapi'; import { SearchQuery } from './search.query'; import { SearchStore } from './search.store'; import { SearchAuthorsHtmlPipe } from '../search-authors-html.pipe'; diff --git a/src/app/shared/available-logs/available-logs.component.ts b/src/app/shared/available-logs/available-logs.component.ts index 4052e6f3d4..f3cb12aa02 100644 --- a/src/app/shared/available-logs/available-logs.component.ts +++ b/src/app/shared/available-logs/available-logs.component.ts @@ -9,7 +9,7 @@ import { ToolTesterLog } from '../openapi/model/toolTesterLog'; import { AvailableLogsQuery } from '../state/available-logs.query'; import { AvailableLogsService } from '../state/available-logs.service'; import { CheckerWorkflowQuery } from '../state/checker-workflow.query'; -import { Tag, WorkflowVersion } from '../swagger'; +import { Tag, WorkflowVersion } from '../openapi'; interface VersionVerifiedInformation { version: WorkflowVersion | Tag; diff --git a/src/app/shared/bioschema.service.spec.ts b/src/app/shared/bioschema.service.spec.ts index d17cbe4128..ef4d6d4620 100644 --- a/src/app/shared/bioschema.service.spec.ts +++ b/src/app/shared/bioschema.service.spec.ts @@ -4,10 +4,10 @@ import { BioschemaService, BioschemaTool } from './bioschema.service'; import { DateService } from './date.service'; import { ExtendedToolsService } from './extended-tools.service'; import { ExtendedWorkflowsService } from './extended-workflows.service'; -import { DockstoreTool } from './swagger/model/dockstoreTool'; -import { Tag } from './swagger/model/tag'; -import { Workflow } from './swagger/model/workflow'; -import { WorkflowVersion } from './swagger/model/workflowVersion'; +import { DockstoreTool } from './openapi/model/dockstoreTool'; +import { Tag } from './openapi/model/tag'; +import { Workflow } from './openapi/model/workflow'; +import { WorkflowVersion } from './openapi/model/workflowVersion'; describe('BioschemaService', () => { beforeEach(() => { @@ -65,6 +65,7 @@ describe('BioschemaService', () => { const date: Date = new Date('2017-06-28T18:48:18.000Z'); const workflow: Workflow = { // Attributes used in the method being tested + type: '', description: 'text', authors: [], id: 1, @@ -75,11 +76,11 @@ describe('BioschemaService', () => { mode: Workflow.ModeEnum.HOSTED, organization: 'us', repository: '', - sourceControl: '', + sourceControl: null, descriptorType: Workflow.DescriptorTypeEnum.CWL, workflow_path: '', defaultTestParameterFilePath: '', - descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: Workflow.DescriptorTypeSubclassEnum.NA, }; const result: BioschemaTool = service.getWorkflowSchema(workflow, version); expect(result['@context']).toEqual('http://schema.org'); diff --git a/src/app/shared/bioschema.service.ts b/src/app/shared/bioschema.service.ts index 9b9844f4bc..c50bc3c9b1 100644 --- a/src/app/shared/bioschema.service.ts +++ b/src/app/shared/bioschema.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@angular/core'; -import { Workflow } from '../shared/swagger/model/workflow'; +import { Workflow } from '../shared/openapi/model/workflow'; import { DateService } from './date.service'; import { ExtendedToolsService } from './extended-tools.service'; import { ExtendedWorkflowsService } from './extended-workflows.service'; -import { Tag } from './swagger'; -import { DockstoreTool } from './swagger/model/dockstoreTool'; -import { WorkflowVersion } from './swagger/model/workflowVersion'; +import { Tag } from './openapi'; +import { DockstoreTool } from './openapi/model/dockstoreTool'; +import { WorkflowVersion } from './openapi/model/workflowVersion'; export interface Person { '@type': string; diff --git a/src/app/shared/code-editor-list/code-editor-list.component.ts b/src/app/shared/code-editor-list/code-editor-list.component.ts index d391f1c805..2da535cd27 100644 --- a/src/app/shared/code-editor-list/code-editor-list.component.ts +++ b/src/app/shared/code-editor-list/code-editor-list.component.ts @@ -2,9 +2,9 @@ import { Component, Input } from '@angular/core'; import { Observable } from 'rxjs'; import { WorkflowQuery } from '../state/workflow.query'; -import { SourceFile } from '../swagger'; -import { ToolDescriptor } from './../../shared/swagger/model/toolDescriptor'; -import { WorkflowVersion } from './../../shared/swagger/model/workflowVersion'; +import { SourceFile } from '../openapi'; +import { ToolDescriptor } from './../../shared/openapi/model/toolDescriptor'; +import { WorkflowVersion } from './../../shared/openapi/model/workflowVersion'; import { CodeEditorListService } from './code-editor-list.service'; import { FileService } from 'app/shared/file.service'; diff --git a/src/app/shared/code-editor-list/code-editor-list.service.spec.ts b/src/app/shared/code-editor-list/code-editor-list.service.spec.ts index 691934065e..60ddaf7372 100644 --- a/src/app/shared/code-editor-list/code-editor-list.service.spec.ts +++ b/src/app/shared/code-editor-list/code-editor-list.service.spec.ts @@ -1,6 +1,6 @@ import { TestBed } from '@angular/core/testing'; -import { SourceFile, ToolDescriptor } from '../swagger'; +import { SourceFile, ToolDescriptor } from '../openapi'; import { CodeEditorListService } from './code-editor-list.service'; import { DescriptorLanguageService } from '../entry/descriptor-language.service'; import { HttpClientTestingModule } from '@angular/common/http/testing'; diff --git a/src/app/shared/code-editor-list/code-editor-list.service.ts b/src/app/shared/code-editor-list/code-editor-list.service.ts index 3d3f36d251..77cf093ec2 100644 --- a/src/app/shared/code-editor-list/code-editor-list.service.ts +++ b/src/app/shared/code-editor-list/code-editor-list.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { DescriptorLanguageService } from '../entry/descriptor-language.service'; -import { SourceFile, ToolDescriptor } from '../swagger'; +import { SourceFile, ToolDescriptor } from '../openapi'; import { FileCategory } from './code-editor-list.component'; /** diff --git a/src/app/shared/container.service.spec.ts b/src/app/shared/container.service.spec.ts index d0f7acd0c5..8feb3d9bb2 100644 --- a/src/app/shared/container.service.spec.ts +++ b/src/app/shared/container.service.spec.ts @@ -30,7 +30,7 @@ import { DockstoreService } from './dockstore.service'; import { ImageProviderService } from './image-provider.service'; import { ProviderService } from './provider.service'; import { CheckerWorkflowService } from './state/checker-workflow.service'; -import { DockstoreTool } from './swagger/model/dockstoreTool'; +import { DockstoreTool } from './openapi/model/dockstoreTool'; describe('ContainerService', () => { beforeEach(() => { diff --git a/src/app/shared/container.service.ts b/src/app/shared/container.service.ts index be1654a96e..66a0d62afa 100644 --- a/src/app/shared/container.service.ts +++ b/src/app/shared/container.service.ts @@ -16,7 +16,7 @@ import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { ExtendedDockstoreToolService } from './extended-dockstoreTool/extended-dockstoreTool.service'; -import { DockstoreTool } from './swagger/model/dockstoreTool'; +import { DockstoreTool } from './openapi/model/dockstoreTool'; import { ToolQuery } from './tool/tool.query'; import { ToolService } from './tool/tool.service'; import { ToolStore } from './tool/tool.store'; diff --git a/src/app/shared/descriptor-type-compat.service.spec.ts b/src/app/shared/descriptor-type-compat.service.spec.ts index 9c21a7eea9..0d419bde66 100644 --- a/src/app/shared/descriptor-type-compat.service.spec.ts +++ b/src/app/shared/descriptor-type-compat.service.spec.ts @@ -3,7 +3,7 @@ import { inject, TestBed } from '@angular/core/testing'; import { DescriptorTypeCompatService } from './descriptor-type-compat.service'; import { ToolVersion } from './openapi'; -import { ToolDescriptor } from './swagger'; +import { ToolDescriptor } from './openapi'; describe('Service: DescriptorTypeCompat', () => { beforeEach(() => { diff --git a/src/app/shared/descriptor-type-compat.service.ts b/src/app/shared/descriptor-type-compat.service.ts index 12ac48518e..6686fa33a3 100644 --- a/src/app/shared/descriptor-type-compat.service.ts +++ b/src/app/shared/descriptor-type-compat.service.ts @@ -20,7 +20,7 @@ import { PlainTRSDescriptorLanguageEnum, } from 'app/entry/extendedDescriptorLanguage'; import { ToolVersion } from './openapi'; -import { ToolDescriptor, Workflow } from './swagger'; +import { ToolDescriptor, Workflow } from './openapi'; /** * This service is for maintaining compatibility until descriptor types are standardized across all of Dockstore diff --git a/src/app/shared/descriptor.service.spec.ts b/src/app/shared/descriptor.service.spec.ts index ac169b35cf..dfc4567d76 100644 --- a/src/app/shared/descriptor.service.spec.ts +++ b/src/app/shared/descriptor.service.spec.ts @@ -15,9 +15,9 @@ */ import { inject, TestBed } from '@angular/core/testing'; -import { SourceFile } from './../shared/swagger/model/sourceFile'; +import { SourceFile } from './../shared/openapi/model/sourceFile'; import { DescriptorService } from './descriptor.service'; -import { ToolDescriptor } from './swagger'; +import { ToolDescriptor } from './openapi'; describe('DescriptorService', () => { beforeEach(() => { diff --git a/src/app/shared/descriptor.service.ts b/src/app/shared/descriptor.service.ts index b28640c5ca..eb9b0970bb 100644 --- a/src/app/shared/descriptor.service.ts +++ b/src/app/shared/descriptor.service.ts @@ -16,7 +16,7 @@ import { Injectable } from '@angular/core'; import { extendedDescriptorLanguages } from 'app/entry/extendedDescriptorLanguage'; -import { SourceFile, ToolDescriptor } from './swagger'; +import { SourceFile, ToolDescriptor } from './openapi'; @Injectable({ providedIn: 'root' }) export class DescriptorService { diff --git a/src/app/shared/dockstore.service.spec.ts b/src/app/shared/dockstore.service.spec.ts index 6ed82f841e..36c64d1acb 100644 --- a/src/app/shared/dockstore.service.spec.ts +++ b/src/app/shared/dockstore.service.spec.ts @@ -17,8 +17,8 @@ import { inject, TestBed } from '@angular/core/testing'; import { faSort, faSortAlphaDown, faSortAlphaUp } from '@fortawesome/free-solid-svg-icons'; import { DockstoreService } from './dockstore.service'; -import { Label } from './swagger/model/label'; -import { WorkflowVersion } from './swagger/model/workflowVersion'; +import { Label } from './openapi/model/label'; +import { WorkflowVersion } from './openapi/model/workflowVersion'; describe('DockstoreService', () => { beforeEach(() => { diff --git a/src/app/shared/dockstore.service.ts b/src/app/shared/dockstore.service.ts index ddf373b8ca..59599c706c 100644 --- a/src/app/shared/dockstore.service.ts +++ b/src/app/shared/dockstore.service.ts @@ -17,7 +17,7 @@ import { Injectable } from '@angular/core'; import { faSort, faSortAlphaDown, faSortAlphaUp, IconDefinition } from '@fortawesome/free-solid-svg-icons'; import { ExtendedDockstoreTool } from './models/ExtendedDockstoreTool'; import { ExtendedWorkflow } from './models/ExtendedWorkflow'; -import { Tag, WorkflowVersion } from './swagger'; +import { Tag, WorkflowVersion } from './openapi'; interface SourceObject { version: string; diff --git a/src/app/shared/entry-actions/entry-actions.component.ts b/src/app/shared/entry-actions/entry-actions.component.ts index 65e97ffb28..dd3da07024 100644 --- a/src/app/shared/entry-actions/entry-actions.component.ts +++ b/src/app/shared/entry-actions/entry-actions.component.ts @@ -2,7 +2,7 @@ import { Directive, Input } from '@angular/core'; import { Observable } from 'rxjs'; import { AlertQuery } from '../alert/state/alert.query'; import { EntryType } from '../enum/entry-type'; -import { BioWorkflow, DockstoreTool, Service, Notebook } from '../swagger'; +import { BioWorkflow, DockstoreTool, Service, Notebook } from '../openapi'; import { EntryActionsService } from './entry-actions.service'; @Directive() diff --git a/src/app/shared/entry-actions/entry-actions.service.spec.ts b/src/app/shared/entry-actions/entry-actions.service.spec.ts index 18a8a77443..a59f40201f 100644 --- a/src/app/shared/entry-actions/entry-actions.service.spec.ts +++ b/src/app/shared/entry-actions/entry-actions.service.spec.ts @@ -5,7 +5,7 @@ import { ContainerService } from '../container.service'; import { EntryType } from '../enum/entry-type'; import { CustomMaterialModule } from '../modules/material.module'; import { WorkflowService } from '../state/workflow.service'; -import { ContainersService, DockstoreTool, Entry, Tag, Workflow, WorkflowsService } from '../swagger'; +import { ContainersService, DockstoreTool, Entry, Tag, Workflow, WorkflowsService } from '../openapi'; import { EntryActionsService } from './entry-actions.service'; describe('Service: EntryActionsService', () => { diff --git a/src/app/shared/entry-actions/entry-actions.service.ts b/src/app/shared/entry-actions/entry-actions.service.ts index ef8f4ae9a6..9dc8215def 100644 --- a/src/app/shared/entry-actions/entry-actions.service.ts +++ b/src/app/shared/entry-actions/entry-actions.service.ts @@ -5,7 +5,7 @@ import { includesAuthors, includesVersions } from '../constants'; import { ContainerService } from '../container.service'; import { EntryType } from '../enum/entry-type'; import { WorkflowService } from '../state/workflow.service'; -import { ContainersService, DockstoreTool, Entry, PublishRequest, Workflow, WorkflowsService } from '../swagger'; +import { ContainersService, DockstoreTool, Entry, PublishRequest, Workflow, WorkflowsService } from '../openapi'; import { InformationDialogData } from '../../information-dialog/information-dialog.component'; import { InformationDialogService } from '../../information-dialog/information-dialog.service'; import { bootstrap4mediumModalSize } from '../../shared/constants'; @@ -136,7 +136,7 @@ export class EntryActionsService { }; const message = !currentlyPublished ? `Publishing ${entryType}` : `Unpublishing ${entryType}`; this.alertService.start(message); - this.workflowsService.publish(workflow.id, request).subscribe( + this.workflowsService.publish1(workflow.id, request).subscribe( (response: Workflow) => { this.workflowService.upsertWorkflowToWorkflow(response); this.workflowService.setWorkflow(response); diff --git a/src/app/shared/entry-actions/tool-actions.component.ts b/src/app/shared/entry-actions/tool-actions.component.ts index be8854ac0b..e6b7ca87bd 100644 --- a/src/app/shared/entry-actions/tool-actions.component.ts +++ b/src/app/shared/entry-actions/tool-actions.component.ts @@ -1,7 +1,7 @@ import { Component, Input, Output, EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core'; import { AlertQuery } from '../alert/state/alert.query'; import { RefreshService } from '../refresh.service'; -import { DockstoreTool, Tag } from '../swagger'; +import { DockstoreTool, Tag } from '../openapi'; import { EntryActionsComponent } from './entry-actions.component'; import { EntryActionsService } from './entry-actions.service'; diff --git a/src/app/shared/entry-actions/workflow-actions.component.ts b/src/app/shared/entry-actions/workflow-actions.component.ts index 011fc86ac5..ec50a21255 100644 --- a/src/app/shared/entry-actions/workflow-actions.component.ts +++ b/src/app/shared/entry-actions/workflow-actions.component.ts @@ -6,8 +6,8 @@ import { EntryType } from '../enum/entry-type'; import { RefreshService } from '../refresh.service'; import { SessionQuery } from '../session/session.query'; import { TokenQuery } from '../state/token.query'; -import { BioWorkflow, Service, Notebook, WorkflowVersion } from '../swagger'; -import { Workflow } from '../swagger/model/workflow'; +import { BioWorkflow, Service, Notebook, WorkflowVersion } from '../openapi'; +import { Workflow } from '../openapi/model/workflow'; import { EntryActionsComponent } from './entry-actions.component'; import { EntryActionsService } from './entry-actions.service'; diff --git a/src/app/shared/entry.ts b/src/app/shared/entry.ts index 60a53f7b49..f2afeae2ae 100644 --- a/src/app/shared/entry.ts +++ b/src/app/shared/entry.ts @@ -25,8 +25,8 @@ import { filter, takeUntil } from 'rxjs/operators'; import { EntryCategoriesService } from '../categories/state/entry-categories.service'; import { Dockstore } from '../shared/dockstore.model'; import { Category } from '../shared/openapi'; -import { Tag } from '../shared/swagger/model/tag'; -import { WorkflowVersion } from '../shared/swagger/model/workflowVersion'; +import { Tag } from '../shared/openapi/model/tag'; +import { WorkflowVersion } from '../shared/openapi/model/workflowVersion'; import { TrackLoginService } from '../shared/track-login.service'; import { AlertService } from './alert/state/alert.service'; import { BioschemaService } from './bioschema.service'; @@ -37,7 +37,7 @@ import { EntriesService, VersionVerifiedPlatform } from './openapi'; import { ProviderService } from './provider.service'; import { SessionQuery } from './session/session.query'; import { SessionService } from './session/session.service'; -import { SourceFile } from './swagger'; +import { SourceFile } from './openapi'; import { UrlResolverService } from './url-resolver.service'; import { validationDescriptorPatterns, validationMessages } from './validationMessages.model'; diff --git a/src/app/shared/entry/descriptor-language.pipe.ts b/src/app/shared/entry/descriptor-language.pipe.ts index ac109adaa7..be955ac018 100644 --- a/src/app/shared/entry/descriptor-language.pipe.ts +++ b/src/app/shared/entry/descriptor-language.pipe.ts @@ -1,6 +1,6 @@ import { Pipe, PipeTransform } from '@angular/core'; import { DescriptorLanguageService } from 'app/shared/entry/descriptor-language.service'; -import { Workflow } from '../../shared/swagger'; +import { Workflow } from '../../shared/openapi'; @Pipe({ name: 'descriptorLanguage', diff --git a/src/app/shared/entry/descriptor-language.service.spec.ts b/src/app/shared/entry/descriptor-language.service.spec.ts index 040edf5043..759a029646 100644 --- a/src/app/shared/entry/descriptor-language.service.spec.ts +++ b/src/app/shared/entry/descriptor-language.service.spec.ts @@ -15,7 +15,7 @@ */ import { of as observableOf } from 'rxjs'; import { first } from 'rxjs/operators'; -import { DescriptorLanguageBean, ToolDescriptor, Workflow } from '../swagger'; +import { DescriptorLanguageBean, ToolDescriptor, Workflow } from '../openapi'; import { DescriptorLanguageService } from './descriptor-language.service'; import { SourceFile } from '../openapi'; diff --git a/src/app/shared/entry/descriptor-language.service.ts b/src/app/shared/entry/descriptor-language.service.ts index e6df705adc..9be4302da9 100644 --- a/src/app/shared/entry/descriptor-language.service.ts +++ b/src/app/shared/entry/descriptor-language.service.ts @@ -23,10 +23,10 @@ import { BehaviorSubject, combineLatest, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { EntryType } from '../enum/entry-type'; import { SessionQuery } from '../session/session.query'; -import { SourceFile, ToolDescriptor } from '../swagger'; -import { Workflow } from '../swagger/model/workflow'; -import { MetadataService } from './../swagger/api/metadata.service'; -import { DescriptorLanguageBean } from './../swagger/model/descriptorLanguageBean'; +import { SourceFile, ToolDescriptor } from '../openapi'; +import { Workflow } from '../openapi/model/workflow'; +import { MetadataService } from './../openapi/api/metadata.service'; +import { DescriptorLanguageBean } from './../openapi/model/descriptorLanguageBean'; @Injectable() export class DescriptorLanguageService { diff --git a/src/app/shared/entry/info-tab-checker-workflow-path/info-tab-checker-workflow-path.component.ts b/src/app/shared/entry/info-tab-checker-workflow-path/info-tab-checker-workflow-path.component.ts index 1a5f8095d5..31134c6ba1 100644 --- a/src/app/shared/entry/info-tab-checker-workflow-path/info-tab-checker-workflow-path.component.ts +++ b/src/app/shared/entry/info-tab-checker-workflow-path/info-tab-checker-workflow-path.component.ts @@ -15,7 +15,7 @@ */ import { Component, Input, OnDestroy, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; -import { Workflow } from 'app/shared/swagger'; +import { Workflow } from 'app/shared/openapi'; import { Observable } from 'rxjs'; import { AlertQuery } from '../../alert/state/alert.query'; import { Base } from '../../base'; diff --git a/src/app/shared/entry/public-file-download.pipe.ts b/src/app/shared/entry/public-file-download.pipe.ts index 5ab84dcb63..60e785179a 100644 --- a/src/app/shared/entry/public-file-download.pipe.ts +++ b/src/app/shared/entry/public-file-download.pipe.ts @@ -1,8 +1,8 @@ import { Pipe, PipeTransform } from '@angular/core'; -import { SourceFile } from '../../shared/swagger/model/sourceFile'; +import { SourceFile } from '../../shared/openapi/model/sourceFile'; import { FileService } from '../file.service'; -import { ToolDescriptor } from '../swagger'; +import { ToolDescriptor } from '../openapi'; @Pipe({ name: 'publicFileDownload', diff --git a/src/app/shared/entry/register-checker-workflow/register-checker-workflow.component.ts b/src/app/shared/entry/register-checker-workflow/register-checker-workflow.component.ts index 724d2a0a54..7c46a751b2 100644 --- a/src/app/shared/entry/register-checker-workflow/register-checker-workflow.component.ts +++ b/src/app/shared/entry/register-checker-workflow/register-checker-workflow.component.ts @@ -24,10 +24,10 @@ import { Base } from '../../base'; import { formInputDebounceTime } from '../../constants'; import { DescriptorTypeCompatService } from '../../descriptor-type-compat.service'; import { CheckerWorkflowQuery } from '../../state/checker-workflow.query'; -import { ToolDescriptor } from '../../swagger'; -import { DockstoreTool } from '../../swagger/model/dockstoreTool'; -import { Entry } from '../../swagger/model/entry'; -import { Workflow } from '../../swagger/model/workflow'; +import { ToolDescriptor } from '../../openapi'; +import { DockstoreTool } from '../../openapi/model/dockstoreTool'; +import { Entry } from '../../openapi/model/entry'; +import { Workflow } from '../../openapi/model/workflow'; import { formErrors, validationDescriptorPatterns, validationMessages } from '../../validationMessages.model'; import { DescriptorLanguageService } from '../descriptor-language.service'; import { RegisterCheckerWorkflowService } from './register-checker-workflow.service'; diff --git a/src/app/shared/entry/register-checker-workflow/register-checker-workflow.service.spec.ts b/src/app/shared/entry/register-checker-workflow/register-checker-workflow.service.spec.ts index 15ffc186ff..cfebdb644f 100644 --- a/src/app/shared/entry/register-checker-workflow/register-checker-workflow.service.spec.ts +++ b/src/app/shared/entry/register-checker-workflow/register-checker-workflow.service.spec.ts @@ -27,7 +27,7 @@ import { import { ContainerService } from '../../container.service'; import { RefreshService } from '../../refresh.service'; import { WorkflowService } from '../../state/workflow.service'; -import { WorkflowsService } from '../../swagger/api/workflows.service'; +import { WorkflowsService } from '../../openapi/api/workflows.service'; import { RegisterCheckerWorkflowService } from './register-checker-workflow.service'; describe('Service: RegisterCheckerWorkflow', () => { diff --git a/src/app/shared/entry/register-checker-workflow/register-checker-workflow.service.ts b/src/app/shared/entry/register-checker-workflow/register-checker-workflow.service.ts index 7d25045b6a..02984c8964 100644 --- a/src/app/shared/entry/register-checker-workflow/register-checker-workflow.service.ts +++ b/src/app/shared/entry/register-checker-workflow/register-checker-workflow.service.ts @@ -16,18 +16,19 @@ import { HttpErrorResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; -import { DescriptorLanguageEnum } from 'app/entry/extendedDescriptorLanguage'; import { BehaviorSubject, merge as observableMerge, Observable } from 'rxjs'; import { filter, first } from 'rxjs/operators'; import { AlertService } from '../../alert/state/alert.service'; import { ContainerService } from '../../container.service'; +import { ParsedInformation } from '../../openapi'; import { WorkflowQuery } from '../../state/workflow.query'; import { WorkflowService } from '../../state/workflow.service'; -import { WorkflowsService } from '../../swagger/api/workflows.service'; -import { DockstoreTool } from '../../swagger/model/dockstoreTool'; -import { Entry } from '../../swagger/model/entry'; -import { Workflow } from '../../swagger/model/workflow'; +import { WorkflowsService } from '../../openapi/api/workflows.service'; +import { DockstoreTool } from '../../openapi/model/dockstoreTool'; +import { Entry } from '../../openapi/model/entry'; +import { Workflow } from '../../openapi/model/workflow'; import { ToolQuery } from '../../tool/tool.query'; +import DescriptorLanguageEnum = ParsedInformation.DescriptorLanguageEnum; @Injectable() export class RegisterCheckerWorkflowService { @@ -54,7 +55,7 @@ export class RegisterCheckerWorkflowService { const message = 'Registering checker workflow'; this.alertService.start(message); // Figure out why testParameterFilePath and descriptorType is swapped - this.workflowsService.registerCheckerWorkflow(workflowPath, this.entryId, descriptorLanguageEnum, testParameterFilePath).subscribe( + this.workflowsService.registerCheckerWorkflow(this.entryId, descriptorLanguageEnum, workflowPath, testParameterFilePath).subscribe( (entry: Entry) => { // Only update our current list of workflows when the current entry is a workflow // Switching to my-workflows will automatically update the entire list with a fresh HTTP request @@ -68,7 +69,7 @@ export class RegisterCheckerWorkflowService { const refreshCheckerMessage = 'Refreshing checker workflow'; this.alertService.start(refreshCheckerMessage); this.workflowsService - .refresh(entry.checker_id) + .refresh1(entry.checker_id) .pipe(first()) .subscribe( (workflow: Workflow) => { diff --git a/src/app/shared/entry/select-tab.pipe.ts b/src/app/shared/entry/select-tab.pipe.ts index 34e9e0771d..3b064df874 100644 --- a/src/app/shared/entry/select-tab.pipe.ts +++ b/src/app/shared/entry/select-tab.pipe.ts @@ -18,7 +18,7 @@ import { OrgToolObject } from '../../mytools/my-tool/my-tool.component'; import { OrgWorkflowObject } from '../../myworkflows/my-workflow/my-workflow.component'; import { ExtendedDockstoreTool } from '../models/ExtendedDockstoreTool'; import { ExtendedWorkflow } from '../models/ExtendedWorkflow'; -import { DockstoreTool, Entry, Workflow } from '../swagger'; +import { DockstoreTool, Entry, Workflow } from '../openapi'; @Pipe({ name: 'selectTab', diff --git a/src/app/shared/entry/verified-by/verified-by.component.ts b/src/app/shared/entry/verified-by/verified-by.component.ts index de2157c549..656ba214a7 100644 --- a/src/app/shared/entry/verified-by/verified-by.component.ts +++ b/src/app/shared/entry/verified-by/verified-by.component.ts @@ -3,7 +3,7 @@ import { MatDialog } from '@angular/material/dialog'; import { AvailableLogsComponent } from '../../available-logs/available-logs.component'; import { bootstrap4largeModalSize } from '../../constants'; import { VersionVerifiedPlatform } from '../../openapi'; -import { Tag, WorkflowVersion } from '../../swagger'; +import { Tag, WorkflowVersion } from '../../openapi'; import { VerifiedByService } from '../../verified-by.service'; @Component({ diff --git a/src/app/shared/entry/verified-display/verified-display.component.ts b/src/app/shared/entry/verified-display/verified-display.component.ts index 871ba14c62..f20ae5d5f8 100644 --- a/src/app/shared/entry/verified-display/verified-display.component.ts +++ b/src/app/shared/entry/verified-display/verified-display.component.ts @@ -17,7 +17,7 @@ import { Component, Input, OnChanges, OnInit, ViewChild } from '@angular/core'; import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { VersionVerifiedPlatform } from '../../openapi'; -import { Tag, VerificationInformation, WorkflowVersion } from '../../swagger'; +import { Tag, VerificationInformation, WorkflowVersion } from '../../openapi'; @Component({ selector: 'app-verified-display', diff --git a/src/app/shared/extended-dockstoreTool/extended-dockstoreTool.service.ts b/src/app/shared/extended-dockstoreTool/extended-dockstoreTool.service.ts index 402cd179ae..db80735f58 100644 --- a/src/app/shared/extended-dockstoreTool/extended-dockstoreTool.service.ts +++ b/src/app/shared/extended-dockstoreTool/extended-dockstoreTool.service.ts @@ -21,7 +21,7 @@ import { DockstoreService } from '../dockstore.service'; import { ImageProviderService } from '../image-provider.service'; import { ExtendedDockstoreTool } from '../models/ExtendedDockstoreTool'; import { ProviderService } from '../provider.service'; -import { DockstoreTool } from '../swagger'; +import { DockstoreTool } from '../openapi'; import { ExtendedDockstoreToolStore } from './extended-dockstoreTool.store'; @Injectable({ diff --git a/src/app/shared/extended-tools.service.ts b/src/app/shared/extended-tools.service.ts index 1be4425d63..68c9672908 100644 --- a/src/app/shared/extended-tools.service.ts +++ b/src/app/shared/extended-tools.service.ts @@ -1,7 +1,7 @@ import { HttpEvent, HttpResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { ContainersService } from './../shared/swagger/api/containers.service'; +import { ContainersService } from './../shared/openapi/api/containers.service'; /** * This is an extension of the generated swagger code. The reason it exists is that for zip download to work, diff --git a/src/app/shared/extended-workflows.service.ts b/src/app/shared/extended-workflows.service.ts index 6a6b08d20b..638956f58d 100644 --- a/src/app/shared/extended-workflows.service.ts +++ b/src/app/shared/extended-workflows.service.ts @@ -1,7 +1,7 @@ import { HttpEvent, HttpResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { WorkflowsService } from './../shared/swagger/api/workflows.service'; +import { WorkflowsService } from './../shared/openapi/api/workflows.service'; /** * This is an extension of the generated swagger code. The reason it exists is that for zip download to work, diff --git a/src/app/shared/file-editing.ts b/src/app/shared/file-editing.ts index 2d984320a7..a471bc5b1d 100644 --- a/src/app/shared/file-editing.ts +++ b/src/app/shared/file-editing.ts @@ -18,7 +18,7 @@ import { Directive } from '@angular/core'; import { AlertService } from './alert/state/alert.service'; import { Files } from './files'; import { SourceFile } from './openapi'; -import { Tag, WorkflowVersion } from './swagger'; +import { Tag, WorkflowVersion } from './openapi'; @Directive() // eslint-disable-next-line @angular-eslint/directive-class-suffix diff --git a/src/app/shared/file.service.spec.ts b/src/app/shared/file.service.spec.ts index 13f6551c68..0450b637ea 100644 --- a/src/app/shared/file.service.spec.ts +++ b/src/app/shared/file.service.spec.ts @@ -32,7 +32,7 @@ import { import { ga4ghPath } from './constants'; import { Dockstore } from './dockstore.model'; import { FileService } from './file.service'; -import { ToolDescriptor } from './swagger'; +import { ToolDescriptor } from './openapi'; describe('FileService', () => { beforeEach(() => { diff --git a/src/app/shared/file.service.ts b/src/app/shared/file.service.ts index 03ab919322..aa433c4e1c 100644 --- a/src/app/shared/file.service.ts +++ b/src/app/shared/file.service.ts @@ -19,7 +19,7 @@ import { DomSanitizer } from '@angular/platform-browser'; import { ga4ghPath, ga4ghWorkflowIdPrefix } from './constants'; import { DescriptorTypeCompatService } from './descriptor-type-compat.service'; import { Dockstore } from './dockstore.model'; -import { SourceFile, Tag, ToolDescriptor, WorkflowVersion } from './swagger'; +import { SourceFile, Tag, ToolDescriptor, WorkflowVersion } from './openapi'; const wdlImportHttpRegEx: RegExp = new RegExp(/^\s*import\s+"?https?/, 'm'); const cwlImportHttpRegEx: RegExp = new RegExp(/^[^#]+((run)|(\$((import)|(include)|(mixin))))\s*:\s+\"?https?/, 'm'); diff --git a/src/app/shared/ga4gh-files/ga4gh-files.model.ts b/src/app/shared/ga4gh-files/ga4gh-files.model.ts index a817f88c0b..7443134f0a 100644 --- a/src/app/shared/ga4gh-files/ga4gh-files.model.ts +++ b/src/app/shared/ga4gh-files/ga4gh-files.model.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { ToolFile } from '../swagger'; +import { ToolFile } from '../openapi'; export interface GA4GHFiles { toolFiles: Array; diff --git a/src/app/shared/ga4gh-files/ga4gh-files.query.ts b/src/app/shared/ga4gh-files/ga4gh-files.query.ts index 24f95394f6..aba16a377b 100644 --- a/src/app/shared/ga4gh-files/ga4gh-files.query.ts +++ b/src/app/shared/ga4gh-files/ga4gh-files.query.ts @@ -17,7 +17,7 @@ import { Injectable } from '@angular/core'; import { QueryEntity } from '@datorama/akita'; import { Observable, of as observableOf } from 'rxjs'; import { map, switchMap } from 'rxjs/operators'; -import { ToolDescriptor, ToolFile } from '../swagger'; +import { ToolDescriptor, ToolFile } from '../openapi'; import { GA4GHFiles } from './ga4gh-files.model'; import { GA4GHFilesState, GA4GHFilesStore } from './ga4gh-files.store'; diff --git a/src/app/shared/image-provider.service.spec.ts b/src/app/shared/image-provider.service.spec.ts index ecafcaf4b2..66a310fdb8 100644 --- a/src/app/shared/image-provider.service.spec.ts +++ b/src/app/shared/image-provider.service.spec.ts @@ -22,9 +22,9 @@ import { ContainersStubService, MetadataStubService } from '../test/service-stub import { faAmazonECR, faQuay, faWhale } from './custom-icons'; import { ImageProviderService } from './image-provider.service'; import { ExtendedDockstoreTool } from './models/ExtendedDockstoreTool'; -import { MetadataService } from './swagger'; -import { ContainersService } from './swagger/api/containers.service'; -import { DockstoreTool } from './swagger/model/dockstoreTool'; +import { MetadataService } from './openapi'; +import { ContainersService } from './openapi/api/containers.service'; +import { DockstoreTool } from './openapi/model/dockstoreTool'; describe('ImageProviderService', () => { beforeEach(() => { diff --git a/src/app/shared/image-provider.service.ts b/src/app/shared/image-provider.service.ts index ac835a0a44..f8c1e6b422 100644 --- a/src/app/shared/image-provider.service.ts +++ b/src/app/shared/image-provider.service.ts @@ -19,7 +19,7 @@ import { Injectable } from '@angular/core'; import { faDocker, faGitlab, IconDefinition } from '@fortawesome/free-brands-svg-icons'; import { faAmazonECR, faQuay, faWhale } from './custom-icons'; import { ExtendedDockstoreTool } from './models/ExtendedDockstoreTool'; -import { DockstoreTool, MetadataService } from './swagger'; +import { DockstoreTool, MetadataService } from './openapi'; import RegistryEnum = DockstoreTool.RegistryEnum; @Injectable() diff --git a/src/app/shared/launch.service.ts b/src/app/shared/launch.service.ts index e79a9557c6..5e671ff5b8 100644 --- a/src/app/shared/launch.service.ts +++ b/src/app/shared/launch.service.ts @@ -17,7 +17,7 @@ import { Injectable } from '@angular/core'; import { ga4ghPath } from './constants'; import { DescriptorTypeCompatService } from './descriptor-type-compat.service'; import { Dockstore } from './dockstore.model'; -import { ToolDescriptor } from './swagger'; +import { ToolDescriptor } from './openapi'; @Injectable() export abstract class LaunchService { diff --git a/src/app/shared/list.service.ts b/src/app/shared/list.service.ts index f5697b35f8..f28a1298d4 100644 --- a/src/app/shared/list.service.ts +++ b/src/app/shared/list.service.ts @@ -17,9 +17,9 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { ContainersService } from './swagger'; -import { UsersService } from './swagger/api/users.service'; -import { WorkflowsService } from './swagger/api/workflows.service'; +import { ContainersService } from './openapi'; +import { UsersService } from './openapi/api/users.service'; +import { WorkflowsService } from './openapi/api/workflows.service'; @Injectable() export class ListService { diff --git a/src/app/shared/models/ExtendedDockstoreTool.ts b/src/app/shared/models/ExtendedDockstoreTool.ts index 069e690456..7a8cdd8c99 100644 --- a/src/app/shared/models/ExtendedDockstoreTool.ts +++ b/src/app/shared/models/ExtendedDockstoreTool.ts @@ -1,5 +1,5 @@ import { IconProp } from '@fortawesome/fontawesome-svg-core'; -import { DockstoreTool } from './../swagger/model/dockstoreTool'; +import { DockstoreTool } from './../openapi/model/dockstoreTool'; export interface ExtendedDockstoreTool extends DockstoreTool { agoMessage?: string; diff --git a/src/app/shared/models/ExtendedWorkflow.ts b/src/app/shared/models/ExtendedWorkflow.ts index 813345b713..f7df45e817 100644 --- a/src/app/shared/models/ExtendedWorkflow.ts +++ b/src/app/shared/models/ExtendedWorkflow.ts @@ -1,5 +1,5 @@ import { IconProp } from '@fortawesome/fontawesome-svg-core'; -import { Workflow } from './../swagger/model/workflow'; +import { Workflow } from './../openapi/model/workflow'; export interface ExtendedWorkflow extends Workflow { agoMessage?: string; diff --git a/src/app/shared/my-entry.ts b/src/app/shared/my-entry.ts index 5fec2cf929..1364aef791 100644 --- a/src/app/shared/my-entry.ts +++ b/src/app/shared/my-entry.ts @@ -28,7 +28,7 @@ import { SessionService } from './session/session.service'; import { MyEntriesQuery } from './state/my-entries.query'; import { MyEntriesStateService } from './state/my-entries.service'; import { TokenQuery } from './state/token.query'; -import { Configuration } from './swagger'; +import { Configuration } from './openapi'; import { UrlResolverService } from './url-resolver.service'; import { UserQuery } from './user/user.query'; diff --git a/src/app/shared/myentries.service.ts b/src/app/shared/myentries.service.ts index b89c8a1a88..5ad990f6c0 100644 --- a/src/app/shared/myentries.service.ts +++ b/src/app/shared/myentries.service.ts @@ -16,7 +16,7 @@ import { OrgToolObject } from 'app/mytools/my-tool/my-tool.component'; import { OrgWorkflowObject } from 'app/myworkflows/my-workflow/my-workflow.component'; import { EntryType } from './enum/entry-type'; -import { DockstoreTool, Workflow } from './swagger'; +import { DockstoreTool, Workflow } from './openapi'; import { UrlResolverService } from './url-resolver.service'; export abstract class MyEntriesService | OrgWorkflowObject> { diff --git a/src/app/shared/org-schema.service.spec.ts b/src/app/shared/org-schema.service.spec.ts index c8d51b21b9..d43572a5b7 100644 --- a/src/app/shared/org-schema.service.spec.ts +++ b/src/app/shared/org-schema.service.spec.ts @@ -1,6 +1,6 @@ import { inject, TestBed } from '@angular/core/testing'; import { OrgSchemaService } from './org-schema.service'; -import { Organization } from './swagger'; +import { Organization } from './openapi'; describe('OrgSchemaService', () => { beforeEach(() => { @@ -19,7 +19,6 @@ describe('OrgSchemaService', () => { avatarUrl: 'http://org.org/image', email: 'contact@org.org', status: 'APPROVED', - users: [], }; const schema = service.getSchema(org); expect(schema.name).toEqual('org'); diff --git a/src/app/shared/org-schema.service.ts b/src/app/shared/org-schema.service.ts index f05e8bbe7e..7d881f94c4 100644 --- a/src/app/shared/org-schema.service.ts +++ b/src/app/shared/org-schema.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { Organization } from './swagger'; +import { Organization } from './openapi'; export interface OrganizationSchema { '@context': string; diff --git a/src/app/shared/provider.service.spec.ts b/src/app/shared/provider.service.spec.ts index 14e05ca13a..39597f2454 100644 --- a/src/app/shared/provider.service.spec.ts +++ b/src/app/shared/provider.service.spec.ts @@ -20,7 +20,7 @@ import { validTool } from '../test/mocked-objects'; import { faDockstore } from './custom-icons'; import { ExtendedDockstoreTool } from './models/ExtendedDockstoreTool'; import { ProviderService } from './provider.service'; -import { DockstoreTool } from './swagger/model/dockstoreTool'; +import { DockstoreTool } from './openapi/model/dockstoreTool'; describe('ProviderService', () => { beforeEach(() => { diff --git a/src/app/shared/refresh.service.spec.ts b/src/app/shared/refresh.service.spec.ts index 2d8372ea29..8dfa9b7585 100644 --- a/src/app/shared/refresh.service.spec.ts +++ b/src/app/shared/refresh.service.spec.ts @@ -38,9 +38,9 @@ import { ProviderService } from './provider.service'; import { RefreshService } from './refresh.service'; import { WorkflowQuery } from './state/workflow.query'; import { WorkflowService } from './state/workflow.service'; -import { ContainersService } from './swagger/api/containers.service'; -import { UsersService } from './swagger/api/users.service'; -import { WorkflowsService } from './swagger/api/workflows.service'; +import { ContainersService } from './openapi/api/containers.service'; +import { UsersService } from './openapi/api/users.service'; +import { WorkflowsService } from './openapi/api/workflows.service'; import { ToolQuery } from './tool/tool.query'; import { DescriptorLanguageService } from './entry/descriptor-language.service'; import { HttpClientTestingModule } from '@angular/common/http/testing'; diff --git a/src/app/shared/refresh.service.ts b/src/app/shared/refresh.service.ts index 19af530825..06100c7040 100644 --- a/src/app/shared/refresh.service.ts +++ b/src/app/shared/refresh.service.ts @@ -19,10 +19,10 @@ import { ContainerService } from './container.service'; import { GA4GHFilesService } from './ga4gh-files/ga4gh-files.service'; import { WorkflowQuery } from './state/workflow.query'; import { WorkflowService } from './state/workflow.service'; -import { ContainersService } from './swagger/api/containers.service'; -import { WorkflowsService } from './swagger/api/workflows.service'; -import { DockstoreTool } from './swagger/model/dockstoreTool'; -import { Workflow } from './swagger/model/workflow'; +import { ContainersService } from './openapi/api/containers.service'; +import { WorkflowsService } from './openapi/api/workflows.service'; +import { DockstoreTool } from './openapi/model/dockstoreTool'; +import { Workflow } from './openapi/model/workflow'; import { ToolQuery } from './tool/tool.query'; @Injectable() @@ -67,7 +67,7 @@ export class RefreshService { const workflow = this.workflowQuery.getActive(); const message = 'Refreshing ' + workflow.full_workflow_path; this.alertService.start(message); - this.workflowsService.refresh(workflow.id, false).subscribe( + this.workflowsService.refresh1(workflow.id, false).subscribe( (refreshedWorkflow: Workflow) => { this.workflowService.upsertWorkflowToWorkflow(refreshedWorkflow); this.workflowService.setWorkflow(refreshedWorkflow); diff --git a/src/app/shared/selectors/entry-file-selector.ts b/src/app/shared/selectors/entry-file-selector.ts index c6b8b2245b..f028db7adf 100644 --- a/src/app/shared/selectors/entry-file-selector.ts +++ b/src/app/shared/selectors/entry-file-selector.ts @@ -25,7 +25,7 @@ import { DescriptorTypeWithPlain } from '../descriptor-type-compat.service'; import { FileService } from '../file.service'; import { GA4GHFilesService } from '../ga4gh-files/ga4gh-files.service'; import { EntriesService, GA4GHV20Service } from '../openapi'; -import { FileWrapper, Tag, ToolDescriptor, ToolFile, WorkflowVersion } from '../swagger'; +import { FileWrapper, Tag, ToolDescriptor, ToolFile, WorkflowVersion } from '../openapi'; /** * Abstract class to be implemented by components that have select boxes for a given entry and version diff --git a/src/app/shared/star-organization.service.ts b/src/app/shared/star-organization.service.ts index f46c4e7838..1167a625c9 100644 --- a/src/app/shared/star-organization.service.ts +++ b/src/app/shared/star-organization.service.ts @@ -16,7 +16,7 @@ import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; -import { Organization } from './swagger'; +import { Organization } from './openapi'; @Injectable() export class StarOrganizationService { diff --git a/src/app/shared/starring.ts b/src/app/shared/starring.ts index 983320c902..3607cf90fd 100644 --- a/src/app/shared/starring.ts +++ b/src/app/shared/starring.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { User } from './swagger'; +import { User } from './openapi'; export function isStarredByUser(starredUsers: User[], currentUser: User): boolean { if (!currentUser || !starredUsers) { diff --git a/src/app/shared/state/checker-workflow.query.ts b/src/app/shared/state/checker-workflow.query.ts index d8a012ca6a..6d8efcf8e4 100644 --- a/src/app/shared/state/checker-workflow.query.ts +++ b/src/app/shared/state/checker-workflow.query.ts @@ -18,7 +18,7 @@ import { Query } from '@datorama/akita'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { ga4ghWorkflowIdPrefix } from '../constants'; -import { BioWorkflow, DockstoreTool, Entry, Workflow } from '../swagger'; +import { BioWorkflow, DockstoreTool, Entry, Workflow } from '../openapi'; import { CheckerWorkflowState, CheckerWorkflowStore } from './checker-workflow.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/shared/state/checker-workflow.service.spec.ts b/src/app/shared/state/checker-workflow.service.spec.ts index 09e65ff803..3b7c7ae93b 100644 --- a/src/app/shared/state/checker-workflow.service.spec.ts +++ b/src/app/shared/state/checker-workflow.service.spec.ts @@ -18,8 +18,8 @@ import { RouterTestingModule } from '@angular/router/testing'; import { ContainersStubService, ContainerStubService, WorkflowsStubService, WorkflowStubService } from '../../test/service-stubs'; import { ContainerService } from '../container.service'; -import { ContainersService } from '../swagger/api/containers.service'; -import { WorkflowsService } from '../swagger/api/workflows.service'; +import { ContainersService } from '../openapi/api/containers.service'; +import { WorkflowsService } from '../openapi/api/workflows.service'; import { CheckerWorkflowService } from './checker-workflow.service'; import { WorkflowService } from './workflow.service'; import { DescriptorLanguageService } from '../entry/descriptor-language.service'; diff --git a/src/app/shared/state/checker-workflow.service.ts b/src/app/shared/state/checker-workflow.service.ts index 9cbeae1c74..b4a2afdc8a 100644 --- a/src/app/shared/state/checker-workflow.service.ts +++ b/src/app/shared/state/checker-workflow.service.ts @@ -20,13 +20,11 @@ import { combineLatest, merge as observableMerge, Observable } from 'rxjs'; import { distinctUntilChanged, filter, first, map, takeUntil } from 'rxjs/operators'; import { Base } from '../base'; import { includesAuthors, includesValidation } from '../constants'; +import { ContainersService, DockstoreTool, WorkflowsService } from '../openapi'; import { SessionQuery } from '../session/session.query'; -import { ContainersService } from '../swagger/api/containers.service'; -import { WorkflowsService } from '../swagger/api/workflows.service'; -import { BioWorkflow } from '../swagger/model/bioWorkflow'; -import { DockstoreTool } from '../swagger/model/dockstoreTool'; -import { Entry } from '../swagger/model/entry'; -import { Workflow } from '../swagger/model/workflow'; +import { BioWorkflow } from '../openapi/model/bioWorkflow'; +import { Entry } from '../openapi/model/entry'; +import { Workflow } from '../openapi/model/workflow'; import { ToolQuery } from '../tool/tool.query'; import { CheckerWorkflowQuery } from './checker-workflow.query'; import { CheckerWorkflowStore } from './checker-workflow.store'; diff --git a/src/app/shared/state/checker-workflow.store.ts b/src/app/shared/state/checker-workflow.store.ts index 0f93c2adb4..9c79c89006 100644 --- a/src/app/shared/state/checker-workflow.store.ts +++ b/src/app/shared/state/checker-workflow.store.ts @@ -15,7 +15,7 @@ */ import { Injectable } from '@angular/core'; import { Store, StoreConfig } from '@datorama/akita'; -import { Entry, Workflow } from '../swagger'; +import { Entry, Workflow } from '../openapi'; export interface CheckerWorkflowState { entry: Entry; diff --git a/src/app/shared/state/entry-wizard.service.ts b/src/app/shared/state/entry-wizard.service.ts index 1524e4e742..82c9dd8bff 100644 --- a/src/app/shared/state/entry-wizard.service.ts +++ b/src/app/shared/state/entry-wizard.service.ts @@ -3,7 +3,7 @@ import { Injectable } from '@angular/core'; import { finalize } from 'rxjs/operators'; import { AlertService } from '../alert/state/alert.service'; import { BioWorkflow, UsersService, Workflow, WorkflowsService } from '../openapi'; -import { BioWorkflow as SwaggerBioWorkflow } from '../swagger'; +import { BioWorkflow as SwaggerBioWorkflow } from '../openapi'; import { Repository } from '../openapi/model/repository'; import { EntryWizardQuery } from './entry-wizard.query'; import { EntryWizardStore } from './entry-wizard.store'; diff --git a/src/app/shared/state/extended-workflow.service.ts b/src/app/shared/state/extended-workflow.service.ts index a15e315786..17b8782dc0 100644 --- a/src/app/shared/state/extended-workflow.service.ts +++ b/src/app/shared/state/extended-workflow.service.ts @@ -20,10 +20,10 @@ import { DateService } from '../date.service'; import { DockstoreService } from '../dockstore.service'; import { ExtendedWorkflow } from '../models/ExtendedWorkflow'; import { ProviderService } from '../provider.service'; -import { Workflow } from '../swagger'; -import { BioWorkflow } from '../swagger/model/bioWorkflow'; -import { Service } from '../swagger/model/service'; -import { Notebook } from '../swagger/model/notebook'; +import { Workflow } from '../openapi'; +import { BioWorkflow } from '../openapi/model/bioWorkflow'; +import { Service } from '../openapi/model/service'; +import { Notebook } from '../openapi/model/notebook'; import { ExtendedWorkflowStore } from './extended-workflow.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/shared/state/token.query.ts b/src/app/shared/state/token.query.ts index 7d750c0289..0a2c9dc8bd 100644 --- a/src/app/shared/state/token.query.ts +++ b/src/app/shared/state/token.query.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'; import { QueryEntity } from '@datorama/akita'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { TokenUser } from '../../shared/swagger/model/tokenUser'; +import { TokenUser } from '../../shared/openapi/model/tokenUser'; import { TokenSource } from '../enum/token-source.enum'; import { TokenState, TokenStore } from './token.store'; diff --git a/src/app/shared/state/token.service.ts b/src/app/shared/state/token.service.ts index edf397b37e..e153b16270 100644 --- a/src/app/shared/state/token.service.ts +++ b/src/app/shared/state/token.service.ts @@ -2,8 +2,8 @@ import { Injectable } from '@angular/core'; import { ID, transaction } from '@datorama/akita'; import { Observable, throwError } from 'rxjs'; import { Provider } from '../enum/provider.enum'; -import { TokensService, UsersService } from '../swagger'; -import { TokenUser } from '../swagger/model/tokenUser'; +import { TokensService, UsersService } from '../openapi'; +import { TokenUser } from '../openapi/model/tokenUser'; import { TokenStore } from './token.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/shared/state/token.store.ts b/src/app/shared/state/token.store.ts index bd5c45b6b9..013c04395f 100644 --- a/src/app/shared/state/token.store.ts +++ b/src/app/shared/state/token.store.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { EntityState, EntityStore, StoreConfig } from '@datorama/akita'; -import { TokenUser } from '../swagger'; +import { TokenUser } from '../openapi'; export interface TokenState extends EntityState { gitHubOrganizations: Array; diff --git a/src/app/shared/state/workflow.query.ts b/src/app/shared/state/workflow.query.ts index 06cc21b30b..952430f4a1 100644 --- a/src/app/shared/state/workflow.query.ts +++ b/src/app/shared/state/workflow.query.ts @@ -5,9 +5,9 @@ import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { DescriptorTypeCompatService } from '../descriptor-type-compat.service'; import { DescriptorLanguageService } from '../entry/descriptor-language.service'; -import { ToolDescriptor } from '../swagger'; -import { BioWorkflow } from '../swagger/model/bioWorkflow'; -import { Service } from '../swagger/model/service'; +import { ToolDescriptor } from '../openapi'; +import { BioWorkflow } from '../openapi/model/bioWorkflow'; +import { Service } from '../openapi/model/service'; import { WorkflowState, WorkflowStore } from './workflow.store'; @Injectable({ diff --git a/src/app/shared/state/workflow.service.ts b/src/app/shared/state/workflow.service.ts index df570e9fa2..828710f68b 100644 --- a/src/app/shared/state/workflow.service.ts +++ b/src/app/shared/state/workflow.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@angular/core'; import { ID, transaction } from '@datorama/akita'; import { BehaviorSubject } from 'rxjs'; -import { AppTool, Workflow, WorkflowVersion } from '../swagger'; -import { BioWorkflow } from '../swagger/model/bioWorkflow'; -import { Service } from '../swagger/model/service'; -import { Notebook } from '../swagger/model/notebook'; +import { AppTool, Workflow, WorkflowVersion } from '../openapi'; +import { BioWorkflow } from '../openapi/model/bioWorkflow'; +import { Service } from '../openapi/model/service'; +import { Notebook } from '../openapi/model/notebook'; import { ExtendedWorkflowService } from './extended-workflow.service'; import { WorkflowQuery } from './workflow.query'; import { WorkflowStore } from './workflow.store'; diff --git a/src/app/shared/state/workflow.store.ts b/src/app/shared/state/workflow.store.ts index b8b5c30a7e..7266f84d75 100644 --- a/src/app/shared/state/workflow.store.ts +++ b/src/app/shared/state/workflow.store.ts @@ -1,8 +1,8 @@ import { Injectable } from '@angular/core'; import { ActiveState, EntityState, EntityStore, StoreConfig } from '@datorama/akita'; -import { WorkflowVersion } from '../swagger'; -import { BioWorkflow } from '../swagger/model/bioWorkflow'; -import { Service } from '../swagger/model/service'; +import { WorkflowVersion } from '../openapi'; +import { BioWorkflow } from '../openapi/model/bioWorkflow'; +import { Service } from '../openapi/model/service'; export interface WorkflowState extends EntityState, ActiveState { version: WorkflowVersion; diff --git a/src/app/shared/tool-lister.ts b/src/app/shared/tool-lister.ts index b5eb20abde..391ccfffe8 100644 --- a/src/app/shared/tool-lister.ts +++ b/src/app/shared/tool-lister.ts @@ -26,7 +26,7 @@ import { EntryType } from './enum/entry-type'; import { ProviderService } from './provider.service'; import { SessionQuery } from './session/session.query'; import { PaginatorService } from './state/paginator.service'; -import { DockstoreTool, Workflow } from './swagger'; +import { DockstoreTool, Workflow } from './openapi'; @Directive() // eslint-disable-next-line @angular-eslint/directive-class-suffix diff --git a/src/app/shared/tool/tool.query.ts b/src/app/shared/tool/tool.query.ts index 6cb741a065..e61775385a 100644 --- a/src/app/shared/tool/tool.query.ts +++ b/src/app/shared/tool/tool.query.ts @@ -18,7 +18,7 @@ import { QueryEntity } from '@datorama/akita'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { DockstoreTool } from '../swagger'; +import { DockstoreTool } from '../openapi'; import { ToolState, ToolStore } from './tool.store'; @Injectable({ diff --git a/src/app/shared/tool/tool.service.ts b/src/app/shared/tool/tool.service.ts index 192ab9e3ae..b8b1ef7ab4 100644 --- a/src/app/shared/tool/tool.service.ts +++ b/src/app/shared/tool/tool.service.ts @@ -16,7 +16,7 @@ import { Injectable } from '@angular/core'; import { transaction } from '@datorama/akita'; import { ExtendedDockstoreToolService } from '../extended-dockstoreTool/extended-dockstoreTool.service'; -import { DockstoreTool, Tag } from '../swagger'; +import { DockstoreTool, Tag } from '../openapi'; import { ToolQuery } from './tool.query'; import { ToolStore } from './tool.store'; diff --git a/src/app/shared/tool/tool.store.ts b/src/app/shared/tool/tool.store.ts index 943e18b02f..9ebb77017f 100644 --- a/src/app/shared/tool/tool.store.ts +++ b/src/app/shared/tool/tool.store.ts @@ -15,7 +15,7 @@ */ import { Injectable } from '@angular/core'; import { ActiveState, EntityState, EntityStore, StoreConfig } from '@datorama/akita'; -import { DockstoreTool } from '../swagger'; +import { DockstoreTool } from '../openapi'; export interface ToolState extends EntityState, ActiveState {} const initialState: ToolState = { diff --git a/src/app/shared/url-resolver.service.spec.ts b/src/app/shared/url-resolver.service.spec.ts index 6d4dfff522..95c1a01bd4 100644 --- a/src/app/shared/url-resolver.service.spec.ts +++ b/src/app/shared/url-resolver.service.spec.ts @@ -2,7 +2,7 @@ import { inject, TestBed } from '@angular/core/testing'; import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { RouterStub } from './../test/router-stubs'; -import { Tag, WorkflowVersion } from './swagger'; +import { Tag, WorkflowVersion } from './openapi'; import { UrlResolverService } from './url-resolver.service'; describe('Service: UrlResolver', () => { diff --git a/src/app/shared/url-resolver.service.ts b/src/app/shared/url-resolver.service.ts index 2561ab0639..e1a9b1bca5 100644 --- a/src/app/shared/url-resolver.service.ts +++ b/src/app/shared/url-resolver.service.ts @@ -1,7 +1,7 @@ import { HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Router } from '@angular/router'; -import { Tag, WorkflowVersion } from './swagger'; +import { Tag, WorkflowVersion } from './openapi'; @Injectable() export class UrlResolverService { diff --git a/src/app/shared/user/user.query.ts b/src/app/shared/user/user.query.ts index 76f5d840ad..5a2f117041 100644 --- a/src/app/shared/user/user.query.ts +++ b/src/app/shared/user/user.query.ts @@ -3,7 +3,7 @@ import { Query } from '@datorama/akita'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { ExtendedUserData, User } from '../swagger'; +import { ExtendedUserData, User } from '../openapi'; import { UserState, UserStore } from './user.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/shared/user/user.service.ts b/src/app/shared/user/user.service.ts index cd8a1406a4..a9022a25fa 100644 --- a/src/app/shared/user/user.service.ts +++ b/src/app/shared/user/user.service.ts @@ -6,7 +6,7 @@ import { GravatarService } from '../../gravatar/gravatar.service'; import { AlertService } from '../alert/state/alert.service'; import { TokenService } from '../state/token.service'; import { WorkflowService } from '../state/workflow.service'; -import { Configuration, ExtendedUserData, User, UsersService, Workflow } from '../swagger'; +import { Configuration, ExtendedUserData, User, UsersService, Workflow } from '../openapi'; import { TrackLoginService } from '../track-login.service'; import { UserStore } from './user.store'; diff --git a/src/app/shared/user/user.store.ts b/src/app/shared/user/user.store.ts index cff2799265..a2ff311f21 100644 --- a/src/app/shared/user/user.store.ts +++ b/src/app/shared/user/user.store.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { Store, StoreConfig } from '@datorama/akita'; -import { ExtendedUserData, User } from '../swagger'; +import { ExtendedUserData, User } from '../openapi'; export interface UserState { user: User; diff --git a/src/app/shared/versions.ts b/src/app/shared/versions.ts index e6f3cc4200..2680114a96 100644 --- a/src/app/shared/versions.ts +++ b/src/app/shared/versions.ts @@ -18,11 +18,11 @@ import { IconDefinition } from '@fortawesome/free-solid-svg-icons'; import { takeUntil } from 'rxjs/operators'; import { DockstoreService } from '../shared/dockstore.service'; import { EntryTab } from '../shared/entry/entry-tab'; -import { Tag } from '../shared/swagger/model/tag'; -import { WorkflowVersion } from './../shared/swagger/model/workflowVersion'; +import { Tag } from '../shared/openapi/model/tag'; +import { WorkflowVersion } from './../shared/openapi/model/workflowVersion'; import { DateService } from './date.service'; import { SessionQuery } from './session/session.query'; -import { DockstoreTool } from './swagger/model/dockstoreTool'; +import { DockstoreTool } from './openapi/model/dockstoreTool'; import { Tooltip } from './tooltip'; @Directive() diff --git a/src/app/shared/view.ts b/src/app/shared/view.ts index baa7c4ed16..bb4e084b6f 100644 --- a/src/app/shared/view.ts +++ b/src/app/shared/view.ts @@ -17,7 +17,7 @@ import { Directive, Input, OnDestroy } from '@angular/core'; import { Observable, Subject } from 'rxjs'; import { AlertQuery } from './alert/state/alert.query'; import { DateService } from './date.service'; -import { Tag, WorkflowVersion } from './swagger'; +import { Tag, WorkflowVersion } from './openapi'; @Directive() // eslint-disable-next-line @angular-eslint/directive-class-suffix diff --git a/src/app/source-file-tabs/source-file-tabs.component.spec.ts b/src/app/source-file-tabs/source-file-tabs.component.spec.ts index 4b88bfe56c..31c35ea5d1 100644 --- a/src/app/source-file-tabs/source-file-tabs.component.spec.ts +++ b/src/app/source-file-tabs/source-file-tabs.component.spec.ts @@ -34,6 +34,7 @@ describe('SourceFileTabsComponent', () => { component = fixture.componentInstance; component.version = { id: 0, name: 'abc', reference: '1' }; component.entry = { + type: '', defaultTestParameterFilePath: '', descriptorType: undefined, descriptorTypeSubclass: undefined, @@ -41,7 +42,7 @@ describe('SourceFileTabsComponent', () => { mode: undefined, organization: '', repository: '', - sourceControl: '', + sourceControl: null, workflow_path: '', }; fixture.detectChanges(); diff --git a/src/app/source-file-tabs/source-file-tabs.component.ts b/src/app/source-file-tabs/source-file-tabs.component.ts index ae633b4d9e..77428231cc 100644 --- a/src/app/source-file-tabs/source-file-tabs.component.ts +++ b/src/app/source-file-tabs/source-file-tabs.component.ts @@ -10,7 +10,7 @@ import { SourceFile, ToolDescriptor, WorkflowVersion } from 'app/shared/openapi' import { Observable } from 'rxjs'; import { finalize } from 'rxjs/operators'; import { WorkflowQuery } from '../shared/state/workflow.query'; -import { BioWorkflow, Notebook, Service } from '../shared/swagger'; +import { BioWorkflow, Notebook, Service } from '../shared/openapi'; import { SourceFileTabsService } from './source-file-tabs.service'; @Component({ diff --git a/src/app/source-file-tabs/source-file-tabs.service.spec.ts b/src/app/source-file-tabs/source-file-tabs.service.spec.ts index fd6ba81bf0..a316411665 100644 --- a/src/app/source-file-tabs/source-file-tabs.service.spec.ts +++ b/src/app/source-file-tabs/source-file-tabs.service.spec.ts @@ -3,7 +3,7 @@ import { TestBed } from '@angular/core/testing'; import { HttpClientTestingModule } from '@angular/common/http/testing'; import { DescriptorTypeCompatService } from 'app/shared/descriptor-type-compat.service'; import { FileService } from 'app/shared/file.service'; -import { WorkflowsService } from 'app/shared/swagger'; +import { WorkflowsService } from 'app/shared/openapi'; import { DescriptorTypeCompatStubService, FileStubService, ProviderStubService, WorkflowsStubService } from 'app/test/service-stubs'; import { ProviderService } from '../shared/provider.service'; import { SourceFileTabsService } from './source-file-tabs.service'; diff --git a/src/app/source-file-tabs/source-file-tabs.service.ts b/src/app/source-file-tabs/source-file-tabs.service.ts index b163162c54..5292ed47f4 100644 --- a/src/app/source-file-tabs/source-file-tabs.service.ts +++ b/src/app/source-file-tabs/source-file-tabs.service.ts @@ -3,7 +3,7 @@ import { DescriptorTypeCompatService } from 'app/shared/descriptor-type-compat.s import { DescriptorLanguageService } from 'app/shared/entry/descriptor-language.service'; import { FileService } from 'app/shared/file.service'; import { SourceFile, ToolDescriptor, WorkflowsService, WorkflowVersion } from 'app/shared/openapi'; -import { BioWorkflow, Notebook, Service, Validation } from 'app/shared/swagger'; +import { BioWorkflow, Notebook, Service, Validation } from 'app/shared/openapi'; import { Observable } from 'rxjs'; @Injectable({ diff --git a/src/app/stargazers/stargazers.component.ts b/src/app/stargazers/stargazers.component.ts index 47eee4937e..7555bc52ff 100644 --- a/src/app/stargazers/stargazers.component.ts +++ b/src/app/stargazers/stargazers.component.ts @@ -18,8 +18,8 @@ import { StarEntry } from 'app/starring/StarEntry'; import { takeUntil } from 'rxjs/operators'; import { Base } from '../shared/base'; import { altAvatarImg } from '../shared/constants'; +import { User } from '../shared/openapi'; import { StarentryService } from '../shared/starentry.service'; -import { User } from '../shared/swagger'; import { UserService } from '../shared/user/user.service'; import { StarringService } from '../starring/starring.service'; diff --git a/src/app/starredentries/starredentries.component.spec.ts b/src/app/starredentries/starredentries.component.spec.ts index 287adda854..4c03dcab30 100644 --- a/src/app/starredentries/starredentries.component.spec.ts +++ b/src/app/starredentries/starredentries.component.spec.ts @@ -4,7 +4,7 @@ import { RouterTestingModule } from '@angular/router/testing'; import { ImageProviderService } from '../shared/image-provider.service'; import { ProviderService } from './../shared/provider.service'; import { StarentryService } from './../shared/starentry.service'; -import { UsersService } from './../shared/swagger/api/users.service'; +import { UsersService } from './../shared/openapi/api/users.service'; import { StarringService } from './../starring/starring.service'; import { OrgLogoService } from './../shared/org-logo.service'; import { diff --git a/src/app/starredentries/starredentries.component.ts b/src/app/starredentries/starredentries.component.ts index ae96d449fb..2df72defc7 100644 --- a/src/app/starredentries/starredentries.component.ts +++ b/src/app/starredentries/starredentries.component.ts @@ -2,9 +2,9 @@ import { Component, OnInit } from '@angular/core'; import { Base } from '../shared/base'; import { ImageProviderService } from '../shared/image-provider.service'; import { ProviderService } from '../shared/provider.service'; -import { DockstoreTool, Entry, Organization, Workflow } from '../shared/swagger'; +import { DockstoreTool, Entry, Organization, Workflow } from '../shared/openapi'; import { UserQuery } from '../shared/user/user.query'; -import { UsersService } from './../shared/swagger/api/users.service'; +import { UsersService } from './../shared/openapi/api/users.service'; import { MatTabChangeEvent } from '@angular/material/tabs'; import { UntypedFormControl } from '@angular/forms'; import { ExtendedDockstoreTool } from 'app/shared/models/ExtendedDockstoreTool'; diff --git a/src/app/starring/starring.component.ts b/src/app/starring/starring.component.ts index 4214550b15..1b8a43217b 100644 --- a/src/app/starring/starring.component.ts +++ b/src/app/starring/starring.component.ts @@ -20,7 +20,7 @@ import { first, takeUntil } from 'rxjs/operators'; import { AlertService } from '../shared/alert/state/alert.service'; import { StarentryService } from '../shared/starentry.service'; import { isStarredByUser } from '../shared/starring'; -import { User } from '../shared/swagger/model/user'; +import { User } from '../shared/openapi/model/user'; import { TrackLoginService } from '../shared/track-login.service'; import { UserQuery } from '../shared/user/user.query'; import { StarEntry } from './StarEntry'; diff --git a/src/app/starring/starring.service.spec.ts b/src/app/starring/starring.service.spec.ts index 14edbe0c4a..f5e3869349 100644 --- a/src/app/starring/starring.service.spec.ts +++ b/src/app/starring/starring.service.spec.ts @@ -16,9 +16,9 @@ import { inject, TestBed } from '@angular/core/testing'; import { EntryType } from 'app/shared/enum/entry-type'; -import { ContainersService } from '../shared/swagger'; -import { UsersService } from './../shared/swagger/api/users.service'; -import { WorkflowsService } from './../shared/swagger/api/workflows.service'; +import { ContainersService } from '../shared/openapi'; +import { UsersService } from './../shared/openapi/api/users.service'; +import { WorkflowsService } from './../shared/openapi/api/workflows.service'; import { ContainersStubService, UsersStubService, WorkflowsStubService } from './../test/service-stubs'; import { StarringService } from './starring.service'; diff --git a/src/app/starring/starring.service.ts b/src/app/starring/starring.service.ts index 456aa386e0..b55b20249b 100644 --- a/src/app/starring/starring.service.ts +++ b/src/app/starring/starring.service.ts @@ -16,10 +16,10 @@ import { Injectable } from '@angular/core'; import { EntryType } from 'app/shared/enum/entry-type'; import { Observable } from 'rxjs'; -import { ContainersService, WorkflowsService } from '../shared/swagger'; -import { UsersService } from './../shared/swagger/api/users.service'; -import { StarRequest } from './../shared/swagger/model/starRequest'; -import { User } from './../shared/swagger/model/user'; +import { ContainersService, WorkflowsService } from '../shared/openapi'; +import { UsersService } from './../shared/openapi/api/users.service'; +import { StarRequest } from './../shared/openapi/model/starRequest'; +import { User } from './../shared/openapi/model/user'; @Injectable() export class StarringService { @@ -34,7 +34,7 @@ export class StarringService { star: toStar, }; if (entryType === EntryType.BioWorkflow) { - return this.workflowsService.starEntry(entryID, body); + return this.workflowsService.starEntry1(entryID, body); } else { return this.containersService.starEntry(entryID, body); } @@ -42,7 +42,7 @@ export class StarringService { getStarring(entryID: number, entryType: EntryType): Observable> { if (entryType === EntryType.BioWorkflow) { - return this.workflowsService.getStarredUsers(entryID); + return this.workflowsService.getStarredUsers1(entryID); } else { return this.containersService.getStarredUsers(entryID); } diff --git a/src/app/test/mocked-objects.ts b/src/app/test/mocked-objects.ts index 8be00815a4..270308d8f8 100644 --- a/src/app/test/mocked-objects.ts +++ b/src/app/test/mocked-objects.ts @@ -13,22 +13,23 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { Version } from 'app/shared/swagger/model/version'; +import { Version } from 'app/shared/openapi/model/version'; import { OrgToolObject } from '../mytools/my-tool/my-tool.component'; import { Hit } from '../search/state/search.service'; import { ExtendedDockstoreTool } from '../shared/models/ExtendedDockstoreTool'; import { ExtendedWorkflow } from '../shared/models/ExtendedWorkflow'; import { VersionVerifiedPlatform } from '../shared/openapi'; -import { Tag, WorkflowVersion } from '../shared/swagger'; -import { Notification } from '../shared/swagger/model/notification'; -import { DockstoreTool } from './../shared/swagger/model/dockstoreTool'; -import { SourceFile } from './../shared/swagger/model/sourceFile'; -import { TokenUser } from './../shared/swagger/model/tokenUser'; -import { Workflow } from './../shared/swagger/model/workflow'; +import { Tag, WorkflowVersion } from '../shared/openapi'; +import { Notification } from '../shared/openapi/model/notification'; +import { DockstoreTool } from './../shared/openapi/model/dockstoreTool'; +import { SourceFile } from './../shared/openapi/model/sourceFile'; +import { TokenUser } from './../shared/openapi/model/tokenUser'; +import { Workflow } from './../shared/openapi/model/workflow'; const DescriptorTypeEnum = Workflow.DescriptorTypeEnum; export const updatedWorkflow: Workflow = { + type: '', descriptorType: DescriptorTypeEnum.CWL, gitUrl: 'updatedGitUrl', mode: Workflow.ModeEnum.FULL, @@ -39,10 +40,11 @@ export const updatedWorkflow: Workflow = { defaultTestParameterFilePath: 'updatedTestParameterPath', sourceControl: 'github.com', source_control_provider: 'GITHUB', - descriptorTypeSubclass: 'NOT_APPLICABLE', + descriptorTypeSubclass: 'n/a', }; export const sampleWorkflow1: Workflow = { + type: '', id: 1, descriptorType: DescriptorTypeEnum.CWL, gitUrl: 'updatedGitUrl', @@ -54,10 +56,11 @@ export const sampleWorkflow1: Workflow = { defaultTestParameterFilePath: 'updatedTestParameterPath', sourceControl: 'github.com', source_control_provider: 'GITHUB', - descriptorTypeSubclass: 'NOT_APPLICABLE', + descriptorTypeSubclass: 'n/a', }; export const sampleWorkflow2: Workflow = { + type: '', id: 2, descriptorType: DescriptorTypeEnum.CWL, gitUrl: 'updatedGitUrl', @@ -69,10 +72,11 @@ export const sampleWorkflow2: Workflow = { defaultTestParameterFilePath: 'updatedTestParameterPath', sourceControl: 'github.com', source_control_provider: 'GITHUB', - descriptorTypeSubclass: 'NOT_APPLICABLE', + descriptorTypeSubclass: 'n/a', }; export const sampleWorkflow3: Workflow = { + type: '', id: 3, descriptorType: DescriptorTypeEnum.CWL, gitUrl: 'sampleGitUrl', @@ -85,10 +89,11 @@ export const sampleWorkflow3: Workflow = { sourceControl: 'github.com', source_control_provider: 'GITHUB', full_workflow_path: 'github.com/sampleWorkflowPath', - descriptorTypeSubclass: 'NOT_APPLICABLE', + descriptorTypeSubclass: 'n/a', }; export const sampleWdlWorkflow1: Workflow = { + type: '', id: 4, descriptorType: DescriptorTypeEnum.WDL, gitUrl: 'sampleGitUrl', @@ -101,10 +106,11 @@ export const sampleWdlWorkflow1: Workflow = { sourceControl: 'github.com', source_control_provider: 'GITHUB', full_workflow_path: 'github.com/DataBiosphere/topmed-workflows/Functional_Equivalence', - descriptorTypeSubclass: 'NOT_APPLICABLE', + descriptorTypeSubclass: 'n/a', }; export const sampleCwlExtendedWorkflow: ExtendedWorkflow = { + type: '', id: 5, descriptorType: DescriptorTypeEnum.CWL, gitUrl: 'git@github.com:dockstore-testing/md5sum-checker.git', @@ -117,10 +123,11 @@ export const sampleCwlExtendedWorkflow: ExtendedWorkflow = { sourceControl: 'github.com', source_control_provider: 'GITHUB', full_workflow_path: 'github.com/dockstore-testing/md5sum-checker', - descriptorTypeSubclass: 'NOT_APPLICABLE', + descriptorTypeSubclass: 'n/a', }; export const sampleWdlWorkflow2: Workflow = { + type: '', id: 5, descriptorType: DescriptorTypeEnum.WDL, gitUrl: 'sampleGitUrl', @@ -133,7 +140,7 @@ export const sampleWdlWorkflow2: Workflow = { sourceControl: 'github.com', source_control_provider: 'GITHUB', full_workflow_path: 'github.com/DataBiosphere/topmed-workflows/UM_aligner_wdl', - descriptorTypeSubclass: 'NOT_APPLICABLE', + descriptorTypeSubclass: 'n/a', }; export const sampleWorkflowVersion: WorkflowVersion = { diff --git a/src/app/test/service-stubs.ts b/src/app/test/service-stubs.ts index d724d1f1cb..91e412b1ac 100644 --- a/src/app/test/service-stubs.ts +++ b/src/app/test/service-stubs.ts @@ -13,8 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { HttpResponse } from '@angular/common/http'; import { EntryType } from 'app/shared/enum/entry-type'; -import { EntryType as newEntryType, EntryTypeMetadata } from 'app/shared/openapi'; +import { EntryType as newEntryType, EntryTypeMetadata, EntryUpdateTime } from 'app/shared/openapi'; import { BehaviorSubject, EMPTY, Observable, of as observableOf } from 'rxjs'; import { SearchFields } from '../search/state/search.service'; import { TagEditorMode } from '../shared/enum/tagEditorMode.enum'; @@ -22,15 +23,14 @@ import { CloudInstance, TRSService } from '../shared/openapi'; import { Dockstore } from './../shared/dockstore.model'; import { AdvancedSearchObject } from './../shared/models/AdvancedSearchObject'; import { SubBucket } from './../shared/models/SubBucket'; -import { Permission, ToolDescriptor } from './../shared/swagger'; -import { DockstoreTool } from './../shared/swagger/model/dockstoreTool'; -import { Metadata } from './../shared/swagger/model/metadata'; -import { SourceFile } from './../shared/swagger/model/sourceFile'; -import { StarRequest } from './../shared/swagger/model/starRequest'; -import { TokenUser } from './../shared/swagger/model/tokenUser'; -import { User } from './../shared/swagger/model/user'; -import { Workflow } from './../shared/swagger/model/workflow'; -import { WorkflowVersion } from './../shared/swagger/model/workflowVersion'; +import { Permission, ToolDescriptor } from './../shared/openapi'; +import { DockstoreTool } from './../shared/openapi/model/dockstoreTool'; +import { SourceFile } from './../shared/openapi/model/sourceFile'; +import { StarRequest } from './../shared/openapi/model/starRequest'; +import { TokenUser } from './../shared/openapi/model/tokenUser'; +import { User } from './../shared/openapi/model/user'; +import { Workflow } from './../shared/openapi/model/workflow'; +import { WorkflowVersion } from './../shared/openapi/model/workflowVersion'; import { bitbucketToken, gitHubToken, gitLabToken, quayToken, sampleTag, sampleWorkflow1, updatedWorkflow } from './mocked-objects'; import RoleEnum = Permission.RoleEnum; import DescriptorTypeEnum = Workflow.DescriptorTypeEnum; @@ -122,16 +122,6 @@ export class QueryBuilderStubService { } } -export class GA4GHStubService { - metadataGet(): Observable { - const metadata: Metadata = { - version: '3', - api_version: '3', - }; - return observableOf(metadata); - } -} - export class ExtendedGA4GHStubService { toolsIndexSearch(): Observable { return EMPTY; @@ -395,6 +385,14 @@ export class UsersStubService { postUserCloudInstance(userId: number, body: CloudInstance): Observable> { return observableOf([]); } + getUserEntries( + count?: number, + filter?: string, + type?: 'TOOLS' | 'WORKFLOWS' | 'SERVICES' | 'NOTEBOOKS', + observe?: 'response' + ): Observable>> { + return observableOf(null); + } } export class HttpStubService { @@ -776,11 +774,11 @@ export class WorkflowsStubService { sharedWorkflows() { return observableOf([]); } - getTestParameterFiles(workflowId: number, version?: string, extraHttpRequestParams?: any): Observable> { + getTestParameterFiles1(workflowId: number, version?: string, extraHttpRequestParams?: any): Observable> { return observableOf([]); } - starEntry(workflowId: number, body: StarRequest, extraHttpRequestParams?: any): Observable<{}> { + starEntry1(workflowId: number, body: StarRequest, extraHttpRequestParams?: any): Observable<{}> { return observableOf({}); } @@ -788,7 +786,7 @@ export class WorkflowsStubService { return observableOf({}); } - getStarredUsers(workflowId: number, extraHttpRequestParams?: any): Observable> { + getStarredUsers1(workflowId: number, extraHttpRequestParams?: any): Observable> { return observableOf([]); } @@ -802,8 +800,9 @@ export class WorkflowsStubService { ): Observable { return observableOf(sampleWorkflow1); } - refresh(workflowId: number, extraHttpRequestParams?: any): Observable { + refresh1(workflowId: number, extraHttpRequestParams?: any): Observable { const refreshedWorkflow: Workflow = { + type: '', descriptorType: DescriptorTypeEnum.CWL, gitUrl: 'refreshedGitUrl', mode: Workflow.ModeEnum.FULL, @@ -814,7 +813,7 @@ export class WorkflowsStubService { defaultTestParameterFilePath: 'refreshedDefaultTestParameterFilePath', sourceControl: 'github.com', source_control_provider: 'GITHUB', - descriptorTypeSubclass: 'NOT_APPLICABLE', + descriptorTypeSubclass: 'n/a', }; return observableOf(refreshedWorkflow); } @@ -829,7 +828,7 @@ export class WorkflowsStubService { const updatedWorkflowVersions: WorkflowVersion[] = []; return observableOf(updatedWorkflowVersions); } - addTestParameterFiles( + addTestParameterFiles1( workflowId: number, testParameterPaths: Array, body?: string, @@ -838,7 +837,7 @@ export class WorkflowsStubService { ): Observable> { return observableOf([]); } - deleteTestParameterFiles( + deleteTestParameterFiles1( workflowId: number, testParameterPaths: Array, version?: string, diff --git a/src/app/user-page/user-page.component.ts b/src/app/user-page/user-page.component.ts index 48c209760a..d4dc577146 100644 --- a/src/app/user-page/user-page.component.ts +++ b/src/app/user-page/user-page.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { TokenSource } from '../shared/enum/token-source.enum'; -import { Profile } from '../shared/swagger'; -import { UsersService } from '../shared/swagger/api/users.service'; +import { Profile } from '../shared/openapi'; +import { UsersService } from '../shared/openapi/api/users.service'; import { UserService } from '../shared/user/user.service'; import { ActivatedRoute, Router } from '@angular/router'; import { takeUntil } from 'rxjs/operators'; diff --git a/src/app/workflow/dag/cwl-viewer/cwl-viewer.component.ts b/src/app/workflow/dag/cwl-viewer/cwl-viewer.component.ts index efb0eeff22..57efb1c3c4 100644 --- a/src/app/workflow/dag/cwl-viewer/cwl-viewer.component.ts +++ b/src/app/workflow/dag/cwl-viewer/cwl-viewer.component.ts @@ -19,7 +19,7 @@ import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { ExtendedWorkflow } from '../../../shared/models/ExtendedWorkflow'; import { ExtendedWorkflowQuery } from '../../../shared/state/extended-workflow.query'; -import { WorkflowVersion } from '../../../shared/swagger/model/workflowVersion'; +import { WorkflowVersion } from '../../../shared/openapi/model/workflowVersion'; import { CwlViewerDescriptor, CwlViewerService } from './cwl-viewer.service'; @Component({ diff --git a/src/app/workflow/dag/dag.component.spec.ts b/src/app/workflow/dag/dag.component.spec.ts index 9b179d91a5..b02ba06580 100644 --- a/src/app/workflow/dag/dag.component.spec.ts +++ b/src/app/workflow/dag/dag.component.spec.ts @@ -18,7 +18,7 @@ import { NO_ERRORS_SCHEMA } from '@angular/core'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { FormsModule } from '@angular/forms'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { WorkflowsService } from '../../shared/swagger/api/workflows.service'; +import { WorkflowsService } from '../../shared/openapi/api/workflows.service'; import { DagStubService, WorkflowsStubService, WorkflowStubService } from '../../test/service-stubs'; import { CwlViewerComponent } from './cwl-viewer/cwl-viewer.component'; import { DagComponent } from './dag.component'; diff --git a/src/app/workflow/dag/dag.component.ts b/src/app/workflow/dag/dag.component.ts index 551d82c883..5c34b152bd 100644 --- a/src/app/workflow/dag/dag.component.ts +++ b/src/app/workflow/dag/dag.component.ts @@ -15,15 +15,15 @@ */ import { AfterViewInit, Component, ElementRef, HostListener, Input, NgZone, OnChanges, OnInit, ViewChild } from '@angular/core'; import { filterNil } from '@datorama/akita'; -import { BioWorkflow } from 'app/shared/swagger/model/bioWorkflow'; +import { BioWorkflow } from 'app/shared/openapi/model/bioWorkflow'; import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { Dockstore } from '../../shared/dockstore.model'; import { EntryTab } from '../../shared/entry/entry-tab'; import { SessionQuery } from '../../shared/session/session.query'; import { WorkflowQuery } from '../../shared/state/workflow.query'; -import { ToolDescriptor } from '../../shared/swagger'; -import { WorkflowVersion } from './../../shared/swagger/model/workflowVersion'; +import { ToolDescriptor } from '../../shared/openapi'; +import { WorkflowVersion } from './../../shared/openapi/model/workflowVersion'; import { DagQuery } from './state/dag.query'; import { DagService } from './state/dag.service'; import { DagStore } from './state/dag.store'; diff --git a/src/app/workflow/dag/state/dag.service.spec.ts b/src/app/workflow/dag/state/dag.service.spec.ts index dcfa23951a..608dceb17a 100644 --- a/src/app/workflow/dag/state/dag.service.spec.ts +++ b/src/app/workflow/dag/state/dag.service.spec.ts @@ -16,7 +16,7 @@ import { Renderer2 } from '@angular/core'; import { inject, TestBed } from '@angular/core/testing'; -import { WorkflowsService } from '../../../shared/swagger/api/workflows.service'; +import { WorkflowsService } from '../../../shared/openapi/api/workflows.service'; import { WorkflowsStubService } from '../../../test/service-stubs'; import { DagQuery } from './dag.query'; import { DagService } from './dag.service'; diff --git a/src/app/workflow/dag/state/dag.service.ts b/src/app/workflow/dag/state/dag.service.ts index b50f95eed9..80c26e7cef 100644 --- a/src/app/workflow/dag/state/dag.service.ts +++ b/src/app/workflow/dag/state/dag.service.ts @@ -22,7 +22,7 @@ import popperExtension from 'cytoscape-popper'; import { Observable } from 'rxjs'; import { finalize } from 'rxjs/operators'; import { WorkflowQuery } from '../../../shared/state/workflow.query'; -import { WorkflowsService, WorkflowVersion } from '../../../shared/swagger'; +import { WorkflowsService, WorkflowVersion } from '../../../shared/openapi'; import { DynamicPopover } from '../dynamicPopover.model'; import { DagQuery } from './dag.query'; import { DagStore } from './dag.store'; diff --git a/src/app/workflow/dag/wdl-viewer/state/wdl-viewer.service.ts b/src/app/workflow/dag/wdl-viewer/state/wdl-viewer.service.ts index a8e26cc098..094b81bff8 100644 --- a/src/app/workflow/dag/wdl-viewer/state/wdl-viewer.service.ts +++ b/src/app/workflow/dag/wdl-viewer/state/wdl-viewer.service.ts @@ -21,7 +21,7 @@ // import { switchMap } from 'rxjs/internal/operators'; // import { GA4GHFilesQuery } from '../../../../shared/ga4gh-files/ga4gh-files.query'; // import { ExtendedWorkflow } from '../../../../shared/models/ExtendedWorkflow'; -// import { ToolDescriptor, ToolFile, WorkflowsService, WorkflowVersion } from '../../../../shared/swagger'; +// import { ToolDescriptor, ToolFile, WorkflowsService, WorkflowVersion } from '../../../../shared/openapi'; // import { WdlViewerPipelineResponse } from './wdl-viewer.model'; // import { WdlViewerStore } from './wdl-viewer.store'; // diff --git a/src/app/workflow/dag/wdl-viewer/wdl-viewer.component.ts b/src/app/workflow/dag/wdl-viewer/wdl-viewer.component.ts index b2bd56c7e4..d638932da1 100644 --- a/src/app/workflow/dag/wdl-viewer/wdl-viewer.component.ts +++ b/src/app/workflow/dag/wdl-viewer/wdl-viewer.component.ts @@ -25,7 +25,7 @@ // import { FileService } from '../../../shared/file.service'; // import { GA4GHFilesService } from '../../../shared/ga4gh-files/ga4gh-files.service'; // import { WorkflowQuery } from '../../../shared/state/workflow.query'; -// import { ToolDescriptor, Workflow, WorkflowsService, WorkflowVersion } from '../../../shared/swagger'; +// import { ToolDescriptor, Workflow, WorkflowsService, WorkflowVersion } from '../../../shared/openapi'; // import { WdlViewerPipelineResponse } from './state/wdl-viewer.model'; // import { WdlViewerQuery } from './state/wdl-viewer.query'; // import { WdlViewerService } from './state/wdl-viewer.service'; diff --git a/src/app/workflow/dag/wdl-viewer/wdl-viewer.service.spec.ts b/src/app/workflow/dag/wdl-viewer/wdl-viewer.service.spec.ts index 6844e2e1d5..7346ad3dc9 100644 --- a/src/app/workflow/dag/wdl-viewer/wdl-viewer.service.spec.ts +++ b/src/app/workflow/dag/wdl-viewer/wdl-viewer.service.spec.ts @@ -18,7 +18,7 @@ // import { inject, TestBed } from '@angular/core/testing'; // import { of as observableOf, throwError } from 'rxjs'; // import { ExtendedWorkflow } from '../../../shared/models/ExtendedWorkflow'; -// import { ToolDescriptor, WorkflowVersion } from '../../../shared/swagger'; +// import { ToolDescriptor, WorkflowVersion } from '../../../shared/openapi'; // import { sampleWorkflow1, sampleWorkflow2, sampleWorkflowVersion } from '../../../test/mocked-objects'; // import { WdlViewerService } from './state/wdl-viewer.service'; // diff --git a/src/app/workflow/executions/executions-tab.component.ts b/src/app/workflow/executions/executions-tab.component.ts index 4057e9ab18..868621f5fc 100644 --- a/src/app/workflow/executions/executions-tab.component.ts +++ b/src/app/workflow/executions/executions-tab.component.ts @@ -18,7 +18,7 @@ import { EntryTab } from '../../shared/entry/entry-tab'; import { CloudInstance, ExtendedGA4GHService, Metrics, ValidatorInfo, ValidatorVersionInfo, WorkflowVersion } from '../../shared/openapi'; import { SessionQuery } from '../../shared/session/session.query'; import { takeUntil } from 'rxjs/operators'; -import { BioWorkflow, Notebook, Service } from '../../shared/swagger'; +import { BioWorkflow, Notebook, Service } from '../../shared/openapi'; import { CheckerWorkflowQuery } from '../../shared/state/checker-workflow.query'; import PartnerEnum = CloudInstance.PartnerEnum; import { MatSelectChange } from '@angular/material/select'; diff --git a/src/app/workflow/files/state/files.query.ts b/src/app/workflow/files/state/files.query.ts index 3e67cb8c88..70c45141ee 100644 --- a/src/app/workflow/files/state/files.query.ts +++ b/src/app/workflow/files/state/files.query.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { QueryEntity } from '@datorama/akita'; -import { FileWrapper } from '../../../shared/swagger'; +import { FileWrapper } from '../../../shared/openapi'; import { FilesState, FilesStore } from './files.store'; /** diff --git a/src/app/workflow/files/state/files.service.ts b/src/app/workflow/files/state/files.service.ts index fb063849f0..b151a1df67 100644 --- a/src/app/workflow/files/state/files.service.ts +++ b/src/app/workflow/files/state/files.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@angular/core'; -import { FileWrapper } from '../../../shared/swagger'; +import { FileWrapper } from '../../../shared/openapi'; import { FilesStore } from './files.store'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/workflow/files/state/files.store.ts b/src/app/workflow/files/state/files.store.ts index 83ee0f0539..2cfebbead3 100644 --- a/src/app/workflow/files/state/files.store.ts +++ b/src/app/workflow/files/state/files.store.ts @@ -15,7 +15,7 @@ */ import { Injectable } from '@angular/core'; import { EntityState, EntityStore, StoreConfig } from '@datorama/akita'; -import { FileWrapper } from '../../../shared/swagger'; +import { FileWrapper } from '../../../shared/openapi'; export interface FilesState extends EntityState {} diff --git a/src/app/workflow/info-tab/info-tab.component.ts b/src/app/workflow/info-tab/info-tab.component.ts index a9edfbff58..c6562866dc 100644 --- a/src/app/workflow/info-tab/info-tab.component.ts +++ b/src/app/workflow/info-tab/info-tab.component.ts @@ -31,9 +31,9 @@ import { ExtendedWorkflow } from '../../shared/models/ExtendedWorkflow'; import { SessionQuery } from '../../shared/session/session.query'; import { WorkflowQuery } from '../../shared/state/workflow.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { ToolDescriptor } from '../../shared/swagger'; -import { Workflow } from '../../shared/swagger/model/workflow'; -import { WorkflowVersion } from '../../shared/swagger/model/workflowVersion'; +import { ToolDescriptor } from '../../shared/openapi'; +import { Workflow } from '../../shared/openapi/model/workflow'; +import { WorkflowVersion } from '../../shared/openapi/model/workflowVersion'; import { Tooltip } from '../../shared/tooltip'; import { validationDescriptorPatterns } from '../../shared/validationMessages.model'; import { InfoTabService } from './info-tab.service'; diff --git a/src/app/workflow/info-tab/info-tab.service.spec.ts b/src/app/workflow/info-tab/info-tab.service.spec.ts index 5822638434..ea47e42fb7 100644 --- a/src/app/workflow/info-tab/info-tab.service.spec.ts +++ b/src/app/workflow/info-tab/info-tab.service.spec.ts @@ -8,7 +8,7 @@ import { EntryType } from 'app/shared/enum/entry-type'; import { CustomMaterialModule } from 'app/shared/modules/material.module'; import { ExtendedWorkflowQuery } from 'app/shared/state/extended-workflow.query'; import { WorkflowService } from 'app/shared/state/workflow.service'; -import { WorkflowsService } from 'app/shared/swagger'; +import { WorkflowsService } from 'app/shared/openapi'; import { WorkflowsStubService, WorkflowStubService } from 'app/test/service-stubs'; import { sampleWorkflow3 } from '../../test/mocked-objects'; import { InfoTabService } from './info-tab.service'; diff --git a/src/app/workflow/info-tab/info-tab.service.ts b/src/app/workflow/info-tab/info-tab.service.ts index d947fe9852..2506cd3142 100644 --- a/src/app/workflow/info-tab/info-tab.service.ts +++ b/src/app/workflow/info-tab/info-tab.service.ts @@ -25,9 +25,9 @@ import { DescriptorLanguageService } from '../../shared/entry/descriptor-languag import { ExtendedWorkflow } from '../../shared/models/ExtendedWorkflow'; import { ExtendedWorkflowQuery } from '../../shared/state/extended-workflow.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { ToolDescriptor } from '../../shared/swagger'; -import { WorkflowsService } from '../../shared/swagger/api/workflows.service'; -import { Workflow } from '../../shared/swagger/model/workflow'; +import { ToolDescriptor } from '../../shared/openapi'; +import { WorkflowsService } from '../../shared/openapi/api/workflows.service'; +import { Workflow } from '../../shared/openapi/model/workflow'; @Injectable() export class InfoTabService { @@ -111,7 +111,7 @@ export class InfoTabService { const partialEntryForUpdate = this.getPartialEntryForUpdate(workflow); this.workflowsService.updateWorkflow(workflow.id, partialEntryForUpdate).subscribe((response) => { this.alertService.start('Updating ' + message); - this.workflowsService.refresh(workflow.id).subscribe( + this.workflowsService.refresh1(workflow.id).subscribe( (refreshResponse) => { this.workflowService.upsertWorkflowToWorkflow(refreshResponse); this.workflowService.setWorkflow(refreshResponse); diff --git a/src/app/workflow/launch-third-party/launch-third-party.component.spec.ts b/src/app/workflow/launch-third-party/launch-third-party.component.spec.ts index 9e4a90f202..7e3b85f4ad 100644 --- a/src/app/workflow/launch-third-party/launch-third-party.component.spec.ts +++ b/src/app/workflow/launch-third-party/launch-third-party.component.spec.ts @@ -8,7 +8,7 @@ import { GA4GHFilesService } from '../../shared/ga4gh-files/ga4gh-files.service' import { GA4GHFilesStore } from '../../shared/ga4gh-files/ga4gh-files.store'; import { CustomMaterialModule } from '../../shared/modules/material.module'; import { CloudInstancesService, GA4GHV20Service, UsersService } from '../../shared/openapi'; -import { WorkflowsService } from '../../shared/swagger/api/workflows.service'; +import { WorkflowsService } from '../../shared/openapi/api/workflows.service'; import { sampleWdlWorkflow2, sampleWorkflowVersion } from '../../test/mocked-objects'; import { CloudInstancesStubService, UsersStubService, WorkflowsStubService } from '../../test/service-stubs'; import { LaunchThirdPartyComponent } from './launch-third-party.component'; diff --git a/src/app/workflow/launch-third-party/launch-third-party.component.ts b/src/app/workflow/launch-third-party/launch-third-party.component.ts index 7fc554c227..11c9c0decc 100644 --- a/src/app/workflow/launch-third-party/launch-third-party.component.ts +++ b/src/app/workflow/launch-third-party/launch-third-party.component.ts @@ -8,9 +8,9 @@ import { DescriptorTypeCompatService } from '../../shared/descriptor-type-compat import { Dockstore } from '../../shared/dockstore.model'; import { GA4GHFilesQuery } from '../../shared/ga4gh-files/ga4gh-files.query'; import { CloudInstance, CloudInstancesService, User, UsersService } from '../../shared/openapi'; -import { ToolFile, Workflow, WorkflowVersion } from '../../shared/swagger'; -import { WorkflowsService } from '../../shared/swagger/api/workflows.service'; -import { SourceFile } from '../../shared/swagger/model/sourceFile'; +import { ToolFile, Workflow, WorkflowVersion } from '../../shared/openapi'; +import { WorkflowsService } from '../../shared/openapi/api/workflows.service'; +import { SourceFile } from '../../shared/openapi/model/sourceFile'; import { UserQuery } from '../../shared/user/user.query'; import { DescriptorsQuery } from './state/descriptors-query'; import { DescriptorsStore } from './state/descriptors-store'; @@ -263,11 +263,11 @@ export class LaunchThirdPartyComponent extends Base implements OnChanges, OnInit this.descriptorLanguageService.workflowDescriptorTypeEnumToExtendedDescriptorLanguageBean( descriptorType ).descriptorLanguageEnum; - this.workflowsService.primaryDescriptor(this.workflow.id, this.selectedVersion.name, descriptorType).subscribe((sourceFile) => { + this.workflowsService.primaryDescriptor1(this.workflow.id, this.selectedVersion.name, descriptorType).subscribe((sourceFile) => { this.descriptorsService.updatePrimaryDescriptor(sourceFile); if (fileDescriptors.some((file) => file.file_type === FileTypeEnum.SECONDARYDESCRIPTOR)) { this.workflowsService - .secondaryDescriptors(this.workflow.id, this.selectedVersion.name, descriptorLanguageEnum) + .secondaryDescriptors1(this.workflow.id, this.selectedVersion.name, descriptorLanguageEnum) .subscribe((sourceFiles: Array) => { this.descriptorsService.updateSecondaryDescriptors(sourceFiles); }); diff --git a/src/app/workflow/launch-third-party/state/descriptors-query.ts b/src/app/workflow/launch-third-party/state/descriptors-query.ts index 09fea25a4d..a20a28b8b6 100644 --- a/src/app/workflow/launch-third-party/state/descriptors-query.ts +++ b/src/app/workflow/launch-third-party/state/descriptors-query.ts @@ -3,7 +3,7 @@ import { Query } from '@datorama/akita'; import { Observable, of as observableOf } from 'rxjs'; import { map, mergeMap } from 'rxjs/operators'; import { FileService } from '../../../shared/file.service'; -import { SourceFile } from '../../../shared/swagger'; +import { SourceFile } from '../../../shared/openapi'; import { createInitialState, DescriptorsState, DescriptorsStore } from './descriptors-store'; @Injectable() diff --git a/src/app/workflow/launch-third-party/state/descriptors-store.ts b/src/app/workflow/launch-third-party/state/descriptors-store.ts index d180b644d8..0c810023d5 100644 --- a/src/app/workflow/launch-third-party/state/descriptors-store.ts +++ b/src/app/workflow/launch-third-party/state/descriptors-store.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { Store, StoreConfig } from '@datorama/akita'; -import { SourceFile } from '../../../shared/swagger'; +import { SourceFile } from '../../../shared/openapi'; export interface DescriptorsState { primaryDescriptor: SourceFile; diff --git a/src/app/workflow/launch-third-party/state/descriptors.service.ts b/src/app/workflow/launch-third-party/state/descriptors.service.ts index a6e1448648..1b8d7a969e 100644 --- a/src/app/workflow/launch-third-party/state/descriptors.service.ts +++ b/src/app/workflow/launch-third-party/state/descriptors.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { ga4ghPath, ga4ghWorkflowIdPrefix } from '../../../shared/constants'; import { Dockstore } from '../../../shared/dockstore.model'; -import { SourceFile } from '../../../shared/swagger'; +import { SourceFile } from '../../../shared/openapi'; import { DescriptorsStore } from './descriptors-store'; @Injectable() diff --git a/src/app/workflow/launch/launch.component.ts b/src/app/workflow/launch/launch.component.ts index 6e20b5a98f..5ec3ee162c 100644 --- a/src/app/workflow/launch/launch.component.ts +++ b/src/app/workflow/launch/launch.component.ts @@ -22,11 +22,11 @@ import { EntryTab } from '../../shared/entry/entry-tab'; import { GA4GHFilesQuery } from '../../shared/ga4gh-files/ga4gh-files.query'; import { GA4GHFilesService } from '../../shared/ga4gh-files/ga4gh-files.service'; import { WorkflowQuery } from '../../shared/state/workflow.query'; -import { ToolDescriptor, ToolFile } from '../../shared/swagger'; -import { DockstoreTool } from '../../shared/swagger/model/dockstoreTool'; +import { ToolDescriptor, ToolFile } from '../../shared/openapi'; +import { DockstoreTool } from '../../shared/openapi/model/dockstoreTool'; import { Dockstore } from '../../shared/dockstore.model'; -import { Workflow } from '../../shared/swagger/model/workflow'; -import { WorkflowVersion } from '../../shared/swagger/model/workflowVersion'; +import { Workflow } from '../../shared/openapi/model/workflow'; +import { WorkflowVersion } from '../../shared/openapi/model/workflowVersion'; import { WorkflowLaunchService } from '../launch/workflow-launch.service'; import { EntryType } from '../../shared/enum/entry-type'; diff --git a/src/app/workflow/launch/workflow-launch.service.spec.ts b/src/app/workflow/launch/workflow-launch.service.spec.ts index ef7f190bfe..6c0ef6f900 100644 --- a/src/app/workflow/launch/workflow-launch.service.spec.ts +++ b/src/app/workflow/launch/workflow-launch.service.spec.ts @@ -18,7 +18,7 @@ import { inject, TestBed } from '@angular/core/testing'; import { ga4ghPath } from '../../shared/constants'; import { Dockstore } from '../../shared/dockstore.model'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { ToolDescriptor } from '../../shared/swagger'; +import { ToolDescriptor } from '../../shared/openapi'; import { WorkflowStubService } from '../../test/service-stubs'; import { WorkflowLaunchService } from './workflow-launch.service'; diff --git a/src/app/workflow/launch/workflow-launch.service.ts b/src/app/workflow/launch/workflow-launch.service.ts index 4d9a04ff3c..d3cfbf3e74 100644 --- a/src/app/workflow/launch/workflow-launch.service.ts +++ b/src/app/workflow/launch/workflow-launch.service.ts @@ -18,7 +18,7 @@ import { ga4ghPath, ga4ghWorkflowIdPrefix } from '../../shared/constants'; import { DescriptorTypeCompatService } from '../../shared/descriptor-type-compat.service'; import { Dockstore } from '../../shared/dockstore.model'; import { LaunchService } from '../../shared/launch.service'; -import { ToolDescriptor } from '../../shared/swagger'; +import { ToolDescriptor } from '../../shared/openapi'; import { EntryType } from '../../shared/enum/entry-type'; @Injectable() diff --git a/src/app/workflow/permissions/permissions.component.spec.ts b/src/app/workflow/permissions/permissions.component.spec.ts index 699b5f3f66..967f2720d0 100644 --- a/src/app/workflow/permissions/permissions.component.spec.ts +++ b/src/app/workflow/permissions/permissions.component.spec.ts @@ -3,7 +3,7 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { RefreshService } from '../../shared/refresh.service'; import { TokenService } from '../../shared/state/token.service'; import { CustomMaterialModule } from './../../shared/modules/material.module'; -import { WorkflowsService } from './../../shared/swagger/api/workflows.service'; +import { WorkflowsService } from './../../shared/openapi/api/workflows.service'; import { RefreshStubService, TokenStubService, WorkflowsStubService } from './../../test/service-stubs'; import { PermissionsComponent } from './permissions.component'; diff --git a/src/app/workflow/permissions/permissions.component.ts b/src/app/workflow/permissions/permissions.component.ts index a3e1af06b4..b51de007de 100644 --- a/src/app/workflow/permissions/permissions.component.ts +++ b/src/app/workflow/permissions/permissions.component.ts @@ -8,7 +8,7 @@ import { AlertService } from '../../shared/alert/state/alert.service'; import { Dockstore } from '../../shared/dockstore.model'; import { TokenSource } from '../../shared/enum/token-source.enum'; import { TokenQuery } from '../../shared/state/token.query'; -import { Permission, Workflow, WorkflowsService } from '../../shared/swagger'; +import { Permission, Workflow, WorkflowsService } from '../../shared/openapi'; import { WorkflowSubClass } from '../../shared/openapi'; import RoleEnum = Permission.RoleEnum; @@ -52,7 +52,7 @@ export class PermissionsComponent implements OnInit { remove(email: string, permission: RoleEnum) { this.updating++; this.alertService.start(`Removing ${email}`); - this.workflowsService.removeWorkflowRole(this.workflow.full_workflow_path, email, permission, WorkflowSubClass.BIOWORKFLOW).subscribe( + this.workflowsService.removeWorkflowRole(this.workflow.full_workflow_path, WorkflowSubClass.BIOWORKFLOW, email, permission).subscribe( (userPermissions: Permission[]) => { this.alertService.detailedSuccess(`Removed ${email}`); this.updating--; diff --git a/src/app/workflow/refresh-workflow-organization/refresh-workflow-organization.component.spec.ts b/src/app/workflow/refresh-workflow-organization/refresh-workflow-organization.component.spec.ts index b9a82daada..9e5042544e 100644 --- a/src/app/workflow/refresh-workflow-organization/refresh-workflow-organization.component.spec.ts +++ b/src/app/workflow/refresh-workflow-organization/refresh-workflow-organization.component.spec.ts @@ -27,7 +27,7 @@ import { ProviderService } from '../../shared/provider.service'; import { RefreshService } from '../../shared/refresh.service'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { UsersService } from '../../shared/swagger/api/users.service'; +import { UsersService } from '../../shared/openapi/api/users.service'; import { DateStubService, ExtendedDockstoreToolStubService, diff --git a/src/app/workflow/refresh-workflow-organization/refresh-workflow-organization.component.ts b/src/app/workflow/refresh-workflow-organization/refresh-workflow-organization.component.ts index 201463159d..fc9b9f12c2 100644 --- a/src/app/workflow/refresh-workflow-organization/refresh-workflow-organization.component.ts +++ b/src/app/workflow/refresh-workflow-organization/refresh-workflow-organization.component.ts @@ -26,8 +26,8 @@ import { AlertService } from '../../shared/alert/state/alert.service'; import { RefreshOrganizationComponent } from '../../shared/refresh-organization/refresh-organization.component'; import { ExtendedWorkflowQuery } from '../../shared/state/extended-workflow.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { WorkflowsService } from '../../shared/swagger'; -import { Workflow } from '../../shared/swagger/model/workflow'; +import { WorkflowsService } from '../../shared/openapi'; +import { Workflow } from '../../shared/openapi/model/workflow'; import { UserQuery } from '../../shared/user/user.query'; @Component({ @@ -88,7 +88,7 @@ export class RefreshWorkflowOrganizationComponent extends RefreshOrganizationCom .pipe( concatMap((workflow) => { this.alertService.start(`Refreshing ${workflow.full_workflow_path}`); - return this.workflowsService.refresh(workflow.id).pipe( + return this.workflowsService.refresh1(workflow.id).pipe( catchError((error) => { this.alertService.detailedError(error); return EMPTY; diff --git a/src/app/workflow/register-workflow-modal/register-workflow-modal.component.ts b/src/app/workflow/register-workflow-modal/register-workflow-modal.component.ts index a1ffaf4de4..4f1461fe4f 100644 --- a/src/app/workflow/register-workflow-modal/register-workflow-modal.component.ts +++ b/src/app/workflow/register-workflow-modal/register-workflow-modal.component.ts @@ -25,7 +25,7 @@ import { debounceTime, takeUntil } from 'rxjs/operators'; import { AlertQuery } from '../../shared/alert/state/alert.query'; import { formInputDebounceTime } from '../../shared/constants'; import { Dockstore } from '../../shared/dockstore.model'; -import { BioWorkflow, Service, ToolDescriptor, Workflow } from '../../shared/swagger'; +import { BioWorkflow, Service, ToolDescriptor, Workflow } from '../../shared/openapi'; import { Tooltip } from '../../shared/tooltip'; import { diff --git a/src/app/workflow/register-workflow-modal/register-workflow-modal.service.spec.ts b/src/app/workflow/register-workflow-modal/register-workflow-modal.service.spec.ts index f36eb64e0b..6cd4ca5a57 100644 --- a/src/app/workflow/register-workflow-modal/register-workflow-modal.service.spec.ts +++ b/src/app/workflow/register-workflow-modal/register-workflow-modal.service.spec.ts @@ -19,10 +19,10 @@ import { RouterTestingModule } from '@angular/router/testing'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { DescriptorLanguageService } from '../../shared/entry/descriptor-language.service'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { ToolDescriptor } from '../../shared/swagger'; -import { HostedService } from '../../shared/swagger/api/hosted.service'; -import { MetadataService } from '../../shared/swagger/api/metadata.service'; -import { WorkflowsService } from '../../shared/swagger/api/workflows.service'; +import { ToolDescriptor } from '../../shared/openapi'; +import { HostedService } from '../../shared/openapi/api/hosted.service'; +import { MetadataService } from '../../shared/openapi/api/metadata.service'; +import { WorkflowsService } from '../../shared/openapi/api/workflows.service'; import { DescriptorLanguageStubService, HostedStubService, diff --git a/src/app/workflow/register-workflow-modal/register-workflow-modal.service.ts b/src/app/workflow/register-workflow-modal/register-workflow-modal.service.ts index 9c910bf703..1e85fa916a 100644 --- a/src/app/workflow/register-workflow-modal/register-workflow-modal.service.ts +++ b/src/app/workflow/register-workflow-modal/register-workflow-modal.service.ts @@ -21,7 +21,7 @@ import { BehaviorSubject, Observable } from 'rxjs'; import { AlertService } from '../../shared/alert/state/alert.service'; import { DescriptorLanguageService } from '../../shared/entry/descriptor-language.service'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { HostedService, MetadataService, Workflow, WorkflowsService } from '../../shared/swagger'; +import { HostedService, MetadataService, Workflow, WorkflowsService } from '../../shared/openapi'; import { RegisterWorkflowModalComponent } from './register-workflow-modal.component'; import DescriptorTypeEnum = Workflow.DescriptorTypeEnum; @@ -112,7 +112,7 @@ export class RegisterWorkflowModalService { ) .subscribe( (result) => { - this.workflowsService.refresh(result.id).subscribe( + this.workflowsService.refresh1(result.id).subscribe( (refreshResult) => { this.workflows.push(refreshResult); this.alertService.detailedSuccess(); @@ -141,8 +141,8 @@ export class RegisterWorkflowModalService { this.alertService.start('Registering new workflow'); this.hostedService .createHostedWorkflow( - hostedWorkflow.repository, undefined, + hostedWorkflow.repository, descriptorLanguageEnum, undefined, hostedWorkflow.entryName ? hostedWorkflow.entryName : undefined diff --git a/src/app/workflow/snapshot-exporter-modal/snaphot-exporter-modal.component.ts b/src/app/workflow/snapshot-exporter-modal/snaphot-exporter-modal.component.ts index eb580f1864..56f3ae5729 100644 --- a/src/app/workflow/snapshot-exporter-modal/snaphot-exporter-modal.component.ts +++ b/src/app/workflow/snapshot-exporter-modal/snaphot-exporter-modal.component.ts @@ -8,7 +8,7 @@ import { AlertQuery } from '../../shared/alert/state/alert.query'; import { Base } from '../../shared/base'; import { Dockstore } from '../../shared/dockstore.model'; import { TokenQuery } from '../../shared/state/token.query'; -import { BioWorkflow, WorkflowVersion } from '../../shared/swagger'; +import { BioWorkflow, WorkflowVersion } from '../../shared/openapi'; import { SnapshotExporterModalService } from './snapshot-exporter-modal.service'; export enum SnapshotExporterAction { diff --git a/src/app/workflow/snapshot-exporter-modal/snapshot-exporter-modal.service.ts b/src/app/workflow/snapshot-exporter-modal/snapshot-exporter-modal.service.ts index 0e52ec6bdb..8fa220795a 100644 --- a/src/app/workflow/snapshot-exporter-modal/snapshot-exporter-modal.service.ts +++ b/src/app/workflow/snapshot-exporter-modal/snapshot-exporter-modal.service.ts @@ -5,7 +5,7 @@ import { AlertService } from '../../shared/alert/state/alert.service'; import { EntriesService } from '../../shared/openapi'; import { WorkflowQuery } from '../../shared/state/workflow.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { Workflow, WorkflowsService, WorkflowVersion } from '../../shared/swagger'; +import { Workflow, WorkflowsService, WorkflowVersion } from '../../shared/openapi'; @Injectable({ providedIn: 'root', diff --git a/src/app/workflow/tool-tab/tool-tab.component.spec.ts b/src/app/workflow/tool-tab/tool-tab.component.spec.ts index e9cd2a1623..123ec4013a 100644 --- a/src/app/workflow/tool-tab/tool-tab.component.spec.ts +++ b/src/app/workflow/tool-tab/tool-tab.component.spec.ts @@ -18,7 +18,7 @@ import { FormsModule } from '@angular/forms'; import { RefreshAlertModule } from '../../shared/alert/alert.module'; import { CustomMaterialModule } from '../../shared/modules/material.module'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { WorkflowsService } from '../../shared/swagger'; +import { WorkflowsService } from '../../shared/openapi'; import { WorkflowsStubService, WorkflowStubService } from '../../test/service-stubs'; import { ToolTabComponent } from './tool-tab.component'; import { HttpClientTestingModule } from '@angular/common/http/testing'; diff --git a/src/app/workflow/tool-tab/tool-tab.component.ts b/src/app/workflow/tool-tab/tool-tab.component.ts index 94b81fa33b..0f73077eec 100644 --- a/src/app/workflow/tool-tab/tool-tab.component.ts +++ b/src/app/workflow/tool-tab/tool-tab.component.ts @@ -14,15 +14,15 @@ * limitations under the License. */ import { Component, Input } from '@angular/core'; -import { BioWorkflow } from 'app/shared/swagger/model/bioWorkflow'; -import { Service } from 'app/shared/swagger/model/service'; -import { Notebook } from 'app/shared/swagger/model/notebook'; +import { BioWorkflow } from 'app/shared/openapi/model/bioWorkflow'; +import { Service } from 'app/shared/openapi/model/service'; +import { Notebook } from 'app/shared/openapi/model/notebook'; import { Observable } from 'rxjs'; import { finalize, map } from 'rxjs/operators'; import { EntryTab } from '../../shared/entry/entry-tab'; import { WorkflowQuery } from '../../shared/state/workflow.query'; -import { ToolDescriptor, WorkflowVersion } from '../../shared/swagger'; -import { WorkflowsService } from './../../shared/swagger/api/workflows.service'; +import { ToolDescriptor, WorkflowVersion } from '../../shared/openapi'; +import { WorkflowsService } from './../../shared/openapi/api/workflows.service'; import { ToolTabService } from './tool-tab.service'; @Component({ diff --git a/src/app/workflow/tool-tab/tool-tab.service.spec.ts b/src/app/workflow/tool-tab/tool-tab.service.spec.ts index 8f29ebf81c..efe21df146 100644 --- a/src/app/workflow/tool-tab/tool-tab.service.spec.ts +++ b/src/app/workflow/tool-tab/tool-tab.service.spec.ts @@ -1,5 +1,5 @@ import { inject, TestBed } from '@angular/core/testing'; -import { ToolDescriptor } from '../../shared/swagger'; +import { ToolDescriptor } from '../../shared/openapi'; import { ToolTabService } from './tool-tab.service'; import { DescriptorLanguageService } from '../../shared/entry/descriptor-language.service'; import { HttpClientTestingModule } from '@angular/common/http/testing'; diff --git a/src/app/workflow/tool-tab/tool-tab.service.ts b/src/app/workflow/tool-tab/tool-tab.service.ts index 3af7e2437f..54871cf554 100644 --- a/src/app/workflow/tool-tab/tool-tab.service.ts +++ b/src/app/workflow/tool-tab/tool-tab.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { DescriptorLanguageService } from 'app/shared/entry/descriptor-language.service'; -import { ToolDescriptor } from '../../shared/swagger'; +import { ToolDescriptor } from '../../shared/openapi'; @Injectable({ providedIn: 'root', diff --git a/src/app/workflow/version-modal/version-modal.component.ts b/src/app/workflow/version-modal/version-modal.component.ts index e96c5166cd..c2ad7d60b1 100644 --- a/src/app/workflow/version-modal/version-modal.component.ts +++ b/src/app/workflow/version-modal/version-modal.component.ts @@ -16,8 +16,8 @@ import { AfterViewChecked, Component, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { NgForm } from '@angular/forms'; import { MAT_DIALOG_DATA } from '@angular/material/dialog'; -import { Service } from 'app/shared/swagger/model/service'; -import { Notebook } from 'app/shared/swagger/model/notebook'; +import { Service } from 'app/shared/openapi/model/service'; +import { Notebook } from 'app/shared/openapi/model/notebook'; import { Observable, Subject } from 'rxjs'; import { debounceTime, shareReplay, takeUntil } from 'rxjs/operators'; import { AlertQuery } from '../../shared/alert/state/alert.query'; @@ -25,10 +25,10 @@ import { formInputDebounceTime } from '../../shared/constants'; import { DateService } from '../../shared/date.service'; import { SessionQuery } from '../../shared/session/session.query'; import { WorkflowQuery } from '../../shared/state/workflow.query'; -import { AppTool, BioWorkflow, ToolDescriptor } from '../../shared/swagger'; -import { SourceFile } from '../../shared/swagger/model/sourceFile'; -import { Workflow } from '../../shared/swagger/model/workflow'; -import { WorkflowVersion } from '../../shared/swagger/model/workflowVersion'; +import { AppTool, BioWorkflow, ToolDescriptor } from '../../shared/openapi'; +import { SourceFile } from '../../shared/openapi/model/sourceFile'; +import { Workflow } from '../../shared/openapi/model/workflow'; +import { WorkflowVersion } from '../../shared/openapi/model/workflowVersion'; import { Tooltip } from '../../shared/tooltip'; import { formErrors, validationDescriptorPatterns, validationMessages } from '../../shared/validationMessages.model'; import { VersionModalService } from './version-modal.service'; diff --git a/src/app/workflow/version-modal/version-modal.service.spec.ts b/src/app/workflow/version-modal/version-modal.service.spec.ts index 0ad710612e..19ccc11566 100644 --- a/src/app/workflow/version-modal/version-modal.service.spec.ts +++ b/src/app/workflow/version-modal/version-modal.service.spec.ts @@ -21,16 +21,17 @@ import { AlertQuery } from '../../shared/alert/state/alert.query'; import { RefreshService } from '../../shared/refresh.service'; import { WorkflowQuery } from '../../shared/state/workflow.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { WorkflowsService } from '../../shared/swagger/api/workflows.service'; -import { WorkflowVersion } from '../../shared/swagger/model/workflowVersion'; +import { WorkflowsService } from '../../shared/openapi/api/workflows.service'; +import { WorkflowVersion } from '../../shared/openapi/model/workflowVersion'; import { RefreshStubService, WorkflowsStubService, WorkflowStubService } from '../../test/service-stubs'; import { VersionModalService } from './version-modal.service'; -import { BioWorkflow, Workflow } from '../../shared/swagger'; +import { BioWorkflow, Workflow } from '../../shared/openapi'; import DescriptorTypeSubclassEnum = Workflow.DescriptorTypeSubclassEnum; describe('Service: version-modal.service.ts', () => { let workflowQuery: jasmine.SpyObj; const workflow: BioWorkflow = { + type: '', mode: 'FULL', gitUrl: 'git@github.com:test/potato.git', organization: 'test', @@ -39,7 +40,7 @@ describe('Service: version-modal.service.ts', () => { descriptorType: 'CWL', workflow_path: 'github.com/test/potato', defaultTestParameterFilePath: null, - descriptorTypeSubclass: DescriptorTypeSubclassEnum.NOTAPPLICABLE, + descriptorTypeSubclass: DescriptorTypeSubclassEnum.NA, }; beforeEach(() => { TestBed.configureTestingModule({ diff --git a/src/app/workflow/version-modal/version-modal.service.ts b/src/app/workflow/version-modal/version-modal.service.ts index 9eeca766b6..a6a1ecfbd7 100644 --- a/src/app/workflow/version-modal/version-modal.service.ts +++ b/src/app/workflow/version-modal/version-modal.service.ts @@ -21,10 +21,9 @@ import { AlertService } from '../../shared/alert/state/alert.service'; import { RefreshService } from '../../shared/refresh.service'; import { WorkflowQuery } from '../../shared/state/workflow.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { AppTool, BioWorkflow, DockstoreTool, Service, Notebook, Workflow } from '../../shared/swagger'; -import { WorkflowsService } from '../../shared/swagger/api/workflows.service'; -import { SourceFile } from '../../shared/swagger/model/sourceFile'; -import { WorkflowVersion } from '../../shared/swagger/model/workflowVersion'; +import { AppTool, BioWorkflow, DockstoreTool, Service, Notebook, Workflow, WorkflowsService } from '../../shared/openapi'; +import { SourceFile } from '../../shared/openapi/model/sourceFile'; +import { WorkflowVersion } from '../../shared/openapi/model/workflowVersion'; import ModeEnum = DockstoreTool.ModeEnum; @Injectable() @@ -131,14 +130,14 @@ export class VersionModalService { const workflowId = this.workflowQuery.getActive().id; if (toDelete && toAdd) { return this.workflowsService - .addTestParameterFiles(workflowId, newCWL, workflowVersion.name) - .pipe(concatMap(() => this.workflowsService.deleteTestParameterFiles(workflowId, missingCWL, workflowVersion.name))); + .addTestParameterFiles1(workflowId, newCWL, workflowVersion.name) + .pipe(concatMap(() => this.workflowsService.deleteTestParameterFiles1(workflowId, missingCWL, workflowVersion.name))); } if (toDelete && !toAdd) { - return this.workflowsService.deleteTestParameterFiles(workflowId, missingCWL, workflowVersion.name); + return this.workflowsService.deleteTestParameterFiles1(workflowId, missingCWL, workflowVersion.name); } if (toAdd && !toDelete) { - return this.workflowsService.addTestParameterFiles(workflowId, newCWL, workflowVersion.name); + return this.workflowsService.addTestParameterFiles1(workflowId, newCWL, workflowVersion.name); } if (!toAdd && !toDelete) { return observableOf(null); diff --git a/src/app/workflow/versions/versions.component.spec.ts b/src/app/workflow/versions/versions.component.spec.ts index 60cd8f625e..581ebc47c1 100644 --- a/src/app/workflow/versions/versions.component.spec.ts +++ b/src/app/workflow/versions/versions.component.spec.ts @@ -30,7 +30,7 @@ import { ProviderService } from '../../shared/provider.service'; import { RefreshService } from '../../shared/refresh.service'; import { WorkflowQuery } from '../../shared/state/workflow.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { WorkflowsService } from '../../shared/swagger/api/workflows.service'; +import { WorkflowsService } from '../../shared/openapi/api/workflows.service'; import { DateStubService, ImageProviderStubService, diff --git a/src/app/workflow/versions/versions.component.ts b/src/app/workflow/versions/versions.component.ts index a7ae3e700c..aaf1649321 100644 --- a/src/app/workflow/versions/versions.component.ts +++ b/src/app/workflow/versions/versions.component.ts @@ -26,8 +26,8 @@ import { EntryType, VersionVerifiedPlatform } from '../../shared/openapi'; import { ExtendedWorkflow } from '../../shared/models/ExtendedWorkflow'; import { SessionQuery } from '../../shared/session/session.query'; import { ExtendedWorkflowQuery } from '../../shared/state/extended-workflow.query'; -import { Workflow } from '../../shared/swagger/model/workflow'; -import { WorkflowVersion } from '../../shared/swagger/model/workflowVersion'; +import { Workflow } from '../../shared/openapi/model/workflow'; +import { WorkflowVersion } from '../../shared/openapi/model/workflowVersion'; import { Versions } from '../../shared/versions'; @Component({ diff --git a/src/app/workflow/view/view.component.spec.ts b/src/app/workflow/view/view.component.spec.ts index 9cbd4021a6..08c94c398e 100644 --- a/src/app/workflow/view/view.component.spec.ts +++ b/src/app/workflow/view/view.component.spec.ts @@ -19,9 +19,9 @@ import { CustomMaterialModule } from 'app/shared/modules/material.module'; import { RefreshService } from 'app/shared/refresh.service'; import { DateService } from '../../shared/date.service'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { WorkflowsService } from '../../shared/swagger'; -import { HostedService } from '../../shared/swagger/api/hosted.service'; -import { WorkflowVersion } from '../../shared/swagger/model/workflowVersion'; +import { WorkflowsService } from '../../shared/openapi'; +import { HostedService } from '../../shared/openapi/api/hosted.service'; +import { WorkflowVersion } from '../../shared/openapi/model/workflowVersion'; import { AccountsStubService, DateStubService, diff --git a/src/app/workflow/view/view.component.ts b/src/app/workflow/view/view.component.ts index aa4f1371d2..90736ce523 100644 --- a/src/app/workflow/view/view.component.ts +++ b/src/app/workflow/view/view.component.ts @@ -18,9 +18,9 @@ import { Component, Input, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { EntryType } from 'app/shared/enum/entry-type'; import { RefreshService } from 'app/shared/refresh.service'; -import { BioWorkflow } from 'app/shared/swagger/model/bioWorkflow'; -import { Service } from 'app/shared/swagger/model/service'; -import { Notebook } from 'app/shared/swagger/model/notebook'; +import { BioWorkflow } from 'app/shared/openapi/model/bioWorkflow'; +import { Service } from 'app/shared/openapi/model/service'; +import { Notebook } from 'app/shared/openapi/model/notebook'; import { UserQuery } from 'app/shared/user/user.query'; import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -29,12 +29,13 @@ import { AlertService } from '../../shared/alert/state/alert.service'; import { bootstrap4largeModalSize, ga4ghServiceIdPrefix, ga4ghWorkflowIdPrefix } from '../../shared/constants'; import { DateService } from '../../shared/date.service'; import { Dockstore } from '../../shared/dockstore.model'; +import { Entry } from '../../shared/openapi'; import { SessionQuery } from '../../shared/session/session.query'; import { WorkflowQuery } from '../../shared/state/workflow.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { HostedService } from '../../shared/swagger/api/hosted.service'; -import { WorkflowsService } from '../../shared/swagger/api/workflows.service'; -import { Workflow } from '../../shared/swagger/model/workflow'; +import { HostedService } from '../../shared/openapi/api/hosted.service'; +import { WorkflowsService } from '../../shared/openapi/api/workflows.service'; +import { Workflow } from '../../shared/openapi/model/workflow'; import { View } from '../../shared/view'; import { SnaphotExporterModalComponent, SnapshotExporterAction } from '../snapshot-exporter-modal/snaphot-exporter-modal.component'; import { VersionModalComponent } from '../version-modal/version-modal.component'; @@ -81,7 +82,7 @@ export class ViewWorkflowComponent extends View implements OnInit { showVersionModal() { this.versionModalService.setVersion(this.version); this.alertService.start('Getting test parameter files'); - this.workflowsService.getTestParameterFiles(this.workflowId, this.version.name).subscribe( + this.workflowsService.getTestParameterFiles1(this.workflowId, this.version.name).subscribe( (items) => { this.items = items; this.versionModalService.setTestParameterFiles(this.items); @@ -175,7 +176,9 @@ export class ViewWorkflowComponent extends View implements OnInit { this.alertService.start('Deleting version ' + this.version.name); this.hostedService.deleteHostedWorkflowVersion(this.workflow.id, this.version.name).subscribe( (result) => { - this.workflowService.setWorkflow(result); + if (this.isWorkflow(result)) { + this.workflowService.setWorkflow(result); + } this.alertService.simpleSuccess(); }, (error: HttpErrorResponse) => { @@ -184,4 +187,8 @@ export class ViewWorkflowComponent extends View implements OnInit { ); } } + + private isWorkflow(entry: Entry): entry is Workflow { + return (entry as Workflow).entryType === 'WORKFLOW'; + } } diff --git a/src/app/workflow/view/view.service.ts b/src/app/workflow/view/view.service.ts index 8a35aa03c2..b2b93bc7dd 100644 --- a/src/app/workflow/view/view.service.ts +++ b/src/app/workflow/view/view.service.ts @@ -19,8 +19,7 @@ import { BehaviorSubject, Subject } from 'rxjs'; import { AlertService } from '../../shared/alert/state/alert.service'; import { WorkflowQuery } from '../../shared/state/workflow.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { WorkflowVersion } from '../../shared/swagger'; -import { WorkflowsService } from '../../shared/swagger/api/workflows.service'; +import { WorkflowsService, WorkflowVersion } from '../../shared/openapi'; @Injectable() export class ViewService { @@ -45,7 +44,7 @@ export class ViewService { const workflowId = this.workflowQuery.getActive().id; const message = 'Updating default workflow version'; this.alertService.start(message); - this.workflowsService.updateWorkflowDefaultVersion(workflowId, newDefaultVersion).subscribe( + this.workflowsService.updateDefaultVersion1(workflowId, newDefaultVersion).subscribe( (updatedWorkflow) => { this.alertService.detailedSuccess(); this.workflowService.upsertWorkflowToWorkflow(updatedWorkflow); diff --git a/src/app/workflow/workflow-file-editor/workflow-file-editor.component.spec.ts b/src/app/workflow/workflow-file-editor/workflow-file-editor.component.spec.ts index e420fb0d36..16a8155af3 100644 --- a/src/app/workflow/workflow-file-editor/workflow-file-editor.component.spec.ts +++ b/src/app/workflow/workflow-file-editor/workflow-file-editor.component.spec.ts @@ -22,8 +22,8 @@ import { PrivateFilePathPipe } from './../../shared/entry/private-file-path.pipe import { PublicFileDownloadPipe } from './../../shared/entry/public-file-download.pipe'; import { FileService } from './../../shared/file.service'; import { RefreshService } from './../../shared/refresh.service'; -import { HostedService } from './../../shared/swagger/api/hosted.service'; -import { WorkflowsService } from './../../shared/swagger/api/workflows.service'; +import { HostedService } from './../../shared/openapi/api/hosted.service'; +import { WorkflowsService } from './../../shared/openapi/api/workflows.service'; import { HostedStubService, RefreshStubService, WorkflowsStubService, WorkflowStubService } from './../../test/service-stubs'; import { WorkflowFileEditorComponent } from './workflow-file-editor.component'; diff --git a/src/app/workflow/workflow-file-editor/workflow-file-editor.component.ts b/src/app/workflow/workflow-file-editor/workflow-file-editor.component.ts index dae6f9b8db..c86425bbd1 100644 --- a/src/app/workflow/workflow-file-editor/workflow-file-editor.component.ts +++ b/src/app/workflow/workflow-file-editor/workflow-file-editor.component.ts @@ -23,10 +23,10 @@ import { FileEditing } from '../../shared/file-editing'; import { WorkflowQuery } from '../../shared/state/workflow.query'; import { WorkflowService } from '../../shared/state/workflow.service'; -import { ToolDescriptor, Workflow } from '../../shared/swagger'; -import { HostedService } from './../../shared/swagger/api/hosted.service'; -import { WorkflowsService } from './../../shared/swagger/api/workflows.service'; -import { WorkflowVersion } from './../../shared/swagger/model/workflowVersion'; +import { ToolDescriptor, Workflow } from '../../shared/openapi'; +import { HostedService } from './../../shared/openapi/api/hosted.service'; +import { WorkflowsService } from './../../shared/openapi/api/workflows.service'; +import { WorkflowVersion } from './../../shared/openapi/model/workflowVersion'; @Component({ selector: 'app-workflow-file-editor', diff --git a/src/app/workflow/workflow.component.ts b/src/app/workflow/workflow.component.ts index ce2c216d0b..18d944a5f8 100644 --- a/src/app/workflow/workflow.component.ts +++ b/src/app/workflow/workflow.component.ts @@ -20,9 +20,9 @@ import { MatChipInputEvent } from '@angular/material/chips'; import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; import { AlertService } from 'app/shared/alert/state/alert.service'; -import { BioWorkflow } from 'app/shared/swagger/model/bioWorkflow'; -import { Service } from 'app/shared/swagger/model/service'; -import { Notebook } from 'app/shared/swagger/model/notebook'; +import { BioWorkflow } from 'app/shared/openapi/model/bioWorkflow'; +import { Service } from 'app/shared/openapi/model/service'; +import { Notebook } from 'app/shared/openapi/model/notebook'; import { Observable, ReplaySubject } from 'rxjs'; import { finalize, takeUntil } from 'rxjs/operators'; import { AlertQuery } from '../shared/alert/state/alert.query'; @@ -52,10 +52,10 @@ import { SessionService } from '../shared/session/session.service'; import { ExtendedWorkflowQuery } from '../shared/state/extended-workflow.query'; import { WorkflowQuery } from '../shared/state/workflow.query'; import { WorkflowService } from '../shared/state/workflow.service'; -import { Permission, ToolDescriptor, WorkflowsService } from '../shared/swagger'; -import { Tag } from '../shared/swagger/model/tag'; -import { Workflow } from '../shared/swagger/model/workflow'; -import { WorkflowVersion } from '../shared/swagger/model/workflowVersion'; +import { Permission, ToolDescriptor, WorkflowsService } from '../shared/openapi'; +import { Tag } from '../shared/openapi/model/tag'; +import { Workflow } from '../shared/openapi/model/workflow'; +import { WorkflowVersion } from '../shared/openapi/model/workflowVersion'; import { TrackLoginService } from '../shared/track-login.service'; import { UrlResolverService } from '../shared/url-resolver.service'; import { EntriesService, WorkflowSubClass } from '../shared/openapi'; @@ -489,7 +489,7 @@ export class WorkflowComponent extends Entry implements AfterViewInit, OnInit { // TODO: Move most of this function to the service, sadly 'this.labelsEditMode' makes it more difficult setWorkflowLabels() { this.alertService.start('Setting labels'); - this.workflowsService.updateLabels(this.workflow.id, this.workflowEditData.labels.join(', ')).subscribe( + this.workflowsService.updateLabels1(this.workflow.id, this.workflowEditData.labels.join(', ')).subscribe( (workflow) => { this.workflowService.setWorkflow(workflow); this.labelsEditMode = false; diff --git a/src/app/workflows/list/list.component.ts b/src/app/workflows/list/list.component.ts index 7fe788e223..d1e3c7e478 100644 --- a/src/app/workflows/list/list.component.ts +++ b/src/app/workflows/list/list.component.ts @@ -23,7 +23,7 @@ import { DockstoreService } from '../../shared/dockstore.service'; import { ProviderService } from '../../shared/provider.service'; import { PaginatorQuery } from '../../shared/state/paginator.query'; import { PaginatorService } from '../../shared/state/paginator.service'; -import { Workflow, WorkflowsService } from '../../shared/swagger'; +import { Workflow, WorkflowsService } from '../../shared/openapi'; import { ToolLister } from '../../shared/tool-lister'; import { PublishedWorkflowsDataSource } from './published-workflows.datasource'; diff --git a/src/app/workflows/list/published-workflows.datasource.spec.ts b/src/app/workflows/list/published-workflows.datasource.spec.ts index b91dd6316c..196a19d634 100644 --- a/src/app/workflows/list/published-workflows.datasource.spec.ts +++ b/src/app/workflows/list/published-workflows.datasource.spec.ts @@ -18,7 +18,7 @@ import { inject, TestBed } from '@angular/core/testing'; import { ImageProviderService } from '../../shared/image-provider.service'; import { ProviderService } from '../../shared/provider.service'; -import { WorkflowsService } from '../../shared/swagger'; +import { WorkflowsService } from '../../shared/openapi'; import { WorkflowsStubService } from './../../test/service-stubs'; import { PublishedWorkflowsDataSource } from './published-workflows.datasource'; diff --git a/src/app/workflows/list/published-workflows.datasource.ts b/src/app/workflows/list/published-workflows.datasource.ts index 40e9c90449..9661db78d9 100644 --- a/src/app/workflows/list/published-workflows.datasource.ts +++ b/src/app/workflows/list/published-workflows.datasource.ts @@ -22,7 +22,7 @@ import { catchError, finalize } from 'rxjs/operators'; import { ExtendedWorkflow } from '../../shared/models/ExtendedWorkflow'; import { WorkflowSubClass } from '../../shared/openapi'; import { ProviderService } from '../../shared/provider.service'; -import { Workflow, WorkflowsService } from '../../shared/swagger'; +import { Workflow, WorkflowsService } from '../../shared/openapi'; @Injectable() export class PublishedWorkflowsDataSource implements DataSource { From 4ccc1a8713d932f913afee2f11880396ad1e1c27 Mon Sep 17 00:00:00 2001 From: Ying Yang <68610185+y-ng@users.noreply.github.com> Date: Thu, 15 Jun 2023 17:50:56 -0400 Subject: [PATCH 026/128] SEAB-3959: Set up coverage in SonarCloud for dockstore-ui2 project (#1798) * SEAB-3959: Merge from forked repo (#1797) * add sonar project properties file * run sonarscanner * try remote docker environment * run sonarscanner from zip * add condition to install scanner * update properties file * change what step is called * add sonarcloud context * Update sonar-project.properties --------- Co-authored-by: Denis Yuen --- .circleci/config.yml | 27 +++++++++++++++++++++++++++ sonar-project.properties | 13 +++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 sonar-project.properties diff --git a/.circleci/config.yml b/.circleci/config.yml index e1d39a67b4..480e8cab16 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -141,6 +141,32 @@ jobs: - run: name: Codecov command: bash -i -c 'npx codecov' + - run: + name: Install and run sonarscanner + command: | + if [[ -n "${CIRCLE_BRANCH}" ]] && [[ -n "${CIRCLE_PULL_REQUEST}" || "${CIRCLE_BRANCH}" == "develop" ]] + then + export SONAR_SCANNER_VERSION=4.7.0.2747 + export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux + curl --create-dirs -sSLo $HOME/.sonar/sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux.zip + unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ + export PATH=$SONAR_SCANNER_HOME/bin:$PATH + export SONAR_SCANNER_OPTS="-server" + + if [ -n "${CIRCLE_PULL_REQUEST}" ] + then + pr=$(echo https://api.github.com/repos/${CIRCLE_PULL_REQUEST:19} | sed "s/\/pull\//\/pulls\//") + base=$(curl -s $pr | jq '.base.ref') + number=$(curl -s $pr | jq '.number') + + sonar-scanner \ + -Dsonar.pullrequest.key=$number \ + -Dsonar.pullrequest.branch=$CIRCLE_BRANCH \ + -Dsonar.pullrequest.base=$base + else + sonar-scanner + fi + fi - persist_to_workspace: root: . paths: @@ -269,6 +295,7 @@ workflows: only: /.*/ context: - dockerhub + - sonarcloud - integration_test: name: integration_test_1 integration_test_name: group1 diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000000..04ea99dfcf --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,13 @@ +# Organization and project keys are displayed in the right sidebar of the project homepage +sonar.organization=dockstore +sonar.projectKey=dockstore_dockstore-ui2 +sonar.host.url=https://sonarcloud.io + +# Path is relative to the sonar-project.properties file +sonar.sources=src + +# Encoding of the source code. Default is default system encoding +#sonar.sourceEncoding=UTF-8 + +# Path to coverage report file +sonar.javascript.lcov.reportPaths=coverage/lcov.info From 00ddae35519a089cc96db28d858776d01247f099 Mon Sep 17 00:00:00 2001 From: Nayeon Hyun <61166764+hyunnaye@users.noreply.github.com> Date: Tue, 20 Jun 2023 17:50:52 -0400 Subject: [PATCH 027/128] SEAB-5413: create pipe for partner display names (#1800) * create pipe for partner display names * oops added the pipe * integration test fix * pr review change * fixed test --- cypress/e2e/immutableDatabaseTests/metrics.ts | 8 ++-- .../entry/platform-partner.pipe.spec.ts | 20 +++++++++ src/app/shared/entry/platform-partner.pipe.ts | 43 +++++++++++++++++++ src/app/shared/pipe/pipe.module.ts | 4 +- .../executions/executions-tab.component.html | 2 +- .../executions-tab.component.spec.ts | 3 +- src/app/workflows/workflows.module.ts | 2 + 7 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 src/app/shared/entry/platform-partner.pipe.spec.ts create mode 100644 src/app/shared/entry/platform-partner.pipe.ts diff --git a/cypress/e2e/immutableDatabaseTests/metrics.ts b/cypress/e2e/immutableDatabaseTests/metrics.ts index 2bcec7d79f..dd600ec6fa 100644 --- a/cypress/e2e/immutableDatabaseTests/metrics.ts +++ b/cypress/e2e/immutableDatabaseTests/metrics.ts @@ -22,7 +22,7 @@ describe('Dockstore Metrics', () => { goToTab('Metrics'); cy.get('[data-cy=no-metrics-banner]').should('not.exist'); - cy.get('[data-cy=metrics-partner-dropdown]').should('contain', 'ALL'); + cy.get('[data-cy=metrics-partner-dropdown]').should('contain', 'All Platforms'); cy.get('[data-cy=execution-metrics-table]').should('be.visible'); cy.get('[data-cy=execution-metrics-total-executions-div]').should('contain', 9); cy.get('[data-cy=validations-table]').should('be.visible'); @@ -31,10 +31,10 @@ describe('Dockstore Metrics', () => { cy.get('[data-cy=metrics-validator-tool-options]').should('contain', 'WOMTOOL'); cy.get('[data-cy=metrics-validator-tool-options]').contains('WOMTOOL').click(); cy.get('[data-cy=validations-table]').should('be.visible'); - // Change partner to DNAstack, which only has validator tool metrics + // Change partner to Galaxy, which only has validator tool metrics cy.get('[data-cy=metrics-partner-dropdown]').click(); - cy.get('[data-cy=metrics-partner-options]').contains('GALAXY').click(); - cy.get('[data-cy=metrics-partner-dropdown]').should('contain', 'GALAXY'); + cy.get('[data-cy=metrics-partner-options]').contains('Galaxy').click(); + cy.get('[data-cy=metrics-partner-dropdown]').should('contain', 'Galaxy'); cy.get('[data-cy=execution-metrics-table]').should('not.exist'); cy.get('[data-cy=execution-metrics-total-executions-div]').should('not.exist'); cy.get('[data-cy=validations-table]').should('be.visible'); diff --git a/src/app/shared/entry/platform-partner.pipe.spec.ts b/src/app/shared/entry/platform-partner.pipe.spec.ts new file mode 100644 index 0000000000..096089dbc5 --- /dev/null +++ b/src/app/shared/entry/platform-partner.pipe.spec.ts @@ -0,0 +1,20 @@ +import { PlatformPartnerPipe } from './platform-partner.pipe'; +import { TestBed } from '@angular/core/testing'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; + +describe('Pipe: PlatformPartner', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule], + providers: [PlatformPartnerPipe], + }); + }); + + it('create an instance', () => { + const pipe = new PlatformPartnerPipe(); + expect(pipe).toBeTruthy(); + expect(pipe.transform('DNA_STACK')).toBe('DNAstack'); + expect(pipe.transform('AGC')).toBe('AGC'); + expect(pipe.transform('ANVIL')).toBe('AnVIL'); + }); +}); diff --git a/src/app/shared/entry/platform-partner.pipe.ts b/src/app/shared/entry/platform-partner.pipe.ts new file mode 100644 index 0000000000..1169aa59ea --- /dev/null +++ b/src/app/shared/entry/platform-partner.pipe.ts @@ -0,0 +1,43 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import { CloudInstance } from '../../shared/openapi'; +import PartnerEnum = CloudInstance.PartnerEnum; + +@Pipe({ + name: 'platformPartner', +}) +export class PlatformPartnerPipe implements PipeTransform { + /** + * Transforms PartnerEnum into their display name + * @param partner + * @returns {string} + */ + transform(partner: PartnerEnum): string { + switch (partner) { + case PartnerEnum.GALAXY: + return 'Galaxy'; + case PartnerEnum.TERRA: + return 'Terra'; + case PartnerEnum.DNASTACK: + return 'DNAstack'; + case PartnerEnum.DNANEXUS: + return 'DNAnexus'; + case PartnerEnum.NHLBIBIODATACATALYST: + return 'NHLBI BioData Catalyst'; + case PartnerEnum.ANVIL: + return 'AnVIL'; + case PartnerEnum.CAVATICA: + return 'Cavatica'; + case PartnerEnum.NEXTFLOWTOWER: + return 'Nextflow Tower'; + case PartnerEnum.ELWAZI: + return 'eLwazi'; + case PartnerEnum.OTHER: + return 'Other'; + case PartnerEnum.ALL: + return 'All Platforms'; + default: + //includes CGC, AGC + return partner; + } + } +} diff --git a/src/app/shared/pipe/pipe.module.ts b/src/app/shared/pipe/pipe.module.ts index 44a11372d6..b5ab142e48 100644 --- a/src/app/shared/pipe/pipe.module.ts +++ b/src/app/shared/pipe/pipe.module.ts @@ -15,6 +15,7 @@ import { DescriptorLanguagePipe } from '../entry/descriptor-language.pipe'; import { RecentEventsPipe } from '../entry/recent-events.pipe'; import { EntryToDisplayNamePipe } from '../entry-to-display-name.pipe'; import { SearchAuthorsHtmlPipe } from 'app/search/search-authors-html.pipe'; +import { PlatformPartnerPipe } from '../entry/platform-partner.pipe'; const DECLARATIONS: any[] = [ FilePathPipe, @@ -31,11 +32,12 @@ const DECLARATIONS: any[] = [ DescriptorLanguagePipe, RecentEventsPipe, SearchAuthorsHtmlPipe, + PlatformPartnerPipe, ]; @NgModule({ imports: [CommonModule], declarations: DECLARATIONS, exports: DECLARATIONS, - providers: [EntryToDisplayNamePipe], + providers: [EntryToDisplayNamePipe, PlatformPartnerPipe], }) export class PipeModule {} diff --git a/src/app/workflow/executions/executions-tab.component.html b/src/app/workflow/executions/executions-tab.component.html index fb8a83790c..2410951392 100644 --- a/src/app/workflow/executions/executions-tab.component.html +++ b/src/app/workflow/executions/executions-tab.component.html @@ -13,7 +13,7 @@ Select a Platform - {{ partner }} + {{ partner | platformPartner }} diff --git a/src/app/workflow/executions/executions-tab.component.spec.ts b/src/app/workflow/executions/executions-tab.component.spec.ts index ccd03f1ee3..39460560f0 100644 --- a/src/app/workflow/executions/executions-tab.component.spec.ts +++ b/src/app/workflow/executions/executions-tab.component.spec.ts @@ -22,6 +22,7 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { AlertService } from '../../shared/alert/state/alert.service'; import { DescriptorLanguageService } from '../../shared/entry/descriptor-language.service'; import { CustomMaterialModule } from '../../shared/modules/material.module'; +import { PipeModule } from '../../shared/pipe/pipe.module'; describe('ExecutionsTabComponent', () => { let component: ExecutionsTabComponent; @@ -32,7 +33,7 @@ describe('ExecutionsTabComponent', () => { TestBed.configureTestingModule({ declarations: [ExecutionsTabComponent], schemas: [NO_ERRORS_SCHEMA], - imports: [HttpClientTestingModule, CustomMaterialModule], + imports: [HttpClientTestingModule, CustomMaterialModule, PipeModule], providers: [{ provide: DescriptorLanguageService, useClass: DescriptorLanguageStubService }, AlertService], }).compileComponents(); }) diff --git a/src/app/workflows/workflows.module.ts b/src/app/workflows/workflows.module.ts index fc02206bbe..4f40c05836 100644 --- a/src/app/workflows/workflows.module.ts +++ b/src/app/workflows/workflows.module.ts @@ -16,9 +16,11 @@ import { NgModule } from '@angular/core'; import { WorkflowsPageModule } from 'app/shared/modules/workflowsPage.module'; import { workflowsRouting } from './workflows.routing'; +import { PlatformPartnerPipe } from '../shared/entry/platform-partner.pipe'; @NgModule({ declarations: [], imports: [workflowsRouting, WorkflowsPageModule], + providers: [PlatformPartnerPipe], }) export class WorkflowsModule {} From 81eb885e5498083156fa1f175159a20f42217eea Mon Sep 17 00:00:00 2001 From: Kathy Tran Date: Wed, 21 Jun 2023 10:25:39 -0400 Subject: [PATCH 028/128] Clean up smoke test code after 1.14 release (#1801) https://github.com/dockstore/dockstore/issues/5372 https://ucsc-cgl.atlassian.net/browse/DOCK-2328 --- cypress/e2e/smokeTests/sharedTests/basic-enduser.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts b/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts index 72e077ffb3..4db10ae1a7 100644 --- a/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts +++ b/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts @@ -140,9 +140,7 @@ describe('Test search page functionality', () => { cy.wait(2500); // Wait less than ideal, facets keep getting rerendered is the problem cy.contains('mat-checkbox', 'Nextflow'); // wait for the checkbox to reappear, indicating the filtering is almost complete cy.get('[data-cy=descriptorType]').each(($el, index, $list) => { - // In 1.13, the Nextflow badge displays as 'NFL' - // In 1.14, the Nextflow badge displays as 'Nextflow' - expect($el.text()).to.be.oneOf(['Nextflow', 'NFL']); + cy.wrap($el).contains('Nextflow'); }); cy.url().should('contain', 'descriptorType=NFL'); cy.url().should('contain', 'searchMode=files'); @@ -286,9 +284,7 @@ function testWorkflow(url: string, version1: string, version2: string, trsUrl: s if (type === 'WDL') { const launchSelectors = ['dnanexusLaunchWith', 'terraLaunchWith', 'anvilLaunchWith']; launchSelectors - // In 1.13, launch button images are - // In 1.14, launch button images are - .map((launchSelector) => `[data-cy=${launchSelector}] svg, [data-cy=${launchSelector}] img`) + .map((launchSelector) => `[data-cy=${launchSelector}] img`) .forEach((launchSelector) => cy.get(launchSelector).should('exist')); } if (type === 'CWL') { From e9c99068e54dbac452a3709a066d075ff0061289 Mon Sep 17 00:00:00 2001 From: Ying Yang <68610185+y-ng@users.noreply.github.com> Date: Thu, 22 Jun 2023 12:03:04 -0400 Subject: [PATCH 029/128] DOCK-645: Exclude common terms from tag cloud (#1799) * exclude common terms from tagcloud query * move common terms constant * add to spec file * try to exclude spec files from coverage --- sonar-project.properties | 1 + src/app/search/query-builder.service.spec.ts | 4 ++ src/app/search/query-builder.service.ts | 3 +- src/app/shared/constants.ts | 39 ++++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/sonar-project.properties b/sonar-project.properties index 04ea99dfcf..b0f4a7d0d3 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -5,6 +5,7 @@ sonar.host.url=https://sonarcloud.io # Path is relative to the sonar-project.properties file sonar.sources=src +sonar.exclusions=src/**/*.spec.ts # Encoding of the source code. Default is default system encoding #sonar.sourceEncoding=UTF-8 diff --git a/src/app/search/query-builder.service.spec.ts b/src/app/search/query-builder.service.spec.ts index f8c97efd4d..4fea15a049 100644 --- a/src/app/search/query-builder.service.spec.ts +++ b/src/app/search/query-builder.service.spec.ts @@ -31,4 +31,8 @@ describe('Service: QueryBuilder', () => { it('should ...', inject([QueryBuilderService], (service: QueryBuilderService) => { expect(service).toBeTruthy(); })); + it('should exclude terms from tagcloud query', inject([QueryBuilderService], (service: QueryBuilderService) => { + expect(service.getTagCloudQuery('tool')).toContain('significant_text'); + expect(service.getTagCloudQuery('tool')).toContain('exclude'); + })); }); diff --git a/src/app/search/query-builder.service.ts b/src/app/search/query-builder.service.ts index 3fcf95db50..a03a0e59b4 100644 --- a/src/app/search/query-builder.service.ts +++ b/src/app/search/query-builder.service.ts @@ -18,6 +18,7 @@ import { Injectable } from '@angular/core'; import * as bodybuilder from 'bodybuilder'; import { AdvancedSearchObject } from './../shared/models/AdvancedSearchObject'; import { SearchService } from './state/search.service'; +import { tagCloudCommonTerms } from './../shared/constants'; /** * This service constructs all the querys and should be only class that interacts with the bodybuilder library. @@ -38,7 +39,7 @@ export class QueryBuilderService { let body = bodybuilder().size(0); body = this.excludeContent(body); body = body.query('match', '_index', index); - body = body.aggregation('significant_text', 'description', 'tagcloud', { size: tagCloudSize }); + body = body.aggregation('significant_text', 'description', 'tagcloud', { size: tagCloudSize, exclude: tagCloudCommonTerms }); const toolQuery = JSON.stringify(body.build(), null, 1); return toolQuery; } diff --git a/src/app/shared/constants.ts b/src/app/shared/constants.ts index 902bd63df1..111dc417a5 100644 --- a/src/app/shared/constants.ts +++ b/src/app/shared/constants.ts @@ -44,3 +44,42 @@ export const dismissedLatestTOS = 'dismissedLatestTOS'; export const dismissedLatestPrivacyPolicy = 'dismissedLatestPrivacyPolicy'; // There is a search term length limit of 256 on the backend, but two extra characters, '.*', get counted in the backend. export const searchTermLengthLimit = 254; +// List of common terms to exclude from tag cloud +export const tagCloudCommonTerms: string[] = [ + 'tool', + 'workflow', + 'dockstore', + 'master', + 'build_status', + 'server', + 'different', + 'given', + 'the', + 'a', + 'an', + 'between', + 'this', + 'that', + 'these', + 'those', + 'I', + 'you', + 'he', + 'she', + 'it', + 'we', + 'us', + 'him', + 'her', + 'they', + 'them', + 'mine', + 'their', + 'to', + 'from', + 'of', + 'and', + 'in', + 'is', + 'on', +]; From 0e7387b22f8808f366a9e10590bcc3650fae997a Mon Sep 17 00:00:00 2001 From: Ying Yang <68610185+y-ng@users.noreply.github.com> Date: Mon, 26 Jun 2023 14:20:57 -0400 Subject: [PATCH 030/128] retry apt-get if it fails (#1802) --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 480e8cab16..72d88b88b5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -429,8 +429,8 @@ commands: - run: name: Install cypress dependencies command: | - sudo apt update -y - sudo apt-get install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb -yq + sudo apt-get update -y + sudo apt-get -o Acquire::Retries=3 install libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb -yq setup_integration_test: parameters: db_dump: From 162afe44fdbb783b92ceb384610f71a408da5fd7 Mon Sep 17 00:00:00 2001 From: Ying Yang <68610185+y-ng@users.noreply.github.com> Date: Wed, 28 Jun 2023 14:09:10 -0400 Subject: [PATCH 031/128] SEAB-663: Add tests for featured content (#1804) * check for extra content * load extra content for cypress --- cypress/e2e/group1/dashboard.ts | 19 ++++++++++++++++++- .../smokeTests/sharedTests/basic-enduser.ts | 14 +++++++++++++- cypress/support/commands.ts | 19 +++++++++++++++++++ test/web.yml | 2 ++ 4 files changed, 52 insertions(+), 2 deletions(-) diff --git a/cypress/e2e/group1/dashboard.ts b/cypress/e2e/group1/dashboard.ts index 44a634c5fa..5592770f7b 100644 --- a/cypress/e2e/group1/dashboard.ts +++ b/cypress/e2e/group1/dashboard.ts @@ -13,7 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { insertNotebooks, resetDB, setTokenUserViewPort, verifyGithubLinkDashboard } from '../../support/commands'; +import { + insertNotebooks, + resetDB, + setTokenUserViewPort, + verifyGithubLinkDashboard, + checkFeaturedContent, + checkNewsAndUpdates, +} from '../../support/commands'; describe('Dockstore dashboard', () => { resetDB(); @@ -50,6 +57,16 @@ describe('Dockstore dashboard', () => { it('Registering new workflow through Github redirects correctly', () => { verifyGithubLinkDashboard('Workflow'); }); + + it('have featured content visible from dashboard', () => { + cy.visit('/dashboard'); + checkFeaturedContent(); + }); + + it('have news and updates visible from dashboard', () => { + cy.visit('/dashboard'); + checkNewsAndUpdates(); + }); }); describe('should display added notebook correctly', () => { diff --git a/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts b/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts index 4db10ae1a7..78b79b5a45 100644 --- a/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts +++ b/cypress/e2e/smokeTests/sharedTests/basic-enduser.ts @@ -1,6 +1,6 @@ import { ga4ghPath } from '../../../../src/app/shared/constants'; import { ToolDescriptor } from '../../../../src/app/shared/openapi'; -import { goToTab } from '../../../support/commands'; +import { goToTab, checkFeaturedContent, checkNewsAndUpdates } from '../../../support/commands'; // Test an entry, these should be ambiguous between tools, workflows, and notebooks. describe('run stochastic smoke test', () => { @@ -362,6 +362,18 @@ function testNotebook(url: string, version1: string, version2: string, trsUrl: s }); } +describe('Check extra content', () => { + it('featured content is visible from home page', () => { + cy.visit('/'); + checkFeaturedContent(); + }); + + it('news and updates are visible from home page', () => { + cy.visit('/'); + checkNewsAndUpdates(); + }); +}); + // TODO: uncomment after tooltester logs are fixed // describe('Test existence of Logs', () => { // it('Find Logs in Workflows', () => { diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 078ade7f48..9268340b04 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -258,3 +258,22 @@ export function snapshot() { cy.get('td').contains('Actions').click(); cy.get('[data-cy=dockstore-snapshot]').should('be.disabled'); } + +export function checkFeaturedContent() { + cy.contains('Featured Content'); + cy.get('app-featured-content').should('exist'); + cy.get('.feat-content-container').within(() => { + cy.get('.feat-content-card').its('length').should('be.gt', 0); + cy.get('.feat-content-card').first().contains('a').should('have.attr', 'href'); + cy.get('.small-btn-structure').first().contains('View'); + }); +} + +export function checkNewsAndUpdates() { + cy.contains('News & Updates'); + cy.get('app-news-and-updates').should('exist'); + cy.get('.news-and-updates-box').within(() => { + cy.get('.news-entry').its('length').should('be.gt', 0); + cy.get('.news-entry').first().contains('a').should('have.attr', 'href'); + }); +} diff --git a/test/web.yml b/test/web.yml index 3ff1e3bece..4d1890aeb4 100644 --- a/test/web.yml +++ b/test/web.yml @@ -111,3 +111,5 @@ uiConfig: cwlVisualizerUri: https://view.commonwl.org + featuredContentUrl: https://content.dockstore.org/develop/feat-content.html + featuredNewsUrl: https://content.dockstore.org/develop/news.html From 1ced3b2524cc3b61f591aff2a1b94d90a71aea22 Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Fri, 30 Jun 2023 09:22:47 -0700 Subject: [PATCH 032/128] improve error message when github app log retrieval fails https://ucsc-cgl.atlassian.net/browse/SEAB-4303 --- cypress/e2e/group2/myworkflows.ts | 2 +- cypress/e2e/group3/githubAppTools.ts | 2 +- .../github-apps-logs/github-apps-logs.component.html | 8 +++++++- .../github-apps-logs/github-apps-logs.module.ts | 3 ++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/cypress/e2e/group2/myworkflows.ts b/cypress/e2e/group2/myworkflows.ts index 6fe254ecc4..c8ba307e02 100644 --- a/cypress/e2e/group2/myworkflows.ts +++ b/cypress/e2e/group2/myworkflows.ts @@ -61,7 +61,7 @@ describe('Dockstore my workflows', () => { cy.contains('github.com/A/l'); cy.contains('Apps Logs').click(); - cy.contains('There were problems retrieving GitHub App logs for this organization.'); + cy.contains('There were problems retrieving the GitHub App logs for this organization.'); cy.contains('Close').click(); cy.intercept('GET', '/api/lambdaEvents/**', { body: [], diff --git a/cypress/e2e/group3/githubAppTools.ts b/cypress/e2e/group3/githubAppTools.ts index 5bd468f758..27a6b31380 100644 --- a/cypress/e2e/group3/githubAppTools.ts +++ b/cypress/e2e/group3/githubAppTools.ts @@ -53,7 +53,7 @@ describe('GitHub App Tools', () => { // GitHub App Logs cy.contains('Apps Logs').click(); - cy.contains('There were problems retrieving GitHub App logs for this organization.'); + cy.contains('There were problems retrieving the GitHub App logs for this organization.'); cy.contains('Close').click(); cy.intercept('GET', '/api/lambdaEvents/**', { body: [], diff --git a/src/app/myworkflows/sidebar-accordion/github-apps-logs/github-apps-logs.component.html b/src/app/myworkflows/sidebar-accordion/github-apps-logs/github-apps-logs.component.html index 09c9b511ab..96df41290e 100644 --- a/src/app/myworkflows/sidebar-accordion/github-apps-logs/github-apps-logs.component.html +++ b/src/app/myworkflows/sidebar-accordion/github-apps-logs/github-apps-logs.component.html @@ -2,7 +2,13 @@

    GitHub App Logs

    - warning There were problems retrieving GitHub App logs for this organization. + warning There were problems retrieving the GitHub App logs for this organization.
    + Often, if you cannot view the logs for your GitHub user account, you must unlink and relink it in
    + your
    Dockstore profile.
    + Otherwise, your GitHub user or the Dockstore app may not have access to the GitHub organization.
    + Click here to confirm that the Dockstore app is authorized. warning There are no GitHub App logs for this organization. diff --git a/src/app/myworkflows/sidebar-accordion/github-apps-logs/github-apps-logs.module.ts b/src/app/myworkflows/sidebar-accordion/github-apps-logs/github-apps-logs.module.ts index 9f3204c648..a3f4736c19 100644 --- a/src/app/myworkflows/sidebar-accordion/github-apps-logs/github-apps-logs.module.ts +++ b/src/app/myworkflows/sidebar-accordion/github-apps-logs/github-apps-logs.module.ts @@ -16,6 +16,7 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; import { FlexLayoutModule } from '@angular/flex-layout'; import { RefreshAlertModule } from 'app/shared/alert/alert.module'; import { CustomMaterialModule } from 'app/shared/modules/material.module'; @@ -23,7 +24,7 @@ import { PipeModule } from '../../../shared/pipe/pipe.module'; import { GithubAppsLogsComponent } from './github-apps-logs.component'; @NgModule({ - imports: [CustomMaterialModule, CommonModule, RefreshAlertModule, FlexLayoutModule, PipeModule], + imports: [CustomMaterialModule, CommonModule, RefreshAlertModule, FlexLayoutModule, PipeModule, RouterModule], declarations: [GithubAppsLogsComponent], }) export class GitHubAppsLogsModule {} From fcf23386777b05b206c65f116864435bc5b7ae7e Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Fri, 7 Jul 2023 09:18:27 -0700 Subject: [PATCH 033/128] update integration tests with 1.15.0 migration --- cypress/support/commands.ts | 4 ++-- package-lock.json | 2 +- package.json | 4 ++-- scripts/run-webservice-script.sh | 2 +- test/github_app_tool_db_dump.sql | 4 ++-- test/github_notebook_db_dump.sql | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 9268340b04..3b00d28736 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -61,7 +61,7 @@ export function resetDB() { cy.exec('java -jar dockstore-webservice.jar db drop-all --confirm-delete-everything test/web.yml'); cy.exec(psqlInvocation + ' -h localhost webservice_test -U dockstore < test/db_dump.sql'); cy.exec( - 'java -jar dockstore-webservice.jar db migrate -i 1.5.0,1.6.0,1.7.0,1.8.0,1.9.0,1.10.0,alter_test_user_1.10.2,1.11.0,1.12.0,1.13.0,1.14.0 test/web.yml' + 'java -jar dockstore-webservice.jar db migrate -i 1.5.0,1.6.0,1.7.0,1.8.0,1.9.0,1.10.0,alter_test_user_1.10.2,1.11.0,1.12.0,1.13.0,1.14.0,1.15.0 test/web.yml' ); }); } @@ -71,7 +71,7 @@ export function resetDBWithService() { cy.exec('java -jar dockstore-webservice.jar db drop-all --confirm-delete-everything test/web.yml'); cy.exec(psqlInvocation + ' -h localhost webservice_test -U dockstore < test/db_dump.sql'); cy.exec( - 'java -jar dockstore-webservice.jar db migrate -i 1.5.0,1.6.0,1.7.0,add_service_1.7.0,1.8.0,1.9.0,1.10.0,alter_test_user_1.10.2,1.11.0,1.12.0,1.13.0,1.14.0 test/web.yml' + 'java -jar dockstore-webservice.jar db migrate -i 1.5.0,1.6.0,1.7.0,add_service_1.7.0,1.8.0,1.9.0,1.10.0,alter_test_user_1.10.2,1.11.0,1.12.0,1.13.0,1.14.0,1.15.0 test/web.yml' ); }); } diff --git a/package-lock.json b/package-lock.json index b2762c4e4e..3f3c4a8369 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,4 +1,4 @@ -{ +{ "name": "dockstore-ui2", "version": "2.10.0", "lockfileVersion": 2, diff --git a/package.json b/package.json index a621b71c50..9c199c304c 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "config": { "webservice_version": "1.15.0", "use_circle": true, - "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/9967/workflows/e03b3b8b-aec8-4316-9918-995add989dd1/jobs/34030/artifacts", - "circle_build_id": "34030" + "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/10135/workflows/670e8975-9acf-4211-a104-2c37b0142452/jobs/35244/artifacts", + "circle_build_id": "35244" }, "scripts": { "ng": "npx ng", diff --git a/scripts/run-webservice-script.sh b/scripts/run-webservice-script.sh index bd93202ae5..6f7af7423f 100755 --- a/scripts/run-webservice-script.sh +++ b/scripts/run-webservice-script.sh @@ -16,4 +16,4 @@ psql -h localhost -c "create user dockstore with password 'dockstore' createdb;" psql -h localhost -c "ALTER USER dockstore WITH superuser;" -U postgres psql -h localhost -c 'create database webservice_test with owner = dockstore;' -U postgres psql -h localhost -f test/${DB_DUMP:-db_dump.sql} webservice_test -U postgres -java -jar dockstore-webservice.jar db migrate -i 1.5.0,1.6.0,1.7.0,add_service_1.7.0,1.8.0,1.9.0,1.10.0,alter_test_user_1.10.2,1.11.0,1.12.0,1.13.0,1.14.0,add_notebook_1.14.0 test/web.yml +java -jar dockstore-webservice.jar db migrate -i 1.5.0,1.6.0,1.7.0,add_service_1.7.0,1.8.0,1.9.0,1.10.0,alter_test_user_1.10.2,1.11.0,1.12.0,1.13.0,1.14.0,add_notebook_1.14.0,1.15.0 test/web.yml diff --git a/test/github_app_tool_db_dump.sql b/test/github_app_tool_db_dump.sql index 27e079c763..04be801555 100644 --- a/test/github_app_tool_db_dump.sql +++ b/test/github_app_tool_db_dump.sql @@ -170,8 +170,8 @@ workflows: primaryDescriptorPath: /workflows/HelloWorld.cwl ', 'DOCKSTORE_YML', '/.dockstore.yml', '2022-01-14 10:04:44.458000', '2022-01-14 10:04:44.458000', '/.dockstore.yml', false); -INSERT INTO public.apptool (id, author, conceptdoi, dbcreatedate, dbupdatedate, description, email, giturl, ispublished, lastmodified, lastupdated, licensename, topicid, checkerid, descriptortype, descriptortypesubclass, forumurl, mode, organization, repository, sourcecontrol, workflowname, actualdefaultversion, topicautomatic, topicmanual, topicselection) VALUES (50, null, null, '2022-01-12 14:51:23.656000', '2022-01-12 14:51:23.689000', null, null, 'git@github.com:C/github-app-tools.git', true, '2022-01-12 14:48:20.000000', '2022-01-12 14:51:22.707000', null, null, null, 'cwl', 'n/a', null, 'DOCKSTORE_YML', 'C', 'test-github-app-tools', 'github.com', 'testing', null, null, null, 'AUTOMATIC'); -INSERT INTO public.apptool (id, author, conceptdoi, dbcreatedate, dbupdatedate, description, email, giturl, ispublished, lastmodified, lastupdated, licensename, topicid, checkerid, descriptortype, descriptortypesubclass, forumurl, mode, organization, repository, sourcecontrol, workflowname, actualdefaultversion, topicautomatic, topicmanual, topicselection) VALUES (51, 'testuser', null, '2022-01-12 14:45:55.370000', '2022-01-14 10:05:15.491000', 'test description...', 'testemail@gmail.com', 'git@github.com:C/github-app-tools.git', false, '2022-01-14 09:13:50.000000', '2022-01-12 14:45:54.113000', null, null, null, 'cwl', 'n/a', null, 'DOCKSTORE_YML', 'C', 'test-github-app-tools', 'github.com', 'md5sum', null, null, null, 'AUTOMATIC'); +INSERT INTO public.apptool (id, author, conceptdoi, dbcreatedate, dbupdatedate, description, email, giturl, ispublished, lastmodified, lastupdated, licensename, topicid, checkerid, descriptortype, descriptortypesubclass, forumurl, mode, organization, repository, sourcecontrol, workflowname, actualdefaultversion, topicautomatic, topicmanual, topicselection, waseverpublic) VALUES (50, null, null, '2022-01-12 14:51:23.656000', '2022-01-12 14:51:23.689000', null, null, 'git@github.com:C/github-app-tools.git', true, '2022-01-12 14:48:20.000000', '2022-01-12 14:51:22.707000', null, null, null, 'cwl', 'n/a', null, 'DOCKSTORE_YML', 'C', 'test-github-app-tools', 'github.com', 'testing', null, null, null, 'AUTOMATIC', true); +INSERT INTO public.apptool (id, author, conceptdoi, dbcreatedate, dbupdatedate, description, email, giturl, ispublished, lastmodified, lastupdated, licensename, topicid, checkerid, descriptortype, descriptortypesubclass, forumurl, mode, organization, repository, sourcecontrol, workflowname, actualdefaultversion, topicautomatic, topicmanual, topicselection, waseverpublic) VALUES (51, 'testuser', null, '2022-01-12 14:45:55.370000', '2022-01-14 10:05:15.491000', 'test description...', 'testemail@gmail.com', 'git@github.com:C/github-app-tools.git', false, '2022-01-14 09:13:50.000000', '2022-01-12 14:45:54.113000', null, null, null, 'cwl', 'n/a', null, 'DOCKSTORE_YML', 'C', 'test-github-app-tools', 'github.com', 'md5sum', null, null, null, 'AUTOMATIC', true); INSERT INTO public.version_metadata (doistatus, doiurl, hidden, verified, verifiedsource, id, description, description_source, dbcreatedate, dbupdatedate, publicaccessibletestparameterfile) VALUES ('NOT_REQUESTED', null, false, false, null, 30, null, null, null, null, null); INSERT INTO public.version_metadata (doistatus, doiurl, hidden, verified, verifiedsource, id, description, description_source, dbcreatedate, dbupdatedate, publicaccessibletestparameterfile) VALUES ('NOT_REQUESTED', null, false, false, null, 31, null, null, null, null, null); diff --git a/test/github_notebook_db_dump.sql b/test/github_notebook_db_dump.sql index 0a8c9a98da..b9c8b865ed 100644 --- a/test/github_notebook_db_dump.sql +++ b/test/github_notebook_db_dump.sql @@ -23,8 +23,8 @@ COPY public.entry_defaultpaths (entry_id, path, filetype) FROM stdin; -- Data for Name: notebook; Type: TABLE DATA; Schema: public; Owner: dockstore -- -COPY public.notebook (id, author, conceptdoi, dbcreatedate, dbupdatedate, description, email, giturl, ispublished, lastmodified, lastupdated, licensename, topicid, checkerid, descriptortype, descriptortypesubclass, forumurl, mode, organization, repository, sourcecontrol, workflowname, actualdefaultversion, topicautomatic, topicmanual, topicselection) FROM stdin; -1000 \N \N 2023-03-16 16:38:14.926 2023-03-16 16:38:14.994 \N \N git@github.com:dockstore-testing/simple-notebook.git t 2023-02-14 14:43:15 2023-03-16 16:38:13.8 \N \N \N jupyter python \N DOCKSTORE_YML dockstore-testing simple-notebook github.com \N \N \N \N AUTOMATIC +COPY public.notebook (id, author, conceptdoi, dbcreatedate, dbupdatedate, description, email, giturl, ispublished, lastmodified, lastupdated, licensename, topicid, checkerid, descriptortype, descriptortypesubclass, forumurl, mode, organization, repository, sourcecontrol, workflowname, actualdefaultversion, topicautomatic, topicmanual, topicselection, waseverpublic) FROM stdin; +1000 \N \N 2023-03-16 16:38:14.926 2023-03-16 16:38:14.994 \N \N git@github.com:dockstore-testing/simple-notebook.git t 2023-02-14 14:43:15 2023-03-16 16:38:13.8 \N \N \N jupyter python \N DOCKSTORE_YML dockstore-testing simple-notebook github.com \N \N \N \N AUTOMATIC t \. -- From 2df7676717f30ea35e86a36aa8d7ce2f8ca3a932 Mon Sep 17 00:00:00 2001 From: David Steinberg Date: Mon, 10 Jul 2023 09:50:06 -0700 Subject: [PATCH 034/128] Don't include dev dependency licenses (#1807) * Don't include dev dependency licenses * Change circle CI license check and add updated CSV --- THIRD-PARTY-LICENSES.csv | 1211 -------------------------------------- package.json | 4 +- 2 files changed, 2 insertions(+), 1213 deletions(-) diff --git a/THIRD-PARTY-LICENSES.csv b/THIRD-PARTY-LICENSES.csv index a7cfdbcded..7132924d78 100644 --- a/THIRD-PARTY-LICENSES.csv +++ b/THIRD-PARTY-LICENSES.csv @@ -1,524 +1,57 @@ "module name","license","repository" -"@adobe/css-tools@4.0.1","MIT","https://github.com/adobe/css-tools" -"@ampproject/remapping@2.2.0","Apache-2.0","https://github.com/ampproject/remapping" -"@angular-devkit/architect@0.1402.7","MIT","https://github.com/angular/angular-cli" -"@angular-devkit/build-angular@14.2.7","MIT","https://github.com/angular/angular-cli" -"@angular-devkit/build-webpack@0.1402.7","MIT","https://github.com/angular/angular-cli" -"@angular-devkit/core@14.2.7","MIT","https://github.com/angular/angular-cli" "@angular-devkit/core@8.3.29","MIT","https://github.com/angular/angular-cli" -"@angular-devkit/schematics@14.2.7","MIT","https://github.com/angular/angular-cli" "@angular-devkit/schematics@8.3.29","MIT","https://github.com/angular/angular-cli" -"@angular-eslint/builder@14.1.2","MIT","https://github.com/angular-eslint/angular-eslint" -"@angular-eslint/bundled-angular-compiler@14.0.1","MIT","https://github.com/angular-eslint/angular-eslint" -"@angular-eslint/bundled-angular-compiler@14.1.2","MIT","https://github.com/angular-eslint/angular-eslint" -"@angular-eslint/eslint-plugin-template@14.0.1","MIT","https://github.com/angular-eslint/angular-eslint" -"@angular-eslint/eslint-plugin-template@14.1.2","MIT","https://github.com/angular-eslint/angular-eslint" -"@angular-eslint/eslint-plugin@14.0.1","MIT","https://github.com/angular-eslint/angular-eslint" -"@angular-eslint/eslint-plugin@14.1.2","MIT","https://github.com/angular-eslint/angular-eslint" -"@angular-eslint/schematics@14.0.1","MIT","https://github.com/angular-eslint/angular-eslint" -"@angular-eslint/template-parser@14.1.2","MIT","https://github.com/angular-eslint/angular-eslint" -"@angular-eslint/utils@14.0.1","MIT","" -"@angular-eslint/utils@14.1.2","MIT","" "@angular/animations@14.2.8","MIT","https://github.com/angular/angular" "@angular/cdk@14.2.6","MIT","https://github.com/angular/components" -"@angular/cli@14.2.7","MIT","https://github.com/angular/angular-cli" "@angular/common@14.2.8","MIT","https://github.com/angular/angular" -"@angular/compiler-cli@14.2.8","MIT","https://github.com/angular/angular" "@angular/compiler@14.2.8","MIT","https://github.com/angular/angular" "@angular/core@14.2.8","MIT","https://github.com/angular/angular" "@angular/flex-layout@14.0.0-beta.41","MIT","https://github.com/angular/flex-layout" "@angular/forms@14.2.8","MIT","https://github.com/angular/angular" -"@angular/language-service@14.2.8","MIT","https://github.com/angular/angular" "@angular/material@14.2.6","MIT","https://github.com/angular/components" "@angular/platform-browser-dynamic@14.2.8","MIT","https://github.com/angular/angular" "@angular/platform-browser@14.2.8","MIT","https://github.com/angular/angular" "@angular/router@14.2.8","MIT","https://github.com/angular/angular" -"@assemblyscript/loader@0.10.1","Apache-2.0","https://github.com/AssemblyScript/assemblyscript" -"@babel/code-frame@7.18.6","MIT","https://github.com/babel/babel" -"@babel/compat-data@7.20.0","MIT","https://github.com/babel/babel" -"@babel/core@7.18.10","MIT","https://github.com/babel/babel" -"@babel/generator@7.18.12","MIT","https://github.com/babel/babel" -"@babel/generator@7.20.0","MIT","https://github.com/babel/babel" -"@babel/helper-annotate-as-pure@7.18.6","MIT","https://github.com/babel/babel" -"@babel/helper-annotate-as-pure@7.22.5","MIT","https://github.com/babel/babel" -"@babel/helper-builder-binary-assignment-operator-visitor@7.18.9","MIT","https://github.com/babel/babel" -"@babel/helper-compilation-targets@7.20.0","MIT","https://github.com/babel/babel" -"@babel/helper-create-class-features-plugin@7.19.0","MIT","https://github.com/babel/babel" -"@babel/helper-create-regexp-features-plugin@7.19.0","MIT","https://github.com/babel/babel" -"@babel/helper-define-polyfill-provider@0.3.3","MIT","https://github.com/babel/babel-polyfills" -"@babel/helper-environment-visitor@7.18.9","MIT","https://github.com/babel/babel" -"@babel/helper-explode-assignable-expression@7.18.6","MIT","https://github.com/babel/babel" -"@babel/helper-function-name@7.19.0","MIT","https://github.com/babel/babel" -"@babel/helper-hoist-variables@7.18.6","MIT","https://github.com/babel/babel" -"@babel/helper-member-expression-to-functions@7.18.9","MIT","https://github.com/babel/babel" -"@babel/helper-module-imports@7.22.5","MIT","https://github.com/babel/babel" -"@babel/helper-module-transforms@7.19.6","MIT","https://github.com/babel/babel" -"@babel/helper-optimise-call-expression@7.18.6","MIT","https://github.com/babel/babel" -"@babel/helper-plugin-utils@7.22.5","MIT","https://github.com/babel/babel" -"@babel/helper-remap-async-to-generator@7.18.9","MIT","https://github.com/babel/babel" -"@babel/helper-replace-supers@7.19.1","MIT","https://github.com/babel/babel" -"@babel/helper-simple-access@7.19.4","MIT","https://github.com/babel/babel" -"@babel/helper-skip-transparent-expression-wrappers@7.20.0","MIT","https://github.com/babel/babel" -"@babel/helper-split-export-declaration@7.18.6","MIT","https://github.com/babel/babel" -"@babel/helper-string-parser@7.22.5","MIT","https://github.com/babel/babel" -"@babel/helper-validator-identifier@7.22.5","MIT","https://github.com/babel/babel" -"@babel/helper-validator-option@7.22.5","MIT","https://github.com/babel/babel" -"@babel/helper-wrap-function@7.19.0","MIT","https://github.com/babel/babel" -"@babel/helpers@7.20.0","MIT","https://github.com/babel/babel" -"@babel/highlight@7.18.6","MIT","https://github.com/babel/babel" -"@babel/parser@7.20.0","MIT","https://github.com/babel/babel" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.18.9","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-async-generator-functions@7.18.10","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-class-properties@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-class-static-block@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-dynamic-import@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-export-namespace-from@7.18.9","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-json-strings@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-logical-assignment-operators@7.18.9","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-nullish-coalescing-operator@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-numeric-separator@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-object-rest-spread@7.19.4","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-optional-catch-binding@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-optional-chaining@7.18.9","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-private-methods@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-private-property-in-object@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-proposal-unicode-property-regex@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-syntax-async-generators@7.8.4","MIT","https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-generators" -"@babel/plugin-syntax-class-properties@7.12.13","MIT","https://github.com/babel/babel" -"@babel/plugin-syntax-class-static-block@7.14.5","MIT","https://github.com/babel/babel" -"@babel/plugin-syntax-dynamic-import@7.8.3","MIT","https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-dynamic-import" -"@babel/plugin-syntax-export-namespace-from@7.8.3","MIT","https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-export-namespace-from" -"@babel/plugin-syntax-import-assertions@7.20.0","MIT","https://github.com/babel/babel" -"@babel/plugin-syntax-json-strings@7.8.3","MIT","https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-json-strings" -"@babel/plugin-syntax-jsx@7.22.5","MIT","https://github.com/babel/babel" -"@babel/plugin-syntax-logical-assignment-operators@7.10.4","MIT","https://github.com/babel/babel" -"@babel/plugin-syntax-nullish-coalescing-operator@7.8.3","MIT","https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator" -"@babel/plugin-syntax-numeric-separator@7.10.4","MIT","https://github.com/babel/babel" -"@babel/plugin-syntax-object-rest-spread@7.8.3","MIT","https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread" -"@babel/plugin-syntax-optional-catch-binding@7.8.3","MIT","https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-catch-binding" -"@babel/plugin-syntax-optional-chaining@7.8.3","MIT","https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-chaining" -"@babel/plugin-syntax-private-property-in-object@7.14.5","MIT","https://github.com/babel/babel" -"@babel/plugin-syntax-top-level-await@7.14.5","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-arrow-functions@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-async-to-generator@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-block-scoped-functions@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-block-scoping@7.20.0","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-classes@7.19.0","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-computed-properties@7.18.9","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-destructuring@7.20.0","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-dotall-regex@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-duplicate-keys@7.18.9","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-exponentiation-operator@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-for-of@7.18.8","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-function-name@7.18.9","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-literals@7.18.9","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-member-expression-literals@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-modules-amd@7.19.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-modules-commonjs@7.19.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-modules-systemjs@7.19.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-modules-umd@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-named-capturing-groups-regex@7.19.1","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-new-target@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-object-super@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-parameters@7.18.8","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-property-literals@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-react-display-name@7.22.5","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-react-jsx-development@7.22.5","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-react-jsx@7.22.5","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-react-pure-annotations@7.22.5","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-regenerator@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-reserved-words@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-runtime@7.18.10","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-shorthand-properties@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-spread@7.19.0","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-sticky-regex@7.18.6","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-template-literals@7.18.9","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-typeof-symbol@7.18.9","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-unicode-escapes@7.18.10","MIT","https://github.com/babel/babel" -"@babel/plugin-transform-unicode-regex@7.18.6","MIT","https://github.com/babel/babel" -"@babel/preset-env@7.18.10","MIT","https://github.com/babel/babel" -"@babel/preset-modules@0.1.5","MIT","https://github.com/babel/preset-modules" -"@babel/preset-react@7.22.5","MIT","https://github.com/babel/babel" -"@babel/runtime@7.18.9","MIT","https://github.com/babel/babel" -"@babel/template@7.18.10","MIT","https://github.com/babel/babel" -"@babel/traverse@7.20.0","MIT","https://github.com/babel/babel" -"@babel/types@7.22.5","MIT","https://github.com/babel/babel" "@braintree/sanitize-url@6.0.2","MIT","https://github.com/braintree/sanitize-url" -"@cspotcode/source-map-support@0.8.1","MIT","https://github.com/cspotcode/node-source-map-support" -"@csstools/postcss-cascade-layers@1.1.1","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-color-function@1.1.1","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-font-format-keywords@1.0.1","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-hwb-function@1.0.2","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-ic-unit@1.0.1","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-is-pseudo-class@2.0.7","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-nested-calc@1.0.0","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-normalize-display-values@1.0.1","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-oklab-function@1.1.1","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-progressive-custom-properties@1.3.0","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-stepped-value-functions@1.0.1","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-text-decoration-shorthand@1.0.0","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-trigonometric-functions@1.0.2","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/postcss-unset-value@1.0.2","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@csstools/selector-specificity@2.0.2","CC0-1.0","https://github.com/csstools/postcss-plugins" -"@cypress/request@2.88.10","Apache-2.0","https://github.com/cypress-io/request" -"@cypress/webpack-batteries-included-preprocessor@2.4.1","MIT","https://github.com/cypress-io/cypress" -"@cypress/webpack-preprocessor@5.17.1","MIT","https://github.com/cypress-io/cypress" -"@cypress/xvfb@1.2.4","MIT","https://github.com/cypress-io/xvfb" -"@datorama/akita-ngdevtools@6.0.1","Apache-2.0","https://github.com/datorama/akita" "@datorama/akita@6.2.4","Apache-2.0","https://github.com/datorama/akita" -"@discoveryjs/json-ext@0.5.7","MIT","https://github.com/discoveryjs/json-ext" -"@eslint/eslintrc@1.0.5","MIT","https://github.com/eslint/eslintrc" "@fortawesome/angular-fontawesome@0.11.1","MIT","https://github.com/FortAwesome/angular-fontawesome" "@fortawesome/fontawesome-common-types@0.3.0","MIT","https://github.com/FortAwesome/Font-Awesome" "@fortawesome/fontawesome-common-types@6.2.0","MIT","https://github.com/FortAwesome/Font-Awesome" "@fortawesome/fontawesome-svg-core@6.2.0","MIT","https://github.com/FortAwesome/Font-Awesome" "@fortawesome/free-brands-svg-icons@6.0.0","(CC-BY-4.0 AND MIT)","https://github.com/FortAwesome/Font-Awesome" "@fortawesome/free-solid-svg-icons@6.0.0","(CC-BY-4.0 AND MIT)","https://github.com/FortAwesome/Font-Awesome" -"@gar/promisify@1.1.3","MIT","https://github.com/wraithgar/gar-promisify" -"@humanwhocodes/config-array@0.9.3","Apache-2.0","https://github.com/humanwhocodes/config-array" -"@humanwhocodes/object-schema@1.2.1","BSD-3-Clause","https://github.com/humanwhocodes/object-schema" -"@istanbuljs/load-nyc-config@1.1.0","ISC","https://github.com/istanbuljs/load-nyc-config" -"@istanbuljs/schema@0.1.3","MIT","https://github.com/istanbuljs/schema" -"@jridgewell/gen-mapping@0.1.1","MIT","https://github.com/jridgewell/gen-mapping" -"@jridgewell/gen-mapping@0.3.2","MIT","https://github.com/jridgewell/gen-mapping" -"@jridgewell/resolve-uri@3.1.0","MIT","https://github.com/jridgewell/resolve-uri" -"@jridgewell/set-array@1.1.2","MIT","https://github.com/jridgewell/set-array" -"@jridgewell/source-map@0.3.2","MIT","https://github.com/jridgewell/source-map" -"@jridgewell/sourcemap-codec@1.4.14","MIT","https://github.com/jridgewell/sourcemap-codec" -"@jridgewell/trace-mapping@0.3.17","MIT","https://github.com/jridgewell/trace-mapping" -"@jridgewell/trace-mapping@0.3.9","MIT","https://github.com/jridgewell/trace-mapping" -"@leichtgewicht/ip-codec@2.0.4","MIT","https://github.com/martinheidegger/ip-codec" "@ngneat/forms-manager@2.5.0","MIT","" -"@ngtools/webpack@14.2.7","MIT","https://github.com/angular/angular-cli" -"@nodelib/fs.scandir@2.1.5","MIT","https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.scandir" -"@nodelib/fs.stat@2.0.5","MIT","https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.stat" -"@nodelib/fs.walk@1.2.8","MIT","https://github.com/nodelib/nodelib/tree/master/packages/fs/fs.walk" -"@npmcli/fs@2.1.2","ISC","https://github.com/npm/fs" -"@npmcli/git@3.0.2","ISC","https://github.com/npm/git" -"@npmcli/installed-package-contents@1.0.7","ISC","https://github.com/npm/installed-package-contents" -"@npmcli/move-file@2.0.1","MIT","https://github.com/npm/move-file" -"@npmcli/node-gyp@2.0.0","ISC","https://github.com/npm/node-gyp" -"@npmcli/promise-spawn@3.0.0","ISC","https://github.com/npm/promise-spawn" -"@npmcli/run-script@4.2.1","ISC","https://github.com/npm/run-script" "@popperjs/core@2.11.2","MIT","https://github.com/popperjs/popper-core" -"@schematics/angular@14.2.7","MIT","https://github.com/angular/angular-cli" "@schematics/angular@8.3.29","MIT","https://github.com/angular/angular-cli" "@schematics/update@0.803.29","MIT","https://github.com/angular/angular-cli" -"@socket.io/component-emitter@3.1.0","MIT","https://github.com/socketio/emitter" -"@tootallnate/once@2.0.0","MIT","https://github.com/TooTallNate/once" -"@tsconfig/node10@1.0.8","MIT","https://github.com/tsconfig/bases" -"@tsconfig/node12@1.0.9","MIT","https://github.com/tsconfig/bases" -"@tsconfig/node14@1.0.1","MIT","https://github.com/tsconfig/bases" -"@tsconfig/node16@1.0.2","MIT","https://github.com/tsconfig/bases" -"@types/body-parser@1.19.2","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/bonjour@3.5.10","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/connect-history-api-fallback@1.3.5","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/connect@3.4.35","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/cookie@0.4.1","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/cors@2.8.13","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/cytoscape@3.19.4","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/elasticsearch@5.0.40","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/eslint-scope@3.7.4","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/eslint@8.4.8","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/estree@0.0.51","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/express-serve-static-core@4.17.31","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/express@4.17.14","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/http-proxy@1.17.9","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/jasmine@3.10.3","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/jquery@3.5.13","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/json-schema@7.0.9","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/json5@0.0.29","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" "@types/marked@4.0.7","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/mime@3.0.1","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/node@14.18.10","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/node@15.14.9","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/parse-json@4.0.0","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/qs@6.9.7","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/range-parser@1.2.4","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/retry@0.12.0","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/serve-index@1.9.1","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/serve-static@1.15.0","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/sinonjs__fake-timers@8.1.1","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/sizzle@2.3.3","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/sockjs@0.3.33","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/strip-bom@3.0.0","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/strip-json-comments@0.0.30","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/ws@8.5.3","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@types/yauzl@2.9.2","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" -"@typescript-eslint/eslint-plugin@5.3.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/experimental-utils@5.3.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/parser@5.3.0","BSD-2-Clause","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/scope-manager@5.29.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/scope-manager@5.3.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/scope-manager@5.37.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/type-utils@5.37.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/types@5.29.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/types@5.3.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/types@5.37.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/typescript-estree@5.29.0","BSD-2-Clause","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/typescript-estree@5.3.0","BSD-2-Clause","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/typescript-estree@5.37.0","BSD-2-Clause","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/utils@5.29.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/utils@5.37.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/visitor-keys@5.29.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/visitor-keys@5.3.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@typescript-eslint/visitor-keys@5.37.0","MIT","https://github.com/typescript-eslint/typescript-eslint" -"@webassemblyjs/ast@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/ast@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/floating-point-hex-parser@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/floating-point-hex-parser@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/helper-api-error@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/helper-api-error@1.9.0","MIT","" -"@webassemblyjs/helper-buffer@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/helper-buffer@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/helper-code-frame@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/helper-fsm@1.9.0","ISC","" -"@webassemblyjs/helper-module-context@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/helper-numbers@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/helper-wasm-bytecode@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/helper-wasm-bytecode@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/helper-wasm-section@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/helper-wasm-section@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/ieee754@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/ieee754@1.9.0","MIT","" -"@webassemblyjs/leb128@1.11.1","Apache-2.0","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/leb128@1.9.0","MIT","" -"@webassemblyjs/utf8@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/utf8@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/wasm-edit@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/wasm-edit@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/wasm-gen@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/wasm-gen@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/wasm-opt@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/wasm-opt@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/wasm-parser@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/wasm-parser@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/wast-parser@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/wast-printer@1.11.1","MIT","https://github.com/xtuc/webassemblyjs" -"@webassemblyjs/wast-printer@1.9.0","MIT","https://github.com/xtuc/webassemblyjs" -"@xtuc/ieee754@1.2.0","BSD-3-Clause","https://github.com/feross/ieee754" -"@xtuc/long@4.2.2","Apache-2.0","https://github.com/dcodeIO/long.js" "@yarnpkg/lockfile@1.1.0","BSD-2-Clause","https://github.com/yarnpkg/yarn/blob/master/packages/lockfile" "JSONStream@1.3.5","(MIT OR Apache-2.0)","https://github.com/dominictarr/JSONStream" -"abab@2.0.6","BSD-3-Clause","https://github.com/jsdom/abab" -"abbrev@1.1.1","ISC","https://github.com/isaacs/abbrev-js" "academicons@1.9.1","OFL-1.1","https://github.com/jpswalsh/academicons" -"accepts@1.3.8","MIT","https://github.com/jshttp/accepts" "ace-builds@1.4.14","BSD-3-Clause","https://github.com/ajaxorg/ace-builds" -"acorn-import-assertions@1.8.0","MIT","https://github.com/xtuc/acorn-import-assertions" -"acorn-jsx@5.3.2","MIT","https://github.com/acornjs/acorn-jsx" -"acorn-walk@8.2.0","MIT","https://github.com/acornjs/acorn" -"acorn@6.4.2","MIT","https://github.com/acornjs/acorn" -"acorn@8.8.1","MIT","https://github.com/acornjs/acorn" -"adjust-sourcemap-loader@4.0.0","MIT","https://github.com/bholloway/adjust-sourcemap-loader" "agent-base@4.2.1","MIT","https://github.com/TooTallNate/node-agent-base" "agent-base@4.3.0","MIT","https://github.com/TooTallNate/node-agent-base" -"agent-base@6.0.2","MIT","https://github.com/TooTallNate/node-agent-base" "agentkeepalive@3.5.2","MIT","https://github.com/node-modules/agentkeepalive" -"agentkeepalive@4.2.1","MIT","https://github.com/node-modules/agentkeepalive" -"aggregate-error@3.1.0","MIT","https://github.com/sindresorhus/aggregate-error" -"ajv-errors@1.0.1","MIT","https://github.com/epoberezkin/ajv-errors" -"ajv-formats@2.1.1","MIT","https://github.com/ajv-validator/ajv-formats" -"ajv-keywords@3.5.2","MIT","https://github.com/epoberezkin/ajv-keywords" -"ajv-keywords@5.1.0","MIT","https://github.com/epoberezkin/ajv-keywords" "ajv@6.12.3","MIT","https://github.com/ajv-validator/ajv" -"ajv@6.12.6","MIT","https://github.com/ajv-validator/ajv" -"ajv@8.11.0","MIT","https://github.com/ajv-validator/ajv" "angular-tag-cloud-module@14.0.0","MIT*","https://github.com/d-koppenhagen/angular-tag-cloud-module" -"ansi-colors@4.1.3","MIT","https://github.com/doowb/ansi-colors" -"ansi-escapes@4.3.2","MIT","https://github.com/sindresorhus/ansi-escapes" -"ansi-html-community@0.0.8","Apache-2.0","https://github.com/mahdyar/ansi-html-community" -"ansi-regex@5.0.1","MIT","https://github.com/chalk/ansi-regex" -"ansi-styles@3.2.1","MIT","https://github.com/chalk/ansi-styles" -"ansi-styles@4.3.0","MIT","https://github.com/chalk/ansi-styles" -"anymatch@2.0.0","ISC","https://github.com/micromatch/anymatch" -"anymatch@3.1.2","ISC","https://github.com/micromatch/anymatch" "aproba@1.2.0","ISC","https://github.com/iarna/aproba" -"aproba@2.0.0","ISC","https://github.com/iarna/aproba" -"arch@2.2.0","MIT","https://github.com/feross/arch" -"are-we-there-yet@3.0.1","ISC","https://github.com/npm/are-we-there-yet" -"arg@4.1.3","MIT","https://github.com/zeit/arg" -"argparse@1.0.10","MIT","https://github.com/nodeca/argparse" -"argparse@2.0.1","Python-2.0","https://github.com/nodeca/argparse" -"aria-query@5.0.0","Apache-2.0","https://github.com/A11yance/aria-query" -"aria-query@5.0.2","Apache-2.0","https://github.com/A11yance/aria-query" -"arr-diff@4.0.0","MIT","https://github.com/jonschlinkert/arr-diff" -"arr-flatten@1.1.0","MIT","https://github.com/jonschlinkert/arr-flatten" -"arr-union@3.1.0","MIT","https://github.com/jonschlinkert/arr-union" -"array-find-index@1.0.2","MIT","https://github.com/sindresorhus/array-find-index" -"array-flatten@1.1.1","MIT","https://github.com/blakeembrey/array-flatten" -"array-flatten@2.1.2","MIT","https://github.com/blakeembrey/array-flatten" -"array-union@1.0.2","MIT","https://github.com/sindresorhus/array-union" -"array-union@2.1.0","MIT","https://github.com/sindresorhus/array-union" -"array-uniq@1.0.3","MIT","https://github.com/sindresorhus/array-uniq" -"array-unique@0.3.2","MIT","https://github.com/jonschlinkert/array-unique" -"asap@2.0.6","MIT","https://github.com/kriskowal/asap" -"asn1.js@5.4.1","MIT","https://github.com/indutny/asn1.js" -"asn1@0.2.6","MIT","https://github.com/joyent/node-asn1" -"assert-plus@1.0.0","MIT","https://github.com/mcavage/node-assert-plus" -"assert@1.5.0","MIT","https://github.com/browserify/commonjs-assert" -"assign-symbols@1.0.0","MIT","https://github.com/jonschlinkert/assign-symbols" -"astral-regex@2.0.0","MIT","https://github.com/kevva/astral-regex" -"async-each@1.0.6","MIT","https://github.com/paulmillr/async-each" -"async@2.6.4","MIT","https://github.com/caolan/async" -"async@3.2.3","MIT","https://github.com/caolan/async" -"asynckit@0.4.0","MIT","https://github.com/alexindigo/asynckit" -"at-least-node@1.0.0","ISC","https://github.com/RyanZim/at-least-node" -"atob@2.1.2","(MIT OR Apache-2.0)","git://git.coolaj86.com/coolaj86/atob.js" -"autoprefixer@10.4.13","MIT","https://github.com/postcss/autoprefixer" -"aws-sign2@0.7.0","Apache-2.0","https://github.com/mikeal/aws-sign" -"aws4@1.11.0","MIT","https://github.com/mhart/aws4" -"axe-core@4.4.3","MPL-2.0","https://github.com/dequelabs/axe-core" -"axobject-query@3.0.1","Apache-2.0","https://github.com/A11yance/axobject-query" -"babel-loader@8.2.5","MIT","https://github.com/babel/babel-loader" -"babel-plugin-add-module-exports@1.0.4","MIT","https://github.com/59naga/babel-plugin-add-module-exports" -"babel-plugin-istanbul@6.1.1","BSD-3-Clause","https://github.com/istanbuljs/babel-plugin-istanbul" -"babel-plugin-polyfill-corejs2@0.3.3","MIT","https://github.com/babel/babel-polyfills" -"babel-plugin-polyfill-corejs3@0.5.3","MIT","https://github.com/babel/babel-polyfills" -"babel-plugin-polyfill-regenerator@0.4.1","MIT","https://github.com/babel/babel-polyfills" "balanced-match@1.0.2","MIT","https://github.com/juliangruber/balanced-match" -"base64-js@1.5.1","MIT","https://github.com/beatgammit/base64-js" -"base64id@2.0.0","MIT","https://github.com/faeldt/base64id" -"base@0.11.2","MIT","https://github.com/node-base/base" -"batch@0.6.1","MIT","https://github.com/visionmedia/batch" -"bcrypt-pbkdf@1.0.2","BSD-3-Clause","https://github.com/joyent/node-bcrypt-pbkdf" -"bfj@7.0.2","MIT","git+https://gitlab.com/philbooth/bfj" -"big.js@5.2.2","MIT","https://github.com/MikeMcl/big.js" -"binary-extensions@1.13.1","MIT","https://github.com/sindresorhus/binary-extensions" -"binary-extensions@2.2.0","MIT","https://github.com/sindresorhus/binary-extensions" -"bl@4.1.0","MIT","https://github.com/rvagg/bl" -"blob-util@2.0.2","Apache-2.0","https://github.com/nolanlawson/blob-util" -"bluebird@3.7.1","MIT","https://github.com/petkaantonov/bluebird" "bluebird@3.7.2","MIT","https://github.com/petkaantonov/bluebird" -"bn.js@4.12.0","MIT","https://github.com/indutny/bn.js" -"bn.js@5.2.1","MIT","https://github.com/indutny/bn.js" -"body-parser@1.20.1","MIT","https://github.com/expressjs/body-parser" "bodybuilder@2.4.0","MIT","https://github.com/danpaz/bodybuilder" -"bonjour-service@1.0.14","MIT","https://github.com/onlxltd/bonjour-service" -"boolbase@1.0.0","ISC","https://github.com/fb55/boolbase" "bootstrap@3.4.1","MIT","https://github.com/twbs/bootstrap" "brace-expansion@1.1.11","MIT","https://github.com/juliangruber/brace-expansion" -"brace-expansion@2.0.1","MIT","https://github.com/juliangruber/brace-expansion" -"braces@2.3.2","MIT","https://github.com/micromatch/braces" -"braces@3.0.2","MIT","https://github.com/micromatch/braces" -"brorand@1.1.0","MIT","https://github.com/indutny/brorand" -"browserify-aes@1.2.0","MIT","https://github.com/crypto-browserify/browserify-aes" -"browserify-cipher@1.0.1","MIT","https://github.com/crypto-browserify/browserify-cipher" -"browserify-des@1.0.2","MIT","https://github.com/crypto-browserify/browserify-des" -"browserify-rsa@4.1.0","MIT","https://github.com/crypto-browserify/browserify-rsa" -"browserify-sign@4.2.1","ISC","https://github.com/crypto-browserify/browserify-sign" -"browserify-zlib@0.2.0","MIT","https://github.com/devongovett/browserify-zlib" -"browserslist@4.21.4","MIT","https://github.com/browserslist/browserslist" -"buffer-crc32@0.2.13","MIT","https://github.com/brianloveswords/buffer-crc32" "buffer-from@1.1.2","MIT","https://github.com/LinusU/buffer-from" -"buffer-xor@1.0.3","MIT","https://github.com/crypto-browserify/buffer-xor" -"buffer@4.9.2","MIT","https://github.com/feross/buffer" -"buffer@5.7.1","MIT","https://github.com/feross/buffer" -"builtin-status-codes@3.0.0","MIT","https://github.com/bendrucker/builtin-status-codes" "builtins@1.0.3","MIT","https://github.com/juliangruber/builtins" -"builtins@5.0.1","MIT","https://github.com/juliangruber/builtins" -"bytes@3.0.0","MIT","https://github.com/visionmedia/bytes.js" -"bytes@3.1.2","MIT","https://github.com/visionmedia/bytes.js" "cacache@12.0.4","ISC","https://github.com/npm/cacache" -"cacache@16.1.2","ISC","https://github.com/npm/cacache" -"cache-base@1.0.1","MIT","https://github.com/jonschlinkert/cache-base" -"cachedir@2.3.0","MIT","https://github.com/LinusU/node-cachedir" -"call-bind@1.0.2","MIT","https://github.com/ljharb/call-bind" -"callsites@3.1.0","MIT","https://github.com/sindresorhus/callsites" -"camelcase@5.3.1","MIT","https://github.com/sindresorhus/camelcase" -"caniuse-lite@1.0.30001426","CC-BY-4.0","https://github.com/browserslist/caniuse-lite" -"caseless@0.12.0","Apache-2.0","https://github.com/mikeal/caseless" -"chalk@2.4.2","MIT","https://github.com/chalk/chalk" -"chalk@4.1.2","MIT","https://github.com/chalk/chalk" -"chardet@0.7.0","MIT","https://github.com/runk/node-chardet" -"check-more-types@2.24.0","MIT","https://github.com/kensho/check-more-types" -"check-types@11.1.2","MIT","git+https://gitlab.com/philbooth/check-types.js" -"cheerio-select@2.1.0","BSD-2-Clause","https://github.com/cheeriojs/cheerio-select" -"cheerio@1.0.0-rc.12","MIT","https://github.com/cheeriojs/cheerio" -"chokidar@2.1.8","MIT","https://github.com/paulmillr/chokidar" -"chokidar@3.5.3","MIT","https://github.com/paulmillr/chokidar" "chownr@1.1.4","ISC","https://github.com/isaacs/chownr" -"chownr@2.0.0","ISC","https://github.com/isaacs/chownr" -"chrome-trace-event@1.0.3","MIT","https://github.com/samccone/chrome-trace-event" -"ci-info@3.3.0","MIT","https://github.com/watson/ci-info" -"cipher-base@1.0.4","MIT","https://github.com/crypto-browserify/cipher-base" -"class-utils@0.3.6","MIT","https://github.com/jonschlinkert/class-utils" -"clean-stack@2.2.0","MIT","https://github.com/sindresorhus/clean-stack" -"cli-cursor@3.1.0","MIT","https://github.com/sindresorhus/cli-cursor" -"cli-spinners@2.6.1","MIT","https://github.com/sindresorhus/cli-spinners" -"cli-table3@0.6.1","MIT","https://github.com/cli-table/cli-table3" -"cli-truncate@2.1.0","MIT","https://github.com/sindresorhus/cli-truncate" -"cli-width@3.0.0","ISC","https://github.com/knownasilya/cli-width" "clipboard@2.0.11","MIT","https://github.com/zenorocha/clipboard.js" -"cliui@7.0.4","ISC","https://github.com/yargs/cliui" -"clone-deep@4.0.1","MIT","https://github.com/jonschlinkert/clone-deep" -"clone@1.0.4","MIT","https://github.com/pvorb/node-clone" -"coffee-loader@0.9.0","MIT","https://github.com/webpack-contrib/coffee-loader" -"coffeescript@1.12.7","MIT","https://github.com/jashkenas/coffeescript" -"collection-visit@1.0.0","MIT","https://github.com/jonschlinkert/collection-visit" -"color-convert@1.9.3","MIT","https://github.com/Qix-/color-convert" -"color-convert@2.0.1","MIT","https://github.com/Qix-/color-convert" -"color-name@1.1.3","MIT","https://github.com/dfcreative/color-name" -"color-name@1.1.4","MIT","https://github.com/colorjs/color-name" -"color-support@1.1.3","ISC","https://github.com/isaacs/color-support" -"colorette@1.4.0","MIT","https://github.com/jorgebucaran/colorette" -"colorette@2.0.16","MIT","https://github.com/jorgebucaran/colorette" -"colorette@2.0.19","MIT","https://github.com/jorgebucaran/colorette" -"colors@1.4.0","MIT","https://github.com/Marak/colors.js" -"combined-stream@1.0.8","MIT","https://github.com/felixge/node-combined-stream" -"commander@2.20.3","MIT","https://github.com/tj/commander.js" -"commander@5.1.0","MIT","https://github.com/tj/commander.js" -"commander@6.2.1","MIT","https://github.com/tj/commander.js" "commander@7.2.0","MIT","https://github.com/tj/commander.js" -"commander@8.0.0","MIT","https://github.com/tj/commander.js" "commander@8.3.0","MIT","https://github.com/tj/commander.js" -"common-tags@1.8.2","MIT","https://github.com/zspecza/common-tags" -"commondir@1.0.1","MIT","https://github.com/substack/node-commondir" -"component-emitter@1.3.0","MIT","https://github.com/component/emitter" -"compressible@2.0.18","MIT","https://github.com/jshttp/compressible" -"compression@1.7.4","MIT","https://github.com/expressjs/compression" "concat-map@0.0.1","MIT","https://github.com/substack/node-concat-map" "concat-stream@1.6.2","MIT","https://github.com/maxogden/concat-stream" -"connect-history-api-fallback@2.0.0","MIT","https://github.com/bripkens/connect-history-api-fallback" -"connect@3.7.0","MIT","https://github.com/senchalabs/connect" -"console-browserify@1.2.0","MIT","https://github.com/browserify/console-browserify" -"console-control-strings@1.1.0","ISC","https://github.com/iarna/console-control-strings" -"constants-browserify@1.0.0","MIT","https://github.com/juliangruber/constants-browserify" -"content-disposition@0.5.4","MIT","https://github.com/jshttp/content-disposition" -"content-type@1.0.4","MIT","https://github.com/jshttp/content-type" -"convert-source-map@1.8.0","MIT","https://github.com/thlorenz/convert-source-map" -"cookie-signature@1.0.6","MIT","https://github.com/visionmedia/node-cookie-signature" -"cookie@0.4.2","MIT","https://github.com/jshttp/cookie" -"cookie@0.5.0","MIT","https://github.com/jshttp/cookie" -"copy-anything@2.0.6","MIT","https://github.com/mesqueeb/copy-anything" "copy-concurrently@1.0.5","ISC","https://github.com/npm/copy-concurrently" -"copy-descriptor@0.1.1","MIT","https://github.com/jonschlinkert/copy-descriptor" -"copy-webpack-plugin@11.0.0","MIT","https://github.com/webpack-contrib/copy-webpack-plugin" -"core-js-compat@3.26.0","MIT","https://github.com/zloirock/core-js" "core-util-is@1.0.2","MIT","https://github.com/isaacs/core-util-is" -"cors@2.8.5","MIT","https://github.com/expressjs/cors" -"cosmiconfig@7.0.1","MIT","https://github.com/davidtheclark/cosmiconfig" -"create-ecdh@4.0.4","MIT","https://github.com/crypto-browserify/createECDH" -"create-hash@1.2.0","MIT","https://github.com/crypto-browserify/createHash" -"create-hmac@1.1.7","MIT","https://github.com/crypto-browserify/createHmac" -"create-require@1.1.1","MIT","https://github.com/nuxt-contrib/create-require" -"critters@0.0.16","Apache-2.0","https://github.com/GoogleChromeLabs/critters" -"cross-spawn@7.0.3","MIT","https://github.com/moxystudio/node-cross-spawn" -"crypto-browserify@3.12.0","MIT","https://github.com/crypto-browserify/crypto-browserify" -"css-blank-pseudo@3.0.3","CC0-1.0","https://github.com/csstools/postcss-plugins" -"css-has-pseudo@3.0.4","CC0-1.0","https://github.com/csstools/postcss-plugins" -"css-loader@6.7.1","MIT","https://github.com/webpack-contrib/css-loader" -"css-prefers-color-scheme@6.0.3","CC0-1.0","https://github.com/csstools/postcss-plugins" -"css-select@4.2.1","BSD-2-Clause","https://github.com/fb55/css-select" -"css-select@5.1.0","BSD-2-Clause","https://github.com/fb55/css-select" -"css-what@5.1.0","BSD-2-Clause","https://github.com/fb55/css-what" -"css-what@6.1.0","BSD-2-Clause","https://github.com/fb55/css-what" -"cssdb@7.0.2","CC0-1.0","https://github.com/csstools/cssdb" -"cssesc@3.0.0","MIT","https://github.com/mathiasbynens/cssesc" -"custom-event@1.0.1","MIT","https://github.com/webmodules/custom-event" "cyclist@1.0.1","MIT","https://github.com/mafintosh/cyclist" -"cypress@12.3.0","MIT","https://github.com/cypress-io/cypress" "cytoscape-dagre@2.4.0","MIT","https://github.com/cytoscape/cytoscape.js-dagre" "cytoscape-popper@2.0.0","MIT","https://github.com/cytoscape/cytoscape.js-popper" "cytoscape@3.21.0","MIT","https://github.com/cytoscape/cytoscape.js" @@ -555,909 +88,165 @@ "d3@7.8.0","ISC","https://github.com/d3/d3" "dagre-d3-es@7.0.6","MIT","https://github.com/tbo47/dagre-es" "dagre@0.8.5","MIT","https://github.com/dagrejs/dagre" -"dashdash@1.14.1","MIT","https://github.com/trentm/node-dashdash" -"date-format@4.0.3","MIT","https://github.com/nomiddlename/date-format" -"dayjs@1.10.7","MIT","https://github.com/iamkun/dayjs" -"debug@2.6.9","MIT","https://github.com/visionmedia/debug" "debug@3.1.0","MIT","https://github.com/visionmedia/debug" -"debug@3.2.7","MIT","https://github.com/visionmedia/debug" -"debug@4.3.4","MIT","https://github.com/debug-js/debug" -"debuglog@1.0.1","MIT","https://github.com/sam-github/node-debuglog" -"decode-uri-component@0.2.2","MIT","https://github.com/SamVerschueren/decode-uri-component" -"deep-is@0.1.4","MIT","https://github.com/thlorenz/deep-is" -"default-gateway@6.0.3","BSD-2-Clause","https://github.com/silverwind/default-gateway" -"defaults@1.0.3","MIT","https://github.com/tmpvar/defaults" -"define-lazy-prop@2.0.0","MIT","https://github.com/sindresorhus/define-lazy-prop" -"define-property@0.2.5","MIT","https://github.com/jonschlinkert/define-property" -"define-property@1.0.0","MIT","https://github.com/jonschlinkert/define-property" -"define-property@2.0.2","MIT","https://github.com/jonschlinkert/define-property" "delaunator@5.0.0","ISC","https://github.com/mapbox/delaunator" -"delayed-stream@1.0.0","MIT","https://github.com/felixge/node-delayed-stream" "delegate@3.2.0","MIT","https://github.com/zenorocha/delegate" -"delegates@1.0.0","MIT","https://github.com/visionmedia/node-delegates" -"depd@1.1.2","MIT","https://github.com/dougwilson/nodejs-depd" -"depd@2.0.0","MIT","https://github.com/dougwilson/nodejs-depd" -"dependency-graph@0.11.0","MIT","https://github.com/jriecken/dependency-graph" -"des.js@1.1.0","MIT","https://github.com/indutny/des.js" -"destroy@1.2.0","MIT","https://github.com/stream-utils/destroy" -"detect-node@2.1.0","MIT","https://github.com/iliakan/detect-node" -"devtools-protocol@0.0.869402","BSD-3-Clause","https://github.com/ChromeDevTools/devtools-protocol" -"dezalgo@1.0.3","ISC","https://github.com/npm/dezalgo" -"di@0.0.1","MIT","https://github.com/vojtajina/node-di" -"diff@4.0.2","BSD-3-Clause","https://github.com/kpdecker/jsdiff" -"diffie-hellman@5.0.3","MIT","https://github.com/crypto-browserify/diffie-hellman" -"dir-glob@3.0.1","MIT","https://github.com/kevva/dir-glob" -"dns-equal@1.0.0","MIT","https://github.com/watson/dns-equal" -"dns-packet@5.4.0","MIT","https://github.com/mafintosh/dns-packet" -"doctrine@3.0.0","Apache-2.0","https://github.com/eslint/doctrine" -"dom-serialize@2.2.1","MIT","https://github.com/webmodules/dom-serialize" -"dom-serializer@1.3.2","MIT","https://github.com/cheeriojs/dom-renderer" -"dom-serializer@2.0.0","MIT","https://github.com/cheeriojs/dom-serializer" -"domain-browser@1.2.0","MIT","https://github.com/bevry/domain-browser" -"domelementtype@2.3.0","BSD-2-Clause","https://github.com/fb55/domelementtype" -"domhandler@4.3.0","BSD-2-Clause","https://github.com/fb55/domhandler" -"domhandler@5.0.3","BSD-2-Clause","https://github.com/fb55/domhandler" "dompurify@2.4.1","(MPL-2.0 OR Apache-2.0)","https://github.com/cure53/DOMPurify" -"domutils@2.8.0","BSD-2-Clause","https://github.com/fb55/domutils" -"domutils@3.0.1","BSD-2-Clause","https://github.com/fb55/domutils" "duplexify@3.7.1","MIT","https://github.com/mafintosh/duplexify" -"ecc-jsbn@0.1.2","MIT","https://github.com/quartzjer/ecc-jsbn" -"ee-first@1.1.1","MIT","https://github.com/jonathanong/ee-first" -"electron-to-chromium@1.4.284","ISC","https://github.com/kilian/electron-to-chromium" -"elliptic@6.5.4","MIT","https://github.com/indutny/elliptic" -"emoji-regex@8.0.0","MIT","https://github.com/mathiasbynens/emoji-regex" "emoji-toolkit@6.6.0","MIT","https://github.com/joypixels/emoji-toolkit" -"emojis-list@3.0.0","MIT","https://github.com/kikobeats/emojis-list" -"encodeurl@1.0.2","MIT","https://github.com/pillarjs/encodeurl" "encoding@0.1.13","MIT","https://github.com/andris9/encoding" "end-of-stream@1.4.4","MIT","https://github.com/mafintosh/end-of-stream" -"engine.io-parser@5.0.6","MIT","https://github.com/socketio/engine.io-parser" -"engine.io@6.4.2","MIT","https://github.com/socketio/engine.io" -"enhanced-resolve@4.5.0","MIT","https://github.com/webpack/enhanced-resolve" -"enhanced-resolve@5.10.0","MIT","https://github.com/webpack/enhanced-resolve" -"enquirer@2.3.6","MIT","https://github.com/enquirer/enquirer" -"ent@2.2.0","MIT","https://github.com/substack/node-ent" -"entities@2.2.0","BSD-2-Clause","https://github.com/fb55/entities" -"entities@4.3.1","BSD-2-Clause","https://github.com/fb55/entities" -"env-paths@2.2.1","MIT","https://github.com/sindresorhus/env-paths" -"envinfo@7.8.1","MIT","https://github.com/tabrindle/envinfo" "err-code@1.1.2","MIT","https://github.com/IndigoUnited/js-err-code" -"err-code@2.0.3","MIT","https://github.com/IndigoUnited/js-err-code" -"errno@0.1.8","MIT","https://github.com/rvagg/node-errno" -"error-ex@1.3.2","MIT","https://github.com/qix-/node-error-ex" -"es-module-lexer@0.9.3","MIT","https://github.com/guybedford/es-module-lexer" "es6-promise@4.2.8","MIT","https://github.com/stefanpenner/es6-promise" "es6-promisify@5.0.0","MIT","https://github.com/digitaldesignlabs/es6-promisify" -"esbuild-linux-64@0.15.5","MIT","https://github.com/evanw/esbuild" -"esbuild-wasm@0.15.5","MIT","https://github.com/evanw/esbuild" -"esbuild@0.15.5","MIT","https://github.com/evanw/esbuild" -"escalade@3.1.1","MIT","https://github.com/lukeed/escalade" -"escape-html@1.0.3","MIT","https://github.com/component/escape-html" -"escape-string-regexp@1.0.5","MIT","https://github.com/sindresorhus/escape-string-regexp" -"escape-string-regexp@4.0.0","MIT","https://github.com/sindresorhus/escape-string-regexp" -"eslint-scope@4.0.3","BSD-2-Clause","https://github.com/eslint/eslint-scope" -"eslint-scope@5.1.1","BSD-2-Clause","https://github.com/eslint/eslint-scope" -"eslint-scope@7.1.0","BSD-2-Clause","https://github.com/eslint/eslint-scope" -"eslint-utils@3.0.0","MIT","https://github.com/mysticatea/eslint-utils" -"eslint-visitor-keys@2.1.0","Apache-2.0","https://github.com/eslint/eslint-visitor-keys" -"eslint-visitor-keys@3.3.0","Apache-2.0","https://github.com/eslint/eslint-visitor-keys" -"eslint@8.8.0","MIT","https://github.com/eslint/eslint" -"espree@9.3.0","BSD-2-Clause","https://github.com/eslint/espree" -"esprima@4.0.1","BSD-2-Clause","https://github.com/jquery/esprima" -"esquery@1.4.0","BSD-3-Clause","https://github.com/estools/esquery" -"esrecurse@4.3.0","BSD-2-Clause","https://github.com/estools/esrecurse" -"estraverse@4.3.0","BSD-2-Clause","https://github.com/estools/estraverse" -"estraverse@5.3.0","BSD-2-Clause","https://github.com/estools/estraverse" -"esutils@2.0.3","BSD-2-Clause","https://github.com/estools/esutils" -"etag@1.8.1","MIT","https://github.com/jshttp/etag" -"eventemitter-asyncresource@1.0.0","MIT","https://github.com/addaleax/eventemitter-asyncresource" -"eventemitter2@6.4.7","MIT","https://github.com/hij1nx/EventEmitter2" -"eventemitter3@4.0.7","MIT","https://github.com/primus/eventemitter3" -"events@3.3.0","MIT","https://github.com/Gozala/events" -"evp_bytestokey@1.0.3","MIT","https://github.com/crypto-browserify/EVP_BytesToKey" -"execa@4.1.0","MIT","https://github.com/sindresorhus/execa" -"execa@5.1.1","MIT","https://github.com/sindresorhus/execa" -"executable@4.1.1","MIT","https://github.com/kevva/executable" -"expand-brackets@2.1.4","MIT","https://github.com/jonschlinkert/expand-brackets" -"express@4.18.2","MIT","https://github.com/expressjs/express" -"extend-shallow@2.0.1","MIT","https://github.com/jonschlinkert/extend-shallow" -"extend-shallow@3.0.2","MIT","https://github.com/jonschlinkert/extend-shallow" -"extend@3.0.2","MIT","https://github.com/justmoon/node-extend" -"external-editor@3.1.0","MIT","https://github.com/mrkmg/node-external-editor" -"extglob@2.0.4","MIT","https://github.com/micromatch/extglob" -"extract-zip@2.0.1","BSD-2-Clause","https://github.com/maxogden/extract-zip" -"extsprintf@1.3.0","MIT","https://github.com/davepacheco/node-extsprintf" "fast-deep-equal@3.1.3","MIT","https://github.com/epoberezkin/fast-deep-equal" -"fast-glob@3.2.11","MIT","https://github.com/mrmlnc/fast-glob" "fast-json-stable-stringify@2.0.0","MIT","https://github.com/epoberezkin/fast-json-stable-stringify" -"fast-json-stable-stringify@2.1.0","MIT","https://github.com/epoberezkin/fast-json-stable-stringify" -"fast-levenshtein@2.0.6","MIT","https://github.com/hiddentao/fast-levenshtein" -"fastq@1.13.0","ISC","https://github.com/mcollina/fastq" -"faye-websocket@0.11.4","Apache-2.0","https://github.com/faye/faye-websocket-node" -"fd-slicer@1.1.0","MIT","https://github.com/andrewrk/node-fd-slicer" "figgy-pudding@3.5.2","ISC","https://github.com/npm/figgy-pudding" -"figures@3.2.0","MIT","https://github.com/sindresorhus/figures" -"file-entry-cache@6.0.1","MIT","https://github.com/royriojas/file-entry-cache" "file-saver@2.0.5","MIT","https://github.com/eligrey/FileSaver.js" -"file-url@3.0.0","MIT","https://github.com/sindresorhus/file-url" -"fill-range@4.0.0","MIT","https://github.com/jonschlinkert/fill-range" -"fill-range@7.0.1","MIT","https://github.com/jonschlinkert/fill-range" -"finalhandler@1.1.2","MIT","https://github.com/pillarjs/finalhandler" -"finalhandler@1.2.0","MIT","https://github.com/pillarjs/finalhandler" -"find-cache-dir@2.1.0","MIT","https://github.com/avajs/find-cache-dir" -"find-cache-dir@3.3.2","MIT","https://github.com/avajs/find-cache-dir" -"find-up@3.0.0","MIT","https://github.com/sindresorhus/find-up" -"find-up@4.1.0","MIT","https://github.com/sindresorhus/find-up" -"flat-cache@3.0.4","MIT","https://github.com/royriojas/flat-cache" -"flatted@3.2.5","ISC","https://github.com/WebReflection/flatted" "flush-write-stream@1.1.1","MIT","https://github.com/mafintosh/flush-write-stream" -"follow-redirects@1.14.8","MIT","https://github.com/follow-redirects/follow-redirects" -"for-in@1.0.2","MIT","https://github.com/jonschlinkert/for-in" -"forever-agent@0.6.1","Apache-2.0","https://github.com/mikeal/forever-agent" -"form-data@2.3.3","MIT","https://github.com/form-data/form-data" -"forwarded@0.2.0","MIT","https://github.com/jshttp/forwarded" -"fraction.js@4.2.0","MIT","https://github.com/infusion/Fraction.js" -"fragment-cache@0.2.1","MIT","https://github.com/jonschlinkert/fragment-cache" -"fresh@0.5.2","MIT","https://github.com/jshttp/fresh" "from2@2.3.0","MIT","https://github.com/hughsk/from2" -"fs-constants@1.0.0","MIT","https://github.com/mafintosh/fs-constants" -"fs-extra@10.0.0","MIT","https://github.com/jprichardson/node-fs-extra" -"fs-extra@9.1.0","MIT","https://github.com/jprichardson/node-fs-extra" "fs-minipass@1.2.7","ISC","https://github.com/npm/fs-minipass" -"fs-minipass@2.1.0","ISC","https://github.com/npm/fs-minipass" -"fs-monkey@1.0.3","Unlicense","https://github.com/streamich/fs-monkey" "fs-write-stream-atomic@1.0.10","ISC","https://github.com/npm/fs-write-stream-atomic" "fs.realpath@1.0.0","ISC","https://github.com/isaacs/fs.realpath" "function-bind@1.1.1","MIT","https://github.com/Raynos/function-bind" -"functional-red-black-tree@1.0.1","MIT","https://github.com/mikolalysenko/functional-red-black-tree" -"gauge@4.0.4","ISC","https://github.com/npm/gauge" "genfun@5.0.0","MIT","https://github.com/zkat/genfun" -"gensync@1.0.0-beta.2","MIT","https://github.com/loganfsmyth/gensync" -"get-caller-file@2.0.5","ISC","https://github.com/stefanpenner/get-caller-file" -"get-intrinsic@1.1.3","MIT","https://github.com/ljharb/get-intrinsic" -"get-own-enumerable-property-symbols@3.0.2","ISC","https://github.com/mightyiam/get-own-enumerable-property-symbols" -"get-package-type@0.1.0","MIT","https://github.com/cfware/get-package-type" "get-stream@4.1.0","MIT","https://github.com/sindresorhus/get-stream" -"get-stream@5.2.0","MIT","https://github.com/sindresorhus/get-stream" -"get-stream@6.0.1","MIT","https://github.com/sindresorhus/get-stream" -"get-value@2.0.6","MIT","https://github.com/jonschlinkert/get-value" -"getos@3.2.1","MIT","https://github.com/retrohacker/getos" -"getpass@0.1.7","MIT","https://github.com/arekinath/node-getpass" -"glob-parent@3.1.0","ISC","https://github.com/es128/glob-parent" -"glob-parent@5.1.2","ISC","https://github.com/gulpjs/glob-parent" -"glob-parent@6.0.2","ISC","https://github.com/gulpjs/glob-parent" -"glob-to-regexp@0.4.1","BSD-2-Clause","https://github.com/fitzgen/glob-to-regexp" "glob@7.2.0","ISC","https://github.com/isaacs/node-glob" -"glob@8.0.3","ISC","https://github.com/isaacs/node-glob" -"global-dirs@3.0.0","MIT","https://github.com/sindresorhus/global-dirs" -"globals@11.12.0","MIT","https://github.com/sindresorhus/globals" -"globals@13.12.1","MIT","https://github.com/sindresorhus/globals" -"globby@11.1.0","MIT","https://github.com/sindresorhus/globby" -"globby@13.1.2","MIT","https://github.com/sindresorhus/globby" -"globby@6.1.0","MIT","https://github.com/sindresorhus/globby" "good-listener@1.2.2","MIT","https://github.com/zenorocha/good-listener" "graceful-fs@4.2.9","ISC","https://github.com/isaacs/node-graceful-fs" "graphlib@2.1.8","MIT","https://github.com/dagrejs/graphlib" -"handle-thing@2.0.1","MIT","https://github.com/indutny/handle-thing" -"has-flag@3.0.0","MIT","https://github.com/sindresorhus/has-flag" -"has-flag@4.0.0","MIT","https://github.com/sindresorhus/has-flag" -"has-symbols@1.0.3","MIT","https://github.com/inspect-js/has-symbols" -"has-unicode@2.0.1","ISC","https://github.com/iarna/has-unicode" -"has-value@0.3.1","MIT","https://github.com/jonschlinkert/has-value" -"has-value@1.0.0","MIT","https://github.com/jonschlinkert/has-value" -"has-values@0.1.4","MIT","https://github.com/jonschlinkert/has-values" -"has-values@1.0.0","MIT","https://github.com/jonschlinkert/has-values" "has@1.0.3","MIT","https://github.com/tarruda/has" -"hash-base@3.1.0","MIT","https://github.com/crypto-browserify/hash-base" -"hash.js@1.1.7","MIT","https://github.com/indutny/hash.js" -"hdr-histogram-js@2.0.3","BSD*","https://github.com/HdrHistogram/HdrHistogramJS" -"hdr-histogram-percentiles-obj@3.0.0","MIT","https://github.com/GlenTiki/hdr-histogram-percentiles-obj" "heap@0.2.7","MIT","https://github.com/qiao/heap.js" -"hmac-drbg@1.0.1","MIT","https://github.com/indutny/hmac-drbg" -"hogan.js@3.0.2","Apache-2.0","https://github.com/twitter/hogan.js" -"hoopy@0.1.4","MIT","git+https://gitlab.com/philbooth/hoopy" "hosted-git-info@2.8.9","ISC","https://github.com/npm/hosted-git-info" -"hosted-git-info@5.2.1","ISC","https://github.com/npm/hosted-git-info" -"hpack.js@2.1.6","MIT","https://github.com/indutny/hpack.js" -"html-entities@2.3.3","MIT","https://github.com/mdevils/html-entities" -"html-escaper@2.0.2","MIT","https://github.com/WebReflection/html-escaper" -"html_codesniffer@2.5.1","BSD-3-Clause","https://github.com/squizlabs/HTML_CodeSniffer" -"htmlparser2@8.0.1","MIT","https://github.com/fb55/htmlparser2" "http-cache-semantics@3.8.1","BSD-2-Clause","https://github.com/pornel/http-cache-semantics" -"http-cache-semantics@4.1.0","BSD-2-Clause","https://github.com/kornelski/http-cache-semantics" -"http-deceiver@1.2.7","MIT","https://github.com/indutny/http-deceiver" -"http-errors@1.6.3","MIT","https://github.com/jshttp/http-errors" -"http-errors@2.0.0","MIT","https://github.com/jshttp/http-errors" -"http-parser-js@0.5.8","MIT","https://github.com/creationix/http-parser-js" "http-proxy-agent@2.1.0","MIT","https://github.com/TooTallNate/node-http-proxy-agent" -"http-proxy-agent@5.0.0","MIT","https://github.com/TooTallNate/node-http-proxy-agent" -"http-proxy-middleware@2.0.6","MIT","https://github.com/chimurai/http-proxy-middleware" -"http-proxy@1.18.1","MIT","https://github.com/http-party/node-http-proxy" -"http-signature@1.3.6","MIT","https://github.com/joyent/node-http-signature" -"https-browserify@1.0.0","MIT","https://github.com/substack/https-browserify" "https-proxy-agent@2.2.4","MIT","https://github.com/TooTallNate/node-https-proxy-agent" -"https-proxy-agent@5.0.1","MIT","https://github.com/TooTallNate/node-https-proxy-agent" -"human-signals@1.1.1","Apache-2.0","https://github.com/ehmicky/human-signals" -"human-signals@2.1.0","Apache-2.0","https://github.com/ehmicky/human-signals" "humanize-ms@1.2.1","MIT","https://github.com/node-modules/humanize-ms" -"husky@7.0.4","MIT","https://github.com/typicode/husky" -"iconv-lite@0.4.24","MIT","https://github.com/ashtuchkin/iconv-lite" "iconv-lite@0.6.3","MIT","https://github.com/ashtuchkin/iconv-lite" -"icss-utils@5.1.0","ISC","https://github.com/css-modules/icss-utils" -"ieee754@1.2.1","BSD-3-Clause","https://github.com/feross/ieee754" "iferr@0.1.5","MIT","https://github.com/shesek/iferr" "ignore-walk@3.0.4","ISC","https://github.com/isaacs/ignore-walk" -"ignore-walk@5.0.1","ISC","https://github.com/npm/ignore-walk" -"ignore@4.0.6","MIT","https://github.com/kaelzhang/node-ignore" -"ignore@5.2.0","MIT","https://github.com/kaelzhang/node-ignore" -"image-size@0.5.5","MIT","https://github.com/image-size/image-size" -"immutable@4.1.0","MIT","https://github.com/immutable-js/immutable-js" -"import-fresh@3.3.0","MIT","https://github.com/sindresorhus/import-fresh" "imurmurhash@0.1.4","MIT","https://github.com/jensyt/imurmurhash-js" -"indent-string@4.0.0","MIT","https://github.com/sindresorhus/indent-string" "infer-owner@1.0.4","ISC","https://github.com/npm/infer-owner" "inflight@1.0.6","ISC","https://github.com/npm/inflight" -"inherits@2.0.1","ISC","https://github.com/isaacs/inherits" -"inherits@2.0.3","ISC","https://github.com/isaacs/inherits" "inherits@2.0.4","ISC","https://github.com/isaacs/inherits" "ini@1.3.5","ISC","https://github.com/isaacs/ini" -"ini@2.0.0","ISC","https://github.com/isaacs/ini" -"ini@3.0.0","ISC","https://github.com/npm/ini" -"inquirer@8.2.4","MIT","https://github.com/SBoudrias/Inquirer.js" "internmap@2.0.3","ISC","https://github.com/mbostock/internmap" "ip@1.1.5","MIT","https://github.com/indutny/node-ip" -"ip@2.0.0","MIT","https://github.com/indutny/node-ip" -"ipaddr.js@1.9.1","MIT","https://github.com/whitequark/ipaddr.js" -"ipaddr.js@2.0.1","MIT","https://github.com/whitequark/ipaddr.js" -"is-accessor-descriptor@0.1.6","MIT","https://github.com/jonschlinkert/is-accessor-descriptor" -"is-accessor-descriptor@1.0.0","MIT","https://github.com/jonschlinkert/is-accessor-descriptor" -"is-arrayish@0.2.1","MIT","https://github.com/qix-/node-is-arrayish" -"is-binary-path@1.0.1","MIT","https://github.com/sindresorhus/is-binary-path" -"is-binary-path@2.1.0","MIT","https://github.com/sindresorhus/is-binary-path" -"is-buffer@1.1.6","MIT","https://github.com/feross/is-buffer" -"is-ci@3.0.1","MIT","https://github.com/watson/is-ci" "is-core-module@2.11.0","MIT","https://github.com/inspect-js/is-core-module" -"is-data-descriptor@0.1.4","MIT","https://github.com/jonschlinkert/is-data-descriptor" -"is-data-descriptor@1.0.0","MIT","https://github.com/jonschlinkert/is-data-descriptor" -"is-descriptor@0.1.6","MIT","https://github.com/jonschlinkert/is-descriptor" -"is-descriptor@1.0.2","MIT","https://github.com/jonschlinkert/is-descriptor" -"is-docker@2.2.1","MIT","https://github.com/sindresorhus/is-docker" -"is-extendable@0.1.1","MIT","https://github.com/jonschlinkert/is-extendable" -"is-extendable@1.0.1","MIT","https://github.com/jonschlinkert/is-extendable" -"is-extglob@2.1.1","MIT","https://github.com/jonschlinkert/is-extglob" -"is-fullwidth-code-point@3.0.0","MIT","https://github.com/sindresorhus/is-fullwidth-code-point" -"is-glob@3.1.0","MIT","https://github.com/jonschlinkert/is-glob" -"is-glob@4.0.3","MIT","https://github.com/micromatch/is-glob" -"is-installed-globally@0.4.0","MIT","https://github.com/sindresorhus/is-installed-globally" -"is-interactive@1.0.0","MIT","https://github.com/sindresorhus/is-interactive" -"is-lambda@1.0.1","MIT","https://github.com/watson/is-lambda" -"is-number@3.0.0","MIT","https://github.com/jonschlinkert/is-number" -"is-number@7.0.0","MIT","https://github.com/jonschlinkert/is-number" -"is-obj@1.0.1","MIT","https://github.com/sindresorhus/is-obj" -"is-path-inside@3.0.3","MIT","https://github.com/sindresorhus/is-path-inside" -"is-plain-obj@3.0.0","MIT","https://github.com/sindresorhus/is-plain-obj" -"is-plain-object@2.0.4","MIT","https://github.com/jonschlinkert/is-plain-object" -"is-regexp@1.0.0","MIT","https://github.com/sindresorhus/is-regexp" -"is-stream@2.0.1","MIT","https://github.com/sindresorhus/is-stream" -"is-typedarray@1.0.0","MIT","https://github.com/hughsk/is-typedarray" -"is-unicode-supported@0.1.0","MIT","https://github.com/sindresorhus/is-unicode-supported" -"is-what@3.14.1","MIT","https://github.com/mesqueeb/is-what" -"is-windows@1.0.2","MIT","https://github.com/jonschlinkert/is-windows" -"is-wsl@1.1.0","MIT","https://github.com/sindresorhus/is-wsl" -"is-wsl@2.2.0","MIT","https://github.com/sindresorhus/is-wsl" -"is@3.3.0","MIT","https://github.com/enricomarino/is" "isarray@1.0.0","MIT","https://github.com/juliangruber/isarray" -"isbinaryfile@4.0.8","MIT","https://github.com/gjtorikian/isBinaryFile" "isexe@2.0.0","ISC","https://github.com/isaacs/isexe" -"isobject@2.1.0","MIT","https://github.com/jonschlinkert/isobject" -"isobject@3.0.1","MIT","https://github.com/jonschlinkert/isobject" -"isstream@0.1.2","MIT","https://github.com/rvagg/isstream" -"istanbul-lib-coverage@3.2.0","BSD-3-Clause","https://github.com/istanbuljs/istanbuljs" -"istanbul-lib-instrument@4.0.3","BSD-3-Clause","https://github.com/istanbuljs/istanbuljs" -"istanbul-lib-instrument@5.1.0","BSD-3-Clause","https://github.com/istanbuljs/istanbuljs" -"istanbul-lib-report@3.0.0","BSD-3-Clause","https://github.com/istanbuljs/istanbuljs" -"istanbul-lib-source-maps@4.0.1","BSD-3-Clause","https://github.com/istanbuljs/istanbuljs" -"istanbul-reports@3.1.4","BSD-3-Clause","https://github.com/istanbuljs/istanbuljs" -"jasmine-core@3.99.0","MIT","https://github.com/jasmine/jasmine" -"jest-worker@27.5.1","MIT","https://github.com/facebook/jest" "jquery@3.6.0","MIT","https://github.com/jquery/jquery" -"js-tokens@4.0.0","MIT","https://github.com/lydell/js-tokens" -"js-yaml@3.14.1","MIT","https://github.com/nodeca/js-yaml" -"js-yaml@4.1.0","MIT","https://github.com/nodeca/js-yaml" -"jsbn@0.1.1","MIT","https://github.com/andyperlitch/jsbn" -"jsesc@0.5.0","MIT","https://github.com/mathiasbynens/jsesc" -"jsesc@2.5.2","MIT","https://github.com/mathiasbynens/jsesc" "json-parse-better-errors@1.0.2","MIT","https://github.com/zkat/json-parse-better-errors" -"json-parse-even-better-errors@2.3.1","MIT","https://github.com/npm/json-parse-even-better-errors" "json-schema-traverse@0.4.1","MIT","https://github.com/epoberezkin/json-schema-traverse" -"json-schema-traverse@1.0.0","MIT","https://github.com/epoberezkin/json-schema-traverse" -"json-schema@0.4.0","(AFL-2.1 OR BSD-3-Clause)","https://github.com/kriszyp/json-schema" -"json-stable-stringify-without-jsonify@1.0.1","MIT","https://github.com/samn/json-stable-stringify" -"json-stringify-safe@5.0.1","ISC","https://github.com/isaacs/json-stringify-safe" -"json5@1.0.2","MIT","https://github.com/json5/json5" -"json5@2.2.3","MIT","https://github.com/json5/json5" -"jsonc-parser@3.1.0","MIT","https://github.com/microsoft/node-jsonc-parser" -"jsonfile@6.1.0","MIT","https://github.com/jprichardson/node-jsonfile" "jsonparse@1.3.1","MIT","https://github.com/creationix/jsonparse" -"jsprim@2.0.2","MIT","https://github.com/joyent/node-jsprim" -"karma-chrome-launcher@3.1.0","MIT","https://github.com/karma-runner/karma-chrome-launcher" -"karma-coverage@2.1.1","MIT","https://github.com/karma-runner/karma-coverage" -"karma-jasmine-html-reporter@1.7.0","MIT","https://github.com/dfederm/karma-jasmine-html-reporter" -"karma-jasmine@4.0.1","MIT","https://github.com/karma-runner/karma-jasmine" -"karma-source-map-support@1.4.0","MIT","https://github.com/tschaub/karma-source-map-support" -"karma@6.3.16","MIT","https://github.com/karma-runner/karma" "katex@0.16.4","MIT","https://github.com/KaTeX/KaTeX" "khroma@2.0.0","MIT*","https://github.com/fabiospampinato/khroma" -"kind-of@3.2.2","MIT","https://github.com/jonschlinkert/kind-of" -"kind-of@4.0.0","MIT","https://github.com/jonschlinkert/kind-of" -"kind-of@5.1.0","MIT","https://github.com/jonschlinkert/kind-of" -"kind-of@6.0.3","MIT","https://github.com/jonschlinkert/kind-of" -"kleur@4.1.5","MIT","https://github.com/lukeed/kleur" -"klona@2.0.5","MIT","https://github.com/lukeed/klona" -"lazy-ass@1.6.0","MIT","https://github.com/bahmutov/lazy-ass" -"less-loader@11.0.0","MIT","https://github.com/webpack-contrib/less-loader" -"less@4.1.3","Apache-2.0","https://github.com/less/less.js" -"levn@0.4.1","MIT","https://github.com/gkz/levn" -"license-checker@25.0.1","BSD-3-Clause","https://github.com/davglass/license-checker" -"license-webpack-plugin@4.0.2","ISC","https://github.com/xz64/license-webpack-plugin" -"lines-and-columns@1.2.4","MIT","https://github.com/eventualbuddha/lines-and-columns" -"lint-staged@11.2.6","MIT","https://github.com/okonet/lint-staged" -"listr2@3.14.0","MIT","https://github.com/cenk1cenk2/listr2" -"loader-runner@2.4.0","MIT","https://github.com/webpack/loader-runner" -"loader-runner@4.3.0","MIT","https://github.com/webpack/loader-runner" -"loader-utils@1.4.2","MIT","https://github.com/webpack/loader-utils" -"loader-utils@2.0.4","MIT","https://github.com/webpack/loader-utils" -"loader-utils@3.2.0","MIT","https://github.com/webpack/loader-utils" -"locate-path@3.0.0","MIT","https://github.com/sindresorhus/locate-path" -"locate-path@5.0.0","MIT","https://github.com/sindresorhus/locate-path" "lodash-es@4.17.21","MIT","https://github.com/lodash/lodash" "lodash.debounce@4.0.8","MIT","https://github.com/lodash/lodash" "lodash.get@4.4.2","MIT","https://github.com/lodash/lodash" -"lodash.merge@4.6.2","MIT","https://github.com/lodash/lodash" -"lodash.once@4.1.1","MIT","https://github.com/lodash/lodash" "lodash.set@4.3.2","MIT","https://github.com/lodash/lodash" "lodash.topath@4.5.2","MIT","https://github.com/lodash/lodash" "lodash@4.17.21","MIT","https://github.com/lodash/lodash" -"log-symbols@4.1.0","MIT","https://github.com/sindresorhus/log-symbols" -"log-update@4.0.0","MIT","https://github.com/sindresorhus/log-update" -"log4js@6.4.1","Apache-2.0","https://github.com/log4js-node/log4js-node" "lru-cache@5.1.1","ISC","https://github.com/isaacs/node-lru-cache" -"lru-cache@6.0.0","ISC","https://github.com/isaacs/node-lru-cache" -"lru-cache@7.14.0","ISC","https://github.com/isaacs/node-lru-cache" "magic-string@0.25.3","MIT","https://github.com/rich-harris/magic-string" -"magic-string@0.26.2","MIT","https://github.com/rich-harris/magic-string" -"make-dir@2.1.0","MIT","https://github.com/sindresorhus/make-dir" -"make-dir@3.1.0","MIT","https://github.com/sindresorhus/make-dir" -"make-error@1.3.6","ISC","https://github.com/JsCommunity/make-error" -"make-fetch-happen@10.2.1","ISC","https://github.com/npm/make-fetch-happen" "make-fetch-happen@5.0.2","ISC","https://github.com/zkat/make-fetch-happen" -"map-cache@0.2.2","MIT","https://github.com/jonschlinkert/map-cache" -"map-visit@1.0.0","MIT","https://github.com/jonschlinkert/map-visit" "marked@4.2.3","MIT","https://github.com/markedjs/marked" "material-design-icons-iconfont@6.1.1","Apache-2.0","https://github.com/jossef/material-design-icons-iconfont" "mathjax@3.2.2","Apache-2.0","https://github.com/mathjax/MathJax" -"md5.js@1.3.5","MIT","https://github.com/crypto-browserify/md5.js" -"media-typer@0.3.0","MIT","https://github.com/jshttp/media-typer" -"memfs@3.4.7","Unlicense","https://github.com/streamich/memfs" -"memory-fs@0.4.1","MIT","https://github.com/webpack/memory-fs" -"memory-fs@0.5.0","MIT","https://github.com/webpack/memory-fs" -"merge-descriptors@1.0.1","MIT","https://github.com/component/merge-descriptors" -"merge-stream@2.0.0","MIT","https://github.com/grncdr/merge-stream" -"merge2@1.4.1","MIT","https://github.com/teambition/merge2" "mermaid@9.3.0","MIT","https://github.com/mermaid-js/mermaid" -"methods@1.1.2","MIT","https://github.com/jshttp/methods" -"micromatch@3.1.10","MIT","https://github.com/micromatch/micromatch" -"micromatch@4.0.4","MIT","https://github.com/micromatch/micromatch" -"miller-rabin@4.0.1","MIT","https://github.com/indutny/miller-rabin" -"mime-db@1.51.0","MIT","https://github.com/jshttp/mime-db" -"mime-types@2.1.34","MIT","https://github.com/jshttp/mime-types" -"mime@1.6.0","MIT","https://github.com/broofa/node-mime" -"mime@2.6.0","MIT","https://github.com/broofa/mime" -"mimic-fn@2.1.0","MIT","https://github.com/sindresorhus/mimic-fn" -"mini-css-extract-plugin@2.6.1","MIT","https://github.com/webpack-contrib/mini-css-extract-plugin" -"minimalistic-assert@1.0.1","ISC","https://github.com/calvinmetcalf/minimalistic-assert" -"minimalistic-crypto-utils@1.0.1","MIT","https://github.com/indutny/minimalistic-crypto-utils" "minimatch@3.1.2","ISC","https://github.com/isaacs/minimatch" -"minimatch@5.1.0","ISC","https://github.com/isaacs/minimatch" "minimist@1.2.6","MIT","https://github.com/substack/minimist" -"minipass-collect@1.0.2","ISC","" -"minipass-fetch@2.1.2","MIT","https://github.com/npm/minipass-fetch" -"minipass-flush@1.0.5","ISC","https://github.com/isaacs/minipass-flush" -"minipass-json-stream@1.0.1","MIT","https://github.com/npm/minipass-json-stream" -"minipass-pipeline@1.2.4","ISC","" -"minipass-sized@1.0.3","ISC","https://github.com/isaacs/minipass-sized" "minipass@2.9.0","ISC","https://github.com/isaacs/minipass" -"minipass@3.3.4","ISC","https://github.com/isaacs/minipass" "minizlib@1.3.3","MIT","https://github.com/isaacs/minizlib" -"minizlib@2.1.2","MIT","https://github.com/isaacs/minizlib" "mississippi@3.0.0","BSD-2-Clause","https://github.com/maxogden/mississippi" -"mixin-deep@1.3.2","MIT","https://github.com/jonschlinkert/mixin-deep" -"mkdirp-classic@0.5.3","MIT","https://github.com/mafintosh/mkdirp-classic" -"mkdirp@0.3.0","MIT*","https://github.com/substack/node-mkdirp" "mkdirp@0.5.5","MIT","https://github.com/substack/node-mkdirp" -"mkdirp@0.5.6","MIT","https://github.com/substack/node-mkdirp" -"mkdirp@1.0.4","MIT","https://github.com/isaacs/node-mkdirp" "moment-mini@2.29.4","MIT","https://github.com/ksloan/moment-mini" "move-concurrently@1.0.1","ISC","https://github.com/npm/move-concurrently" "ms@2.0.0","MIT","https://github.com/zeit/ms" "ms@2.1.2","MIT","https://github.com/zeit/ms" -"ms@2.1.3","MIT","https://github.com/vercel/ms" -"multicast-dns@7.2.5","MIT","https://github.com/mafintosh/multicast-dns" -"mute-stream@0.0.8","ISC","https://github.com/isaacs/mute-stream" -"nanoid@3.3.4","MIT","https://github.com/ai/nanoid" -"nanomatch@1.2.13","MIT","https://github.com/micromatch/nanomatch" -"natural-compare@1.4.0","MIT","https://github.com/litejs/natural-compare-lite" -"needle@3.1.0","MIT","https://github.com/tomas/needle" -"negotiator@0.6.3","MIT","https://github.com/jshttp/negotiator" -"neo-async@2.6.2","MIT","https://github.com/suguru03/neo-async" "ng2-ui-auth@10.0.1","UNKNOWN","" "ngx-markdown@14.0.1","MIT","https://github.com/jfcere/ngx-markdown" "ngx-mat-select-search@5.0.0","MIT","https://github.com/bithost-gmbh/ngx-mat-select-search" "ngx-sharebuttons@8.1.0","MIT","https://github.com/murhafsousli/ngx-sharebuttons" -"nice-napi@1.0.2","MIT","https://github.com/addaleax/nice-napi" -"node-addon-api@3.2.1","MIT","https://github.com/nodejs/node-addon-api" "node-fetch-npm@2.0.4","MIT","https://github.com/npm/node-fetch-npm" -"node-fetch@2.6.7","MIT","https://github.com/bitinn/node-fetch" -"node-forge@1.3.1","(BSD-3-Clause OR GPL-2.0)","https://github.com/digitalbazaar/forge" -"node-gyp-build@4.3.0","MIT","https://github.com/prebuild/node-gyp-build" -"node-gyp@9.3.0","MIT","https://github.com/nodejs/node-gyp" -"node-libs-browser@2.2.1","MIT","https://github.com/webpack/node-libs-browser" -"node-releases@2.0.6","MIT","https://github.com/chicoxyzzy/node-releases" -"node.extend@2.0.2","(MIT OR GPL-2.0)","https://github.com/dreamerslab/node.extend" "non-layered-tidy-tree-layout@2.0.2","MIT","https://github.com/stetrevor/non-layered-tidy-tree-layout" -"nopt@1.0.10","MIT","https://github.com/isaacs/nopt" -"nopt@4.0.3","ISC","https://github.com/npm/nopt" -"nopt@6.0.0","ISC","https://github.com/npm/nopt" "normalize-package-data@2.5.0","BSD-2-Clause","https://github.com/npm/normalize-package-data" -"normalize-package-data@4.0.1","BSD-2-Clause","https://github.com/npm/normalize-package-data" -"normalize-path@2.1.1","MIT","https://github.com/jonschlinkert/normalize-path" -"normalize-path@3.0.0","MIT","https://github.com/jonschlinkert/normalize-path" -"normalize-range@0.1.2","MIT","https://github.com/jamestalmage/normalize-range" "npm-bundled@1.1.2","ISC","https://github.com/npm/npm-bundled" -"npm-bundled@2.0.1","ISC","https://github.com/npm/npm-bundled" -"npm-install-checks@5.0.0","BSD-2-Clause","https://github.com/npm/npm-install-checks" "npm-normalize-package-bin@1.0.1","ISC","https://github.com/npm/npm-normalize-package-bin" -"npm-normalize-package-bin@2.0.0","ISC","https://github.com/npm/npm-normalize-package-bin" "npm-package-arg@6.1.1","ISC","https://github.com/npm/npm-package-arg" -"npm-package-arg@9.1.0","ISC","https://github.com/npm/npm-package-arg" "npm-packlist@1.4.8","ISC","https://github.com/npm/npm-packlist" -"npm-packlist@5.1.3","ISC","https://github.com/npm/npm-packlist" "npm-pick-manifest@2.2.3","ISC","https://github.com/zkat/npm-pick-manifest" -"npm-pick-manifest@7.0.1","ISC","https://github.com/npm/npm-pick-manifest" -"npm-registry-fetch@13.3.1","ISC","https://github.com/npm/npm-registry-fetch" "npm-registry-fetch@4.0.7","ISC","https://github.com/npm/registry-fetch" -"npm-run-path@4.0.1","MIT","https://github.com/sindresorhus/npm-run-path" -"npmlog@6.0.2","ISC","https://github.com/npm/npmlog" -"nth-check@2.0.1","BSD-2-Clause","https://github.com/fb55/nth-check" -"object-assign@4.1.1","MIT","https://github.com/sindresorhus/object-assign" -"object-copy@0.1.0","MIT","https://github.com/jonschlinkert/object-copy" -"object-inspect@1.12.2","MIT","https://github.com/inspect-js/object-inspect" -"object-visit@1.0.1","MIT","https://github.com/jonschlinkert/object-visit" -"object.pick@1.3.0","MIT","https://github.com/jonschlinkert/object.pick" -"obuf@1.1.2","MIT","https://github.com/indutny/offset-buffer" -"on-finished@2.3.0","MIT","https://github.com/jshttp/on-finished" -"on-finished@2.4.1","MIT","https://github.com/jshttp/on-finished" -"on-headers@1.0.2","MIT","https://github.com/jshttp/on-headers" "once@1.4.0","ISC","https://github.com/isaacs/once" -"onetime@5.1.2","MIT","https://github.com/sindresorhus/onetime" -"open@8.4.0","MIT","https://github.com/sindresorhus/open" -"optionator@0.9.1","MIT","https://github.com/gkz/optionator" -"ora@5.4.1","MIT","https://github.com/sindresorhus/ora" -"os-browserify@0.3.0","MIT","https://github.com/CoderPuppy/os-browserify" "os-homedir@1.0.2","MIT","https://github.com/sindresorhus/os-homedir" "os-tmpdir@1.0.2","MIT","https://github.com/sindresorhus/os-tmpdir" "osenv@0.1.5","ISC","https://github.com/npm/osenv" -"ospath@1.2.2","MIT","https://github.com/jprichardson/ospath" -"p-limit@2.3.0","MIT","https://github.com/sindresorhus/p-limit" -"p-locate@3.0.0","MIT","https://github.com/sindresorhus/p-locate" -"p-locate@4.1.0","MIT","https://github.com/sindresorhus/p-locate" -"p-map@4.0.0","MIT","https://github.com/sindresorhus/p-map" -"p-retry@4.6.2","MIT","https://github.com/sindresorhus/p-retry" -"p-timeout@4.1.0","MIT","https://github.com/sindresorhus/p-timeout" -"p-try@2.2.0","MIT","https://github.com/sindresorhus/p-try" -"pa11y-ci@3.0.1","LGPL-3.0","https://github.com/pa11y/ci" -"pa11y@6.1.1","LGPL-3.0","https://github.com/pa11y/pa11y" -"pacote@13.6.2","ISC","https://github.com/npm/pacote" "pacote@9.5.5","MIT","https://github.com/npm/pacote" -"pako@1.0.11","(MIT AND Zlib)","https://github.com/nodeca/pako" "parallel-transform@1.2.0","MIT","https://github.com/mafintosh/parallel-transform" -"parent-module@1.0.1","MIT","https://github.com/sindresorhus/parent-module" -"parse-asn1@5.1.6","ISC","https://github.com/crypto-browserify/parse-asn1" -"parse-json@5.2.0","MIT","https://github.com/sindresorhus/parse-json" -"parse-node-version@1.0.1","MIT","https://github.com/gulpjs/parse-node-version" -"parse5-html-rewriting-stream@6.0.1","MIT","https://github.com/inikulin/parse5" -"parse5-htmlparser2-tree-adapter@6.0.1","MIT","https://github.com/inikulin/parse5" -"parse5-htmlparser2-tree-adapter@7.0.0","MIT","https://github.com/inikulin/parse5" -"parse5-sax-parser@6.0.1","MIT","https://github.com/inikulin/parse5" "parse5@5.1.1","MIT","https://github.com/inikulin/parse5" -"parse5@6.0.1","MIT","https://github.com/inikulin/parse5" -"parse5@7.0.0","MIT","https://github.com/inikulin/parse5" -"parseurl@1.3.3","MIT","https://github.com/pillarjs/parseurl" -"pascalcase@0.1.1","MIT","https://github.com/jonschlinkert/pascalcase" -"path-browserify@0.0.1","MIT","https://github.com/substack/path-browserify" -"path-dirname@1.0.2","MIT","https://github.com/es128/path-dirname" -"path-exists@3.0.0","MIT","https://github.com/sindresorhus/path-exists" -"path-exists@4.0.0","MIT","https://github.com/sindresorhus/path-exists" "path-is-absolute@1.0.1","MIT","https://github.com/sindresorhus/path-is-absolute" -"path-key@3.1.1","MIT","https://github.com/sindresorhus/path-key" "path-parse@1.0.7","MIT","https://github.com/jbgutierrez/path-parse" -"path-to-regexp@0.1.7","MIT","https://github.com/component/path-to-regexp" -"path-type@4.0.0","MIT","https://github.com/sindresorhus/path-type" -"pbkdf2@3.1.2","MIT","https://github.com/crypto-browserify/pbkdf2" -"pend@1.2.0","MIT","https://github.com/andrewrk/node-pend" -"performance-now@2.1.0","MIT","https://github.com/braveg1rl/performance-now" -"picocolors@1.0.0","ISC","https://github.com/alexeyraspopov/picocolors" -"picomatch@2.3.1","MIT","https://github.com/micromatch/picomatch" -"pify@2.3.0","MIT","https://github.com/sindresorhus/pify" -"pify@4.0.1","MIT","https://github.com/sindresorhus/pify" -"pinkie-promise@2.0.1","MIT","https://github.com/floatdrop/pinkie-promise" -"pinkie@2.0.4","MIT","https://github.com/floatdrop/pinkie" -"piscina@3.2.0","MIT","https://github.com/piscinajs/piscina" -"pkg-dir@3.0.0","MIT","https://github.com/sindresorhus/pkg-dir" -"pkg-dir@4.2.0","MIT","https://github.com/sindresorhus/pkg-dir" -"please-upgrade-node@3.2.0","MIT","https://github.com/typicode/please-upgrade-node" -"pnp-webpack-plugin@1.7.0","MIT","https://github.com/arcanis/pnp-webpack-plugin" -"posix-character-classes@0.1.1","MIT","https://github.com/jonschlinkert/posix-character-classes" -"postcss-attribute-case-insensitive@5.0.2","MIT","https://github.com/csstools/postcss-plugins" -"postcss-clamp@4.1.0","MIT","https://github.com/polemius/postcss-clamp" -"postcss-color-functional-notation@4.2.4","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-color-hex-alpha@8.0.4","MIT","https://github.com/csstools/postcss-plugins" -"postcss-color-rebeccapurple@7.1.1","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-custom-media@8.0.2","MIT","https://github.com/csstools/postcss-plugins" -"postcss-custom-properties@12.1.10","MIT","https://github.com/csstools/postcss-plugins" -"postcss-custom-selectors@6.0.3","MIT","https://github.com/csstools/postcss-plugins" -"postcss-dir-pseudo-class@6.0.5","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-double-position-gradients@3.1.2","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-env-function@4.0.6","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-focus-visible@6.0.4","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-focus-within@5.0.4","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-font-variant@5.0.0","MIT","https://github.com/postcss/postcss-font-variant" -"postcss-gap-properties@3.0.5","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-image-set-function@4.0.7","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-import@15.0.0","MIT","https://github.com/postcss/postcss-import" -"postcss-initial@4.0.1","MIT","https://github.com/maximkoretskiy/postcss-initial" -"postcss-lab-function@4.2.1","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-loader@7.0.1","MIT","https://github.com/webpack-contrib/postcss-loader" -"postcss-logical@5.0.4","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-media-minmax@5.0.0","MIT","https://github.com/postcss/postcss-media-minmax" -"postcss-modules-extract-imports@3.0.0","ISC","https://github.com/css-modules/postcss-modules-extract-imports" -"postcss-modules-local-by-default@4.0.0","MIT","https://github.com/css-modules/postcss-modules-local-by-default" -"postcss-modules-scope@3.0.0","ISC","https://github.com/css-modules/postcss-modules-scope" -"postcss-modules-values@4.0.0","ISC","https://github.com/css-modules/postcss-modules-values" -"postcss-nesting@10.2.0","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-opacity-percentage@1.1.2","MIT","https://github.com/mrcgrtz/postcss-opacity-percentage" -"postcss-overflow-shorthand@3.0.4","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-page-break@3.0.4","MIT","https://github.com/shrpne/postcss-page-break" -"postcss-place@7.0.5","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-preset-env@7.8.0","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-pseudo-class-any-link@7.1.6","CC0-1.0","https://github.com/csstools/postcss-plugins" -"postcss-replace-overflow-wrap@4.0.0","MIT","https://github.com/MattDiMu/postcss-replace-overflow-wrap" -"postcss-selector-not@6.0.1","MIT","https://github.com/csstools/postcss-plugins" -"postcss-selector-parser@6.0.10","MIT","https://github.com/postcss/postcss-selector-parser" -"postcss-value-parser@4.2.0","MIT","https://github.com/TrySound/postcss-value-parser" -"postcss@8.4.16","MIT","https://github.com/postcss/postcss" -"prelude-ls@1.2.1","MIT","https://github.com/gkz/prelude-ls" -"prepend-http@3.0.1","MIT","https://github.com/sindresorhus/prepend-http" -"prettier@2.5.1","MIT","https://github.com/prettier/prettier" -"pretty-bytes@5.6.0","MIT","https://github.com/sindresorhus/pretty-bytes" "prismjs@1.29.0","MIT","https://github.com/PrismJS/prism" -"proc-log@2.0.1","ISC","https://github.com/npm/proc-log" "process-nextick-args@2.0.1","MIT","https://github.com/calvinmetcalf/process-nextick-args" -"process@0.11.10","MIT","https://github.com/shtylman/node-process" -"progress@2.0.3","MIT","https://github.com/visionmedia/node-progress" "promise-inflight@1.0.1","ISC","https://github.com/iarna/promise-inflight" "promise-retry@1.1.1","MIT","https://github.com/IndigoUnited/node-promise-retry" -"promise-retry@2.0.1","MIT","https://github.com/IndigoUnited/node-promise-retry" -"protocolify@3.0.0","MIT","https://github.com/sindresorhus/protocolify" "protoduck@5.0.1","MIT","https://github.com/zkat/protoduck" -"proxy-addr@2.0.7","MIT","https://github.com/jshttp/proxy-addr" -"proxy-from-env@1.0.0","MIT","https://github.com/Rob--W/proxy-from-env" -"proxy-from-env@1.1.0","MIT","https://github.com/Rob--W/proxy-from-env" -"prr@1.0.1","MIT","https://github.com/rvagg/prr" -"psl@1.8.0","MIT","https://github.com/lupomontero/psl" -"public-encrypt@4.0.3","MIT","https://github.com/crypto-browserify/publicEncrypt" "pump@2.0.1","MIT","https://github.com/mafintosh/pump" "pump@3.0.0","MIT","https://github.com/mafintosh/pump" "pumpify@1.5.1","MIT","https://github.com/mafintosh/pumpify" -"punycode@1.4.1","MIT","https://github.com/bestiejs/punycode.js" "punycode@2.1.1","MIT","https://github.com/bestiejs/punycode.js" -"puppeteer@9.1.1","Apache-2.0","https://github.com/puppeteer/puppeteer" -"qjobs@1.2.0","MIT","https://github.com/franck34/qjobs" -"qs@6.11.0","BSD-3-Clause","https://github.com/ljharb/qs" -"qs@6.11.2","BSD-3-Clause","https://github.com/ljharb/qs" -"qs@6.5.3","BSD-3-Clause","https://github.com/ljharb/qs" -"querystring-es3@0.2.1","MIT","https://github.com/mike-spainhower/querystring" -"queue-microtask@1.2.3","MIT","https://github.com/feross/queue-microtask" -"randombytes@2.1.0","MIT","https://github.com/crypto-browserify/randombytes" -"randomfill@1.0.4","MIT","https://github.com/crypto-browserify/randomfill" -"range-parser@1.2.1","MIT","https://github.com/jshttp/range-parser" -"raw-body@2.5.1","MIT","https://github.com/stream-utils/raw-body" -"read-cache@1.0.0","MIT","https://github.com/TrySound/read-cache" -"read-installed@4.0.3","ISC","https://github.com/isaacs/read-installed" -"read-package-json-fast@2.0.3","ISC","https://github.com/npm/read-package-json-fast" -"read-package-json@2.1.2","ISC","https://github.com/npm/read-package-json" -"read-package-json@5.0.2","ISC","https://github.com/npm/read-package-json" "readable-stream@2.3.7","MIT","https://github.com/nodejs/readable-stream" -"readable-stream@2.3.8","MIT","https://github.com/nodejs/readable-stream" -"readable-stream@3.6.0","MIT","https://github.com/nodejs/readable-stream" -"readdir-scoped-modules@1.1.0","ISC","https://github.com/npm/readdir-scoped-modules" -"readdirp@2.2.1","MIT","https://github.com/paulmillr/readdirp" -"readdirp@3.6.0","MIT","https://github.com/paulmillr/readdirp" -"reflect-metadata@0.1.13","Apache-2.0","https://github.com/rbuckton/reflect-metadata" -"regenerate-unicode-properties@10.1.0","MIT","https://github.com/mathiasbynens/regenerate-unicode-properties" -"regenerate@1.4.2","MIT","https://github.com/mathiasbynens/regenerate" -"regenerator-runtime@0.13.9","MIT","https://github.com/facebook/regenerator/tree/master/packages/runtime" -"regenerator-transform@0.15.0","MIT","https://github.com/facebook/regenerator/tree/master/packages/transform" -"regex-not@1.0.2","MIT","https://github.com/jonschlinkert/regex-not" -"regex-parser@2.2.11","MIT","https://github.com/IonicaBizau/regex-parser.js" -"regexpp@3.2.0","MIT","https://github.com/mysticatea/regexpp" -"regexpu-core@5.2.1","MIT","https://github.com/mathiasbynens/regexpu-core" -"regjsgen@0.7.1","MIT","https://github.com/bnjmnt4n/regjsgen" -"regjsparser@0.9.1","BSD-2-Clause","https://github.com/jviereck/regjsparser" -"remove-trailing-separator@1.1.0","ISC","https://github.com/darsain/remove-trailing-separator" -"repeat-element@1.1.4","MIT","https://github.com/jonschlinkert/repeat-element" -"repeat-string@1.6.1","MIT","https://github.com/jonschlinkert/repeat-string" -"request-progress@3.0.0","MIT","https://github.com/IndigoUnited/node-request-progress" -"require-directory@2.1.1","MIT","https://github.com/troygoode/node-require-directory" -"require-from-string@2.0.2","MIT","https://github.com/floatdrop/require-from-string" -"requires-port@1.0.0","MIT","https://github.com/unshiftio/requires-port" -"resolve-from@4.0.0","MIT","https://github.com/sindresorhus/resolve-from" -"resolve-from@5.0.0","MIT","https://github.com/sindresorhus/resolve-from" -"resolve-url-loader@5.0.0","MIT","https://github.com/bholloway/resolve-url-loader" -"resolve-url@0.2.1","MIT","https://github.com/lydell/resolve-url" "resolve@1.22.1","MIT","https://github.com/browserify/resolve" -"restore-cursor@3.1.0","MIT","https://github.com/sindresorhus/restore-cursor" -"ret@0.1.15","MIT","https://github.com/fent/ret.js" "retry@0.10.1","MIT","https://github.com/tim-kos/node-retry" -"retry@0.12.0","MIT","https://github.com/tim-kos/node-retry" -"retry@0.13.1","MIT","https://github.com/tim-kos/node-retry" -"reusify@1.0.4","MIT","https://github.com/mcollina/reusify" -"rfdc@1.3.0","MIT","https://github.com/davidmarkclements/rfdc" "rimraf@2.7.1","ISC","https://github.com/isaacs/rimraf" -"rimraf@3.0.2","ISC","https://github.com/isaacs/rimraf" -"ripemd160@2.0.2","MIT","https://github.com/crypto-browserify/ripemd160" "robust-predicates@3.0.1","Unlicense","https://github.com/mourner/robust-predicates" -"run-async@2.4.1","MIT","https://github.com/SBoudrias/run-async" -"run-parallel@1.2.0","MIT","https://github.com/feross/run-parallel" "run-queue@1.0.3","ISC","https://github.com/iarna/run-queue" "rw@1.3.3","BSD-3-Clause","https://github.com/mbostock/rw" "rxjs@6.4.0","Apache-2.0","https://github.com/reactivex/rxjs" "rxjs@6.6.7","Apache-2.0","https://github.com/reactivex/rxjs" -"rxjs@7.5.4","Apache-2.0","https://github.com/reactivex/rxjs" -"rxjs@7.5.7","Apache-2.0","https://github.com/reactivex/rxjs" "safe-buffer@5.1.2","MIT","https://github.com/feross/safe-buffer" "safe-buffer@5.2.1","MIT","https://github.com/feross/safe-buffer" -"safe-regex@1.1.0","MIT","https://github.com/substack/safe-regex" "safer-buffer@2.1.2","MIT","https://github.com/ChALkeR/safer-buffer" -"sass-loader@13.0.2","MIT","https://github.com/webpack-contrib/sass-loader" -"sass@1.54.4","MIT","https://github.com/sass/dart-sass" -"sax@1.2.4","ISC","https://github.com/isaacs/sax-js" -"schema-utils@1.0.0","MIT","https://github.com/webpack-contrib/schema-utils" -"schema-utils@2.7.1","MIT","https://github.com/webpack/schema-utils" -"schema-utils@3.1.1","MIT","https://github.com/webpack/schema-utils" -"schema-utils@4.0.0","MIT","https://github.com/webpack/schema-utils" "schematics-utilities@2.0.3","MIT","https://github.com/nitayneeman/schematics-utilities" -"select-hose@2.0.0","MIT","https://github.com/indutny/select-hose" "select@1.1.2","MIT","https://github.com/zenorocha/select" -"selfsigned@2.1.1","MIT","https://github.com/jfromaniello/selfsigned" -"semver-compare@1.0.0","MIT","https://github.com/substack/semver-compare" "semver-intersect@1.4.0","MIT","https://github.com/snyamathi/semver-intersect" "semver@5.7.1","ISC","https://github.com/npm/node-semver" "semver@6.3.0","ISC","https://github.com/npm/node-semver" -"semver@7.3.5","ISC","https://github.com/npm/node-semver" -"semver@7.3.7","ISC","https://github.com/npm/node-semver" -"semver@7.3.8","ISC","https://github.com/npm/node-semver" -"send@0.18.0","MIT","https://github.com/pillarjs/send" -"serialize-javascript@4.0.0","BSD-3-Clause","https://github.com/yahoo/serialize-javascript" -"serialize-javascript@6.0.0","BSD-3-Clause","https://github.com/yahoo/serialize-javascript" -"serve-index@1.9.1","MIT","https://github.com/expressjs/serve-index" -"serve-static@1.15.0","MIT","https://github.com/expressjs/serve-static" -"set-blocking@2.0.0","ISC","https://github.com/yargs/set-blocking" -"set-value@2.0.1","MIT","https://github.com/jonschlinkert/set-value" -"setimmediate@1.0.5","MIT","https://github.com/YuzuJS/setImmediate" -"setprototypeof@1.1.0","ISC","https://github.com/wesleytodd/setprototypeof" -"setprototypeof@1.2.0","ISC","https://github.com/wesleytodd/setprototypeof" -"sha.js@2.4.11","(MIT AND BSD-3-Clause)","https://github.com/crypto-browserify/sha.js" -"shallow-clone@3.0.1","MIT","https://github.com/jonschlinkert/shallow-clone" -"shebang-command@2.0.0","MIT","https://github.com/kevva/shebang-command" -"shebang-regex@3.0.0","MIT","https://github.com/sindresorhus/shebang-regex" -"side-channel@1.0.4","MIT","https://github.com/ljharb/side-channel" -"signal-exit@3.0.7","ISC","https://github.com/tapjs/signal-exit" -"slash@3.0.0","MIT","https://github.com/sindresorhus/slash" -"slash@4.0.0","MIT","https://github.com/sindresorhus/slash" -"slice-ansi@3.0.0","MIT","https://github.com/chalk/slice-ansi" -"slice-ansi@4.0.0","MIT","https://github.com/chalk/slice-ansi" -"slide@1.1.6","ISC","https://github.com/isaacs/slide-flow-control" "smart-buffer@4.2.0","MIT","https://github.com/JoshGlazebrook/smart-buffer" -"snapdragon-node@2.1.1","MIT","https://github.com/jonschlinkert/snapdragon-node" -"snapdragon-util@3.0.1","MIT","https://github.com/jonschlinkert/snapdragon-util" -"snapdragon@0.8.2","MIT","https://github.com/jonschlinkert/snapdragon" -"socket.io-adapter@2.5.2","MIT","https://github.com/socketio/socket.io-adapter" -"socket.io-parser@4.2.3","MIT","https://github.com/socketio/socket.io-parser" -"socket.io@4.6.1","MIT","https://github.com/socketio/socket.io" -"sockjs@0.3.24","MIT","https://github.com/sockjs/sockjs-node" "socks-proxy-agent@4.0.2","MIT","https://github.com/TooTallNate/node-socks-proxy-agent" -"socks-proxy-agent@7.0.0","MIT","https://github.com/TooTallNate/node-socks-proxy-agent" "socks@2.3.3","MIT","https://github.com/JoshGlazebrook/socks" -"socks@2.7.1","MIT","https://github.com/JoshGlazebrook/socks" -"source-list-map@2.0.1","MIT","https://github.com/webpack/source-list-map" -"source-map-js@1.0.2","BSD-3-Clause","https://github.com/7rulnik/source-map-js" -"source-map-loader@4.0.0","MIT","https://github.com/webpack-contrib/source-map-loader" -"source-map-resolve@0.5.3","MIT","https://github.com/lydell/source-map-resolve" -"source-map-support@0.5.21","MIT","https://github.com/evanw/node-source-map-support" -"source-map-url@0.4.1","MIT","https://github.com/lydell/source-map-url" -"source-map@0.5.7","BSD-3-Clause","https://github.com/mozilla/source-map" -"source-map@0.6.1","BSD-3-Clause","https://github.com/mozilla/source-map" "source-map@0.7.3","BSD-3-Clause","https://github.com/mozilla/source-map" -"source-map@0.7.4","BSD-3-Clause","https://github.com/mozilla/source-map" "sourcemap-codec@1.4.8","MIT","https://github.com/Rich-Harris/sourcemap-codec" -"spdx-compare@1.0.0","MIT","https://github.com/kemitchell/spdx-compare.js" "spdx-correct@3.1.1","Apache-2.0","https://github.com/jslicense/spdx-correct.js" "spdx-exceptions@2.3.0","CC-BY-3.0","https://github.com/kemitchell/spdx-exceptions.json" "spdx-expression-parse@3.0.1","MIT","https://github.com/jslicense/spdx-expression-parse.js" "spdx-license-ids@3.0.11","CC0-1.0","https://github.com/jslicense/spdx-license-ids" -"spdx-ranges@2.1.1","(MIT AND CC-BY-3.0)","https://github.com/kemitchell/spdx-ranges.js" -"spdx-satisfies@4.0.1","MIT","https://github.com/kemitchell/spdx-satisfies.js" -"spdy-transport@3.0.0","MIT","https://github.com/spdy-http2/spdy-transport" -"spdy@4.0.2","MIT","https://github.com/indutny/node-spdy" -"split-string@3.1.0","MIT","https://github.com/jonschlinkert/split-string" -"sprintf-js@1.0.3","BSD-3-Clause","https://github.com/alexei/sprintf.js" -"sshpk@1.17.0","MIT","https://github.com/joyent/node-sshpk" "ssri@6.0.2","ISC","https://github.com/zkat/ssri" -"ssri@9.0.1","ISC","https://github.com/npm/ssri" -"static-extend@0.1.2","MIT","https://github.com/jonschlinkert/static-extend" -"statuses@1.5.0","MIT","https://github.com/jshttp/statuses" -"statuses@2.0.1","MIT","https://github.com/jshttp/statuses" -"stream-browserify@2.0.2","MIT","https://github.com/browserify/stream-browserify" "stream-each@1.2.3","MIT","https://github.com/mafintosh/stream-each" -"stream-http@2.8.3","MIT","https://github.com/jhiesey/stream-http" "stream-shift@1.0.1","MIT","https://github.com/mafintosh/stream-shift" -"streamroller@3.0.2","MIT","https://github.com/nomiddlename/streamroller" -"string-argv@0.3.1","MIT","https://github.com/mccormicka/string-argv" -"string-width@4.2.3","MIT","https://github.com/sindresorhus/string-width" "string_decoder@1.1.1","MIT","https://github.com/nodejs/string_decoder" -"string_decoder@1.3.0","MIT","https://github.com/nodejs/string_decoder" -"stringify-object@3.3.0","BSD-2-Clause","https://github.com/yeoman/stringify-object" -"strip-ansi@6.0.1","MIT","https://github.com/chalk/strip-ansi" -"strip-bom@3.0.0","MIT","https://github.com/sindresorhus/strip-bom" -"strip-final-newline@2.0.0","MIT","https://github.com/sindresorhus/strip-final-newline" -"strip-json-comments@2.0.1","MIT","https://github.com/sindresorhus/strip-json-comments" -"strip-json-comments@3.1.1","MIT","https://github.com/sindresorhus/strip-json-comments" "stylis@4.1.3","MIT","https://github.com/thysultan/stylis.js" -"stylus-loader@7.0.0","MIT","https://github.com/webpack-contrib/stylus-loader" -"stylus@0.59.0","MIT","https://github.com/stylus/stylus" -"supports-color@5.5.0","MIT","https://github.com/chalk/supports-color" -"supports-color@7.2.0","MIT","https://github.com/chalk/supports-color" -"supports-color@8.1.1","MIT","https://github.com/chalk/supports-color" "supports-preserve-symlinks-flag@1.0.0","MIT","https://github.com/inspect-js/node-supports-preserve-symlinks-flag" -"symbol-observable@4.0.0","MIT","https://github.com/blesh/symbol-observable" -"tapable@1.1.3","MIT","https://github.com/webpack/tapable" -"tapable@2.2.1","MIT","https://github.com/webpack/tapable" -"tar-fs@2.1.1","MIT","https://github.com/mafintosh/tar-fs" -"tar-stream@2.2.0","MIT","https://github.com/mafintosh/tar-stream" "tar@4.4.19","ISC","https://github.com/npm/node-tar" -"tar@6.1.11","ISC","https://github.com/npm/node-tar" -"terser-webpack-plugin@1.4.5","MIT","https://github.com/webpack-contrib/terser-webpack-plugin" -"terser-webpack-plugin@5.3.6","MIT","https://github.com/webpack-contrib/terser-webpack-plugin" -"terser@4.8.1","BSD-2-Clause","https://github.com/terser/terser" -"terser@5.14.2","BSD-2-Clause","https://github.com/terser/terser" -"test-exclude@6.0.0","ISC","https://github.com/istanbuljs/test-exclude" -"text-table@0.2.0","MIT","https://github.com/substack/text-table" -"throttleit@1.0.0","MIT","https://github.com/component/throttle" "through2@2.0.5","MIT","https://github.com/rvagg/through2" "through@2.3.8","MIT","https://github.com/dominictarr/through" -"thunky@1.1.0","MIT","https://github.com/mafintosh/thunky" -"timers-browserify@2.0.12","MIT","https://github.com/jryans/timers-browserify" "tiny-emitter@2.1.0","MIT","https://github.com/scottcorgan/tiny-emitter" -"tmp@0.0.33","MIT","https://github.com/raszi/node-tmp" -"tmp@0.2.1","MIT","https://github.com/raszi/node-tmp" -"to-arraybuffer@1.0.1","MIT","https://github.com/jhiesey/to-arraybuffer" -"to-fast-properties@2.0.0","MIT","https://github.com/sindresorhus/to-fast-properties" -"to-object-path@0.3.0","MIT","https://github.com/jonschlinkert/to-object-path" -"to-regex-range@2.1.1","MIT","https://github.com/micromatch/to-regex-range" -"to-regex-range@5.0.1","MIT","https://github.com/micromatch/to-regex-range" -"to-regex@3.0.2","MIT","https://github.com/jonschlinkert/to-regex" -"toidentifier@1.0.1","MIT","https://github.com/component/toidentifier" -"tough-cookie@2.5.0","BSD-3-Clause","https://github.com/salesforce/tough-cookie" -"tr46@0.0.3","MIT","https://github.com/Sebmaster/tr46.js" -"tree-kill@1.2.2","MIT","https://github.com/pkrumins/node-tree-kill" -"treeify@1.1.0","MIT","https://github.com/notatestuser/treeify" -"tryer@1.0.1","MIT","git+https://gitlab.com/philbooth/tryer" -"ts-loader@8.4.0","MIT","https://github.com/TypeStrong/ts-loader" "ts-md5@1.2.11","MIT","https://github.com/cotag/ts-md5" -"ts-node@10.9.1","MIT","https://github.com/TypeStrong/ts-node" -"ts-pnp@1.2.0","MIT","https://github.com/arcanis/ts-pnp" -"tsconfig-paths-webpack-plugin@3.5.2","MIT","https://github.com/dividab/tsconfig-paths-webpack-plugin" -"tsconfig-paths@3.14.2","MIT","https://github.com/dividab/tsconfig-paths" -"tsconfig@7.0.0","MIT","https://github.com/TypeStrong/tsconfig" "tslib@1.14.1","0BSD","https://github.com/Microsoft/tslib" "tslib@2.4.0","0BSD","https://github.com/Microsoft/tslib" -"tsutils@3.21.0","MIT","https://github.com/ajafff/tsutils" -"tty-browserify@0.0.0","MIT","https://github.com/substack/tty-browserify" -"tunnel-agent@0.6.0","Apache-2.0","https://github.com/mikeal/tunnel-agent" -"tweetnacl@0.14.5","Unlicense","https://github.com/dchest/tweetnacl-js" -"type-check@0.4.0","MIT","https://github.com/gkz/type-check" -"type-fest@0.20.2","(MIT OR CC0-1.0)","https://github.com/sindresorhus/type-fest" -"type-fest@0.21.3","(MIT OR CC0-1.0)","https://github.com/sindresorhus/type-fest" -"type-is@1.6.18","MIT","https://github.com/jshttp/type-is" -"typed-assert@1.0.8","MIT","https://github.com/elierotenberg/typed-assert" "typedarray@0.0.6","MIT","https://github.com/substack/typedarray" "typescript@3.9.10","Apache-2.0","https://github.com/Microsoft/TypeScript" -"typescript@4.8.4","Apache-2.0","https://github.com/Microsoft/TypeScript" -"ua-parser-js@0.7.33","MIT","https://github.com/faisalman/ua-parser-js" -"unbzip2-stream@1.4.3","MIT","https://github.com/regular/unbzip2-stream" -"unicode-canonical-property-names-ecmascript@2.0.0","MIT","https://github.com/mathiasbynens/unicode-canonical-property-names-ecmascript" -"unicode-match-property-ecmascript@2.0.0","MIT","https://github.com/mathiasbynens/unicode-match-property-ecmascript" -"unicode-match-property-value-ecmascript@2.0.0","MIT","https://github.com/mathiasbynens/unicode-match-property-value-ecmascript" -"unicode-property-aliases-ecmascript@2.1.0","MIT","https://github.com/mathiasbynens/unicode-property-aliases-ecmascript" -"union-value@1.0.1","MIT","https://github.com/jonschlinkert/union-value" "unique-filename@1.1.1","ISC","https://github.com/iarna/unique-filename" "unique-slug@2.0.2","ISC","https://github.com/iarna/unique-slug" -"universalify@2.0.0","MIT","https://github.com/RyanZim/universalify" -"unpipe@1.0.0","MIT","https://github.com/stream-utils/unpipe" -"unset-value@1.0.0","MIT","https://github.com/jonschlinkert/unset-value" -"untildify@4.0.0","MIT","https://github.com/sindresorhus/untildify" -"upath@1.2.0","MIT","https://github.com/anodynos/upath" -"update-browserslist-db@1.0.10","MIT","https://github.com/browserslist/update-db" "uri-js@4.4.1","BSD-2-Clause","https://github.com/garycourt/uri-js" -"urix@0.1.0","MIT","https://github.com/lydell/urix" -"url@0.11.1","MIT","https://github.com/defunctzombie/node-url" -"use@3.1.1","MIT","https://github.com/jonschlinkert/use" "util-deprecate@1.0.2","MIT","https://github.com/TooTallNate/util-deprecate" -"util-extend@1.0.3","MIT","https://github.com/isaacs/util-extend" -"util@0.10.3","MIT","https://github.com/defunctzombie/node-util" -"util@0.11.1","MIT","https://github.com/defunctzombie/node-util" -"utils-merge@1.0.1","MIT","https://github.com/jaredhanson/utils-merge" "uuid@8.3.2","MIT","https://github.com/uuidjs/uuid" "uuid@9.0.0","MIT","https://github.com/uuidjs/uuid" -"v8-compile-cache-lib@3.0.1","MIT","https://github.com/cspotcode/v8-compile-cache-lib" -"v8-compile-cache@2.3.0","MIT","https://github.com/zertosh/v8-compile-cache" "validate-npm-package-license@3.0.4","Apache-2.0","https://github.com/kemitchell/validate-npm-package-license.js" "validate-npm-package-name@3.0.0","ISC","https://github.com/npm/validate-npm-package-name" -"validate-npm-package-name@4.0.0","ISC","https://github.com/npm/validate-npm-package-name" -"vary@1.1.2","MIT","https://github.com/jshttp/vary" -"verror@1.10.0","MIT","https://github.com/davepacheco/node-verror" -"vm-browserify@1.1.2","MIT","https://github.com/substack/vm-browserify" -"void-elements@2.0.1","MIT","https://github.com/hemanth/void-elements" -"watchpack-chokidar2@2.0.1","MIT","https://github.com/webpack/watchpack" -"watchpack@1.7.5","MIT","https://github.com/webpack/watchpack" -"watchpack@2.4.0","MIT","https://github.com/webpack/watchpack" -"wbuf@1.7.3","MIT","https://github.com/indutny/wbuf" -"wcwidth@1.0.1","MIT","https://github.com/timoxley/wcwidth" -"webidl-conversions@3.0.1","BSD-2-Clause","https://github.com/jsdom/webidl-conversions" -"webpack-dev-middleware@5.3.3","MIT","https://github.com/webpack/webpack-dev-middleware" -"webpack-dev-server@4.11.0","MIT","https://github.com/webpack/webpack-dev-server" -"webpack-merge@5.8.0","MIT","https://github.com/survivejs/webpack-merge" -"webpack-sources@1.4.3","MIT","https://github.com/webpack/webpack-sources" -"webpack-sources@3.2.3","MIT","https://github.com/webpack/webpack-sources" -"webpack-subresource-integrity@5.1.0","MIT","https://github.com/waysact/webpack-subresource-integrity" -"webpack@4.46.0","MIT","https://github.com/webpack/webpack" -"webpack@5.74.0","MIT","https://github.com/webpack/webpack" -"websocket-driver@0.7.4","Apache-2.0","https://github.com/faye/websocket-driver-node" -"websocket-extensions@0.1.4","Apache-2.0","https://github.com/faye/websocket-extensions-node" -"whatwg-url@5.0.0","MIT","https://github.com/jsdom/whatwg-url" "which@1.3.1","ISC","https://github.com/isaacs/node-which" -"which@2.0.2","ISC","https://github.com/isaacs/node-which" -"wide-align@1.1.5","ISC","https://github.com/iarna/wide-align" -"wildcard@2.0.0","MIT","https://github.com/DamonOehlman/wildcard" -"word-wrap@1.2.3","MIT","https://github.com/jonschlinkert/word-wrap" -"wordwrap@1.0.0","MIT","https://github.com/substack/node-wordwrap" -"worker-farm@1.7.0","MIT","https://github.com/rvagg/node-worker-farm" -"wrap-ansi@6.2.0","MIT","https://github.com/chalk/wrap-ansi" -"wrap-ansi@7.0.0","MIT","https://github.com/chalk/wrap-ansi" "wrappy@1.0.2","ISC","https://github.com/npm/wrappy" -"ws@7.5.9","MIT","https://github.com/websockets/ws" -"ws@8.11.0","MIT","https://github.com/websockets/ws" "xtend@4.0.2","MIT","https://github.com/Raynos/xtend" "y18n@4.0.3","ISC","https://github.com/yargs/y18n" -"y18n@5.0.8","ISC","https://github.com/yargs/y18n" "yallist@3.1.1","ISC","https://github.com/isaacs/yallist" -"yallist@4.0.0","ISC","https://github.com/isaacs/yallist" -"yaml@1.10.2","ISC","https://github.com/eemeli/yaml" -"yargs-parser@20.2.9","ISC","https://github.com/yargs/yargs-parser" -"yargs-parser@21.0.0","ISC","https://github.com/yargs/yargs-parser" -"yargs@16.2.0","MIT","https://github.com/yargs/yargs" -"yargs@17.5.1","MIT","https://github.com/yargs/yargs" -"yauzl@2.10.0","MIT","https://github.com/thejoshwolfe/yauzl" -"yn@3.1.1","MIT","https://github.com/sindresorhus/yn" "zone.js@0.11.4","MIT","https://github.com/angular/angular" diff --git a/package.json b/package.json index 9c199c304c..936f48babc 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "build.prod": "npx ng build", "build": "npx ng build", "watch": "ng build --watch --configuration development", - "license": "license-checker --excludePackages dockstore-ui2@$npm_package_version --csv > THIRD-PARTY-LICENSES.csv", - "circle-ci-license-test-file": "license-checker --excludePackages dockstore-ui2@$npm_package_version --csv > CIRCLE-THIRD-PARTY-LICENSES.csv", + "license": "license-checker --production --excludePackages dockstore-ui2@$npm_package_version --csv > THIRD-PARTY-LICENSES.csv", + "circle-ci-license-test-file": "license-checker --production --excludePackages dockstore-ui2@$npm_package_version --csv > CIRCLE-THIRD-PARTY-LICENSES.csv", "compodoc": "npx compodoc -p src/tsconfig.compodoc.json --output docs", "install-git-secrets": "./scripts/install-git-secrets.sh", "test": "npx ng test", From 80bf62a14ec0b062186393d2b94a1d6baebcd2e2 Mon Sep 17 00:00:00 2001 From: Kathy Tran Date: Wed, 12 Jul 2023 17:00:22 -0400 Subject: [PATCH 035/128] Display cost metric (#1805) https://ucsc-cgl.atlassian.net/browse/SEAB-5625 * Add cost metric * Add 1.15.0 migrations * Add space to tooltip * Use develop artifacts * Add cost to sampleMetrics.json --- cypress/fixtures/sampleMetrics.json | 21 ++++++++++++++++++- package.json | 4 ++-- .../executions/executions-tab.component.html | 12 +++++------ .../executions/executions-tab.component.ts | 9 ++++++-- 4 files changed, 35 insertions(+), 11 deletions(-) diff --git a/cypress/fixtures/sampleMetrics.json b/cypress/fixtures/sampleMetrics.json index ce64657f54..ebd170c073 100644 --- a/cypress/fixtures/sampleMetrics.json +++ b/cypress/fixtures/sampleMetrics.json @@ -5,6 +5,7 @@ "executionTime": null, "id": 124, "memory": null, + "cost": null, "validationStatus": { "id": 134, "validatorTools": { @@ -77,7 +78,8 @@ "executionTime": null, "id": 126, "memory": null, - "validationStatus": null + "validationStatus": null, + "cost": null }, "AGC": { "cpu": { @@ -114,6 +116,14 @@ "id": 105, "unit": "GB" }, + "cost": { + "average": 3.25, + "maximum": 4, + "minimum": 2, + "numberOfDataPointsForAverage": 4, + "id": 200, + "unit": "USD" + }, "validationStatus": null }, "OTHER": { @@ -150,6 +160,7 @@ "id": 108, "unit": "GB" }, + "cost": null, "validationStatus": null }, "ALL": { @@ -187,6 +198,14 @@ "id": 111, "unit": "GB" }, + "cost": { + "average": 3.25, + "maximum": 4, + "minimum": 2, + "numberOfDataPointsForAverage": 4, + "id": 201, + "unit": "USD" + }, "validationStatus": { "id": 138, "validatorTools": { diff --git a/package.json b/package.json index 936f48babc..d13e007aeb 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "config": { "webservice_version": "1.15.0", "use_circle": true, - "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/10135/workflows/670e8975-9acf-4211-a104-2c37b0142452/jobs/35244/artifacts", - "circle_build_id": "35244" + "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/10164/workflows/ea25cb1f-4d5f-4124-86d4-2305408a3784/jobs/35487/artifacts", + "circle_build_id": "35487" }, "scripts": { "ng": "npx ng", diff --git a/src/app/workflow/executions/executions-tab.component.html b/src/app/workflow/executions/executions-tab.component.html index 2410951392..3d375f61b3 100644 --- a/src/app/workflow/executions/executions-tab.component.html +++ b/src/app/workflow/executions/executions-tab.component.html @@ -47,8 +47,8 @@ Minimum - {{ executionMetric.minimum | number: '1.0-2' }}{{ executionMetric.unit }}{{ executionMetric.minimum | number: '1.0-2' }} {{ executionMetric.unit }} @@ -56,8 +56,8 @@ Average - {{ executionMetric.average | number: '1.0-2' }}{{ executionMetric.unit }}{{ executionMetric.average | number: '1.0-2' }} {{ executionMetric.unit }} @@ -65,8 +65,8 @@ Maximum - {{ executionMetric.maximum | number: '1.0-2' }}{{ executionMetric.unit }}{{ executionMetric.maximum | number: '1.0-2' }} {{ executionMetric.unit }} diff --git a/src/app/workflow/executions/executions-tab.component.ts b/src/app/workflow/executions/executions-tab.component.ts index 868621f5fc..b8667db8cf 100644 --- a/src/app/workflow/executions/executions-tab.component.ts +++ b/src/app/workflow/executions/executions-tab.component.ts @@ -135,7 +135,11 @@ export class ExecutionsTabComponent extends EntryTab implements OnChanges { const metrics = this.metrics.get(partner); this.executionMetricsTable = this.createExecutionsTable(metrics); this.executionMetricsExist = - metrics?.cpu !== null || metrics?.memory !== null || metrics?.executionTime !== null || metrics?.executionStatusCount !== null; + metrics?.cpu !== null || + metrics?.memory !== null || + metrics?.executionTime !== null || + metrics?.executionStatusCount !== null || + metrics?.cost !== null; if (metrics?.executionStatusCount) { this.totalExecutions = @@ -154,10 +158,11 @@ export class ExecutionsTabComponent extends EntryTab implements OnChanges { private createExecutionsTable(metrics: Metrics | null): ExecutionMetricsTableObject[] { let executionsTable: ExecutionMetricsTableObject[] = []; // Only create the table if one of the execution metrics exist - if (metrics && (metrics.cpu || metrics.memory || metrics.executionTime)) { + if (metrics && (metrics.cpu || metrics.memory || metrics.executionTime || metrics.cost)) { executionsTable.push({ metric: 'CPU', ...metrics?.cpu }); executionsTable.push({ metric: 'Memory', ...metrics?.memory }); executionsTable.push({ metric: 'Run Time', ...metrics?.executionTime }); + executionsTable.push({ metric: 'Cost', ...metrics?.cost }); } return executionsTable; } From 0c21d627321ab1d234bb434e309df32c9a435c6c Mon Sep 17 00:00:00 2001 From: Ying Yang <68610185+y-ng@users.noreply.github.com> Date: Thu, 13 Jul 2023 13:28:11 -0400 Subject: [PATCH 036/128] DOCK-2392: Indicate when recent activities are from unknown users (#1808) * add unknown user text * update circleci artifacts in package.json * update webservice script * try changing cypress cache location * rearrange html --- src/app/gravatar/gravatar.service.ts | 4 +- .../recent-events.component.html | 224 +++++++----------- 2 files changed, 91 insertions(+), 137 deletions(-) diff --git a/src/app/gravatar/gravatar.service.ts b/src/app/gravatar/gravatar.service.ts index eeca7ac171..b4588604d3 100644 --- a/src/app/gravatar/gravatar.service.ts +++ b/src/app/gravatar/gravatar.service.ts @@ -13,8 +13,8 @@ export class GravatarService { } public gravatarUrlForMysteryPerson() { - // https://en.gravatar.com/site/implement/images/ -- it's "mp", not "mm" there, but we've had it like this - return `${this.gravatarBaseUrl}?d=mm&s=500`; + // use "mp" (mystery-person) from https://en.gravatar.com/site/implement/images/ + return `${this.gravatarBaseUrl}?d=mp&s=500`; } public gravatarUrlForImageUrl(imageUrl: string | null) { diff --git a/src/app/home-page/recent-events/recent-events.component.html b/src/app/home-page/recent-events/recent-events.component.html index 5d595b6052..7108874add 100644 --- a/src/app/home-page/recent-events/recent-events.component.html +++ b/src/app/home-page/recent-events/recent-events.component.html @@ -9,7 +9,7 @@
    User avatar @@ -19,141 +19,95 @@ User avatar
    - -
    - {{ - event.initiatorUser?.username - }} + - published the {{ event | recentEvents: 'entryType' }} - {{ event | recentEvents: 'displayName' }} -
    -
    - - {{ - event.initiatorUser?.username - }} - unpublished the {{ event | recentEvents: 'entryType' }} {{ event | recentEvents: 'displayName' }} -
    -
    - {{ - event.initiatorUser?.username - }} - created the {{ event.version?.referenceType | lowercase }} {{ event.version?.name }} in - {{ event | recentEvents: 'entryType' }} - {{ event | recentEvents: 'displayName' }} -
    - - -
    - The organization - {{ event.organization?.displayName }} - was approved. -
    -
    - The organization - {{ event.organization?.displayName }} - was rejected. -
    -
    - The organization - {{ event.organization?.displayName }} - was re-requested for review. -
    - - - - - -
    - - {{ - event.initiatorUser?.username - }} - removed the collection {{ event.collection?.displayName }} in organization - {{ event.organization?.displayName }} -
    -
    - {{ - event.initiatorUser?.username - }} - added the {{ event | recentEvents: 'entryType' }} - {{ event | recentEvents: 'displayName' }} - to the collection - {{ event.collection?.displayName }} - in organization - {{ event.organization?.displayName }} -
    - -
    - {{ - event.initiatorUser?.username - }} - removed the {{ event | recentEvents: 'entryType' }} - {{ event | recentEvents: 'displayName' }} - from the collection - {{ event.collection?.displayName }} + + + {{ event.initiatorUser?.username }} + + + + Unknown user + + + + + published the {{ event | recentEvents: 'entryType' }} + {{ event | recentEvents: 'displayName' }} + + + + unpublished the {{ event | recentEvents: 'entryType' }} {{ event | recentEvents: 'displayName' }} + + + created the {{ event.version?.referenceType | lowercase }} {{ event.version?.name }} in + {{ event | recentEvents: 'entryType' }} + {{ event | recentEvents: 'displayName' }} + + + + created the organization + {{ event.organization?.displayName }} + + + The organization + {{ event.organization?.displayName }} + was approved. + + + The organization + {{ event.organization?.displayName }} + was rejected. + + + The organization + {{ event.organization?.displayName }} + was re-requested for review. + + + added {{ event.user?.username }} to the organization + {{ event.organization?.displayName }} + + + joined the organization + {{ event.organization?.displayName }} + + + updated the organization + {{ event.organization?.displayName }} + + + + created the collection + {{ event.collection?.displayName }} + in organization + {{ event.organization?.displayName }} + + + + removed the collection {{ event.collection?.displayName }} in organization + {{ event.organization?.displayName }} + + + added the {{ event | recentEvents: 'entryType' }} + {{ event | recentEvents: 'displayName' }} + to the collection + {{ event.collection?.displayName }} + in organization + {{ event.organization?.displayName }} + + + edited the collection + {{ event.collection?.displayName }} + + + removed the {{ event | recentEvents: 'entryType' }} + {{ event | recentEvents: 'displayName' }} + from the collection + {{ event.collection?.displayName }} +
    {{ event.dbCreateDate | date: 'medium' }}
    From 8d648b1346ebb469948bd8eb23a96cb33640b2f7 Mon Sep 17 00:00:00 2001 From: Charles Overbeck Date: Thu, 13 Jul 2023 14:07:31 -0700 Subject: [PATCH 037/128] Use new description endpoint (#1812) * Use new description endpoint SEAB-4592 --- package.json | 4 ++-- .../container/info-tab/info-tab.component.html | 8 ++++---- src/app/container/info-tab/info-tab.component.ts | 16 +++++++++++++--- .../workflow/info-tab/info-tab.component.html | 8 ++++---- src/app/workflow/info-tab/info-tab.component.ts | 6 ++++++ 5 files changed, 29 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index d13e007aeb..147bcc68e3 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "config": { "webservice_version": "1.15.0", "use_circle": true, - "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/10164/workflows/ea25cb1f-4d5f-4124-86d4-2305408a3784/jobs/35487/artifacts", - "circle_build_id": "35487" + "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/10185/workflows/bb72bacc-56ac-4b5e-b4a2-dfe7c9ab35f6/jobs/35552/artifacts", + "circle_build_id": "35552" }, "scripts": { "ng": "npx ng", diff --git a/src/app/container/info-tab/info-tab.component.html b/src/app/container/info-tab/info-tab.component.html index 8e4356927a..5f05b83fcd 100644 --- a/src/app/container/info-tab/info-tab.component.html +++ b/src/app/container/info-tab/info-tab.component.html @@ -433,15 +433,15 @@ -
    +
    : -
    +
    -
    +
    warning No description associated with this tool. See diff --git a/src/app/container/info-tab/info-tab.component.ts b/src/app/container/info-tab/info-tab.component.ts index f27a839a14..0c0bb48992 100644 --- a/src/app/container/info-tab/info-tab.component.ts +++ b/src/app/container/info-tab/info-tab.component.ts @@ -22,7 +22,7 @@ import { Dockstore } from '../../shared/dockstore.model'; import { ExtendedToolsService } from '../../shared/extended-tools.service'; import { ExtendedDockstoreTool } from '../../shared/models/ExtendedDockstoreTool'; import { SessionQuery } from '../../shared/session/session.query'; -import { ToolDescriptor, ToolVersion, WorkflowVersion } from '../../shared/openapi'; +import { ContainertagsService, ToolDescriptor, ToolVersion, WorkflowVersion } from '../../shared/openapi'; import { DockstoreTool } from '../../shared/openapi/model/dockstoreTool'; import { Tag } from '../../shared/openapi/model/tag'; import { exampleDescriptorPatterns, validationDescriptorPatterns } from '../../shared/validationMessages.model'; @@ -42,10 +42,11 @@ export class InfoTabComponent extends Base implements OnInit, OnChanges { @Input() selectedVersion: Tag; @Input() privateOnlyRegistry: boolean; @Input() extendedDockstoreTool: ExtendedDockstoreTool; + public description: string | null; public validationPatterns = validationDescriptorPatterns; public exampleDescriptorPatterns = exampleDescriptorPatterns; public DockstoreToolType = DockstoreTool; - public tool: DockstoreTool; + public tool: ExtendedDockstoreTool; public topicEditing: boolean; public TopicSelectionEnum = DockstoreTool.TopicSelectionEnum; public authors: Array = []; @@ -61,12 +62,18 @@ export class InfoTabComponent extends Base implements OnInit, OnChanges { downloadZipLink: string; isValidVersion = false; Dockstore = Dockstore; - constructor(private infoTabService: InfoTabService, private sessionQuery: SessionQuery, private containersService: ExtendedToolsService) { + constructor( + private infoTabService: InfoTabService, + private sessionQuery: SessionQuery, + private containersService: ExtendedToolsService, + private containerTagsService: ContainertagsService + ) { super(); } ngOnChanges() { this.tool = JSON.parse(JSON.stringify(this.extendedDockstoreTool)); + this.description = null; if (this.selectedVersion && this.tool) { this.authors = this.selectedVersion.authors; this.currentVersion = this.selectedVersion; @@ -88,6 +95,9 @@ export class InfoTabComponent extends Base implements OnInit, OnChanges { this.currentVersion.wdl_path ); } + this.containerTagsService + .getTagDescription(this.tool.id, this.selectedVersion.id) + .subscribe((description) => (this.description = description)); } else { this.isValidVersion = false; this.trsLinkCWL = null; diff --git a/src/app/workflow/info-tab/info-tab.component.html b/src/app/workflow/info-tab/info-tab.component.html index 7483b5d92a..8b6b93af89 100644 --- a/src/app/workflow/info-tab/info-tab.component.html +++ b/src/app/workflow/info-tab/info-tab.component.html @@ -497,15 +497,15 @@ {{ publicAccessibleTestParameterFile ? 'Yes' : 'No' }}
    -
    +
    : -
    +
    -
    +
    warning No description associated with this {{ entryType$ | async }}. diff --git a/src/app/workflow/info-tab/info-tab.component.ts b/src/app/workflow/info-tab/info-tab.component.ts index c6562866dc..502756fe65 100644 --- a/src/app/workflow/info-tab/info-tab.component.ts +++ b/src/app/workflow/info-tab/info-tab.component.ts @@ -61,6 +61,7 @@ export class InfoTabComponent extends EntryTab implements OnInit, OnChanges { public WorkflowType = Workflow; public TopicSelectionEnum = Workflow.TopicSelectionEnum; public tooltip = Tooltip; + public description: string | null; workflowPathEditing: boolean; temporaryDescriptorType: Workflow.DescriptorTypeEnum; descriptorLanguages$: Observable>; @@ -110,6 +111,7 @@ export class InfoTabComponent extends EntryTab implements OnInit, OnChanges { } this.workflow = this.deepCopy(this.extendedWorkflow); this.temporaryDescriptorType = this.workflow.descriptorType; + this.description = null; if (this.selectedVersion && this.workflow) { this.currentVersion = this.selectedVersion; this.publicAccessibleTestParameterFile = this.selectedVersion?.versionMetadata?.publicAccessibleTestParameterFile; @@ -132,6 +134,9 @@ export class InfoTabComponent extends EntryTab implements OnInit, OnChanges { this.workflowsService.getWorkflowVersionOrcidAuthors(this.workflow.id, this.selectedVersion.id).subscribe((orcidAuthors) => { this.authors = [...this.selectedVersion.authors, ...orcidAuthors]; }); + this.workflowsService + .getWorkflowVersionDescription(this.workflow.id, this.selectedVersion.id) + .subscribe((description) => (this.description = description)); } else { this.currentVersion = null; this.publicAccessibleTestParameterFile = null; @@ -140,6 +145,7 @@ export class InfoTabComponent extends EntryTab implements OnInit, OnChanges { this.isValidVersion = null; this.downloadZipLink = null; this.authors = null; + this.description = null; } } From 6fec2041ab935d80c618312e33e88f1af0097321 Mon Sep 17 00:00:00 2001 From: Charles Overbeck Date: Wed, 19 Jul 2023 16:30:31 -0700 Subject: [PATCH 038/128] Browser tools installation and hotfix merge blues (#1822) See CircleCI-Public/browser-tools-orb#75 Different than fix on hotfix branch as Circle updated their orb Hotfix post- merge fixes: 1. Update URL check; test was not in hotfix branch 2. metrics.ts mutates the DB; move it out of immutableDatabaseTests because of its side effect of causing a notebook test to fail. --- .circleci/config.yml | 2 +- cypress/e2e/group1/dashboard.ts | 2 +- cypress/e2e/{immutableDatabaseTests => group3}/metrics.ts | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename cypress/e2e/{immutableDatabaseTests => group3}/metrics.ts (100%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 72d88b88b5..c7a47020d6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,7 +3,7 @@ orbs: aws-s3: circleci/aws-s3@3.0.0 aws-cli: circleci/aws-cli@3.1.1 slack: circleci/slack@4.4.4 - browser-tools: circleci/browser-tools@1.2.4 + browser-tools: circleci/browser-tools@1.4.2 executors: integration_test_exec: # declares a reusable executor docker: diff --git a/cypress/e2e/group1/dashboard.ts b/cypress/e2e/group1/dashboard.ts index 5592770f7b..b7b01f9602 100644 --- a/cypress/e2e/group1/dashboard.ts +++ b/cypress/e2e/group1/dashboard.ts @@ -48,7 +48,7 @@ describe('Dockstore dashboard', () => { cy.get('[data-cy=help-link]') .contains('Learn more about notebooks') .should('have.attr', 'href') - .and('include', 'getting-started/notebooks'); + .and('include', 'getting-started/getting-started-with-notebooks'); }); it('Registering new tool through Github redirects correctly', () => { diff --git a/cypress/e2e/immutableDatabaseTests/metrics.ts b/cypress/e2e/group3/metrics.ts similarity index 100% rename from cypress/e2e/immutableDatabaseTests/metrics.ts rename to cypress/e2e/group3/metrics.ts From 541d618c19aaf7063f5740071952dc0d61e637fd Mon Sep 17 00:00:00 2001 From: Charles Overbeck Date: Wed, 19 Jul 2023 17:36:29 -0700 Subject: [PATCH 039/128] Set the Angular strictTemplates compiler option (#1816) dockstore/dockstore#5471 --- .../container/add-tag/add-tag.component.html | 4 +-- .../container/add-tag/add-tag.component.ts | 4 +++ src/app/container/container.component.html | 12 +------ src/app/container/container.component.ts | 8 ++--- .../info-tab/info-tab.component.html | 2 +- .../container/launch/launch.component.html | 2 +- .../version-modal.component.html | 16 ++++----- .../version-modal/version-modal.component.ts | 4 +++ src/app/container/view/view.component.ts | 3 +- src/app/containers/list/list.component.ts | 2 +- .../current-collections.component.ts | 4 +-- src/app/file-tree/file-tree.component.html | 2 +- .../dashboard/dashboard.component.ts | 3 ++ .../recent-events/recent-events.component.ts | 2 +- .../account-sidebar.component.html | 8 ----- .../account-sidebar.component.ts | 34 +++++++++++-------- .../accounts/external/accounts.component.html | 1 - .../accounts/external/accounts.component.ts | 2 +- .../downloadcliclient.component.html | 4 +-- .../downloadcliclient.component.ts | 6 +++- .../onboarding/onboarding.component.html | 2 +- .../mytools/my-tool/my-tool.component.html | 4 +-- .../sidebar-accordion.component.html | 2 +- src/app/notebook/notebook.component.html | 2 +- .../collections/collections.component.ts | 4 ++- .../create-collection.component.ts | 6 +++- .../organization-stargazers.component.ts | 2 ++ ...date-organization-description.component.ts | 2 +- .../organizations/organizations.component.ts | 4 +-- src/app/search/search.component.ts | 4 +-- .../code-editor-list.component.html | 2 +- .../code-editor-list.component.ts | 2 +- .../code-editor/code-editor.component.ts | 2 +- src/app/shared/entry.ts | 22 +++++------- src/app/shared/models/SubBucket.ts | 4 +-- src/app/shared/my-entry.ts | 4 +-- src/app/shared/tool-lister.ts | 4 +-- src/app/shared/view.ts | 12 +++---- .../source-file-tabs.component.ts | 2 +- .../starredentries.component.html | 10 +++--- .../starredentries.component.ts | 14 +++++--- .../workflow/tool-tab/tool-tab.component.html | 3 +- src/app/workflow/view/view.component.ts | 4 +-- src/app/workflow/workflow.component.ts | 4 +-- src/app/workflows/list/list.component.ts | 2 +- tsconfig.json | 5 +-- 46 files changed, 130 insertions(+), 121 deletions(-) diff --git a/src/app/container/add-tag/add-tag.component.html b/src/app/container/add-tag/add-tag.component.html index 57618945b8..0aab34820a 100644 --- a/src/app/container/add-tag/add-tag.component.html +++ b/src/app/container/add-tag/add-tag.component.html @@ -101,7 +101,7 @@

    Add Version Tag

    CWL Test Parameter File(s): -
    +
    Add Version Tag
    WDL Test Parameter File(s): -
    +
    -
    -
    - - - warning - {{ missingContent.length === 1 ? 'Field that is missing from file: ' : 'Fields that are missing from file: ' }} {{ missingContent }} - -
    -
    -
    file_copy diff --git a/src/app/container/container.component.ts b/src/app/container/container.component.ts index 3b48b465bb..953fed57ca 100644 --- a/src/app/container/container.component.ts +++ b/src/app/container/container.component.ts @@ -35,12 +35,10 @@ import { EntryType } from '../shared/enum/entry-type'; import { ExtendedDockstoreToolQuery } from '../shared/extended-dockstoreTool/extended-dockstoreTool.query'; import { GA4GHFilesService } from '../shared/ga4gh-files/ga4gh-files.service'; import { ImageProviderService } from '../shared/image-provider.service'; -import { EntriesService } from '../shared/openapi'; +import { EntriesService, Tag } from '../shared/openapi'; import { ProviderService } from '../shared/provider.service'; import { SessionQuery } from '../shared/session/session.query'; import { SessionService } from '../shared/session/session.service'; -import { Tag } from '../shared/openapi/model/tag'; -import { WorkflowVersion } from '../shared/openapi/model/workflowVersion'; import { ToolQuery } from '../shared/tool/tool.query'; import { ToolService } from '../shared/tool/tool.service'; import { TrackLoginService } from '../shared/track-login.service'; @@ -58,7 +56,7 @@ import { EntryCategoriesService } from '../categories/state/entry-categories.ser templateUrl: './container.component.html', styleUrls: ['../shared/styles/workflow-container.component.scss'], }) -export class ContainerComponent extends Entry implements AfterViewInit, OnInit { +export class ContainerComponent extends Entry implements AfterViewInit, OnInit { dockerPullCmd: string; privateOnlyRegistry: boolean; containerEditData: any; @@ -69,7 +67,7 @@ export class ContainerComponent extends Entry implements AfterViewInit, OnInit { public missingWarning: boolean; public tool: DockstoreTool; public toolCopyBtn: string; - public sortedVersions: Array = []; + public sortedVersions: Array = []; public DockstoreToolType = DockstoreTool; public isManualMode$: Observable; public displayAppTool: boolean = false; diff --git a/src/app/container/info-tab/info-tab.component.html b/src/app/container/info-tab/info-tab.component.html index 5f05b83fcd..4fb66c22b6 100644 --- a/src/app/container/info-tab/info-tab.component.html +++ b/src/app/container/info-tab/info-tab.component.html @@ -323,7 +323,7 @@
    - + {{ descriptor }} diff --git a/src/app/container/version-modal/version-modal.component.html b/src/app/container/version-modal/version-modal.component.html index 76e096f519..adf3d909d5 100644 --- a/src/app/container/version-modal/version-modal.component.html +++ b/src/app/container/version-modal/version-modal.component.html @@ -33,7 +33,7 @@

    {{ TagEditorMode[mode] }} Version Tag

    required title="Docker Image tag name." placeholder="e.g. 1.0.0" - [disabled]="!(mode === 'Add')" + [disabled]="!(mode === TagEditorMode.Add)" />
    @@ -144,7 +144,7 @@

    {{ TagEditorMode[mode] }} Version Tag

    {{ TagEditorMode[mode] }} Version Tag
    {{ TagEditorMode[mode] }} Version Tag
    -
    +
    @@ -363,15 +363,15 @@

    {{ TagEditorMode[mode] }} Version Tag

    -
    +
    - {{ getDateTimeMessage(unsavedVersion.last_modified) }} + {{ getDateTimeMessage(unsavedVersion.last_built) }}
    -
    +
    @@ -379,7 +379,7 @@

    {{ TagEditorMode[mode] }} Version Tag

    -
    +
    diff --git a/src/app/container/version-modal/version-modal.component.ts b/src/app/container/version-modal/version-modal.component.ts index cd636845ef..bac17da593 100644 --- a/src/app/container/version-modal/version-modal.component.ts +++ b/src/app/container/version-modal/version-modal.component.ts @@ -327,6 +327,10 @@ export class VersionModalComponent extends Base implements OnInit, AfterViewChec } } + trackByIdx(index: number, value: string): number { + return index; + } + ngOnDestroy() { this.ngUnsubscribe.next(); this.ngUnsubscribe.complete(); diff --git a/src/app/container/view/view.component.ts b/src/app/container/view/view.component.ts index f1d1414c48..8cc6157c10 100644 --- a/src/app/container/view/view.component.ts +++ b/src/app/container/view/view.component.ts @@ -24,6 +24,7 @@ import { AlertService } from '../../shared/alert/state/alert.service'; import { ContainerService } from '../../shared/container.service'; import { DateService } from '../../shared/date.service'; import { TagEditorMode } from '../../shared/enum/tagEditorMode.enum'; +import { Tag } from '../../shared/openapi'; import { SessionQuery } from '../../shared/session/session.query'; import { ContainertagsService } from '../../shared/openapi/api/containertags.service'; import { HostedService } from '../../shared/openapi/api/hosted.service'; @@ -39,7 +40,7 @@ import { VersionModalService } from '../version-modal/version-modal.service'; styleUrls: ['./view.component.css'], }) // This is actually the actions dropdown for tags -export class ViewContainerComponent extends View implements OnInit { +export class ViewContainerComponent extends View implements OnInit { public TagEditorMode = TagEditorMode; public tool: DockstoreTool; public DockstoreToolType = DockstoreTool; diff --git a/src/app/containers/list/list.component.ts b/src/app/containers/list/list.component.ts index e8f8c3fbc3..2d2ea2beb6 100644 --- a/src/app/containers/list/list.component.ts +++ b/src/app/containers/list/list.component.ts @@ -31,7 +31,7 @@ import { PublishedToolsDataSource } from './published-tools.datasource'; templateUrl: './list.component.html', styleUrls: ['../../shared/styles/entry-table.scss', './list.component.scss'], }) -export class ListContainersComponent extends ToolLister implements OnInit { +export class ListContainersComponent extends ToolLister implements OnInit { @Input() previewMode: boolean; public displayedColumns = ['name', 'verified', 'author', 'format', 'projectLinks', 'stars']; diff --git a/src/app/entry/current-collections/current-collections.component.ts b/src/app/entry/current-collections/current-collections.component.ts index 5d6e42f257..ae2d4ad3d9 100644 --- a/src/app/entry/current-collections/current-collections.component.ts +++ b/src/app/entry/current-collections/current-collections.component.ts @@ -3,7 +3,7 @@ import { MatDialog } from '@angular/material/dialog'; import { ID } from '@datorama/akita'; import { Observable } from 'rxjs'; import { AddEntryComponent } from '../../organizations/collection/add-entry/add-entry.component'; -import { CollectionOrganization } from '../../shared/openapi'; +import { CollectionOrganization, Tag, WorkflowVersion } from '../../shared/openapi'; import { TrackLoginService } from '../../shared/track-login.service'; import { CurrentCollectionsQuery } from '../state/current-collections.query'; import { CurrentCollectionsService } from '../state/current-collections.service'; @@ -17,7 +17,7 @@ import { OrgLogoService } from '../../shared/org-logo.service'; export class CurrentCollectionsComponent implements OnInit, OnChanges { @Input() id: number; // This is bad, should not have an input that's only passed down the chain - @Input() versions: Version[]; + @Input() versions: WorkflowVersion[] | Tag[]; currentCollections$: Observable; isLoading$: Observable; isLoggedIn$: Observable; diff --git a/src/app/file-tree/file-tree.component.html b/src/app/file-tree/file-tree.component.html index 8ce734f4c1..a17d8a0e6b 100644 --- a/src/app/file-tree/file-tree.component.html +++ b/src/app/file-tree/file-tree.component.html @@ -1,7 +1,7 @@
    Search file... - + diff --git a/src/app/home-page/dashboard/dashboard.component.ts b/src/app/home-page/dashboard/dashboard.component.ts index dbc80b0aa4..b2115c6d59 100644 --- a/src/app/home-page/dashboard/dashboard.component.ts +++ b/src/app/home-page/dashboard/dashboard.component.ts @@ -7,6 +7,7 @@ import { RegisterToolComponent } from 'app/container/register-tool/register-tool import { AlertService } from 'app/shared/alert/state/alert.service'; import { TwitterService } from 'app/shared/twitter.service'; import { Dockstore } from 'app/shared/dockstore.model'; +import { EntryType } from '../../shared/openapi'; @Component({ selector: 'app-dashboard', @@ -54,4 +55,6 @@ export class DashboardComponent extends Base implements OnInit { (error) => console.error(error) ); } + + protected readonly EntryType = EntryType; } diff --git a/src/app/home-page/recent-events/recent-events.component.ts b/src/app/home-page/recent-events/recent-events.component.ts index 3634ac40d9..c07211a428 100644 --- a/src/app/home-page/recent-events/recent-events.component.ts +++ b/src/app/home-page/recent-events/recent-events.component.ts @@ -86,7 +86,7 @@ export class RecentEventsComponent extends Base implements OnInit { private usersService: UsersService, private alertService: AlertService, private eventsService: EventsService, - private orgLogoService: OrgLogoService, + public orgLogoService: OrgLogoService, public gravatarService: GravatarService ) { super(); diff --git a/src/app/loginComponents/accounts/account-sidebar/account-sidebar.component.html b/src/app/loginComponents/accounts/account-sidebar/account-sidebar.component.html index d4db76158f..3a586c0bd3 100644 --- a/src/app/loginComponents/accounts/account-sidebar/account-sidebar.component.html +++ b/src/app/loginComponents/accounts/account-sidebar/account-sidebar.component.html @@ -38,10 +38,6 @@
    GitHub Profile
    Name {{ gitHubProfile.name }} - - Email - {{ gitHubProfile.email }} - Company {{ gitHubProfile.company }} @@ -84,10 +80,6 @@
    Google Profile
    Name {{ googleProfile.name }} - - Email - {{ googleProfile.email }} -
    diff --git a/src/app/myworkflows/sidebar-accordion/github-apps-logs/github-apps-logs.component.ts b/src/app/myworkflows/sidebar-accordion/github-apps-logs/github-apps-logs.component.ts index f425263fe9..259525df45 100644 --- a/src/app/myworkflows/sidebar-accordion/github-apps-logs/github-apps-logs.component.ts +++ b/src/app/myworkflows/sidebar-accordion/github-apps-logs/github-apps-logs.component.ts @@ -1,6 +1,6 @@ import { animate, state, style, transition, trigger } from '@angular/animations'; import { DatePipe } from '@angular/common'; -import { Component, Inject, OnInit, ViewChild } from '@angular/core'; +import { AfterViewInit, Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core'; import { MAT_DIALOG_DATA } from '@angular/material/dialog'; import { MatPaginator } from '@angular/material/paginator'; import { MatSnackBar } from '@angular/material/snack-bar'; @@ -8,8 +8,14 @@ import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { AlertService } from 'app/shared/alert/state/alert.service'; import { LambdaEvent, LambdaEventsService } from 'app/shared/openapi'; -import { finalize } from 'rxjs/operators'; +import { debounceTime, distinctUntilChanged, finalize, takeUntil, tap } from 'rxjs/operators'; import { MapFriendlyValuesPipe } from '../../../search/map-friendly-values.pipe'; +import { BehaviorSubject, fromEvent, merge, Observable } from 'rxjs'; +import { formInputDebounceTime } from '../../../shared/constants'; +import { HttpResponse } from '@angular/common/http'; +import { PaginatorService } from '../../../shared/state/paginator.service'; +import { PaginatorQuery } from '../../../shared/state/paginator.query'; +import { Base } from '../../../shared/base'; /** * Based on https://material.angular.io/components/table/examples example with expandable rows @@ -31,26 +37,40 @@ import { MapFriendlyValuesPipe } from '../../../search/map-friendly-values.pipe' ]), ], }) -export class GithubAppsLogsComponent implements OnInit { +export class GithubAppsLogsComponent extends Base implements OnInit, AfterViewInit { datePipe: DatePipe; columnsToDisplay: string[]; displayedColumns: string[]; lambdaEvents: LambdaEvent[] | null; @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator; @ViewChild(MatSort, { static: true }) sort: MatSort; + @ViewChild('filter', { static: true }) filter: ElementRef; loading = true; public LambdaEvent = LambdaEvent; dataSource: MatTableDataSource = new MatTableDataSource(); expandedElement: LambdaEvent | null; - showContent: 'table' | 'error' | 'empty' | null; + showContent: 'table' | 'error' | 'empty' | 'noResult' | null; + type: 'workflow' | 'tool' | 'lambdaEvent' = 'lambdaEvent'; + private eventsSubject$ = new BehaviorSubject([]); + public eventsLength$ = new BehaviorSubject(0); + + public pageSize$: Observable; + public pageIndex$: Observable; + private sortCol: string; + private sortDirection: string; + private pageFilter: string; + isExpansionDetailRow = (i: number, row: Object) => row.hasOwnProperty('detailRow'); constructor( @Inject(MAT_DIALOG_DATA) public matDialogData: { userId?: number; organization?: string }, + private paginatorService: PaginatorService, private lambdaEventsService: LambdaEventsService, private matSnackBar: MatSnackBar, - private mapPipe: MapFriendlyValuesPipe + private mapPipe: MapFriendlyValuesPipe, + private paginatorQuery: PaginatorQuery ) { + super(); this.datePipe = new DatePipe('en'); const defaultPredicate = this.dataSource.filterPredicate; this.dataSource.filterPredicate = (data, filter) => { @@ -66,45 +86,124 @@ export class GithubAppsLogsComponent implements OnInit { : ['repository', 'entryName', 'deliveryId', 'reference', 'success', 'type']; this.displayedColumns = ['eventDate', 'githubUsername', ...this.columnsToDisplay]; this.loading = true; + } + + ngAfterViewInit() { + this.loadAppsLogs(); + } + + loadAppsLogs() { this.dataSource.sort = this.sort; - this.dataSource.paginator = this.paginator; - const lambdaEvents = this.matDialogData.userId - ? this.lambdaEventsService.getUserLambdaEvents(this.matDialogData.userId) - : this.lambdaEventsService.getLambdaEventsByOrganization(this.matDialogData.organization); + this.pageSize$ = this.paginatorQuery.eventPageSize$; + this.pageIndex$ = this.paginatorQuery.eventPageIndex$; + + // Initial load + this.loadEvents(this.paginator.pageIndex * this.paginator.pageSize, this.paginator.pageSize, null, null, null); + this.paginatorService.setPaginator(this.type, this.paginator.pageSize, this.paginator.pageIndex); + + // Handle paginator changes + merge(this.paginator.page) + .pipe(distinctUntilChanged()) + .subscribe(() => { + this.loadEvents( + this.paginator.pageIndex * this.paginator.pageSize, // set offset to the new pageIndex * the page size + this.paginator.pageSize, + this.pageFilter, + this.sortDirection, + this.sortCol + ); + this.paginatorService.setPaginator(this.type, this.paginator.pageSize, this.paginator.pageIndex); + }); + + // Handle sort changes + this.sort.sortChange + .pipe( + tap(() => { + this.paginator.pageIndex = 0; // go back to first page after changing sort + if (this.sort.active === 'eventDate') { + this.sortCol = 'dbCreateDate'; + } else { + this.sortCol = this.sort.active; + } + }), + takeUntil(this.ngUnsubscribe) + ) + .subscribe(() => { + this.loadEvents(this.paginator.pageIndex, this.paginator.pageSize, this.pageFilter, this.sort.direction, this.sortCol); + }); + + // Handle input text field changes + fromEvent(this.filter.nativeElement, 'keyup') + .pipe( + debounceTime(formInputDebounceTime), + distinctUntilChanged(), + tap(() => { + this.sortDirection = this.sort.direction; + this.pageFilter = this.filter.nativeElement.value; + this.paginator.pageIndex = 0; //go back to first page after adding filter + }), + takeUntil(this.ngUnsubscribe) + ) + .subscribe(() => { + this.loadEvents(this.paginator.pageIndex, this.paginator.pageSize, this.pageFilter, this.sort.direction, this.sortCol); + }); + } + + loadEvents(pageIndex: number, pageSize: number, filter: string, sortDirection: string, sortCol: string) { + const filtered = filter?.length > 0; + let lambdaEvents: Observable>; + if (this.matDialogData.userId) { + lambdaEvents = this.lambdaEventsService.getUserLambdaEvents( + this.matDialogData.userId, + pageIndex, + pageSize, + filter, + sortCol, + sortDirection, + 'response' + ); + } else { + lambdaEvents = this.lambdaEventsService.getLambdaEventsByOrganization( + this.matDialogData.organization, + pageIndex, + pageSize, + filter, + sortCol, + sortDirection, + 'response' + ); + } lambdaEvents .pipe( finalize(() => { this.loading = false; - this.updateContentToShow(this.lambdaEvents); + this.updateContentToShow(this.lambdaEvents, filtered); }) ) .subscribe( - (lambdaEvents) => (this.lambdaEvents = lambdaEvents), + (lambdaEvents) => { + this.eventsSubject$.next((this.lambdaEvents = lambdaEvents.body)); + this.eventsLength$.next(Number(lambdaEvents.headers.get('X-total-count'))); + }, (error) => { this.lambdaEvents = null; + this.dataSource.data = []; const detailedErrorMessage = AlertService.getDetailedErrorMessage(error); this.matSnackBar.open(detailedErrorMessage); } ); } - updateContentToShow(lambdaEvents: LambdaEvent[] | null) { + updateContentToShow(lambdaEvents: LambdaEvent[] | null, filtered: boolean) { this.dataSource.data = lambdaEvents ? lambdaEvents : []; if (!lambdaEvents) { this.showContent = 'error'; + } else if (lambdaEvents.length === 0 && !filtered) { + this.showContent = 'empty'; + } else if (lambdaEvents.length === 0 && filtered) { + this.showContent = 'noResult'; } else { - if (lambdaEvents.length === 0) { - this.showContent = 'empty'; - } else { - this.showContent = 'table'; - } - } - } - - applyFilter(event: string) { - this.dataSource.filter = event.trim().toLowerCase(); - if (this.dataSource.paginator) { - this.dataSource.paginator.firstPage(); + this.showContent = 'table'; } } } diff --git a/src/app/shared/state/paginator.query.ts b/src/app/shared/state/paginator.query.ts index 2a6b9e077f..b913677e14 100644 --- a/src/app/shared/state/paginator.query.ts +++ b/src/app/shared/state/paginator.query.ts @@ -24,8 +24,10 @@ import { PaginatorState, PaginatorStore } from './paginator.store'; export class PaginatorQuery extends Query { toolPageSize$: Observable = this.select((state) => (this.router.url === '/' ? 10 : state.tool.pageSize)); workflowPageSize$: Observable = this.select((state) => (this.router.url === '/' ? 10 : state.workflow.pageSize)); + eventPageSize$: Observable = this.select((state) => (this.router.url === '/' ? 10 : state.lambdaEvent.pageSize)); toolPageIndex$: Observable = this.select((state) => (this.router.url === '/' ? 0 : state.tool.pageIndex)); workflowPageIndex$: Observable = this.select((state) => (this.router.url === '/' ? 0 : state.workflow.pageIndex)); + eventPageIndex$: Observable = this.select((state) => (this.router.url === '/' ? 0 : state.lambdaEvent.pageIndex)); constructor(protected store: PaginatorStore, private router: Router) { super(store); } diff --git a/src/app/shared/state/paginator.service.ts b/src/app/shared/state/paginator.service.ts index b3f521fc8e..6d684aaa14 100644 --- a/src/app/shared/state/paginator.service.ts +++ b/src/app/shared/state/paginator.service.ts @@ -5,15 +5,17 @@ import { PaginatorInfo, PaginatorStore } from './paginator.store'; export class PaginatorService { constructor(private paginatorStore: PaginatorStore) {} - setPaginator(type: 'tool' | 'workflow', pageSize: number, pageNumber: number): void { + setPaginator(type: 'tool' | 'workflow' | 'lambdaEvent', pageSize: number, pageNumber: number): void { const paginatorInfo: PaginatorInfo = { pageSize: pageSize, pageIndex: pageNumber, }; if (type === 'tool') { this.setToolPaginatorSize(paginatorInfo); - } else { + } else if (type === 'workflow') { this.setWorkflowPaginatorSize(paginatorInfo); + } else { + this.setLambdaEventPaginatorSize(paginatorInfo); } } @@ -34,4 +36,12 @@ export class PaginatorService { }; }); } + setLambdaEventPaginatorSize(paginatorInfo: PaginatorInfo) { + this.paginatorStore.update((state) => { + return { + ...state, + lambdaEvent: paginatorInfo, + }; + }); + } } diff --git a/src/app/shared/state/paginator.store.ts b/src/app/shared/state/paginator.store.ts index 6b999598e7..ed503eb779 100644 --- a/src/app/shared/state/paginator.store.ts +++ b/src/app/shared/state/paginator.store.ts @@ -4,6 +4,7 @@ import { Store, StoreConfig } from '@datorama/akita'; export interface PaginatorState { tool: PaginatorInfo; workflow: PaginatorInfo; + lambdaEvent: PaginatorInfo; } export interface PaginatorInfo { @@ -14,6 +15,7 @@ export interface PaginatorInfo { const initialState: PaginatorState = { tool: { pageSize: 10, pageIndex: 0 }, workflow: { pageSize: 10, pageIndex: 0 }, + lambdaEvent: { pageSize: 10, pageIndex: 0 }, }; @Injectable({ providedIn: 'root' }) From 6d57f9e84279425db39c36fc8de06d89351e693c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 20:07:35 +0000 Subject: [PATCH 092/128] Bump @adobe/css-tools from 4.0.1 to 4.3.1 Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.0.1 to 4.3.1. - [Changelog](https://github.com/adobe/css-tools/blob/main/History.md) - [Commits](https://github.com/adobe/css-tools/commits) --- updated-dependencies: - dependency-name: "@adobe/css-tools" dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index fd1cbffef4..9b07b21979 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,9 +90,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", - "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", + "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -21633,9 +21633,9 @@ }, "dependencies": { "@adobe/css-tools": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", - "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", + "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", "dev": true }, "@ampproject/remapping": { From ed66639b7c5246ab6fc7aa975239f3f2fb81d00c Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Wed, 29 Nov 2023 09:43:48 -0800 Subject: [PATCH 093/128] fix stuck profile page https://ucsc-cgl.atlassian.net/browse/SEAB-6021 --- cypress/e2e/immutableDatabaseTests/dropdown.ts | 16 ++++++++++++++++ .../recent-events/recent-events.component.ts | 12 +++++++----- src/app/user-page/user-page.component.ts | 11 +++++------ 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/cypress/e2e/immutableDatabaseTests/dropdown.ts b/cypress/e2e/immutableDatabaseTests/dropdown.ts index 2d1c7dd88a..027007816c 100644 --- a/cypress/e2e/immutableDatabaseTests/dropdown.ts +++ b/cypress/e2e/immutableDatabaseTests/dropdown.ts @@ -58,6 +58,22 @@ describe('Dropdown test', () => { }); }); + describe('Go to profile page from another profile page', () => { + it('Should show user correct profile', () => { + const fromUser = 'potato'; + const currentUser = 'user_curator'; + cy.visit(`/users/${fromUser}`); + cy.contains('Activity'); + cy.get('app-user-page').contains(fromUser); + cy.get('app-user-page').contains(currentUser).should('not.exist'); + cy.get('[data-cy=dropdown-main]:visible').click(); + cy.get('[data-cy=dropdown-profile-button]').should('be.visible').click(); + cy.contains('Activity'); + cy.get('app-user-page').contains(currentUser); + cy.get('app-user-page').contains(fromUser).should('not.exist'); + }); + }); + describe('Go to accounts page', () => { beforeEach(() => { // Select dropdown accounts diff --git a/src/app/home-page/recent-events/recent-events.component.ts b/src/app/home-page/recent-events/recent-events.component.ts index c07211a428..87282280f0 100644 --- a/src/app/home-page/recent-events/recent-events.component.ts +++ b/src/app/home-page/recent-events/recent-events.component.ts @@ -39,7 +39,6 @@ export class RecentEventsComponent extends Base implements OnInit { public displayLimit: number; private userPageDisplayLimit = 10; private dashboardDisplayLimit = 4; - private username: string; private supportedEventTypes: Event.TypeEnum[]; private readonly supportedUserEventTypes = [ Event.TypeEnum.ADDVERSIONTOENTRY, @@ -90,13 +89,12 @@ export class RecentEventsComponent extends Base implements OnInit { public gravatarService: GravatarService ) { super(); - this.username = this.activatedRoute.snapshot.paramMap.get('username'); } - ngOnInit() { - if (!this.eventType && this.username) { + getUserInfo(username: string): void { + if (!this.eventType && username) { // On user page, get user, then get user's events - this.usersService.listUser(this.username).subscribe( + this.usersService.listUser(username).subscribe( (currentUser: User) => { this.recentEventsService.get(currentUser); }, @@ -169,4 +167,8 @@ export class RecentEventsComponent extends Base implements OnInit { remove(id: ID) { this.recentEventsService.remove(id); } + + ngOnInit(): void { + this.activatedRoute.params.pipe(takeUntil(this.ngUnsubscribe)).subscribe((params) => this.getUserInfo(params['username'])); + } } diff --git a/src/app/user-page/user-page.component.ts b/src/app/user-page/user-page.component.ts index b37c06233d..c77164e26c 100644 --- a/src/app/user-page/user-page.component.ts +++ b/src/app/user-page/user-page.component.ts @@ -21,7 +21,6 @@ import { AccountInfo } from '../loginComponents/accounts/external/accounts.compo }) export class UserPageComponent extends Base implements OnInit { public user: User; - public username: string; public TokenSource = TokenSource; public googleProfile: Profile; public gitHubProfile: Profile; @@ -41,10 +40,6 @@ export class UserPageComponent extends Base implements OnInit { private userQuery: UserQuery ) { super(); - this.username = this.activatedRoute.snapshot.paramMap.get('username'); - this.userQuery.isAdminOrCurator$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((isAdminOrCurator) => { - this.loggedInUserIsAdminOrCurator = isAdminOrCurator; - }); } getUserInfo(username: string): void { @@ -95,7 +90,11 @@ export class UserPageComponent extends Base implements OnInit { } }); } + ngOnInit(): void { - this.getUserInfo(this.username); + this.activatedRoute.params.pipe(takeUntil(this.ngUnsubscribe)).subscribe((params) => this.getUserInfo(params['username'])); + this.userQuery.isAdminOrCurator$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((isAdminOrCurator) => { + this.loggedInUserIsAdminOrCurator = isAdminOrCurator; + }); } } From 521acbec3570e52c7f767e7d3a2f8c246244943c Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Wed, 29 Nov 2023 09:51:28 -0800 Subject: [PATCH 094/128] generalize recentEvents pipe to support all entry types https://ucsc-cgl.atlassian.net/browse/DOCK-2487 dockstore/dockstore#5735 --- .../shared/entry/recent-events.pipe.spec.ts | 44 +++++++++++++++++++ src/app/shared/entry/recent-events.pipe.ts | 33 ++++++-------- 2 files changed, 58 insertions(+), 19 deletions(-) create mode 100644 src/app/shared/entry/recent-events.pipe.spec.ts diff --git a/src/app/shared/entry/recent-events.pipe.spec.ts b/src/app/shared/entry/recent-events.pipe.spec.ts new file mode 100644 index 0000000000..cb454ffe8f --- /dev/null +++ b/src/app/shared/entry/recent-events.pipe.spec.ts @@ -0,0 +1,44 @@ +import { RecentEventsPipe } from './recent-events.pipe'; +import { Workflow } from 'app/shared/openapi'; + +describe('Pipe: recentEvents', () => { + const entryFields = ['tool', 'workflow', 'apptool', 'service', 'notebook']; + + function instantiate(): RecentEventsPipe { + return new RecentEventsPipe({ transform: (entry) => entry.gitUrl }); + } + + it('Should instantiate', () => { + expect(instantiate()).toBeTruthy(); + }); + + it('Should calculate the correct "displayName"', () => { + const pipe = instantiate(); + entryFields.forEach((field) => { + const value = `${field}-value`; + const event = { [field]: { gitUrl: value } }; + expect(pipe.transform(event, 'displayName')).toBe(value); + }); + }); + + it('Should calculate the correct "entryType"', () => { + const pipe = instantiate(); + entryFields.forEach((field) => { + const term = `${field}-term`; + const event = { [field]: { entryTypeMetadata: { term: term } } }; + expect(pipe.transform(event, 'entryType')).toBe(term); + }); + }); + + it('Should calculate the correct "entryLink"', () => { + const pipe = instantiate(); + entryFields.forEach((field) => { + const sitePath = `${field}-site-path`; + const entryPath = `${field}-entry-path`; + const event = { + [field]: { entryTypeMetadata: { sitePath: sitePath }, [field === 'tool' ? 'tool_path' : 'full_workflow_path']: entryPath }, + }; + expect(pipe.transform(event, 'entryLink')).toBe(`/${sitePath}/${entryPath}`); + }); + }); +}); diff --git a/src/app/shared/entry/recent-events.pipe.ts b/src/app/shared/entry/recent-events.pipe.ts index 408f5c71e4..3af5c702af 100644 --- a/src/app/shared/entry/recent-events.pipe.ts +++ b/src/app/shared/entry/recent-events.pipe.ts @@ -1,12 +1,11 @@ import { Inject, Pipe, PipeTransform } from '@angular/core'; -import { Event } from 'app/shared/openapi'; +import { Event, DockstoreTool, Workflow } from 'app/shared/openapi'; import { EntryToDisplayNamePipe } from '../entry-to-display-name.pipe'; import { EntryType } from '../../shared/enum/entry-type'; @Pipe({ name: 'recentEvents', }) -// TODO: Accommodate for notebooks and services when we can retrieve those events export class RecentEventsPipe implements PipeTransform { private EntryType = EntryType; constructor(@Inject(EntryToDisplayNamePipe) private entryToDisplayNamePipe: EntryToDisplayNamePipe) {} @@ -25,27 +24,15 @@ export class RecentEventsPipe implements PipeTransform { switch (type) { case 'displayName': { - if (event.workflow) { - return this.entryToDisplayNamePipe.transform(event.workflow); - } else if (event.tool) { - return this.entryToDisplayNamePipe.transform(event.tool); - } else if (event.apptool) { - return this.entryToDisplayNamePipe.transform(event.apptool); - } - break; + const entry = this.getEntry(event); + return entry && this.entryToDisplayNamePipe.transform(entry); } case 'entryLink': { - if (event.workflow) { - return '/workflows/' + event.workflow.full_workflow_path; - } else if (event.tool) { - return '/containers/' + event.tool.tool_path; - } else if (event.apptool) { - return '/containers/' + event.apptool.full_workflow_path; - } - break; + const entry = this.getEntry(event); + return entry && '/' + entry.entryTypeMetadata.sitePath + '/' + this.getPath(entry); } case 'entryType': { - return event.tool || event.apptool ? this.EntryType.Tool : this.EntryType.BioWorkflow; + return this.getEntry(event)?.entryTypeMetadata.term ?? 'entry'; } case 'orgLink': { return '/organizations/' + event.organization.name; @@ -55,4 +42,12 @@ export class RecentEventsPipe implements PipeTransform { } } } + + private getEntry(event: Event): DockstoreTool | Workflow | null { + return event.tool ?? event.workflow ?? event.apptool ?? event.service ?? event.notebook; + } + + private getPath(entry: DockstoreTool | Workflow): string { + return (entry as Workflow).full_workflow_path ?? (entry as DockstoreTool).tool_path; + } } From 04617d0eba9f5a0f675212f45b051013540cf2a7 Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Wed, 29 Nov 2023 09:56:07 -0800 Subject: [PATCH 095/128] tweak notebook "Files" tabs and always display File tabs https://ucsc-cgl.atlassian.net/browse/SEAB-6024 --- src/app/descriptor-languages/Jupyter.ts | 14 +++++++++++--- .../source-file-tabs/source-file-tabs.service.ts | 7 ++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/app/descriptor-languages/Jupyter.ts b/src/app/descriptor-languages/Jupyter.ts index d6e9ac4966..21dff47a4f 100644 --- a/src/app/descriptor-languages/Jupyter.ts +++ b/src/app/descriptor-languages/Jupyter.ts @@ -26,15 +26,23 @@ export const extendedJupyter: ExtendedDescriptorLanguageBean = { fileTabs: [ { tabName: 'Notebook Files', - fileTypes: [SourceFile.TypeEnum.DOCKSTOREJUPYTER, SourceFile.TypeEnum.DOCKSTORENOTEBOOKOTHER], + fileTypes: [SourceFile.TypeEnum.DOCKSTOREJUPYTER], + }, + { + tabName: 'Configuration Files', + fileTypes: [ + SourceFile.TypeEnum.DOCKSTOREYML, + SourceFile.TypeEnum.DOCKSTORENOTEBOOKREES, + SourceFile.TypeEnum.DOCKSTORENOTEBOOKDEVCONTAINER, + ], }, { tabName: 'Test Files', fileTypes: [SourceFile.TypeEnum.DOCKSTORENOTEBOOKTESTFILE], }, { - tabName: 'Configuration Files', - fileTypes: [SourceFile.TypeEnum.DOCKSTORENOTEBOOKREES], + tabName: 'Other Files', + fileTypes: [SourceFile.TypeEnum.DOCKSTORENOTEBOOKOTHER], }, ], }; diff --git a/src/app/source-file-tabs/source-file-tabs.service.ts b/src/app/source-file-tabs/source-file-tabs.service.ts index daaab6de9f..4719a1e573 100644 --- a/src/app/source-file-tabs/source-file-tabs.service.ts +++ b/src/app/source-file-tabs/source-file-tabs.service.ts @@ -43,9 +43,10 @@ export class SourceFileTabsService { const fileTabsSchematic = this.descriptorLanguageService.toolDescriptorTypeEnumToExtendedDescriptorLanguageBean(descriptorLanguage).fileTabs; - // Always have the Descriptor Files Tab and Test Parameter Files tab - fileTabs.set(fileTabsSchematic[0].tabName, []); - fileTabs.set(fileTabsSchematic[1].tabName, []); + // Display all of the tabs, even if they are empty. + fileTabsSchematic.forEach((fileTab) => { + fileTabs.set(fileTab.tabName, []); + }); if (!sourcefiles || sourcefiles.length === 0) { return fileTabs; } From f658fa27f03edbb78852e5a24941ba8c488f37ea Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Fri, 1 Dec 2023 09:05:55 -0800 Subject: [PATCH 096/128] fix alias resolution for AppTools, Notebooks, and Services https://ucsc-cgl.atlassian.net/browse/SEAB-6025 --- cypress/e2e/group2/aliases.ts | 1 + .../e2e/immutableDatabaseTests/toolDetails.ts | 4 +- .../immutableDatabaseTests/workflowDetails.ts | 4 +- package.json | 4 +- src/app/aliases/aliases.component.html | 19 +-- src/app/aliases/aliases.component.ts | 142 +++++++++++------- src/app/aliases/aliases.module.ts | 3 +- src/app/aliases/state/aliases.query.ts | 3 +- src/app/aliases/state/aliases.service.ts | 51 ++----- src/app/aliases/state/aliases.store.ts | 8 +- 10 files changed, 114 insertions(+), 125 deletions(-) diff --git a/cypress/e2e/group2/aliases.ts b/cypress/e2e/group2/aliases.ts index a1bb353888..340b3f28b1 100644 --- a/cypress/e2e/group2/aliases.ts +++ b/cypress/e2e/group2/aliases.ts @@ -26,6 +26,7 @@ describe('Dockstore aliases', () => { body: { fullWorkflowPath: 'github.com/A/l', tagName: 'master', + entryTypeMetadata: { term: 'workflow', sitePath: 'workflows' }, }, statusCode: 200, }); diff --git a/cypress/e2e/immutableDatabaseTests/toolDetails.ts b/cypress/e2e/immutableDatabaseTests/toolDetails.ts index 4ee48d262c..e53908723d 100644 --- a/cypress/e2e/immutableDatabaseTests/toolDetails.ts +++ b/cypress/e2e/immutableDatabaseTests/toolDetails.ts @@ -170,8 +170,8 @@ describe('Dockstore Tool Details of quay.io/A2/b3', () => { describe('Find tool by alias', () => { it('tool alias', () => { - cy.intercept('GET', '*/containers/fakeAlias/aliases', { - body: { tool_path: 'quay.io/A2/b3' }, + cy.intercept('GET', '*/entries/fakeAlias/aliases', { + body: { tool_path: 'quay.io/A2/b3', entryTypeMetadata: { termPlural: 'tools', sitePath: 'containers' } }, statusCode: 200, }); cy.visit('/aliases/tools/fakeAlias'); diff --git a/cypress/e2e/immutableDatabaseTests/workflowDetails.ts b/cypress/e2e/immutableDatabaseTests/workflowDetails.ts index d2c16f54b7..33d275069a 100644 --- a/cypress/e2e/immutableDatabaseTests/workflowDetails.ts +++ b/cypress/e2e/immutableDatabaseTests/workflowDetails.ts @@ -129,8 +129,8 @@ describe('Dockstore Workflow Details', () => { describe('Find workflow by alias', () => { it('workflow alias', () => { - cy.intercept('GET', '*/workflows/fakeAlias/aliases', { - body: { full_workflow_path: 'github.com/A/l' }, + cy.intercept('GET', '*/entries/fakeAlias/aliases', { + body: { full_workflow_path: 'github.com/A/l', entryTypeMetadata: { termPlural: 'workflows', sitePath: 'workflows' } }, statusCode: 200, }); cy.visit('/aliases/workflows/fakeAlias'); diff --git a/package.json b/package.json index 9e61db0501..0fc7087987 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "config": { "webservice_version": "1.15.0", "use_circle": true, - "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/10673/workflows/e44fc131-9382-4f1f-b8b3-666468eb7384/jobs/39289/artifacts", - "circle_build_id": "39289" + "circle_ci_source": "https://app.circleci.com/pipelines/github/dockstore/dockstore/10707/workflows/cbcf24c8-061a-4003-9d46-9de3b953b25f/jobs/39503/artifacts", + "circle_build_id": "39503" }, "scripts": { "ng": "npx ng", diff --git a/src/app/aliases/aliases.component.html b/src/app/aliases/aliases.component.html index bad8855e52..517ea5b62d 100644 --- a/src/app/aliases/aliases.component.html +++ b/src/app/aliases/aliases.component.html @@ -8,23 +8,8 @@
    -
    - - Redirecting to the organization {{ org.displayName }} -
    -
    - - Redirecting to the collection {{ coll.displayName }} -
    -
    - - Redirecting to the workflow {{ wf.full_workflow_path }} -
    -
    - - Redirecting to the tool {{ tool.tool_path }} -
    - +
    Redirecting...
    + warning  No {{ type }} with the alias {{ alias }} found diff --git a/src/app/aliases/aliases.component.ts b/src/app/aliases/aliases.component.ts index 01bc78b51f..52fda38c76 100644 --- a/src/app/aliases/aliases.component.ts +++ b/src/app/aliases/aliases.component.ts @@ -2,10 +2,11 @@ import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; import { Base } from '../shared/base'; -import { Collection, DockstoreTool, Organization, Workflow, WorkflowVersionPathInfo } from '../shared/openapi'; +import { Collection, DockstoreTool, Entry, Organization, Workflow, WorkflowVersionPathInfo } from '../shared/openapi'; import { ActivatedRoute, Router } from '../test'; import { AliasesQuery } from './state/aliases.query'; import { AliasesService } from './state/aliases.service'; +import { EntryTypeMetadataService } from '../entry/type-metadata/entry-type-metadata.service'; @Component({ selector: 'app-aliases', @@ -14,20 +15,14 @@ import { AliasesService } from './state/aliases.service'; }) export class AliasesComponent extends Base implements OnInit { loading$: Observable; - organization$: Observable; - collection$: Observable; - workflow$: Observable; - workflowVersionPathInfo$: Observable; - tool$: Observable; - aliasNotFound$: Observable; public type: string | null; public alias: string | null; public validType: boolean; - // Types contains resource types that support aliases - public types = ['organizations', 'collections', 'workflows', 'tools', 'containers', 'workflow-versions']; + public found: boolean; constructor( private aliasesQuery: AliasesQuery, private aliasesService: AliasesService, + private entryTypeMetadataService: EntryTypeMetadataService, private route: ActivatedRoute, private router: Router ) { @@ -35,55 +30,94 @@ export class AliasesComponent extends Base implements OnInit { } ngOnInit() { - this.type = this.route.snapshot.paramMap.get('type'); - this.alias = this.route.snapshot.paramMap.get('alias'); - this.validType = this.type ? this.types.includes(this.type) : false; this.loading$ = this.aliasesQuery.loading$; - if (this.type === 'organizations' && this.alias) { + this.type = this.normalizeType(this.route.snapshot.paramMap.get('type')); + this.alias = this.route.snapshot.paramMap.get('alias'); + if (this.type === 'organizations') { + this.validType = true; this.aliasesService.updateOrganizationFromAlias(this.alias); - this.organization$ = this.aliasesQuery.organization$; - this.organization$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((organization: Organization) => { - if (organization) { - this.router.navigate(['/organizations', organization.name]); - } - this.aliasNotFound$ = this.organization$.pipe(map((tool) => !tool)); - }); - } else if (this.type === 'collections' && this.alias) { + this.navigateTo(this.aliasesQuery.organization$, (organization: Organization) => ['/organizations', organization.name]); + } else if (this.type === 'collections') { + this.validType = true; this.aliasesService.updateCollectionFromAlias(this.alias); - this.collection$ = this.aliasesQuery.collection$; - this.collection$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((collection: Collection) => { - if (collection) { - this.router.navigate(['/organizations', collection.organizationName, 'collections', collection.name]); - } - this.aliasNotFound$ = this.collection$.pipe(map((tool) => !tool)); - }); - } else if (this.type === 'workflow-versions' && this.alias) { + this.navigateTo(this.aliasesQuery.collection$, (collection: Collection) => [ + '/organizations', + collection.organizationName, + 'collections', + collection.name, + ]); + } else if (this.versionTypes().includes(this.type)) { + this.validType = true; this.aliasesService.updateWorkflowVersionPathInfoFromAlias(this.alias); - this.workflowVersionPathInfo$ = this.aliasesQuery.workflowVersionPathInfo$; - this.workflowVersionPathInfo$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((workflowVersionPathInfo: WorkflowVersionPathInfo) => { - if (workflowVersionPathInfo) { - this.router.navigate(['/workflows', workflowVersionPathInfo.fullWorkflowPath + ':' + workflowVersionPathInfo.tagName]); - } - this.aliasNotFound$ = this.workflowVersionPathInfo$.pipe(map((tool) => !tool)); - }); - } else if (this.type === 'workflows' && this.alias) { - this.aliasesService.updateWorkflowFromAlias(this.alias); - this.workflow$ = this.aliasesQuery.workflow$; - this.workflow$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((workflow: Workflow) => { - if (workflow) { - this.router.navigate(['/workflows', workflow.full_workflow_path]); - } - this.aliasNotFound$ = this.workflow$.pipe(map((tool) => !tool)); - }); - } else if ((this.type === 'tools' || this.type === 'containers') && this.alias) { - this.aliasesService.updateToolFromAlias(this.alias); - this.tool$ = this.aliasesQuery.tool$; - this.tool$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((tool: DockstoreTool) => { - if (tool) { - this.router.navigate(['/tools', tool.tool_path]); - } - }); - this.aliasNotFound$ = this.tool$.pipe(map((tool) => !tool)); + this.navigateTo( + this.aliasesQuery.workflowVersionPathInfo$, + (info: WorkflowVersionPathInfo) => [info.entryTypeMetadata.sitePath, info.fullWorkflowPath + ':' + info.tagName], + (info: WorkflowVersionPathInfo) => info.entryTypeMetadata.term === this.type.split('-')[0] + ); + } else if (this.entryTypes().includes(this.type)) { + this.validType = true; + this.aliasesService.updateEntryFromAlias(this.alias); + this.navigateTo( + this.aliasesQuery.entry$, + (entry: Entry) => [entry.entryTypeMetadata.sitePath, this.getPath(entry)], + (entry: Entry) => entry.entryTypeMetadata.termPlural === this.type + ); } } + + private normalizeType(type: string): string { + if (type === 'containers') { + return 'tools'; + } + if (type === 'container-versions') { + return 'tool-versions'; + } + return type; + } + + /** + * Calculate the list of possible version alias types. + * By convention, there is a version alias type for each Entry type, denoted by the term for the Entry type concatenated with '-versions'. + * For example, the alias type for a Workflow version is 'workflow-versions'. + */ + private versionTypes(): string[] { + return this.entryTypeMetadataService.getAll().map((metadata) => `${metadata.term}-versions`); + } + + /** + * Calculate the list of possible entry alias types. + * By convention, there is an entry alias type for each Entry type, denoted by the plural term for the Entry type. + * For example, the alias type for a Workflow is 'workflows'. + */ + private entryTypes(): string[] { + return this.entryTypeMetadataService.getAll().map((metadata) => metadata.termPlural); + } + + private getPath(entry: Entry): string { + return (entry as Workflow).full_workflow_path ?? (entry as DockstoreTool).tool_path; + } + + /** + * Add a subscription to the specified Observable which will navigate to the entity that it produces. + * An "entity" is an Organization, Collection, Entry, etc. + * The specified functions calculate the absolute path and visibility of the entity. + * @param entity$ - Observable that will produce the entity + * @param entityToPath - Function that maps the entity to its absolute path + * @param entityIsVisible - Function that determines whether the entity is visible + */ + private navigateTo( + entity$: Observable, + entityToPath: (entity: EntityType) => string[], + entityIsVisible: (entity: EntityType) => boolean = () => true + ): void { + entity$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((entity: EntityType | null) => { + if (entity && entityIsVisible(entity)) { + const path = entityToPath(entity); + this.router.navigate(path); + this.found = true; + } else { + this.found = false; + } + }); + } } diff --git a/src/app/aliases/aliases.module.ts b/src/app/aliases/aliases.module.ts index b3c327845a..24b96941d2 100644 --- a/src/app/aliases/aliases.module.ts +++ b/src/app/aliases/aliases.module.ts @@ -4,11 +4,12 @@ import { FlexLayoutModule } from '@angular/flex-layout'; import { RefreshAlertModule } from '../shared/alert/alert.module'; import { HeaderModule } from '../shared/modules/header.module'; import { CustomMaterialModule } from '../shared/modules/material.module'; +import { PipeModule } from '../shared/pipe/pipe.module'; import { AliasesComponent } from './aliases.component'; import { AliasesRouting } from './aliases.routing'; @NgModule({ - imports: [CommonModule, HeaderModule, AliasesRouting, CustomMaterialModule, RefreshAlertModule, FlexLayoutModule], + imports: [CommonModule, HeaderModule, AliasesRouting, CustomMaterialModule, RefreshAlertModule, FlexLayoutModule, PipeModule], declarations: [AliasesComponent], exports: [AliasesComponent], }) diff --git a/src/app/aliases/state/aliases.query.ts b/src/app/aliases/state/aliases.query.ts index fb22112fe7..2700a5f312 100644 --- a/src/app/aliases/state/aliases.query.ts +++ b/src/app/aliases/state/aliases.query.ts @@ -6,8 +6,7 @@ import { AliasesState, AliasesStore } from './aliases.store'; export class AliasesQuery extends Query { organization$ = this.select((state) => state.organization); collection$ = this.select((state) => state.collection); - tool$ = this.select((state) => state.tool); - workflow$ = this.select((state) => state.workflow); + entry$ = this.select((state) => state.entry); workflowVersionPathInfo$ = this.select((state) => state.workflowVersionPathInfo); loading$ = this.selectLoading(); diff --git a/src/app/aliases/state/aliases.service.ts b/src/app/aliases/state/aliases.service.ts index 112e7e4f4b..feb555f540 100644 --- a/src/app/aliases/state/aliases.service.ts +++ b/src/app/aliases/state/aliases.service.ts @@ -4,11 +4,10 @@ import { finalize } from 'rxjs/operators'; import { AliasesService as WorkflowVersionsAliasService, Collection, - ContainersService, - DockstoreTool, + EntriesService, + Entry, Organization, OrganizationsService, - Workflow, WorkflowsService, WorkflowVersionPathInfo, } from '../../shared/openapi'; @@ -19,7 +18,7 @@ export class AliasesService { constructor( private aliasesStore: AliasesStore, private organizationsService: OrganizationsService, - private toolsService: ContainersService, + private entriesService: EntriesService, private workflowsService: WorkflowsService, private workflowVersionsService: WorkflowVersionsAliasService ) {} @@ -30,8 +29,7 @@ export class AliasesService { ...state, organization: null, collection: null, - tool: null, - workflow: null, + entry: null, workflowVersion: null, }; }); @@ -92,16 +90,16 @@ export class AliasesService { } @transaction() - updateToolFromAlias(alias: string): void { + updateEntryFromAlias(alias: string): void { this.clearState(); this.aliasesStore.setLoading(true); - this.toolsService - .getToolByAlias(alias) + this.entriesService + .getEntryByAlias(alias) .pipe(finalize(() => this.aliasesStore.setLoading(false))) .subscribe( - (tool: DockstoreTool) => { + (entry: Entry) => { this.aliasesStore.setError(false); - this.updateTool(tool); + this.updateEntry(entry); }, () => { this.aliasesStore.setError(true); @@ -109,38 +107,11 @@ export class AliasesService { ); } - updateTool(tool: DockstoreTool) { + updateEntry(entry: Entry) { this.aliasesStore.update((state) => { return { ...state, - tool: tool, - }; - }); - } - - @transaction() - updateWorkflowFromAlias(alias: string): void { - this.clearState(); - this.aliasesStore.setLoading(true); - this.workflowsService - .getWorkflowByAlias(alias) - .pipe(finalize(() => this.aliasesStore.setLoading(false))) - .subscribe( - (workflow: Workflow) => { - this.aliasesStore.setError(false); - this.updateWorkflow(workflow); - }, - () => { - this.aliasesStore.setError(true); - } - ); - } - - updateWorkflow(workflow: Workflow) { - this.aliasesStore.update((state) => { - return { - ...state, - workflow: workflow, + entry: entry, }; }); } diff --git a/src/app/aliases/state/aliases.store.ts b/src/app/aliases/state/aliases.store.ts index bcd7a21d87..b6612df80f 100644 --- a/src/app/aliases/state/aliases.store.ts +++ b/src/app/aliases/state/aliases.store.ts @@ -1,12 +1,11 @@ import { Injectable } from '@angular/core'; import { Store, StoreConfig } from '@datorama/akita'; -import { Collection, DockstoreTool, Organization, Workflow, WorkflowVersionPathInfo } from '../../shared/openapi'; +import { Collection, Entry, Organization, WorkflowVersionPathInfo } from '../../shared/openapi'; export interface AliasesState { organization: Organization | null; collection: Collection | null; - tool: DockstoreTool | null; - workflow: Workflow | null; + entry: Entry | null; workflowVersionPathInfo: WorkflowVersionPathInfo | null; } @@ -14,8 +13,7 @@ export function createInitialState(): AliasesState { return { organization: null, collection: null, - tool: null, - workflow: null, + entry: null, workflowVersionPathInfo: null, }; } From 11d8ce460c5a63607e766c54c19f931e87f3bcf3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Dec 2023 16:37:01 -0500 Subject: [PATCH 097/128] Bump @adobe/css-tools from 4.3.1 to 4.3.2 (#1884) Bumps [@adobe/css-tools](https://github.com/adobe/css-tools) from 4.3.1 to 4.3.2. - [Changelog](https://github.com/adobe/css-tools/blob/main/History.md) - [Commits](https://github.com/adobe/css-tools/commits) --- updated-dependencies: - dependency-name: "@adobe/css-tools" dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b07b21979..be8efae3d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,9 +90,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -21633,9 +21633,9 @@ }, "dependencies": { "@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", "dev": true }, "@ampproject/remapping": { From da2357d44a986694ade1e06225e73cecf973e4cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 10:27:44 -0500 Subject: [PATCH 098/128] Bump actions/setup-node from 3 to 4 (#1858) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/accessibility_test.yml | 4 ++-- .github/workflows/npm_audit_test.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/accessibility_test.yml b/.github/workflows/accessibility_test.yml index fb73338655..e917ae7ccf 100644 --- a/.github/workflows/accessibility_test.yml +++ b/.github/workflows/accessibility_test.yml @@ -50,7 +50,7 @@ jobs: distribution: 'adopt' - name: Install npm - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' @@ -115,7 +115,7 @@ jobs: - uses: actions/checkout@v4 - name: Install npm - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' diff --git a/.github/workflows/npm_audit_test.yml b/.github/workflows/npm_audit_test.yml index 284311454a..514331291c 100644 --- a/.github/workflows/npm_audit_test.yml +++ b/.github/workflows/npm_audit_test.yml @@ -15,7 +15,7 @@ jobs: fetch-depth: 0 - name: Install npm - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: '.nvmrc' From 9322ad39f1c37046b019a40c9933618b63b6e9ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 13:10:05 -0500 Subject: [PATCH 099/128] Bump @babel/traverse from 7.20.0 to 7.23.5 (#1885) Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.20.0 to 7.23.5. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.5/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 267 ++++++++++++++++++++++++++-------------------- 1 file changed, 149 insertions(+), 118 deletions(-) diff --git a/package-lock.json b/package-lock.json index be8efae3d3..59df2f4e81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -903,12 +903,13 @@ "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" @@ -1106,9 +1107,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1127,25 +1128,39 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name/node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1274,30 +1289,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -1342,13 +1357,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -1356,9 +1371,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.0.tgz", - "integrity": "sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -2640,19 +2655,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.0.tgz", - "integrity": "sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", + "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.5", + "@babel/types": "^7.23.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -2661,13 +2676,14 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.0.tgz", - "integrity": "sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", + "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", "dev": true, "dependencies": { - "@babel/types": "^7.20.0", + "@babel/types": "^7.23.5", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -2675,9 +2691,9 @@ } }, "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -2689,13 +2705,13 @@ } }, "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -22159,12 +22175,13 @@ "dev": true }, "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" } }, "@babel/compat-data": { @@ -22315,9 +22332,9 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true }, "@babel/helper-explode-assignable-expression": { @@ -22330,22 +22347,35 @@ } }, "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "dependencies": { + "@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + } + } } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-member-expression-to-functions": { @@ -22441,24 +22471,24 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/helper-validator-option": { @@ -22491,20 +22521,20 @@ } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.0.tgz", - "integrity": "sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { @@ -23368,38 +23398,39 @@ } }, "@babel/traverse": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.0.tgz", - "integrity": "sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", + "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.5", + "@babel/types": "^7.23.5", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/generator": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.0.tgz", - "integrity": "sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", + "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", "dev": true, "requires": { - "@babel/types": "^7.20.0", + "@babel/types": "^7.23.5", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" } }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -23410,13 +23441,13 @@ } }, "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, From 3932e2a110857671eb66705a47d33f42ddbb64f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Dec 2023 17:00:03 -0500 Subject: [PATCH 100/128] Bump actions/setup-java from 3 to 4 (#1881) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3 to 4. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/accessibility_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/accessibility_test.yml b/.github/workflows/accessibility_test.yml index e917ae7ccf..012295aff1 100644 --- a/.github/workflows/accessibility_test.yml +++ b/.github/workflows/accessibility_test.yml @@ -44,7 +44,7 @@ jobs: uses: browser-actions/setup-chrome@v1 - name: Set up JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: '17.0.4+8' distribution: 'adopt' From ed551676d631fd501f496fda5a7a62e8a1583159 Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Wed, 6 Dec 2023 11:48:03 -0800 Subject: [PATCH 101/128] bump circleci/browser-tools version --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ff96065fbd..21bf1d81f5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,7 +3,7 @@ orbs: aws-s3: circleci/aws-s3@3.0.0 aws-cli: circleci/aws-cli@3.1.1 slack: circleci/slack@4.4.4 - browser-tools: circleci/browser-tools@1.4.5 + browser-tools: circleci/browser-tools@1.4.6 executors: integration_test_exec: # declares a reusable executor docker: From 56236cb2176f8b4bab23cdc863878229b3c08a93 Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Wed, 6 Dec 2023 12:10:19 -0800 Subject: [PATCH 102/128] move search result tooltips to the left of results https://ucsc-cgl.atlassian.net/browse/SEAB-5971 --- .../search-tool-table.component.html | 23 ++++++++++++++---- .../search-workflow-table.component.html | 24 +++++++++++++------ 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src/app/search/search-tool-table/search-tool-table.component.html b/src/app/search/search-tool-table/search-tool-table.component.html index b8216fcbca..1918c03968 100644 --- a/src/app/search/search-tool-table/search-tool-table.component.html +++ b/src/app/search/search-tool-table/search-tool-table.component.html @@ -27,16 +27,29 @@
    - {{ + {{ tool?.source.namespace + '/' + tool?.source.name + (tool?.source.toolname ? '/' + tool?.source.toolname : '') }} -
    +
    {{ tool.source.topicAutomatic }}
    diff --git a/src/app/search/search-workflow-table/search-workflow-table.component.html b/src/app/search/search-workflow-table/search-workflow-table.component.html index 7692484951..a494fde3fc 100644 --- a/src/app/search/search-workflow-table/search-workflow-table.component.html +++ b/src/app/search/search-workflow-table/search-workflow-table.component.html @@ -7,13 +7,23 @@ Name and Description
    - {{ - workflow?.source.organization + - '/' + - workflow?.source.repository + - (workflow?.source.workflowName ? '/' + workflow?.source.workflowName : '') - }} - From d58322bf080649b630e63820f43c46a6bb00d9df Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Thu, 7 Dec 2023 09:17:50 -0800 Subject: [PATCH 103/128] fix TRS link for Galaxy workflows https://ucsc-cgl.atlassian.net/browse/DOCK-2496 dockstore/dockstore#5751 --- src/app/descriptor-languages/Jupyter.ts | 4 ++-- src/app/workflow/info-tab/info-tab.service.spec.ts | 10 ++++++++++ src/app/workflow/info-tab/info-tab.service.ts | 12 ++++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/app/descriptor-languages/Jupyter.ts b/src/app/descriptor-languages/Jupyter.ts index 21dff47a4f..e6ada828ec 100644 --- a/src/app/descriptor-languages/Jupyter.ts +++ b/src/app/descriptor-languages/Jupyter.ts @@ -15,8 +15,8 @@ export const extendedJupyter: ExtendedDescriptorLanguageBean = { toolDescriptorEnum: ToolDescriptor.TypeEnum.JUPYTER, workflowDescriptorEnum: Workflow.DescriptorTypeEnum.Jupyter, languageDocumentationURL: JUPYTER_DOCUMENTATION_URL, - plainTRS: null, - descriptorFileTypes: [], + plainTRS: 'PLAIN_JUPYTER', + descriptorFileTypes: [SourceFile.TypeEnum.DOCKSTOREJUPYTER], toolTab: { rowIdentifier: 'tool\xa0ID', workflowStepHeader: 'Notebook', diff --git a/src/app/workflow/info-tab/info-tab.service.spec.ts b/src/app/workflow/info-tab/info-tab.service.spec.ts index ea47e42fb7..c7654032d5 100644 --- a/src/app/workflow/info-tab/info-tab.service.spec.ts +++ b/src/app/workflow/info-tab/info-tab.service.spec.ts @@ -59,4 +59,14 @@ describe('ValueService', () => { expect(service.getTRSId(sampleWorkflow3, EntryType.Service)).toBe(`#service/${fullWorkflowPath}`); expect(service.getTRSId(null, EntryType.BioWorkflow)).toBe(''); }); + + it(`getTRSPlainType should work for various descriptor types`, () => { + service = TestBed.inject(InfoTabService); + expect(service.getTRSPlainType('CWL')).toBe('PLAIN_CWL'); + expect(service.getTRSPlainType('WDL')).toBe('PLAIN_WDL'); + expect(service.getTRSPlainType('NFL')).toBe('PLAIN_NFL'); + expect(service.getTRSPlainType('gxformat2')).toBe('PLAIN_GALAXY'); + expect(service.getTRSPlainType('jupyter')).toBe('PLAIN_JUPYTER'); + expect(service.getTRSPlainType('bogus')).toBe('PLAIN_BOGUS'); + }); }); diff --git a/src/app/workflow/info-tab/info-tab.service.ts b/src/app/workflow/info-tab/info-tab.service.ts index 2506cd3142..ad6e57d798 100644 --- a/src/app/workflow/info-tab/info-tab.service.ts +++ b/src/app/workflow/info-tab/info-tab.service.ts @@ -218,13 +218,21 @@ export class InfoTabService { getTRSLink(path: string, versionName: string, descriptorType: string, descriptorPath: string, entryType: EntryType): string { return ( `${Dockstore.API_URI}${ga4ghPath}/tools/${encodeURIComponent(this.getTRSIDFromPath(path, entryType))}` + - `/versions/${encodeURIComponent(versionName)}/PLAIN_` + - descriptorType.toUpperCase() + + `/versions/${encodeURIComponent(versionName)}/` + + this.getTRSPlainType(descriptorType) + `/descriptor/` + descriptorPath ); } + getTRSPlainType(dockstoreDescriptorType: string): string { + const trsDescriptorType = this.descriptorTypeCompatService.stringToDescriptorType(dockstoreDescriptorType); + return ( + this.descriptorTypeCompatService.toolDescriptorTypeEnumToPlainTRS(trsDescriptorType) ?? + `PLAIN_${dockstoreDescriptorType.toUpperCase()}` + ); + } + getTRSId(workflow: Workflow | undefined, entryType: EntryType): string { if (!workflow) { return ''; From 055adbe693031479604398b626d9bceb61e426a1 Mon Sep 17 00:00:00 2001 From: Nayeon Hyun <61166764+hyunnaye@users.noreply.github.com> Date: Tue, 12 Dec 2023 16:32:58 -0500 Subject: [PATCH 104/128] SEAB-3091: update akita to 8.0.1 and akita-ngdevtools to 7.0.0 (#1893) * akita update * license --- THIRD-PARTY-LICENSES.csv | 2 +- package-lock.json | 42 +++++++++++++++++++--------------------- package.json | 4 ++-- 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/THIRD-PARTY-LICENSES.csv b/THIRD-PARTY-LICENSES.csv index a121588f94..6ac86e92f9 100644 --- a/THIRD-PARTY-LICENSES.csv +++ b/THIRD-PARTY-LICENSES.csv @@ -13,7 +13,7 @@ "@angular/platform-browser@14.2.8","MIT","https://github.com/angular/angular" "@angular/router@14.2.8","MIT","https://github.com/angular/angular" "@braintree/sanitize-url@6.0.2","MIT","https://github.com/braintree/sanitize-url" -"@datorama/akita@6.2.4","Apache-2.0","https://github.com/datorama/akita" +"@datorama/akita@7.1.1","Apache-2.0","https://github.com/datorama/akita" "@fortawesome/angular-fontawesome@0.11.1","MIT","https://github.com/FortAwesome/angular-fontawesome" "@fortawesome/fontawesome-common-types@0.3.0","MIT","https://github.com/FortAwesome/Font-Awesome" "@fortawesome/fontawesome-common-types@6.2.0","MIT","https://github.com/FortAwesome/Font-Awesome" diff --git a/package-lock.json b/package-lock.json index 59df2f4e81..1493317967 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "@angular/platform-browser": "^14.2.7", "@angular/platform-browser-dynamic": "^14.2.7", "@angular/router": "^14.2.7", - "@datorama/akita": "^6.2.3", + "@datorama/akita": "^7.0.0", "@fortawesome/angular-fontawesome": "^0.11.1", "@fortawesome/fontawesome-svg-core": "^6.2.0", "@fortawesome/free-brands-svg-icons": "^6.0.0", @@ -64,7 +64,7 @@ "@angular/language-service": "^14.2.7", "@cypress/webpack-batteries-included-preprocessor": "^2.4.1", "@cypress/webpack-preprocessor": "^5.17.1", - "@datorama/akita-ngdevtools": "^6.0.0", + "@datorama/akita-ngdevtools": "^7.0.0", "@types/cytoscape": "^3.14.15", "@types/elasticsearch": "^5.0.37", "@types/jasmine": "^3.7.7", @@ -3852,30 +3852,28 @@ } }, "node_modules/@datorama/akita": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@datorama/akita/-/akita-6.2.4.tgz", - "integrity": "sha512-bSaYvLn+OEfLIaqDd4Ur5fWy2L0TJyWPZU3SIbhDaCPN52M0upnk2GNPqIUyGLQem9LCzpwkIGW9mvafgEv93w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@datorama/akita/-/akita-7.1.1.tgz", + "integrity": "sha512-x/RgwleA1u/Z3ICL7OBSsiUByzIwSjAnx4IcdgIYS090wc2C94u4UG5mWP8Yx98NUS6mnFeHLUVllXP+BQsl1A==", "dependencies": { "schematics-utilities": "^2.0.3" }, "peerDependencies": { - "rxjs": "*", - "tslib": "^2.0.0" + "rxjs": "*" } }, "node_modules/@datorama/akita-ngdevtools": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@datorama/akita-ngdevtools/-/akita-ngdevtools-6.0.1.tgz", - "integrity": "sha512-jEsFTHQNJwLv+bSayHyGzI6zW3tVPUpx3yrWHKQGTc2cMsbhcjuId+o/Q6VkyMzM4vew3Itasz5XrrZTooakIw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@datorama/akita-ngdevtools/-/akita-ngdevtools-7.0.0.tgz", + "integrity": "sha512-ufUYu+mG9LFxDlbF4A8HYB6RhWLWy0U8iadu1ORUIEwpKhNZ6f+H4UH8ntzNxtKgf2yf61yV+s2CJ4i+WezfzA==", "dev": true, "dependencies": { - "rxjs": "6.6.7" + "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": ">= 8.0.0", - "@angular/core": ">= 8.0.0", - "@datorama/akita": ">= 6.0.0", - "tslib": "^2.0.0" + "@angular/core": ">= 13.0.0", + "@datorama/akita": ">= 7.0.0", + "rxjs": "*" } }, "node_modules/@discoveryjs/json-ext": { @@ -24313,20 +24311,20 @@ } }, "@datorama/akita": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@datorama/akita/-/akita-6.2.4.tgz", - "integrity": "sha512-bSaYvLn+OEfLIaqDd4Ur5fWy2L0TJyWPZU3SIbhDaCPN52M0upnk2GNPqIUyGLQem9LCzpwkIGW9mvafgEv93w==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@datorama/akita/-/akita-7.1.1.tgz", + "integrity": "sha512-x/RgwleA1u/Z3ICL7OBSsiUByzIwSjAnx4IcdgIYS090wc2C94u4UG5mWP8Yx98NUS6mnFeHLUVllXP+BQsl1A==", "requires": { "schematics-utilities": "^2.0.3" } }, "@datorama/akita-ngdevtools": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@datorama/akita-ngdevtools/-/akita-ngdevtools-6.0.1.tgz", - "integrity": "sha512-jEsFTHQNJwLv+bSayHyGzI6zW3tVPUpx3yrWHKQGTc2cMsbhcjuId+o/Q6VkyMzM4vew3Itasz5XrrZTooakIw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@datorama/akita-ngdevtools/-/akita-ngdevtools-7.0.0.tgz", + "integrity": "sha512-ufUYu+mG9LFxDlbF4A8HYB6RhWLWy0U8iadu1ORUIEwpKhNZ6f+H4UH8ntzNxtKgf2yf61yV+s2CJ4i+WezfzA==", "dev": true, "requires": { - "rxjs": "6.6.7" + "tslib": "^2.3.0" } }, "@discoveryjs/json-ext": { diff --git a/package.json b/package.json index 0fc7087987..718d1b68c6 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "@angular/platform-browser": "^14.2.7", "@angular/platform-browser-dynamic": "^14.2.7", "@angular/router": "^14.2.7", - "@datorama/akita": "^6.2.3", + "@datorama/akita": "^7.0.0", "@fortawesome/angular-fontawesome": "^0.11.1", "@fortawesome/fontawesome-svg-core": "^6.2.0", "@fortawesome/free-brands-svg-icons": "^6.0.0", @@ -96,7 +96,7 @@ "@angular/language-service": "^14.2.7", "@cypress/webpack-batteries-included-preprocessor": "^2.4.1", "@cypress/webpack-preprocessor": "^5.17.1", - "@datorama/akita-ngdevtools": "^6.0.0", + "@datorama/akita-ngdevtools": "^7.0.0", "@types/cytoscape": "^3.14.15", "@types/elasticsearch": "^5.0.37", "@types/jasmine": "^3.7.7", From 74ed3111c1ffccfa0f9f04c645526b134a8d80b8 Mon Sep 17 00:00:00 2001 From: Steve Von Worley Date: Tue, 12 Dec 2023 15:07:53 -0800 Subject: [PATCH 105/128] fix manual topic editing issues https://ucsc-cgl.atlassian.net/browse/SEAB-6062 --- cypress/e2e/group2/sharedWorkflows.ts | 6 +++--- cypress/e2e/group3/githubAppTools.ts | 4 ++-- .../workflow/info-tab/info-tab.component.html | 21 +++++++------------ 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/cypress/e2e/group2/sharedWorkflows.ts b/cypress/e2e/group2/sharedWorkflows.ts index 66704964a2..b84acdf2d4 100644 --- a/cypress/e2e/group2/sharedWorkflows.ts +++ b/cypress/e2e/group2/sharedWorkflows.ts @@ -223,7 +223,7 @@ describe('Shared with me workflow test from my-workflows', () => { goToTab('Versions'); clickFirstActionsButtonPrivate(); cy.contains('View').should('be.visible'); - cy.contains('Edit').should('not.exist'); + cy.contains('Edit Info').should('not.exist'); cy.contains('Delete').should('not.exist'); cancelMatMenu(); goToTab('Files'); @@ -239,7 +239,7 @@ describe('Shared with me workflow test from my-workflows', () => { goToTab('Versions'); clickFirstActionsButtonPrivate(); cy.contains('View').should('not.exist'); - cy.contains('Edit').should('be.visible'); + cy.contains('Edit Info').should('be.visible'); cy.contains('Delete').should('be.visible'); cancelMatMenu(); goToTab('Files'); @@ -255,7 +255,7 @@ describe('Shared with me workflow test from my-workflows', () => { goToTab('Versions'); clickFirstActionsButtonPrivate(); cy.contains('View').should('not.exist'); - cy.contains('Edit').should('be.visible'); + cy.contains('Edit Info').should('be.visible'); cy.contains('Delete').should('be.visible'); cancelMatMenu(); goToTab('Files'); diff --git a/cypress/e2e/group3/githubAppTools.ts b/cypress/e2e/group3/githubAppTools.ts index 5035e413d9..39d12c1bf5 100644 --- a/cypress/e2e/group3/githubAppTools.ts +++ b/cypress/e2e/group3/githubAppTools.ts @@ -170,7 +170,7 @@ describe('GitHub App Tools', () => { cy.contains('button', 'Refresh Version').should('be.disabled'); // Fix hiding a version. You have to refresh the page to see that it was hidden in the table - cy.contains('Edit').click(); + cy.contains('Edit Info').click(); cy.contains('Edit Tool'); cy.contains('Tool Path'); cy.get('[type="checkbox"]').check(); @@ -178,7 +178,7 @@ describe('GitHub App Tools', () => { cy.get('[data-cy=valid').should('exist'); cy.get('[data-cy=hidden').should('exist'); cy.contains('button', 'Actions').should('be.visible').click(); - cy.contains('Edit').click(); + cy.contains('Edit Info').click(); cy.get('[type="checkbox"]').uncheck(); cy.get('[data-cy=save-version]').click(); cy.get('[data-cy=hidden').should('not.exist'); diff --git a/src/app/workflow/info-tab/info-tab.component.html b/src/app/workflow/info-tab/info-tab.component.html index 17bf94998b..6ab12580e9 100644 --- a/src/app/workflow/info-tab/info-tab.component.html +++ b/src/app/workflow/info-tab/info-tab.component.html @@ -243,26 +243,19 @@ CancelCancel -