fix(console): remove navigation flakiness (#8439)

# Which Problems Are Solved

The navigation in the console default settings is flaky. Sometimes it
arbitrarily jumps to the organizations page.

# How the Problems Are Solved

The lifecycle hooks were extended to react differently to changes that
come from 'outside' and from the component itself.

# Additional Changes

The e2e tests are supposed to run against Firefox and Chrome. However
they are run twice against Electon. Fixing this revealed the console
navigation flakiness that was less visible on Electron.

The following issues are also fixed with this PR to reduce flakiness in
e2e tests.

- The custom command in the pipeline is removed from the e2e action
step, so the browser argument is respected.
- The npm packages of the e2e tests are updated to their latest version.
- Notification tests run against a clean state now so they don't depend
on each other anymore. This resolved some flakiness and improved
debuggability of the tests.
- E2E page load timeout is increased, reducing flakiness.
- E2E tests wait on some elements to be enabled before they interact
with them, reducing flakiness.

# Additional Context

- Closes #8404 
- Follow-up: https://github.com/zitadel/zitadel/issues/8471

The e2e tests ran three times in a row successfully in the pipeline
against both browsers.

---------

Co-authored-by: Max Peintner <max@caos.ch>
Co-authored-by: Livio Spring <livio.a@gmail.com>
Co-authored-by: Tim Möhlmann <tim+github@zitadel.com>
This commit is contained in:
Elio Bischof 2024-08-22 09:48:36 +02:00 committed by GitHub
parent b1f5b1979c
commit fdf0434133
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
24 changed files with 618 additions and 603 deletions

View File

@ -50,7 +50,6 @@ jobs:
with: with:
working-directory: e2e working-directory: e2e
browser: ${{ matrix.browser }} browser: ${{ matrix.browser }}
command: npm run e2e
config-file: cypress.config.ts config-file: cypress.config.ts
- -
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4

View File

@ -5,7 +5,7 @@
<mat-spinner diameter="30" *ngIf="smsProvidersLoading" color="primary"></mat-spinner> <mat-spinner diameter="30" *ngIf="smsProvidersLoading" color="primary"></mat-spinner>
</div> </div>
<div class="sms-providers"> <div class="sms-providers" *ngIf="!smsProvidersLoading">
<cnsl-card class="sms-card" [nomargin]="true"> <cnsl-card class="sms-card" [nomargin]="true">
<div class="sms-provider"> <div class="sms-provider">
<h4 class="title">Twilio</h4> <h4 class="title">Twilio</h4>

View File

@ -1,4 +1,5 @@
<cnsl-sidenav <cnsl-sidenav
*ngIf="currentSetting"
[title]="title" [title]="title"
[description]="description" [description]="description"
[indented]="true" [indented]="true"

View File

@ -1,4 +1,4 @@
import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';
import { PolicyComponentServiceType } from '../policies/policy-component-types.enum'; import { PolicyComponentServiceType } from '../policies/policy-component-types.enum';
import { SidenavSetting } from '../sidenav/sidenav.component'; import { SidenavSetting } from '../sidenav/sidenav.component';
@ -8,23 +8,27 @@ import { SidenavSetting } from '../sidenav/sidenav.component';
templateUrl: './settings-list.component.html', templateUrl: './settings-list.component.html',
styleUrls: ['./settings-list.component.scss'], styleUrls: ['./settings-list.component.scss'],
}) })
export class SettingsListComponent implements OnChanges { export class SettingsListComponent implements OnChanges, OnInit {
@Input() public title: string = ''; @Input() public title: string = '';
@Input() public description: string = ''; @Input() public description: string = '';
@Input() public serviceType!: PolicyComponentServiceType; @Input() public serviceType!: PolicyComponentServiceType;
@Input() public selectedId: string = ''; @Input() public selectedId: string | undefined = undefined;
@Input() public settingsList: SidenavSetting[] = []; @Input() public settingsList: SidenavSetting[] = [];
public currentSetting: string | undefined = ''; public currentSetting: string | undefined = '';
public PolicyComponentServiceType: any = PolicyComponentServiceType; public PolicyComponentServiceType: any = PolicyComponentServiceType;
constructor() {} constructor() {}
ngOnChanges(changes: SimpleChanges): void { ngOnChanges(changes: SimpleChanges): void {
if (changes['selectedId']?.currentValue) { if (this.settingsList && this.settingsList.length && changes['selectedId']?.currentValue) {
this.currentSetting = this.currentSetting =
this.settingsList && this.settingsList.find((l) => l.id === changes['selectedId'].currentValue) this.settingsList && this.settingsList.find((l) => l.id === changes['selectedId'].currentValue)
? changes['selectedId'].currentValue ? changes['selectedId'].currentValue
: ''; : '';
} else { }
}
ngOnInit(): void {
if (!this.currentSetting) {
this.currentSetting = this.settingsList ? this.settingsList[0].id : ''; this.currentSetting = this.settingsList ? this.settingsList[0].id : '';
} }
} }

View File

@ -5,8 +5,8 @@
<p *ngIf="description" class="cnsl-secondary-text">{{ description }}</p> <p *ngIf="description" class="cnsl-secondary-text">{{ description }}</p>
<button <button
*ngIf="currentSetting !== undefined" *ngIf="currentSetting"
(click)="value = undefined" (click)="value = ''"
class="sidenav-setting-list-element mob-only" class="sidenav-setting-list-element mob-only"
[ngClass]="{ active: true }" [ngClass]="{ active: true }"
> >
@ -18,7 +18,7 @@
<ng-container> <ng-container>
<span <span
class="sidenav-setting-group hide-on-mobile" class="sidenav-setting-group hide-on-mobile"
[ngClass]="{ show: currentSetting === undefined }" [ngClass]="{ show: !currentSetting }"
*ngIf=" *ngIf="
(setting.groupI18nKey && i > 0 && setting.groupI18nKey !== settingsList[i - 1].groupI18nKey) || (setting.groupI18nKey && i > 0 && setting.groupI18nKey !== settingsList[i - 1].groupI18nKey) ||
(i === 0 && setting.groupI18nKey) (i === 0 && setting.groupI18nKey)
@ -29,7 +29,7 @@
<button <button
(click)="value = setting.id" (click)="value = setting.id"
class="sidenav-setting-list-element hide-on-mobile" class="sidenav-setting-list-element hide-on-mobile"
[ngClass]="{ active: currentSetting === setting.id, show: currentSetting === undefined }" [ngClass]="{ active: currentSetting === setting.id, show: !currentSetting }"
[attr.data-e2e]="'sidenav-element-' + setting.id" [attr.data-e2e]="'sidenav-element-' + setting.id"
> >
<span>{{ setting.i18nKey | translate }}</span> <span>{{ setting.i18nKey | translate }}</span>
@ -40,7 +40,7 @@
<button <button
(click)="value = setting.id" (click)="value = setting.id"
class="sidenav-setting-list-element hide-on-mobile" class="sidenav-setting-list-element hide-on-mobile"
[ngClass]="{ active: currentSetting === setting.id, show: currentSetting === undefined }" [ngClass]="{ active: currentSetting === setting.id, show: !currentSetting }"
> >
<span>{{ setting.i18nKey | translate }}</span> <span>{{ setting.i18nKey | translate }}</span>
</button> </button>

View File

@ -1,4 +1,4 @@
import { Component, Input, OnInit } from '@angular/core'; import { Component, forwardRef, Input, OnInit } from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
@ -19,9 +19,9 @@ export interface SidenavSetting {
selector: 'cnsl-sidenav', selector: 'cnsl-sidenav',
templateUrl: './sidenav.component.html', templateUrl: './sidenav.component.html',
styleUrls: ['./sidenav.component.scss'], styleUrls: ['./sidenav.component.scss'],
providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SidenavComponent, multi: true }], providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SidenavComponent), multi: true }],
}) })
export class SidenavComponent implements ControlValueAccessor, OnInit { export class SidenavComponent implements ControlValueAccessor {
@Input() public title: string = ''; @Input() public title: string = '';
@Input() public description: string = ''; @Input() public description: string = '';
@Input() public indented: boolean = false; @Input() public indented: boolean = false;
@ -35,12 +35,6 @@ export class SidenavComponent implements ControlValueAccessor, OnInit {
private route: ActivatedRoute, private route: ActivatedRoute,
) {} ) {}
ngOnInit(): void {
if (!this.value) {
this.value = this.settingsList[0].id;
}
}
private onChange = (current: string | undefined) => {}; private onChange = (current: string | undefined) => {};
private onTouch = (current: string | undefined) => {}; private onTouch = (current: string | undefined) => {};
@ -51,7 +45,7 @@ export class SidenavComponent implements ControlValueAccessor, OnInit {
set value(setting: string | undefined) { set value(setting: string | undefined) {
this.currentSetting = setting; this.currentSetting = setting;
if (setting || setting === undefined) { if (setting || setting === undefined || setting === '') {
this.onChange(setting); this.onChange(setting);
this.onTouch(setting); this.onTouch(setting);
} }

View File

@ -61,7 +61,7 @@ export class OwnedProjectDetailComponent implements OnInit {
public refreshChanges$: EventEmitter<void> = new EventEmitter(); public refreshChanges$: EventEmitter<void> = new EventEmitter();
public settingsList: SidenavSetting[] = [GENERAL, ROLES, PROJECTGRANTS, GRANTS]; public settingsList: SidenavSetting[] = [GENERAL, ROLES, PROJECTGRANTS, GRANTS];
public currentSetting: string | undefined = ''; public currentSetting: string = '';
constructor( constructor(
public translate: TranslateService, public translate: TranslateService,
private route: ActivatedRoute, private route: ActivatedRoute,
@ -72,12 +72,11 @@ export class OwnedProjectDetailComponent implements OnInit {
private router: Router, private router: Router,
private breadcrumbService: BreadcrumbService, private breadcrumbService: BreadcrumbService,
) { ) {
this.currentSetting = 'general';
route.queryParams.pipe(take(1)).subscribe((params: Params) => { route.queryParams.pipe(take(1)).subscribe((params: Params) => {
const { id } = params; const { id } = params;
if (id) { if (id) {
this.currentSetting = id; this.currentSetting = id;
} else {
this.currentSetting = 'general';
} }
}); });
} }

View File

@ -61,6 +61,7 @@ export default defineConfig({
baseUrl: baseUrl(), baseUrl: baseUrl(),
experimentalRunAllSpecs: true, experimentalRunAllSpecs: true,
experimentalOriginDependencies: true, experimentalOriginDependencies: true,
pageLoadTimeout: 180000,
setupNodeEvents(on, config) { setupNodeEvents(on, config) {
startWebhookEventHandler() startWebhookEventHandler()

View File

@ -26,13 +26,16 @@ describe('applications', () => {
it('add web pkce app', () => { it('add web pkce app', () => {
cy.get('[data-e2e="app-card-add"]').should('be.visible').click(); cy.get('[data-e2e="app-card-add"]').should('be.visible').click();
cy.get('[formcontrolname="name"]').focus().type(testPKCEAppName); cy.get('[formcontrolname="name"]').focus().should('be.enabled').type(testPKCEAppName);
cy.get('[for="WEB"]').click(); cy.get('[for="WEB"]').click();
cy.get('[data-e2e="continue-button-nameandtype"]').click(); cy.get('[data-e2e="continue-button-nameandtype"]').click();
cy.get('[for="PKCE"]').should('be.visible').click(); cy.get('[for="PKCE"]').should('be.visible').click();
cy.get('[data-e2e="continue-button-authmethod"]').click(); cy.get('[data-e2e="continue-button-authmethod"]').click();
cy.get('[data-e2e="redirect-uris"] input').focus().type('http://localhost:3000/api/auth/callback/zitadel'); cy.get('[data-e2e="redirect-uris"] input')
cy.get('[data-e2e="postlogout-uris"] input').focus().type('http://localhost:3000'); .focus()
.should('be.enabled')
.type('http://localhost:3000/api/auth/callback/zitadel');
cy.get('[data-e2e="postlogout-uris"] input').focus().should('be.enabled').type('http://localhost:3000');
cy.get('[data-e2e="continue-button-redirecturis"]').click(); cy.get('[data-e2e="continue-button-redirecturis"]').click();
cy.get('[data-e2e="create-button"]').click(); cy.get('[data-e2e="create-button"]').click();
cy.get('[id*=overlay]').should('exist'); cy.get('[id*=overlay]').should('exist');
@ -56,7 +59,7 @@ describe('applications', () => {
it('add device code app', () => { it('add device code app', () => {
cy.get('[data-e2e="app-card-add"]').should('be.visible').click(); cy.get('[data-e2e="app-card-add"]').should('be.visible').click();
cy.get('[formcontrolname="name"]').focus().type(testDEVICECODEAppName); cy.get('[formcontrolname="name"]').focus().should('be.enabled').type(testDEVICECODEAppName);
cy.get('[for="N"]').click(); cy.get('[for="N"]').click();
cy.get('[data-e2e="continue-button-nameandtype"]').click(); cy.get('[data-e2e="continue-button-nameandtype"]').click();
cy.get('[for="DEVICECODE"]').should('be.visible').click(); cy.get('[for="DEVICECODE"]').should('be.visible').click();

View File

@ -28,14 +28,14 @@ describe('humans', () => {
it('should add a user', () => { it('should add a user', () => {
cy.get('[data-e2e="create-user-button"]').should('be.visible').click(); cy.get('[data-e2e="create-user-button"]').should('be.visible').click();
cy.url().should('contain', 'users/create'); cy.url().should('contain', 'users/create');
cy.get('[formcontrolname="email"]').type('dummy@dummy.com'); cy.get('[formcontrolname="email"]').should('be.enabled').type('dummy@dummy.com');
//force needed due to the prefilled username prefix //force needed due to the prefilled username prefix
cy.get('[formcontrolname="userName"]').type(user.addName); cy.get('[formcontrolname="userName"]').should('be.enabled').type(user.addName);
cy.get('[formcontrolname="firstName"]').type('e2ehumanfirstname'); cy.get('[formcontrolname="firstName"]').should('be.enabled').type('e2ehumanfirstname');
cy.get('[formcontrolname="lastName"]').type('e2ehumanlastname'); cy.get('[formcontrolname="lastName"]').should('be.enabled').type('e2ehumanlastname');
cy.get('mat-select[data-cy="country-calling-code"]').click(); cy.get('mat-select[data-cy="country-calling-code"]').click();
cy.contains('mat-option', 'Switzerland').scrollIntoView().click(); cy.contains('mat-option', 'Switzerland').scrollIntoView().click();
cy.get('[formcontrolname="phone"]').type('123456789'); cy.get('[formcontrolname="phone"]').should('be.enabled').type('123456789');
cy.get('[data-e2e="create-button"]').click({ force: true }); cy.get('[data-e2e="create-button"]').click({ force: true });
cy.shouldConfirmSuccess(); cy.shouldConfirmSuccess();
let loginName = user.addName; let loginName = user.addName;
@ -58,7 +58,7 @@ describe('humans', () => {
it('should delete a human user', () => { it('should delete a human user', () => {
const rowSelector = `tr:contains(${user.removeName})`; const rowSelector = `tr:contains(${user.removeName})`;
cy.get(rowSelector).find('[data-e2e="enabled-delete-button"]').click({ force: true }); cy.get(rowSelector).find('[data-e2e="enabled-delete-button"]').click({ force: true });
cy.get('[data-e2e="confirm-dialog-input"]').focus().type(user.removeName); cy.get('[data-e2e="confirm-dialog-input"]').focus().should('be.enabled').type(user.removeName);
cy.get('[data-e2e="confirm-dialog-button"]').click(); cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.shouldConfirmSuccess(); cy.shouldConfirmSuccess();
cy.shouldNotExist({ cy.shouldNotExist({

View File

@ -1,3 +1,10 @@
import { v4 as uuidv4 } from 'uuid';
import { Context } from '../../../support/commands';
import { ensureOrgExists } from '../../../support/api/orgs';
import { activateSMTPProvider, ensureSMTPProviderExists } from '../../../support/api/smtp';
import { ensureSMSProviderDoesntExist, ensureSMSProviderExists } from '../../../support/api/sms';
const notificationPath = `/instance?id=notifications`; const notificationPath = `/instance?id=notifications`;
const smtpPath = `/instance?id=smtpprovider`; const smtpPath = `/instance?id=smtpprovider`;
const smsPath = `/instance?id=smsprovider`; const smsPath = `/instance?id=smsprovider`;
@ -6,6 +13,11 @@ beforeEach(() => {
cy.context().as('ctx'); cy.context().as('ctx');
}); });
type SMTPProvider = {
description: string;
rowSelector: string;
};
describe('instance notifications', () => { describe('instance notifications', () => {
describe('notification settings', () => { describe('notification settings', () => {
it(`should show notification settings`, () => { it(`should show notification settings`, () => {
@ -15,243 +27,195 @@ describe('instance notifications', () => {
}); });
describe('smtp settings', () => { describe('smtp settings', () => {
it(`should show SMTP provider settings`, () => { beforeEach(() => {
cy.visit(smtpPath); const description = `mailgun-${uuidv4()}`;
cy.contains('SMTP Provider'); cy.wrap<SMTPProvider>({ description, rowSelector: `tr:contains('${description}')` }).as('provider');
}); });
it(`should add Mailgun SMTP provider settings`, () => { it(`should add Mailgun SMTP provider settings`, () => {
let rowSelector = `a:contains('Mailgun')`; cy.get<SMTPProvider>('@provider').then((provider) => {
cy.visit(smtpPath); cy.visit(smtpPath);
cy.get(rowSelector).click(); cy.get(`a:contains('Mailgun')`).click();
cy.get('[formcontrolname="hostAndPort"]').should('have.value', 'smtp.mailgun.org:587'); cy.get('[formcontrolname="description"]').should('be.enabled').clear().type(provider.description);
cy.get('[formcontrolname="user"]').clear().type('user@example.com'); cy.get('[formcontrolname="hostAndPort"]').should('have.value', 'smtp.mailgun.org:587');
cy.get('[formcontrolname="password"]').clear().type('password'); cy.get('[formcontrolname="user"]').should('be.enabled').clear().type('user@example.com');
cy.get('[data-e2e="continue-to-2nd-form"]').click(); cy.get('[formcontrolname="password"]').should('be.enabled').clear().type('password');
cy.get('[formcontrolname="senderAddress"]').clear().type('sender1@example.com'); cy.get('[data-e2e="continue-to-2nd-form"]').should('be.enabled').click();
cy.get('[formcontrolname="senderName"]').clear().type('Test1'); cy.get('[formcontrolname="senderAddress"]').should('be.enabled').clear().type('sender1@example.com');
cy.get('[formcontrolname="replyToAddress"]').clear().type('replyto1@example.com'); cy.get('[formcontrolname="senderName"]').should('be.enabled').clear().type('Test1');
cy.get('[data-e2e="continue-button"]').click(); cy.get('[formcontrolname="replyToAddress"]').should('be.enabled').clear().type('replyto1@example.com');
cy.get('[data-e2e="create-button"]').click(); cy.get('[data-e2e="continue-button"]').should('be.enabled').click();
cy.shouldConfirmSuccess(); cy.get('[data-e2e="create-button"]').should('be.enabled').click();
cy.get('[data-e2e="close-button"]').click(); cy.shouldConfirmSuccess();
cy.get('tr').contains('mailgun'); cy.get('[data-e2e="close-button"]').should('be.enabled').click();
cy.get('tr').contains('smtp.mailgun.org:587'); cy.get(provider.rowSelector).contains('smtp.mailgun.org:587');
cy.get('tr').contains('sender1@example.com'); cy.get(provider.rowSelector).contains('sender1@example.com');
}); });
it(`should change Mailgun SMTP provider settings`, () => {
let rowSelector = `tr:contains('mailgun')`;
cy.visit(smtpPath);
cy.get(rowSelector).click();
cy.get('[formcontrolname="hostAndPort"]').should('have.value', 'smtp.mailgun.org:587');
cy.get('[formcontrolname="user"]').should('have.value', 'user@example.com');
cy.get('[formcontrolname="user"]').clear().type('change@example.com');
cy.get('[data-e2e="continue-to-2nd-form"]').click();
cy.get('[formcontrolname="senderAddress"]').should('have.value', 'sender1@example.com');
cy.get('[formcontrolname="senderName"]').should('have.value', 'Test1');
cy.get('[formcontrolname="replyToAddress"]').should('have.value', 'replyto1@example.com');
cy.get('[formcontrolname="senderAddress"]').clear().type('senderchange1@example.com');
cy.get('[formcontrolname="senderName"]').clear().type('Change1');
cy.get('[data-e2e="continue-button"]').click();
cy.get('[data-e2e="create-button"]').click();
cy.shouldConfirmSuccess();
cy.get('[data-e2e="close-button"]').click();
rowSelector = `tr:contains('mailgun')`;
cy.get(rowSelector).contains('mailgun');
cy.get(rowSelector).contains('smtp.mailgun.org:587');
cy.get(rowSelector).contains('senderchange1@example.com');
});
it(`should activate Mailgun SMTP provider settings`, () => {
let rowSelector = `tr:contains('smtp.mailgun.org:587')`;
cy.visit(smtpPath);
cy.get(rowSelector).find('[data-e2e="activate-provider-button"]').click({ force: true });
cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.shouldConfirmSuccess();
rowSelector = `tr:contains('smtp.mailgun.org:587')`;
cy.get(rowSelector).find('[data-e2e="active-provider"]');
cy.get(rowSelector).contains('mailgun');
cy.get(rowSelector).contains('smtp.mailgun.org:587');
cy.get(rowSelector).contains('senderchange1@example.com');
});
it(`should add Mailjet SMTP provider settings`, () => {
let rowSelector = `a:contains('Mailjet')`;
cy.visit(smtpPath);
cy.get(rowSelector).click();
cy.get('[formcontrolname="hostAndPort"]').should('have.value', 'in-v3.mailjet.com:587');
cy.get('[formcontrolname="user"]').clear().type('user@example.com');
cy.get('[formcontrolname="password"]').clear().type('password');
cy.get('[data-e2e="continue-to-2nd-form"]').click();
cy.get('[formcontrolname="senderAddress"]').clear().type('sender2@example.com');
cy.get('[formcontrolname="senderName"]').clear().type('Test2');
cy.get('[formcontrolname="replyToAddress"]').clear().type('replyto2@example.com');
cy.get('[data-e2e="continue-button"]').click();
cy.get('[data-e2e="create-button"]').click();
cy.shouldConfirmSuccess();
cy.get('[data-e2e="close-button"]').click();
rowSelector = `tr:contains('mailjet')`;
cy.get(rowSelector).contains('mailjet');
cy.get(rowSelector).contains('in-v3.mailjet.com:587');
cy.get(rowSelector).contains('sender2@example.com');
});
it(`should activate Mailjet SMTP provider settings an disable Mailgun`, () => {
let rowSelector = `tr:contains('in-v3.mailjet.com:587')`;
cy.visit(smtpPath);
cy.get(rowSelector).find('[data-e2e="activate-provider-button"]').click({ force: true });
cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.shouldConfirmSuccess();
cy.get(rowSelector).find('[data-e2e="active-provider"]');
cy.get(rowSelector).contains('mailjet');
cy.get(rowSelector).contains('in-v3.mailjet.com:587');
cy.get(rowSelector).contains('sender2@example.com');
rowSelector = `tr:contains('mailgun')`;
cy.get(rowSelector).find('[data-e2e="active-provider"]').should('not.exist');
});
it(`should deactivate Mailjet SMTP provider`, () => {
let rowSelector = `tr:contains('mailjet')`;
cy.visit(smtpPath);
cy.get(rowSelector).find('[data-e2e="deactivate-provider-button"]').click({ force: true });
cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.shouldConfirmSuccess();
rowSelector = `tr:contains('mailjet')`;
cy.get(rowSelector).find('[data-e2e="active-provider"]').should('not.exist');
rowSelector = `tr:contains('mailgun')`;
cy.get(rowSelector).find('[data-e2e="active-provider"]').should('not.exist');
});
it(`should delete Mailjet SMTP provider`, () => {
let rowSelector = `tr:contains('mailjet')`;
cy.visit(smtpPath);
cy.get(rowSelector).find('[data-e2e="delete-provider-button"]').click({ force: true });
cy.get('[data-e2e="confirm-dialog-input"]').focus().type('Test2');
cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.shouldConfirmSuccess();
rowSelector = `tr:contains('mailjet')`;
cy.get(rowSelector).should('not.exist');
});
it(`should delete Mailgun SMTP provider`, () => {
let rowSelector = `tr:contains('mailgun')`;
cy.visit(smtpPath);
cy.get(rowSelector).find('[data-e2e="delete-provider-button"]').click({ force: true });
cy.get('[data-e2e="confirm-dialog-input"]').focus().type('Change1');
cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.shouldConfirmSuccess();
rowSelector = `tr:contains('mailgun')`;
cy.get(rowSelector).should('not.exist');
}); });
it(`should add Mailgun SMTP provider settings and activate it using wizard`, () => { it(`should add Mailgun SMTP provider settings and activate it using wizard`, () => {
let rowSelector = `a:contains('Mailgun')`; cy.get<SMTPProvider>('@provider').then((provider) => {
cy.visit(smtpPath); cy.visit(smtpPath);
cy.get(rowSelector).click(); cy.get(`a:contains('Mailgun')`).click();
cy.get('[formcontrolname="hostAndPort"]').should('have.value', 'smtp.mailgun.org:587'); cy.get('[formcontrolname="description"]').should('be.enabled').clear().type(provider.description);
cy.get('[formcontrolname="user"]').clear().type('user@example.com'); cy.get('[formcontrolname="hostAndPort"]').should('have.value', 'smtp.mailgun.org:587');
cy.get('[formcontrolname="password"]').clear().type('password'); cy.get('[formcontrolname="user"]').should('be.enabled').clear().type('user@example.com');
cy.get('[data-e2e="continue-to-2nd-form"]').click(); cy.get('[formcontrolname="password"]').should('be.enabled').clear().type('password');
cy.get('[formcontrolname="senderAddress"]').clear().type('sender1@example.com'); cy.get('[data-e2e="continue-to-2nd-form"]').should('be.enabled').click();
cy.get('[formcontrolname="senderName"]').clear().type('Test1'); cy.get('[formcontrolname="senderAddress"]').should('be.enabled').clear().type('sender1@example.com');
cy.get('[formcontrolname="replyToAddress"]').clear().type('replyto1@example.com'); cy.get('[formcontrolname="senderName"]').should('be.enabled').clear().type('Test1');
cy.get('[data-e2e="continue-button"]').click(); cy.get('[formcontrolname="replyToAddress"]').should('be.enabled').clear().type('replyto1@example.com');
cy.get('[data-e2e="create-button"]').click(); cy.get('[data-e2e="continue-button"]').should('be.enabled').click();
cy.shouldConfirmSuccess(); cy.get('[data-e2e="create-button"]').click();
cy.get('[data-e2e="activate-button"]').click(); cy.shouldConfirmSuccess();
cy.shouldConfirmSuccess(); cy.get('[data-e2e="activate-button"]').click();
cy.get('[data-e2e="close-button"]').click(); cy.shouldConfirmSuccess();
rowSelector = `tr:contains('smtp.mailgun.org:587')`; cy.get('[data-e2e="close-button"]').click();
cy.get(rowSelector).find('[data-e2e="active-provider"]'); cy.get(provider.rowSelector).find('[data-e2e="active-provider"]');
cy.get(rowSelector).contains('mailgun'); cy.get(provider.rowSelector).contains('smtp.mailgun.org:587');
cy.get(rowSelector).contains('smtp.mailgun.org:587'); cy.get(provider.rowSelector).contains('sender1@example.com');
cy.get(rowSelector).contains('sender1@example.com'); });
}); });
it(`should add Mailgun SMTP provider settings and deactivate it using wizard`, () => {
let rowSelector = `tr:contains('mailgun')`; describe('with inactive existing', () => {
cy.visit(smtpPath); beforeEach(() => {
cy.get(rowSelector).click(); cy.get<Context>('@ctx').then((ctx) => {
cy.get('[data-e2e="continue-to-2nd-form"]').click(); cy.get<SMTPProvider>('@provider').then(({ description }) => {
cy.get('[data-e2e="continue-button"]').click(); ensureSMTPProviderExists(ctx.api, description);
cy.get('[data-e2e="create-button"]').click(); });
cy.shouldConfirmSuccess(); });
cy.get('[data-e2e="deactivate-button"]').click(); cy.visit(smtpPath);
cy.shouldConfirmSuccess(); });
cy.get('[data-e2e="close-button"]').click();
rowSelector = `tr:contains('mailgun')`; it(`should change Mailgun SMTP provider settings`, () => {
cy.get(rowSelector).find('[data-e2e="active-provider"]').should('not.exist'); cy.get<SMTPProvider>('@provider').then(({ rowSelector }) => {
cy.get(rowSelector).click();
cy.get('[data-e2e="continue-to-2nd-form"]').click();
cy.get('[formcontrolname="senderAddress"]').should('be.enabled').clear().type('senderchange1@example.com');
cy.get('[formcontrolname="senderName"]').clear().type('Change1');
cy.get('[data-e2e="continue-button"]').click();
cy.get('[data-e2e="create-button"]').click();
cy.shouldConfirmSuccess();
cy.get('[data-e2e="close-button"]').click();
cy.get(rowSelector).contains('senderchange1@example.com');
});
});
it(`should activate Mailgun SMTP provider settings`, () => {
cy.get<SMTPProvider>('@provider').then(({ rowSelector }) => {
cy.get(rowSelector).find('[data-e2e="activate-provider-button"]').click({ force: true });
cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.shouldConfirmSuccess();
cy.get(rowSelector).find('[data-e2e="active-provider"]');
});
});
it(`should delete Mailgun SMTP provider`, () => {
cy.get<SMTPProvider>('@provider').then(({ rowSelector }) => {
cy.get(rowSelector).find('[data-e2e="delete-provider-button"]').click({ force: true });
cy.get('[data-e2e="confirm-dialog-input"]').focus().should('be.enabled').type('A Sender');
cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.shouldConfirmSuccess();
cy.get(rowSelector).should('not.exist');
});
});
}); });
it(`should delete Mailgun SMTP provider`, () => { describe('with active existing', () => {
let rowSelector = `tr:contains('mailgun')`; beforeEach(() => {
cy.visit(smtpPath); cy.get<Context>('@ctx').then((ctx) => {
cy.get(rowSelector).find('[data-e2e="delete-provider-button"]').click({ force: true }); cy.get<SMTPProvider>('@provider').then(({ description }) => {
cy.get('[data-e2e="confirm-dialog-input"]').focus().type('Test1'); ensureSMTPProviderExists(ctx.api, description).then((providerId) => {
cy.get('[data-e2e="confirm-dialog-button"]').click(); activateSMTPProvider(ctx.api, providerId);
cy.shouldConfirmSuccess(); });
rowSelector = `tr:contains('mailgun')`; });
cy.get(rowSelector).should('not.exist'); });
cy.pause();
cy.visit(smtpPath);
});
it(`should deactivate an existing Mailgun SMTP provider using wizard`, () => {
cy.get<SMTPProvider>('@provider').then(({ rowSelector }) => {
cy.get(rowSelector).click();
cy.get('[data-e2e="continue-to-2nd-form"]').click();
cy.get('[data-e2e="continue-button"]').click();
cy.get('[data-e2e="create-button"]').click();
cy.shouldConfirmSuccess();
cy.get('[data-e2e="deactivate-button"]').click();
cy.shouldConfirmSuccess();
cy.get('[data-e2e="close-button"]').click();
cy.get(rowSelector).find('[data-e2e="active-provider"]').should('not.exist');
});
});
}); });
}); });
describe('sms settings', () => { describe('sms settings', () => {
it(`should show SMS provider settings`, () => { beforeEach(() => {
cy.visit(smsPath); cy.wrap<string>(`twilio-${uuidv4()}`).as('uniqueSid');
cy.contains('SMS Settings');
}); });
it(`should add SMS provider`, () => { describe('without existing', () => {
cy.visit(smsPath); beforeEach(() => {
cy.get('[data-e2e="new-twilio-button"]').click(); cy.get<Context>('@ctx').then((ctx) => {
cy.get('[formcontrolname="sid"]').clear().type('test'); ensureSMSProviderDoesntExist(ctx.api);
cy.get('[formcontrolname="token"]').clear().type('token'); });
cy.get('[formcontrolname="senderNumber"]').clear().type('2312123132'); });
cy.get('[data-e2e="save-sms-settings-button"]').click();
cy.shouldConfirmSuccess(); it(`should add SMS provider`, () => {
cy.get('h4').contains('Twilio'); cy.visit(smsPath);
cy.get('.state').contains('Inactive'); cy.get('[data-e2e="new-twilio-button"]').click();
cy.get('[formcontrolname="sid"]').should('be.enabled').clear().type('test');
cy.get('[formcontrolname="token"]').should('be.enabled').clear().type('token');
cy.get('[formcontrolname="senderNumber"]').should('be.enabled').clear().type('2312123132');
cy.get('[data-e2e="save-sms-settings-button"]').click();
cy.shouldConfirmSuccess();
cy.get('h4').contains('Twilio');
cy.get('.state').contains('Inactive');
});
}); });
it(`should activate SMS provider`, () => { describe('with inactive existing', () => {
cy.visit(smsPath); beforeEach(() => {
cy.get('h4').contains('Twilio'); cy.get<Context>('@ctx').then((ctx) => {
cy.get('.state').contains('Inactive'); ensureSMSProviderExists(ctx.api);
cy.get('[data-e2e="activate-sms-provider-button"]').click(); cy.visit(smsPath);
cy.shouldConfirmSuccess(); });
cy.get('.state').contains('Active'); });
});
it(`should edit SMS provider`, () => { it(`should activate SMS provider`, () => {
cy.visit(smsPath); cy.get('h4').contains('Twilio');
cy.get('h4').contains('Twilio'); cy.get('.state').contains('Inactive');
cy.get('.state').contains('Active'); cy.get('[data-e2e="activate-sms-provider-button"]').click();
cy.get('[data-e2e="new-twilio-button"]').click(); cy.shouldConfirmSuccess();
cy.get('[formcontrolname="sid"]').should('have.value', 'test'); cy.get('.state').contains('Active');
cy.get('[formcontrolname="senderNumber"]').should('have.value', '2312123132'); });
cy.get('[formcontrolname="sid"]').clear().type('test2');
cy.get('[formcontrolname="senderNumber"]').clear().type('6666666666');
cy.get('[data-e2e="save-sms-settings-button"]').click();
cy.shouldConfirmSuccess();
});
it(`should contain edited values`, () => { it(`should edit SMS provider`, () => {
cy.visit(smsPath); cy.get('h4').contains('Twilio');
cy.get('h4').contains('Twilio'); cy.get('[data-e2e="new-twilio-button"]').click();
cy.get('.state').contains('Active'); cy.get('[formcontrolname="sid"]').should('be.enabled').clear().type('test2');
cy.get('[data-e2e="new-twilio-button"]').click(); cy.get('[formcontrolname="senderNumber"]').should('be.enabled').clear().type('6666666666');
cy.get('[formcontrolname="sid"]').should('have.value', 'test2'); cy.get('[data-e2e="save-sms-settings-button"]').click();
cy.get('[formcontrolname="senderNumber"]').should('have.value', '6666666666'); cy.shouldConfirmSuccess();
}); cy.get('[data-e2e="new-twilio-button"]').click();
cy.get('[formcontrolname="sid"]').should('have.value', 'test2');
cy.get('[formcontrolname="senderNumber"]').should('have.value', '6666666666');
});
it(`should edit SMS provider token`, () => { it(`should edit SMS provider token`, () => {
cy.visit(smsPath); cy.get('h4').contains('Twilio');
cy.get('h4').contains('Twilio'); cy.get('[data-e2e="new-twilio-button"]').click();
cy.get('.state').contains('Active'); cy.get('[data-e2e="edit-sms-token-button"]').click();
cy.get('[data-e2e="new-twilio-button"]').click(); cy.get('[data-e2e="notification-setting-password"]').should('be.enabled').clear().type('newsupertoken');
cy.get('[data-e2e="edit-sms-token-button"]').click(); cy.get('[data-e2e="save-notification-setting-password-button"]').click();
cy.get('[data-e2e="notification-setting-password"]').clear().type('newsupertoken'); cy.shouldConfirmSuccess();
cy.get('[data-e2e="save-notification-setting-password-button"]').click(); });
cy.shouldConfirmSuccess();
});
it(`should remove SMS provider`, () => { it(`should remove SMS provider`, () => {
cy.visit(smsPath); cy.get('h4').contains('Twilio');
cy.get('h4').contains('Twilio'); cy.get('[data-e2e="remove-sms-provider-button"]').click();
cy.get('.state').contains('Active'); cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.get('[data-e2e="remove-sms-provider-button"]').click(); cy.shouldConfirmSuccess();
cy.get('[data-e2e="confirm-dialog-button"]').click(); });
cy.shouldConfirmSuccess();
}); });
}); });
}); });

View File

@ -101,7 +101,7 @@ describe('instance secret generators', () => {
it(`Initialization Mail should update settings`, () => { it(`Initialization Mail should update settings`, () => {
cy.visit(secretGeneratorSettingsPath); cy.visit(secretGeneratorSettingsPath);
cy.wait(1000); cy.wait(1000);
cy.get('input[id="length1"]').clear().type('64'); cy.get('input[id="length1"]').should('be.enabled').clear().type('64');
cy.get('mat-slide-toggle#includeLowerLetters1 button').click(); cy.get('mat-slide-toggle#includeLowerLetters1 button').click();
cy.get('button[id="saveSecretGenerator1"]').click(); cy.get('button[id="saveSecretGenerator1"]').click();
cy.wait(1000); cy.wait(1000);
@ -116,7 +116,7 @@ describe('instance secret generators', () => {
it(`Email verification should update settings`, () => { it(`Email verification should update settings`, () => {
cy.visit(secretGeneratorSettingsPath); cy.visit(secretGeneratorSettingsPath);
cy.wait(1000); cy.wait(1000);
cy.get('input[id="length2"]').clear().type('64'); cy.get('input[id="length2"]').should('be.enabled').clear().type('64');
cy.get('mat-slide-toggle#includeUpperLetters2 button').click(); cy.get('mat-slide-toggle#includeUpperLetters2 button').click();
cy.get('button[id="saveSecretGenerator2"]').click(); cy.get('button[id="saveSecretGenerator2"]').click();
cy.wait(1000); cy.wait(1000);
@ -131,7 +131,7 @@ describe('instance secret generators', () => {
it(`Phone verification should update settings`, () => { it(`Phone verification should update settings`, () => {
cy.visit(secretGeneratorSettingsPath); cy.visit(secretGeneratorSettingsPath);
cy.wait(1000); cy.wait(1000);
cy.get('input[id="expiry3"]').clear().type('10'); cy.get('input[id="expiry3"]').should('be.enabled').clear().type('10');
cy.get('mat-slide-toggle#includeSymbols3 button').click(); cy.get('mat-slide-toggle#includeSymbols3 button').click();
cy.get('button[id="saveSecretGenerator3"]').click(); cy.get('button[id="saveSecretGenerator3"]').click();
cy.wait(1000); cy.wait(1000);
@ -146,7 +146,7 @@ describe('instance secret generators', () => {
it(`Password Reset should update settings`, () => { it(`Password Reset should update settings`, () => {
cy.visit(secretGeneratorSettingsPath); cy.visit(secretGeneratorSettingsPath);
cy.wait(1000); cy.wait(1000);
cy.get('input[id="expiry4"]').clear().type('5'); cy.get('input[id="expiry4"]').should('be.enabled').clear().type('5');
cy.get('mat-slide-toggle#includeDigits4 button').click(); cy.get('mat-slide-toggle#includeDigits4 button').click();
cy.get('button[id="saveSecretGenerator4"]').click(); cy.get('button[id="saveSecretGenerator4"]').click();
cy.wait(1000); cy.wait(1000);
@ -161,7 +161,7 @@ describe('instance secret generators', () => {
it(`Passwordless Initialization should update settings`, () => { it(`Passwordless Initialization should update settings`, () => {
cy.visit(secretGeneratorSettingsPath); cy.visit(secretGeneratorSettingsPath);
cy.wait(1000); cy.wait(1000);
cy.get('input[id="length5"]').clear().type('64'); cy.get('input[id="length5"]').should('be.enabled').clear().type('64');
cy.get('mat-slide-toggle#includeDigits5 button').click(); cy.get('mat-slide-toggle#includeDigits5 button').click();
cy.get('button[id="saveSecretGenerator5"]').click(); cy.get('button[id="saveSecretGenerator5"]').click();
cy.wait(1000); cy.wait(1000);
@ -176,8 +176,8 @@ describe('instance secret generators', () => {
it(`App Secret should update settings`, () => { it(`App Secret should update settings`, () => {
cy.visit(secretGeneratorSettingsPath); cy.visit(secretGeneratorSettingsPath);
cy.wait(1000); cy.wait(1000);
cy.get('input[id="length6"]').clear().type('32'); cy.get('input[id="length6"]').should('be.enabled').clear().type('32');
cy.get('input[id="expiry6"]').clear().type('120'); cy.get('input[id="expiry6"]').should('be.enabled').clear().type('120');
cy.get('mat-slide-toggle#includeUpperLetters6 button').click(); cy.get('mat-slide-toggle#includeUpperLetters6 button').click();
cy.get('button[id="saveSecretGenerator6"]').click(); cy.get('button[id="saveSecretGenerator6"]').click();
cy.wait(1000); cy.wait(1000);
@ -192,7 +192,7 @@ describe('instance secret generators', () => {
it(`One Time Password (OTP) - SMS should update settings`, () => { it(`One Time Password (OTP) - SMS should update settings`, () => {
cy.visit(secretGeneratorSettingsPath); cy.visit(secretGeneratorSettingsPath);
cy.wait(1000); cy.wait(1000);
cy.get('input[id="expiry7"]').clear().type('120'); cy.get('input[id="expiry7"]').should('be.enabled').clear().type('120');
cy.get('mat-slide-toggle#includeLowerLetters7 button').click(); cy.get('mat-slide-toggle#includeLowerLetters7 button').click();
cy.get('button[id="saveSecretGenerator7"]').click(); cy.get('button[id="saveSecretGenerator7"]').click();
cy.wait(1000); cy.wait(1000);
@ -207,8 +207,8 @@ describe('instance secret generators', () => {
it(`One Time Password (OTP) should update settings`, () => { it(`One Time Password (OTP) should update settings`, () => {
cy.visit(secretGeneratorSettingsPath); cy.visit(secretGeneratorSettingsPath);
cy.wait(1000); cy.wait(1000);
cy.get('input[id="length8"]').clear().type('12'); cy.get('input[id="length8"]').should('be.enabled').clear().type('12');
cy.get('input[id="expiry8"]').clear().type('90'); cy.get('input[id="expiry8"]').should('be.enabled').clear().type('90');
cy.get('mat-slide-toggle#includeDigits8 button').click(); cy.get('mat-slide-toggle#includeDigits8 button').click();
cy.get('mat-slide-toggle#includeSymbols8 button').click(); cy.get('mat-slide-toggle#includeSymbols8 button').click();
cy.get('button[id="saveSecretGenerator8"]').click(); cy.get('button[id="saveSecretGenerator8"]').click();

View File

@ -29,9 +29,9 @@ describe('machines', () => {
cy.get('[data-e2e="create-user-button"]').should('be.visible').click(); cy.get('[data-e2e="create-user-button"]').should('be.visible').click();
cy.url().should('contain', 'users/create-machine'); cy.url().should('contain', 'users/create-machine');
//force needed due to the prefilled username prefix //force needed due to the prefilled username prefix
cy.get('[formcontrolname="userName"]').type(machine.addName); cy.get('[formcontrolname="userName"]').should('be.enabled').type(machine.addName);
cy.get('[formcontrolname="name"]').type('e2emachinename'); cy.get('[formcontrolname="name"]').should('be.enabled').type('e2emachinename');
cy.get('[formcontrolname="description"]').type('e2emachinedescription'); cy.get('[formcontrolname="description"]').should('be.enabled').type('e2emachinedescription');
cy.get('[data-e2e="create-button"]').click(); cy.get('[data-e2e="create-button"]').click();
cy.shouldConfirmSuccess(); cy.shouldConfirmSuccess();
let loginName = machine.addName; let loginName = machine.addName;
@ -58,7 +58,7 @@ describe('machines', () => {
it('should delete a machine', () => { it('should delete a machine', () => {
const rowSelector = `tr:contains(${machine.removeName})`; const rowSelector = `tr:contains(${machine.removeName})`;
cy.get(rowSelector).find('[data-e2e="enabled-delete-button"]').click({ force: true }); cy.get(rowSelector).find('[data-e2e="enabled-delete-button"]').click({ force: true });
cy.get('[data-e2e="confirm-dialog-input"]').focus().type(loginName); cy.get('[data-e2e="confirm-dialog-input"]').focus().should('be.enabled').type(loginName);
cy.get('[data-e2e="confirm-dialog-button"]').click(); cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.shouldConfirmSuccess(); cy.shouldConfirmSuccess();
cy.shouldNotExist({ cy.shouldNotExist({

View File

@ -18,7 +18,7 @@ describe('organizations', () => {
describe('add and delete org', () => { describe('add and delete org', () => {
it('should create an org', () => { it('should create an org', () => {
cy.visit(orgsPathCreate); cy.visit(orgsPathCreate);
cy.get('[data-e2e="org-name-input"]').focus().clear().type(newOrg); cy.get('[data-e2e="org-name-input"]').focus().clear().should('be.enabled').type(newOrg);
cy.get('[data-e2e="create-org-button"]').click(); cy.get('[data-e2e="create-org-button"]').click();
cy.contains('tr', newOrg); cy.contains('tr', newOrg);
}); });
@ -30,7 +30,7 @@ describe('organizations', () => {
cy.wait(1000); cy.wait(1000);
cy.get('[data-e2e="actions"]').click(); cy.get('[data-e2e="actions"]').click();
cy.get('[data-e2e="delete"]', { timeout: 1000 }).should('be.visible').click(); cy.get('[data-e2e="delete"]', { timeout: 1000 }).should('be.visible').click();
cy.get('[data-e2e="confirm-dialog-input"]').focus().clear().type(newOrg); cy.get('[data-e2e="confirm-dialog-input"]').focus().clear().should('be.enabled').type(newOrg);
cy.get('[data-e2e="confirm-dialog-button"]').click(); cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.shouldConfirmSuccess(); cy.shouldConfirmSuccess();
cy.contains('tr', newOrg).should('not.exist'); cy.contains('tr', newOrg).should('not.exist');
@ -49,7 +49,7 @@ describe('organizations', () => {
cy.get('[data-e2e="actions"]').click(); cy.get('[data-e2e="actions"]').click();
cy.get('[data-e2e="rename"]', { timeout: 1000 }).should('be.visible').click(); cy.get('[data-e2e="rename"]', { timeout: 1000 }).should('be.visible').click();
cy.get('[data-e2e="name"]').focus().clear().type(testOrgNameChange); cy.get('[data-e2e="name"]').focus().clear().should('be.enabled').type(testOrgNameChange);
cy.get('[data-e2e="dialog-submit"]').click(); cy.get('[data-e2e="dialog-submit"]').click();
cy.shouldConfirmSuccess(); cy.shouldConfirmSuccess();
cy.visit(orgPath); cy.visit(orgPath);

View File

@ -45,7 +45,7 @@ describe('permissions', () => {
it('should add a manager', () => { it('should add a manager', () => {
cy.get('[data-e2e="add-member-button"]').click(); cy.get('[data-e2e="add-member-button"]').click();
cy.get('[data-e2e="add-member-input"]').type(testManagerUsername); cy.get('[data-e2e="add-member-input"]').should('be.enabled').type(testManagerUsername);
cy.get('[data-e2e="user-option"]').first().click(); cy.get('[data-e2e="user-option"]').first().click();
cy.contains('[data-e2e="role-checkbox"]', roles[0]).click(); cy.contains('[data-e2e="role-checkbox"]', roles[0]).click();
cy.get('[data-e2e="confirm-add-member-button"]').click(); cy.get('[data-e2e="confirm-add-member-button"]').click();
@ -174,9 +174,9 @@ describe('permissions', () => {
it('should add a role', () => { it('should add a role', () => {
cy.get('[data-e2e="sidenav-element-roles"]').click(); cy.get('[data-e2e="sidenav-element-roles"]').click();
cy.get('[data-e2e="add-new-role"]').click(); cy.get('[data-e2e="add-new-role"]').click();
cy.get('[formcontrolname="key"]').type(testRoleName); cy.get('[formcontrolname="key"]').should('be.enabled').type(testRoleName);
cy.get('[formcontrolname="displayName"]').type('e2eroleundertestdisplay'); cy.get('[formcontrolname="displayName"]').should('be.enabled').type('e2eroleundertestdisplay');
cy.get('[formcontrolname="group"]').type('e2eroleundertestgroup'); cy.get('[formcontrolname="group"]').should('be.enabled').type('e2eroleundertestgroup');
cy.get('[data-e2e="save-button"]').click(); cy.get('[data-e2e="save-button"]').click();
cy.shouldConfirmSuccess(); cy.shouldConfirmSuccess();
cy.contains('tr', testRoleName); cy.contains('tr', testRoleName);

View File

@ -1,29 +1,29 @@
import { Context } from 'support/commands'; import { Context } from 'support/commands';
import { ensureProjectDoesntExist, ensureProjectExists } from '../../support/api/projects'; import { ensureProjectDoesntExist, ensureProjectExists, ensureRoleExists } from '../../support/api/projects';
import { ensureOrgExists } from 'support/api/orgs'; import { ensureOrgExists } from 'support/api/orgs';
import { ensureProjectGrantDoesntExist, ensureProjectGrantExists } from '../../support/api/grants';
describe('projects', () => { describe('projects', () => {
beforeEach(() => { beforeEach(() => {
cy.context().as('ctx'); cy.context().as('ctx');
}); });
const defaultOrg = 'e2eorgnewdefault'; const foreignOrg = 'e2eorgnewdefault';
const testProjectNameCreate = 'e2eprojectcreate'; const testProjectNameCreate = 'e2eprojectcreate';
const testProjectNameDelete = 'e2eprojectdelete'; const testProjectNameDelete = 'e2eprojectdelete';
const testProjectRole = 'e2eprojectrole';
describe('add project', () => { describe('add project', () => {
beforeEach(`ensure it doesn't exist already`, () => { beforeEach(`ensure it doesn't exist already`, () => {
cy.get<Context>('@ctx').then((ctx) => { cy.get<Context>('@ctx').then((ctx) => {
ensureOrgExists(ctx, defaultOrg).then(() => { ensureProjectDoesntExist(ctx.api, testProjectNameCreate);
ensureProjectDoesntExist(ctx.api, testProjectNameCreate); cy.visit(`/projects`);
cy.visit(`/projects`);
});
}); });
}); });
it('should add a project', () => { it('should add a project', () => {
cy.get('.add-project-button').click({ force: true }); cy.get('.add-project-button').click({ force: true });
cy.get('input').type(testProjectNameCreate); cy.get('input').should('be.enabled').type(testProjectNameCreate);
cy.get('[data-e2e="continue-button"]').click(); cy.get('[data-e2e="continue-button"]').click();
cy.shouldConfirmSuccess(); cy.shouldConfirmSuccess();
}); });
@ -32,41 +32,54 @@ describe('projects', () => {
}); });
describe('create project grant', () => { describe('create project grant', () => {
const testRoleName = 'e2eroleundertestname';
beforeEach('ensure it exists', () => { beforeEach('ensure it exists', () => {
cy.get<Context>('@ctx').then((ctx) => { cy.get<Context>('@ctx').then((ctx) => {
ensureProjectExists(ctx.api, testProjectNameCreate).as('projectId'); ensureProjectExists(ctx.api, testProjectNameCreate).as('projectId');
cy.get<number>('@projectId').then((projectId) => {
cy.visit(`/projects/${projectId}`);
});
}); });
}); });
it('should add a role', () => { it('should add a role', () => {
const testRoleName = 'e2eroleundertestname';
cy.get<number>('@projectId').then((projectId) => {
cy.visit(`/projects/${projectId}`);
});
cy.get('[data-e2e="sidenav-element-roles"]').click(); cy.get('[data-e2e="sidenav-element-roles"]').click();
cy.get('[data-e2e="add-new-role"]').click(); cy.get('[data-e2e="add-new-role"]').click();
cy.get('[formcontrolname="key"]').should('be.enabled').type(testRoleName); cy.get('[data-e2e="role-key-input"]').should('be.enabled').type(testRoleName);
cy.get('[formcontrolname="displayName"]').type('e2eroleundertestdisplay'); cy.get('[formcontrolname="displayName"]').should('be.enabled').type('e2eroleundertestdisplay');
cy.get('[formcontrolname="group"]').type('e2eroleundertestgroup'); cy.get('[formcontrolname="group"]').should('be.enabled').type('e2eroleundertestgroup');
cy.get('[data-e2e="save-button"]').click(); cy.get('[data-e2e="save-button"]').click();
cy.shouldConfirmSuccess(); cy.shouldConfirmSuccess();
cy.contains('tr', testRoleName); cy.contains('tr', testRoleName);
}); });
it('should add a project grant', () => { describe('with existing role, without project grant', () => {
const rowSelector = `tr:contains(${testRoleName})`; beforeEach(() => {
cy.get<Context>('@ctx').then((ctx) => {
cy.get<number>('@projectId').then((projectId) => {
ensureOrgExists(ctx, foreignOrg).then((foreignOrgID) => {
ensureRoleExists(ctx.api, projectId, testProjectRole);
ensureProjectGrantDoesntExist(ctx, projectId, foreignOrgID);
cy.visit(`/projects/${projectId}`);
});
});
});
});
cy.get('[data-e2e="sidenav-element-projectgrants"]').click(); it('should add a project grant', () => {
cy.get('[data-e2e="create-project-grant-button"]').click(); const rowSelector = `tr:contains(${testProjectRole})`;
cy.get('[data-e2e="add-org-input"]').type(defaultOrg);
cy.get('mat-option').contains(defaultOrg).click(); cy.get('[data-e2e="sidenav-element-projectgrants"]').click();
cy.get('button').should('be.enabled'); cy.get('[data-e2e="create-project-grant-button"]').click();
cy.get('[data-e2e="project-grant-continue"]').first().click(); cy.get('[data-e2e="add-org-input"]').should('be.enabled').type(foreignOrg);
cy.get(rowSelector).find('input').click({ force: true }); cy.get('mat-option').contains(foreignOrg).click();
cy.get('[data-e2e="save-project-grant-button"]').click(); cy.get('button').should('be.enabled');
cy.contains('tr', defaultOrg); cy.get('[data-e2e="project-grant-continue"]').first().click();
cy.contains('tr', testRoleName); cy.get(rowSelector).find('input').click({ force: true });
cy.get('[data-e2e="save-project-grant-button"]').click();
cy.contains('tr', foreignOrg);
cy.contains('tr', testProjectRole);
});
}); });
}); });
@ -84,7 +97,7 @@ describe('projects', () => {
cy.get('[data-e2e="toggle-grid"]').click(); cy.get('[data-e2e="toggle-grid"]').click();
cy.get('[data-e2e="timestamp"]'); cy.get('[data-e2e="timestamp"]');
cy.get(rowSelector).find('[data-e2e="delete-project-button"]').click({ force: true }); cy.get(rowSelector).find('[data-e2e="delete-project-button"]').click({ force: true });
cy.get('[data-e2e="confirm-dialog-input"]').focus().type(testProjectNameDelete); cy.get('[data-e2e="confirm-dialog-input"]').focus().should('be.enabled').type(testProjectNameDelete);
cy.get('[data-e2e="confirm-dialog-button"]').click(); cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.shouldConfirmSuccess(); cy.shouldConfirmSuccess();
cy.shouldNotExist({ cy.shouldNotExist({
@ -96,7 +109,7 @@ describe('projects', () => {
it('removes the project from grid view', () => { it('removes the project from grid view', () => {
const cardSelector = `[data-e2e="grid-card"]:contains(${testProjectNameDelete})`; const cardSelector = `[data-e2e="grid-card"]:contains(${testProjectNameDelete})`;
cy.get(cardSelector).find('[data-e2e="delete-project-button"]').click({ force: true }); cy.get(cardSelector).find('[data-e2e="delete-project-button"]').click({ force: true });
cy.get('[data-e2e="confirm-dialog-input"]').focus().type(testProjectNameDelete); cy.get('[data-e2e="confirm-dialog-input"]').focus().should('be.enabled').type(testProjectNameDelete);
cy.get('[data-e2e="confirm-dialog-button"]').click(); cy.get('[data-e2e="confirm-dialog-button"]').click();
cy.shouldConfirmSuccess(); cy.shouldConfirmSuccess();
cy.shouldNotExist({ cy.shouldNotExist({

View File

@ -17,7 +17,6 @@ describe('external link settings', () => {
}); });
describe('instance', () => { describe('instance', () => {
beforeEach(`visit`, () => { beforeEach(`visit`, () => {
cy.visit(`/instance?id=privacypolicy`); cy.visit(`/instance?id=privacypolicy`);
}); });
@ -94,5 +93,4 @@ describe('external link settings', () => {
cy.get('[formcontrolname="docsLink"]').should('value', docsLink); cy.get('[formcontrolname="docsLink"]').should('value', docsLink);
}); });
}); });
}) });

View File

@ -22,15 +22,25 @@ describe('oidc settings', () => {
}); });
it(`should update oidc settings`, () => { it(`should update oidc settings`, () => {
cy.get('[formcontrolname="accessTokenLifetime"]').should('value', accessTokenPrecondition).clear().type('2'); cy.get('[formcontrolname="accessTokenLifetime"]')
cy.get('[formcontrolname="idTokenLifetime"]').should('value', idTokenPrecondition).clear().type('24'); .should('value', accessTokenPrecondition)
.clear()
.should('be.enabled')
.type('2');
cy.get('[formcontrolname="idTokenLifetime"]')
.should('value', idTokenPrecondition)
.clear()
.should('be.enabled')
.type('24');
cy.get('[formcontrolname="refreshTokenExpiration"]') cy.get('[formcontrolname="refreshTokenExpiration"]')
.should('value', refreshTokenExpirationPrecondition) .should('value', refreshTokenExpirationPrecondition)
.clear() .clear()
.should('be.enabled')
.type('30'); .type('30');
cy.get('[formcontrolname="refreshTokenIdleExpiration"]') cy.get('[formcontrolname="refreshTokenIdleExpiration"]')
.should('value', refreshTokenIdleExpirationPrecondition) .should('value', refreshTokenIdleExpirationPrecondition)
.clear() .clear()
.should('be.enabled')
.type('7'); .type('7');
cy.get('[data-e2e="save-button"]').click(); cy.get('[data-e2e="save-button"]').click();
cy.shouldConfirmSuccess(); cy.shouldConfirmSuccess();

View File

@ -1,6 +1,7 @@
import { Context } from 'support/commands'; import { Context } from 'support/commands';
import { ensureItemExists } from './ensure'; import { ensureItemDoesntExist, ensureItemExists } from './ensure';
import { getOrgUnderTest } from './orgs'; import { getOrgUnderTest } from './orgs';
import { API, Entity } from './types';
export function ensureProjectGrantExists(ctx: Context, foreignOrgId: string, foreignProjectId: string) { export function ensureProjectGrantExists(ctx: Context, foreignOrgId: string, foreignProjectId: string) {
return getOrgUnderTest(ctx).then((orgUnderTest) => { return getOrgUnderTest(ctx).then((orgUnderTest) => {
@ -16,3 +17,16 @@ export function ensureProjectGrantExists(ctx: Context, foreignOrgId: string, for
); );
}); });
} }
export function ensureProjectGrantDoesntExist(ctx: Context, projectId: number, foreignOrgId: string) {
return getOrgUnderTest(ctx).then((orgUnderTest) => {
console.log('removing grant to foreignOrgId', foreignOrgId, 'in orgUnderTest', orgUnderTest, 'projectId', projectId);
return ensureItemDoesntExist(
ctx.api,
`${ctx.api.mgmtBaseURL}/projectgrants/_search`,
(grant: any) => grant.grantedOrgId == foreignOrgId && grant.projectId == projectId,
(grant: any) => `${ctx.api.mgmtBaseURL}/projects/${projectId}/grants/${grant.grantId}`,
orgUnderTest.toString(),
);
});
}

View File

@ -23,7 +23,11 @@ export function ensureProjectDoesntExist(api: API, projectName: string, orgId?:
} }
class ResourceType { class ResourceType {
constructor(public resourcePath: string, public compareProperty: string, public identifierProperty: string) {} constructor(
public resourcePath: string,
public compareProperty: string,
public identifierProperty: string,
) {}
} }
export const Apps = new ResourceType('apps', 'name', 'id'); export const Apps = new ResourceType('apps', 'name', 'id');
@ -47,19 +51,16 @@ export function ensureProjectResourceDoesntExist(
); );
} }
export function ensureApplicationExists(api: API, projectId: number, appName: string) { export function ensureRoleExists(api: API, projectId: number, roleName: string) {
return ensureItemExists( return ensureItemExists(
api, api,
`${api.mgmtBaseURL}/projects/${projectId}/${Apps.resourcePath}/_search`, `${api.mgmtBaseURL}/projects/${projectId}/${Roles.resourcePath}/_search`,
(resource: any) => resource.name === appName, (resource: any) => resource.key === roleName,
`${api.mgmtBaseURL}/projects/${projectId}/${Apps.resourcePath}/oidc`, `${api.mgmtBaseURL}/projects/${projectId}/${Roles.resourcePath}`,
{ {
name: appName, name: roleName,
redirectUris: ['https://e2eredirecturl.org'], roleKey: roleName,
responseTypes: ['OIDC_RESPONSE_TYPE_CODE'], displayName: roleName,
grantTypes: ['OIDC_GRANT_TYPE_AUTHORIZATION_CODE'],
authMethodType: 'OIDC_AUTH_METHOD_TYPE_NONE',
postLogoutRedirectUris: ['https://e2elogoutredirecturl.org'],
}, },
); );
} }

View File

@ -0,0 +1,28 @@
import { ensureItemDoesntExist, ensureItemExists } from './ensure';
import { API, Entity } from './types';
import { ensureSMTPProviderExists } from './smtp';
export function ensureSMSProviderExists(api: API) {
// remove and create
ensureSMSProviderDoesntExist(api);
return ensureItemExists(
api,
`${api.adminBaseURL}/sms/_search`,
({ twilio: { sid: foundSid } }: any) => foundSid === 'initial-sid',
`${api.adminBaseURL}/sms/twilio`,
{
sid: 'initial-sid',
senderNumber: 'initial-senderNumber',
token: 'initial-token',
},
);
}
export function ensureSMSProviderDoesntExist(api: API) {
return ensureItemDoesntExist(
api,
`${api.adminBaseURL}/sms/_search`,
(provider: any) => !!provider,
(provider) => `${api.adminBaseURL}/sms/${provider.id}`,
);
}

View File

@ -0,0 +1,32 @@
import { ensureItemDoesntExist, ensureItemExists } from './ensure';
import { API, Entity } from './types';
export function ensureSMTPProviderExists(api: API, providerDescription: string) {
return ensureItemExists(
api,
`${api.adminBaseURL}/smtp/_search`,
(provider: any) => {
return provider.description === providerDescription;
},
`${api.adminBaseURL}/smtp`,
{
name: providerDescription,
description: providerDescription,
senderAddress: 'a@sender.com',
senderName: 'A Sender',
host: 'smtp.host.com:587',
user: 'smtpuser',
},
);
}
export function activateSMTPProvider(api: API, providerId: string) {
return cy.request({
method: 'POST',
url: `${api.adminBaseURL}/smtp/${providerId}/_activate`,
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${api.token}`,
},
});
}

View File

@ -17,18 +17,18 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@types/pg": "^8.6.6", "@types/pg": "^8.11.6",
"cypress-wait-until": "^1.7.2", "cypress-wait-until": "^3.0.2",
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^9.0.2",
"mochawesome": "^7.1.3", "mochawesome": "^7.1.3",
"pg": "^8.8.0", "pg": "^8.12.0",
"prettier": "^2.7.1", "prettier": "^3.3.3",
"typescript": "^4.8.4", "typescript": "^5.5.4",
"uuid": "^9.0.0", "uuid": "^10.0.0",
"wait-on": "^7.2.0" "wait-on": "^7.2.0"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^18.8.3", "@types/node": "^22.3.0",
"cypress": "^13.3.1" "cypress": "^13.13.3"
} }
} }

View File

@ -7,7 +7,7 @@
resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
"@cypress/request@^3.0.0": "@cypress/request@^3.0.1":
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.1.tgz#72d7d5425236a2413bd3d8bb66d02d9dc3168960" resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.1.tgz#72d7d5425236a2413bd3d8bb66d02d9dc3168960"
integrity sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ== integrity sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==
@ -68,20 +68,17 @@
resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df"
integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
"@types/node@*": "@types/node@*", "@types/node@^22.3.0":
version "20.7.0" version "22.3.0"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.0.tgz#c03de4572f114a940bc2ca909a33ddb2b925e470" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.3.0.tgz#7f8da0e2b72c27c4f9bd3cb5ef805209d04d4f9e"
integrity sha512-zI22/pJW2wUZOVyguFaUL1HABdmSVxpXrzIqkjsHmyUjNhPoWM1CKfvVuXfetHhIok4RY573cqS0mZ1SJEnoTg== integrity sha512-nrWpWVaDZuaVc5X84xJ0vNrLvomM205oQyLsRt7OHNZbSHslcWsvgFR7O7hire2ZonjLrWBbedmotmIlJDVd6g==
dependencies:
undici-types "~6.18.2"
"@types/node@^18.8.3": "@types/pg@^8.11.6":
version "18.18.0" version "8.11.6"
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.0.tgz#bd19d5133a6e5e2d0152ec079ac27c120e7f1763" resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.11.6.tgz#a2d0fb0a14b53951a17df5197401569fb9c0c54b"
integrity sha512-3xA4X31gHT1F1l38ATDIL9GpRLdwVhnEFC8Uikv5ZLlXATwrCYyPq7ZWHxzxc3J/30SUiwiYT+bQe0/XvKlWbw== integrity sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==
"@types/pg@^8.6.6":
version "8.10.3"
resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.10.3.tgz#39b3acba4f313a65c8fbb4b241fcb21cc1ba4126"
integrity sha512-BACzsw64lCZesclRpZGu55tnqgFAYcrCBP92xLh1KLypZLCOsvJTSTgaoFVTy3lCys/aZTQzfeDxtjwrvdzL2g==
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
pg-protocol "*" pg-protocol "*"
@ -93,14 +90,14 @@
integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==
"@types/sizzle@^2.3.2": "@types/sizzle@^2.3.2":
version "2.3.4" version "2.3.8"
resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.4.tgz#cd6531924f60834fa4a1b8081f9eecf9bb1117f0" resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.8.tgz#518609aefb797da19bf222feb199e8f653ff7627"
integrity sha512-jA2llq2zNkg8HrALI7DtWzhALcVH0l7i89yhY3iBdOz6cBPeACoFq+fkQrjHA39t1hnSFOboZ7A/AY5MMZSlag== integrity sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==
"@types/yauzl@^2.9.1": "@types/yauzl@^2.9.1":
version "2.10.1" version "2.10.3"
resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.1.tgz#4e8f299f0934d60f36c74f59cb5a8483fd786691" resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999"
integrity sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw== integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
@ -159,9 +156,9 @@ astral-regex@^2.0.0:
integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
async@^3.2.0: async@^3.2.0:
version "3.2.4" version "3.2.5"
resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66"
integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==
asynckit@^0.4.0: asynckit@^0.4.0:
version "0.4.0" version "0.4.0"
@ -179,24 +176,19 @@ aws-sign2@~0.7.0:
integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==
aws4@^1.8.0: aws4@^1.8.0:
version "1.12.0" version "1.13.1"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.1.tgz#bb5f8b8a20739f6ae1caeaf7eea2c7913df8048e"
integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== integrity sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==
axios@^1.6.1: axios@^1.6.1:
version "1.6.8" version "1.7.4"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.4.tgz#4c8ded1b43683c8dd362973c393f3ede24052aa2"
integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== integrity sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==
dependencies: dependencies:
follow-redirects "^1.15.6" follow-redirects "^1.15.6"
form-data "^4.0.0" form-data "^4.0.0"
proxy-from-env "^1.1.0" proxy-from-env "^1.1.0"
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
base64-js@^1.3.1: base64-js@^1.3.1:
version "1.5.1" version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
@ -219,14 +211,6 @@ bluebird@^3.7.2:
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
buffer-crc32@~0.2.3: buffer-crc32@~0.2.3:
version "0.2.13" version "0.2.13"
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
@ -237,11 +221,6 @@ buffer-equal-constant-time@1.0.1:
resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==
buffer-writer@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04"
integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==
buffer@^5.7.1: buffer@^5.7.1:
version "5.7.1" version "5.7.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
@ -255,13 +234,16 @@ cachedir@^2.3.0:
resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d" resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d"
integrity sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ== integrity sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==
call-bind@^1.0.0: call-bind@^1.0.7:
version "1.0.2" version "1.0.7"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
dependencies: dependencies:
function-bind "^1.1.1" es-define-property "^1.0.0"
get-intrinsic "^1.0.2" es-errors "^1.3.0"
function-bind "^1.1.2"
get-intrinsic "^1.2.4"
set-function-length "^1.2.1"
caseless@~0.12.0: caseless@~0.12.0:
version "0.12.0" version "0.12.0"
@ -282,9 +264,9 @@ check-more-types@^2.24.0:
integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==
ci-info@^3.2.0: ci-info@^3.2.0:
version "3.8.0" version "3.9.0"
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
clean-stack@^2.0.0: clean-stack@^2.0.0:
version "2.2.0" version "2.2.0"
@ -299,9 +281,9 @@ cli-cursor@^3.1.0:
restore-cursor "^3.1.0" restore-cursor "^3.1.0"
cli-table3@~0.6.1: cli-table3@~0.6.1:
version "0.6.3" version "0.6.5"
resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.5.tgz#013b91351762739c16a9567c21a04632e449bf2f"
integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== integrity sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==
dependencies: dependencies:
string-width "^4.2.0" string-width "^4.2.0"
optionalDependencies: optionalDependencies:
@ -358,11 +340,6 @@ common-tags@^1.8.0:
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6"
integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
core-util-is@1.0.2: core-util-is@1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@ -377,17 +354,17 @@ cross-spawn@^7.0.0:
shebang-command "^2.0.0" shebang-command "^2.0.0"
which "^2.0.1" which "^2.0.1"
cypress-wait-until@^1.7.2: cypress-wait-until@^3.0.2:
version "1.7.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/cypress-wait-until/-/cypress-wait-until-1.7.2.tgz#7f534dd5a11c89b65359e7a0210f20d3dfc22107" resolved "https://registry.yarnpkg.com/cypress-wait-until/-/cypress-wait-until-3.0.2.tgz#c90dddfa4c46a2c422f5b91d486531c560bae46e"
integrity sha512-uZ+M8/MqRcpf+FII/UZrU7g1qYZ4aVlHcgyVopnladyoBrpoaMJ4PKZDrdOJ05H5RHbr7s9Tid635X3E+ZLU/Q== integrity sha512-iemies796dD5CgjG5kV0MnpEmKSH+s7O83ZoJLVzuVbZmm4lheMsZqAVT73hlMx4QlkwhxbyUzhOBUOZwoOe0w==
cypress@^13.3.1: cypress@^13.13.3:
version "13.7.2" version "13.13.3"
resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.7.2.tgz#61e841382abb20e0a9a063086ee0d850af3ef6bc" resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.13.3.tgz#21ee054bb4e00b3858f2e33b4f8f4e69128470a9"
integrity sha512-FF5hFI5wlRIHY8urLZjJjj/YvfCBrRpglbZCLr/cYcL9MdDe0+5usa8kTIrDHthlEc9lwihbkb5dmwqBDNS2yw== integrity sha512-hUxPrdbJXhUOTzuML+y9Av7CKoYznbD83pt8g3klgpioEha0emfx4WNIuVRx0C76r0xV2MIwAW9WYiXfVJYFQw==
dependencies: dependencies:
"@cypress/request" "^3.0.0" "@cypress/request" "^3.0.1"
"@cypress/xvfb" "^1.2.4" "@cypress/xvfb" "^1.2.4"
"@types/sinonjs__fake-timers" "8.1.1" "@types/sinonjs__fake-timers" "8.1.1"
"@types/sizzle" "^2.3.2" "@types/sizzle" "^2.3.2"
@ -426,7 +403,7 @@ cypress@^13.3.1:
request-progress "^3.0.0" request-progress "^3.0.0"
semver "^7.5.3" semver "^7.5.3"
supports-color "^8.1.1" supports-color "^8.1.1"
tmp "~0.2.1" tmp "~0.2.3"
untildify "^4.0.0" untildify "^4.0.0"
yauzl "^2.10.0" yauzl "^2.10.0"
@ -443,9 +420,9 @@ dateformat@^4.5.1:
integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==
dayjs@^1.10.4: dayjs@^1.10.4:
version "1.11.10" version "1.11.12"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.12.tgz#5245226cc7f40a15bf52e0b99fd2a04669ccac1d"
integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== integrity sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==
debug@^3.1.0: debug@^3.1.0:
version "3.2.7" version "3.2.7"
@ -455,21 +432,30 @@ debug@^3.1.0:
ms "^2.1.1" ms "^2.1.1"
debug@^4.1.1, debug@^4.3.4: debug@^4.1.1, debug@^4.3.4:
version "4.3.4" version "4.3.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==
dependencies: dependencies:
ms "2.1.2" ms "2.1.2"
define-data-property@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
dependencies:
es-define-property "^1.0.0"
es-errors "^1.3.0"
gopd "^1.0.1"
delayed-stream@~1.0.0: delayed-stream@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
diff@^5.0.0: diff@^5.0.0:
version "5.1.0" version "5.2.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531"
integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
ecc-jsbn@~0.1.1: ecc-jsbn@~0.1.1:
version "0.1.2" version "0.1.2"
@ -506,10 +492,22 @@ enquirer@^2.3.6:
ansi-colors "^4.1.1" ansi-colors "^4.1.1"
strip-ansi "^6.0.1" strip-ansi "^6.0.1"
es-define-property@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
dependencies:
get-intrinsic "^1.2.4"
es-errors@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
escalade@^3.1.1: escalade@^3.1.1:
version "3.1.1" version "3.1.2"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
escape-html@^1.0.3: escape-html@^1.0.3:
version "1.0.3" version "1.0.3"
@ -635,35 +633,31 @@ fs-extra@^9.1.0:
jsonfile "^6.0.1" jsonfile "^6.0.1"
universalify "^2.0.0" universalify "^2.0.0"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
fsu@^1.1.1: fsu@^1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/fsu/-/fsu-1.1.1.tgz#bd36d3579907c59d85b257a75b836aa9e0c31834" resolved "https://registry.yarnpkg.com/fsu/-/fsu-1.1.1.tgz#bd36d3579907c59d85b257a75b836aa9e0c31834"
integrity sha512-xQVsnjJ/5pQtcKh+KjUoZGzVWn4uNkchxTF6Lwjr4Gf7nQr8fmUfhKJ62zE77+xQg9xnxi5KUps7XGs+VC986A== integrity sha512-xQVsnjJ/5pQtcKh+KjUoZGzVWn4uNkchxTF6Lwjr4Gf7nQr8fmUfhKJ62zE77+xQg9xnxi5KUps7XGs+VC986A==
function-bind@^1.1.1: function-bind@^1.1.2:
version "1.1.1" version "1.1.2"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
get-caller-file@^2.0.5: get-caller-file@^2.0.5:
version "2.0.5" version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
get-intrinsic@^1.0.2: get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
version "1.2.1" version "1.2.4"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
dependencies: dependencies:
function-bind "^1.1.1" es-errors "^1.3.0"
has "^1.0.3" function-bind "^1.1.2"
has-proto "^1.0.1" has-proto "^1.0.1"
has-symbols "^1.0.3" has-symbols "^1.0.3"
hasown "^2.0.0"
get-stream@^5.0.0, get-stream@^5.1.0: get-stream@^5.0.0, get-stream@^5.1.0:
version "5.2.0" version "5.2.0"
@ -686,18 +680,6 @@ getpass@^0.1.1:
dependencies: dependencies:
assert-plus "^1.0.0" assert-plus "^1.0.0"
glob@^7.1.3:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
global-dirs@^3.0.0: global-dirs@^3.0.0:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485"
@ -705,6 +687,13 @@ global-dirs@^3.0.0:
dependencies: dependencies:
ini "2.0.0" ini "2.0.0"
gopd@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
dependencies:
get-intrinsic "^1.1.3"
graceful-fs@^4.1.6, graceful-fs@^4.2.0: graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.11" version "4.2.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
@ -715,22 +704,29 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
has-property-descriptors@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
dependencies:
es-define-property "^1.0.0"
has-proto@^1.0.1: has-proto@^1.0.1:
version "1.0.1" version "1.0.3"
resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
has-symbols@^1.0.3: has-symbols@^1.0.3:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
has@^1.0.3: hasown@^2.0.0:
version "1.0.3" version "2.0.2"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
dependencies: dependencies:
function-bind "^1.1.1" function-bind "^1.1.2"
http-signature@~1.3.6: http-signature@~1.3.6:
version "1.3.6" version "1.3.6"
@ -756,19 +752,6 @@ indent-string@^4.0.0:
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
ini@2.0.0: ini@2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
@ -825,9 +808,9 @@ isstream@~0.1.2:
integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
joi@^17.11.0: joi@^17.11.0:
version "17.12.3" version "17.13.3"
resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.3.tgz#944646979cd3b460178547b12ba37aca8482f63d" resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec"
integrity sha512-2RRziagf555owrm9IRVtdKynOBeITiDpuZqIpgwqXShPncPKNiRQoiGsl/T8SQdq+8ugRzH2LqY67irr2y/d+g== integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==
dependencies: dependencies:
"@hapi/hoek" "^9.3.0" "@hapi/hoek" "^9.3.0"
"@hapi/topo" "^5.1.0" "@hapi/topo" "^5.1.0"
@ -864,10 +847,10 @@ jsonfile@^6.0.1:
optionalDependencies: optionalDependencies:
graceful-fs "^4.1.6" graceful-fs "^4.1.6"
jsonwebtoken@^8.5.1: jsonwebtoken@^9.0.2:
version "8.5.1" version "9.0.2"
resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#65ff91f4abef1784697d40952bb1998c504caaf3"
integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==
dependencies: dependencies:
jws "^3.2.2" jws "^3.2.2"
lodash.includes "^4.3.0" lodash.includes "^4.3.0"
@ -878,7 +861,7 @@ jsonwebtoken@^8.5.1:
lodash.isstring "^4.0.1" lodash.isstring "^4.0.1"
lodash.once "^4.0.0" lodash.once "^4.0.0"
ms "^2.1.1" ms "^2.1.1"
semver "^5.6.0" semver "^7.5.4"
jsprim@^2.0.2: jsprim@^2.0.2:
version "2.0.2" version "2.0.2"
@ -1006,13 +989,6 @@ loose-envify@^1.4.0:
dependencies: dependencies:
js-tokens "^3.0.0 || ^4.0.0" js-tokens "^3.0.0 || ^4.0.0"
lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
dependencies:
yallist "^4.0.0"
merge-stream@^2.0.0: merge-stream@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@ -1035,13 +1011,6 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
minimatch@^3.1.1:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
minimist@^1.2.8: minimist@^1.2.8:
version "1.2.8" version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
@ -1103,17 +1072,17 @@ object-assign@^4.1.1:
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
object-inspect@^1.9.0: object-inspect@^1.13.1:
version "1.12.3" version "1.13.2"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff"
integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==
obuf@~1.1.2: obuf@~1.1.2:
version "1.1.2" version "1.1.2"
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
once@^1.3.0, once@^1.3.1, once@^1.4.0: once@^1.3.1, once@^1.4.0:
version "1.4.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
@ -1144,16 +1113,6 @@ p-map@^4.0.0:
dependencies: dependencies:
aggregate-error "^3.0.0" aggregate-error "^3.0.0"
packet-reader@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74"
integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
path-key@^3.0.0, path-key@^3.1.0: path-key@^3.0.0, path-key@^3.1.0:
version "3.1.1" version "3.1.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
@ -1174,10 +1133,10 @@ pg-cloudflare@^1.1.1:
resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98" resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98"
integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==
pg-connection-string@^2.6.2: pg-connection-string@^2.6.4:
version "2.6.2" version "2.6.4"
resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.2.tgz#713d82053de4e2bd166fab70cd4f26ad36aab475" resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.4.tgz#f543862adfa49fa4e14bc8a8892d2a84d754246d"
integrity sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA== integrity sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==
pg-int8@1.0.1: pg-int8@1.0.1:
version "1.0.1" version "1.0.1"
@ -1189,15 +1148,15 @@ pg-numeric@1.0.2:
resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a" resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a"
integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw== integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==
pg-pool@^3.6.1: pg-pool@^3.6.2:
version "3.6.1" version "3.6.2"
resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.1.tgz#5a902eda79a8d7e3c928b77abf776b3cb7d351f7" resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.2.tgz#3a592370b8ae3f02a7c8130d245bc02fa2c5f3f2"
integrity sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og== integrity sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==
pg-protocol@*, pg-protocol@^1.6.0: pg-protocol@*, pg-protocol@^1.6.1:
version "1.6.0" version "1.6.1"
resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833" resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.1.tgz#21333e6d83b01faaebfe7a33a7ad6bfd9ed38cb3"
integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q== integrity sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==
pg-types@^2.1.0: pg-types@^2.1.0:
version "2.2.0" version "2.2.0"
@ -1211,28 +1170,26 @@ pg-types@^2.1.0:
postgres-interval "^1.1.0" postgres-interval "^1.1.0"
pg-types@^4.0.1: pg-types@^4.0.1:
version "4.0.1" version "4.0.2"
resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.1.tgz#31857e89d00a6c66b06a14e907c3deec03889542" resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.2.tgz#399209a57c326f162461faa870145bb0f918b76d"
integrity sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g== integrity sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==
dependencies: dependencies:
pg-int8 "1.0.1" pg-int8 "1.0.1"
pg-numeric "1.0.2" pg-numeric "1.0.2"
postgres-array "~3.0.1" postgres-array "~3.0.1"
postgres-bytea "~3.0.0" postgres-bytea "~3.0.0"
postgres-date "~2.0.1" postgres-date "~2.1.0"
postgres-interval "^3.0.0" postgres-interval "^3.0.0"
postgres-range "^1.1.1" postgres-range "^1.1.1"
pg@^8.8.0: pg@^8.12.0:
version "8.11.3" version "8.12.0"
resolved "https://registry.yarnpkg.com/pg/-/pg-8.11.3.tgz#d7db6e3fe268fcedd65b8e4599cda0b8b4bf76cb" resolved "https://registry.yarnpkg.com/pg/-/pg-8.12.0.tgz#9341724db571022490b657908f65aee8db91df79"
integrity sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g== integrity sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==
dependencies: dependencies:
buffer-writer "2.0.0" pg-connection-string "^2.6.4"
packet-reader "1.0.0" pg-pool "^3.6.2"
pg-connection-string "^2.6.2" pg-protocol "^1.6.1"
pg-pool "^3.6.1"
pg-protocol "^1.6.0"
pg-types "^2.1.0" pg-types "^2.1.0"
pgpass "1.x" pgpass "1.x"
optionalDependencies: optionalDependencies:
@ -1277,10 +1234,10 @@ postgres-date@~1.0.4:
resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8"
integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==
postgres-date@~2.0.1: postgres-date@~2.1.0:
version "2.0.1" version "2.1.0"
resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.0.1.tgz#638b62e5c33764c292d37b08f5257ecb09231457" resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.1.0.tgz#b85d3c1fb6fb3c6c8db1e9942a13a3bf625189d0"
integrity sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw== integrity sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==
postgres-interval@^1.1.0: postgres-interval@^1.1.0:
version "1.2.0" version "1.2.0"
@ -1295,14 +1252,14 @@ postgres-interval@^3.0.0:
integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw== integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==
postgres-range@^1.1.1: postgres-range@^1.1.1:
version "1.1.3" version "1.1.4"
resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.3.tgz#9ccd7b01ca2789eb3c2e0888b3184225fa859f76" resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.4.tgz#a59c5f9520909bcec5e63e8cf913a92e4c952863"
integrity sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g== integrity sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==
prettier@^2.7.1: prettier@^3.3.3:
version "2.8.8" version "3.3.3"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105"
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==
pretty-bytes@^5.6.0: pretty-bytes@^5.6.0:
version "5.6.0" version "5.6.0"
@ -1347,9 +1304,9 @@ pump@^3.0.0:
once "^1.3.1" once "^1.3.1"
punycode@^2.1.1: punycode@^2.1.1:
version "2.3.0" version "2.3.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
qs@6.10.4: qs@6.10.4:
version "6.10.4" version "6.10.4"
@ -1394,16 +1351,9 @@ restore-cursor@^3.1.0:
signal-exit "^3.0.2" signal-exit "^3.0.2"
rfdc@^1.3.0: rfdc@^1.3.0:
version "1.3.0" version "1.4.1"
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca"
integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==
rimraf@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
rxjs@^7.5.1, rxjs@^7.8.1: rxjs@^7.5.1, rxjs@^7.8.1:
version "7.8.1" version "7.8.1"
@ -1422,17 +1372,22 @@ safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
semver@^5.6.0: semver@^7.5.3, semver@^7.5.4:
version "5.7.2" version "7.6.3"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
semver@^7.5.3: set-function-length@^1.2.1:
version "7.5.4" version "1.2.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
dependencies: dependencies:
lru-cache "^6.0.0" define-data-property "^1.1.4"
es-errors "^1.3.0"
function-bind "^1.1.2"
get-intrinsic "^1.2.4"
gopd "^1.0.1"
has-property-descriptors "^1.0.2"
shebang-command@^2.0.0: shebang-command@^2.0.0:
version "2.0.0" version "2.0.0"
@ -1447,13 +1402,14 @@ shebang-regex@^3.0.0:
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
side-channel@^1.0.4: side-channel@^1.0.4:
version "1.0.4" version "1.0.6"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
dependencies: dependencies:
call-bind "^1.0.0" call-bind "^1.0.7"
get-intrinsic "^1.0.2" es-errors "^1.3.0"
object-inspect "^1.9.0" get-intrinsic "^1.2.4"
object-inspect "^1.13.1"
signal-exit@^3.0.2: signal-exit@^3.0.2:
version "3.0.7" version "3.0.7"
@ -1484,9 +1440,9 @@ split2@^4.1.0:
integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==
sshpk@^1.14.1: sshpk@^1.14.1:
version "1.17.0" version "1.18.0"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028"
integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==
dependencies: dependencies:
asn1 "~0.2.3" asn1 "~0.2.3"
assert-plus "^1.0.0" assert-plus "^1.0.0"
@ -1546,26 +1502,24 @@ tcomb@^3.0.0, tcomb@^3.2.17:
integrity sha512-di2Hd1DB2Zfw6StGv861JoAF5h/uQVu/QJp2g8KVbtfKnoHdBQl5M32YWq6mnSYBQ1vFFrns5B1haWJL7rKaOQ== integrity sha512-di2Hd1DB2Zfw6StGv861JoAF5h/uQVu/QJp2g8KVbtfKnoHdBQl5M32YWq6mnSYBQ1vFFrns5B1haWJL7rKaOQ==
throttleit@^1.0.0: throttleit@^1.0.0:
version "1.0.0" version "1.0.1"
resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.1.tgz#304ec51631c3b770c65c6c6f76938b384000f4d5"
integrity sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g== integrity sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==
through@^2.3.8: through@^2.3.8:
version "2.3.8" version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
tmp@~0.2.1: tmp@~0.2.3:
version "0.2.1" version "0.2.3"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae"
integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==
dependencies:
rimraf "^3.0.0"
tough-cookie@^4.1.3: tough-cookie@^4.1.3:
version "4.1.3" version "4.1.4"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36"
integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==
dependencies: dependencies:
psl "^1.1.33" psl "^1.1.33"
punycode "^2.1.1" punycode "^2.1.1"
@ -1573,9 +1527,9 @@ tough-cookie@^4.1.3:
url-parse "^1.5.3" url-parse "^1.5.3"
tslib@^2.1.0: tslib@^2.1.0:
version "2.6.2" version "2.6.3"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
tunnel-agent@^0.6.0: tunnel-agent@^0.6.0:
version "0.6.0" version "0.6.0"
@ -1594,10 +1548,15 @@ type-fest@^0.21.3:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
typescript@^4.8.4: typescript@^5.5.4:
version "4.9.5" version "5.5.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==
undici-types@~6.18.2:
version "6.18.2"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.18.2.tgz#8b678cf939d4fc9ec56be3c68ed69c619dee28b0"
integrity sha512-5ruQbENj95yDYJNS3TvcaxPMshV7aizdv/hWYjGIKoANWKjhWNBsr2YEuYZKodQulB1b8l7ILOuDQep3afowQQ==
universalify@^0.2.0: universalify@^0.2.0:
version "0.2.0" version "0.2.0"
@ -1605,9 +1564,9 @@ universalify@^0.2.0:
integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
universalify@^2.0.0: universalify@^2.0.0:
version "2.0.0" version "2.0.1"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
untildify@^4.0.0: untildify@^4.0.0:
version "4.0.0" version "4.0.0"
@ -1622,20 +1581,20 @@ url-parse@^1.5.3:
querystringify "^2.1.1" querystringify "^2.1.1"
requires-port "^1.0.0" requires-port "^1.0.0"
uuid@^10.0.0:
version "10.0.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294"
integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==
uuid@^8.3.2: uuid@^8.3.2:
version "8.3.2" version "8.3.2"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
uuid@^9.0.0:
version "9.0.1"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30"
integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
validator@^13.6.0: validator@^13.6.0:
version "13.11.0" version "13.12.0"
resolved "https://registry.yarnpkg.com/validator/-/validator-13.11.0.tgz#23ab3fd59290c61248364eabf4067f04955fbb1b" resolved "https://registry.yarnpkg.com/validator/-/validator-13.12.0.tgz#7d78e76ba85504da3fee4fd1922b385914d4b35f"
integrity sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ== integrity sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==
verror@1.10.0: verror@1.10.0:
version "1.10.0" version "1.10.0"
@ -1697,11 +1656,6 @@ y18n@^5.0.5:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
yargs-parser@^21.1.1: yargs-parser@^21.1.1:
version "21.1.1" version "21.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"